Further file organization
Further file organization
This commit is contained in:
101
nwn/nwnprc/trunk/spells/nw_s0_animdead.nss
Normal file
101
nwn/nwnprc/trunk/spells/nw_s0_animdead.nss
Normal file
@@ -0,0 +1,101 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Animate Dead
|
||||
//:: NW_S0_AnimDead.nss
|
||||
//:: Copyright (c) 2001 Bioware Corp.
|
||||
//:://////////////////////////////////////////////
|
||||
/*
|
||||
Summons a powerful skeleton or zombie depending
|
||||
on caster level.
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Preston Watamaniuk
|
||||
//:: Created On: April 11, 2001
|
||||
//:://////////////////////////////////////////////
|
||||
//:: modified by mr_bumpkin Dec 4, 2003
|
||||
|
||||
#include "prc_inc_spells"
|
||||
#include "prc_inc_template"
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
if(!X2PreSpellCastCode()) return;
|
||||
|
||||
PRCSetSchool(SPELL_SCHOOL_NECROMANCY);
|
||||
|
||||
//Declare major variables
|
||||
object oCaster = OBJECT_SELF;
|
||||
int nLichHD = GetHitDice(oCaster);
|
||||
location lTarget = PRCGetSpellTargetLocation();
|
||||
int nCasterLevel = PRCGetCasterLevel(oCaster);
|
||||
int nMetaMagic = PRCGetMetaMagicFeat();
|
||||
float fDuration = HoursToSeconds(24);
|
||||
//Metamagic extension if needed
|
||||
if(nMetaMagic & METAMAGIC_EXTEND)
|
||||
fDuration *= 2; //Duration is +100%
|
||||
|
||||
string sResRef;
|
||||
int nHD;
|
||||
|
||||
//Summon the appropriate creature based on the summoner level
|
||||
if (nCasterLevel <= 5)
|
||||
{
|
||||
//Tyrant Fog Zombie
|
||||
sResRef = "NW_S_ZOMBTYRANT";
|
||||
nHD = 4;
|
||||
}
|
||||
else if ((nCasterLevel >= 6) && (nCasterLevel <= 9))
|
||||
{
|
||||
//Skeleton Warrior
|
||||
sResRef = "NW_S_SKELWARR";
|
||||
nHD = 6;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Skeleton Chieftain
|
||||
sResRef = "NW_S_SKELCHIEF";
|
||||
nHD = 7;
|
||||
}
|
||||
|
||||
effect eSummon = EffectSummonCreature(sResRef, VFX_FNF_SUMMON_UNDEAD);
|
||||
|
||||
MultisummonPreSummon();
|
||||
|
||||
if(GetPRCSwitch(PRC_PNP_ANIMATE_DEAD))
|
||||
{
|
||||
int nMaxHD = GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oCaster) >= 8 ?
|
||||
nCasterLevel * (4 + GetAbilityModifier(ABILITY_CHARISMA, oCaster)) : nCasterLevel * 4;
|
||||
|
||||
if(GetHasSpellEffect(SPELL_DES_20) || GetHasSpellEffect(SPELL_DES_100) || GetHasSpellEffect(SPELL_DESECRATE))
|
||||
nMaxHD *= 2;
|
||||
|
||||
if(GetHasTemplate(TEMPLATE_ARCHLICH, oCaster)) //: Archlich
|
||||
nMaxHD = nLichHD;
|
||||
|
||||
int nTotalHD = GetControlledUndeadTotalHD();
|
||||
|
||||
int nGold = GetGold(oCaster);
|
||||
int nCost = nHD * 25;
|
||||
if((nTotalHD+nHD) <= nMaxHD)
|
||||
{
|
||||
if(nCost > nGold)
|
||||
{
|
||||
FloatingTextStringOnCreature("You have insufficient gold to animate this creature", oCaster, FALSE);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
TakeGoldFromCreature(nCost, oCaster, TRUE);
|
||||
eSummon = SupernaturalEffect(eSummon);
|
||||
ApplyEffectAtLocation(DURATION_TYPE_PERMANENT, eSummon, lTarget);
|
||||
FloatingTextStringOnCreature("Currently have "+IntToString(nTotalHD+nHD)+"HD out of "+IntToString(nMaxHD)+"HD.", oCaster);
|
||||
}
|
||||
}
|
||||
else
|
||||
FloatingTextStringOnCreature("You cannot create more undead at this time.", oCaster);
|
||||
}
|
||||
else
|
||||
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, lTarget, fDuration);
|
||||
|
||||
PRCSetSchool();
|
||||
}
|
Reference in New Issue
Block a user