PWE_PRC8/_module/nss/inc_timestop.nss
Jaysyn904 ee1dc35889 Initial Commit
Initial Commit
2025-04-03 10:29:41 -04:00

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);
}