86 lines
2.9 KiB
Plaintext
86 lines
2.9 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Summon Creature Series
|
|
//:: alien_extrasummon.nss
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Carries out the summoning of the appropriate
|
|
creature for the Summon Monster Series of spells
|
|
1 to 9
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Preston Watamaniuk
|
|
//:: Created On: Jan 8, 2002
|
|
//:://////////////////////////////////////////////
|
|
|
|
//:: modified by mr_bumpkin Dec 4, 2003
|
|
#include "prc_inc_spells"
|
|
|
|
int GetMaxSpellLevel(object oCaster)
|
|
{
|
|
int i = 9;
|
|
for(i; i > 0; i--)
|
|
{
|
|
if(!GetLocalInt(oCaster, "PRC_ArcSpell"+IntToString(i)))
|
|
return i;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
PRCSetSchool(SPELL_SCHOOL_CONJURATION);
|
|
|
|
if(!X2PreSpellCastCode()) return;
|
|
|
|
//Declare major variables
|
|
object oCaster = OBJECT_SELF;
|
|
int nSwitch = GetPRCSwitch(PRC_SUMMON_ROUND_PER_LEVEL);
|
|
float fDuration = nSwitch == 0 ? HoursToSeconds(24) :
|
|
RoundsToSeconds(GetLevelByTypeArcaneFeats(oCaster) * nSwitch);
|
|
|
|
int nMaxSpellLvl = GetMaxSpellLevel(oCaster);
|
|
if(GetHasFeat(FEAT_ANIMAL_DOMAIN_POWER, oCaster) && nMaxSpellLvl < 9)
|
|
nMaxSpellLvl++;
|
|
int nFNF_Effect;
|
|
string sSummon;
|
|
|
|
if(nMaxSpellLvl > 6)
|
|
{
|
|
string sElem;
|
|
switch(GetSpellId())
|
|
{
|
|
case 2048: sElem = "air"; break;
|
|
case 2049: sElem = "earth"; break;
|
|
case 2050: sElem = "fire"; break;
|
|
case 2051: sElem = "water"; break;
|
|
}
|
|
switch(nMaxSpellLvl)
|
|
{
|
|
case 9: sSummon = "pseudo"+sElem+"elder"; nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3; break;
|
|
case 8: sSummon = "pseudo"+sElem+"great"; nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3; break;
|
|
case 7: sSummon = "pseudo"+sElem+"huge"; nFNF_Effect = VFX_FNF_SUMMON_MONSTER_3; break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch(nMaxSpellLvl)
|
|
{
|
|
case 6: sSummon = "pseudodiretiger"; nFNF_Effect = VFX_FNF_SUMMON_MONSTER_2; break;
|
|
case 5: sSummon = "pseudobeardire"; nFNF_Effect = VFX_FNF_SUMMON_MONSTER_2; break;
|
|
case 4: sSummon = "pseudospiddire"; nFNF_Effect = VFX_FNF_SUMMON_MONSTER_2; break;
|
|
case 3: sSummon = "pseudodirewolf"; nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1; break;
|
|
case 2: sSummon = "pseudoboardire"; nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1; break;
|
|
case 1: sSummon = "pseudodirebadg"; nFNF_Effect = VFX_FNF_SUMMON_MONSTER_1; break;
|
|
}
|
|
}
|
|
effect eSummon = EffectSummonCreature(sSummon, nFNF_Effect);
|
|
|
|
//Apply the VFX impact and summon effect
|
|
MultisummonPreSummon();
|
|
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, PRCGetSpellTargetLocation(), fDuration);
|
|
|
|
DelayCommand(0.5, AugmentSummonedCreature(sSummon));
|
|
|
|
PRCSetSchool();
|
|
} |