diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2020-09-10 00:26:18 +0200 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2020-09-10 00:26:18 +0200 |
| commit | b266bbb2d31cf525c4419ba4c05052cda4221e5c (patch) | |
| tree | 1ed40634cbac95e9aa546d18b1fbfbfb4ea734e9 /System.c4g/ClonkAutoBuy.c | |
| parent | 913352bb0c0fdb30c35bdaea930a1bdcb47db132 (diff) | |
| download | DTTubeMail.c4d-master.tar.gz DTTubeMail.c4d-master.zip | |
Diffstat (limited to 'System.c4g/ClonkAutoBuy.c')
| -rw-r--r-- | System.c4g/ClonkAutoBuy.c | 11 |
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; } |
