151
Prophesy of Pendor / Re: Справочник по твикам РоР (UPD 30 от 06.05.2016 15:22)
« : 05 Июня, 2016, 21:58 »НИПОНЯЛ. Какое меню? Какой атаки?Код с модульки нативе меню атаки замка и меню защиты замка
Код: [Выделить]
(
"siege_started_defender",0,
"{s1} is launching an assault against the walls of {s2}. You have {reg10} troops fit for battle against the enemy's {reg11}. You decide to...",
"none",
[
(select_enemy,1),
(assign, "$g_enemy_party", "$g_encountered_party_2"),
(assign, "$g_ally_party", "$g_encountered_party"),
(str_store_party_name, 1,"$g_enemy_party"),
(str_store_party_name, 2,"$g_ally_party"),
(call_script, "script_encounter_calculate_fit"),
(try_begin),
(eq, "$g_siege_first_encounter", 1),
(call_script, "script_let_nearby_parties_join_current_battle", 0, 1),
(call_script, "script_encounter_init_variables"),
(try_end),
(try_begin),
(eq, "$g_siege_first_encounter", 0),
(try_begin),
(call_script, "script_party_count_members_with_full_health", "p_collective_enemy"),
(assign, ":num_enemy_regulars_remaining", reg0),
(call_script, "script_party_count_members_with_full_health", "p_collective_friends"),
(assign, ":num_ally_regulars_remaining", reg0),
(assign, ":enemy_finished", 0),
(try_begin),
(eq, "$g_battle_result", 1),
(eq, ":num_enemy_regulars_remaining", 0), #battle won (TODO : compare with num_routed_us)
(assign, ":enemy_finished",1),
(else_try),
(eq, "$g_engaged_enemy", 1),
(le, "$g_enemy_fit_for_battle",0),
(ge, "$g_friend_fit_for_battle",1),
(assign, ":enemy_finished",1),
(try_end),
(this_or_next|eq, ":enemy_finished",1),
(eq,"$g_enemy_surrenders",1),
(assign, "$g_next_menu", -1),
(jump_to_menu, "mnu_total_victory"),
(else_try),
(assign, ":battle_lost", 0),
(try_begin),
(this_or_next|eq, "$g_battle_result", -1),
(troop_is_wounded, "trp_player"),
(eq, ":num_ally_regulars_remaining", 0), #(TODO : compare with num_routed_allies)
(assign, ":battle_lost",1),
(try_end),
(this_or_next|eq, ":battle_lost",1),
(eq,"$g_player_surrenders",1),
(assign, "$g_next_menu", "mnu_captivity_start_under_siege_defeat"),
(jump_to_menu, "mnu_total_defeat"),
(else_try),
# Ordinary victory/defeat.
(assign, ":attackers_retreat", 0),
(try_begin),
#check whether enemy retreats
(eq, "$g_battle_result", 1),
## (store_mul, ":min_enemy_str", "$g_enemy_fit_for_battle", 2),
## (lt, ":min_enemy_str", "$g_friend_fit_for_battle"),
(assign, ":attackers_retreat", 1),
(else_try),
(eq, "$g_battle_result", 0),
(store_div, ":min_enemy_str", "$g_enemy_fit_for_battle", 3),
(lt, ":min_enemy_str", "$g_friend_fit_for_battle"),
(assign, ":attackers_retreat", 1),
(else_try),
(store_random_in_range, ":random_no", 0, 100),
(store_mul, ":num_ally_regulars_remaining_multiplied", ":num_ally_regulars_remaining", 13),
(val_div, ":num_ally_regulars_remaining_multiplied", 10),
(ge, ":num_ally_regulars_remaining_multiplied", ":num_enemy_regulars_remaining"),
(lt, ":random_no", 10),
(neq, "$new_encounter", 1),
(assign, ":attackers_retreat", 1),
(try_end),
(try_begin),
(eq, ":attackers_retreat", 1),
(party_get_slot, ":siege_hardness", "$g_encountered_party", slot_center_siege_hardness),
(val_add, ":siege_hardness", 100),
(party_set_slot, "$g_encountered_party", slot_center_siege_hardness, ":siege_hardness"),
(party_set_slot, "$g_enemy_party", slot_party_retreat_flag, 1),
(try_for_range, ":troop_no", active_npcs_begin, active_npcs_end),
(troop_slot_eq, ":troop_no", slot_troop_occupation, slto_kingdom_hero),
#(troop_slot_eq, ":troop_no", slot_troop_is_prisoner, 0),
(neg|troop_slot_ge, ":troop_no", slot_troop_prisoner_of_party, 0),
(troop_get_slot, ":party_no", ":troop_no", slot_troop_leaded_party),
(gt, ":party_no", 0),
(party_slot_eq, ":party_no", slot_party_ai_state, spai_besieging_center),
(party_slot_eq, ":party_no", slot_party_ai_object, "$g_encountered_party"),
(party_slot_eq, ":party_no", slot_party_ai_substate, 1),
(call_script, "script_party_set_ai_state", ":party_no", spai_undefined, -1),
(call_script, "script_party_set_ai_state", ":party_no", spai_besieging_center, "$g_encountered_party"),
(try_end),
(display_message, "@The enemy has been forced to retreat. The assault is over, but the siege continues."),
(assign, "$g_battle_simulation_cancel_for_party", "$g_encountered_party"),
(leave_encounter),
(change_screen_return),
(assign, "$g_battle_simulation_auto_enter_town_after_battle", "$g_encountered_party"),
(try_end),
(try_end),
(try_end),
(assign, "$g_siege_first_encounter", 0),
(assign, "$new_encounter", 0),
],
[
("siege_defender_join_battle",
[
(neg|troop_is_wounded, "trp_player"),
],
"Join the battle.",[
(party_set_next_battle_simulation_time, "$g_encountered_party", -1),
(assign, "$g_battle_result", 0),
(try_begin),
(party_slot_eq, "$g_encountered_party", slot_party_type, spt_town),
(party_get_slot, ":battle_scene", "$g_encountered_party", slot_town_walls),
(else_try),
(party_get_slot, ":battle_scene", "$g_encountered_party", slot_castle_exterior),
(try_end),
(call_script, "script_calculate_battle_advantage"),
(val_mul, reg0, 2),
(val_div, reg0, 3), #scale down the advantage a bit.
(set_battle_advantage, reg0),
(set_party_battle_mode),
(try_begin),
(party_slot_eq, "$current_town", slot_center_siege_with_belfry, 1),
(set_jump_mission,"mt_castle_attack_walls_belfry"),
(else_try),
(set_jump_mission,"mt_castle_attack_walls_ladder"),
(try_end),
(jump_to_scene,":battle_scene"),
(assign, "$g_next_menu", "mnu_siege_started_defender"),
(jump_to_menu, "mnu_battle_debrief"),
(change_screen_mission)]),
("siege_defender_troops_join_battle",[(call_script, "script_party_count_members_with_full_health", "p_main_party"),
(this_or_next|troop_is_wounded, "trp_player"),
(ge, reg0, 3)],
"Order your men to join the battle without you.",[
(party_set_next_battle_simulation_time, "$g_encountered_party", -1),
(select_enemy,1),
(assign,"$g_enemy_party","$g_encountered_party_2"),
(assign,"$g_ally_party","$g_encountered_party"),
(assign,"$g_siege_join", 1),
(jump_to_menu,"mnu_siege_join_defense")]),
]
),
(
"siege_join_defense",mnf_disable_all_keys,
"{s4}^^Your casualties: {s8}^^Allies' casualties: {s9}^^Enemy casualties: {s10}",
"none",
[
(try_begin),
(eq, "$g_siege_join", 1),
(call_script, "script_party_calculate_strength", "p_main_party", 1), #skip player
(assign, ":player_party_strength", reg0),
(val_div, ":player_party_strength", 5),
(else_try),
(assign, ":player_party_strength", 0),
(try_end),
(call_script, "script_party_calculate_strength", "p_collective_ally", 0),
(assign, ":ally_party_strength", reg0),
(val_div, ":ally_party_strength", 5),
(call_script, "script_party_calculate_strength", "p_collective_enemy", 0),
(assign, ":enemy_party_strength", reg0),
(val_div, ":enemy_party_strength", 10),
(store_add, ":friend_party_strength", ":player_party_strength", ":ally_party_strength"),
(try_begin),
(eq, ":friend_party_strength", 0),
(store_div, ":enemy_party_strength_for_p", ":enemy_party_strength", 2),
(else_try),
(assign, ":enemy_party_strength_for_p", ":enemy_party_strength"),
(val_mul, ":enemy_party_strength_for_p", ":player_party_strength"),
(val_div, ":enemy_party_strength_for_p", ":friend_party_strength"),
(try_end),
(val_sub, ":enemy_party_strength", ":enemy_party_strength_for_p"),
(inflict_casualties_to_party_group, "p_main_party", ":enemy_party_strength_for_p", "p_temp_casualties"),
(call_script, "script_print_casualties_to_s0", "p_temp_casualties", 0),
(str_store_string_reg, s8, s0),
(inflict_casualties_to_party_group, "$g_ally_party", ":enemy_party_strength", "p_temp_casualties"),
(call_script, "script_print_casualties_to_s0", "p_temp_casualties", 0),
(str_store_string_reg, s9, s0),
(party_collect_attachments_to_party, "$g_ally_party", "p_collective_ally"),
(inflict_casualties_to_party_group, "$g_enemy_party", ":friend_party_strength", "p_temp_casualties"),
(call_script, "script_print_casualties_to_s0", "p_temp_casualties", 0),
(str_store_string_reg, s10, s0),
(party_collect_attachments_to_party, "$g_enemy_party", "p_collective_enemy"),
(try_begin),
(call_script, "script_party_count_members_with_full_health","p_main_party"),
(le, reg0, 0),
(str_store_string, s4, "str_siege_defender_order_attack_failure"),
(else_try),
(call_script, "script_party_count_members_with_full_health","p_collective_enemy"),
(le, reg0, 0),
(assign, "$g_battle_result", 1),
(str_store_string, s4, "str_siege_defender_order_attack_success"),
(else_try),
(str_store_string, s4, "str_siege_defender_order_attack_continue"),
(try_end),
],
[
("continue",[],"Continue...",[
(jump_to_menu,"mnu_siege_started_defender"),
]),
]
),
Добавлено: 05 Июня, 2016, 21:59
Код: [Выделить]
(
"castle_attack_walls_belfry",mtf_battle_mode|mtf_synch_inventory,-1,
"You attack the walls of the castle...",
[
(0,mtef_attackers|mtef_team_1,af_override_horse,aif_start_alarmed,12,[]),
(0,mtef_attackers|mtef_team_1,af_override_horse,aif_start_alarmed,0,[]),
(10,mtef_defenders|mtef_team_0,af_override_horse,aif_start_alarmed,0,[]),
(11,mtef_defenders|mtef_team_0,af_override_horse,aif_start_alarmed,7,[]),
(15,mtef_defenders|mtef_team_0,af_override_horse,aif_start_alarmed,0,[]),
(40,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
(41,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
(42,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
(43,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
(44,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
(45,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
(46,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
(47,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
],
[
common_battle_mission_start,
common_battle_tab_press,
common_battle_init_banner,
common_siege_question_answered,
common_siege_init,
common_music_situation_update,
common_siege_ai_trigger_init,
common_siege_ai_trigger_init_2,
(0, 0, ti_once,
[
(set_show_messages, 0),
(team_give_order, "$attacker_team", grc_everyone, mordr_spread_out),
(team_give_order, "$attacker_team", grc_everyone, mordr_spread_out),
(team_give_order, "$attacker_team", grc_everyone, mordr_spread_out),
(set_show_messages, 1),
], []),
(ti_on_agent_killed_or_wounded, 0, 0, [],
[
(store_trigger_param_1, ":dead_agent_no"),
(store_trigger_param_2, ":killer_agent_no"),
(store_trigger_param_3, ":is_wounded"),
(try_begin),
(ge, ":dead_agent_no", 0),
(neg|agent_is_ally, ":dead_agent_no"),
(agent_is_human, ":dead_agent_no"),
(agent_get_troop_id, ":dead_agent_troop_id", ":dead_agent_no"),
(str_store_troop_name, s6, ":dead_agent_troop_id"),
(assign, reg0, ":dead_agent_no"),
(assign, reg1, ":killer_agent_no"),
(assign, reg2, ":is_wounded"),
(agent_get_team, reg3, ":dead_agent_no"),
#(display_message, "@{!}dead agent no : {reg0} ; killer agent no : {reg1} ; is_wounded : {reg2} ; dead agent team : {reg3} ; {s6} is added"),
(party_add_members, "p_total_enemy_casualties", ":dead_agent_troop_id", 1), #addition_to_p_total_enemy_casualties
(eq, ":is_wounded", 1),
(party_wound_members, "p_total_enemy_casualties", ":dead_agent_troop_id", 1),
(try_end),
]),
common_siege_ai_trigger_init_after_2_secs,
common_siege_defender_reinforcement_check,
common_siege_defender_reinforcement_archer_reposition,
common_siege_attacker_reinforcement_check,
common_siege_attacker_do_not_stall,
common_battle_check_friendly_kills,
common_battle_check_victory_condition,
common_battle_victory_display,
common_siege_refill_ammo,
common_siege_check_defeat_condition,
common_battle_order_panel,
common_battle_order_panel_tick,
common_inventory_not_available,
common_siege_init_ai_and_belfry,
common_siege_move_belfry,
common_siege_rotate_belfry,
common_siege_assign_men_to_belfry,
],
),
(
"castle_attack_walls_ladder",mtf_battle_mode|mtf_synch_inventory,-1,
"You attack the walls of the castle...",
[
(0,mtef_attackers|mtef_team_1,af_override_horse,aif_start_alarmed,12,[]),
(0,mtef_attackers|mtef_team_1,af_override_horse,aif_start_alarmed,0,[]),
(10,mtef_defenders|mtef_team_0,af_override_horse,aif_start_alarmed,0,[]),
(11,mtef_defenders|mtef_team_0,af_override_horse,aif_start_alarmed,7,[]),
(15,mtef_defenders|mtef_team_0,af_override_horse,aif_start_alarmed,0,[]),
(40,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
(41,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
(42,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
(43,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
(44,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
(45,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
(46,mtef_defenders|mtef_team_0|mtef_archers_first,af_override_horse,aif_start_alarmed,1,[]),
],
[
common_battle_mission_start,
common_battle_tab_press,
common_battle_init_banner,
common_siege_question_answered,
common_siege_init,
common_music_situation_update,
common_siege_ai_trigger_init,
common_siege_ai_trigger_init_2,
common_siege_ai_trigger_init_after_2_secs,
common_siege_defender_reinforcement_check,
common_siege_defender_reinforcement_archer_reposition,
common_siege_attacker_reinforcement_check,
common_siege_attacker_do_not_stall,
common_battle_check_friendly_kills,
common_battle_check_victory_condition,
common_battle_victory_display,
common_siege_refill_ammo,
common_siege_check_defeat_condition,
common_battle_order_panel,
common_battle_order_panel_tick,
common_inventory_not_available,
(ti_on_agent_killed_or_wounded, 0, 0, [],
[
(store_trigger_param_1, ":dead_agent_no"),
(store_trigger_param_2, ":killer_agent_no"),
(store_trigger_param_3, ":is_wounded"),
(try_begin),
(ge, ":dead_agent_no", 0),
(neg|agent_is_ally, ":dead_agent_no"),
(agent_is_human, ":dead_agent_no"),
(agent_get_troop_id, ":dead_agent_troop_id", ":dead_agent_no"),
(str_store_troop_name, s6, ":dead_agent_troop_id"),
(assign, reg0, ":dead_agent_no"),
(assign, reg1, ":killer_agent_no"),
(assign, reg2, ":is_wounded"),
(agent_get_team, reg3, ":dead_agent_no"),
#(display_message, "@{!}dead agent no : {reg0} ; killer agent no : {reg1} ; is_wounded : {reg2} ; dead agent team : {reg3} ; {s6} is added"),
(party_add_members, "p_total_enemy_casualties", ":dead_agent_troop_id", 1), #addition_to_p_total_enemy_casualties
(eq, ":is_wounded", 1),
(party_wound_members, "p_total_enemy_casualties", ":dead_agent_troop_id", 1),
(try_end),
]),