from header_common import *
from header_operations import *
from header_mission_templates import *
from header_animations import *
from module_constants import *
####################################################################################################################
# Each mission-template is a tuple that contains the following fields:
# 1) Mission-template id (string): used for referencing mission-templates in other files.
# The prefix mt_ is automatically added before each mission-template id
#
# 2) Mission-template flags (int): See header_mission-templates.py for a list of available flags
# 3) Mission-type(int): Which mission types this mission template matches.
# For mission-types to be used with the default party-meeting system,
# this should be 'charge' or 'charge_with_ally' otherwise must be -1.
#
# 4) Mission description text (string).
# 5) List of spawn records (list): Each spawn record is a tuple that contains the following fields:
# 5.1) entry-no: Troops spawned from this spawn record will use this entry
# 5.2) spawn flags.
# 5.3) alter flags. which equipment will be overriden
# 5.4) ai flags.
# 5.5) Number of troops to spawn.
# 5.6) list of equipment to add to troops spawned from here (maximum
.
# 6) List of triggers (list).
# See module_triggers.py for infomation about triggers.
#
# Please note that mission templates is work in progress and can be changed in the future versions.
#
####################################################################################################################
pilgrim_disguise = [itm_pilgrim_hood,itm_pilgrim_disguise,itm_practice_staff, itm_throwing_daggers]
af_castle_lord = af_override_horse | af_override_weapons| af_require_civilian
mission_templates = [
(
"town_default",0,-1,
"Default town visit",
[(0,mtef_scene_source|mtef_team_0,af_override_horse,0,1,[]),
(1,mtef_scene_source|mtef_team_0,af_override_horse,0,1,[]),(2,mtef_scene_source|mtef_team_0,af_override_horse,0,1,[]),(3,mtef_scene_source|mtef_team_0,af_override_horse,0,1,[]),(4,mtef_scene_source|mtef_team_0,af_override_horse,0,1,[]),(5,mtef_scene_source|mtef_team_0,af_override_horse,0,1,[]),(6,mtef_scene_source|mtef_team_0,af_override_horse,0,1,[]),(7,mtef_scene_source|mtef_team_0,af_override_horse,0,1,[]),
(8,mtef_scene_source,af_override_horse,0,1,[]),(9,mtef_scene_source,af_override_horse,0,1,[]),(10,mtef_scene_source,af_override_horse,0,1,[]),(11,mtef_scene_source,af_override_horse,0,1,[]),
(12,mtef_scene_source,af_override_horse,0,1,[]),(13,mtef_scene_source,0,0,1,[]),(14,mtef_scene_source,0,0,1,[]),(15,mtef_scene_source,0,0,1,[]),
(16,mtef_visitor_source,af_override_horse,0,1,[]),(17,mtef_visitor_source,af_override_horse,0,1,[]),(18,mtef_visitor_source,af_override_horse,0,1,[]),(19,mtef_visitor_source,af_override_horse,0,1,[]),(20,mtef_visitor_source,af_override_horse,0,1,[]),(21,mtef_visitor_source,af_override_horse,0,1,[]),(22,mtef_visitor_source,af_override_horse,0,1,[]),(23,mtef_visitor_source,af_override_horse,0,1,[]),(24,mtef_visitor_source,af_override_horse,0,1,[]),
(25,mtef_visitor_source,af_override_horse,0,1,[]),(26,mtef_visitor_source,af_override_horse,0,1,[]),(27,mtef_visitor_source,af_override_horse,0,1,[]),(28,mtef_visitor_source,af_override_horse,0,1,[]),(29,mtef_visitor_source,af_override_horse,0,1,[]),(30,mtef_visitor_source,af_override_horse,0,1,[]),(31,mtef_visitor_source,af_override_horse,0,1,[])
],
[
(1, 0, ti_once, [], [
(store_current_scene, ":cur_scene"),
(scene_set_slot, ":cur_scene", slot_scene_visited, 1),
]),
(ti_before_mission_start, 0, 0, [], [(call_script, "script_change_banners")]),
(ti_inventory_key_pressed, 0, 0, [(set_trigger_result,1)], []),
(ti_tab_pressed, 0, 0, [(set_trigger_result,1)], []),
],
),
.....................
.....................
.....................
.....................
.....................
(
"custom_battle_5",mtf_battle_mode,-1,
"You lead your men to battle.",
[
(0,mtef_visitor_source|mtef_team_0,af_override_horse,aif_start_alarmed,1,[]),
(1,mtef_visitor_source|mtef_team_0,af_override_horse,aif_start_alarmed,1,[]),
(2,mtef_visitor_source|mtef_team_0,af_override_horse,aif_start_alarmed,1,[]),
(3,mtef_visitor_source|mtef_team_0,af_override_horse,aif_start_alarmed,1,[]),
(4,mtef_visitor_source|mtef_team_0,af_override_horse,aif_start_alarmed,1,[]),
(5,mtef_visitor_source|mtef_team_0,af_override_horse,aif_start_alarmed,1,[]),
(6,mtef_visitor_source|mtef_team_0,af_override_horse,aif_start_alarmed,1,[]),
(7,mtef_visitor_source|mtef_team_0,af_override_horse,aif_start_alarmed,1,[]),
(8,mtef_visitor_source|mtef_team_1,af_override_horse,aif_start_alarmed,1,[]),
(9,mtef_visitor_source|mtef_team_1,af_override_horse,aif_start_alarmed,1,[]),
(10,mtef_visitor_source|mtef_team_1,af_override_horse,aif_start_alarmed,1,[]),
(11,mtef_visitor_source|mtef_team_1,af_override_horse,aif_start_alarmed,1,[]),
(12,mtef_visitor_source|mtef_team_1,af_override_horse,aif_start_alarmed,1,[]),
(13,mtef_visitor_source|mtef_team_1,af_override_horse,aif_start_alarmed,1,[]),
(14,mtef_visitor_source|mtef_team_1,af_override_horse,aif_start_alarmed,1,[]),
(15,mtef_visitor_source|mtef_team_1,af_override_horse,aif_start_alarmed,1,[]),
],
[
(ti_tab_pressed, 0, 0, [],
[(question_box,"str_give_up_fight")]),
(ti_question_answered, 0, 0, [],
[(store_trigger_param_1,":answer"),
(eq,":answer",0),
(assign, "$g_battle_result", -1),
(assign, "$g_custom_battle_team1_death_count", 0),
(assign, "$g_custom_battle_team2_death_count", 0),
(try_for_agents, ":cur_agent"),
(agent_is_human, ":cur_agent"),
(neg|agent_is_alive, ":cur_agent"),
(agent_get_team, ":cur_team", ":cur_agent"),
(try_begin),
(eq, ":cur_team", 0),
(val_add, "$g_custom_battle_team1_death_count", 1),
(else_try),
(val_add, "$g_custom_battle_team2_death_count", 1),
(try_end),
(try_end),
(finish_mission),]),
(ti_inventory_key_pressed, 0, 0, [(display_message,"str_cant_use_inventory_now")], []),
(1, 4, ti_once, [(this_or_next|main_hero_fallen),(num_active_teams_le,1)],
[
(assign,"$g_battle_result",0),
(try_begin),
(neg|main_hero_fallen),
(assign,"$g_battle_result",1),
(else_try),
(assign,"$g_battle_result",-1),
(try_end),
(assign, "$g_custom_battle_team1_death_count", 0),
(assign, "$g_custom_battle_team2_death_count", 0),
(try_for_agents, ":cur_agent"),
(agent_is_human, ":cur_agent"),
(neg|agent_is_alive, ":cur_agent"),
(agent_get_team, ":cur_team", ":cur_agent"),
(try_begin),
(eq, ":cur_team", 0),
(val_add, "$g_custom_battle_team1_death_count", 1),
(else_try),
(val_add, "$g_custom_battle_team2_death_count", 1),
(try_end),
(try_end),
(finish_mission),
]),
#AI Tiggers
(0, 0, ti_once, [
(assign, "$ai_team", 1),
(team_give_order, "$ai_team", grc_infantry, mordr_stand_closer),
(team_give_order, "$ai_team", grc_infantry, mordr_stand_closer),
(team_give_order, "$ai_team", grc_archers, mordr_stand_ground),
(entry_point_get_position,pos8,
,
(team_give_order, "$ai_team", grc_infantry, mordr_hold),
(team_set_order_position, "$ai_team", grc_everyone, pos
,
], []),
(5, 0, 0, [], [ #Make sure attackers do not stall on the ladders...
(assign, "$attacker_team", 0),
(try_for_agents, ":agent_no"),
(agent_is_human, ":agent_no"),
(agent_is_alive, ":agent_no"),
(agent_get_team, ":agent_team", ":agent_no"),
(eq, "$attacker_team", ":agent_team"),
(agent_ai_set_always_attack_in_melee, ":agent_no", 1),
(try_end),
]),
#refill ammo of defenders every two minutes.
(120, 0, 0, [], [
(assign, "$defender_team", 1),
(try_for_agents,":cur_agent"),
(agent_get_team, ":agent_team", ":cur_agent"),
(eq, "$defender_team", ":agent_team"),
(agent_is_alive, ":cur_agent"),
(agent_is_human, ":cur_agent"),
(agent_refill_ammo, ":cur_agent"),
(try_end)]),
],
),
######Tactical triggers below##########
(ti_before_mission_start, 0, 0, [],
[ (assign,"$formation",0),
(assign,"$infantryformationtype",0),
(assign,"$archerformationtype",0),
(assign,"$cavalryformationtype",0),]),
(0, 0, 0,
[(key_clicked, key_2),
(assign,"$formation",grc_infantry),
], []),
(0, 0, 0,
[(key_clicked, key_3),
(assign,"$formation",grc_archers),
], []),
(0, 0, 0,
[(key_clicked, key_4),
(assign,"$formation",grc_cavalry),
], []),
(0, 0, 0,
[(key_clicked, key_j),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,"$formation"),
(call_script,"script_cf_formation"),
(try_begin),
(eq,"$formation",grc_infantry),
(assign,"$infantryformationtype",1),
(else_try),
(eq,"$formation",grc_archers),
(assign,"$archerformationtype",1),
(else_try),
(eq,"$formation",grc_cavalry),
(assign,"$cavalryformationtype",1),
(end_try),
(display_message,"@Forming_ranks."),
], []),
(0, 0, 0,
[(key_clicked, key_p),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,"$formation"),
(call_script,"script_cf_formation_stagger"),
(call_script,"script_cf_formation"),
(try_begin),
(eq,"$formation",grc_infantry),
(assign,"$infantryformationtype",3),
(else_try),
(eq,"$formation",grc_archers),
(assign,"$archerformationtype",3),
(else_try),
(eq,"$formation",grc_cavalry),
(assign,"$cavalryformationtype",3),
(end_try),
(display_message,"@Forming_a_line."),
], []),
(0, 0, 0,
[(key_clicked, key_k),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,"$formation"),
(call_script,"script_cf_formation_wedge"),
(call_script,"script_cf_formation"),
(try_begin),
(eq,"$formation",grc_infantry),
(assign,"$infantryformationtype",2),
(else_try),
(eq,"$formation",grc_archers),
(assign,"$archerformationtype",2),
(else_try),
(eq,"$formation",grc_cavalry),
(assign,"$cavalryformationtype",2),
(end_try),
(display_message,"@Forming_a_wedge."),
], []),
(0, 0, 0,
[(key_clicked, key_u),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,"$formation"),
(call_script,"script_formation_end"),
(call_script,"script_cf_formation"),
(try_begin),
(eq,"$formation",grc_infantry),
(assign,"$infantryformationtype",0),
(else_try),
(eq,"$formation",grc_archers),
(assign,"$archerformationtype",0),
(else_try),
(eq,"$formation",grc_cavalry),
(assign,"$cavalryformationtype",0),
(end_try),
(display_message,"@Formation_disassembled."),
], []),
(5.0, 0, 0,
[(try_for_agents,":agent"),
(agent_is_human,":agent"),
(neg|agent_is_ally,":agent"),
(assign,":enemy",":agent"),
(end_try),
(gt,":enemy",-1),
(agent_get_team ,reg0, ":enemy"),
(assign,reg1,grc_cavalry),
(call_script,"script_formation_end"),
(assign,reg1,grc_infantry),
(call_script,"script_formation_end"),
(assign,reg1,grc_archers),
(call_script,"script_formation_end"),], []),
(5.0, 0, 0,
[(assign,":enemy",-1),
(assign,":infantry",0),
(assign,":cavalry",0),
(try_for_agents,":agent"),
(agent_is_human,":agent"),
(agent_is_alive,":agent"),
(neg|agent_is_ally,":agent"),
(assign,":enemy",":agent"),
(agent_get_class ,":class", ":agent"),
(try_begin),
(eq,":class",grc_cavalry),
(val_add,":cavalry",1),
(else_try),
(val_add,":infantry",1),
(end_try),
(end_try),
(gt,":enemy",-1),
(agent_get_team ,reg0, ":enemy"),
(assign,":ratio",":infantry"),
(val_div,":ratio",":cavalry"),
(try_begin),
(gt,":ratio",2),
(lt,":cavalry",10),
(team_give_order, reg0, grc_everyone, mordr_dismount),
(else_try),
(team_give_order, reg0, grc_everyone, mordr_mount),
(end_try),], []),
(5.0, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(val_add,reg0,2),
(assign,reg1,grc_cavalry),
(call_script,"script_formation_end"),
(assign,reg1,grc_infantry),
(call_script,"script_formation_end"),
(assign,reg1,grc_archers),
(call_script,"script_formation_end"),], []),
(5.0, 0, 0,
[(neq, "$battle_won", 1),
(assign,":infantry",0),
(assign,":cavalry",0),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(val_add,reg0,2),
(try_for_agents,":agent"),
(agent_is_human,":agent"),
(agent_is_alive,":agent"),
(agent_get_team ,":team", ":agent"),
(eq,":team",reg0),
(agent_get_class ,":class", ":agent"),
(try_begin),
(eq,":class",grc_cavalry),
(val_add,":cavalry",1),
(else_try),
(val_add,":infantry",1),
(end_try),
(end_try),
(assign,":ratio",":infantry"),
(val_div,":ratio",":cavalry"),
(try_begin),
(gt,":ratio",2),
(lt,":cavalry",10),
(team_give_order, reg0, grc_everyone, mordr_dismount),
(else_try),
(team_give_order, reg0, grc_everyone, mordr_mount),
(end_try),], []),
(0.2, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,grc_infantry),
(try_begin),
(eq,"$infantryformationtype",1),
(call_script,"script_cf_formation"),
(else_try),
(eq,"$infantryformationtype",2),
(call_script,"script_cf_formation_wedge"),
(else_try),
(eq,"$infantryformationtype",3),
(call_script,"script_cf_formation_stagger"),
(else_try),
(call_script,"script_formation_end"),
(end_try),], []),
(0.2, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,grc_archers),
(try_begin),
(eq,"$archerformationtype",1),
(call_script,"script_cf_formation"),
(else_try),
(eq,"$archerformationtype",2),
(call_script,"script_cf_formation_wedge"),
(else_try),
(eq,"$archerformationtype",3),
(call_script,"script_cf_formation_stagger"),
(else_try),
(call_script,"script_formation_end"),
(end_try),], []),
(0.2, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,grc_cavalry),
(try_begin),
(eq,"$cavalryformationtype",1),
(call_script,"script_cf_formation"),
(else_try),
(eq,"$cavalryformationtype",2),
(call_script,"script_cf_formation_wedge"),
(else_try),
(eq,"$cavalryformationtype",3),
(call_script,"script_cf_formation_stagger"),
(else_try),
(call_script,"script_formation_end"),
(end_try),], []),
(0.2, 0, 0,
[(try_for_agents,":agent"),
(agent_is_human,":agent"),
(neg|agent_is_ally,":agent"),
(assign,":enemy",":agent"),
(end_try),
(gt,":enemy",-1),
(agent_get_team ,reg0, ":enemy"),
(store_normalized_team_count,":num", reg0),
(gt,":num",5),
(assign,reg1,grc_infantry),
(call_script,"script_cf_formation"),
], []),
(0.2, 0, 0,
[(try_for_agents,":agent"),
(agent_is_human,":agent"),
(neg|agent_is_ally,":agent"),
(assign,":enemy",":agent"),
(end_try),
(gt,":enemy",-1),
(agent_get_team ,reg0, ":enemy"),
(store_normalized_team_count,":num", reg0),
(gt,":num",5),
(assign,reg1,grc_archers),
(call_script,"script_cf_formation_stagger"),
], []),
(0.2, 0, 0,
[(try_for_agents,":agent"),
(agent_is_human,":agent"),
(neg|agent_is_ally,":agent"),
(assign,":enemy",":agent"),
(end_try),
(gt,":enemy",-1),
(agent_get_team ,reg0, ":enemy"),
(store_normalized_team_count,":num", reg0),
(gt,":num",5),
(assign,reg1,grc_cavalry),
(call_script,"script_cf_formation_wedge"),
], []),
(0.2, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(val_add,reg0,2),
(store_normalized_team_count,":num", reg0),
(gt,":num",5),
(assign,reg1,grc_infantry),
(call_script,"script_cf_formation"),
], []),
(0.2, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(val_add,reg0,2),
(store_normalized_team_count,":num", reg0),
(gt,":num",5),
(assign,reg1,grc_archers),
(call_script,"script_cf_formation_stagger"),
], []),
(0.2, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(val_add,reg0,2),
(store_normalized_team_count,":num", reg0),
(gt,":num",5),
(assign,reg1,grc_cavalry),
(call_script,"script_cf_formation_wedge"),
], []),
##########Tactical triggers above########
]