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
|
/**
Library_Edible
Contains the logic for an object that can be eaten.
@author Marky
Objects using this library should call the following code when a user tries to eat it:
Feed(user);
*/
// When the clonk is able to use the item
public func RejectUse(object clonk)
{
return _inherited(clonk) || !clonk->IsWalking();
}
// Usage
public func ControlUse(object clonk, int x, int y)
{
if (!_inherited(clonk, x, y, ...))
{
Feed(clonk);
}
return true;
}
// Call this when you want a user to eat the object.
public func Feed(object clonk)
{
if (this->CanFeed(clonk))
{
clonk->Eat(this);
}
else
{
clonk->~PlaySoundDoubt();
}
}
// Decides whether a user can eat this object.
public func CanFeed(object clonk)
{
return !(clonk->HasMaxEnergy()) && this->NutritionalValue() != nil; /// Only if the user is not at full energy and the item gives back energy
}
// The clonk gets this much health back (what actually happens with this value is governed by the implementation of Eat())
public func NutritionalValue()
{
return 5;
}
|