add a bunch of regenerate tests (#8079)

mostly the same as the heals tests, since they're basically the same ability with different defaults.
This commit is contained in:
Pentarctagon 2023-12-05 23:15:26 -06:00 committed by GitHub
parent 978cf98c18
commit 0ec7048a02
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
65 changed files with 1879 additions and 49 deletions

View file

@ -79,6 +79,7 @@
{test/scenarios/wml_tests/UnitsWML}
{test/scenarios/wml_tests/UnitsWML/AbilitiesWML}
{test/scenarios/wml_tests/UnitsWML/AbilitiesWML/heals}
{test/scenarios/wml_tests/UnitsWML/AbilitiesWML/regenerate}
{test/scenarios/wml_tests/UnitsWML/Attacks}
{test/scenarios/wml_tests/WesnothFormulaLanguage}

View file

@ -12,7 +12,7 @@
[/modify_unit]
#enddef
#define TEST_HEALS VALUE OTHER
#define TEST_ABILITY ABIL VALUE OTHER
#arg ID
1#endarg
@ -21,7 +21,7 @@
no#endarg
#arg ALLIES
yes#endarg
no#endarg
#arg ENEMIES
no#endarg
@ -32,9 +32,9 @@ no#endarg
#arg CUMULATIVE
no#endarg
[heals]
[{ABIL}]
id = {ID}
name = _"test-heals_{ID}"
name = _"test-{ABIL}_{ID}"
affect_self = {SELF}
affect_allies = {ALLIES}
affect_enemies = {ENEMIES}
@ -42,7 +42,5 @@ no#endarg
value = {VALUE}
{OTHER}
cumulative = {CUMULATIVE}
[affect_adjacent]
[/affect_adjacent]
[/heals]
[/{ABIL}]
#enddef

View file

@ -20,7 +20,8 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 2 (add=2)}
{TEST_ABILITY heals 2 ([affect_adjacent][/affect_adjacent]
add=2) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,8 +20,9 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 3 (add=1
divide=2)}
{TEST_ABILITY heals 3 ([affect_adjacent][/affect_adjacent]
add=1
divide=2) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,8 +20,9 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 3 (add=1
multiply=2)}
{TEST_ABILITY heals 3 ([affect_adjacent][/affect_adjacent]
add=1
multiply=2) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -21,8 +21,9 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 3 (add=20
sub=2)}
{TEST_ABILITY heals 3 ([affect_adjacent][/affect_adjacent]
add=20
sub=2) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -25,7 +25,7 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 4 ()}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,7 +20,7 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 4 () ENEMIES=yes}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]) ENEMIES=yes ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -25,7 +25,7 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 4 () ENEMIES=yes SELF=yes}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]) ENEMIES=yes SELF=yes ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -21,7 +21,7 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 4 () SELF=yes}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]) SELF=yes ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,7 +20,8 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 4 (divide=2)}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]
divide=2) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -21,7 +21,7 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 2.8 ()}
{TEST_ABILITY heals 2.8 ([affect_adjacent][/affect_adjacent]) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -21,7 +21,7 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 2.2 ()}
{TEST_ABILITY heals 2.2 ([affect_adjacent][/affect_adjacent]) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,7 +20,8 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 4 (multiply=2)}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]
multiply=2) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,8 +20,9 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 4 (multiply=3
divide=2)}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]
multiply=3
divide=2) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,7 +20,7 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS -10 ()}
{TEST_ABILITY heals -10 ([affect_adjacent][/affect_adjacent]) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -1,3 +1,4 @@
#textdomain wesnoth-test
#####
# API(s) being tested: [heals]poison=
##

View file

@ -1,3 +1,4 @@
#textdomain wesnoth-test
#####
# API(s) being tested: [heals]value=
##

View file

@ -20,7 +20,7 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 4 () POISON="cured"}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]) POISON="cured" ALLIES=yes}
[/abilities]
[/effect]
[effect]

View file

@ -20,7 +20,7 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 4 ()}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]) ALLIES=yes}
[/abilities]
[/effect]
[effect]

View file

@ -20,7 +20,7 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 10 ()}
{TEST_ABILITY heals 10 ([affect_adjacent][/affect_adjacent]) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,7 +20,8 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 3 (sub=2)}
{TEST_ABILITY heals 3 ([affect_adjacent][/affect_adjacent]
sub=2) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,8 +20,9 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 3 (sub=1
divide=2)}
{TEST_ABILITY heals 3 ([affect_adjacent][/affect_adjacent]
sub=1
divide=2) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,8 +20,9 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 3 (sub=1
multiply=2)}
{TEST_ABILITY heals 3 ([affect_adjacent][/affect_adjacent]
sub=1
multiply=2) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,8 +20,8 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 6 () ID=1 CUMULATIVE=yes}
{TEST_HEALS 4 () ID=1 CUMULATIVE=no}
{TEST_ABILITY heals 6 ([affect_adjacent][/affect_adjacent]) ID=1 CUMULATIVE=yes ALLIES=yes}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]) ID=1 CUMULATIVE=no ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,8 +20,8 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 6 () ID=1 CUMULATIVE=yes}
{TEST_HEALS 4 () ID=2 CUMULATIVE=no}
{TEST_ABILITY heals 6 ([affect_adjacent][/affect_adjacent]) ID=1 CUMULATIVE=yes ALLIES=yes}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]) ID=2 CUMULATIVE=no ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,8 +20,8 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 6 () ID=1 CUMULATIVE=no}
{TEST_HEALS 4 () ID=1 CUMULATIVE=no}
{TEST_ABILITY heals 6 ([affect_adjacent][/affect_adjacent]) ID=1 CUMULATIVE=no ALLIES=yes}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]) ID=1 CUMULATIVE=no ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,8 +20,8 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 6 () ID=1 CUMULATIVE=no}
{TEST_HEALS 4 () ID=2 CUMULATIVE=no}
{TEST_ABILITY heals 6 ([affect_adjacent][/affect_adjacent]) ID=1 CUMULATIVE=no ALLIES=yes}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]) ID=2 CUMULATIVE=no ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,8 +20,8 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 6 () ID=1 CUMULATIVE=yes}
{TEST_HEALS 4 () ID=1 CUMULATIVE=yes}
{TEST_ABILITY heals 6 ([affect_adjacent][/affect_adjacent]) ID=1 CUMULATIVE=yes ALLIES=yes}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]) ID=1 CUMULATIVE=yes ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,8 +20,8 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 6 () ID=1 CUMULATIVE=yes}
{TEST_HEALS 4 () ID=2 CUMULATIVE=yes}
{TEST_ABILITY heals 6 ([affect_adjacent][/affect_adjacent]) ID=1 CUMULATIVE=yes ALLIES=yes}
{TEST_ABILITY heals 4 ([affect_adjacent][/affect_adjacent]) ID=2 CUMULATIVE=yes ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -8,7 +8,7 @@
# Wait a turn for healing to take place.
##
# Expected end state:
# The Mage has 17 hp: 1 + 2 (rest healing) + 14 ([heals], 29/2)
# The Mage has 15 hp: 1 + 2 (rest healing) + 12 ([heals], 24/2)
#####
{GENERIC_UNIT_TEST "heal_wfl_other" (
[event]
@ -20,7 +20,7 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS "(other.max_hitpoints/2)" ()}
{TEST_ABILITY heals "(other.max_hitpoints/2)" ([affect_adjacent][/affect_adjacent]) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,7 +20,7 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS "(max_hitpoints/2)" ()}
{TEST_ABILITY heals "(max_hitpoints/2)" ([affect_adjacent][/affect_adjacent]) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -20,7 +20,7 @@
[effect]
apply_to = new_ability
[abilities]
{TEST_HEALS 0 ()}
{TEST_ABILITY heals 0 ([affect_adjacent][/affect_adjacent]) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]

View file

@ -0,0 +1,54 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with both the value and add attributes
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 7 hp: 1 + 2 (rest healing) + 4 ([regenerate], 2 (value) + 2 (add))
#####
{GENERIC_UNIT_TEST "regenerate_add" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 2 (add=2) SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 7}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,55 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with both the value, add, and divide attributes
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 5 hp: 1 + 2 (rest healing) + 2 ([regenerate], (3+1)/2)
#####
{GENERIC_UNIT_TEST "regenerate_add_divide" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 3 (add=1
divide=2) SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 5}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,55 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with both the value, add, and multiply attributes
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 11 hp: 1 + 2 (rest healing) + 8 ([regenerate], (3+1)*2)
#####
{GENERIC_UNIT_TEST "regenerate_add_multiply" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 3 (add=1
multiply=2) SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 11}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,56 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with both the value, add, and sub attributes
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 4 hp: 1 + 2 (rest healing) + 1 ([regenerate], 3 (value) - 2 (sub))
# The value of the add attribute is ignored.
#####
{GENERIC_UNIT_TEST "regenerate_add_sub" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 3 (add=20
sub=2) SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 4}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,60 @@
#####
# API(s) being tested: [regenerate]affect_allies=
##
# Actions:
# Give the leaders a regenerate ability with only affect_allies.
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 5 hp: 1 + 4 ([regenerate])
#####
{GENERIC_UNIT_TEST "regenerate_affect_allies" (
[event]
name = start
[modify_side]
side=1,2
team_name=allies
[/modify_side]
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 4 ([affect_adjacent][/affect_adjacent]) ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]
{NOTRAIT_UNIT 2 (Mage) 7 4}
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Mage"
[/filter]
variable = temp1
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp1.hitpoints numerical_equals 5}}
{SUCCEED}
[/event]
) VWED=no}

View file

@ -0,0 +1,56 @@
#####
# API(s) being tested: [regenerate]affect_enemies=
##
# Actions:
# Give the leaders a regenerate ability with only affect_enemies.
# Spawn an enemy Mage next to the side 1 leader.
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 5 hp: 1 + 4 ([regenerate])
#####
{GENERIC_UNIT_TEST "regenerate_affect_enemies" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 4 ([affect_adjacent][/affect_adjacent]) ENEMIES=yes}
[/abilities]
[/effect]
[/modify_unit]
{NOTRAIT_UNIT 2 (Mage) 7 4}
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Mage"
[/filter]
variable = temp1
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp1.hitpoints numerical_equals 5}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,91 @@
#####
# API(s) being tested: [regenerate]affect_allies=
##
# Actions:
# Give the leaders a regenerate ability with affect_allies, affect_enemies, and affect_self.
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 5 hp: 1 + 4 ([regenerate])
#####
{COMMON_KEEP_A_B_C_D_UNIT_TEST "regenerate_affect_everybody" (
[event]
name = start
[modify_side]
side=1,2
team_name=allies
[/modify_side]
[modify_unit]
[filter]
side = 1
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 4 ([affect_adjacent][/affect_adjacent]) ENEMIES=yes SELF=yes ALLIES=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name = side 3 turn 1
[end_turn][/end_turn]
[/event]
[event]
name = side 4 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
# check self
[store_unit]
[filter]
side = 1
[/filter]
variable = temp1
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp1.hitpoints numerical_equals 7}}
# check ally
# 5 instead of 7 since rest healing happens during the turn refresh, and this event happens before the refresh.
[store_unit]
[filter]
side = 2
[/filter]
variable = temp2
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp2.hitpoints numerical_equals 5}}
# check enemy
[store_unit]
[filter]
side = 3
[/filter]
variable = temp3
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp3.hitpoints numerical_equals 5}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,54 @@
#####
# API(s) being tested: [regenerate]affect_self=
##
# Actions:
# Give the leaders a regenerate ability that doesn't affect themselves.
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Elvish Archer has 3 hp: 1 + 2 (rest healing))
#####
{GENERIC_UNIT_TEST "regenerate_affect_self_no" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 4 ()}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp2
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp2.hitpoints numerical_equals 3}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,54 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with both the value and divide attributes
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 4 hp: 1 + 2 (rest healing) + 2 ([regenerate], 4/2)
#####
{GENERIC_UNIT_TEST "regenerate_divide" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 4 (divide=2) SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 5}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,56 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with a value of 2.8.
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 5 hp: 1 + 2 (rest healing) + 2 ([regenerate], fraction truncated)
#####
#ifndef SCHEMA_VALIDATION
{GENERIC_UNIT_TEST "regenerate_high_fraction" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 2.8 () SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 5}}
{SUCCEED}
[/event]
)}
#endif

View file

@ -0,0 +1,56 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with a value of 2.2.
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 5 hp: 1 + 2 (rest healing) + 2 ([regenerate], fraction truncated)
#####
#ifndef SCHEMA_VALIDATION
{GENERIC_UNIT_TEST "regenerate_low_fraction" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 2.2 () SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 5}}
{SUCCEED}
[/event]
)}
#endif

View file

@ -0,0 +1,54 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with both the value and multiply attributes
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 11 hp: 1 + 2 (rest healing) + 8 ([regenerate], 4*2)
#####
{GENERIC_UNIT_TEST "regenerate_multiply" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 4 (multiply=2) SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 11}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,55 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with both the value, multiply, and divide attributes
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 9 hp: 1 + 2 (rest healing) + 6 ([regenerate], 4*3/2)
#####
{GENERIC_UNIT_TEST "regenerate_multiply_divide" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 4 (multiply=3
divide=2) SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 9}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,54 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with a value of -10.
# Set all units' hitpoints to 15.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 7 hp: 1 + 2 (rest healing) - 10 ([regenerate])
#####
{GENERIC_UNIT_TEST "regenerate_negative_value" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate -10 () SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=15}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 7}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,74 @@
#####
# API(s) being tested: [regenerate]poison=
##
# Actions:
# Give the leaders a regenerate ability with no poison attribute.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage is poisoned but still has full hp.
#####
{GENERIC_UNIT_TEST "regenerate_no_poison" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
[regenerate]
id = "test-regenerate"
name = _"test-regenerate"
affect_self = yes
affect_allies = no
affect_enemies = no
value = 4
cumulative = no
[/regenerate]
[/abilities]
[/effect]
[effect]
apply_to = status
add = poisoned
[/effect]
[/modify_unit]
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name = side 3 turn 1
[end_turn][/end_turn]
[/event]
[event]
name = side 4 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp1
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp1.hitpoints numerical_equals "$($temp1.max_hitpoints-6)"}}
{ASSERT {VARIABLE_CONDITIONAL temp1.status.poisoned boolean_equals yes}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,62 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability missing the value attribute.
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 3 hp: 1 + 2 (rest healing) + 0 ([regenerate], no value)
#####
{GENERIC_UNIT_TEST "regenerate_no_value" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
[regenerate]
id = "test-regenerate"
name = _"test-regenerate"
affect_self = yes
affect_allies = no
affect_enemies = no
poison = "slowed"
cumulative = no
[/regenerate]
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 3}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,66 @@
#####
# API(s) being tested: [regenerate]poison=
##
# Actions:
# Give the leaders a regenerate ability with poison=cured.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage is not poisoned and still has full hp.
#####
{GENERIC_UNIT_TEST "regenerate_poison_cured" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 4 () POISON="cured" SELF=yes}
[/abilities]
[/effect]
[effect]
apply_to = status
add = poisoned
[/effect]
[/modify_unit]
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name = side 3 turn 1
[end_turn][/end_turn]
[/event]
[event]
name = side 4 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = Elvish Archer
[/filter]
variable = temp1
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp1.hitpoints numerical_equals $temp1.max_hitpoints}}
{ASSERT {VARIABLE_CONDITIONAL temp1.status.poisoned boolean_equals no}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,66 @@
#####
# API(s) being tested: [regenerate]poison=
##
# Actions:
# Give the leaders a regenerate ability with poison=slowed.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage is poisoned but still has full hp.
#####
{GENERIC_UNIT_TEST "regenerate_poison_slowed" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 4 () SELF=yes}
[/abilities]
[/effect]
[effect]
apply_to = status
add = poisoned
[/effect]
[/modify_unit]
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name = side 3 turn 1
[end_turn][/end_turn]
[/event]
[event]
name = side 4 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = Elvish Archer
[/filter]
variable = temp1
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp1.hitpoints numerical_equals $temp1.max_hitpoints}}
{ASSERT {VARIABLE_CONDITIONAL temp1.status.poisoned boolean_equals yes}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,54 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with a value of 10.
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 13 hp: 1 + 2 (rest healing) + 10 ([regenerate])
#####
{GENERIC_UNIT_TEST "regenerate_positive_value" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 10 () SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 13}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,54 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with both the value and sub attributes
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 4 hp: 1 + 2 (rest healing) + 1 ([regenerate], 3 (value) - 2 (sub))
#####
{GENERIC_UNIT_TEST "regenerate_sub" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 3 (sub=2) SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 4}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,55 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with both the value, sub, and divide attributes
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 7 hp: 1 + 2 (rest healing) + 1 ([regenerate], (3-1)/2)
#####
{GENERIC_UNIT_TEST "regenerate_sub_divide" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 3 (sub=1
divide=2) SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 4}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,55 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with both the value, sub, and multiply attributes
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 7 hp: 1 + 2 (rest healing) + 4 ([regenerate], (3-1)*2)
#####
{GENERIC_UNIT_TEST "regenerate_sub_multiply" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 3 (sub=1
multiply=2) SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 7}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,55 @@
#####
# API(s) being tested: [regenerate]cumulative=
##
# Actions:
# Give the leaders a regenerate ability with non-unique IDs, one with cumulative=yes, and one with cumulative=no
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 9 hp: 1 + 2 (rest healing) + 6 ([regenerate])
#####
{GENERIC_UNIT_TEST "regenerate_two_cumulative_mixed_same_id" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 6 () ID=1 CUMULATIVE=yes SELF=yes}
{TEST_ABILITY regenerate 4 () ID=1 CUMULATIVE=no SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = Elvish Archer
[/filter]
variable = temp1
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp1.hitpoints numerical_equals 9}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,55 @@
#####
# API(s) being tested: [regenerate]cumulative=
##
# Actions:
# Give the leaders a regenerate ability with unique IDs, one with cumulative=yes, and one with cumulative=no
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 9 hp: 1 + 2 (rest healing) + 6 ([regenerate])
#####
{GENERIC_UNIT_TEST "regenerate_two_cumulative_mixed_unique_id" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 6 () ID=1 CUMULATIVE=yes SELF=yes}
{TEST_ABILITY regenerate 4 () ID=2 CUMULATIVE=no SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = Elvish Archer
[/filter]
variable = temp1
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp1.hitpoints numerical_equals 9}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,55 @@
#####
# API(s) being tested: [regenerate]cumulative=
##
# Actions:
# Give the leaders a regenerate ability with non-unique IDs and cumulative=no
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 9 hp: 1 + 2 (rest healing) + 6 ([regenerate])
#####
{GENERIC_UNIT_TEST "regenerate_two_cumulative_no_same_id" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 6 () ID=1 CUMULATIVE=no SELF=yes}
{TEST_ABILITY regenerate 4 () ID=1 CUMULATIVE=no SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = Elvish Archer
[/filter]
variable = temp1
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp1.hitpoints numerical_equals 9}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,55 @@
#####
# API(s) being tested: [regenerate]cumulative=
##
# Actions:
# Give the leaders a regenerate ability with unique IDs and cumulative=no
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 9 hp: 1 + 2 (rest healing) + 6 ([regenerate])
#####
{GENERIC_UNIT_TEST "regenerate_two_cumulative_no_unique_id" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 6 () ID=1 CUMULATIVE=no SELF=yes}
{TEST_ABILITY regenerate 4 () ID=2 CUMULATIVE=no SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = Elvish Archer
[/filter]
variable = temp1
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp1.hitpoints numerical_equals 9}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,55 @@
#####
# API(s) being tested: [regenerate]cumulative=
##
# Actions:
# Give the leaders a regenerate ability with non-unique IDs and cumulative=yes
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 9 hp: 1 + 2 (rest healing) + 6 ([regenerate])
#####
{GENERIC_UNIT_TEST "regenerate_two_cumulative_yes_same_id" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 6 () ID=1 CUMULATIVE=yes SELF=yes}
{TEST_ABILITY regenerate 4 () ID=1 CUMULATIVE=yes SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = Elvish Archer
[/filter]
variable = temp1
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp1.hitpoints numerical_equals 9}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,55 @@
#####
# API(s) being tested: [regenerate]cumulative=
##
# Actions:
# Give the leaders a regenerate ability with unique IDs and cumulative=yes
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 9 hp: 1 + 2 (rest healing) + 6 ([regenerate])
#####
{GENERIC_UNIT_TEST "regenerate_two_cumulative_yes_unique_id" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 6 () ID=1 CUMULATIVE=yes SELF=yes}
{TEST_ABILITY regenerate 4 () ID=2 CUMULATIVE=yes SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = Elvish Archer
[/filter]
variable = temp1
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp1.hitpoints numerical_equals 9}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,54 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability that regenerates half the max hp of the unit.
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 17 hp: 1 + 2 (rest healing) + 14 ([regenerate], 29/2)
#####
{GENERIC_UNIT_TEST "regenerate_wfl_other" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate "(other.max_hitpoints/2)" () SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 17}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,54 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability that regenerates half its own max hp.
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 17 hp: 1 + 2 (rest healing) + 14 ([regenerate], 29/2)
#####
{GENERIC_UNIT_TEST "regenerate_wfl_self" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate "(max_hitpoints/2)" () SELF=yes}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 17}}
{SUCCEED}
[/event]
)}

View file

@ -0,0 +1,54 @@
#####
# API(s) being tested: [regenerate]value=
##
# Actions:
# Give the leaders a regenerate ability with a value of 0.
# Set all units' hitpoints to 1.
# Wait a turn for regenerating to take place.
##
# Expected end state:
# The Mage has 3 hp: 1 + 2 (rest healing) + 0 ([regenerate])
#####
{GENERIC_UNIT_TEST "regenerate_zero" (
[event]
name = start
[modify_unit]
[filter]
[/filter]
[effect]
apply_to = new_ability
[abilities]
{TEST_ABILITY regenerate 0 ()}
[/abilities]
[/effect]
[/modify_unit]
{SET_HP VALUE=1}
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 1
[end_turn][/end_turn]
[/event]
[event]
name =side 1 turn 2
[end_turn][/end_turn]
[/event]
[event]
name = side 2 turn 2
[store_unit]
[filter]
type = "Elvish Archer"
[/filter]
variable = temp
[/store_unit]
{ASSERT {VARIABLE_CONDITIONAL temp.hitpoints numerical_equals 3}}
{SUCCEED}
[/event]
)}

View file

@ -500,6 +500,37 @@
0 heal_two_cumulative_no_unique_id
0 heal_two_cumulative_mixed_same_id
0 heal_two_cumulative_mixed_unique_id
# regenerate abilities tests
0 regenerate_positive_value
0 regenerate_negative_value
0 regenerate_zero
0 regenerate_add
0 regenerate_add_divide
0 regenerate_add_multiply
0 regenerate_add_sub
0 regenerate_affect_self_no
0 regenerate_affect_enemies
0 regenerate_affect_everybody
0 regenerate_divide
0 regenerate_high_fraction
0 regenerate_low_fraction
0 regenerate_multiply
0 regenerate_multiply_divide
0 regenerate_no_value
0 regenerate_sub
0 regenerate_sub_divide
0 regenerate_sub_multiply
0 regenerate_wfl_other
0 regenerate_wfl_self
0 regenerate_poison_slowed
0 regenerate_poison_cured
0 regenerate_no_poison
0 regenerate_two_cumulative_yes_same_id
0 regenerate_two_cumulative_yes_unique_id
0 regenerate_two_cumulative_no_same_id
0 regenerate_two_cumulative_no_unique_id
0 regenerate_two_cumulative_mixed_same_id
0 regenerate_two_cumulative_mixed_unique_id
# Warnings about WML
0 unknown_scenario_false_positives
0 unknown_scenario_interpolated