solecist
Sergeant
Vilhjalmr said:
i'm so pissed that you didn't even mention how you fixed this because i am having the EXACT same errors after using maw's setup.
Vilhjalmr said:
#shield bash
shield_bash_kit_1 = (
ti_before_mission_start, 0, 0, [], [(assign,"$bash_readiness",0)])
shield_bash_kit_2 = (
0.1, 0, 0, [], [(val_add,"$bash_readiness",1),])
shield_bash_kit_3 = (
0, 0, 0, [(game_key_is_down, gk_defend),(game_key_clicked, gk_attack),],
[(assign,":continue",0),
(get_player_agent_no,":player"),
(agent_is_alive,":player"),
(try_for_range,":shield","itm_wooden_shield","itm_jarid"),
(agent_has_item_equipped,":player",":shield"),
(assign,":continue",1),
(end_try),
(eq,":continue",1),
(agent_get_horse,":horse",":player"),
(neg|gt,":horse",0),
(ge,"$bash_readiness",10),
(assign,"$bash_readiness",0),
(call_script,"script_cf_agent_shield_bash",":player"),
])
shield_bash_kit_4 = (
1.0, 0, 0, [],
[(get_player_agent_no,":player"),
(try_for_agents,":agent"),
(agent_is_alive,":agent"),
(agent_is_human,":agent"),
(neq,":agent",":player"),
(agent_get_class ,":class", ":agent"),
(neq,":class",grc_cavalry),
(assign,":continue",0),
(try_for_range,":shield","itm_wooden_shield","itm_jarid"),
(agent_has_item_equipped,":agent",":shield"),
(assign,":continue",1),
(end_try),
(eq,":continue",1),
(assign,":chances",0),
(agent_get_team,":team",":agent"),
(agent_get_position,pos1,":agent"),
(try_for_agents,":other"),
(agent_is_alive,":other"),
(agent_is_human,":other"),
(agent_get_class ,":class", ":other"),
(neq,":class",grc_cavalry),
(agent_get_team,":otherteam",":other"),
(neq,":team",":otherteam"),
(agent_get_position,pos2,":other"),
(get_distance_between_positions,":dist",pos1,pos2),
(neg|position_is_behind_position,pos2,pos1),
(lt,":dist",200),
(val_add,":chances",1),
(end_try),
(store_agent_hit_points,":health",":agent",0),
(val_mul,":health",-1),
(val_add,":health",100),
(val_div,":health",10),
(val_mul,":chances",":health"),
(store_random_in_range,":rand",1,25),
(lt,":rand",":chances"),
(call_script,"script_cf_agent_shield_bash",":agent"),
(end_try),])
#shield bash end
shield_bash_kit_1,
shield_bash_kit_2,
shield_bash_kit_3,
shield_bash_kit_4,
(ti_before_mission_start, 0, 0, [],
[
(team_set_relation, 0, 2, 1),
(team_set_relation, 1, 3, 1),
(call_script, "script_place_player_banner_near_inventory_bms"),
]),
shield_bash_kit_1,
shield_bash_kit_2,
shield_bash_kit_3,
shield_bash_kit_4
tournament_triggers = [
(ti_before_mission_start, 0, 0, [], [(call_script, "script_change_banners_and_chest"),
(assign, "$g_arena_training_num_agents_spawned", 0)]),
shield_bash_kit_1,
shield_bash_kit_2,
shield_bash_kit_3,
shield_bash_kit_4,
(ti_inventory_key_pressed, 0, 0, [(display_message,"str_cant_use_inventory_arena")], []),
(ti_tab_pressed, 0, 0, [],
Pali Gap said:No.
You need the module system. It turns the gibberish of the .txt files into readable, editable information.
Mirathei said:Pretty simple really, press the attack controll while holding the defend controll. Ai will do it automatically when applicable with some degree of randomization. Got to give Zaro credit for making the results partially dependent on the shield skill of the basher.
To install, just paste the following in to module scripts:
("cf_agent_shield_bash",
[(store_script_param, ":agent",1),
(agent_get_position,pos1,":agent"),
(agent_set_animation, ":agent", "anim_release_bash"),
(agent_play_sound,":agent","snd_man_grunt"),
(assign,":victim",-1),
(try_for_agents,":possible_victim"),
(agent_is_alive,":possible_victim"),
(agent_is_human,":possible_victim"),
(neq,":possible_victim",":agent"),
(agent_get_class ,":class", ":possible_victim"),
(neq,":class",grc_cavalry),
(agent_get_position,pos2,":possible_victim"),
(get_distance_between_positions,":dist",pos1,pos2),
(lt,":dist",150),
(neg|position_is_behind_position,pos2,pos1),
(assign,":victim",":possible_victim"),
(end_try),
(gt,":victim",-1),
(store_random_in_range,":rand",0,2),
(store_agent_hit_points,":hp",":victim",1),
(val_sub,":hp",":rand"),
(store_random_in_range,":hit_reaction",1,101),
(store_skill_level,":a_shield",skl_shield,":victim"),
(store_skill_level,":v_shield",skl_shield,":agent"),
(try_begin),
(gt,":hp",0),
(agent_set_hit_points,":victim",":hp",1),
(agent_play_sound,":agent","snd_shield_hit_wood_wood"),
(agent_play_sound,":victim","snd_blunt_hit"),
(try_begin),
(gt,":a_shield", ":v_shield"),
(try_begin),
(is_between,":hit_reaction",0,10),
(agent_set_animation, ":victim", "anim_bash_unsuccessful"),
(else_try),
(is_between,":hit_reaction",11,20),
(agent_set_animation, ":victim", "anim_bash_crouch"),
(else_try),
(is_between,":hit_reaction",21,30),
(agent_set_animation, ":victim", "anim_bash_mini_stun"),
(else_try),
(is_between,":hit_reaction",21,79),
(agent_set_animation, ":victim", "anim_bash_stun"),
(else_try),
(is_between,":hit_reaction",80,100),
(agent_set_animation, ":victim", "anim_bash_knocked"),
(end_try),
(else_try),
(lt,":a_shield", ":v_shield"),
(try_begin),
(is_between,":hit_reaction",0,20),
(agent_set_animation, ":victim", "anim_bash_unsuccessful"),
(else_try),
(is_between,":hit_reaction",21,42),
(agent_set_animation, ":victim", "anim_bash_crouch"),
(else_try),
(is_between,":hit_reaction",43,65),
(agent_set_animation, ":victim", "anim_bash_mini_stun"),
(else_try),
(is_between,":hit_reaction",66,92),
(agent_set_animation, ":victim", "anim_bash_stun"),
(else_try),
(is_between,":hit_reaction",93,100),
(agent_set_animation, ":victim", "anim_bash_knocked"),
(end_try),
(else_try),
(eq,":a_shield", ":v_shield"),
(try_begin),
(is_between,":hit_reaction",0,16),
(agent_set_animation, ":victim", "anim_bash_unsuccessful"),
(else_try),
(is_between,":hit_reaction",17,33),
(agent_set_animation, ":victim", "anim_bash_crouch"),
(else_try),
(is_between,":hit_reaction",34,50),
(agent_set_animation, ":victim", "anim_bash_mini_stun"),
(else_try),
(is_between,":hit_reaction",51,89),
(agent_set_animation, ":victim", "anim_bash_stun"),
(else_try),
(is_between,":hit_reaction",90,100),
(agent_set_animation, ":victim", "anim_bash_knocked"),
(end_try),
(end_try),
(else_try),
(agent_play_sound,":agent","snd_shield_hit_wood_wood"),
(agent_play_sound,":victim","snd_blunt_hit"),
(agent_deliver_damage_to_agent,":agent",":victim"),
(end_try),
]),
The following into any applicable mission template:
(ti_before_mission_start, 0, 0, [], [(assign,"$bash_readiness",0)]),
(0.1, 0, 0, [], [(val_add,"$bash_readiness",1),]),
(0, 0, 0, [(game_key_is_down, gk_defend),(game_key_clicked, gk_attack),],
[(assign,":continue",0),
(get_player_agent_no,":player"),
(agent_is_alive,":player"),
(try_for_range,":shield","itm_wooden_shield","itm_heraldic_mail_with_surcoat"),
(agent_has_item_equipped,":player",":shield"),
(assign,":continue",1),
(end_try),
(eq,":continue",1),
(agent_get_horse,":horse",":player"),
(neg|gt,":horse",0),
(ge,"$bash_readiness",10),
(assign,"$bash_readiness",0),
(call_script,"script_cf_agent_shield_bash",":player"),
]),
(1.0, 0, 0, [],
[(get_player_agent_no,":player"),
(try_for_agents,":agent"),
(agent_is_alive,":agent"),
(agent_is_human,":agent"),
(neq,":agent",":player"),
(agent_get_class ,":class", ":agent"),
(neq,":class",grc_cavalry),
(assign,":continue",0),
(try_for_range,":shield","itm_wooden_shield","itm_heraldic_mail_with_surcoat"),
(agent_has_item_equipped,":agent",":shield"),
(assign,":continue",1),
(end_try),
(eq,":continue",1),
(assign,":chances",0),
(agent_get_team,":team",":agent"),
(agent_get_position,pos1,":agent"),
(try_for_agents,"ther"),
(agent_is_alive,"ther"),
(agent_is_human,"ther"),
(agent_get_class ,":class", "ther"),
(neq,":class",grc_cavalry),
(agent_get_team,"therteam","ther"),
(neq,":team","therteam"),
(agent_get_position,pos2,"ther"),
(get_distance_between_positions,":dist",pos1,pos2),
(neg|position_is_behind_position,pos2,pos1),
(lt,":dist",200),
(val_add,":chances",1),
(end_try),
(store_agent_hit_points,":health",":agent",0),
(val_mul,":health",-1),
(val_add,":health",100),
(val_div,":health",10),
(val_mul,":chances",":health"),
(store_random_in_range,":rand",1,25),
(lt,":rand",":chances"),
(call_script,"script_cf_agent_shield_bash",":agent"),
(end_try),]),
And the following into module animations (note that these must be pasted over unused animations, not at the end of the file):
# strike_fall_back_rise_after_bashed
["bash_knocked", acf_enforce_all|acf_align_with_ground,
[2.0, "anim_human", blow+5400, blow+5453, arf_blend_in_2],
],
# strike_chest_front_stop
["bash_stun", acf_enforce_all,
[1.5, "anim_human", blow+5000, blow+5010, arf_blend_in_3],
],
# strike_chest_front_stop
["bash_mini_stun", acf_enforce_all,
[0.6, "anim_human", blow+5000, blow+5010, arf_blend_in_3],
],
# anim jump end
["bash_crouch", acf_enforce_all|acf_enforce_lowerbody,
[0.5, "anim_human", 280, 290, arf_blend_in_3],
],
# strike_head_front_left
["bash_unsuccessful", acf_enforce_all,
[0.55, "anim_human", blow+0, blow+10, arf_blend_in_3],
],
["release_bash", acf_enforce_all|acf_right_cut|acf_parallels_for_look_slope,
[0.62, "anim_human", combat+5710, combat+5740, blend_in_release],
],
Things to take note of: bashing is only for and only against footmen., thus cavalry will not bash or be bashed. Also, only shields in the range referenced in red above will be bash usable. If you want to bash with a shield, put it in that range.
Enjoy.