WOS Sim
← Back to Runs

Compare Runs

A (baseline)
868590df-0b78908f1a323/06/2026, 07:22:24
B (current)
305a4dff-83bee5ff87e24/06/2026, 23:54:46
Avg Error A0.20%
Avg Error B0.20%
Δ Avg Error-0.01%
Improved4
Regressed2
Added18
Retired0

Testcase Delta

201 / 201
FileCase#AdjA%B%Δ%Status
testcases/emulator_verified/ambusher_no_marksmen.jsonambusher_no_marksmen00.72%1.45%+0.73%regressed
testcases/emulator_verified/wos427_wip_sergey_philly_840.jsonwos427_wip_sergey_philly_8400-0.28%-0.85%+0.57%regressed
testcases/emulator_verified/renee_solo_nc.jsonrenee_solo_nc0-0.48%0.00%-0.48%improved
testcases/3-testcases_mixed-heroes-not-verified.jsondaut_viper_540.17%0.64%+0.47%unchanged
testcases/emulator_verified/bahiti_norah_combo_nc.jsonbahiti_norah_combo_nc0-3.42%-3.15%-0.27%unchanged
testcases/emulator_verified/gwen_solo_nc.jsongwen_solo00.24%0.00%-0.24%improved
testcases/emulator_verified/gwen_norah_combo_nc.jsongwen_norah_combo_nc00.64%0.41%-0.23%unchanged
testcases/emulator_verified/sergey_norah_zinman_combo_nc.jsonsergey_norah_zinman_combo_nc0-1.44%-1.58%+0.14%unchanged
testcases/emulator_verified/logan_gwen_combo_nc.jsonlogan_gwen_combo_nc00.13%0.00%-0.13%improved
testcases/emulator_verified/norah_zinman_combo_nc.jsonnorah_zinman_combo_nc00.39%0.26%-0.13%unchanged
testcases/emulator_verified/hector_renee_wayne.jsonhector_renee_wayne00.53%-0.45%-0.08%improved
testcases/3-testcases_mixed-heroes-not-verified.jsondaut_viper_43-0.07%0.02%-0.05%unchanged
testcases/3-testcases_mixed-heroes-not-verified.jsondaut_viper_32-0.39%-0.42%+0.03%unchanged
testcases/emulator_verified/wos425_wip_sergey_philly_combo.jsonwos425_wip_sergey_philly_combo0-0.01%-0.04%+0.03%unchanged
testcases/emulator_verified/norah_hector_zinman_combo.jsonnorah_hector_zinman_combo00.06%0.07%+0.01%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_1010.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_1120.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_1230.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_1340.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_1450.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_156+0.013%0.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_167+0.008%0.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_178-0.003%0.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_189+0.017%0.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_19100.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_2011-0.006%0.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_2112+0.013%0.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_22130.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_23140.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_2415-0.008%0.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_25160.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_2617-0.002%0.00%0.00%0.00%unchanged
testcases/1-testcases_no-heroes_t6_single-type_nc.jsondaut_viper_900.00%0.00%0.00%unchanged
testcases/2-testcases_no-heroes_t6_mixed_nc.jsondaut_viper_10+0.05%-0.32%-0.32%0.00%unchanged
testcases/2-testcases_no-heroes_t6_mixed_nc.jsondaut_viper_21+0.05%-0.06%-0.06%0.00%unchanged
testcases/2-testcases_no-heroes_t6_mixed_nc.jsondaut_viper_32+0.05%-0.38%-0.38%0.00%unchanged
testcases/2-testcases_no-heroes_t6_mixed_nc.jsondaut_viper_43+0.05%-0.45%-0.45%0.00%unchanged
testcases/2-testcases_no-heroes_t6_mixed_nc.jsondaut_viper_54+0.043%0.00%0.00%0.00%unchanged
testcases/2-testcases_no-heroes_t6_mixed_nc.jsondaut_viper_65+0.05%-0.07%-0.07%0.00%unchanged
testcases/3-testcases_mixed-heroes-not-verified.jsondaut_viper_10+0.05%0.19%0.19%0.00%unchanged
testcases/3-testcases_mixed-heroes-not-verified.jsondaut_viper_210.00%0.00%0.00%unchanged
testcases/3-testcases_mixed-heroes-not-verified.jsondaut_viper_750.16%0.16%0.00%unchanged
testcases/4-testcases_no-heroes_infantry_fc5.jsonNitro_Beast_30_10-0.22%-0.22%0.00%unchanged
testcases/emulator_verified/ahmose_solo_nc.jsonahmose_solo0-0.05%0.06%0.06%0.00%unchanged
testcases/emulator_verified/alonso_attacker_600_all.jsonalonso_attacker_600_all0-0.14%-0.14%0.00%unchanged
testcases/emulator_verified/alonso_attacker_900_inf_lancer.jsonalonso_attacker_900_inf_lancer00.04%0.04%0.00%unchanged
testcases/emulator_verified/alonso_attacker_900_inf_lancer.jsonalonso_attacker_900_inf_lancer10.02%0.02%0.00%unchanged
testcases/emulator_verified/alonso_minxxx_defender.jsonalonso_minxxx_defender00.14%0.14%0.00%unchanged
testcases/emulator_verified/alonso_norah_combo.jsonalonso_norah_combo0-0.02%-0.02%0.00%unchanged
testcases/emulator_verified/alonso_norah_combo.jsonalonso_norah_combo1-0.26%-0.26%0.00%unchanged
testcases/emulator_verified/alonso_norah_combo.jsonalonso_norah_combo2-0.19%-0.19%0.00%unchanged
testcases/emulator_verified/alonso_solo.jsonalonso_solo02.97%2.97%0.00%unchanged
testcases/emulator_verified/alonso_solo_v2.jsonalonso_solo_v201.58%1.58%0.00%unchanged
testcases/emulator_verified/alonso_solo_v2.jsonalonso_solo_v21-1.59%-1.59%0.00%unchanged
testcases/emulator_verified/alonso_vs_alonso.jsonalonso_vs_alonso0-0.17%-0.17%0.00%unchanged
testcases/emulator_verified/alonso_vs_alonso_inf_lancer.jsonalonso_vs_alonso_inf_lancer0-0.04%-0.04%0.00%unchanged
testcases/emulator_verified/alonso_wip_attacker.jsonalonso_wip_attacker0-0.03%-0.03%0.00%unchanged
testcases/emulator_verified/attdef_jasser_patrick_minxxx_attacks_nc.jsonattdef_jasser_patrick_minxxx_attacks0+0.05%0.00%0.00%0.00%unchanged
testcases/emulator_verified/attdef_jasser_patrick_nc.jsonattdef_jasser_patrick00.00%0.00%0.00%unchanged
testcases/emulator_verified/attdef_jasser_patrick_swap_nc.jsonattdef_jasser_patrick_swap00.00%0.00%0.00%unchanged
testcases/emulator_verified/attdef_jasser_patrick_wip_attacks_nc.jsonattdef_jasser_patrick_wip_attacks0-0.05%0.00%0.00%0.00%unchanged
testcases/emulator_verified/attdef_jasser_patrick_wip_attacks_nc.jsonattdef_jasser_patrick_wip_attacks1-0.05%0.00%0.00%0.00%unchanged
testcases/emulator_verified/attdef_test_minxxx_attacks_nc.jsonattdef_test_minxxx_attacks_nc0-0.05%0.08%0.08%0.00%unchanged
testcases/emulator_verified/attdef_test_wip_attacks_nc.jsonattdef_test_wip_attacks_nc00.00%0.00%0.00%unchanged
testcases/emulator_verified/bahiti_solo.jsonbahiti_solo00.32%0.32%0.00%unchanged
testcases/emulator_verified/bahiti_solo_nc.jsonbahiti_solo_nc00.04%0.04%0.00%unchanged
testcases/emulator_verified/determinism_test_normal_nc.jsondeterminism_test_normal00.00%0.00%0.00%unchanged
testcases/emulator_verified/determinism_test_swapped_nc.jsondeterminism_test_swapped00.00%0.00%0.00%unchanged
testcases/emulator_verified/flint_reina_zinman_combo.jsonflint_reina_zinman_combo0-0.15%-0.15%0.00%unchanged
testcases/emulator_verified/flint_solo_nc.jsonflint_solo0+0.05%-0.02%-0.02%0.00%unchanged
testcases/emulator_verified/flint_zinman_combo_nc.jsonflint_zinman_combo_nc00.00%0.00%0.00%unchanged
testcases/emulator_verified/greg_mia_combo.jsongreg_mia_combo0-1.97%-1.97%0.00%unchanged
testcases/emulator_verified/greg_mia_combo.jsongreg_mia_combo1-0.05%1.06%1.06%0.00%unchanged
testcases/emulator_verified/greg_mia_defender_current.jsongreg_mia_defender_current0-0.09%-0.09%0.00%unchanged
testcases/emulator_verified/greg_mia_nohero_control_current.jsongreg_mia_nohero_control_current00.00%0.00%0.00%unchanged
testcases/emulator_verified/greg_mia_nohero_control_current.jsongreg_mia_nohero_control_current1+0.05%0.00%0.00%0.00%unchanged
testcases/emulator_verified/greg_only_defender_current.jsongreg_only_defender_current00.00%0.00%0.00%unchanged
testcases/emulator_verified/greg_only_defender_current.jsongreg_only_defender_current10.01%0.01%0.00%unchanged
testcases/emulator_verified/greg_only_defender_current.jsongreg_only_defender_current2-0.02%-0.02%0.00%unchanged
testcases/emulator_verified/greg_solo.jsongreg_solo00.16%0.16%0.00%unchanged
testcases/emulator_verified/hector_patrick_combo.jsonhector_patrick_combo0-0.05%-0.05%0.00%unchanged
testcases/emulator_verified/hector_solo.jsonhector_solo00.12%0.12%0.00%unchanged
testcases/emulator_verified/jasser_solo_nc.jsonjasser_solo0+0.05%0.00%0.00%0.00%unchanged
testcases/emulator_verified/jessie_solo_nc.jsonjessie_solo0-0.05%0.00%0.00%0.00%unchanged
testcases/emulator_verified/ling_xue_solo_nc.jsonling_xue_solo0+0.05%0.00%0.00%0.00%unchanged
testcases/emulator_verified/ling_xue_solo_nc.jsonling_xue_solo1+0.05%-0.02%-0.02%0.00%unchanged
testcases/emulator_verified/logan_bahiti_combo_nc.jsonlogan_bahiti_combo_nc00.55%0.55%0.00%unchanged
testcases/emulator_verified/logan_lynn_combo.jsonlogan_lynn_combo00.08%0.08%0.00%unchanged
testcases/emulator_verified/logan_lynn_combo.jsonlogan_lynn_combo10.03%0.03%0.00%unchanged
testcases/emulator_verified/logan_lynn_combo.jsonlogan_lynn_combo20.00%0.00%0.00%unchanged
testcases/emulator_verified/logan_reina_bahiti_combo_nc.jsonlogan_reina_bahiti_combo_nc0-0.60%-0.60%0.00%unchanged
testcases/emulator_verified/logan_solo_minxxx_nc.jsonlogan_solo_minxxx00.00%0.00%0.00%unchanged
testcases/emulator_verified/logan_solo_v2_nc.jsonlogan_solo_v200.00%0.00%0.00%unchanged
testcases/emulator_verified/lumak_bokan_solo_nc.jsonlumak_bokan_solo0+0.05%0.00%0.00%0.00%unchanged
testcases/emulator_verified/lumak_bokan_solo_nc.jsonlumak_bokan_solo1+0.05%0.00%0.00%0.00%unchanged
testcases/emulator_verified/lynn_solo.jsonlynn_solo0-0.08%-0.08%0.00%unchanged
testcases/emulator_verified/mia_only_defender_current.jsonmia_only_defender_current0-0.07%-0.07%0.00%unchanged
testcases/emulator_verified/mia_only_defender_current.jsonmia_only_defender_current1-0.21%-0.21%0.00%unchanged
testcases/emulator_verified/mia_solo.jsonmia_solo0-0.27%-0.27%0.00%unchanged
testcases/emulator_verified/mia_solo.jsonmia_solo10.22%0.22%0.00%unchanged
testcases/emulator_verified/mia_solo.jsonmia_solo2-0.32%-0.32%0.00%unchanged
testcases/emulator_verified/mia_solo.jsonmia_solo30.04%0.04%0.00%unchanged
testcases/emulator_verified/mia_solo.jsonmia_solo40.21%0.21%0.00%unchanged
testcases/emulator_verified/molly_lynn_combo.jsonmolly_lynn_combo00.00%0.00%0.00%unchanged
testcases/emulator_verified/molly_solo.jsonmolly_solo0-0.07%-0.07%0.00%unchanged
testcases/emulator_verified/natalia_solo.jsonnatalia_solo0+0.05%-1.06%-1.06%0.00%unchanged
testcases/emulator_verified/norah_greg_combo.jsonnorah_greg_combo0-0.04%-0.04%0.00%unchanged
testcases/emulator_verified/norah_s2_inf_only_A.jsonnorah_s2_inf_only_A0+0.05%-0.35%-0.35%0.00%unchanged
testcases/emulator_verified/norah_s2_inf_only_B_nc.jsonnorah_s2_inf_only_B0+0.05%0.00%0.00%0.00%unchanged
testcases/emulator_verified/norah_s2_splash_A.jsonnorah_s2_splash_A00.23%0.23%0.00%unchanged
testcases/emulator_verified/norah_s2_splash_B_nc.jsonnorah_s2_splash_B00.00%0.00%0.00%unchanged
testcases/emulator_verified/norah_s2_splash_C_nc.jsonnorah_s2_splash_C00.00%0.00%0.00%unchanged
testcases/emulator_verified/norah_s2_splash_D.jsonnorah_s2_splash_D00.12%0.12%0.00%unchanged
testcases/emulator_verified/norah_solo.jsonnorah_solo0-0.28%-0.28%0.00%unchanged
testcases/emulator_verified/patrick_solo_nc.jsonpatrick_solo0+0.001%-0.02%-0.02%0.00%unchanged
testcases/emulator_verified/philly_bahiti_combo.jsonphilly_bahiti_combo0-0.14%-0.14%0.00%unchanged
testcases/emulator_verified/philly_bahiti_combo.jsonphilly_bahiti_combo10.22%0.22%0.00%unchanged
testcases/emulator_verified/philly_solo.jsonphilly_solo00.20%0.20%0.00%unchanged
testcases/emulator_verified/philly_solo.jsonphilly_solo10.02%0.02%0.00%unchanged
testcases/emulator_verified/reina_attacker_wip.jsonreina_attacker_wip00.01%0.01%0.00%unchanged
testcases/emulator_verified/reina_bahiti_combo_nc.jsonreina_bahiti_combo_nc01.05%1.05%0.00%unchanged
testcases/emulator_verified/reina_logan_combo_simulator.jsonreina_logan_combo_simulator00.14%0.14%0.00%unchanged
testcases/emulator_verified/reina_solo_wip.jsonreina_solo_wip0-0.02%-0.02%0.00%unchanged
testcases/emulator_verified/seo_yoon_solo_nc.jsonseo_yoon_solo0-0.05%0.10%0.10%0.00%unchanged
testcases/emulator_verified/sergey_reina_combo_nc.jsonsergey_reina_combo_nc0-0.35%-0.35%0.00%unchanged
testcases/emulator_verified/sergey_solo_nc.jsonsergey_solo0-0.05%0.00%0.00%0.00%unchanged
testcases/emulator_verified/simple_001_nc.jsonsimple_00100.00%0.00%0.00%unchanged
testcases/emulator_verified/troop_check_nc.jsontroop_check00.00%0.00%0.00%unchanged
testcases/emulator_verified/type_triangle_A_nc.jsontype_triangle_A_nc0+0.05%0.00%0.00%0.00%unchanged
testcases/emulator_verified/type_triangle_B_nc.jsontype_triangle_B_nc00.00%0.00%0.00%unchanged
testcases/emulator_verified/wayne_mixed_solo.jsonwayne_mixed_solo0-0.23%-0.23%0.00%unchanged
testcases/emulator_verified/wayne_mixed_solo.jsonwayne_mixed_solo1-2.01%-2.01%0.00%unchanged
testcases/emulator_verified/wayne_reina_combo.jsonwayne_reina_combo0-0.37%-0.37%0.00%unchanged
testcases/emulator_verified/wayne_reina_wuming_combo.jsonwayne_reina_wuming_combo00.18%0.18%0.00%unchanged
testcases/emulator_verified/wayne_s1_solo.jsonwayne_s1_solo00.36%0.36%0.00%unchanged
testcases/emulator_verified/wayne_s2_solo.jsonwayne_s2_solo00.43%0.43%0.00%unchanged
testcases/emulator_verified/wos425_wip_nohero_control_nc.jsonwos425_wip_nohero_control_nc00.00%0.00%0.00%unchanged
testcases/emulator_verified/wos425_wip_patrick_health_nc.jsonwos425_wip_patrick_health_nc00.00%0.00%0.00%unchanged
testcases/emulator_verified/wos425_wip_philly_defense.jsonwos425_wip_philly_defense0-0.02%-0.02%0.00%unchanged
testcases/emulator_verified/wos425_wip_sergey_damage_taken_nc.jsonwos425_wip_sergey_damage_taken_nc00.00%0.00%0.00%unchanged
testcases/emulator_verified/wos425_wip_sergey_patrick_combo_nc.jsonwos425_wip_sergey_patrick_combo_nc00.00%0.00%0.00%unchanged
testcases/emulator_verified/wu_ming_solo_nc.jsonwu_ming_solo00.00%0.00%0.00%unchanged
testcases/emulator_verified/zinman_solo_nc.jsonzinman_solo0+0.05%0.00%0.00%0.00%unchanged
testcases/heroes_unittests/Flint_tc.jsondaut_viper_10+0.05%-0.05%-0.05%0.00%unchanged
testcases/heroes_unittests/Flint_tc.jsondaut_viper_21-0.05%0.27%0.27%0.00%unchanged
testcases/heroes_unittests/Hector_tc.jsondaut_viper_100.00%0.00%0.00%unchanged
testcases/heroes_unittests/Jessie_tc_nc.jsondaut_viper_10+0.05%-0.06%-0.06%0.00%unchanged
testcases/heroes_unittests/Jessie_tc_nc.jsondaut_viper_21+0.05%-0.07%-0.07%0.00%unchanged
testcases/heroes_unittests/Jessie_tc_nc.jsondaut_viper_32-0.025%0.00%0.00%0.00%unchanged
testcases/heroes_unittests/Jessie_tc_nc.jsondaut_viper_43-0.017%0.00%0.00%0.00%unchanged
testcases/heroes_unittests/Jessie_tc_nc.jsondaut_viper_540.00%0.00%0.00%unchanged
testcases/heroes_unittests/Jessie_tc_nc.jsondaut_viper_65+0.05%-0.06%-0.06%0.00%unchanged
testcases/heroes_unittests/Jessie_tc_nc.jsondaut_viper_76+0.05%-0.05%-0.05%0.00%unchanged
testcases/heroes_unittests/Jessie_tc_nc.jsondaut_viper_870.00%0.00%0.00%unchanged
testcases/heroes_unittests/Mia_tc.jsondaut_viper_100.17%0.17%0.00%unchanged
testcases/heroes_unittests/Mia_tc.jsondaut_viper_21+0.05%-0.77%-0.77%0.00%unchanged
testcases/heroes_unittests/Mia_tc.jsondaut_viper_32-0.10%-0.10%0.00%unchanged
testcases/heroes_unittests/Mia_tc.jsondaut_viper_43-0.13%-0.13%0.00%unchanged
testcases/heroes_unittests/Mia_tc.jsondaut_viper_54-0.11%-0.11%0.00%unchanged
testcases/heroes_unittests/Molly_tc.jsondaut_viper_10+0.05%-0.06%-0.06%0.00%unchanged
testcases/heroes_unittests/Molly_tc.jsondaut_viper_21+0.05%-0.07%-0.07%0.00%unchanged
testcases/heroes_unittests/Molly_tc.jsondaut_viper_32-0.025%0.00%0.00%0.00%unchanged
testcases/heroes_unittests/Molly_tc.jsondaut_viper_430.33%0.33%0.00%unchanged
testcases/heroes_unittests/Molly_tc.jsondaut_viper_54-0.02%-0.02%0.00%unchanged
testcases/heroes_unittests/Reina_tc.jsondaut_viper_10+0.05%-0.18%-0.18%0.00%unchanged
testcases/heroes_unittests/Reina_tc.jsondaut_viper_210.00%0.00%0.00%unchanged
testcases/heroes_unittests/Reina_tc.jsondaut_viper_42-0.46%-0.46%0.00%unchanged
testcases/heroes_unittests/Reina_tc.jsondaut_viper_530.01%0.01%0.00%unchanged
testcases/heroes_unittests/Seo-yoon_tc_nc.jsondaut_viper_10+0.05%-0.06%-0.06%0.00%unchanged
testcases/heroes_unittests/Seo-yoon_tc_nc.jsondaut_viper_32-0.025%0.00%0.00%0.00%unchanged
testcases/heroes_unittests/Seo-yoon_tc_nc.jsondaut_viper_43+0.05%-0.04%-0.04%0.00%unchanged
testcases/heroes_unittests/Seo-yoon_tc_nc.jsondaut_viper_54+0.05%-0.06%-0.06%0.00%unchanged
testcases/heroes_unittests/Seo-yoon_tc_nc.jsondaut_viper_61+0.05%-0.07%-0.07%0.00%unchanged
testcases/heroes_unittests/Seo-yoon_tc_nc.jsondaut_viper_65-0.006%0.04%0.04%0.00%unchanged
testcases/heroes_unittests/Seo-yoon_tc_nc.jsondaut_viper_76-0.004%0.04%0.04%0.00%unchanged
testcases/heroes_unittests/Zinman_tc.jsondaut_viper_10-0.05%0.00%0.00%0.00%unchanged
testcases/heroes_unittests/Zinman_tc.jsondaut_viper_21-0.025%0.00%0.00%0.00%unchanged
testcases/heroes_unittests/Zinman_tc.jsondaut_viper_320.00%0.00%0.00%unchanged
testcases/emulator_verified/wos444_bradley_s3_all_troops_damage_control_nc.jsonwos444_bradley_s3_all_troops_damage_control_nc0+0.05%-0.82%added
testcases/emulator_verified/wos444_bradley_s3_all_troops_damage_control_nc.jsonwos444_bradley_s3_all_troops_damage_control_nc10.00%added
testcases/emulator_verified/wos444_bradley_s3_all_troops_damage_control_nc.jsonwos444_bradley_s3_all_troops_damage_control_nc20.00%added
testcases/emulator_verified/wos444_bradley_s3_all_troops_damage_hero_nc.jsonwos444_bradley_s3_all_troops_damage_hero_nc00.00%added
testcases/emulator_verified/wos444_edith_s11_mark_damage_taken_control_nc.jsonwos444_edith_s11_mark_damage_taken_control_nc00.00%added
testcases/emulator_verified/wos444_edith_s11_mark_damage_taken_control_nc.jsonwos444_edith_s11_mark_damage_taken_control_nc10.00%added
testcases/emulator_verified/wos444_edith_s11_mark_damage_taken_hero_nc.jsonwos444_edith_s11_mark_damage_taken_hero_nc00.00%added
testcases/emulator_verified/wos444_edith_s12_lancer_damage_dealt_control_nc.jsonwos444_edith_s12_lancer_damage_dealt_control_nc00.00%added
testcases/emulator_verified/wos444_edith_s12_lancer_damage_dealt_hero_nc.jsonwos444_edith_s12_lancer_damage_dealt_hero_nc00.00%added
testcases/emulator_verified/wos444_gordon_s22_all_enemy_damage_dealt_control_nc.jsonwos444_gordon_s22_all_enemy_damage_dealt_control_nc00.00%added
testcases/emulator_verified/wos444_gordon_s22_all_enemy_damage_dealt_control_nc.jsonwos444_gordon_s22_all_enemy_damage_dealt_control_nc1+0.05%-0.41%added
testcases/emulator_verified/wos444_gordon_s22_all_enemy_damage_dealt_control_nc.jsonwos444_gordon_s22_all_enemy_damage_dealt_control_nc20.00%added
testcases/emulator_verified/wos444_gordon_s22_all_enemy_damage_dealt_hero_nc.jsonwos444_gordon_s22_all_enemy_damage_dealt_hero_nc00.11%added
testcases/emulator_verified/wos451_bradley_s21_lancer_damage_up_bucket.jsonwos451_bradley_s21_lancer_damage_up_bucket00.00%added
testcases/emulator_verified/wos451_bradley_s21_lancer_damage_up_control.jsonwos451_bradley_s21_lancer_damage_up_control0-0.025%0.00%added
testcases/emulator_verified/wos451_bradley_s22_infantry_damage_up_bucket.jsonwos451_bradley_s22_infantry_damage_up_bucket0-0.05%0.03%added
testcases/emulator_verified/wos451_bradley_s22_infantry_damage_up_control.jsonwos451_bradley_s22_infantry_damage_up_control00.00%added
testcases/emulator_verified/wos451_bradley_s3_all_damage_up_bucket.jsonwos451_bradley_s3_all_damage_up_bucket00.00%added
testcases/emulator_verified/wos451_bradley_s3_all_damage_up_control.jsonwos451_bradley_s3_all_damage_up_control00.00%added
testcases/emulator_verified/wos451_gordon_s11_lancer_damage_up_bucket.jsonwos451_gordon_s11_lancer_damage_up_bucket0+0.05%-0.66%added
testcases/emulator_verified/wos451_gordon_s11_lancer_damage_up_control.jsonwos451_gordon_s11_lancer_damage_up_control0+0.05%0.00%added
testcases/emulator_verified/wos451_gordon_s21_lancer_damage_up_bucket.jsonwos451_gordon_s21_lancer_damage_up_bucket0+0.05%-0.69%added
testcases/emulator_verified/wos451_gordon_s21_lancer_damage_up_control.jsonwos451_gordon_s21_lancer_damage_up_control00.00%added

Code / Config Changes

Commits (8908f1a3ee5ff87e)

ee5ff87eAdd WOS-451 Bradley bucket fixturespiddlyminx23/06/2026, 23:23:54

Code Changes (Run A → Run B)

Index: simulator/config/hero_definitions/Bradley.json
===================================================================
--- simulator/config/hero_definitions/Bradley.json prev run
+++ simulator/config/hero_definitions/Bradley.json this run
@@ -27,9 +27,9 @@
"type": "battle_start"
},
"effects": {
"PowerShot/1": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
6,
12,
18,
@@ -42,9 +42,9 @@
]
}
},
"PowerShot/2": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
5,
10,
15,
Index: simulator/config/hero_definitions/Gordon.json
===================================================================
--- simulator/config/hero_definitions/Gordon.json prev run
+++ simulator/config/hero_definitions/Gordon.json this run
@@ -11,9 +11,9 @@
"source": "lancer"
},
"effects": {
"VenomInfusion/1": {
- "type": "active.hero.damage.up",
+ "type": "active.hero.attack.up",
"value": [
20,
40,
60,
@@ -22,10 +22,9 @@
],
"units": {
"applies_to": [
"lancer"
- ],
- "applies_vs": "trigger.target"
+ ]
},
"duration": {
"type": "attack",
"value": 1
@@ -40,10 +39,9 @@
16,
20
],
"units": {
- "applies_to": "trigger.target",
- "applies_vs": "any"
+ "applies_to": "trigger.target"
},
"duration": {
"type": "turn",
"value": 1
@@ -69,10 +67,9 @@
],
"units": {
"applies_to": [
"lancer"
- ],
- "applies_vs": "any"
+ ]
},
"duration": {
"type": "turn",
"value": 1
Index: simulator/config/hero_definitions/Gwen.json
===================================================================
--- simulator/config/hero_definitions/Gwen.json prev run
+++ simulator/config/hero_definitions/Gwen.json this run
@@ -5,9 +5,10 @@
"skills": {
"EagleVision": {
"description": "Increasing target's damage taken by X%",
"trigger": {
- "type": "attack"
+ "type": "attack",
+ "every": 2
},
"effects": {
"EagleVision/1": {
"type": "active.hero.damageTaken.up",
@@ -18,9 +19,9 @@
20,
25
],
"units": {
- "applies_to": "target"
+ "applies_to": "enemy"
},
"duration": {
"type": "attack",
"value": 1
@@ -28,12 +29,12 @@
}
}
},
"AirDominance": {
- "description": "Grants all troops' attack X% extra damage after every 5 attacks and causes the target to receive X% extra damage for its next attack received",
+ "description": "Grants all troops' attack X% extra damage after every 4 attacks and causes the target to receive X% extra damage for its next attack received",
"trigger": {
"type": "attack",
- "every": 5
+ "every": 4
},
"effects": {
"AirDominance/1": {
"type": "extra_skill_attack",
@@ -59,9 +60,9 @@
}
]
},
"AirDominance/2": {
- "type": "active.hero.defense.down",
+ "type": "active.hero.damageTaken.up",
"value": [
5,
7.5,
10,
@@ -98,10 +99,9 @@
],
"units": {
"applies_to": [
"marksman"
- ],
- "applies_vs": "any"
+ ]
},
"duration": {
"type": "attack",
"value": 1,
Index: simulator/config/hero_definitions/Hector.json
===================================================================
--- simulator/config/hero_definitions/Hector.json prev run
+++ simulator/config/hero_definitions/Hector.json this run
@@ -64,9 +64,9 @@
"value": 15
}
},
"Rampant/2": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
20,
40,
60,
Index: simulator/config/hero_definitions/Lumak.json
===================================================================
--- simulator/config/hero_definitions/Lumak.json prev run
+++ simulator/config/hero_definitions/Lumak.json this run
@@ -9,9 +9,9 @@
"type": "battle_start"
},
"effects": {
"TacticalDeception/1": {
- "type": "active.hero.lethality.down",
+ "type": "active.hero.damage.down",
"value": [
4,
8,
12,
Index: simulator/config/hero_definitions/Norah.json
===================================================================
--- simulator/config/hero_definitions/Norah.json prev run
+++ simulator/config/hero_definitions/Norah.json this run
@@ -9,9 +9,9 @@
"type": "battle_start"
},
"effects": {
"CombinedArms/1": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
3,
6,
9,
@@ -113,9 +113,9 @@
"value": 2
}
},
"Momentum/2": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
5,
10,
15,
Index: simulator/config/hero_definitions/Renee.json
===================================================================
--- simulator/config/hero_definitions/Renee.json prev run
+++ simulator/config/hero_definitions/Renee.json this run
@@ -6,62 +6,54 @@
"NightmareTrace": {
"description": "Troops place Dream Marks on targets every two turns, dealing extra Lancer damage once next turn",
"trigger": {
"type": "turn",
- "every": 2
+ "every": 2,
+ "source": "lancer"
},
"effects": {
"NightmareTrace/1": {
- "type": "extra_skill_attack",
+ "type": "active.hero.defense.down",
"value": [
40,
80,
120,
160,
200
],
"units": {
- "applies_to": [
- "lancer"
- ],
- "applies_vs": "any"
+ "applies_to": "target",
+ "applies_vs": "lancer"
},
"duration": {
"type": "attack",
"value": 1,
"delay": 1
},
- "same_effect_stacking": "max",
- "trigger_damage_jobs": [
- {
- "source": "use.source",
- "target": "use.target"
- }
- ]
+ "same_effect_stacking": "max"
}
}
},
"Dreamcatcher": {
"description": "Dream Marks highlight enemy vulnerabilities, increasing damage dealt by Lancers to marked targets",
"trigger": {
"type": "turn",
- "every": 2
+ "every": 2,
+ "source": "lancer"
},
"effects": {
"Dreamcatcher/1": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.defense.down",
"value": [
30,
60,
90,
120,
150
],
"units": {
- "applies_to": [
- "lancer"
- ],
- "applies_vs": "any"
+ "applies_to": "target",
+ "applies_vs": "lancer"
},
"duration": {
"type": "turn",
"value": 1,
@@ -75,9 +67,9 @@
"description": "Dream Marks expose enemy weaknesses, increasing damage taken by marked targets for all troops",
"trigger": {
"type": "turn",
"every": 2,
- "source": "self.any"
+ "source": "lancer"
},
"effects": {
"Dreamslice/1": {
"type": "active.hero.defense.down",
Index: simulator/config/hero_definitions/Sergey.json
===================================================================
--- simulator/config/hero_definitions/Sergey.json prev run
+++ simulator/config/hero_definitions/Sergey.json this run
@@ -9,9 +9,9 @@
"type": "battle_start"
},
"effects": {
"DefendersEdge/1": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
4,
8,
12,
Index: simulator/config/troop_stats.json
===================================================================
--- simulator/config/troop_stats.json prev run
+++ simulator/config/troop_stats.json this run
@@ -874,8 +874,32 @@
"Lethality": 10,
"Health": 2073
}
},
+ "infantry_t10_fc9": {
+ "id": "infantry_t10_fc9",
+ "type": "infantry",
+ "tier": 10,
+ "fc": 9,
+ "stats": {
+ "Attack": 726,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 2178
+ }
+ },
+ "infantry_t10_fc10": {
+ "id": "infantry_t10_fc10",
+ "type": "infantry",
+ "tier": 10,
+ "fc": 10,
+ "stats": {
+ "Attack": 762,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 2286
+ }
+ },
"infantry_t11": {
"id": "infantry_t11",
"type": "infantry",
"tier": 11,
@@ -934,8 +958,32 @@
"Lethality": 10,
"Health": 2285
}
},
+ "infantry_t11_fc9": {
+ "id": "infantry_t11_fc9",
+ "type": "infantry",
+ "tier": 11,
+ "fc": 9,
+ "stats": {
+ "Attack": 800,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 2400
+ }
+ },
+ "infantry_t11_fc10": {
+ "id": "infantry_t11_fc10",
+ "type": "infantry",
+ "tier": 11,
+ "fc": 10,
+ "stats": {
+ "Attack": 840,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 2520
+ }
+ },
"lancer_t10_fc6": {
"id": "lancer_t10_fc6",
"type": "lancer",
"tier": 10,
@@ -970,8 +1018,32 @@
"Lethality": 10,
"Health": 691
}
},
+ "lancer_t10_fc9": {
+ "id": "lancer_t10_fc9",
+ "type": "lancer",
+ "tier": 10,
+ "fc": 9,
+ "stats": {
+ "Attack": 2178,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 726
+ }
+ },
+ "lancer_t10_fc10": {
+ "id": "lancer_t10_fc10",
+ "type": "lancer",
+ "tier": 10,
+ "fc": 10,
+ "stats": {
+ "Attack": 2286,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 762
+ }
+ },
"lancer_t11_fc6": {
"id": "lancer_t11_fc6",
"type": "lancer",
"tier": 11,
@@ -1006,8 +1078,32 @@
"Lethality": 10,
"Health": 762
}
},
+ "lancer_t11_fc9": {
+ "id": "lancer_t11_fc9",
+ "type": "lancer",
+ "tier": 11,
+ "fc": 9,
+ "stats": {
+ "Attack": 2400,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 800
+ }
+ },
+ "lancer_t11_fc10": {
+ "id": "lancer_t11_fc10",
+ "type": "lancer",
+ "tier": 11,
+ "fc": 10,
+ "stats": {
+ "Attack": 2520,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 840
+ }
+ },
"marksman_t10_fc6": {
"id": "marksman_t10_fc6",
"type": "marksman",
"tier": 10,
@@ -1042,8 +1138,32 @@
"Lethality": 10,
"Health": 519
}
},
+ "marksman_t10_fc9": {
+ "id": "marksman_t10_fc9",
+ "type": "marksman",
+ "tier": 10,
+ "fc": 9,
+ "stats": {
+ "Attack": 2904,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 545
+ }
+ },
+ "marksman_t10_fc10": {
+ "id": "marksman_t10_fc10",
+ "type": "marksman",
+ "tier": 10,
+ "fc": 10,
+ "stats": {
+ "Attack": 3048,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 572
+ }
+ },
"marksman_t11_fc6": {
"id": "marksman_t11_fc6",
"type": "marksman",
"tier": 11,
@@ -1078,8 +1198,32 @@
"Lethality": 10,
"Health": 572
}
},
+ "marksman_t11_fc9": {
+ "id": "marksman_t11_fc9",
+ "type": "marksman",
+ "tier": 11,
+ "fc": 9,
+ "stats": {
+ "Attack": 3200,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 600
+ }
+ },
+ "marksman_t11_fc10": {
+ "id": "marksman_t11_fc10",
+ "type": "marksman",
+ "tier": 11,
+ "fc": 10,
+ "stats": {
+ "Attack": 3360,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 630
+ }
+ },
"lancer_t1": {
"id": "lancer_t1",
"type": "lancers",
"tier": 1,
Index: simulator/src/simulator.test.ts
===================================================================
--- simulator/src/simulator.test.ts prev run
+++ simulator/src/simulator.test.ts this run
@@ -957,32 +957,39 @@
assert.deepEqual(result.remaining.defender, { infantry: 0, lancer: 0, marksman: 0 });
});
test("committed losses clamp exhausted floating point residue before next-round target selection", () => {
- const config = loadSimulatorConfig();
- const fixturePath = fileURLToPath(new URL("../testcases/emulator_verified/renee_solo_nc.json", import.meta.url));
- const testcases = JSON.parse(readFileSync(fixturePath, "utf8")) as Array<BattleInput & { test_id: string }>;
- const input = testcases.find((testcase) => testcase.test_id === "renee_solo_nc");
- if (!input) throw new Error("missing renee_solo_nc fixture");
-
- const adjusted = structuredClone(input);
- for (const [fighter, adjustment] of [
- [adjusted.attacker, 0.05],
- [adjusted.defender, -0.05]
- ] as const) {
- for (const stats of Object.values(fighter.stats ?? {})) {
- for (const key of ["attack", "defense", "lethality", "health"] as const) {
- if (stats[key] !== undefined) stats[key] = Number((Number(stats[key]) + adjustment).toFixed(3));
+ const result = simulateBattle(
+ {
+ maxRounds: 2,
+ attacker: {
+ troops: { infantry_t1: 10, lancer_t1: 100 },
+ heroes: {}
+ },
+ defender: {
+ troops: { infantry_t1: 1000, lancer_t1: 1000, marksman_t1: 1000 },
+ stats: {
+ infantry: { attack: 1, lethality: 1 },
+ lancer: { attack: 1, lethality: 1 },
+ marksman: { attack: 1, lethality: 1 }
+ },
+ heroes: {}
}
- }
- }
- const result = simulateBattle(adjusted, config, { mode: "trace" });
- const roundSix = result.trace?.rounds.find((round) => round.round === 6);
- const defenderTargets = roundSix?.intents
+ },
+ minimalConfig(),
+ { mode: "trace" }
+ );
+ const roundOneInfantryLosses = result.attacks
+ .filter((attack) => attack.jobId.startsWith("r1:") && attack.defenderSide === "attacker" && attack.defenderUnit === "infantry")
+ .map((attack) => attack.kills);
+ const roundTwo = result.trace?.rounds.find((round) => round.round === 2);
+ const defenderTargets = roundTwo?.intents
.filter((intent) => intent.attackerSide === "defender")
.map((intent) => intent.defenderUnit);
- assert.equal(roundSix?.roundStartTroops.attacker.infantry, 0);
+ assert.ok(roundOneInfantryLosses.every((kills) => !Number.isInteger(kills)));
+ assert.equal(roundOneInfantryLosses.reduce((sum, kills) => sum + kills, 0), 10);
+ assert.equal(roundTwo?.roundStartTroops.attacker.infantry, 0);
assert.deepEqual(defenderTargets, ["lancer", "lancer", "lancer"]);
});
test("extra skill trigger damage jobs reject missing runtime selectors", () => {
Index: testcases/emulator_verified/wos444_bradley_s3_all_troops_damage_control_nc.json
===================================================================
--- testcases/emulator_verified/wos444_bradley_s3_all_troops_damage_control_nc.json prev run
+++ testcases/emulator_verified/wos444_bradley_s3_all_troops_damage_control_nc.json this run
@@ -0,0 +1,212 @@
+[
+ {
+ "test_id": "wos444_bradley_s3_all_troops_damage_control_nc",
+ "description": "WOS-444 exact no-hero control for Bradley S3 all-troops damage-up bucket probe. WIP attacks 2520 each T6 mixed; minxxx defends 900 each T6 mixed. Same accounts, roles, troop counts, and report path as the paired hero fixture.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 2520,
+ "lancer_t6": 2520,
+ "marksman_t6": 2520
+ },
+ "stats": {
+ "inf": {
+ "attack": 0.0,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 900,
+ "lancer_t6": 900,
+ "marksman_t6": 900
+ },
+ "stats": {
+ "inf": {
+ "attack": 0.0,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 5848,
+ "defender": 0
+ }
+ ]
+ },
+ {
+ "test_id": "wos444_bradley_s3_all_troops_damage_control_nc",
+ "description": "WOS-444 exact no-hero control for Bradley S3 all-troops damage-up bucket probe. WIP attacks 2520 each T6 mixed; minxxx defends 900 each T6 mixed. Same accounts, roles, troop counts, and report path as the paired hero fixture.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 2520,
+ "lancer_t6": 2520,
+ "marksman_t6": 2520
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 900,
+ "lancer_t6": 900,
+ "marksman_t6": 900
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 5848,
+ "defender": 0
+ }
+ ]
+ },
+ {
+ "test_id": "wos444_bradley_s3_all_troops_damage_control_nc",
+ "description": "WOS-444 exact no-hero control for revised Bradley S3 all-troops damage-up bucket probe. WIP attacks 2880 each T6 mixed; minxxx defends 900 each T6 mixed. Same accounts, roles, troop counts, and report path as the paired hero fixture.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 2880,
+ "lancer_t6": 2880,
+ "marksman_t6": 2880
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 900,
+ "lancer_t6": 900,
+ "marksman_t6": 900
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 7010,
+ "defender": 0
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos444_bradley_s3_all_troops_damage_hero_nc.json
===================================================================
--- testcases/emulator_verified/wos444_bradley_s3_all_troops_damage_hero_nc.json prev run
+++ testcases/emulator_verified/wos444_bradley_s3_all_troops_damage_hero_nc.json this run
@@ -0,0 +1,78 @@
+[
+ {
+ "test_id": "wos444_bradley_s3_all_troops_damage_hero_nc",
+ "description": "WOS-444 Bradley S3 all-troops damage-up bucket probe. WIP attacks class-valid Bradley-only with 2880 each T6 mixed; minxxx defends 900 each T6 mixed. Candidate signed remaining scores: damage.up +4196, attack.up +3861, lethality.up +3673.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {
+ "Bradley": {
+ "skill_1": 4,
+ "skill_2": 4,
+ "skill_3": 4
+ }
+ },
+ "troops": {
+ "infantry_t6": 2880,
+ "lancer_t6": 2880,
+ "marksman_t6": 2880
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 608.0,
+ "defense": 605.3,
+ "lethality": 275.0,
+ "health": 234.4
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 900,
+ "lancer_t6": 900,
+ "marksman_t6": 900
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 8117,
+ "defender": 0
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos444_edith_s11_mark_damage_taken_control_nc.json
===================================================================
--- testcases/emulator_verified/wos444_edith_s11_mark_damage_taken_control_nc.json prev run
+++ testcases/emulator_verified/wos444_edith_s11_mark_damage_taken_control_nc.json this run
@@ -0,0 +1,138 @@
+[
+ {
+ "test_id": "wos444_edith_s11_mark_damage_taken_control_nc",
+ "description": "WOS-444 exact no-hero control for Edith S1/1 marksman damage-taken bucket probe. WIP attacks 2880 T6 marksman; minxxx defends 400 T6 marksman. Same accounts, roles, troop counts, and report path as the paired hero fixture.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "marksman_t6": 2880
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "marksman_t6": 400
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 2578,
+ "defender": 0
+ },
+ {
+ "attacker": 2578,
+ "defender": 0
+ }
+ ]
+ },
+ {
+ "test_id": "wos444_edith_s11_mark_damage_taken_control_nc",
+ "description": "WOS-444 exact no-hero control for revised Edith S1/1 marksman damage-taken bucket probe. WIP attacks 2560 T6 marksman; minxxx defends 500 T6 marksman. Same accounts, roles, troop counts, and report path as the paired hero fixture.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "marksman_t6": 2560
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "marksman_t6": 500
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 2106,
+ "defender": 0
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos444_edith_s11_mark_damage_taken_hero_nc.json
===================================================================
--- testcases/emulator_verified/wos444_edith_s11_mark_damage_taken_hero_nc.json prev run
+++ testcases/emulator_verified/wos444_edith_s11_mark_damage_taken_hero_nc.json this run
@@ -0,0 +1,79 @@
+[
+ {
+ "test_id": "wos444_edith_s11_mark_damage_taken_hero_nc",
+ "description": "WOS-444 Edith S1/1 marksman damage-taken bucket probe. WIP attacks 2560 T6 marksman; minxxx defends class-valid Edith+Zinman with 500 T6 marksman. Candidate signed remaining scores: damageTaken.down +234, defense.up +245, health.up +308.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "marksman_t6": 2560
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {
+ "Edith": {
+ "skill_1": 3,
+ "skill_2": 3,
+ "skill_3": 3
+ },
+ "Zinman": {
+ "skill_1": 1,
+ "skill_2": 0,
+ "skill_3": 0
+ }
+ },
+ "troops": {
+ "marksman_t6": 500
+ },
+ "stats": {
+ "inf": {
+ "attack": 493.0,
+ "defense": 481.8,
+ "lethality": 273.9,
+ "health": 296.7
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 309.8,
+ "defense": 306.8,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 1863,
+ "defender": 0
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos444_edith_s12_lancer_damage_dealt_control_nc.json
===================================================================
--- testcases/emulator_verified/wos444_edith_s12_lancer_damage_dealt_control_nc.json prev run
+++ testcases/emulator_verified/wos444_edith_s12_lancer_damage_dealt_control_nc.json this run
@@ -0,0 +1,68 @@
+[
+ {
+ "test_id": "wos444_edith_s12_lancer_damage_dealt_control_nc",
+ "description": "WOS-444 exact no-hero control for Edith S1/2 lancer damage-dealt bucket probe. WIP attacks 2520 T6 infantry; minxxx defends 390 T6 lancer. Same accounts, roles, troop counts, and report path as the paired hero fixture.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 2520
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "lancer_t6": 390
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 2332,
+ "defender": 0
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos444_edith_s12_lancer_damage_dealt_hero_nc.json
===================================================================
--- testcases/emulator_verified/wos444_edith_s12_lancer_damage_dealt_hero_nc.json prev run
+++ testcases/emulator_verified/wos444_edith_s12_lancer_damage_dealt_hero_nc.json this run
@@ -0,0 +1,82 @@
+[
+ {
+ "test_id": "wos444_edith_s12_lancer_damage_dealt_hero_nc",
+ "description": "WOS-444 Edith S1/2 lancer damage-dealt bucket probe. WIP attacks 2520 T6 infantry; minxxx defends Edith+Patrick+Jasser with 390 T6 lancer. Candidate signed remaining scores: damage.up +916, attack.up +937, lethality.up +954.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 2520
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {
+ "Edith": {
+ "skill_1": 3,
+ "skill_2": 3,
+ "skill_3": 3
+ },
+ "Patrick": {
+ "skill_1": 3,
+ "skill_2": 2
+ },
+ "Jasser": {
+ "skill_1": 4,
+ "skill_2": 4
+ }
+ },
+ "troops": {
+ "lancer_t6": 390
+ },
+ "stats": {
+ "inf": {
+ "attack": 493.0,
+ "defense": 481.8,
+ "lethality": 273.9,
+ "health": 296.7
+ },
+ "lanc": {
+ "attack": 382.3,
+ "defense": 377.5,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 351.0,
+ "defense": 348.0,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 1909,
+ "defender": 0
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos444_gordon_s22_all_enemy_damage_dealt_control_nc.json
===================================================================
--- testcases/emulator_verified/wos444_gordon_s22_all_enemy_damage_dealt_control_nc.json prev run
+++ testcases/emulator_verified/wos444_gordon_s22_all_enemy_damage_dealt_control_nc.json this run
@@ -0,0 +1,210 @@
+[
+ {
+ "test_id": "wos444_gordon_s22_all_enemy_damage_dealt_control_nc",
+ "description": "WOS-444 exact no-hero control for Gordon S2/2 all-enemy damage-dealt-down bucket probe. WIP attacks 2700 each T6 mixed; minxxx defends 2560 T6 lancer. Same accounts, roles, troop counts, and report path as the paired hero fixture.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 2700,
+ "lancer_t6": 2700,
+ "marksman_t6": 2700
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "lancer_t6": 2560
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 7656,
+ "defender": 0
+ }
+ ]
+ },
+ {
+ "test_id": "wos444_gordon_s22_all_enemy_damage_dealt_control_nc",
+ "description": "WOS-444 exact no-hero control for Gordon S2/2 all-enemy damage-dealt-down bucket probe. WIP attacks 2700 each T6 mixed; minxxx defends 2560 T6 lancer. Same accounts, roles, troop counts, and report path as the paired hero fixture.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 2700,
+ "lancer_t6": 2700,
+ "marksman_t6": 2700
+ },
+ "stats": {
+ "inf": {
+ "attack": 0.0,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "lancer_t6": 2560
+ },
+ "stats": {
+ "inf": {
+ "attack": 0.0,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 7656,
+ "defender": 0
+ }
+ ]
+ },
+ {
+ "test_id": "wos444_gordon_s22_all_enemy_damage_dealt_control_nc",
+ "description": "WOS-444 exact no-hero control for Gordon S2/2 all-enemy damage-dealt-down bucket probe. WIP attacks 2700 each T6 mixed; minxxx defends 2560 T6 lancer. Same accounts, roles, troop counts, and report path as the paired hero fixture.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 2700,
+ "lancer_t6": 2700,
+ "marksman_t6": 2700
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "lancer_t6": 2560
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 7656,
+ "defender": 0
+ },
+ {
+ "attacker": 7656,
+ "defender": 0
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos444_gordon_s22_all_enemy_damage_dealt_hero_nc.json
===================================================================
--- testcases/emulator_verified/wos444_gordon_s22_all_enemy_damage_dealt_hero_nc.json prev run
+++ testcases/emulator_verified/wos444_gordon_s22_all_enemy_damage_dealt_hero_nc.json this run
@@ -0,0 +1,101 @@
+[
+ {
+ "test_id": "wos444_gordon_s22_all_enemy_damage_dealt_hero_nc",
+ "description": "WOS-444 Gordon S2/2 all-enemy damage-dealt-down bucket probe. WIP attacks 2700 each T6 mixed; minxxx defends Gordon+Sergey+Lynn with 2560 T6 lancer. Candidate signed remaining scores: damage.down +558, attack.down +593, lethality.down -143.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 2700,
+ "lancer_t6": 2700,
+ "marksman_t6": 2700
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {
+ "Sergey": {
+ "skill_1": 4,
+ "skill_2": 4
+ },
+ "Gordon": {
+ "skill_1": 2,
+ "skill_2": 2,
+ "skill_3": 1
+ },
+ "Lynn": {
+ "skill_1": 3,
+ "skill_2": 3,
+ "skill_3": 3
+ }
+ },
+ "troops": {
+ "lancer_t6": 2560
+ },
+ "stats": {
+ "inf": {
+ "attack": 389.8,
+ "defense": 378.5,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 485.5,
+ "defense": 480.8,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 460.2,
+ "defense": 457.2,
+ "lethality": 275.7,
+ "health": 266.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 5274,
+ "defender": 0
+ },
+ {
+ "attacker": 4736,
+ "defender": 0
+ },
+ {
+ "attacker": 5021,
+ "defender": 0
+ },
+ {
+ "attacker": 5290,
+ "defender": 0
+ },
+ {
+ "attacker": 5006,
+ "defender": 0
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos451_bradley_s21_lancer_damage_up_bucket.json
===================================================================
--- testcases/emulator_verified/wos451_bradley_s21_lancer_damage_up_bucket.json prev run
+++ testcases/emulator_verified/wos451_bradley_s21_lancer_damage_up_bucket.json this run
@@ -0,0 +1,83 @@
+[
+ {
+ "test_id": "wos451_bradley_s21_lancer_damage_up_bucket",
+ "description": "WOS-451 Bradley S2/1 damage-to-lancer-up bucket discriminator. WIP attacks minxxx with Bradley + Flint + Jessie and 2800 T6 marksmen into 1040 T6 lancers. Candidate buckets: active.hero.damage.up, active.hero.attack.up, active.hero.lethality.up.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {
+ "Flint": {
+ "skill_1": 1,
+ "skill_2": 1,
+ "skill_3": 0
+ },
+ "Jessie": {
+ "skill_1": 1,
+ "skill_2": 1
+ },
+ "Bradley": {
+ "skill_1": 4,
+ "skill_2": 4,
+ "skill_3": 4
+ }
+ },
+ "troops": {
+ "marksman_t6": 2800
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.7,
+ "defense": 287.0,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 279.2,
+ "defense": 277.5,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 608.0,
+ "defense": 605.3,
+ "lethality": 275.0,
+ "health": 234.4
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "lancer_t6": 1040
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 2736,
+ "defender": 0
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos451_bradley_s21_lancer_damage_up_control.json
===================================================================
--- testcases/emulator_verified/wos451_bradley_s21_lancer_damage_up_control.json prev run
+++ testcases/emulator_verified/wos451_bradley_s21_lancer_damage_up_control.json this run
@@ -0,0 +1,68 @@
+[
+ {
+ "test_id": "wos451_bradley_s21_lancer_damage_up_control",
+ "description": "WOS-451 paired no-hero control for Bradley S2/1 damage-to-lancer-up bucket discriminator. WIP attacks minxxx with 2800 T6 marksmen into 1040 T6 lancers, matching the hero fixture accounts, roles, troop counts, and report path.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "marksman_t6": 2800
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "lancer_t6": 1040
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 1504,
+ "defender": 0
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos451_bradley_s22_infantry_damage_up_bucket.json
===================================================================
--- testcases/emulator_verified/wos451_bradley_s22_infantry_damage_up_bucket.json prev run
+++ testcases/emulator_verified/wos451_bradley_s22_infantry_damage_up_bucket.json this run
@@ -0,0 +1,83 @@
+[
+ {
+ "test_id": "wos451_bradley_s22_infantry_damage_up_bucket",
+ "description": "WOS-451 Bradley S2/2 damage-to-infantry-up bucket discriminator. WIP attacks minxxx with Bradley + Flint + Jessie and 2800 T6 marksmen into 1040 T6 infantry. Candidate buckets: active.hero.damage.up, active.hero.attack.up, active.hero.lethality.up.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {
+ "Flint": {
+ "skill_1": 1,
+ "skill_2": 1,
+ "skill_3": 0
+ },
+ "Jessie": {
+ "skill_1": 1,
+ "skill_2": 1
+ },
+ "Bradley": {
+ "skill_1": 4,
+ "skill_2": 4,
+ "skill_3": 4
+ }
+ },
+ "troops": {
+ "marksman_t6": 2800
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.7,
+ "defense": 287.0,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 279.2,
+ "defense": 277.5,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 608.0,
+ "defense": 605.3,
+ "lethality": 275.0,
+ "health": 234.4
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 1040
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 2746,
+ "defender": 0
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos451_bradley_s22_infantry_damage_up_control.json
===================================================================
--- testcases/emulator_verified/wos451_bradley_s22_infantry_damage_up_control.json prev run
+++ testcases/emulator_verified/wos451_bradley_s22_infantry_damage_up_control.json this run
@@ -0,0 +1,68 @@
+[
+ {
+ "test_id": "wos451_bradley_s22_infantry_damage_up_control",
+ "description": "WOS-451 paired no-hero control for Bradley S2/2 damage-to-infantry-up bucket discriminator. WIP attacks minxxx with 2800 T6 marksmen into 1040 T6 infantry, matching the hero fixture accounts, roles, troop counts, and report path.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "marksman_t6": 2800
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 1040
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 1623,
+ "defender": 0
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos451_bradley_s3_all_damage_up_bucket.json
===================================================================
--- testcases/emulator_verified/wos451_bradley_s3_all_damage_up_bucket.json prev run
+++ testcases/emulator_verified/wos451_bradley_s3_all_damage_up_bucket.json this run
@@ -0,0 +1,87 @@
+[
+ {
+ "test_id": "wos451_bradley_s3_all_damage_up_bucket",
+ "description": "WOS-451 Bradley S3 all-troops damage-up bucket confirmation. WIP attacks minxxx with Bradley + Flint + Jessie and 2160 each T6 mixed into 800 each T6 mixed. Candidate buckets: active.hero.damage.up, active.hero.attack.up, active.hero.lethality.up.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {
+ "Flint": {
+ "skill_1": 1,
+ "skill_2": 1,
+ "skill_3": 0
+ },
+ "Jessie": {
+ "skill_1": 1,
+ "skill_2": 1
+ },
+ "Bradley": {
+ "skill_1": 4,
+ "skill_2": 4,
+ "skill_3": 4
+ }
+ },
+ "troops": {
+ "infantry_t6": 2160,
+ "lancer_t6": 2160,
+ "marksman_t6": 2160
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.7,
+ "defense": 287.0,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 279.2,
+ "defense": 277.5,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 608.0,
+ "defense": 605.3,
+ "lethality": 275.0,
+ "health": 234.4
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 800,
+ "lancer_t6": 800,
+ "marksman_t6": 800
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 6151,
+ "defender": 0
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos451_bradley_s3_all_damage_up_control.json
===================================================================
--- testcases/emulator_verified/wos451_bradley_s3_all_damage_up_control.json prev run
+++ testcases/emulator_verified/wos451_bradley_s3_all_damage_up_control.json this run
@@ -0,0 +1,72 @@
+[
+ {
+ "test_id": "wos451_bradley_s3_all_damage_up_control",
+ "description": "WOS-451 paired no-hero control for Bradley S3 all-troops damage-up confirmation. WIP attacks minxxx with 2160 each T6 mixed into 800 each T6 mixed, matching the hero fixture accounts, roles, troop counts, and report path.",
+ "attacker": {
+ "name": "[BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 2160,
+ "lancer_t6": 2160,
+ "marksman_t6": 2160
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 800,
+ "lancer_t6": 800,
+ "marksman_t6": 800
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 4903,
+ "defender": 0
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos451_gordon_s11_lancer_damage_up_bucket.json
===================================================================
--- testcases/emulator_verified/wos451_gordon_s11_lancer_damage_up_bucket.json prev run
+++ testcases/emulator_verified/wos451_gordon_s11_lancer_damage_up_bucket.json this run
@@ -0,0 +1,83 @@
+[
+ {
+ "test_id": "wos451_gordon_s11_lancer_damage_up_bucket",
+ "description": "WOS-451 Gordon S1/1 lancer damage-dealt-up bucket discriminator. minxxx attacks WIP with Gordon + Flint + Jasser and 500 T6 lancers into 2990 T6 infantry. Candidate buckets: active.hero.damage.up, active.hero.attack.up, active.hero.lethality.up.",
+ "attacker": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {
+ "Flint": {
+ "skill_1": 2,
+ "skill_2": 2,
+ "skill_3": 1
+ },
+ "Gordon": {
+ "skill_1": 2,
+ "skill_2": 2,
+ "skill_3": 1
+ },
+ "Jasser": {
+ "skill_1": 4,
+ "skill_2": 4
+ }
+ },
+ "troops": {
+ "lancer_t6": 500
+ },
+ "stats": {
+ "inf": {
+ "attack": 384.7,
+ "defense": 373.5,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 485.5,
+ "defense": 480.8,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 351.0,
+ "defense": 348.0,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 2990
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 0,
+ "defender": 1517
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos451_gordon_s11_lancer_damage_up_control.json
===================================================================
--- testcases/emulator_verified/wos451_gordon_s11_lancer_damage_up_control.json prev run
+++ testcases/emulator_verified/wos451_gordon_s11_lancer_damage_up_control.json this run
@@ -0,0 +1,68 @@
+[
+ {
+ "test_id": "wos451_gordon_s11_lancer_damage_up_control",
+ "description": "WOS-451 paired no-hero control for Gordon S1/1 lancer damage-dealt-up bucket discriminator. minxxx attacks WIP with 500 T6 lancers into 2990 T6 infantry, matching the hero fixture accounts, roles, troop counts, and report path.",
+ "attacker": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "lancer_t6": 500
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 2990
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 0,
+ "defender": 2739
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos451_gordon_s21_lancer_damage_up_bucket.json
===================================================================
--- testcases/emulator_verified/wos451_gordon_s21_lancer_damage_up_bucket.json prev run
+++ testcases/emulator_verified/wos451_gordon_s21_lancer_damage_up_bucket.json this run
@@ -0,0 +1,83 @@
+[
+ {
+ "test_id": "wos451_gordon_s21_lancer_damage_up_bucket",
+ "description": "WOS-451 Gordon S2/1 lancer damage-dealt-up bucket discriminator. minxxx attacks WIP with Gordon + Flint + Jasser and 360 T6 lancers into 2100 T6 infantry. Candidate buckets: active.hero.damage.up, active.hero.attack.up, active.hero.lethality.up.",
+ "attacker": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {
+ "Flint": {
+ "skill_1": 2,
+ "skill_2": 2,
+ "skill_3": 1
+ },
+ "Gordon": {
+ "skill_1": 2,
+ "skill_2": 2,
+ "skill_3": 1
+ },
+ "Jasser": {
+ "skill_1": 4,
+ "skill_2": 4
+ }
+ },
+ "troops": {
+ "lancer_t6": 360
+ },
+ "stats": {
+ "inf": {
+ "attack": 384.7,
+ "defense": 373.5,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 485.5,
+ "defense": 480.8,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 351.0,
+ "defense": 348.0,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 2100
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 0,
+ "defender": 1017
+ }
+ ]
+ }
+]
\ No newline at end of file
Index: testcases/emulator_verified/wos451_gordon_s21_lancer_damage_up_control.json
===================================================================
--- testcases/emulator_verified/wos451_gordon_s21_lancer_damage_up_control.json prev run
+++ testcases/emulator_verified/wos451_gordon_s21_lancer_damage_up_control.json this run
@@ -0,0 +1,68 @@
+[
+ {
+ "test_id": "wos451_gordon_s21_lancer_damage_up_control",
+ "description": "WOS-451 paired no-hero control for Gordon S2/1 lancer damage-dealt-up bucket discriminator. minxxx attacks WIP with 360 T6 lancers into 2100 T6 infantry, matching the hero fixture accounts, roles, troop counts, and report path.",
+ "attacker": {
+ "name": "[ARK]Piddlyminxx",
+ "heroes": {},
+ "troops": {
+ "lancer_t6": 360
+ },
+ "stats": {
+ "inf": {
+ "attack": 286.3,
+ "defense": 275.1,
+ "lethality": 215.3,
+ "health": 216.5
+ },
+ "lanc": {
+ "attack": 278.8,
+ "defense": 274.1,
+ "lethality": 199.7,
+ "health": 201.0
+ },
+ "mark": {
+ "attack": 284.6,
+ "defense": 281.6,
+ "lethality": 221.8,
+ "health": 216.9
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "defender": {
+ "name": "BBQ]XxWIPxX",
+ "heroes": {},
+ "troops": {
+ "infantry_t6": 2100
+ },
+ "stats": {
+ "inf": {
+ "attack": 221.4,
+ "defense": 221.7,
+ "lethality": 147.3,
+ "health": 155.7
+ },
+ "lanc": {
+ "attack": 194.7,
+ "defense": 193.0,
+ "lethality": 157.3,
+ "health": 148.4
+ },
+ "mark": {
+ "attack": 194.7,
+ "defense": 192.0,
+ "lethality": 148.6,
+ "health": 149.5
+ }
+ },
+ "joiner_heroes": {}
+ },
+ "game_report_result": [
+ {
+ "attacker": 0,
+ "defender": 1917
+ }
+ ]
+ }
+]
\ No newline at end of file
Show raw per-run patches
Run A dirty state patch
diff --git a/simulator/config/hero_definitions/Ahmose.json b/simulator/config/hero_definitions/Ahmose.json
--- a/simulator/config/hero_definitions/Ahmose.json
+++ b/simulator/config/hero_definitions/Ahmose.json
@@ -24,7 +24,7 @@
}
},
"ViperFormation/2": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
10,
15,
@@ -46,7 +46,7 @@
"same_effect_stacking": "max"
},
"ViperFormation/3": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
10,
25,
@@ -75,7 +75,7 @@
},
"effects": {
"PrayerOfFlame/1": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
20,
40,
@@ -99,7 +99,7 @@
},
"effects": {
"BladeOfLight/1": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
12,
24,
@@ -118,7 +118,7 @@
}
},
"BladeOfLight/2": {
- "type": "active.hero.defense.down",
+ "type": "active.hero.damageTaken.up",
"value": [
5,
10,
@@ -131,8 +131,7 @@
},
"duration": {
"type": "turn",
- "value": 1,
- "delay": 1
+ "value": 1
},
"same_effect_stacking": "add"
}
diff --git a/simulator/config/hero_definitions/Alonso.json b/simulator/config/hero_definitions/Alonso.json
--- a/simulator/config/hero_definitions/Alonso.json
+++ b/simulator/config/hero_definitions/Alonso.json
@@ -51,7 +51,7 @@
},
"effects": {
"IronStrength/1": {
- "type": "active.hero.lethality.down",
+ "type": "active.hero.damage.down",
"value": [
10,
20,
diff --git a/simulator/config/hero_definitions/Bahiti.json b/simulator/config/hero_definitions/Bahiti.json
--- a/simulator/config/hero_definitions/Bahiti.json
+++ b/simulator/config/hero_definitions/Bahiti.json
@@ -10,7 +10,7 @@
},
"effects": {
"SixthSense/1": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
4,
8,
@@ -35,7 +35,7 @@
},
"effects": {
"Fluorescence/1": {
- "type": "extra_skill_attack",
+ "type": "active.hero.lethality.up",
"value": [
10,
20,
@@ -44,19 +44,12 @@
50
],
"units": {
- "applies_to": "trigger.source",
- "applies_vs": "trigger.target"
+ "applies_to": "trigger.source"
},
"duration": {
"type": "attack",
"value": 1
- },
- "trigger_damage_jobs": [
- {
- "source": "use.source",
- "target": "effect.applies_vs"
- }
- ]
+ }
}
}
}
diff --git a/simulator/config/hero_definitions/Bradley.json b/simulator/config/hero_definitions/Bradley.json
--- a/simulator/config/hero_definitions/Bradley.json
+++ b/simulator/config/hero_definitions/Bradley.json
@@ -67,7 +67,7 @@
},
"effects": {
"TacticalAssistance/1": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
6,
12,
diff --git a/simulator/config/hero_definitions/Edith.json b/simulator/config/hero_definitions/Edith.json
--- a/simulator/config/hero_definitions/Edith.json
+++ b/simulator/config/hero_definitions/Edith.json
@@ -10,7 +10,7 @@
},
"effects": {
"StrategicBalance/1": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
4,
8,
@@ -25,7 +25,7 @@
}
},
"StrategicBalance/2": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
4,
8,
@@ -49,7 +49,7 @@
},
"effects": {
"Ironclad/1": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
4,
8,
diff --git a/simulator/config/hero_definitions/Flint.json b/simulator/config/hero_definitions/Flint.json
--- a/simulator/config/hero_definitions/Flint.json
+++ b/simulator/config/hero_definitions/Flint.json
@@ -10,7 +10,7 @@
},
"effects": {
"Pyromaniac/1": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
20,
40,
diff --git a/simulator/config/hero_definitions/Gordon.json b/simulator/config/hero_definitions/Gordon.json
--- a/simulator/config/hero_definitions/Gordon.json
+++ b/simulator/config/hero_definitions/Gordon.json
@@ -12,7 +12,7 @@
},
"effects": {
"VenomInfusion/1": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
20,
40,
@@ -32,7 +32,7 @@
}
},
"VenomInfusion/2": {
- "type": "active.hero.lethality.down",
+ "type": "active.hero.damage.down",
"value": [
4,
8,
@@ -59,7 +59,7 @@
},
"effects": {
"ChemicalTerror/1": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
30,
60,
@@ -80,7 +80,7 @@
"same_effect_stacking": "max"
},
"ChemicalTerror/2": {
- "type": "active.hero.lethality.down",
+ "type": "active.hero.damage.down",
"value": [
6,
12,
@@ -108,7 +108,7 @@
},
"effects": {
"ToxicRelease/1": {
- "type": "active.hero.defense.down",
+ "type": "active.hero.damageTaken.up",
"value": [
6,
12,
@@ -126,7 +126,7 @@
"same_effect_stacking": "max"
},
"ToxicRelease/2": {
- "type": "active.hero.lethality.down",
+ "type": "active.hero.damage.down",
"value": [
6,
12,
diff --git a/simulator/config/hero_definitions/Greg.json b/simulator/config/hero_definitions/Greg.json
--- a/simulator/config/hero_definitions/Greg.json
+++ b/simulator/config/hero_definitions/Greg.json
@@ -17,7 +17,7 @@
},
"effects": {
"SwordOfJustice/1": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
8,
16,
@@ -51,7 +51,7 @@
},
"effects": {
"DeterrenceOfLaw/1": {
- "type": "active.hero.lethality.down",
+ "type": "active.hero.damage.down",
"value": [
10,
20,
diff --git a/simulator/config/hero_definitions/Gwen.json b/simulator/config/hero_definitions/Gwen.json
--- a/simulator/config/hero_definitions/Gwen.json
+++ b/simulator/config/hero_definitions/Gwen.json
@@ -10,7 +10,7 @@
},
"effects": {
"EagleVision/1": {
- "type": "active.hero.defense.down",
+ "type": "active.hero.damageTaken.up",
"value": [
5,
10,
diff --git a/simulator/config/hero_definitions/Hector.json b/simulator/config/hero_definitions/Hector.json
--- a/simulator/config/hero_definitions/Hector.json
+++ b/simulator/config/hero_definitions/Hector.json
@@ -17,7 +17,7 @@
},
"effects": {
"SurvivalInstincts/1": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
10,
20,
@@ -40,7 +40,7 @@
},
"effects": {
"Rampant/1": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
100,
125,
diff --git a/simulator/config/hero_definitions/Jeronimo.json b/simulator/config/hero_definitions/Jeronimo.json
--- a/simulator/config/hero_definitions/Jeronimo.json
+++ b/simulator/config/hero_definitions/Jeronimo.json
@@ -47,7 +47,7 @@
},
"effects": {
"EXpertSwordsmanship/1": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
6,
12,
diff --git a/simulator/config/hero_definitions/Jessie.json b/simulator/config/hero_definitions/Jessie.json
--- a/simulator/config/hero_definitions/Jessie.json
+++ b/simulator/config/hero_definitions/Jessie.json
@@ -28,7 +28,7 @@
},
"effects": {
"Bulwarks/1": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
4,
8,
diff --git a/simulator/config/hero_definitions/Logan.json b/simulator/config/hero_definitions/Logan.json
--- a/simulator/config/hero_definitions/Logan.json
+++ b/simulator/config/hero_definitions/Logan.json
@@ -31,7 +31,7 @@
},
"effects": {
"LionIntimidation/1": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
4,
8,
diff --git a/simulator/config/hero_definitions/Lynn.json b/simulator/config/hero_definitions/Lynn.json
--- a/simulator/config/hero_definitions/Lynn.json
+++ b/simulator/config/hero_definitions/Lynn.json
@@ -40,7 +40,7 @@
},
"effects": {
"MelancholicBallad/1": {
- "type": "active.hero.lethality.down",
+ "type": "active.hero.damage.down",
"value": [
4,
8,
diff --git a/simulator/config/hero_definitions/Mia.json b/simulator/config/hero_definitions/Mia.json
--- a/simulator/config/hero_definitions/Mia.json
+++ b/simulator/config/hero_definitions/Mia.json
@@ -17,7 +17,7 @@
},
"effects": {
"BadLuckStreak/1": {
- "type": "active.hero.defense.down",
+ "type": "active.hero.damageTaken.up",
"value": [
10,
20,
@@ -90,7 +90,7 @@
},
"effects": {
"RitualDeciphering/1": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
10,
20,
diff --git a/simulator/config/hero_definitions/Molly.json b/simulator/config/hero_definitions/Molly.json
--- a/simulator/config/hero_definitions/Molly.json
+++ b/simulator/config/hero_definitions/Molly.json
@@ -17,7 +17,7 @@
},
"effects": {
"CallingOfTheStorm/1": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
10,
20,
diff --git a/simulator/config/hero_definitions/Natalia.json b/simulator/config/hero_definitions/Natalia.json
--- a/simulator/config/hero_definitions/Natalia.json
+++ b/simulator/config/hero_definitions/Natalia.json
@@ -17,7 +17,7 @@
},
"effects": {
"WildlingRoar/1": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
10,
20,
diff --git a/simulator/config/hero_definitions/Norah.json b/simulator/config/hero_definitions/Norah.json
--- a/simulator/config/hero_definitions/Norah.json
+++ b/simulator/config/hero_definitions/Norah.json
@@ -26,7 +26,7 @@
}
},
"CombinedArms/2": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
3,
6,
@@ -96,7 +96,7 @@
},
"effects": {
"Momentum/1": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
5,
10,
diff --git a/simulator/config/hero_definitions/Philly.json b/simulator/config/hero_definitions/Philly.json
--- a/simulator/config/hero_definitions/Philly.json
+++ b/simulator/config/hero_definitions/Philly.json
@@ -84,7 +84,7 @@
},
"effects": {
"NumbingSpores/1": {
- "type": "active.hero.defense.up",
+ "type": "active.hero.damageTaken.down",
"value": [
10,
20,
diff --git a/simulator/config/hero_definitions/WuMing.json b/simulator/config/hero_definitions/WuMing.json
--- a/simulator/config/hero_definitions/WuMing.json
+++ b/simulator/config/hero_definitions/WuMing.json
@@ -10,7 +10,7 @@
},
"effects": {
"ShadowsEvasion/1": {
- "type": "type.normal.defense.up",
+ "type": "type.normal.damageTaken.down",
"value": [
5,
10,
@@ -25,7 +25,7 @@
}
},
"ShadowsEvasion/2": {
- "type": "type.skill.defense.up",
+ "type": "type.skill.damageTaken.down",
"value": [
6,
12,
@@ -48,7 +48,7 @@
},
"effects": {
"CrescentUplift/1": {
- "type": "active.hero.lethality.up",
+ "type": "active.hero.damage.up",
"value": [
4,
8,
diff --git a/simulator/src/classifierDamage.test.ts b/simulator/src/classifierDamage.test.ts
--- a/simulator/src/classifierDamage.test.ts
+++ b/simulator/src/classifierDamage.test.ts
@@ -145,10 +145,10 @@
["active.hero.damageTaken.down", "active.hero.damageTaken.down"],
["active.troop.damageTaken.up", "active.troop.damageTaken.up"],
["active.troop.damageTaken.down", "active.troop.damageTaken.down"],
- ["type.normal.defense.up", "type.normal.defense.up"],
- ["type.normal.defense.down", "type.normal.defense.down"],
- ["type.skill.defense.up", "type.skill.defense.up"],
- ["type.skill.defense.down", "type.skill.defense.down"]
+ ["type.normal.damageTaken.up", "type.normal.damageTaken.up"],
+ ["type.normal.damageTaken.down", "type.normal.damageTaken.down"],
+ ["type.skill.damageTaken.up", "type.skill.damageTaken.up"],
+ ["type.skill.damageTaken.down", "type.skill.damageTaken.down"]
]);
const defenderEffectTypes = new Set([
"active.hero.defense.up",
@@ -159,10 +159,10 @@
"active.hero.damageTaken.down",
"active.troop.damageTaken.up",
"active.troop.damageTaken.down",
- "type.normal.defense.up",
- "type.normal.defense.down",
- "type.skill.defense.up",
- "type.skill.defense.down"
+ "type.normal.damageTaken.up",
+ "type.normal.damageTaken.down",
+ "type.skill.damageTaken.up",
+ "type.skill.damageTaken.down"
]);
for (const [type, expectedBucket] of expected) {
diff --git a/simulator/src/damageBuckets.ts b/simulator/src/damageBuckets.ts
--- a/simulator/src/damageBuckets.ts
+++ b/simulator/src/damageBuckets.ts
@@ -120,9 +120,9 @@
up: { role: "attacker", valueType: "pct", update: "add_pct_factor", placement: "numerator", appliesTo: "normal" },
down: { role: "attacker", valueType: "pct", update: "add_pct_factor", placement: "denominator", appliesTo: "normal" }
},
- defense: {
- up: { role: "defender", valueType: "pct", update: "add_pct_factor", placement: "denominator", appliesTo: "normal" },
- down: { role: "defender", valueType: "pct", update: "add_pct_factor", placement: "numerator", appliesTo: "normal" }
+ damageTaken: {
+ up: { role: "defender", valueType: "pct", update: "add_pct_factor", placement: "numerator", appliesTo: "normal" },
+ down: { role: "defender", valueType: "pct", update: "add_pct_factor", placement: "denominator", appliesTo: "normal" }
}
},
skill: {
@@ -130,9 +130,9 @@
up: { role: "attacker", valueType: "pct", update: "add_pct_factor", placement: "numerator", appliesTo: "skill" },
down: { role: "attacker", valueType: "pct", update: "add_pct_factor", placement: "denominator", appliesTo: "skill" }
},
- defense: {
- up: { role: "defender", valueType: "pct", update: "add_pct_factor", placement: "denominator", appliesTo: "skill" },
- down: { role: "defender", valueType: "pct", update: "add_pct_factor", placement: "numerator", appliesTo: "skill" }
+ damageTaken: {
+ up: { role: "defender", valueType: "pct", update: "add_pct_factor", placement: "numerator", appliesTo: "skill" },
+ down: { role: "defender", valueType: "pct", update: "add_pct_factor", placement: "denominator", appliesTo: "skill" }
}
}
},
Run B dirty state patch
diff --git a/simulator/config/hero_definitions/Gwen.json b/simulator/config/hero_definitions/Gwen.json
--- a/simulator/config/hero_definitions/Gwen.json
+++ b/simulator/config/hero_definitions/Gwen.json
@@ -6,7 +6,8 @@
"EagleVision": {
"description": "Increasing target's damage taken by X%",
"trigger": {
- "type": "attack"
+ "type": "attack",
+ "every": 2
},
"effects": {
"EagleVision/1": {
@@ -19,7 +20,7 @@
25
],
"units": {
- "applies_to": "target"
+ "applies_to": "enemy"
},
"duration": {
"type": "attack",
@@ -29,10 +30,10 @@
}
},
"AirDominance": {
- "description": "Grants all troops' attack X% extra damage after every 5 attacks and causes the target to receive X% extra damage for its next attack received",
+ "description": "Grants all troops' attack X% extra damage after every 4 attacks and causes the target to receive X% extra damage for its next attack received",
"trigger": {
"type": "attack",
- "every": 5
+ "every": 4
},
"effects": {
"AirDominance/1": {
@@ -60,7 +61,7 @@
]
},
"AirDominance/2": {
- "type": "active.hero.defense.down",
+ "type": "active.hero.damageTaken.up",
"value": [
5,
7.5,
@@ -99,8 +100,7 @@
"units": {
"applies_to": [
"marksman"
- ],
- "applies_vs": "any"
+ ]
},
"duration": {
"type": "attack",
diff --git a/simulator/config/troop_stats.json b/simulator/config/troop_stats.json
--- a/simulator/config/troop_stats.json
+++ b/simulator/config/troop_stats.json
@@ -875,6 +875,30 @@
"Health": 2073
}
},
+ "infantry_t10_fc9": {
+ "id": "infantry_t10_fc9",
+ "type": "infantry",
+ "tier": 10,
+ "fc": 9,
+ "stats": {
+ "Attack": 726,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 2178
+ }
+ },
+ "infantry_t10_fc10": {
+ "id": "infantry_t10_fc10",
+ "type": "infantry",
+ "tier": 10,
+ "fc": 10,
+ "stats": {
+ "Attack": 762,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 2286
+ }
+ },
"infantry_t11": {
"id": "infantry_t11",
"type": "infantry",
@@ -935,6 +959,30 @@
"Health": 2285
}
},
+ "infantry_t11_fc9": {
+ "id": "infantry_t11_fc9",
+ "type": "infantry",
+ "tier": 11,
+ "fc": 9,
+ "stats": {
+ "Attack": 800,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 2400
+ }
+ },
+ "infantry_t11_fc10": {
+ "id": "infantry_t11_fc10",
+ "type": "infantry",
+ "tier": 11,
+ "fc": 10,
+ "stats": {
+ "Attack": 840,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 2520
+ }
+ },
"lancer_t10_fc6": {
"id": "lancer_t10_fc6",
"type": "lancer",
@@ -971,6 +1019,30 @@
"Health": 691
}
},
+ "lancer_t10_fc9": {
+ "id": "lancer_t10_fc9",
+ "type": "lancer",
+ "tier": 10,
+ "fc": 9,
+ "stats": {
+ "Attack": 2178,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 726
+ }
+ },
+ "lancer_t10_fc10": {
+ "id": "lancer_t10_fc10",
+ "type": "lancer",
+ "tier": 10,
+ "fc": 10,
+ "stats": {
+ "Attack": 2286,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 762
+ }
+ },
"lancer_t11_fc6": {
"id": "lancer_t11_fc6",
"type": "lancer",
@@ -1007,6 +1079,30 @@
"Health": 762
}
},
+ "lancer_t11_fc9": {
+ "id": "lancer_t11_fc9",
+ "type": "lancer",
+ "tier": 11,
+ "fc": 9,
+ "stats": {
+ "Attack": 2400,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 800
+ }
+ },
+ "lancer_t11_fc10": {
+ "id": "lancer_t11_fc10",
+ "type": "lancer",
+ "tier": 11,
+ "fc": 10,
+ "stats": {
+ "Attack": 2520,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 840
+ }
+ },
"marksman_t10_fc6": {
"id": "marksman_t10_fc6",
"type": "marksman",
@@ -1043,6 +1139,30 @@
"Health": 519
}
},
+ "marksman_t10_fc9": {
+ "id": "marksman_t10_fc9",
+ "type": "marksman",
+ "tier": 10,
+ "fc": 9,
+ "stats": {
+ "Attack": 2904,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 545
+ }
+ },
+ "marksman_t10_fc10": {
+ "id": "marksman_t10_fc10",
+ "type": "marksman",
+ "tier": 10,
+ "fc": 10,
+ "stats": {
+ "Attack": 3048,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 572
+ }
+ },
"marksman_t11_fc6": {
"id": "marksman_t11_fc6",
"type": "marksman",
@@ -1079,6 +1199,30 @@
"Health": 572
}
},
+ "marksman_t11_fc9": {
+ "id": "marksman_t11_fc9",
+ "type": "marksman",
+ "tier": 11,
+ "fc": 9,
+ "stats": {
+ "Attack": 3200,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 600
+ }
+ },
+ "marksman_t11_fc10": {
+ "id": "marksman_t11_fc10",
+ "type": "marksman",
+ "tier": 11,
+ "fc": 10,
+ "stats": {
+ "Attack": 3360,
+ "Defense": 10,
+ "Lethality": 10,
+ "Health": 630
+ }
+ },
"lancer_t1": {
"id": "lancer_t1",
"type": "lancers",