你所贴的代码问题颇多,给你重写了一个,拿去试试看,可根据需要自行删减。
(ti_on_agent_hit, 0, 0, [],
[
(store_trigger_param_1, ":defender_agent"), # 防守者
(store_trigger_param_2, ":attacker_agent"), # 攻击者
(store_trigger_param_3, ":inflicted_damage"), # 初始伤害
(assign, ":dest_damage", ":inflicted_damage"),
(assign, ":item_id", reg0), # 攻击武器
(agent_get_troop_id, ":defender_troop_no", ":defender_agent"),
(agent_get_troop_id, ":attacker_troop_no", ":attacker_agent"),
(try_begin),
(neg|agent_is_ally, ":defender_agent"), # 防守者不是友军
(agent_is_ally, ":attacker_agent"), # 攻击者是友军
(troop_is_hero, ":attacker_troop_no"), # 攻击者是NPC
(try_begin),
(gt, ":item_id", 0), # 有武器,排除拳头、踢腿
(item_get_type, ":type", ":item_id"), # 获取武器类型
(store_skill_level, ":weapon_master_skl", skl_weapon_master, ":attacker_troop_no"), # 获取攻击者的武器掌握等级
(gt, ":weapon_master_skl", 0),
(val_mul, ":weapon_master_skl", 5), # 每点增加5%概率
(store_random_in_range, ":random", 0, 100), # 随机数0-100
(is_between, ":random", 0, ":weapon_master_skl"),
(store_random_in_range, ":random_p", 1, 3), # 熟练度随机数,范围1-3,最低1点,最高2点
(try_begin),
(eq, ":type", itp_type_one_handed_wpn), # 单手武器
(troop_raise_proficiency_linear, ":attacker_troop_no", wpt_one_handed_weapon, ":random_p"), # 增加熟练度
(else_try),
(eq, ":type", itp_type_two_handed_wpn), # 双手武器
(troop_raise_proficiency_linear, ":attacker_troop_no", wpt_two_handed_weapon, ":random_p"),
(else_try),
(eq, ":type", itp_type_polearm), # 长杆武器
(troop_raise_proficiency_linear, ":attacker_troop_no", wpt_polearm, ":random_p"),
(else_try),
(eq, ":type", itp_type_bow), # 弓
(troop_raise_proficiency_linear, ":attacker_troop_no", wpt_archery, ":random_p"),
(else_try),
(eq, ":type", itp_type_crossbow), # 弩
(troop_raise_proficiency_linear, ":attacker_troop_no", wpt_crossbow, ":random_p"),
(else_try),
(eq, ":type", itp_type_thrown), # 投掷
(troop_raise_proficiency_linear, ":attacker_troop_no", wpt_throwing, ":random_p"),
(try_end),
(try_end),
(try_begin),
(store_skill_level, ":power_strike_skl", skl_power_strike, ":attacker_troop_no"), # 获取攻击者的强击等级
(gt, ":power_strike_skl", 0),
(store_agent_hit_points, ":attacker_hps", ":attacker_agent"), # 获取攻击者的血量百分比
(assign, ":power_dam", ":power_strike_skl"),
(val_mul, ":power_strike_skl", 5), # 每级强击增加5%暴击几率
(store_random_in_range, ":random", 0, 100),
(is_between, ":random", 0, ":power_strike_skl"),
(val_mul, ":power_dam", 10), # 每级增加10%伤害
(val_add, ":power_dam", 100),
(val_mul, ":dest_damage", ":power_dam"),
(val_div, ":dest_damage", 100),
(try_begin),
(is_between, ":attacker_hps", 25, 50), # 攻击者的血量在25%-50%之间,暴击伤害*2
(val_mul, ":dest_damage", 2),
(else_try),
(is_between, ":attacker_hps", 1, 25), # 攻击者的血量在1%-25%之间,暴击伤害*3
(val_mul, ":dest_damage", 3),
(try_end),
(try_end),
(else_try),
(agent_is_ally, ":defender_agent"), # 防守者是友军
(neg|agent_is_ally, ":attacker_agent"), # 攻击者不是友军
(troop_is_hero, ":defender_troop_no"), # 防守者是NPC
(store_skill_level, ":ironflesh_skl", skl_ironflesh, ":defender_troop_no"), # 获取防守者的铁骨等级
(store_skill_level, ":athletics_skl", skl_athletics, ":defender_troop_no"), # 获取防守者的跑动等级
(try_begin),
(store_mul, ":div_fixed", ":ironflesh_skl", 8), # 每点铁骨8%减伤
(val_add, ":div_fixed", 100),
(val_mul, ":dest_damage", 100),
(val_div, ":dest_damage", ":div_fixed"),
(try_begin),
(is_between, ":ironflesh_skl", 5, 11), # 铁骨5~10级
(ge, ":dest_damage", 10), # 铁骨减伤后,伤害大于10点,减半
(val_div, ":dest_damage", 2),
(try_end),
(store_agent_hit_points, ":defender_hps", ":defender_agent"), # 获取防守者的血量百分比
(try_begin),
(le, ":defender_hps", 50),
(val_div, ":dest_damage", 2), # 血量低于50% 伤害再减半
(try_end),
(try_end),
(try_begin),
(gt, ":athletics_skl", 0), # 跑动增加伤害闪避效果
(val_mul, ":athletics_skl", 5), # 每级跑动增加5%闪避概率
(store_random_in_range, ":random", 0, 100), # 随机数0-100
(is_between, ":random", 0, ":athletics_skl"),
(val_mul, ":dest_damage", 0),
(try_end),
(try_end),
(val_max, ":dest_damage", 0), # 最低伤害为0,避免负伤害
(assign, reg1, ":dest_damage"),
(set_trigger_result, reg1), # 返回最终伤害
]),
|