Further file organization
Further file organization
This commit is contained in:
54
nwn/nwnprc/trunk/newspellbook/shd_myst_shdtime.nss
Normal file
54
nwn/nwnprc/trunk/newspellbook/shd_myst_shdtime.nss
Normal file
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
18/02/19 by Stratovarius
|
||||
|
||||
Shadow Time
|
||||
|
||||
Master, Dark Metamorphosis
|
||||
Level/School: 9th/Transmutation
|
||||
Duration: 1d4+4 rounds (apparent time); see text for time stop
|
||||
|
||||
This mystery functions like the spell time stop, except as noted above.
|
||||
*/
|
||||
|
||||
#include "shd_inc_shdfunc"
|
||||
#include "shd_mysthook"
|
||||
#include "inc_timestop"
|
||||
|
||||
void main()
|
||||
{
|
||||
if(!ShadPreMystCastCode()) return;
|
||||
|
||||
object oShadow = OBJECT_SELF;
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
struct mystery myst = EvaluateMystery(oShadow, oTarget, METASHADOW_EXTEND);
|
||||
|
||||
if(myst.bCanMyst)
|
||||
{
|
||||
myst.nPen = ShadowSRPen(oShadow, myst.nShadowcasterLevel);
|
||||
myst.fDur = d4() * 6.0 + 24.0;
|
||||
if(myst.bExtend) myst.fDur *= 2;
|
||||
|
||||
myst.eLink = EffectTimeStop();
|
||||
|
||||
if(GetPRCSwitch(PRC_TIMESTOP_LOCAL))
|
||||
{
|
||||
myst.eLink = EffectAreaOfEffect(VFX_PER_NEW_TIMESTOP);
|
||||
myst.eLink = EffectLinkEffects(myst.eLink, EffectEthereal());
|
||||
if(GetPRCSwitch(PRC_TIMESTOP_NO_HOSTILE))
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oShadow),myst.fDur);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oShadow),myst.fDur);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_BULLETS, oShadow),myst.fDur);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_ARROWS, oShadow),myst.fDur);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_BOLTS, oShadow),myst.fDur);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oShadow),myst.fDur);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oShadow),myst.fDur);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oShadow),myst.fDur);
|
||||
DelayCommand(myst.fDur, RemoveTimestopEquip());
|
||||
|
||||
}
|
||||
}
|
||||
DelayCommand(0.75, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, myst.eLink, oTarget, myst.fDur, TRUE, myst.nMystId, myst.nShadowcasterLevel));
|
||||
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_TIME_STOP_DN_PURPLE), PRCGetSpellTargetLocation());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user