Starcraft – How to programmatically change the # of resources delivered by workers in a StarCraft 2 custom map

starcraft-2

Following up on another question about applying handicaps to StarCraft, I am considering a map modification to simply reduce the number of minerals/gas delivered by workers while harvesting. The default is 5, but I would like to reduce it for one player only to 4 or 3.

How would I go about doing this?

Best Answer

I wanted to at least figure out how to set the # of minerals returned per trip, as opposed to adjusting the minerals you get after the fact or something. Turns out, unless there is a better way, what I am proposing is probably not worth the effort at all!

Here's my crazy roundabout solution.

  1. Copy the Behaviors for "Minerals (Mineral Field)" and "Minerals (High Yield)," changing the name and modifying the (Stats -> Harvest) amount to a different value.
  2. Create a trigger with actions to remove the "Minerals (Mineral Field)" (or high yield) behavior from a unit and add the new behavior created in the previous step.
  3. The trigger needs to fire from an appropriate event, which is tricky. I chose the "Unit uses SCV - Gather" abilities at the Approach stage, then perform the swap on "Triggering ability target unit" (if unit doesn't already have the new behavior).
  4. Also, just in case, I put in a condition that the Triggering ability target unit is within a small radius of a building owned by the player in question. This pretty much ensures it will only swap stuff at your main base and expansions, and not if you just right click on someone else's mineral patches.
  5. This feels pretty kludgey and as a programmer I am kind of sad that this was the best way I could find after an hour or so.

I also put in some special sauce like only applying these changes to a player who types "handicap" into the chat, and also added code to un-swap the behaviors if non-handicapped players start gathering from it instead (for example if he takes over an expansion).

This is a bunch of work for what I wanted! It would probably be much better to simply remove resources from the stockpile after the "Unit uses ability Return Cargo" event.