- (0.5, 0, 0,
- [],
- [
- # (store_mission_timer_a, ":cur_time"),
- (get_player_agent_no, ":player"),
- (agent_get_team,":team_player", ":player"),#玩家team
- (try_for_agents,":agent_no"),
- (agent_is_alive, ":agent_no"),
- (agent_is_human, ":agent_no"),
- (agent_is_non_player,":agent_no"),
- (agent_get_team, ":team_agent", ":agent_no"),
- (this_or_next|agent_is_ally,":agent_no"),
- (eq, ":team_agent", ":team_player"),
- (agent_get_horse,":horse_no",":agent_no"),
- (lt,":horse_no",0), #没马,是步兵
- # (agent_get_slot, ":last_switch_time", ":agent_no", 1800),
- # (store_sub, ":delta", ":cur_time", ":last_switch_time"),
- # (gt, ":delta", 2), # 至少2秒才允许切换
- (agent_get_attack_action, ":atk", ":agent_no"),
- (eq, ":atk", 0), # 没在攻击
- (assign, ":is_archer", 0),
- (assign, ":id_use_shield_weapon", 0),
- (assign, ":id_no_shield_weapon", 0),
- (assign, ":id_shield", 0),
- (assign, ":id_ammo", 0),
- (assign, ":id_ranged_weapon", 0),
- (assign, ":id_use_shield_onehand", 0),
- (assign, ":id_use_shield_twohand", 0),
- (assign, ":id_no_shield_twohand", 0),
- (assign, ":id_use_shield_polearm", 0),
- (assign, ":id_no_shield_polearm", 0),
- (assign, ":id_ammo_touzhi", 0),
- (try_for_range,":i",0,4),
- (agent_get_item_slot, ":gitm", ":agent_no", ":i"),
- (gt,":gitm", 0),
- (item_get_type,":gtyp",":gitm"),
- (try_begin),
- (eq,":gtyp",itp_type_shield),
- (assign, ":id_shield", ":gitm"),
- (else_try),
- (eq,":gtyp",itp_type_one_handed_wpn),
- (neg|item_has_property, ":gitm", itp_two_handed),#武器可持盾(一般而言,单手武器都可以持盾,但以防万一有特殊设置;而如果单手武器没有单手武器动作,这是mod作者失误。)
- (assign, ":id_use_shield_onehand", ":gitm"),
- (else_try),
- (eq,":gtyp",itp_type_two_handed_wpn),
- (try_begin),
- (neg|item_has_property, ":gitm",itp_two_handed),
- (assign, ":id_use_shield_twohand", ":gitm"),
- (else_try),
- (assign, ":id_no_shield_twohand", ":gitm"),
- (try_end),
- (else_try),
- (eq,":gtyp", itp_type_polearm ),
- (try_begin),
- (neg|item_has_property, ":gitm", itp_two_handed),
- (assign, ":id_use_shield_polearm", ":gitm"),
- (else_try),
- (assign, ":id_no_shield_polearm", ":gitm"),
- (try_end),
- (else_try),
- (eq, ":gtyp", 10),
- (agent_get_item_cur_ammo, ":id_ammo_touzhi", ":agent_no", ":i"),
- (val_add,":id_ammo",":id_ammo_touzhi"),
- (assign, ":id_ranged_weapon", ":gitm"),
- (else_try),
- (this_or_next|eq, ":gtyp", 8),
- (this_or_next|eq, ":gtyp", 9),
- (this_or_next|eq, ":gtyp", 16),
- (eq, ":gtyp", 17),
- (assign, ":id_ranged_weapon", ":gitm"),
- (else_try),
- (this_or_next|eq, ":gtyp", 5),
- (this_or_next|eq, ":gtyp", 6),
- (eq, ":gtyp", 18),
- (agent_get_ammo_for_slot, ":id_ammo", ":agent_no", ":i"),
- (try_end),
- (try_end),
- (try_begin),
- (gt, ":id_ranged_weapon", 0),
- (gt, ":id_ammo", 0),
- (assign, ":is_archer", 1),
- (try_end),
- (agent_get_troop_id,":trp1", ":agent_no"),
- (store_proficiency_level,":p1",":trp1",wpt_one_handed_weapon),
- (store_proficiency_level,":p2",":trp1",wpt_two_handed_weapon),
- (store_proficiency_level,":p3",":trp1",wpt_polearm),
- (store_sub,":chazhi",":p1",":p2"),
- (try_begin),
- (gt,":id_use_shield_onehand", 0),
- (gt,":id_use_shield_polearm", 0),
- (try_begin),
- (gt,":p1", ":p3"),
- (assign, ":id_use_shield_weapon", ":id_use_shield_onehand"),
- (else_try),
- (assign, ":id_use_shield_weapon", ":id_use_shield_polearm"),
- (try_end),
- (else_try),
- (gt,":id_use_shield_onehand", 0),
- (eq,":id_use_shield_polearm", 0),
- (assign, ":id_use_shield_weapon", ":id_use_shield_onehand"),
- (else_try),
- (eq,":id_use_shield_onehand", 0),
- (gt,":id_use_shield_polearm", 0),
- (assign, ":id_use_shield_weapon", ":id_use_shield_polearm"),
- (try_end),
- (try_begin),
- (gt,":id_no_shield_twohand", 0),
- (assign, ":id_no_shield_weapon", ":id_no_shield_twohand"),
- (else_try),
- (gt,":id_no_shield_polearm", 0),
- (assign, ":id_no_shield_weapon", ":id_no_shield_polearm"),
- (try_end),
- (agent_get_position, pos34, ":agent_no"),
- (assign, ":nearest_enemy", -1),
- (assign, ":min_dist", 100000),
- #find mindist enemy判断最近敌距多少
- (try_for_agents,":cur_agent"),
- (agent_is_alive, ":cur_agent"),
- (agent_is_human, ":cur_agent"),
- (agent_get_team, ":enemies_team", ":cur_agent"),
- (teams_are_enemies, ":enemies_team", ":team_agent"),
- (agent_get_position, pos36, ":cur_agent"),
- (get_distance_between_positions,":cur_dist",pos36,pos34),
- (lt, ":cur_dist", ":min_dist"),
- (assign, ":min_dist", ":cur_dist"),
- (assign, ":nearest_enemy", ":cur_agent"),
- (try_end),
- (agent_get_division, ":fenzu", ":agent_no"),
- (team_get_weapon_usage_order, ":ml", ":team_agent", ":fenzu"),
- (eq,":ml",0),
- (agent_get_wielded_item, ":cur_item", ":agent_no",0),
- (agent_get_wielded_item, ":zuoshou", ":agent_no",1),
- (set_fixed_point_multiplier, 100),
- (gt,":nearest_enemy",-1),
- (agent_get_horse, ":enemies_horse", ":nearest_enemy"),
- (agent_get_speed, pos35, ":nearest_enemy"),
- (position_get_y,":speedmul",pos35),
- (convert_from_fixed_point, ":speedmul"),
- # (assign, reg1, ":min_dist"),
- # (assign, reg2, ":is_archer"),
- (try_begin),
- (eq, ":is_archer", 0),
- (try_begin),
- (ge,":cur_item", 0),
- (neg|item_has_property, ":cur_item", itp_next_item_as_melee),#不要试图获取带有此Flag的武器,否则你会知道的
- (item_get_type,":cur_type",":cur_item"),
- (try_begin),
- (assign, ":horse_switch", 0),
- (le,":zuoshou", 0),
- (try_begin),
- (gt, ":enemies_horse", -1),
- (gt,":min_dist",3000),
- (assign, ":horse_switch", 1),
- (else_try),
- (le, ":enemies_horse", 0),
- (gt,":min_dist",1800),
- (assign, ":horse_switch", 1),
- (try_end),
- (eq, ":horse_switch", 1),
- (try_begin),
- (this_or_next|eq, ":cur_type", itp_type_one_handed_wpn),
- (this_or_next|eq, ":cur_type", itp_type_polearm),
- (eq,":cur_type",itp_type_two_handed_wpn),
- (try_begin),
- (item_has_property, ":cur_item", itp_two_handed),
- (try_begin),
- (gt,":id_use_shield_weapon",0),
- (gt, ":id_shield", 0),
- (try_begin),
- (agent_set_wielded_item, ":agent_no", ":id_use_shield_weapon",0),
- # (agent_set_wielded_item, ":agent_no", ":id_shield"),#装备盾
- (try_end),
- (else_try),
- (le,":id_use_shield_weapon",0),
- (gt, ":id_shield", 0),
- (le, ":id_use_shield_polearm", 0),
- (agent_set_wielded_item, ":agent_no", -1,0),
- (agent_set_wielded_item, ":agent_no", ":id_shield"),
- (try_end),
- (else_try),
- (neg|item_has_property, ":cur_item", itp_two_handed),#使用的武器不是不可配盾的武器
- (gt, ":id_shield", 0),
- (agent_set_wielded_item, ":agent_no", ":id_shield"),#装备盾
- (try_end),
- (try_end),
- (try_end),
- (try_begin),#武器切换判断逻辑2长杆反骑兵,高速敌人(可能骑马)接近时切换盾牌会挨打,因此不改变是否持盾的状态
- (gt, ":enemies_horse", -1),
- (this_or_next|gt,":speedmul",6),
- (gt,":min_dist",600),
- (this_or_next|eq,":cur_type",itp_type_one_handed_wpn),
- (eq,":cur_type",itp_type_two_handed_wpn),
- (try_begin),
- (gt, ":id_use_shield_polearm", 0),
- (agent_set_wielded_item, ":agent_no", ":id_use_shield_polearm",0),
- (else_try),
- (gt, ":id_no_shield_polearm", 0),
- (agent_set_wielded_item, ":agent_no", ":id_no_shield_polearm",0),
- (try_end),
- (try_end),
- (try_begin),#武器切换判断逻辑3长杆反骑兵,这个需要根据MOD适当调整
- (eq,":cur_type",itp_type_polearm),
- (assign, ":polearm_switch", 0),
- (try_begin),
- (gt, ":enemies_horse", -1),
- (lt,":min_dist",500),
- (le,":speedmul",2),
- (assign, ":polearm_switch", 1),
- (else_try),
- (le, ":enemies_horse", 0),
- (lt,":min_dist",1200),
- (assign, ":polearm_switch", 1),
- (try_end),
- (try_begin),
- (eq, ":polearm_switch", 1),
- (try_begin),
- (gt, ":id_no_shield_twohand", 0),
- (neq, ":cur_item", ":id_no_shield_twohand"),
- (agent_set_wielded_item, ":agent_no", ":id_no_shield_twohand",0),
- (else_try),
- (gt, ":id_use_shield_onehand", 0),
- (neq, ":cur_item", ":id_use_shield_onehand"),
- (agent_set_wielded_item, ":agent_no", ":id_use_shield_onehand",0),
- (else_try),
- (gt, ":id_use_shield_twohand", 0),
- (neq, ":cur_item", ":id_use_shield_twohand"),
- (try_begin),
- (lt,":chazhi",100),
- (try_begin),
- (agent_set_wielded_item, ":agent_no", -1,1),#取下盾牌
- (agent_set_wielded_item, ":agent_no", ":id_use_shield_twohand",0),
- (try_end),
- (else_try),
- (agent_set_wielded_item, ":agent_no", ":id_use_shield_twohand",0),
- (try_end),
- (else_try),
- (gt,":zuoshou", 0),
- (agent_set_wielded_item, ":agent_no", -1,1),
- (agent_set_wielded_item, ":agent_no", ":cur_item",0),
- (try_end),
- (try_end),
- (try_end),
- (try_begin),
- (le, ":enemies_horse", 0),
- (lt,":min_dist",1200),
- (eq,":cur_type",itp_type_two_handed_wpn),
- (neg|item_has_property, ":cur_item", itp_two_handed),
- (gt,":zuoshou", 0),
- (lt,":chazhi",100),
- (agent_set_wielded_item, ":agent_no", -1,1),
- (agent_set_wielded_item, ":agent_no", ":cur_item",0),
- (try_end),
- # (try_begin),#武器切换判断逻辑5
- # (le, ":enemies_horse", 0),
- # (lt,":min_dist",1500),
- # (eq,":cur_type",itp_type_polearm),
- # (neg|item_has_property, ":cur_item", itp_two_handed),
- # (gt,":zuoshou", 0),
- # (agent_set_wielded_item, ":agent_no", -1,1),
- # (agent_set_wielded_item, ":agent_no", ":cur_item",0),
- # (try_end),
- (try_end),
- (try_end),
- (try_begin),
- (eq, ":is_archer", 1),
- (ge,":cur_item", 0),
- (neg|item_has_property, ":cur_item", itp_next_item_as_melee),
- (assign, ":archer_switch", 0),
- (lt,":min_dist",600),
- (try_begin),
- (gt, ":enemies_horse", -1),
- (lt,":speedmul",4),
- (assign, ":archer_switch", 1),
- (else_try),
- (le, ":enemies_horse", 0),
- (assign, ":archer_switch", 1),
- (try_end),
- (eq, ":archer_switch", 1),
- (try_begin),
- (eq, ":cur_item", ":id_ranged_weapon"),
- (try_begin),
- (gt, ":id_no_shield_twohand", 0),
- (try_begin),
- (gt, ":id_use_shield_twohand", 0),
- (ge, ":p2", ":p1"),
- (agent_set_wielded_item, ":agent_no", ":id_no_shield_twohand",0),
- (else_try),
- (agent_set_wielded_item, ":agent_no", ":id_no_shield_twohand",0),
- (try_end),
- (else_try),
- (gt, ":id_use_shield_twohand", 0),
- (try_begin),
- (gt, ":id_shield", 0),
- (lt,":chazhi",100),
- (try_begin),
- (gt,":zuoshou", 0),
- (agent_set_wielded_item, ":agent_no", -1,1),#取下盾牌
- (agent_set_wielded_item, ":agent_no", ":id_use_shield_twohand",0),
- (else_try),
- (le,":zuoshou", 0),
- (agent_set_wielded_item, ":agent_no", ":id_use_shield_twohand",0),
- (try_end),
- (else_try),
- (agent_set_wielded_item, ":agent_no", ":id_use_shield_twohand",0),
- (try_end),
- (else_try),
- (gt, ":id_use_shield_onehand", 0),
- (agent_set_wielded_item, ":agent_no", ":id_use_shield_onehand",0),
- (try_begin),
- (gt, ":id_shield", 0),
- (le,":zuoshou", 0),#没装备盾
- (agent_set_wielded_item, ":agent_no", ":id_shield"),#装备盾
- (try_end),
- (else_try),
- (gt, ":id_use_shield_polearm", 0),
- (agent_set_wielded_item, ":agent_no", ":id_use_shield_polearm",0),
- (try_begin),
- (ge,":zuoshou", 0),#装备了盾
- (agent_set_wielded_item, ":agent_no", -1,1),#取下盾牌
- (try_end),
- (else_try),
- (gt, ":id_no_shield_polearm", 0),
- (agent_set_wielded_item, ":agent_no", ":id_no_shield_polearm",0),
- (try_end),
- (else_try),
- (neq, ":cur_item", ":id_ranged_weapon"),
- (try_begin),
- (eq, ":cur_item", ":id_use_shield_twohand"),
- (lt,":chazhi",100),
- (try_begin),
- (ge,":zuoshou", 0),
- (agent_set_wielded_item, ":agent_no", -1,1),
- (agent_set_wielded_item, ":agent_no", ":id_use_shield_twohand",0),
- (try_end),
- (else_try),
- (eq, ":cur_item", ":id_use_shield_polearm"),
- (ge,":zuoshou", 0),
- (agent_set_wielded_item, ":agent_no", -1,1),#取下盾牌
- (agent_set_wielded_item, ":agent_no", ":id_use_shield_polearm",0),
- (try_end),
- (try_end),
- (try_end),
- (try_begin),
- (eq, ":is_archer", 1),
- (neq, ":cur_item", ":id_ranged_weapon"),
- (gt,":min_dist",600),
- (agent_set_wielded_item, ":agent_no", ":id_ranged_weapon",0),
- (try_end),
- (try_begin),#空手切换武器判断逻辑
- (lt,":cur_item", 0),#右手是空手
- (assign, ":kongshou_switch", 0),
- (try_begin),
- (gt, ":enemies_horse", -1),
- (le,":min_dist",2500),#与敌人距离小于等于25米
- (assign, ":kongshou_switch", 1),
- (else_try),
- (le, ":enemies_horse", 0),
- (le,":min_dist",1500),#与敌人距离小于等于15米
- (assign, ":kongshou_switch", 1),
- (try_end),
- (eq, ":kongshou_switch", 1),
- (try_begin),
- (gt, ":id_no_shield_weapon", 0),
- (agent_set_wielded_item, ":agent_no", ":id_no_shield_weapon",0),
- (else_try),
- (gt, ":id_use_shield_weapon", 0),
- (agent_set_wielded_item, ":agent_no", ":id_use_shield_weapon",0),
- (try_end),
- (try_end),
- # (agent_set_slot, ":agent_no", 1800, ":cur_time"),
- (try_end),
- ]),
复制代码
|