53 lines
1.5 KiB
Plaintext
53 lines
1.5 KiB
Plaintext
#include "prc_x2_itemprop"
|
|
|
|
//const int VFX_PER_NEW_TIMESTOP = 76;
|
|
void DoTimestopEquip();
|
|
void DoTimestopUnEquip();
|
|
void ApplyTSToObject(object oTarget);
|
|
void RemoveTSFromObject(object oTarget);
|
|
|
|
void DoTimestopEquip()
|
|
{
|
|
object oPC = GetPCItemLastEquippedBy();
|
|
if(!GetHasSpellEffect(SPELL_TIME_STOP, oPC)
|
|
&& !GetHasSpellEffect(4032, oPC))
|
|
return;
|
|
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyNoDamage(), GetPCItemLastEquipped(),9999.0);
|
|
}
|
|
|
|
void DoTimestopUnEquip()
|
|
{
|
|
object oPC = GetPCItemLastUnequippedBy();
|
|
if(!GetHasSpellEffect(SPELL_TIME_STOP, oPC)
|
|
&& !GetHasSpellEffect(4032, oPC))
|
|
return;
|
|
IPRemoveMatchingItemProperties(GetPCItemLastUnequipped(), ITEM_PROPERTY_NO_DAMAGE, DURATION_TYPE_TEMPORARY);
|
|
}
|
|
|
|
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))
|
|
BlackScreen(oTarget);
|
|
AssignCommand(oTarget, ClearAllActions(FALSE));
|
|
SetCommandable(FALSE, oTarget);
|
|
}
|
|
|
|
void RemoveTSFromObject(object oTarget)
|
|
{
|
|
effect eTest = GetFirstEffect(oTarget);
|
|
while(GetIsEffectValid(eTest))
|
|
{
|
|
if(GetEffectSpellId(eTest) == SPELL_TIME_STOP
|
|
|| GetEffectSpellId(eTest) == 4032)//epic TS
|
|
RemoveEffect(oTarget, eTest);
|
|
eTest = GetNextEffect(oTarget);
|
|
}
|
|
if(GetIsPC(oTarget))
|
|
StopFade(oTarget);
|
|
SetCommandable(TRUE, oTarget);
|
|
}
|