Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
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);
|
|
}
|
|
}
|