Thanks again Wormer.
I used your method and it seemed to work, except something weird.
I have two resources (Protoss Nexus and Terran Supply Depot). The triggers for the Protoss Nexus all work perfectly using this method. So I just used text macros to make the ones for the Terran Supply Depot.
However, while the Protoss Nexuses work flawlessly, the Terran Supply Depots don't!
Here is what happens for the Terran Supply Depot:
1. An enemy unit approaches
2. Garrison spawns
3. Enemy unit leaves
4. Depot is turned over to P10
5. Garrison recaptures depot
6. Garrison never despawns.
(Note: About 10% of the time the Terran Supply Depot does the correct behavior.)
Correct behavior (what all the Nexuses do):
1. An enemy unit approaches
2. Garrison spawns
3. Enemy unit leaves
4. Depot does not change hands
5. Garrison despawns
I cannot see why this is happening and I would appreciate a fresh set of eyes for helping to find why there is this difference in behavior. I glanced at both sets of triggers side by side twice and they look exactly the same to me, because I used a text macro from the triggers handling the Protoss Nexus, which worked. Logically it should behave the same for the Terran Supply Depot but it does not.
Protoss Nexus (Working AFAIK)
Trigger("All players"){
Conditions:
Bring("Current Player", "Protoss Nexus", "Nexus1", At least, 1);
Bring("Foes", "Men", "Nexus1", At least, 1);
Deaths("Player 8", "Alan Turret", At most, 0);
Actions:
Set Deaths("Player 8", "Alan Turret", Set To, 1);
Set Deaths("Current Player", "Artanis (Scout)", Add, 1);
Create Unit("Current Player", "Sarah Kerrigan (Ghost)", 10, "Nexus1");
Modify Unit Hit Points("Current Player", "Protoss Nexus", 40, 0, "Nexus1");
Display Text Message(Always Display, "\x008Our City is under attack!");
Minimap Ping("Nexus1");
Minimap Ping("Nexus1");
Preserve Trigger();
Comment("City Attack - Nexus1\r\nP8 DC: Alan Turret\r\nUnder Attack DC: Artanis (Scout)");
}
//-----------------------------------------------------------------//
Trigger("All players"){
Conditions:
Deaths("Player 8", "Alan Turret", At least, 1);
Bring("Current Player", "Men", "Nexus1", Exactly, 0);
Bring("Foes", "Men", "Nexus1", At least, 1);
Bring("Current Player", "Terran Bunker", "Nexus1", Exactly, 0);
Bring("Current Player", "Protoss Photon Cannon", "Nexus1", Exactly, 0);
Bring("Current Player", "Protoss Nexus", "Nexus1", At least, 1);
Actions:
Set Deaths("Current Player", "Artanis (Scout)", Subtract, 1);
Give Units to Player("Current Player", "Player 10", "Protoss Nexus", All, "Nexus1");
Give Units to Player("Current Player", "Player 10", "Protoss Robotics Facility", All, "Nexus1");
Give Units to Player("Current Player", "Player 10", "Protoss Pylon", All, "Nexus1");
Display Text Message(Always Display, "\x008Our City has fallen!");
Minimap Ping("Nexus1");
Preserve Trigger();
Comment("City Attack - Nexus1 - Defeat");
}
//-----------------------------------------------------------------//
Trigger("All players"){
Conditions:
Deaths("Player 8", "Alan Turret", At least, 1);
Bring("Player 10", "Protoss Nexus", "Nexus1", At least, 1);
Bring("Foes", "Men", "Nexus1", Exactly, 0);
Bring("Current Player", "Men", "Nexus1", At least, 1);
Bring("Foes", "Protoss Photon Cannon", "Nexus1", Exactly, 0);
Bring("Foes", "Terran Bunker", "Nexus1", Exactly, 0);
Bring("Allies", "Men", "Nexus1", Exactly, 0);
Actions:
Give Units to Player("Player 10", "Current Player", "Protoss Nexus", All, "Nexus1");
Give Units to Player("Player 10", "Current Player", "Protoss Robotics Facility", All, "Nexus1");
Give Units to Player("Player 10", "Current Player", "Protoss Pylon", All, "Nexus1");
Modify Unit Hit Points("All players", "Protoss Nexus", 100, 0, "Nexus1");
Set Deaths("Player 8", "Alan Turret", Set To, 0);
Display Text Message(Always Display, "\x004We have captured this City.");
Preserve Trigger();
Comment("City Attack - Nexus1 - Capture");
}
//-----------------------------------------------------------------//
Trigger("All players"){
Conditions:
Deaths("Player 8", "Alan Turret", At least, 1);
Bring("Foes", "Men", "Nexus1", Exactly, 0);
Bring("Current Player", "Protoss Nexus", "Nexus1", At least, 1);
Actions:
Remove Unit At Location("Current Player", "Sarah Kerrigan (Ghost)", All, "Nexus1");
Modify Unit Hit Points("All players", "Protoss Nexus", 100, 0, "Nexus1");
Set Deaths("Player 8", "Alan Turret", Set To, 0);
Set Deaths("Current Player", "Artanis (Scout)", Subtract, 1);
Preserve Trigger();
Comment("City Attack - Nexus1 - Fail");
Display Text Message(Always Display, "\x004We have defended our City.");
}
//-----------------------------------------------------------------//
Terran Supply Depot (failing miserably
)
Trigger("All players"){
Conditions:
Bring("Current Player", "Terran Supply Depot", "Depot1", At least, 1);
Bring("Foes", "Men", "Depot1", At least, 1);
Deaths("Player 8", "Duke Turret type 2", At most, 0);
Actions:
Set Deaths("Player 8", "Duke Turret type 2", Set To, 1);
Set Deaths("Current Player", "Artanis (Scout)", Add, 1);
Create Unit("Current Player", "Sarah Kerrigan (Ghost)", 5, "Depot1");
Modify Unit Hit Points("Current Player", "Terran Supply Depot", 40, 0, "Depot1");
Display Text Message(Always Display, "\x008Our Holding is under attack!");
Minimap Ping("Depot1");
Minimap Ping("Depot1");
Preserve Trigger();
Comment("Depot Attack - Depot1\r\nP8 DC: Duke Turret type 2\r\nUnder Attack DC: Artanis (Scout)");
}
//-----------------------------------------------------------------//
Trigger("All players"){
Conditions:
Deaths("Player 8", "Duke Turret type 2", At least, 1);
Bring("Current Player", "Men", "Depot1", Exactly, 0);
Bring("Foes", "Men", "Depot1", At least, 1);
Bring("Current Player", "Terran Bunker", "Depot1", Exactly, 0);
Bring("Current Player", "Protoss Photon Cannon", "Depot1", Exactly, 0);
Bring("Current Player", "Terran Supply Depot", "Depot1", At least, 1);
Actions:
Set Deaths("Current Player", "Artanis (Scout)", Subtract, 1);
Give Units to Player("Current Player", "Player 10", "Terran Supply Depot", All, "Depot1");
Display Text Message(Always Display, "\x008Our Holding has fallen!");
Minimap Ping("Depot1");
Preserve Trigger();
Comment("Holding Attack - Depot1 - Defeat");
}
//-----------------------------------------------------------------//
Trigger("All players"){
Conditions:
Deaths("Player 8", "Duke Turret type 2", At least, 1);
Bring("Player 10", "Terran Supply Depot", "Depot1", At least, 1);
Bring("Foes", "Men", "Depot1", Exactly, 0);
Bring("Current Player", "Men", "Depot1", At least, 1);
Bring("Foes", "Protoss Photon Cannon", "Depot1", Exactly, 0);
Bring("Foes", "Terran Bunker", "Depot1", Exactly, 0);
Bring("Allies", "Men", "Depot1", Exactly, 0);
Actions:
Give Units to Player("Player 10", "Current Player", "Terran Supply Depot", All, "Depot1");
Modify Unit Hit Points("All players", "Terran Supply Depot", 100, 0, "Depot1");
Set Deaths("Player 8", "Duke Turret type 2", Set To, 0);
Display Text Message(Always Display, "\x004We have captured this Holding.");
Preserve Trigger();
Comment("Depot Attack - Depot1 - Capture");
}
//-----------------------------------------------------------------//
Trigger("All players"){
Conditions:
Deaths("Player 8", "Duke Turret type 2", At least, 1);
Bring("Foes", "Men", "Depot1", Exactly, 0);
Bring("Current Player", "Terran Supply Depot", "Depot1", At least, 1);
Actions:
Remove Unit At Location("Current Player", "Sarah Kerrigan (Ghost)", All, "Depot1");
Modify Unit Hit Points("All players", "Terran Supply Depot", 100, 0, "Depot1");
Set Deaths("Player 8", "Duke Turret type 2", Set To, 0);
Set Deaths("Current Player", "Artanis (Scout)", Subtract, 1);
Preserve Trigger();
Comment("City Attack - Depot1 - Fail");
Display Text Message(Always Display, "\x004We have defended our Holding.");
}
//-----------------------------------------------------------------//
None.