Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ class SupplyTruckAIInterface
// who look this up by name.
public:
virtual Int getNumberBoxes() const = 0;
virtual Int getMaxBoxes() const = 0;
virtual Bool loseOneBox() = 0;
virtual Bool gainOneBox( Int remainingStock ) = 0;

Expand Down Expand Up @@ -197,6 +198,7 @@ class SupplyTruckAIUpdate : public AIUpdateInterface, public SupplyTruckAIInterf
virtual const SupplyTruckAIInterface* getSupplyTruckAIInterface() const override {return this;}

virtual Int getNumberBoxes() const override { return m_numberBoxes; }
virtual Int getMaxBoxes() const override { return getSupplyTruckAIUpdateModuleData()->m_maxBoxesData; }
virtual Bool loseOneBox() override;
virtual Bool gainOneBox( Int remainingStock ) override;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,7 @@ class WorkerAIUpdate : public AIUpdateInterface, public DozerAIInterface, public

// Supply truck stuff
virtual Int getNumberBoxes() const override { return m_numberBoxes; }
virtual Int getMaxBoxes() const override { return getWorkerAIUpdateModuleData()->m_maxBoxesData; }
virtual Bool loseOneBox() override;
virtual Bool gainOneBox( Int remainingStock ) override;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,23 @@ SupplyCenterDockUpdate::~SupplyCenterDockUpdate()
{
}

// TheSuperHackers @bugfix arcticdolphin 12/03/2026 Scale supply bonus proportionally to delivered boxes.
static UnsignedInt getUpgradedSupplyBoostValue( SupplyTruckAIInterface* supplyTruckAI )
{
#if RETAIL_COMPATIBLE_CRC
return supplyTruckAI->getUpgradedSupplyBoost();
#else
const Int maxBoxes = supplyTruckAI->getMaxBoxes();
if (maxBoxes > 0)
{
const Int upgradedSupplyBoost = supplyTruckAI->getUpgradedSupplyBoost();
const Int deliveredBoxes = supplyTruckAI->getNumberBoxes();
return (upgradedSupplyBoost * deliveredBoxes) / maxBoxes;
}
return 0;
#endif
}

// ------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------
Bool SupplyCenterDockUpdate::action( Object* docker, Object *drone )
Expand All @@ -95,13 +112,13 @@ Bool SupplyCenterDockUpdate::action( Object* docker, Object *drone )
return FALSE;

UnsignedInt value = 0;

value += getUpgradedSupplyBoostValue( supplyTruckAI );

Player *ownerPlayer = getObject()->getControllingPlayer();
while( supplyTruckAI->loseOneBox() )
value += ownerPlayer->getSupplyBoxValue();

// Add money boost from upgrades that give extra money
value += supplyTruckAI->getUpgradedSupplyBoost();

if( value > 0)
{
Money *ownerPlayerMoney = ownerPlayer->getMoney();
Expand Down
Loading