summaryrefslogtreecommitdiffstats
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
parent913352bb0c0fdb30c35bdaea930a1bdcb47db132 (diff)
downloadDTTubeMail.c4d-b266bbb2d31cf525c4419ba4c05052cda4221e5c.tar.gz
DTTubeMail.c4d-b266bbb2d31cf525c4419ba4c05052cda4221e5c.zip
Acquire: Avoid requesting items from the current container via fillers at other placesHEADmaster
-rw-r--r--Items.c4d/Utility.c4d/Script.c2
-rw-r--r--System.c4g/ClonkAutoBuy.c11
2 files changed, 7 insertions, 6 deletions
diff --git a/Items.c4d/Utility.c4d/Script.c b/Items.c4d/Utility.c4d/Script.c
index 6e44f7e..4960b66 100644
--- a/Items.c4d/Utility.c4d/Script.c
+++ b/Items.c4d/Utility.c4d/Script.c
@@ -190,7 +190,7 @@ func SetRetrieveCommands(id type, object caller, bool indirect, object excludeOr
{
if((!indirect && ((!Attached() && !Floating()) || (GetProcedure(caller) == "PUSH" && GetActionTarget(0, caller) == this))) || !CommandRequireContainerOrPush(caller, Attached() || (Floating() && this), BindCallback((indirect && "RetrieveObjectForProduction") || "RetrieveMenuEntry", [Bind(type), 0, Bind(excludeOrigin)]), 0, indirect))
{
- RetrieveObjectThroughTube(type);
+ RetrieveObjectThroughTube(type, /*nil*/, excludeOrigin);
}
}
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;
}