summaryrefslogtreecommitdiffstats
path: root/System.c4g/ClonkAutoBuy.c
blob: 70a020ad1c9f6371480b4b8d96b73a9ba9a362e3 (plain)
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
#strict 2
#appendto CLNK

func ControlCommandAcquire(object target, Tx, int Ty, object target2, id def)
{ // TODO: decide based on distance to AvailableObject/Homebase and Retriever which one to use
	if(!target) // TODO: avoid "stealing"
	{
		var retriever = FindObject2(Find_InRect(-500, -250, 1000, 500), Find_Func("IsRetriever"), Find_Func("CanRetrieveObject", def, false, target2), Find_Exclude(target), Sort_Distance());
		if(retriever)
		{
			FinishCommand(this, true);
			if(retriever->~HowToProduce(this, def, target2))
			{
				return true;
			}
		}
		if(!GetAvailableObject (def, target2))
		{
			var produceRetriever = FindObject2(Find_InRect(-500, -250, 1000, 500), Find_Func("IsRetriever"), Find_Func("CanRetrieveObject", def, true, target2), Find_Exclude(target), Sort_Distance());
			if(produceRetriever)
			{
				FinishCommand(this, true);
				if(produceRetriever->~HowToProduce(this, def, target2))
				{
					return true;
				}
			}
		}
	}
	return _inherited(target, Tx, Ty, target2, def);
}