同类型的触发器最好写在一块,或者错开触发时间,否则返回值会覆盖。比如这样,优先计算暴击伤害,然后计算减伤值。
change_damage = (
ti_on_agent_hit, 0, 0, [],
[
(get_player_agent_no, ":player_agent"),
(store_trigger_param_1, ":victim"),
(store_trigger_param_2, ":attacker"),
(store_trigger_param_3, ":damage"),
(assign, ":cur_damage", ":damage"),
(agent_is_alive, ":victim"),
(agent_is_alive, ":attacker"),
(agent_is_human, ":victim"),
(agent_is_human, ":attacker"),
(agent_get_wielded_item, ":wielded_item", ":attacker"),
(store_random_in_range, ":range", 1, 15),
(try_begin),
(gt, ":wielded_item", 0),
(gt, ":range", 5),
(val_mul, ":cur_damage", 2),
(try_end),
(try_begin),
(eq, ":victim", ":player_agent"),
(val_div, ":cur_damage", 2),
(try_end),
(assign, reg1, ":cur_damage"),
(set_trigger_result, reg1),
])
|