Posts: 10,536
Threads: 395
Joined: Aug 2015
About armor. It has increasing returns so the current, diminishing returns formula is not good, I agree.
Maybe...we could use (armor+4)*(armor+4) instead of 5*(armor+4)?
Nah, that would be too high for high armor units. Something like (armor+4)^1.5 would be nice but I can't calculate that in ASM.
Posts: 10,536
Threads: 395
Joined: Aug 2015
Although one could argue armor has diminishing returns - eventually the unit is not taking damage and further armor has no effect.
Anyway, these are the results using (figures+0.5) :
Code: Trireme (None)
ARATE : 267 RRATE : 0 DRATE : 519 TOTAL = 33 COSTEFF = 2309
Galley (None)
ARATE : 320 RRATE : 187 DRATE : 693 TOTAL = 85 COSTEFF = 3513
Catapult (None)
ARATE : 0 RRATE : 347 DRATE : 247 TOTAL = 20 COSTEFF = 1224
Warship (None)
ARATE : 374 RRATE : 320 DRATE : 990 TOTAL = 167 COSTEFF = 4907
Spearmen (Barbarian)
ARATE : 109 RRATE : 0 DRATE : 118 TOTAL = 3 COSTEFF = 1286
Swordsmen (Barbarian)
ARATE : 231 RRATE : 0 DRATE : 178 TOTAL = 10 COSTEFF = 1370
Bowmen (Barbarian)
ARATE : 32 RRATE : 77 DRATE : 118 TOTAL = 3 COSTEFF = 428
Cavalry (Barbarian)
ARATE : 347 RRATE : 0 DRATE : 297 TOTAL = 25 COSTEFF = 2576
Shaman (Barbarian)
ARATE : 53 RRATE : 53 DRATE : 118 TOTAL = 3 COSTEFF = 250
Settlers (Barbarian)
ARATE : 0 RRATE : 0 DRATE : 198 TOTAL = 0 COSTEFF = 0
Berserkers (Barbarian)
ARATE : 978 RRATE : 0 DRATE : 534 TOTAL = 127 COSTEFF = 5222
Spearmen (Beastmen)
ARATE : 154 RRATE : 0 DRATE : 237 TOTAL = 8 COSTEFF = 3649
Swordsmen (Beastmen)
ARATE : 231 RRATE : 0 DRATE : 356 TOTAL = 20 COSTEFF = 2741
Halberdiers (Beastmen)
ARATE : 463 RRATE : 0 DRATE : 623 TOTAL = 70 COSTEFF = 4807
Bowmen (Beastmen)
ARATE : 77 RRATE : 77 DRATE : 237 TOTAL = 8 COSTEFF = 1216
Priests (Beastmen)
ARATE : 160 RRATE : 240 DRATE : 415 TOTAL = 40 COSTEFF = 1660
Magicians (Beastmen)
ARATE : 53 RRATE : 400 DRATE : 237 TOTAL = 26 COSTEFF = 894
Engineers (Beastmen)
ARATE : 77 RRATE : 0 DRATE : 237 TOTAL = 4 COSTEFF = 608
Settlers (Beastmen)
ARATE : 6 RRATE : 0 DRATE : 396 TOTAL = 0 COSTEFF = 15
Centaurs (Beastmen)
ARATE : 160 RRATE : 240 DRATE : 316 TOTAL = 30 COSTEFF = 2106
Manticores (Beastmen)
ARATE : 595 RRATE : 203 DRATE : 534 TOTAL = 104 COSTEFF = 2663
Minotaurs (Beastmen)
ARATE : 742 RRATE : 0 DRATE : 831 TOTAL = 150 COSTEFF = 3083
Spearmen (Dark Elf)
ARATE : 77 RRATE : 32 DRATE : 118 TOTAL = 3 COSTEFF = 1071
Swordsmen (Dark Elf)
ARATE : 154 RRATE : 77 DRATE : 178 TOTAL = 10 COSTEFF = 1142
Halberdiers (Dark Elf)
ARATE : 347 RRATE : 77 DRATE : 415 TOTAL = 42 COSTEFF = 2443
Cavalry (Dark Elf)
ARATE : 240 RRATE : 53 DRATE : 297 TOTAL = 21 COSTEFF = 1812
Priests (Dark Elf)
ARATE : 106 RRATE : 400 DRATE : 277 TOTAL = 34 COSTEFF = 1168
Settlers (Dark Elf)
ARATE : 0 RRATE : 0 DRATE : 198 TOTAL = 0 COSTEFF = 0
Nightblades (Dark Elf)
ARATE : 707 RRATE : 0 DRATE : 623 TOTAL = 107 COSTEFF = 2936
Warlocks (Dark Elf)
ARATE : 22 RRATE : 561 DRATE : 138 TOTAL = 19 COSTEFF = 502
Nightmares (Dark Elf)
ARATE : 445 RRATE : 445 DRATE : 554 TOTAL = 120 COSTEFF = 2465
Spearmen (Draconian)
ARATE : 109 RRATE : 0 DRATE : 148 TOTAL = 3 COSTEFF = 1075
Swordsmen (Draconian)
ARATE : 231 RRATE : 0 DRATE : 207 TOTAL = 11 COSTEFF = 1195
Halberdiers (Draconian)
ARATE : 501 RRATE : 0 DRATE : 475 TOTAL = 58 COSTEFF = 2974
Bowmen (Draconian)
ARATE : 32 RRATE : 77 DRATE : 148 TOTAL = 3 COSTEFF = 403
Shaman (Draconian)
ARATE : 53 RRATE : 53 DRATE : 138 TOTAL = 3 COSTEFF = 195
Magicians (Draconian)
ARATE : 22 RRATE : 400 DRATE : 138 TOTAL = 14 COSTEFF = 388
Horde (Orc)
ARATE : 605 RRATE : 0 DRATE : 554 TOTAL = 81 COSTEFF = 4468
Settlers (Draconian)
ARATE : 0 RRATE : 0 DRATE : 247 TOTAL = 0 COSTEFF = 0
Doom Drakes (Draconian)
ARATE : 579 RRATE : 0 DRATE : 792 TOTAL = 111 COSTEFF = 1910
Air Ship (Draconian)
ARATE : 80 RRATE : 347 DRATE : 792 TOTAL = 82 COSTEFF = 1690
Swordsmen (Dwarf)
ARATE : 154 RRATE : 0 DRATE : 356 TOTAL = 13 COSTEFF = 1827
Halberdiers (Dwarf)
ARATE : 347 RRATE : 0 DRATE : 623 TOTAL = 52 COSTEFF = 3603
Engineers (Dwarf)
ARATE : 32 RRATE : 0 DRATE : 237 TOTAL = 1 COSTEFF = 189
Hammerhands (Dwarf)
ARATE : 694 RRATE : 0 DRATE : 831 TOTAL = 140 COSTEFF = 2621
Steam Cannon (Dwarf)
ARATE : 0 RRATE : 400 DRATE : 475 TOTAL = 46 COSTEFF = 1900
Golem (Dwarf)
ARATE : 320 RRATE : 0 DRATE : 1188 TOTAL = 92 COSTEFF = 2112
Settlers (Dwarf)
ARATE : 0 RRATE : 0 DRATE : 594 TOTAL = 0 COSTEFF = 0
Spearmen (Gnoll)
ARATE : 231 RRATE : 0 DRATE : 118 TOTAL = 6 COSTEFF = 2725
Swordsmen (Gnoll)
ARATE : 347 RRATE : 0 DRATE : 178 TOTAL = 15 COSTEFF = 2058
Halberdiers (Gnoll)
ARATE : 579 RRATE : 0 DRATE : 415 TOTAL = 58 COSTEFF = 4004
Jackal Riders (Gnoll)
ARATE : 605 RRATE : 0 DRATE : 712 TOTAL = 105 COSTEFF = 2871
Settlers (Gnoll)
ARATE : 17 RRATE : 0 DRATE : 198 TOTAL = 0 COSTEFF = 22
Wolf Riders (Gnoll)
ARATE : 400 RRATE : 0 DRATE : 594 TOTAL = 58 COSTEFF = 2970
Spearmen (Halfling)
ARATE : 56 RRATE : 0 DRATE : 211 TOTAL = 2 COSTEFF = 787
Swordsmen (Halfling)
ARATE : 134 RRATE : 0 DRATE : 316 TOTAL = 10 COSTEFF = 1058
Magicians (Halfling)
ARATE : 30 RRATE : 534 DRATE : 158 TOTAL = 21 COSTEFF = 594
Shaman (Halfling)
ARATE : 30 RRATE : 71 DRATE : 158 TOTAL = 3 COSTEFF = 212
Settlers (Halfling)
ARATE : 0 RRATE : 0 DRATE : 264 TOTAL = 0 COSTEFF = 0
Slingers (Halfling)
ARATE : 56 RRATE : 403 DRATE : 211 TOTAL = 23 COSTEFF = 968
Spearmen (High Elf)
ARATE : 102 RRATE : 0 DRATE : 118 TOTAL = 2 COSTEFF = 1003
Swordsmen (High Elf)
ARATE : 205 RRATE : 0 DRATE : 178 TOTAL = 8 COSTEFF = 1013
Halberdiers (High Elf)
ARATE : 463 RRATE : 0 DRATE : 415 TOTAL = 46 COSTEFF = 2668
Cavalry (High Elf)
ARATE : 320 RRATE : 0 DRATE : 297 TOTAL = 23 COSTEFF = 1980
Magicians (High Elf)
ARATE : 30 RRATE : 534 DRATE : 118 TOTAL = 16 COSTEFF = 492
Settlers (High Elf)
ARATE : 0 RRATE : 0 DRATE : 198 TOTAL = 0 COSTEFF = 0
Longbowmen (High Elf)
ARATE : 43 RRATE : 102 DRATE : 148 TOTAL = 5 COSTEFF = 429
Elven Lords (High Elf)
ARATE : 500 RRATE : 0 DRATE : 554 TOTAL = 67 COSTEFF = 1731
Pegasai (High Elf)
ARATE : 213 RRATE : 71 DRATE : 554 TOTAL = 38 COSTEFF = 1311
Spearmen (High Men)
ARATE : 77 RRATE : 0 DRATE : 118 TOTAL = 2 COSTEFF = 908
Swordsmen (High Men)
ARATE : 154 RRATE : 0 DRATE : 178 TOTAL = 6 COSTEFF = 913
Bowmen (High Men)
ARATE : 32 RRATE : 77 DRATE : 118 TOTAL = 3 COSTEFF = 428
Cavalry (High Men)
ARATE : 240 RRATE : 0 DRATE : 297 TOTAL = 17 COSTEFF = 1782
Priests (High Men)
ARATE : 106 RRATE : 240 DRATE : 277 TOTAL = 23 COSTEFF = 958
Magicians (High Men)
ARATE : 32 RRATE : 579 DRATE : 178 TOTAL = 26 COSTEFF = 906
Engineers (High Men)
ARATE : 32 RRATE : 0 DRATE : 118 TOTAL = 0 COSTEFF = 94
Settlers (High Men)
ARATE : 0 RRATE : 0 DRATE : 198 TOTAL = 0 COSTEFF = 0
Pikemen (High Men)
ARATE : 377 RRATE : 0 DRATE : 396 TOTAL = 36 COSTEFF = 1990
Paladins (High Men)
ARATE : 400 RRATE : 0 DRATE : 792 TOTAL = 77 COSTEFF = 1320
Spearmen (Klackon)
ARATE : 77 RRATE : 0 DRATE : 178 TOTAL = 3 COSTEFF = 1370
Swordsmen (Klackon)
ARATE : 154 RRATE : 0 DRATE : 237 TOTAL = 8 COSTEFF = 1216
Halberdiers (Klackon)
ARATE : 347 RRATE : 0 DRATE : 534 TOTAL = 45 COSTEFF = 3088
Engineers (Klackon)
ARATE : 32 RRATE : 0 DRATE : 118 TOTAL = 0 COSTEFF = 188
Settlers (Klackon)
ARATE : 0 RRATE : 0 DRATE : 198 TOTAL = 0 COSTEFF = 0
Stag Beetle (Klackon)
ARATE : 427 RRATE : 0 DRATE : 990 TOTAL = 103 COSTEFF = 2642
Spearmen (Lizardmen)
ARATE : 77 RRATE : 0 DRATE : 237 TOTAL = 4 COSTEFF = 1824
Swordsmen (Lizardmen)
ARATE : 154 RRATE : 0 DRATE : 356 TOTAL = 13 COSTEFF = 1827
Halberdiers (Lizardmen)
ARATE : 347 RRATE : 0 DRATE : 623 TOTAL = 52 COSTEFF = 3603
Javelineers (Lizardmen)
ARATE : 347 RRATE : 231 DRATE : 356 TOTAL = 50 COSTEFF = 2743
Shaman (Lizardmen)
ARATE : 53 RRATE : 53 DRATE : 198 TOTAL = 5 COSTEFF = 349
Settlers (Lizardmen)
ARATE : 0 RRATE : 0 DRATE : 396 TOTAL = 0 COSTEFF = 0
Dragon Turtle (Lizardmen)
ARATE : 294 RRATE : 0 DRATE : 1188 TOTAL = 85 COSTEFF = 3492
Spearmen (Nomad)
ARATE : 77 RRATE : 32 DRATE : 118 TOTAL = 3 COSTEFF = 1286
Swordsmen (Nomad)
ARATE : 154 RRATE : 77 DRATE : 178 TOTAL = 10 COSTEFF = 1370
Magicians (Troll)
ARATE : 160 RRATE : 400 DRATE : 396 TOTAL = 54 COSTEFF = 1232
Priests (Nomad)
ARATE : 106 RRATE : 240 DRATE : 277 TOTAL = 23 COSTEFF = 958
Magicians (Nomad)
ARATE : 22 RRATE : 400 DRATE : 118 TOTAL = 12 COSTEFF = 414
Settlers (Nomad)
ARATE : 0 RRATE : 0 DRATE : 198 TOTAL = 0 COSTEFF = 0
Horsebowmen (Nomad)
ARATE : 160 RRATE : 160 DRATE : 297 TOTAL = 23 COSTEFF = 1900
Pikemen (Nomad)
ARATE : 288 RRATE : 0 DRATE : 297 TOTAL = 20 COSTEFF = 1140
Rangers (Nomad)
ARATE : 320 RRATE : 400 DRATE : 356 TOTAL = 62 COSTEFF = 1708
Griffins (Nomad)
ARATE : 388 RRATE : 0 DRATE : 792 TOTAL = 75 COSTEFF = 1536
Spearmen (Orc)
ARATE : 77 RRATE : 0 DRATE : 118 TOTAL = 2 COSTEFF = 908
Swordsmen (Orc)
ARATE : 154 RRATE : 0 DRATE : 178 TOTAL = 6 COSTEFF = 913
Halberdiers (Orc)
ARATE : 347 RRATE : 0 DRATE : 415 TOTAL = 35 COSTEFF = 2400
Bowmen (Orc)
ARATE : 32 RRATE : 77 DRATE : 118 TOTAL = 3 COSTEFF = 428
Cavalry (Orc)
ARATE : 240 RRATE : 0 DRATE : 297 TOTAL = 17 COSTEFF = 1782
Shaman (Orc)
ARATE : 53 RRATE : 53 DRATE : 118 TOTAL = 3 COSTEFF = 250
Magicians (Orc)
ARATE : 22 RRATE : 400 DRATE : 118 TOTAL = 12 COSTEFF = 414
Engineers (Orc)
ARATE : 32 RRATE : 0 DRATE : 118 TOTAL = 0 COSTEFF = 94
Settlers (Orc)
ARATE : 0 RRATE : 0 DRATE : 198 TOTAL = 0 COSTEFF = 0
Wyvern Riders (Orc)
ARATE : 342 RRATE : 0 DRATE : 792 TOTAL = 66 COSTEFF = 1805
Spearmen (Troll)
ARATE : 160 RRATE : 0 DRATE : 316 TOTAL = 12 COSTEFF = 3370
Swordsmen (Troll)
ARATE : 240 RRATE : 0 DRATE : 475 TOTAL = 27 COSTEFF = 2533
Halberdiers (Troll)
ARATE : 400 RRATE : 0 DRATE : 831 TOTAL = 81 COSTEFF = 3693
Shaman (Troll)
ARATE : 160 RRATE : 53 DRATE : 475 TOTAL = 24 COSTEFF = 1264
Settlers (Troll)
ARATE : 0 RRATE : 0 DRATE : 792 TOTAL = 0 COSTEFF = 0
War Trolls (Troll)
ARATE : 481 RRATE : 0 DRATE : 1108 TOTAL = 130 COSTEFF = 3552
War Mammoths (Troll)
ARATE : 623 RRATE : 0 DRATE : 1603 TOTAL = 243 COSTEFF = 5548
Magic Spirit (Neutral)
ARATE : 80 RRATE : 0 DRATE : 346 TOTAL = 6
Hell Hounds (Chaos)
ARATE : 427 RRATE : 0 DRATE : 396 TOTAL = 41
Gargoyles (Chaos)
ARATE : 320 RRATE : 0 DRATE : 950 TOTAL = 74
Fire Giant (Chaos)
ARATE : 570 RRATE : 356 DRATE : 712 TOTAL = 160
Fire Elemental (Chaos)
ARATE : 267 RRATE : 0 DRATE : 396 TOTAL = 25
Chaos Spawn (Chaos)
ARATE : 1320 RRATE : 0 DRATE : 1197 TOTAL = 385
Chimera (Chaos)
ARATE : 1283 RRATE : 0 DRATE : 1267 TOTAL = 396
Doom Bat (Chaos)
ARATE : 1246 RRATE : 0 DRATE : 1188 TOTAL = 361
Efreet (Chaos)
ARATE : 579 RRATE : 712 DRATE : 1336 TOTAL = 421
Hydra (Chaos)
ARATE : 2482 RRATE : 0 DRATE : 3118 TOTAL = 1889
Great Drake (Chaos)
ARATE : 3528 RRATE : 0 DRATE : 2252 TOTAL = 1939
Skeletons (Death)
ARATE : 205 RRATE : 0 DRATE : 207 TOTAL = 10
Ghouls (Death)
ARATE : 453 RRATE : 311 DRATE : 356 TOTAL = 66
Night Stalker (Death)
ARATE : 478 RRATE : 0 DRATE : 623 TOTAL = 72
Werewolves (Death)
ARATE : 617 RRATE : 0 DRATE : 712 TOTAL = 107
Demon (Death)
ARATE : 427 RRATE : 0 DRATE : 475 TOTAL = 49
Wraiths (Death)
ARATE : 1469 RRATE : 0 DRATE : 1425 TOTAL = 511
Shadow Demons (Death)
ARATE : 400 RRATE : 400 DRATE : 693 TOTAL = 135
Death Knights (Death)
ARATE : 2003 RRATE : 0 DRATE : 1742 TOTAL = 851
Demon Lord (Death)
ARATE : 1329 RRATE : 794 DRATE : 2252 TOTAL = 1167
Zombies (Death)
ARATE : 308 RRATE : 0 DRATE : 534 TOTAL = 40
Unicorns (Life)
ARATE : 534 RRATE : 0 DRATE : 1108 TOTAL = 144
Guardian Spirit (Life)
ARATE : 267 RRATE : 0 DRATE : 445 TOTAL = 29
Angel (Life)
ARATE : 835 RRATE : 0 DRATE : 1237 TOTAL = 252
Arch Angel (Life)
ARATE : 1060 RRATE : 0 DRATE : 2059 TOTAL = 532
War Bears (Nature)
ARATE : 415 RRATE : 0 DRATE : 831 TOTAL = 84
Sprites (Nature)
ARATE : 87 RRATE : 261 DRATE : 123 TOTAL = 10
Cockatrices (Nature)
ARATE : 1013 RRATE : 0 DRATE : 1108 TOTAL = 274
Great Lizard (Nature)
ARATE : 712 RRATE : 0 DRATE : 1485 TOTAL = 258
Giant Spiders (Nature)
ARATE : 667 RRATE : 0 DRATE : 792 TOTAL = 128
Stone Giant (Nature)
ARATE : 801 RRATE : 801 DRATE : 1856 TOTAL = 725
Colossus (Nature)
ARATE : 1229 RRATE : 1229 DRATE : 2747 TOTAL = 1648
Gorgons (Nature)
ARATE : 1651 RRATE : 0 DRATE : 2079 TOTAL = 837
Earth Elemental (Nature)
ARATE : 819 RRATE : 0 DRATE : 1039 TOTAL = 207
Behemoth (Nature)
ARATE : 1024 RRATE : 0 DRATE : 3786 TOTAL = 946
Great Wyrm (Nature)
ARATE : 2063 RRATE : 0 DRATE : 2450 TOTAL = 1233
Floating Island (Sorcery)
ARATE : 0 RRATE : 0 DRATE : 668 TOTAL = 0
Phantom Beast (Sorcery)
ARATE : 1140 RRATE : 0 DRATE : 371 TOTAL = 103
Phantom Warriors (Sorcery)
ARATE : 356 RRATE : 0 DRATE : 103 TOTAL = 8
Storm Giant (Sorcery)
ARATE : 723 RRATE : 723 DRATE : 1237 TOTAL = 436
Air Elemental (Sorcery)
ARATE : 578 RRATE : 0 DRATE : 495 TOTAL = 69
Djinn (Sorcery)
ARATE : 855 RRATE : 694 DRATE : 1579 TOTAL = 597
Sky Drake (Sorcery)
ARATE : 2084 RRATE : 0 DRATE : 1930 TOTAL = 981
Nagas (Sorcery)
ARATE : 346 RRATE : 0 DRATE : 519 TOTAL = 43
Posts: 5,010
Threads: 17
Joined: Aug 2016
Ugh. Wish I knew more about coding, and specifically, space restrictions. Very annoying to have a way to do it right, but not be able to work with it. The more I work with you, the more I'm inspired to learn.
I'm not a big fan of the +figures, but that's due to trying to get accuracy. Have to give me some time to wrap my head around this again.
Posts: 10,536
Threads: 395
Joined: Aug 2015
For a moment I thought "+0.5 figures are an accurate representation of damaged but surviving figures still being able to attack"...then I realized attack rating already uses "current figures" so dead figures already lower the attack rating, making the formula already accurate for that.
...which means + figures makes no sense. While "single figure units overcome armor easier" sounds true, it isn't. "single figure units usually have more attack power, so they overcome armor easier"is true instead. But we already have attack power as an input parameter, so we don't need to use figures.
At this point I see two different ways to improve the formula :
-Change attack ratings to have an "increasing return" - higher attack power (per figure) overcomes armor better. This unfortunately suffers from the fact that if there is no enemy armor, or the enemy armor still exceeds the attack power then the units get overrated. This "increasing return" is only true in the interval between 0 and the armor of the target plus a few points.
-Change defense ratings to have "increasing returns" on armor. - But this is also wrong - if the attack power significantly exceeds the armor value, this increasing return is not warranted and would devalue the attack power of the enemy needlessly.
and we are back to my original post "armor cannot be done accurately due to requiring interaction between two units".
Either way, I agree we should reduce thrown to 20 from 30.
June 6th, 2017, 10:06
(This post was last modified: June 6th, 2017, 10:11 by Nelphine.)
Posts: 5,010
Threads: 17
Joined: Aug 2016
Why 20? Specifically why do you think thrown is as good as normal attacks? You only use it when you attack, not counterattack. On that basis its worth 10. The only time it is better than a normal attack is when it kills an entire figure. If you make it 20 that means you think its twice as good as a normal attack. That's a 100% increase. That means it kills the enemy 100% of the time, which is blatantly false.
At best its as good as first strike which is +25%. So it would be worth 12 or 13. I believe first strike is overvalued at the moment, but even ignoring that, thrown is no better than first strike.
Posts: 5,010
Threads: 17
Joined: Aug 2016
Also, for my own sanity can we please say 'armor cannot be done accurately due to space limitations', since we have figured out it could be done despite requiring interactions between two units?
June 6th, 2017, 10:37
(This post was last modified: June 6th, 2017, 10:40 by Seravy.)
Posts: 10,536
Threads: 395
Joined: Aug 2015
(June 6th, 2017, 10:06)Nelphine Wrote: Why 20? Specifically why do you think thrown is as good as normal attacks? You only use it when you attack, not counterattack. On that basis its worth 10. The only time it is better than a normal attack is when it kills an entire figure. If you make it 20 that means you think its twice as good as a normal attack. That's a 100% increase. That means it kills the enemy 100% of the time, which is blatantly false.
Thrown/Breath is better than a normal attack because dead figures can't retaliate.
But counterattacks don't use it so it's also worse than a normal attack.
The amount of times the unit attacks vs the amount it counterattacks is subjective. If it's flying and the enemy is not, it will always attack and never counterattack. If it's not flying, but the enemy is flying, breath still allows it to attack so it both attacks and counterattacks. If many enemies gang up on it then it counterattacks more than attacks - but all other units in the army get to attack more than counterattack. Also in this cause counterattacks suffer a massive "suppression" penalty, so their relative value in the mix is lower.
I can't see the case you are trying to imply where counterattacks have more weight than normal attacks.
Quote:That means it kills the enemy 100% of the time, which is blatantly false.
Where is this coming from? If I do X damage, I prevent the damage of enemy figures worth X HP - assuming the enemy unit has balanced stats, that's also X so the total benefit is 2X, 100% more. Regardless of X being more or less than the whole enemy unit.
Not that we can even remotely guess any percentage because the retaliating unit's attack power relative to our defense is unknown.
Quote:Also, for my own sanity can we please say 'armor cannot be done accurately due to space limitations', since we have figured out it could be done despite requiring interactions between two units?
Eh, no, armor can't be done because what you figured out is not something any sane person will ever do.
If you change how to interpret the output of the rating procedures, you have to change every single place that works with that data, and that's what makes it impossible.
Look at that graph - each procedure in the red area would need to be completely redone, how many is that, 15? 20? 30? Assuming 3-5 hours of work each, that's...what, 100-200 hours without testing and debugging, 500 with?
But yes, space limitations also make that impossible. because you'd need all that space in all 20 of those locations to make it work, on top of the space problems in the rating procedures themselves. I rather wait for hell to freeze over than to bet on having that much space.
If I had to use an analogy, your suggestion is pretty much equivalent to "Let's replace the foundation of this skyscraper first and then we can rebuild the rest as needed to fit the new foundation".
Posts: 5,010
Threads: 17
Joined: Aug 2016
Yup pretty much. That's how bad I think the strategic combat system is. That's why I'm looking into learning the code myself so i can so it, as you have clearly shown not to be interested.
Personally I think this is more important than the diplomacy mess ever was. Obviously you don't agree but that's fine.
I don't think counterattacks are more important than melee attacks. I think they are just as good as melee attacks. Thrown attacks are exactly the same as a normal attack, with first strike, that can't counterattack. So, either first strike should be worth 100%, or thrown should be worth 12/13.
Posts: 10,536
Threads: 395
Joined: Aug 2015
If you want to do it...
$7FF43 is where the defense rating procedure starts. From that you can find all the others by backtracking calls.
I've uploaded WIZIDB.zip, this is the disassembly file I'm working with (1.40n) so you can see the procedure and variable names I already figured out. However, this isn't CoM, so if you want your work to be compatible, you also need to disassemble the CoM wizards.exe and work on that file instead, using the other for reference on procedure/variable names.
IDA Pro free is more than enough for this, and this is a good list of x86 instructions : http://www.mathemainzel.info/files/x86asmref.html
For data structures, they are saved into save game files the same way they are in the memory, so http://ilikeserena.dx.am/MoM/eljay/SaveGam2.html should tell you which byte means what in, for example, unit data. If a structure is not in there, you can find it in the tweaker, again, the order it's displayed matches memory order.
If the code refers to a data address you don't know, feel free to ask.
Posts: 10,536
Threads: 395
Joined: Aug 2015
PS : First Strike being 100% makes some sense, but I rather not. The scope is too big - it affects the entire attack rating of the whole unit, instead of just a (usually smaller) portion. Thrown/Breath attacks never make up more than half the unit's power and are usually in the low range, where the "-2" still has a high influence, so "doubling" it is much safer for balance than doing it on the whole unit.
|