Add berserk weapon special abilities tests (#8973)
Changes: * CHECK_STRIKES macro now takes a comma-delimited list of strike counts for when units have a different number of strikes for different weapons, and updates the existing usage in the attacks tests * Fixed a typo in the attacks_zero test * Adds tests for berserk as a weapon special ability. Berserk's handling differs from attacks as a weapon special ability: * A value less than 1 is treated as effectively infinite rounds of combat (undocumented) * The cumulative attribute is handled differently - in some cases it sums the values instead of using the highest single value whereas for attacks it always uses the highest single value Also now exclude data/tests/ from scons pot-update since it was hitting the argument limit for number of arguments to a script.
This commit is contained in:
parent
1ef24e461f
commit
a2993884cd
77 changed files with 1327 additions and 55 deletions
|
@ -79,6 +79,7 @@
|
|||
{test/scenarios/wml_tests/UnitsWML}
|
||||
{test/scenarios/wml_tests/UnitsWML/AbilitiesWML}
|
||||
{test/scenarios/wml_tests/UnitsWML/AbilitiesWML/attacks}
|
||||
{test/scenarios/wml_tests/UnitsWML/AbilitiesWML/berserk}
|
||||
{test/scenarios/wml_tests/UnitsWML/AbilitiesWML/heals}
|
||||
{test/scenarios/wml_tests/UnitsWML/AbilitiesWML/hides}
|
||||
{test/scenarios/wml_tests/UnitsWML/AbilitiesWML/illuminates}
|
||||
|
|
|
@ -159,8 +159,9 @@ bob#endarg
|
|||
#enddef
|
||||
|
||||
# checks the number of strikes of all weapons a unit has
|
||||
# they are expected to have the same number of strikes on all weapons
|
||||
#define CHECK_STRIKES WEAPONS STRIKES RESULT
|
||||
# STRIKES is a comma-delimited list containing the number of strikes each weapon the unit has is expected to have
|
||||
# The implementation currently only supports one CHECK_STRIKES per unique ID1 per unit test
|
||||
#define CHECK_STRIKES STRIKES RESULT
|
||||
|
||||
#arg ID1
|
||||
alice#endarg
|
||||
|
@ -174,6 +175,27 @@ numerical_equals#endarg
|
|||
[event]
|
||||
name = start
|
||||
|
||||
# allow specifying a different number of strikes per weapon
|
||||
[set_variables]
|
||||
name=strikes
|
||||
[split]
|
||||
list={STRIKES}
|
||||
key=value
|
||||
separator=","
|
||||
remove_empty=yes
|
||||
[/split]
|
||||
[/set_variables]
|
||||
|
||||
[store_unit]
|
||||
[filter]
|
||||
id={ID1}
|
||||
[/filter]
|
||||
variable={ID1}
|
||||
[/store_unit]
|
||||
|
||||
{ASSERT ({VARIABLE_CONDITIONAL {ID1}.attack.length numerical_equals $strikes.length})}
|
||||
{CLEAR_VARIABLE {ID1}}
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
id={ID1},{ID2}
|
||||
|
@ -198,7 +220,7 @@ numerical_equals#endarg
|
|||
variable=i
|
||||
start=0
|
||||
step=1
|
||||
end="$({WEAPONS}-1)"
|
||||
end="$($strikes.length-1)"
|
||||
[do]
|
||||
[test_do_attack_by_id]
|
||||
attacker={ID1}
|
||||
|
@ -240,10 +262,10 @@ numerical_equals#endarg
|
|||
id={ID1}
|
||||
[/filter]
|
||||
|
||||
{ASSERT {VARIABLE_CONDITIONAL {ID1}_{ID2}_strikes {COMPARE} {STRIKES}}}
|
||||
{ASSERT {VARIABLE_CONDITIONAL {ID1}_{ID2}_strikes {COMPARE} $strikes[$i].value}}
|
||||
{VARIABLE_OP {ID1}_{ID2}_count add 1}
|
||||
[if]
|
||||
{VARIABLE_CONDITIONAL {ID1}_{ID2}_count numerical_equals {WEAPONS}}
|
||||
{VARIABLE_CONDITIONAL {ID1}_{ID2}_count numerical_equals $strikes.length}
|
||||
[then]
|
||||
{RESULT}
|
||||
[/then]
|
||||
|
|
29
data/test/scenarios/test_tests/test_check_strikes.cfg
Normal file
29
data/test/scenarios/test_tests/test_check_strikes.cfg
Normal file
|
@ -0,0 +1,29 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: CHECK_STRIKES
|
||||
##
|
||||
# Actions:
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The Elvish Archer's melee attack strikes twice and its ranged attack strikes 4 times
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "check_strikes_once" (
|
||||
{CHECK_STRIKES "2,4" ({SUCCEED})}
|
||||
)}
|
||||
|
||||
#####
|
||||
# API(s) being tested: CHECK_STRIKES
|
||||
##
|
||||
# Actions:
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons a second time
|
||||
##
|
||||
# Expected end state:
|
||||
# The test fails since the variable tracking the strike count is not cleared
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "check_strikes_twice_fail" (
|
||||
{CHECK_STRIKES "2,4" ()}
|
||||
{CHECK_STRIKES "2,4" ({SUCCEED})}
|
||||
)}
|
|
@ -26,5 +26,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 6 ({SUCCEED})}
|
||||
{CHECK_STRIKES "6,6" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -27,5 +27,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 3 ({SUCCEED})}
|
||||
{CHECK_STRIKES "3,3" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -27,5 +27,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 12 ({SUCCEED})}
|
||||
{CHECK_STRIKES "12,12" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -27,5 +27,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 3 ({SUCCEED})}
|
||||
{CHECK_STRIKES "3,3" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -34,6 +34,6 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 5 () ID1=bob ID2=charlie}
|
||||
{CHECK_STRIKES 2 5 ({SUCCEED}) ID1=alice ID2=dave COMPARE=numerical_not_equals}
|
||||
{CHECK_STRIKES "5,5" () ID1=bob ID2=charlie}
|
||||
{CHECK_STRIKES "5,5" ({SUCCEED}) ID1=alice ID2=dave COMPARE=numerical_not_equals}
|
||||
) SIDE_LEADER="Elvish Archer"}
|
||||
|
|
|
@ -29,6 +29,6 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 5 () COMPARE=numerical_not_equals}
|
||||
{CHECK_STRIKES 2 5 ({SUCCEED}) ID1=bob ID2=alice}
|
||||
{CHECK_STRIKES "5,5" () COMPARE=numerical_not_equals}
|
||||
{CHECK_STRIKES "5,5" ({SUCCEED}) ID1=bob ID2=alice}
|
||||
) SIDE2_LEADER="Elvish Archer"}
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 5 () ID1=alice ID2=charlie}
|
||||
{CHECK_STRIKES 2 5 () ID1=bob ID2=dave}
|
||||
{CHECK_STRIKES 2 5 ({SUCCEED}) ID1=dave ID2=alice}
|
||||
{CHECK_STRIKES "5,5" () ID1=alice ID2=charlie}
|
||||
{CHECK_STRIKES "5,5" () ID1=bob ID2=dave}
|
||||
{CHECK_STRIKES "5,5" ({SUCCEED}) ID1=dave ID2=alice}
|
||||
) SIDE_LEADER="Elvish Archer"}
|
||||
|
|
|
@ -26,5 +26,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 5 ({SUCCEED}) COMPARE=numerical_not_equals}
|
||||
{CHECK_STRIKES "5,5" ({SUCCEED}) COMPARE=numerical_not_equals}
|
||||
)}
|
||||
|
|
|
@ -26,5 +26,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 3 ({SUCCEED})}
|
||||
{CHECK_STRIKES "3,3" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -27,6 +27,6 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 3 ({SUCCEED})}
|
||||
{CHECK_STRIKES "3,3" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
||||
|
|
|
@ -27,6 +27,6 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 3 ({SUCCEED})}
|
||||
{CHECK_STRIKES "3,3" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
||||
|
|
|
@ -28,6 +28,6 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 3 ({SUCCEED})}
|
||||
{CHECK_STRIKES "3,3" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
||||
|
|
|
@ -26,5 +26,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 8 ({SUCCEED})}
|
||||
{CHECK_STRIKES "8,8" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -27,5 +27,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 6 ({SUCCEED})}
|
||||
{CHECK_STRIKES "6,6" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -27,6 +27,6 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 4 ({SUCCEED})}
|
||||
{CHECK_STRIKES "4,4" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
||||
|
|
|
@ -27,5 +27,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 -10 ({SUCCEED}) COMPARE=numerical_not_equals}
|
||||
{CHECK_STRIKES "-10,-10" ({SUCCEED}) COMPARE=numerical_not_equals}
|
||||
)}
|
||||
|
|
|
@ -34,5 +34,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 5 ({SUCCEED}) COMPARE=numerical_not_equals}
|
||||
{CHECK_STRIKES "5,5" ({SUCCEED}) COMPARE=numerical_not_equals}
|
||||
)}
|
||||
|
|
|
@ -29,5 +29,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 5 ({SUCCEED})}
|
||||
{CHECK_STRIKES "5,5" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -29,5 +29,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 7 ({SUCCEED})}
|
||||
{CHECK_STRIKES "7,7" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -29,5 +29,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 5 ({SUCCEED})}
|
||||
{CHECK_STRIKES "5,5" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -29,5 +29,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 7 ({SUCCEED})}
|
||||
{CHECK_STRIKES "7,7" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -29,5 +29,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 7 ({SUCCEED})}
|
||||
{CHECK_STRIKES "7,7" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -26,5 +26,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 1 ({SUCCEED})}
|
||||
{CHECK_STRIKES "1,1" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -27,5 +27,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 1 ({SUCCEED})}
|
||||
{CHECK_STRIKES "1,1" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -27,5 +27,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 4 ({SUCCEED})}
|
||||
{CHECK_STRIKES "4,4" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -27,5 +27,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 6 ({SUCCEED})}
|
||||
{CHECK_STRIKES "6,6" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -27,5 +27,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 6 ({SUCCEED})}
|
||||
{CHECK_STRIKES "6,6" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -27,5 +27,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 6 ({SUCCEED})}
|
||||
{CHECK_STRIKES "6,6" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -27,5 +27,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 6 ({SUCCEED})}
|
||||
{CHECK_STRIKES "6,6" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -27,5 +27,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 6 ({SUCCEED})}
|
||||
{CHECK_STRIKES "6,6" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -27,5 +27,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 6 ({SUCCEED})}
|
||||
{CHECK_STRIKES "6,6" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -26,5 +26,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 7 ({SUCCEED})}
|
||||
{CHECK_STRIKES "7,7" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -26,5 +26,5 @@
|
|||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 7 ({SUCCEED})}
|
||||
{CHECK_STRIKES "7,7" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader has 2 weapons both of which don't have 0 strikes
|
||||
# The side 1 leader has 2 weapons both of which have 0 strikes
|
||||
# No errors are logged
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "attacks_zero" (
|
||||
|
@ -21,11 +21,11 @@
|
|||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY attacks 0 ()}
|
||||
{TEST_ABILITY attacks 0 () SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES 2 0 ({SUCCEED}) COMPARE=numerical_not_equals}
|
||||
{CHECK_STRIKES "0,0" ({SUCCEED})}
|
||||
)}
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with both the value and add attributes
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# the add attribute is ignored
|
||||
# The side 1 leader's first weapon strikes 10 times (2*5)
|
||||
# The side 1 leader's second weapon strikes 20 times (4*5)
|
||||
#####
|
||||
#ifndef SCHEMA_VALIDATION
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_add" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 5 (add=1) SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "10,20" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
|
@ -0,0 +1,35 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with both the value, add, and divide attributes
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# the add and divide attributes are ignored
|
||||
# The side 1 leader's first weapon strikes 10 times (2*5)
|
||||
# The side 1 leader's second weapon strikes 20 times (4*5)
|
||||
#####
|
||||
#ifndef SCHEMA_VALIDATION
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_add_divide" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 5 (add=1
|
||||
divide=2) SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "10,20" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
|
@ -0,0 +1,35 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with both the value, add, and multiply attributes
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# the add and multiply attributes are ignored
|
||||
# The side 1 leader's first weapon strikes 10 times (2*5)
|
||||
# The side 1 leader's second weapon strikes 20 times (4*5)
|
||||
#####
|
||||
#ifndef SCHEMA_VALIDATION
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_add_multiply" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 5 (add=1
|
||||
multiply=2) SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "10,20" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
|
@ -0,0 +1,35 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with both the value, add, and sub attributes
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# the add and sub attributes are ignored
|
||||
# The side 1 leader's first weapon strikes 10 times (2*5)
|
||||
# The side 1 leader's second weapon strikes 20 times (4*5)
|
||||
#####
|
||||
#ifndef SCHEMA_VALIDATION
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_add_sub" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 5 (add=1
|
||||
sub=2) SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "10,20" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
|
@ -0,0 +1,42 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]affect_allies=
|
||||
##
|
||||
# Actions:
|
||||
# Give the side 1 leader a berserk ability that only affects adjacent allies
|
||||
# Have the side 2 leader attack the side 3 leader with both its weapons
|
||||
# Have the side 1 leader attack the side 4 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader's first weapon strikes 2 times
|
||||
# The side 1 leader's second weapon strikes 4 times
|
||||
# The side 2 leader's first weapon strikes 10 times (2*5)
|
||||
# The side 2 leader's second weapon strikes 20 times (4*5)
|
||||
#####
|
||||
{COMMON_KEEP_A_B_C_D_UNIT_TEST "berserk_affect_allies" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_side]
|
||||
side=1,2
|
||||
team_name=allies
|
||||
[/modify_side]
|
||||
|
||||
{SET_HP VALUE=100}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
side=1
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 5 ([affect_adjacent][/affect_adjacent]) ALLIES=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "10,20" () ID1=bob ID2=charlie}
|
||||
{CHECK_STRIKES "2,4" ({SUCCEED}) ID1=alice ID2=dave}
|
||||
) SIDE_LEADER="Elvish Archer"}
|
|
@ -0,0 +1,37 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]affect_enemies=
|
||||
##
|
||||
# Actions:
|
||||
# Give the side 1 leader a berserk ability that only affects adjacent enemies
|
||||
# Have the side 2 leader attack the side 1 leader with both its weapons
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader's first weapon strikes 10 times (2*5)
|
||||
# The side 1 leader's second weapon strikes 20 times (4*5)
|
||||
# The side 2 leader's first weapon strikes 10 times (2*5)
|
||||
# The side 2 leader's second weapon strikes 20 times (4*5)
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_affect_enemies" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
{SET_HP VALUE=100}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
side=1
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 5 ([affect_adjacent][/affect_adjacent]) ENEMIES=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "10,20" ()}
|
||||
{CHECK_STRIKES "10,20" ({SUCCEED}) ID1=bob ID2=alice}
|
||||
) SIDE2_LEADER="Elvish Archer"}
|
|
@ -0,0 +1,47 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]affect_allies=
|
||||
##
|
||||
# Actions:
|
||||
# Give the side 1 leader a berserk ability with affect_allies, affect_enemies, and affect_self
|
||||
# Make side 1 and side 2 allies
|
||||
# Have the side 1 leader attack the side 3 leader with both its weapons
|
||||
# Have the side 2 leader attack the side 4 leader with both its weapons
|
||||
# Have the side 4 leader attack the side 1 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader's first weapon strikes 10 times (2*5)
|
||||
# The side 1 leader's second weapon strikes 20 times (4*5)
|
||||
# The side 2 leader's first weapon strikes 10 times (2*5)
|
||||
# The side 2 leader's second weapon strikes 20 times (4*5)
|
||||
# The side 4 leader's first weapon strikes 10 times (2*5)
|
||||
# The side 4 leader's second weapon strikes 20 times (4*5)
|
||||
#####
|
||||
{COMMON_KEEP_A_B_C_D_UNIT_TEST "berserk_affect_everybody" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_side]
|
||||
side=1,2
|
||||
team_name=allies
|
||||
[/modify_side]
|
||||
|
||||
{SET_HP VALUE=100}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
side = 1
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 5 ([affect_adjacent][/affect_adjacent]) ENEMIES=yes SELF=yes ALLIES=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "10,20" () ID1=alice ID2=charlie}
|
||||
{CHECK_STRIKES "10,20" () ID1=bob ID2=dave}
|
||||
{CHECK_STRIKES "10,20" ({SUCCEED}) ID1=dave ID2=alice}
|
||||
) SIDE_LEADER="Elvish Archer"}
|
|
@ -0,0 +1,30 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]affect_self=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability that doesn't affect themselves.
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader has 2 weapons and uses them to strike 2 and 4 times respectively
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_affect_self_no" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 5 ()}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "2,4" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,45 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the side 1 leader a berserk ability with a value of 5
|
||||
# Give the side 2 leader a berserk ability with a value of 7
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# 7 rounds of combat happens with the first weapon since the opponent has a berserk with a higher value
|
||||
# 5 rounds of combat happens with the second weapon since the opponent has no ranged attack
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_different_values" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
{SET_HP VALUE=100}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
side=1
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 5 () SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[modify_unit]
|
||||
[filter]
|
||||
side=2
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 7 () SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "14,20" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,34 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with both the value and divide attributes
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# the divide attribute is ignored
|
||||
# The side 1 leader's first weapon strikes 12 times (2*6)
|
||||
# The side 1 leader's second weapon strikes 24 times (4*6)
|
||||
#####
|
||||
#ifndef SCHEMA_VALIDATION
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_divide" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 6 (divide=2) SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "12,24" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
|
@ -0,0 +1,33 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with a value of 3.8.
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader's first weapon strikes 6 times (2*3)
|
||||
# The side 1 leader's second weapon strikes 12 times (4*3)
|
||||
#####
|
||||
#ifndef SCHEMA_VALIDATION
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_high_fraction" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 3.8 () SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "6,12" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
|
@ -0,0 +1,33 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with a value of 3.2.
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader's first weapon strikes 6 times (2*3)
|
||||
# The side 1 leader's second weapon strikes 12 times (4*3)
|
||||
#####
|
||||
#ifndef SCHEMA_VALIDATION
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_low_fraction" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 3.2 () SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "6,12" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
|
@ -0,0 +1,34 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with both the value and max_value attributes
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# max_value does nothing.
|
||||
# The side 1 leader's first weapon strikes 6 times (2*3)
|
||||
# The side 1 leader's second weapon strikes 12 times (4*3)
|
||||
#####
|
||||
#ifndef SCHEMA_VALIDATION
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_max_value" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 3 (max_value=1) SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "6,12" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
|
@ -0,0 +1,34 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with both the value and multiply attributes
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# the multiply attribute is ignored
|
||||
# The side 1 leader's first weapon strikes 8 times (2*4)
|
||||
# The side 1 leader's second weapon strikes 18 times (4*4)
|
||||
#####
|
||||
#ifndef SCHEMA_VALIDATION
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_multiply" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 4 (multiply=2) SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "8,16" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
|
@ -0,0 +1,35 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with both the value, multiply, and divide attributes
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# the multiply and divide attributes are ignored
|
||||
# The side 1 leader's first weapon strikes 8 times (2*4)
|
||||
# The side 1 leader's second weapon strikes 18 times (4*4)
|
||||
#####
|
||||
#ifndef SCHEMA_VALIDATION
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_multiply_divide" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 4 (multiply=3
|
||||
divide=2) SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "8,16" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
|
@ -0,0 +1,33 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with a value of -10.
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The number of strikes is unlimited
|
||||
# The side 2 leader dies despite have 1000 hp and each round of combat only having 2 strikes (aka 500 rounds of combat)
|
||||
# The first weapon used by the side 1 leader hits 1000 times
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_negative_value" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
{SET_HP VALUE=1000}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk -10 () SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "1000" ({SUCCEED}) ID1=bob ID2=alice}
|
||||
)}
|
|
@ -0,0 +1,38 @@
|
|||
#textdomain wesnoth-test
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability missing the value attribute.
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The number of strikes is not changed.
|
||||
# No errors are logged.
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_no_value" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
[berserk]
|
||||
id = "test-berserk"
|
||||
name = _"test-berserk"
|
||||
affect_self = yes
|
||||
affect_allies = no
|
||||
affect_enemies = no
|
||||
cumulative = no
|
||||
[/berserk]
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "2,4" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,33 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]overwrite_specials=
|
||||
##
|
||||
# Actions:
|
||||
# Give the side 1 leader a berserk ability with the overwrite_specials=both_sides attribute
|
||||
# Give the side 1 leader a berserk ability without the overwrite_specials attribute
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader has 2 weapons which strike 10 (2*5) and 20 (4*5) times, since the 5 value ability takes priority due to overwrite_specials
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_overwrite_specials_both_sides" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
side=1
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 5 (overwrite_specials=both_sides) SELF=yes}
|
||||
{TEST_ABILITY berserk 7 () SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "10,20" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,34 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]overwrite_specials=
|
||||
##
|
||||
# Actions:
|
||||
# Give the side 1 leader a berserk ability with the overwrite_specials=one_side attribute
|
||||
# Give the side 1 leader another berserk ability with the overwrite_specials=both_sides attribute
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader has 2 weapons which strike 14 (2*7) and 28 (4*7) times, since the the higher value ability is used
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_overwrite_specials_mixed" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
{SET_HP VALUE=100}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
side=1
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 5 (overwrite_specials=one_side) SELF=yes}
|
||||
{TEST_ABILITY berserk 7 (overwrite_specials=both_sides) SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "14,28" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,33 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]overwrite_specials=
|
||||
##
|
||||
# Actions:
|
||||
# Give the side 1 leader a berserk ability with the overwrite_specials=one_side attribute
|
||||
# Give the side 1 leader a berserk ability without the overwrite_specials attribute
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader has 2 weapons which strike 10 (2*5) and 20 (4*5) times, since the 5 value ability takes priority due to overwrite_specials
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_overwrite_specials_one_side" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
side=1
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 5 (overwrite_specials=one_side) SELF=yes}
|
||||
{TEST_ABILITY berserk 7 () SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "10,20" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,34 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]overwrite_specials=
|
||||
##
|
||||
# Actions:
|
||||
# Give the side 1 leader a berserk ability with the overwrite_specials=both_sides attribute
|
||||
# Give the side 1 leader another berserk ability with the overwrite_specials=both_sides attribute
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader has 2 weapons which strike 14 (2*7) and 28 (4*7) times, since the the higher value ability is used
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_overwrite_specials_two_both_sides" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
{SET_HP VALUE=100}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
side=1
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 7 (overwrite_specials=both_sides) SELF=yes}
|
||||
{TEST_ABILITY berserk 5 (overwrite_specials=both_sides) SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "14,28" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,34 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]overwrite_specials=
|
||||
##
|
||||
# Actions:
|
||||
# Give the side 1 leader a berserk ability with the overwrite_specials=one_side attribute
|
||||
# Give the side 1 leader another berserk ability with the overwrite_specials=one_side attribute
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader has 2 weapons which strike 14 (2*7) and 28 (4*7) times, since the the higher value ability is used
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_overwrite_specials_two_one_side" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
{SET_HP VALUE=100}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
side=1
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 5 (overwrite_specials=one_side) SELF=yes}
|
||||
{TEST_ABILITY berserk 7 (overwrite_specials=one_side) SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "14,28" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,34 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with both the value and sub attributes
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# the sub attribute is ignored
|
||||
# The side 1 leader's first weapon strikes 6 times (2*3)
|
||||
# The side 1 leader's second weapon strikes 12 times (4*3)
|
||||
#####
|
||||
#ifndef SCHEMA_VALIDATION
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_sub" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 3 (sub=2) SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "6,12" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
|
@ -0,0 +1,35 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with both the value, sub, and divide attributes
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# the sub and divide attributes are ignored
|
||||
# The side 1 leader's first weapon strikes 6 times (2*3)
|
||||
# The side 1 leader's second weapon strikes 12 times (4*3)
|
||||
#####
|
||||
#ifndef SCHEMA_VALIDATION
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_sub_divide" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 3 (sub=1
|
||||
divide=2) SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "6,12" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
|
@ -0,0 +1,35 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with both the value, sub, and multiply attributes
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# the sub and multiply attributes are ignored
|
||||
# The side 1 leader's first weapon strikes 6 times (2*3)
|
||||
# The side 1 leader's second weapon strikes 12 times (4*3)
|
||||
#####
|
||||
#ifndef SCHEMA_VALIDATION
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_sub_multiply" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 3 (sub=1
|
||||
multiply=2) SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "6,12" ({SUCCEED})}
|
||||
)}
|
||||
#endif
|
|
@ -0,0 +1,34 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]cumulative=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with non-unique IDs, one with cumulative=yes, and one with cumulative=no
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader's first weapon strikes 20 times (2*(4+6))
|
||||
# The side 1 leader's second weapon strikes 40 times (4*(4+6))
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_two_cumulative_mixed_same_id" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
{SET_HP VALUE=100}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
side=1
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 6 () ID=1 CUMULATIVE=yes SELF=yes}
|
||||
{TEST_ABILITY berserk 4 () ID=1 CUMULATIVE=no SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "20,40" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,33 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]cumulative=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with unique IDs, one with cumulative=yes, and one with cumulative=no
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader's first weapon strikes 20 times (2*(4+6))
|
||||
# The side 1 leader's second weapon strikes 40 times (4*(4+6))
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_two_cumulative_mixed_unique_id" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
{SET_HP VALUE=100}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 6 () ID=1 CUMULATIVE=yes SELF=yes}
|
||||
{TEST_ABILITY berserk 4 () ID=2 CUMULATIVE=no SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "20,40" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,32 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]cumulative=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with non-unique IDs and cumulative=no
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader's first weapon strikes 12 times (2*6)
|
||||
# The side 1 leader's second weapon strikes 24 times (4*6)
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_two_cumulative_no_same_id" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 6 () ID=1 CUMULATIVE=no SELF=yes}
|
||||
{TEST_ABILITY berserk 4 () ID=1 CUMULATIVE=no SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "12,24" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,32 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]cumulative=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with unique IDs and cumulative=no
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader's first weapon strikes 12 times (2*6)
|
||||
# The side 1 leader's second weapon strikes 24 times (4*6)
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_two_cumulative_no_unique_id" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 6 () ID=1 CUMULATIVE=no SELF=yes}
|
||||
{TEST_ABILITY berserk 4 () ID=2 CUMULATIVE=no SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "12,24" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,33 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]cumulative=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with non-unique IDs and cumulative=yes
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader's first weapon strikes 20 times (2*(4+6))
|
||||
# The side 1 leader's second weapon strikes 40 times (4*(4+6))
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_two_cumulative_yes_same_id" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
{SET_HP VALUE=100}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 6 () ID=1 CUMULATIVE=yes SELF=yes}
|
||||
{TEST_ABILITY berserk 4 () ID=1 CUMULATIVE=yes SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "20,40" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,33 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]cumulative=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with unique IDs and cumulative=yes
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The side 1 leader's first weapon strikes 20 times (2*(4+6))
|
||||
# The side 1 leader's second weapon strikes 40 times (4*(4+6))
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_two_cumulative_yes_unique_id" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
{SET_HP VALUE=100}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 6 () ID=1 CUMULATIVE=yes SELF=yes}
|
||||
{TEST_ABILITY berserk 4 () ID=2 CUMULATIVE=yes SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "20,40" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,34 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability that gives a quarter of the max hp of the other unit as strikes.
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# berserk has a value of 7 (29/4)
|
||||
# The side 1 leader's first weapon strikes 10 times (2*7)
|
||||
# The side 1 leader's second weapon strikes 20 times (4*7)
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_wfl_other" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
{SET_HP VALUE=100}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
side=1
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk "(other.max_hitpoints/4)" () SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "14,28" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,34 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability that berserk half its own max hp.
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# berserk has a value of 7 (29/4)
|
||||
# The side 1 leader's first weapon strikes 10 times (2*7)
|
||||
# The side 1 leader's second weapon strikes 20 times (4*7)
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_wfl_self" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
{SET_HP VALUE=100}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
side=1
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk "(max_hitpoints/4)" () SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "14,28" ({SUCCEED})}
|
||||
)}
|
|
@ -0,0 +1,33 @@
|
|||
# wmllint: no translatables
|
||||
|
||||
#####
|
||||
# API(s) being tested: [berserk]value=
|
||||
##
|
||||
# Actions:
|
||||
# Give the leaders a berserk ability with a value of 0.
|
||||
# Have the side 1 leader attack the side 2 leader with both its weapons
|
||||
##
|
||||
# Expected end state:
|
||||
# The number of strikes is unlimited
|
||||
# The side 2 leader dies despite have 1000 hp and each round of combat only having 2 strikes (aka 500 rounds of combat)
|
||||
# The first weapon used by the side 1 leader hits 1000 times
|
||||
#####
|
||||
{COMMON_KEEP_A_B_UNIT_TEST "berserk_zero" (
|
||||
[event]
|
||||
name = start
|
||||
|
||||
{SET_HP VALUE=1000}
|
||||
[modify_unit]
|
||||
[filter]
|
||||
[/filter]
|
||||
[effect]
|
||||
apply_to = new_ability
|
||||
[abilities]
|
||||
{TEST_ABILITY berserk 0 () SELF=yes}
|
||||
[/abilities]
|
||||
[/effect]
|
||||
[/modify_unit]
|
||||
[/event]
|
||||
|
||||
{CHECK_STRIKES "1000" ({SUCCEED}) ID1=bob ID2=alice}
|
||||
)}
|
|
@ -1,2 +1,2 @@
|
|||
find data -name '*.cfg' -print
|
||||
find data -name '*.lua' -print
|
||||
find data -name '*.cfg' -not -path "data/test/*" -print
|
||||
find data -name '*.lua' -not -path "data/test/*" -print
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
find data -name '*.cfg' -print
|
||||
find data -name '*.lua' -print
|
||||
find data -name '*.cfg' -not -path "data/test/*" -print
|
||||
find data -name '*.lua' -not -path "data/test/*" -print
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
find data -name '*.cfg' -print
|
||||
find data -name '*.lua' -print
|
||||
find data -name '*.cfg' -not -path "data/test/*" -print
|
||||
find data -name '*.lua' -not -path "data/test/*" -print
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
find data -name '*.cfg' -print
|
||||
find data -name '*.lua' -print
|
||||
find data -name '*.cfg' -not -path "data/test/*" -print
|
||||
find data -name '*.lua' -not -path "data/test/*" -print
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
find data -name '*.cfg' -print
|
||||
find data -name '*.lua' -print
|
||||
find data -name '*.cfg' -not -path "data/test/*" -print
|
||||
find data -name '*.lua' -not -path "data/test/*" -print
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
2 empty_test
|
||||
0 test_end_turn
|
||||
9 there_is_no_test_with_this_name
|
||||
0 check_strikes_once
|
||||
10 check_strikes_twice_fail
|
||||
#
|
||||
# The synchronisation mechanism
|
||||
#
|
||||
|
@ -747,6 +749,40 @@
|
|||
0 attacks_overwrite_specials_two_both_sides
|
||||
0 attacks_overwrite_specials_two_one_side
|
||||
0 attacks_overwrite_specials_mixed
|
||||
# berserk ability tests
|
||||
0 berserk_negative_value
|
||||
0 berserk_zero
|
||||
0 berserk_add
|
||||
0 berserk_add_divide
|
||||
0 berserk_add_multiply
|
||||
0 berserk_add_sub
|
||||
0 berserk_affect_self_no
|
||||
0 berserk_affect_enemies
|
||||
0 berserk_affect_everybody
|
||||
0 berserk_divide
|
||||
0 berserk_high_fraction
|
||||
0 berserk_low_fraction
|
||||
0 berserk_multiply
|
||||
0 berserk_multiply_divide
|
||||
0 berserk_no_value
|
||||
0 berserk_sub
|
||||
0 berserk_sub_divide
|
||||
0 berserk_sub_multiply
|
||||
0 berserk_wfl_other
|
||||
0 berserk_wfl_self
|
||||
0 berserk_two_cumulative_yes_same_id
|
||||
0 berserk_two_cumulative_yes_unique_id
|
||||
0 berserk_two_cumulative_no_same_id
|
||||
0 berserk_two_cumulative_no_unique_id
|
||||
0 berserk_two_cumulative_mixed_same_id
|
||||
0 berserk_two_cumulative_mixed_unique_id
|
||||
0 berserk_max_value
|
||||
0 berserk_overwrite_specials_one_side
|
||||
0 berserk_overwrite_specials_both_sides
|
||||
0 berserk_overwrite_specials_two_both_sides
|
||||
0 berserk_overwrite_specials_two_one_side
|
||||
0 berserk_overwrite_specials_mixed
|
||||
0 berserk_different_values
|
||||
# Warnings about WML
|
||||
0 unknown_scenario_false_positives
|
||||
0 unknown_scenario_interpolated
|
||||
|
|
Loading…
Add table
Reference in a new issue