43 lines
1.5 KiB
Plaintext
43 lines
1.5 KiB
Plaintext
|
int GetHasProtection(object oPC)
|
||
|
{
|
||
|
effect eEff = GetFirstEffect(oPC);
|
||
|
while (GetIsEffectValid(eEff)) {
|
||
|
if (GetEffectType(eEff) == EFFECT_TYPE_IMMUNITY)
|
||
|
return TRUE;
|
||
|
eEff = GetNextEffect(oPC);
|
||
|
}
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
// Get the stored target
|
||
|
object oPC = GetLastUsedBy();
|
||
|
if (!GetIsObjectValid(oPC))
|
||
|
return;
|
||
|
|
||
|
// Don't reapply if we're already protected
|
||
|
if (GetHasProtection(oPC))
|
||
|
return;
|
||
|
|
||
|
// if the oracle effect is off, reapply it
|
||
|
effect eBless1 = EffectImmunity(IMMUNITY_TYPE_MOVEMENT_SPEED_DECREASE);
|
||
|
effect eBless2 = EffectImmunity(IMMUNITY_TYPE_SLOW);
|
||
|
effect eBless3 = EffectImmunity(IMMUNITY_TYPE_PARALYSIS);
|
||
|
effect eBless4 = EffectImmunity(IMMUNITY_TYPE_ENTANGLE);
|
||
|
effect eBless5 = EffectImmunity(IMMUNITY_TYPE_KNOCKDOWN);
|
||
|
effect eDur = EffectVisualEffect(VFX_DUR_FREEDOM_OF_MOVEMENT);
|
||
|
|
||
|
//Link the visual and the damage reduction effect
|
||
|
//delayed to ensure praying has finished
|
||
|
effect eLink = EffectLinkEffects(eBless1, eBless2);
|
||
|
eLink = EffectLinkEffects(eLink, eBless3);
|
||
|
eLink = EffectLinkEffects(eLink, eBless4);
|
||
|
eLink = EffectLinkEffects(eLink, eBless5);
|
||
|
eLink = EffectLinkEffects(eLink, eDur);
|
||
|
DelayCommand(15.0,ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oPC));
|
||
|
|
||
|
//Visual effect of the blessing being received
|
||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SMOKE_PUFF),oPC);
|
||
|
}
|