#module_mission_templates
(1, 0, 0, [(multiplayer_is_server),], [
(try_for_range, ":prop", "spr_barricade", "spr_explosive_barrel"), (call_script, "script_cf_destroy_barricade_new", ":prop",0), (try_end),]),
##New script Full Invasion FI FuIn
# script_cf_destroy_barricade
# Input: arg1 = instance_no (none = 0)
# Input: arg1 = prop_no (spr_pavise, etc)
# Output: none
("cf_destroy_barricade_new",
[ (store_script_param_1, ":instance_no"),
(store_script_param_1, ":prop_no"),
(scene_prop_get_instance, ":barricade_object", ":prop_no", ":instance_no"),
(ge, ":barricade_object", 0),
(prop_instance_get_position, pos1, ":barricade_object"),
# (try_begin),
# (eq, ":prop_no", "spr_pavise"),
# (assign, ":attack_distance", 120),
# (else_try),
# (assign, ":attack_distance", 320),
# (try_end),
(scene_prop_get_hit_points, ":hitpoints", ":instance_no"),
(try_for_agents, ":agent_no"),
(gt, ":hitpoints", 0),
(agent_is_alive, ":agent_no"),
(agent_is_human, ":agent_no"), #only horse should be sleipnir
(agent_get_team, ":team_no", ":agent_no"),
(eq, ":team_no", 1),
# (agent_get_combat_state, ":aics", ":agent_no"),
# (neq, ":aics", 1), #not firing ranged
# (neq, ":aics", 1), #not firing ranged
(agent_get_position,pos2, ":agent_no"),
(get_distance_between_positions, ":dist", pos1, pos2),
(le, ":dist", 320),
(agent_get_wielded_item, ":weapon", ":agent_no", 0),
(item_get_type, ":type", ":weapon"),
(assign, ":attack_dir", -1),
(try_begin), #random slashers (axes can't stab)
(this_or_next|eq, ":type", itp_type_one_handed_wpn),
(eq, ":type", itp_type_two_handed_wpn),
(store_random_in_range, ":attack_dir", 1, 4),
(else_try),
(eq, ":type", itp_type_polearm),
(assign, ":attack_dir", 3), #overhead (for pikes and such)
(try_begin),
(agent_get_wielded_item, ":shield", ":agent_no", 1),
(this_or_next|gt, ":shield", 0), #shielding means no slashing
(eq, ":weapon", "itm_tutorial_spear"), #stupid-ass town guard weapon
#this might not even work if the MS reads the first tutorial spear (item #1 instead of #130)
(assign, ":attack_dir", 0), #stabbity stab
(try_end),
(try_end),
(ge, ":attack_dir", 0),
(agent_set_look_target_position, ":agent_no", pos1),
# (store_random_in_range, ":attack_dir", 0, 4),
(agent_set_attack_action, ":agent_no", ":attack_dir", 0), #swings at door
(agent_get_troop_id, ":troop_id", ":agent_no"),
(assign, ":str", 1),
(try_begin),
(gt, ":troop_id", 0),
(store_attribute_level, ":str", ":troop_id", ca_strength),
(try_end),
(val_mul, ":str", 10),
(val_add, ":str", 1),
(val_sub, ":hitpoints", ":str"),
(scene_prop_set_hit_points, ":instance_no", ":hitpoints"),
(try_begin), #do destructible stuff
(le, ":hitpoints", 0),
(play_sound_at_position, "snd_dummy_destroyed", pos1),
# (store_trigger_param_1, ":instance_no"),
# (prop_instance_get_position, pos1, ":instance_no"),
(position_move_z, pos1, -100),
(prop_instance_set_position, ":instance_no", pos1),
(scene_prop_set_visibility, ":instance_no", 0),
(prop_instance_enable_physics,":instance_no", 0),
(scene_prop_set_hit_points, ":instance_no", 0),
(try_end),
(try_end),
(val_add, ":instance_no", 1),
(call_script, "script_cf_destroy_barricade", ":instance_no"),
]),