add effects to block damage and fire

install-platforms
Maikel de Vries 2017-06-02 09:03:00 +02:00
parent b19e083495
commit f3cadedff1
1 changed files with 39 additions and 2 deletions

View File

@ -5,8 +5,10 @@
Prototype for effect prototypes.
--*/
static const Effect = new Global {
Remove = func(bool no_calls) {
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.
@ -17,3 +19,38 @@ static const Effect = new Global {
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;
}
};