I have recently re-entered the map making world and am now working on a map that chronicles The Civil War. I specifically wanted to use a virtual HP system for each battle that would allow a more realistic style of combat. Instead of using a typical HP and damage system were each unit took N number of shots to kill another unit, I envisioned a system where each unit had a set chance to kill per shot. Virtual HP proves too impractical for massive amounts of units so I settled on this:
-Every unit on the map has it's prospective HP set to anywhere from 1-100% using 7 random switchs. These effects are under the influence of hyper triggers, so this takes place extremely quickly.
-Next, Each unit has exactly 100 Hit points.
-The units have a base of 0 damage, while each upgrade adds one additional damage point.
-This means that if said unit has 15 upgrade points, it will have a 15% chance to kill another unit per shot.
-Armor can be added into the function like so: If a unit has "W" (weapons upgrades,) and attacks a unit with "A" (armor upgrades,) to determine the chance of a kill simply use the function "W" - "A" = Chance to kill.
-For example, Player 1 controls a unit with 6 weapons upgrades, and 1 armor upgrades. Player 2 controls a units with 4 weapons upgrades and 4 armor upgrades.
-Player 1 has a 2% chance to kill player 2 on each shot.
-Player 2 has a 3% chance to kill player 1 on each shot.
It gets more fun now:
-Try adding a calibre to you weapons. i.e. make upgrades do +2 damage per upgrade. This makes a gun more likely to kill than average.
-Adding Protoss shields on top, effectively acts as a sort of one time use armor.
-Use armor types to skew the chances to kill even further.
-Here is a map demonstrating these principles:
[attachmentid=19414]
-And Here is the triggering layout:
Trigger |
Description: |
Randomizer |
|
Players: |
¤ All Players |
Conditions: |
¤ Always(); |
Actions: |
¤ SetSwitch("Switch 1", Randomize);
|
¤ SetSwitch("Switch 2", Randomize);
|
¤ SetSwitch("Switch 3", Randomize);
|
¤ SetSwitch("Switch 4", Randomize);
|
¤ SetSwitch("Switch 5", Randomize);
|
¤ SetSwitch("Switch 6", Randomize);
|
¤ SetSwitch("Switch 7", Randomize);
|
¤ PreserveTrigger(); |
Trigger |
Description: |
Randomizer |
|
Players: |
¤ All Players |
Conditions: |
¤ Switch("Switch 1", Clear);
|
¤ Switch("Switch 2", Clear);
|
¤ Switch("Switch 3", Clear);
|
¤ Switch("Switch 4", Clear);
|
¤ Switch("Switch 5", Clear);
|
¤ Switch("Switch 6", Clear);
|
¤ Switch("Switch 7", Clear); |
Actions: |
¤ Modify Unit Hit Points("All players", "Men", 1, 0, "Anywhere");
|
¤ PreserveTrigger(); |
Trigger |
Description: |
Randomizer |
|
Players: |
¤ All Players |
Conditions: |
¤ Switch("Switch 1", Set);
|
¤ Switch("Switch 2", Clear);
|
¤ Switch("Switch 3", Clear);
|
¤ Switch("Switch 4", Clear);
|
¤ Switch("Switch 5", Clear);
|
¤ Switch("Switch 6", Clear);
|
¤ Switch("Switch 7", Clear); |
Actions: |
¤ Modify Unit Hit Points("All players", "Men", 1, 0, "Anywhere");
|
¤ PreserveTrigger(); |
Trigger |
Description: |
Randomizer |
|
Players: |
¤ All Players |
Conditions: |
¤ Switch("Switch 1", Clear);
|
¤ Switch("Switch 2", Set);
|
¤ Switch("Switch 3", Clear);
|
¤ Switch("Switch 4", Clear);
|
¤ Switch("Switch 5", Clear);
|
¤ Switch("Switch 6", Clear);
|
¤ Switch("Switch 7", Clear); |
Actions: |
¤ Modify Unit Hit Points("All players", "Men", 1, 0, "Anywhere");
|
¤ PreserveTrigger(); |
Trigger |
Description: |
Randomizer |
|
Players: |
¤ All Players |
Conditions: |
¤ Switch("Switch 1", Set);
|
¤ Switch("Switch 2", Set);
|
¤ Switch("Switch 3", Clear);
|
¤ Switch("Switch 4", Clear);
|
¤ Switch("Switch 5", Clear);
|
¤ Switch("Switch 6", Clear);
|
¤ Switch("Switch 7", Clear); |
Actions: |
¤ Modify Unit Hit Points("All players", "Men", 1, 0, "Anywhere");
|
¤ PreserveTrigger(); |
And so on.... up to 100