forked from Mirrors/openclonk
add effects to block damage and fire
parent
b19e083495
commit
f3cadedff1
|
@ -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;
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue