summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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;
}