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.
72 lines
3.4 KiB
Plaintext
72 lines
3.4 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Time Stop
|
|
//:: NW_S0_TimeStop.nss
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
//:://////////////////////////////////////////////
|
|
//:: FileName: "ss_ep_grtimestop"
|
|
/* Purpose: Greater Timestop - in all ways this spell is the same as
|
|
Timestop except for the duration, which is doubled.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Boneshank
|
|
//:: Last Updated On: March 11, 2004
|
|
//:://////////////////////////////////////////////
|
|
#include "prc_alterations"
|
|
#include "inc_timestop"
|
|
#include "inc_epicspells"
|
|
|
|
void main()
|
|
{
|
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
|
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_TRANSMUTATION);
|
|
int nDuration = d4(2)+2;
|
|
|
|
if (!X2PreSpellCastCode())
|
|
{
|
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
|
return;
|
|
}
|
|
if (GetCanCastSpell(OBJECT_SELF, SPELL_EPIC_GR_TIME))
|
|
{
|
|
location lTarget = PRCGetSpellTargetLocation();
|
|
effect eVis = EffectVisualEffect(VFX_FNF_TIME_STOP);
|
|
effect eTime = EffectTimeStop();
|
|
float fDuration = RoundsToSeconds(nDuration);
|
|
|
|
if(GetPRCSwitch(PRC_TIMESTOP_BIOWARE_DURATION))
|
|
fDuration = 18.0;
|
|
if(GetPRCSwitch(PRC_TIMESTOP_LOCAL))
|
|
{
|
|
eTime = EffectAreaOfEffect(VFX_PER_NEW_TIMESTOP);
|
|
eTime = EffectLinkEffects(eTime, EffectEthereal());
|
|
if(GetPRCSwitch(PRC_TIMESTOP_NO_HOSTILE))
|
|
{
|
|
object oCaster = OBJECT_SELF;
|
|
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oCaster),fDuration);
|
|
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oCaster),fDuration);
|
|
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_BULLETS, oCaster),fDuration);
|
|
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_ARROWS, oCaster),fDuration);
|
|
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_BOLTS, oCaster),fDuration);
|
|
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oCaster),fDuration);
|
|
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oCaster),fDuration);
|
|
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oCaster),fDuration);
|
|
DelayCommand(fDuration, RemoveTimestopEquip());
|
|
/*
|
|
string sSpellscript = PRCGetUserSpecificSpellScript();
|
|
DelayCommand(fDuration, PRCSetUserSpecificSpellScript(sSpellscript));
|
|
PRCSetUserSpecificSpellScript("tsspellscript");
|
|
now in main spellhook*/
|
|
}
|
|
}
|
|
|
|
|
|
SignalEvent(OBJECT_SELF, EventSpellCastAt(OBJECT_SELF, SPELL_TIME_STOP, FALSE));
|
|
DelayCommand(0.75, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTime, OBJECT_SELF, fDuration, TRUE, -1, GetTotalCastingLevel(OBJECT_SELF)));
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, lTarget);
|
|
}
|
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
|
}
|
|
|