scripts.extend([
#script_get_number_with_luck:
# INPUT : arg0 = luck, arg1 = number
# OUTPUT: reg0 = (number + number * luck)
("get_number_with_luck",[
(store_script_param_1, reg0),
(store_script_param_2, ":num"),
(val_mul, reg0, ":num"),
(val_div, reg0, 100),
(val_add, reg0, ":num")
]),
#script_get_number_with_luck_from_troop:
# INPUT : arg0 = troop_id, arg1 = number
# OUTPUT: reg0 = (number + number * luck)
("get_number_with_luck_from_troop",[
(store_script_param_1, reg0),
(store_script_param_2, ":num"),
(troop_get_slot, reg0, reg0, slot_troop_luck),
(val_mul, reg0, ":num"),
(val_div, reg0, 100),
(val_add, reg0, ":num")
]),
#script_get_number_with_luck_from_party:
# INPUT : arg0 = party_id, arg1 = number
# OUTPUT: reg0 = (number + number * average_luck)
("get_number_with_luck_from_party",[
(store_script_param_1, reg0),
(store_script_param_2, ":num"),
(call_script, "script_calculate_average_party_luck", reg0),
(val_mul, reg0, ":num"),
(val_div, reg0, 100),
(val_add, reg0, ":num")
]),
#script_get_random_number_with_luck:
# INPUT : arg0 = luck, arg1 = min_value, arg2 = max_value + 1
# OUTPUT: reg0 = (random_number + random_number * luck)
("get_random_number_with_luck",[
(store_script_param_1, reg0),
(store_script_param_2, ":min"),
(store_script_param, ":max", 3),
(store_random_in_range, ":rnd", ":min", ":max"),
(val_mul, reg0, ":rnd"),
(val_div, reg0, 100),
(val_add, reg0, ":rnd")
]),
#script_get_random_number_with_luck_from_troop:
# INPUT : arg0 = troop_id, arg1 = min_value, arg2 = max_value + 1
# OUTPUT: reg0 = (random_number + random_number * luck)
("get_random_number_with_luck_from_troop",[
(store_script_param_1, reg0),
(store_script_param_2, ":min"),
(store_script_param, ":max", 3),
(troop_get_slot, reg0, reg0, slot_troop_luck),
(store_random_in_range, ":rnd", ":min", ":max"),
(val_mul, reg0, ":rnd"),
(val_div, reg0, 100),
(val_add, reg0, ":rnd")
]),
#script_get_random_number_with_luck_from_party:
# INPUT : arg0 = party_id, arg1 = min_value, arg2 = max_value + 1
# OUTPUT: reg0 = (random_number + random_number * average_luck)
("get_random_number_with_luck_from_party",[
(store_script_param_1, reg0),
(store_script_param_2, ":min"),
(store_script_param, ":max", 3),
(call_script, "script_calculate_average_party_luck", reg0),
(store_random_in_range, ":rnd", ":min", ":max"),
(val_mul, reg0, ":rnd"),
(val_div, reg0, 100),
(val_add, reg0, ":rnd")
]),
#script_calculate_adverse_troop_lucks:
# INPUT : arg0 = active_troop_id, arg1 = reactive_troop_id
# OUTPUT: reg0 = relative_active_troop_luck
("calculate_adverse_troop_lucks",[
(store_script_param_1, reg0),
(store_script_param_2, ":sub"),
(troop_get_slot, reg0, reg0, slot_troop_luck),
(troop_get_slot, ":sub", ":sub", slot_troop_luck),
(val_sub, reg0, ":sub")
]),
#script_calculate_adverse_party_lucks:
# INPUT : arg0 = active_party_id, arg1 = reactive_party_id
# OUTPUT: reg0 = relative_active_party_id
("calculate_adverse_party_lucks",[
(store_script_param_1, ":dom"),
(store_script_param_2, ":sub"),
(call_script, "script_calculate_average_party_luck", ":sub"),
(assign, ":sub", reg0),
(call_script, "script_calculate_average_party_luck", ":dom"),
(val_sub, reg0, ":sub")
]),
#script_calculate_average_party_luck:
# INPUT : arg0 = party_id
# OUTPUT: reg0 = average_luck
("calculate_average_party_luck",[
(store_script_param_1, ":party_id"),
(party_get_num_companion_stacks, ":stack_count", ":party_id"),
(assign, reg0, 0),
(assign, ":quotient", 0),
(try_for_range, ":stack", 0, ":stack_count"),
(party_stack_get_troop_id, ":stack", ":stack"),
(troop_get_slot, ":stack", ":stack", slot_troop_luck),
(neq, ":stack", 0), # do not count no-luckers
(val_add, reg0, slot_troop_luck),
(val_add, ":quotient", 1),
(try_end),
(try_begin),
(neq, ":quotient", 0), # at least one lucker
(val_div, reg0, ":quotient"),
(try_end)
])
])