# script_game_get_upgrade_xp
# This script is called from game engine for calculating needed troop upgrade exp
# Input:
# param1: troop_id,
# Output: reg0 = needed exp for upgrade
("game_get_upgrade_xp",
[
(store_script_param_1, ":troop_id"),
(assign, ":needed_upgrade_xp", 0),
#formula : int needed_upgrade_xp = 2 * (30 + 0.006f * level_boundaries[troops[troop_id].level + 3]);
(store_character_level, ":troop_level", ":troop_id"),
(try_begin),
(eq,"$easy_levelling", 0),
(try_begin),
(ge, ":troop_level", 2

,
(store_add, ":needed_upgrade_xp", ":troop_level", 4),# was 8
(else_try),
(store_add, ":needed_upgrade_xp", ":troop_level",

, #high level troops more difficult to upgrade -10
(try_end),
(else_try),
(eq,"$easy_levelling", 1),
(try_begin),
(ge, ":troop_level", 2

,
(store_add, ":needed_upgrade_xp", ":troop_level", 2),# was 8
(else_try),
(store_add, ":needed_upgrade_xp", ":troop_level", 4), #high level troops more difficult to upgrade -10
(try_end),
(else_try),
(eq,"$easy_levelling", 2),
(try_begin),
(le, ":troop_level", 23),
(store_add, ":needed_upgrade_xp", ":troop_level",

,# was 8
(else_try),
(store_add, ":needed_upgrade_xp", ":troop_level", 10), #high level troops more difficult to upgrade -10
(try_end),
(try_end),
(get_level_boundary, reg0, ":needed_upgrade_xp"),
(val_mul, reg0, 6),
(val_div, reg0, 1000),
(val_add, reg0, 30),
(try_begin),
(gt, ":troop_level", 23),
(try_begin),
(eq,"$easy_levelling", 1),
(val_mul, reg0, 6),
(val_div, reg0, 5),
(else_try),
(eq,"$easy_levelling", 0),
(val_mul, reg0, 4),
(val_div, reg0, 3),
(else_try),
(eq, "$easy_levelling", 2),
(val_mul, reg0, 3), #high level troops more difficult to upgrade -- was 3
(try_end),
(try_end),
(try_begin),
(eq, "$easy_levelling", 2),
(is_between, ":troop_id", bandits_begin, bandits_end),
(val_mul, reg0, 2),
(else_try),
(this_or_next|eq,"$easy_levelling", 1),
(eq,"$easy_levelling", 0),
(is_between, ":troop_id", bandits_begin, bandits_end),
(val_mul, reg0, 2),
(val_div, reg0, 3),
(try_end),
(set_trigger_result, reg0),
]),