Initial upload.
Adding base PRC 4.19a files to repository.
This commit is contained in:
85
trunk/epicspellscripts/ss_ep_allhoplost.nss
Normal file
85
trunk/epicspellscripts/ss_ep_allhoplost.nss
Normal file
@@ -0,0 +1,85 @@
|
||||
//:://////////////////////////////////////////////
|
||||
//:: FileName: "ss_ep_allhoplost"
|
||||
/* Purpose: All Hope Lost - causes all enemies within the area to make a will
|
||||
save or resist the spell to avoid losing all courage and drop their items.
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Boneshank
|
||||
//:: Last Updated On: March 12, 2004
|
||||
//:://////////////////////////////////////////////
|
||||
#include "prc_alterations"
|
||||
#include "inc_epicspells"
|
||||
#include "prc_add_spell_dc"
|
||||
//#include "x2_inc_spellhook"
|
||||
|
||||
void main()
|
||||
{
|
||||
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
||||
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ENCHANTMENT);
|
||||
|
||||
if (!X2PreSpellCastCode() )
|
||||
{
|
||||
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
||||
return;
|
||||
}
|
||||
if (GetCanCastSpell(OBJECT_SELF, SPELL_EPIC_ALLHOPE))
|
||||
{
|
||||
int nCasterLevel = GetTotalCastingLevel(OBJECT_SELF);
|
||||
float fDuration = RoundsToSeconds(20);
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S);
|
||||
effect eFear = EffectFrightened();
|
||||
effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
|
||||
effect eImpact = EffectVisualEffect(VFX_FNF_LOS_NORMAL_30);
|
||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||
float fDelay;
|
||||
effect eLink = EffectLinkEffects(eFear, eMind);
|
||||
eLink = EffectLinkEffects(eLink, eDur);
|
||||
object oTarget, oWeap, oOffhand, oNewR, oNewL;
|
||||
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,
|
||||
eImpact, GetLocation(OBJECT_SELF));
|
||||
oTarget = GetFirstObjectInShape(SHAPE_SPHERE,
|
||||
RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF), TRUE);
|
||||
while(GetIsObjectValid(oTarget))
|
||||
{
|
||||
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE,
|
||||
OBJECT_SELF) && oTarget != OBJECT_SELF)
|
||||
{
|
||||
fDelay = PRCGetRandomDelay();
|
||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FEAR));
|
||||
if(!PRCDoResistSpell(OBJECT_SELF, oTarget, GetTotalCastingLevel(OBJECT_SELF)+SPGetPenetr(OBJECT_SELF), fDelay))
|
||||
{
|
||||
int nSaveDC = GetEpicSpellSaveDC(OBJECT_SELF, oTarget, SPELL_EPIC_ALLHOPE) + 10;
|
||||
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nSaveDC,
|
||||
SAVING_THROW_TYPE_FEAR, OBJECT_SELF, fDelay))
|
||||
{
|
||||
if (GetIsCreatureDisarmable(oTarget) && !GetPRCSwitch(PRC_PNP_DISARM))
|
||||
{
|
||||
oWeap = GetItemInSlot
|
||||
(INVENTORY_SLOT_RIGHTHAND, oTarget);
|
||||
oOffhand = GetItemInSlot
|
||||
(INVENTORY_SLOT_LEFTHAND, oTarget);
|
||||
if (oWeap != OBJECT_INVALID &&
|
||||
GetDroppableFlag(oWeap))
|
||||
{
|
||||
CopyObject(oWeap, GetLocation(oTarget));
|
||||
DelayCommand(2.0, DestroyObject(oWeap));
|
||||
}
|
||||
if (oOffhand != OBJECT_INVALID &&
|
||||
GetDroppableFlag(oOffhand))
|
||||
{
|
||||
CopyObject(oOffhand, GetLocation(oTarget));
|
||||
DelayCommand(2.0, DestroyObject(oOffhand));
|
||||
}
|
||||
}
|
||||
DelayCommand(fDelay, SPApplyEffectToObject
|
||||
(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration, TRUE, -1, GetTotalCastingLevel(OBJECT_SELF)));
|
||||
}
|
||||
}
|
||||
}
|
||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE,
|
||||
RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF), TRUE);
|
||||
}
|
||||
}
|
||||
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
||||
}
|
||||
|
Reference in New Issue
Block a user