summaryrefslogtreecommitdiffstats
path: root/System.c4g
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2020-09-10 00:26:18 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2020-09-10 00:26:18 +0200
commitb266bbb2d31cf525c4419ba4c05052cda4221e5c (patch)
tree1ed40634cbac95e9aa546d18b1fbfbfb4ea734e9 /System.c4g
parent913352bb0c0fdb30c35bdaea930a1bdcb47db132 (diff)
downloadDTTubeMail.c4d-master.tar.gz
DTTubeMail.c4d-master.zip
Acquire: Avoid requesting items from the current container via fillers at other placesHEADmaster
Diffstat (limited to 'System.c4g')
-rw-r--r--System.c4g/ClonkAutoBuy.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/System.c4g/ClonkAutoBuy.c b/System.c4g/ClonkAutoBuy.c
index 70a020a..0722fcf 100644
--- a/System.c4g/ClonkAutoBuy.c
+++ b/System.c4g/ClonkAutoBuy.c
@@ -5,22 +5,23 @@ 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());
+ 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, target2))
+ if(retriever->~HowToProduce(this, def, excludeOrigin))
{
return true;
}
}
- if(!GetAvailableObject (def, target2))
+ 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());
+ 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, target2))
+ if(produceRetriever->~HowToProduce(this, def, excludeOrigin))
{
return true;
}