#DRQ modified hunting mod - from Highlander
#copy of first mission line
# "deer_hunting",mtf_battle_mode,-1,
(
"deer_hunting",mtf_battle_mode,charge,
"You ride out after the prey. Hit [TAB] at any time to end the hunt.",
[
(1,mtef_team_0|mtef_use_exact_number,0,aif_start_alarmed,4,[]),
(4,mtef_visitor_source,0,aif_start_alarmed,0,[]),
(4,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,0,[]),#now they start at entry #8
],
[
#DRQ let's see if we get banners
common_battle_init_banner,
(ti_tab_pressed, 0, 0,
[
(set_trigger_result,1)
],
[]), #leaving area
# common_inventory_not_available,#DRQ making sure we don't open the chest
#disabling this to check if the treasure chests are available
#DRQ to get minimap
common_battle_order_panel,
common_battle_order_panel_tick,
(0, 0, ti_once, [
#spawning deers
#(party_count_members_of_type,":num_deers","$g_encountered_party","trp_gazelle"),
(assign,":num_deers","$game_found"),#DRQ
#DRQ spawn some opponents
(get_scene_boundaries, pos10,pos11),
(position_get_x, ":scene_min_x", pos10),
(position_get_x, ":scene_max_x", pos11),
(position_get_y, ":scene_min_y", pos10),
(position_get_y, ":scene_max_y", pos11),
(store_div,":border_x",":scene_max_x",10),
(val_add,":scene_min_x",":border_x"),
(val_sub,":scene_max_x",":border_x"),
(store_div,":border_y",":scene_max_y",10),
(val_add,":scene_min_y",":border_y"),
(val_sub,":scene_max_y",":border_y"),
(store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
(store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
(init_position, pos1),
(position_set_x,pos1,":x_pos"),
(position_set_y,pos1,":y_pos"),
(position_set_z,pos1,10000),
(position_set_z_to_ground_level,pos1),
(set_spawn_position, pos1),
#DRQ set prey type
(try_begin),
(eq,"$prey_type",1),
(assign,"$prey","itm_gazelle"),
(else_try),
(eq,"$prey_type",2),
(assign,"$prey","itm_dino"),
(else_try),
(eq,"$prey_type",3),
(assign,"$prey","itm_duckbill"),
(try_end),
#DRQ end setting prey type
(ge,":num_deers",0),
(assign,"$num_deers_killed",0),(assign,"$predators_killed",0),
(get_scene_boundaries, pos10,pos11),
(position_get_x, ":scene_min_x", pos10),
(position_get_x, ":scene_max_x", pos11),
(position_get_y, ":scene_min_y", pos10),
(position_get_y, ":scene_max_y", pos11),
(store_div,":border_x",":scene_max_x",10),
(val_add,":scene_min_x",":border_x"),
(val_sub,":scene_max_x",":border_x"),
(store_div,":border_y",":scene_max_y",10),
(val_add,":scene_min_y",":border_y"),
(val_sub,":scene_max_y",":border_y"),
(store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
(store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
(init_position, pos1),
(position_set_x,pos1,":x_pos"),
(position_set_y,pos1,":y_pos"),
(position_set_z,pos1,10000),
(position_set_z_to_ground_level,pos1),
(set_spawn_position, pos1),
#AHA! this block spawns a 'herd leader' - so total to spawn in the next block should be -1
#this works
(spawn_horse, "$prey"),
(str_store_item_name,s9,"$prey"),
# (display_message,"@Spawning {s9}."),
(assign,"$leading_deer",reg0),
(val_sub,":num_deers",1),#DRQ correcting number of prey found - this works
(ge,":num_deers",0),#from Ramaraunt
(try_for_range,":unused",0,":num_deers"),#was 0,":num_deers" - i think this was my bug!
(init_position, pos1),
(store_random_in_range,":x_pos_add",0,1000),
(store_random_in_range,":y_pos_add",0,1000),
(val_add,":x_pos_add",":x_pos"),
(val_add,":y_pos_add",":y_pos"),
(position_set_x,pos1,":x_pos_add"),
(position_set_y,pos1,":y_pos_add"),
(position_set_z,pos1,10000),
(position_set_z_to_ground_level,pos1),
(set_spawn_position, pos1),
(spawn_horse, "$prey"),
(try_end),
#DRQ add enemies
#is this necessary? commenting out to see
#should this be a separate trigger?
#DRQ adding companions - automatically make them follow
## DRQ AUTO FOLLOW
(get_player_agent_no, ":player_agent"),
(agent_get_team, ":player_team", ":player_agent"),
# (set_show_messages, 0),
(team_give_order, ":player_team", grc_everyone, mordr_follow),
# (set_show_messages, 1),
## DRQ END AUTO FOLLOW
], []),
(0, 0, ti_once,[
(try_begin),
(gt,"$predator_no",0),
(add_visitors_to_current_scene, 4, "$predator_type", "$predator_no"),
(str_store_troop_name_plural,s10,"$predator_type"),
(display_message,"@Warning! {s10} sighted!",0xfc2626),
(try_end),
],[]),
#wounded deers move slower
(1,0,0,[],
[(try_for_agents,reg(1)),
(agent_get_item_id,reg(2),reg(1)),
(eq,reg(2),"$prey"),
(store_agent_hit_points,reg(2),reg(1)),
(store_mul,reg(3),20,reg(2)),
(val_div,reg(3),40),
(agent_set_speed_limit,reg(1),reg(3)),
(try_end),
]),
(5,0,0,
[
(neg|agent_is_alive,"$leading_deer"),
],
[
(try_for_agents,reg(1)),
(agent_get_item_id,reg(2),reg(1)),
(eq,reg(2),"$prey"),
(assign,"$leading_deer",reg(1)),
(try_end),
]),
(1,0,0,[],
[
(assign,":num_kills",0),(assign,":num_predator_kills",0),
(try_for_agents,reg(1)),
(agent_get_item_id,reg(2),reg(1)),
(try_begin),
(eq,reg(2),"$prey"),
(store_agent_hit_points,reg(2),reg(1)),
(eq,reg(2),0),
(val_add,":num_kills",1),
(else_try),
(eq,reg(2),"$predator_type"),
(store_agent_hit_points,reg(2),reg(1)),
(eq,reg(2),0),
(val_add,":num_predator_kills",1),
(try_end),
(try_end),
# #DRQ backup code block testing for kills
# (try_for_agents,reg(1)),
# (agent_get_item_id,reg(2),reg(1)),
# (eq,reg(2),"$prey"),
# (store_agent_hit_points,reg(2),reg(1)),
# (eq,reg(2),0),
# (val_add,":num_kills",1),
# (try_end),
(gt,":num_kills","$num_deers_killed"),
(get_scene_boundaries, pos10,pos11),
(position_get_x, ":scene_min_x", pos10),
(position_get_x, ":scene_max_x", pos11),
(position_get_y, ":scene_min_y", pos10),
(position_get_y, ":scene_max_y", pos11),
(store_div,":border_x",":scene_max_x",10),
(val_add,":scene_min_x",":border_x"),
(val_sub,":scene_max_x",":border_x"),
(store_div,":border_y",":scene_max_y",10),
(val_add,":scene_min_y",":border_y"),
(val_sub,":scene_max_y",":border_y"),
(store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
(store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
(init_position, pos1),
(position_set_x,pos1,":x_pos"),
(position_set_y,pos1,":y_pos"),
(position_set_z,pos1,10000),
(position_set_z_to_ground_level,pos1),
(agent_set_scripted_destination,"$leading_deer",pos1),
(assign,"$num_deers_killed",":num_kills"),
(assign,reg6,"$num_deers_killed"),
(assign,reg5,"$game_found"),
(display_message,"@You have killed {reg6} of {reg5} {s9}."),
(assign,"$predators_killed",":num_predator_kills"),
# (assign,reg7,"$predators_killed"),
]),
(5,0,0,[],
[
(agent_get_position,pos1,"$leading_deer"),
(position_get_x,":x_pos",pos1),
(position_get_y,":y_pos",pos1),
(this_or_next|le,":x_pos",5000),
(this_or_next|le,":y_pos",5000),
(this_or_next|ge,":x_pos",38000),
(ge,":y_pos",38000),
(get_scene_boundaries, pos10,pos11),
(position_get_x, ":scene_min_x", pos10),
(position_get_x, ":scene_max_x", pos11),
(position_get_y, ":scene_min_y", pos10),
(position_get_y, ":scene_max_y", pos11),
(store_div,":border_x",":scene_max_x",10),
(val_add,":scene_min_x",":border_x"),
(val_sub,":scene_max_x",":border_x"),
(store_div,":border_y",":scene_max_y",10),
(val_add,":scene_min_y",":border_y"),
(val_sub,":scene_max_y",":border_y"),
(store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
(store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
(init_position, pos1),
(position_set_x,pos1,":x_pos"),
(position_set_y,pos1,":y_pos"),
(position_set_z,pos1,10000),
(position_set_z_to_ground_level,pos1),
(agent_set_scripted_destination,"$leading_deer",pos1),
]),
(1,0,0,[],
[
(try_for_agents,reg(1)),
(agent_get_item_id,reg(2),reg(1)),
(eq,reg(2),"$prey"),#DRQ i missed this one
(store_agent_hit_points,":health",reg(1)),
(store_sub,":damage",100,":health"),
(agent_get_slot,":prev_damage",reg(1),1),
(neq,":prev_damage",":damage"),
(agent_set_slot,reg(1),1,":damage"),
(agent_get_position,pos1,reg(1)),
(position_get_x,":x_pos",pos1),
(position_get_y,":y_pos",pos1),
(store_random_in_range,":x_pos_add",0,1000),
(store_random_in_range,":y_pos_add",0,1000),
(val_add,":x_pos",":x_pos_add"),
(val_add,":y_pos",":y_pos_add"),
(position_set_x,pos1,":x_pos"),
(position_set_y,pos1,":y_pos"),
(agent_set_scripted_destination,reg(1),pos1),
(try_end),
]),
(0.9,0,0, #deer travelling
[],
[
(get_player_agent_no,reg(1)),
(agent_get_position,pos1,reg(1)),
(agent_get_position,pos4,"$leading_deer"),
(position_get_x,":x_pos",pos4),
(position_get_y,":y_pos",pos4),
(try_for_agents,reg(1)),
(agent_get_item_id,reg(2),reg(1)),
(eq,reg(2),"$prey"),#and this one!
(agent_get_position,pos2,reg(1)),
(get_distance_between_positions,reg(3),pos1,pos2),
(try_begin),
(position_get_x,":pos_x",pos2),
(position_get_x,":pos_y",pos2),
(position_get_x, ":scene_min_x", pos10),
(position_get_x, ":scene_max_x", pos11),
(position_get_y, ":scene_min_y", pos10),
(position_get_y, ":scene_max_y", pos11),
(store_div,":border_x",":scene_max_x",10),
(val_add,":scene_min_x",":border_x"),
(val_sub,":scene_max_x",":border_x"),
(store_div,":border_y",":scene_max_y",10),
(val_add,":scene_min_y",":border_y"),
(val_sub,":scene_max_y",":border_y"),
(this_or_next|gt,":pos_x",":scene_max_x"),
(this_or_next|lt,":pos_x",":scene_min_x"),
(this_or_next|gt,":pos_y",":scene_max_y"),
(lt,":pos_y",":scene_min_y"),
(store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
(store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
(init_position, pos1),
(position_set_x,pos1,":x_pos"),
(position_set_y,pos1,":y_pos"),
(position_set_z,pos1,10000),
(position_set_z_to_ground_level,pos1),
(agent_set_scripted_destination,reg(1),pos1),
(else_try),
(le,reg(3),2500),
(position_get_x,reg(4),pos1),
(position_get_x,reg(5),pos2),
(store_sub,":x_dist",reg(5),reg(4)),
(val_mul,":x_dist",10),
(position_get_y,reg(6),pos1),
(position_get_y,reg(7),pos2),
(store_sub,":y_dist",reg(7),reg(6)),
(val_mul,":y_dist",10),
(init_position,pos3),
(val_add,":x_dist",reg(5)),
(val_add,":y_dist",reg(7)),
(position_set_x,pos3,":x_dist"),
(position_set_y,pos3,":y_dist"),
(position_set_z,pos3,10000),
(position_set_z_to_ground_level,pos3),
(agent_set_scripted_destination,reg(1),pos3),
(else_try),
(get_distance_between_positions,reg(3),pos4,pos2),
(ge,reg(3),2000),
(init_position, pos6),
(store_random_in_range,":x_pos_add",0,1000),
(store_random_in_range,":y_pos_add",0,1000),
(val_add,":x_pos_add",":x_pos"),
(val_add,":y_pos_add",":y_pos"),
(position_set_x,pos6,":x_pos_add"),
(position_set_y,pos6,":y_pos_add"),
(position_set_z,pos6,10000),
(position_set_z_to_ground_level,pos6),
(agent_set_scripted_destination,reg(1),pos6),
(try_end),
(try_end),
]),
]),
#DRQ end hunting mod