84 lines
2.6 KiB
Plaintext
84 lines
2.6 KiB
Plaintext
|
|
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);
|
|
}
|