File: Script.c

package info (click to toggle)
openclonk 8.1-4
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 169,520 kB
  • sloc: cpp: 180,479; ansic: 108,988; xml: 31,371; python: 1,223; php: 767; makefile: 145; sh: 101; javascript: 34
file content (56 lines) | stat: -rw-r--r-- 1,053 bytes parent folder | download | duplicates (5)
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;
}