1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
/**
Effect.c
Prototype for effect prototypes and useful effects.
@author Günther
*/
static const Effect = new Global
{
Remove = func(bool no_calls)
{
return RemoveEffect(nil, nil, this, no_calls);
},
// These properties are set on all effects by the engine.
// They are declared here so that functions on proplists inheriting from this one can use them easily.
Name = nil,
Priority = 0,
Interval = 0,
Target = nil,
Time = 0
};
// This effect blocks all damage.
static const FxBlockDamage = new Effect
{
Damage = func()
{
// Block all damage.
return 0;
},
SaveScen = func(proplist props)
{
if (Target)
props->AddCall("BlockDamage", Target, "CreateEffect", Format("%v", FxBlockDamage), this.Priority);
return true;
}
};
// This effect blocks fire.
static const FxBlockFire = new Effect
{
Effect = func(string new_name)
{
// Block fire effects.
if (WildcardMatch(new_name, "*Fire*"))
return FX_Effect_Deny;
// All other effects are okay.
return FX_OK;
},
SaveScen = func(proplist props)
{
if (Target)
props->AddCall("BlockFire", Target, "CreateEffect", Format("%v", FxBlockFire), this.Priority);
return true;
}
};
|