Further file organization
Further file organization
This commit is contained in:
83
nwn/nwnprc/trunk/include/inc_timestop.nss
Normal file
83
nwn/nwnprc/trunk/include/inc_timestop.nss
Normal file
@@ -0,0 +1,83 @@
|
||||
|
||||
void DoTimestopEquip(object oPC, object oItem);
|
||||
void DoTimestopUnEquip(object oPC, object oItem);
|
||||
void ApplyTSToObject(object oTarget);
|
||||
void RemoveTSFromObject(object oTarget);
|
||||
|
||||
#include "prc_x2_itemprop"
|
||||
#include "prc_inc_switch"
|
||||
#include "inc_prc_npc"
|
||||
//#include "inc_utility"
|
||||
|
||||
void RemoveTimestopEquip()
|
||||
{
|
||||
int i;
|
||||
for (i=0;i<18;i++)
|
||||
{
|
||||
IPRemoveMatchingItemProperties(GetItemInSlot(i), ITEM_PROPERTY_NO_DAMAGE, DURATION_TYPE_TEMPORARY);
|
||||
}
|
||||
}
|
||||
|
||||
void DoTimestopEquip(object oPC, object oItem)
|
||||
{
|
||||
if(GetPRCSwitch(PRC_TIMESTOP_NO_HOSTILE))
|
||||
{
|
||||
if(GetHasSpellEffect(SPELL_TIME_STOP, oPC)
|
||||
|| GetHasSpellEffect(4032, oPC)
|
||||
|| GetHasSpellEffect(14236, oPC))
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), oItem, 9999.0);
|
||||
/*else if(GetHasSpellEffect(POWER_ID, oPC))
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), oItem, 9999.0);
|
||||
//stuff for AC negation
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
void DoTimestopUnEquip(object oPC, object oItem)
|
||||
{
|
||||
if(GetPRCSwitch(PRC_TIMESTOP_NO_HOSTILE))
|
||||
{
|
||||
if(GetHasSpellEffect(SPELL_TIME_STOP, oPC)
|
||||
|| GetHasSpellEffect(4032, oPC)
|
||||
|| GetHasSpellEffect(14236, oPC))
|
||||
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_NO_DAMAGE, DURATION_TYPE_TEMPORARY);
|
||||
/*else if(GetHasSpellEffect(POWER_ID, oPC))
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), oItem, 9999.0);
|
||||
//stuff for AC negation removal
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
void ApplyTSToObject(object oTarget)
|
||||
{
|
||||
effect eTS = EffectVisualEffect(VFX_DUR_FREEZE_ANIMATION);
|
||||
effect eCSP = EffectCutsceneParalyze();
|
||||
effect eLink = EffectLinkEffects(eTS, eCSP);
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget);
|
||||
if(GetIsPC(oTarget) && GetPRCSwitch(PRC_TIMESTOP_BLANK_PC))
|
||||
BlackScreen(oTarget);
|
||||
AssignCommand(oTarget, ClearAllActions(FALSE));
|
||||
SetCommandable(FALSE, oTarget);
|
||||
}
|
||||
|
||||
void RemoveTSFromObject(object oTarget)
|
||||
{
|
||||
effect eTest = GetFirstEffect(oTarget);
|
||||
while(GetIsEffectValid(eTest))
|
||||
{
|
||||
int nSpellId = GetEffectSpellId(eTest);
|
||||
if(nSpellId == SPELL_TIME_STOP
|
||||
|| nSpellId == 4032 //epic TS
|
||||
|| nSpellId == 14205 // POWER_TEMPORALACCELERATION
|
||||
|| nSpellId == 17366 // MOVE_DM_MOMENT_ALACRITY
|
||||
|| nSpellId == 17511 // MOVE_WR_WHITE_RAVEN_TACTICS
|
||||
)
|
||||
RemoveEffect(oTarget, eTest);
|
||||
eTest = GetNextEffect(oTarget);
|
||||
}
|
||||
if(GetIsPC(oTarget))
|
||||
StopFade(oTarget);
|
||||
SetCommandable(TRUE, oTarget);
|
||||
}
|
Reference in New Issue
Block a user