summaryrefslogtreecommitdiffstats
path: root/System.c4g/ClonkAutoBuy.c
blob: 0722fcf33200d5312b4f9384f1822cc3ff476a10 (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
32
#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 excludeOrigin = target2 || Contained();
		var retriever = FindObject2(Find_InRect(-500, -250, 1000, 500), Find_Func("IsRetriever"), Find_Func("CanRetrieveObject", def, false, excludeOrigin), Find_Exclude(target), Sort_Distance());
		if(retriever)
		{
			FinishCommand(this, true);
			if(retriever->~HowToProduce(this, def, excludeOrigin))
			{
				return true;
			}
		}
		if(!GetAvailableObject(def, target2))
		{
			var produceRetriever = FindObject2(Find_InRect(-500, -250, 1000, 500), Find_Func("IsRetriever"), Find_Func("CanRetrieveObject", def, true, excludeOrigin), Find_Exclude(target), Sort_Distance());
			if(produceRetriever)
			{
				FinishCommand(this, true);
				if(produceRetriever->~HowToProduce(this, def, excludeOrigin))
				{
					return true;
				}
			}
		}
	}
	return _inherited(target, Tx, Ty, target2, def);
}