forked from Jaysyn/PRC8
Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
95 lines
3.4 KiB
Plaintext
95 lines
3.4 KiB
Plaintext
/**
|
|
* Master of Shrouds: Summon Undead (1-4)
|
|
* 2004/02/15
|
|
* Brian Greinke
|
|
* edited to include epic wraith summons 2004/03/04; also removed unnecessary scripting.
|
|
* Lockindal Linantal
|
|
*/
|
|
|
|
#include "prc_inc_spells"
|
|
//#include "inc_utility"
|
|
#include "prc_inc_turning"
|
|
|
|
void SummonUndeadPseudoHB(object oCaster, object oSummon, int nChaMod, int nSpellID)
|
|
{
|
|
if(!GetIsObjectValid(oSummon))
|
|
return;
|
|
if(!GetIsInCombat(oCaster))
|
|
{
|
|
//casters level for turning
|
|
int nLevel = GetTurningClassLevel(oCaster);
|
|
int nTurningCheck = d20() + nChaMod;
|
|
int nTurningMaxHD = GetTurningCheckResult(nLevel, nTurningCheck);
|
|
int nTargetHD = GetHitDiceForTurning(oSummon, SPELL_TURN_UNDEAD, RACIAL_TYPE_UNDEAD);
|
|
if(nTurningMaxHD < nTargetHD)
|
|
{
|
|
effect eTest= GetFirstEffect(oSummon);
|
|
while(GetIsEffectValid(eTest))
|
|
{
|
|
if(GetEffectSpellId(eTest) == nSpellID)
|
|
RemoveEffect(oSummon, eTest);
|
|
eTest = GetNextEffect(oSummon);
|
|
}
|
|
//make em hostile
|
|
object oTest = GetFirstFactionMember(oCaster);
|
|
while(GetIsObjectValid(oTest))
|
|
{
|
|
SetIsTemporaryEnemy(oTest, oSummon);
|
|
oTest = GetNextFactionMember(oCaster);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AssignCommand(oSummon, ClearAllActions());
|
|
AssignCommand(oSummon, ActionForceFollowObject(oCaster, IntToFloat(Random(8)+3)));
|
|
}
|
|
}
|
|
DelayCommand(6.0, SummonUndeadPseudoHB(oCaster, oSummon, nChaMod, nSpellID));
|
|
}
|
|
|
|
void main()
|
|
{
|
|
object oCaster = OBJECT_SELF;
|
|
location lTarget = GetSpellTargetLocation();
|
|
int nClass = GetLevelByClass(CLASS_TYPE_MASTER_OF_SHROUDS, oCaster);
|
|
int nChaMod = GetTurningCharismaMod(SPELL_TURN_UNDEAD);
|
|
float fDuration = RoundsToSeconds(nClass);
|
|
|
|
int nSpellID = GetSpellId();
|
|
int nCount;
|
|
switch(nSpellID)
|
|
{
|
|
case 3009: nCount = 1; break;
|
|
case 3010: nCount = 2; break;
|
|
case 3011: nCount = 4; break;
|
|
case 3012: nCount = 8; break;
|
|
}
|
|
|
|
string sSummon;
|
|
if (nClass > 28) sSummon = "prc_mos_39";
|
|
else if (nClass > 25) sSummon = "prc_mos_36";
|
|
else if (nClass > 22) sSummon = "prc_mos_33";
|
|
else if (nClass > 19) sSummon = "prc_mos_30";
|
|
else if (nClass > 16) sSummon = "prc_mos_27";
|
|
else if (nClass > 13) sSummon = "prc_mos_24";
|
|
else if (nClass > 10) sSummon = "prc_mos_21";
|
|
else if (nClass > 8) sSummon = "prc_mos_spectre2";
|
|
else if (nClass > 6) sSummon = "prc_mos_spectre1";
|
|
else if (nClass > 4) sSummon = "prc_mos_wraith";
|
|
else sSummon = "prc_mos_allip";
|
|
|
|
//MultisummonPreSummon(oCaster);
|
|
effect eCommand = EffectCutsceneDominated();//SupernaturalEffect(effectdominated doesnt work on mind-immune
|
|
effect eSummonB = EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD);//EffectVisualEffect( VFX_FNF_LOS_EVIL_30);
|
|
int i;
|
|
for(i = 0; i < nCount; i++)
|
|
{
|
|
object oSummon = CreateObject(OBJECT_TYPE_CREATURE, sSummon, lTarget);
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eSummonB, GetLocation(oSummon));
|
|
ChangeToStandardFaction(oSummon, STANDARD_FACTION_HOSTILE);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCommand, oSummon);
|
|
DelayCommand(6.0, SummonUndeadPseudoHB(oCaster, oSummon, nChaMod, nSpellID));
|
|
DestroyObject(oSummon, fDuration);
|
|
}
|
|
}
|