openclonk/planet/Objects.ocd/System.ocg/Decay.c

32 lines
689 B
C

/**
Decay.c
Animals can use Decay() in their Death() function so they will slowly decay and spawn a few temporary flies.
The delay parameter specifies the amount of frames before decaying one Con.
@author
*/
global func Decay(int delay)
{
delay = delay ?? 100;
AddEffect("Decaying", this, 1, delay);
if (!GBackSemiSolid())
{
var rnd = Random(4);
for (var i = 0; i < rnd; i++)
{
var mos = CreateObject(Mosquito);
ScheduleCall(mos, "RemoveObject", Max(0, GetCon() - 20) * delay + Random(300));
}
}
}
global func FxDecayingTimer(object target, effect fx, int time)
{
if (target->GetCon() < 20)
target->RemoveObject();
else
target->DoCon(-1);
return FX_OK;
}