####################################################################################################################################### ####################################################################################################################################### ####################################################################################################################################### ##说明 ####################################################################################################################################### ####################################################################################################################################### ####################################################################################################################################### 几乎是重写了骑枪折断的代码。 首先是在营地菜单,MOD选项里面,增加了一个更多MOD选项的入口。点击进入后是一个窗口,可以做各种MOD设置,当然目前只有骑枪部分,以后会添加其他的开关的。 骑枪折断其实在游戏里一直是长柄折断,所有长柄武器都有一定几率折断。 折断的概率有下面这个计算公式。 (10+伤害/20+马速度/6)*修正值*玩家领主修正 伤害就是造成的伤害,大概一般在50-300(冲刺)之间。马速度一般在40-110之间。修正值指的是玩家在MOD设置内可以设置的值0-300表示*0到*3。玩家领主修正,指的是如果攻击方是玩家、国王、领主、NPC,那么折断概率减半。 关于战场里左下角的信息栏,只有在玩家国王领主NPC的长柄折断的时候,会出现信息说武器折断。 另外一个可调的就是概率报告,这个主要是大家自己调修正值的时候可以打开了调,效果是玩家每次长柄攻击的时候,信息栏里汇报玩家本次攻击武器折断概率 ####################################################################################################################################### ####################################################################################################################################### ####################################################################################################################################### ##汉化修改 ####################################################################################################################################### ####################################################################################################################################### ####################################################################################################################################### @item_kinds.csv ###################################################################################################################################### itm_pol_gusar_lansa_b| 骑 兵 枪 替换为 itm_pol_gusar_lansa_b|长 骑 枪 @game_strings.csv ###################################################################################################################################### 末尾添加 str_polearm_broken_message|{s21}用 {s22}对 {s20}造 成 {reg20}伤 害 ,武 器 被 折 断 。 str_polearm_broken_chance|本 次 攻 击 武 器 折 断 概 率 为{reg19}%。 str_more_mod_options|其 他 MOD选 项 str_polearm_broken|开 启 长 柄 武 器 折 断 str_polearm_broken_d|一 旦 任 何 单 位 使 用 长 柄 武 器 造 成 伤 害(长 矛/ 长 枪/ 骑 枪/ 其 他 长 柄),就 根 据 伤 害 量 以 及 当 前 单 位 所 骑 战 马 的 速 度 进 行 判 断。玩 家、NPC、阵 营 领 袖 及 领 主 概 率 减 半,并 且 汇 报。 str_polearm_broken_report|开 启 长 柄 武 器 折 断 概 率 报 告 str_polearm_broken_report_d|开 启 后,每 次 玩 家 使 用 长 柄 武 器 攻 击,都 会 显 示 本 次 攻 击 武 器 折 断 的 概 率。 str_polearm_broken_chance_factor|长 柄 武 器 折 断 概 率 修 正 str_polearm_broken_chance_factor_d|调 整 武 器 折 断 概 率 的 修 正 值。0为 不 折 断;100为 默 认 值;300为 两 倍 概 率。 @game_menus.csv ####################################################################################################################################### mno_enable_npc_complaints|打 开 NPC争 吵 后添加 mno_more_mod_options|更 多 MOD设 置 ####################################################################################################################################### ####################################################################################################################################### ####################################################################################################################################### ##py修改 ####################################################################################################################################### ####################################################################################################################################### ####################################################################################################################################### @module_strings.py ####################################################################################################################################### 末尾添加 ("polearm_broken_message", "{s21} hits with {s22} for {reg20} damage and breaks it."), ("polearm_broken_chance", "this time you have {reg19}% chance of breaking your weapon"), ("more_mod_options", "Other Mod Options"), ("polearm_broken", "polearm broken activate"), ("polearm_broken_d", "once an agent use polearm, there is a change to break it. The chance is calculated by damage and speed"), ("polearm_broken_report", "polearm broken chance report activate"), ("polearm_broken_report_d", "report the chance of polearm break everytime that player make an attack with polearm"), ("polearm_broken_chance_factor", "change the factor of polearm broken"), ("polearm_broken_chance_factor_d", "change the factor of polearm broken from 0 to 300, default is 100"), @module_scripts.py ####################################################################################################################################### 开头添加 (call_script, "script_mod_options_default"), 末尾添加 # script_mod_options_default by windmelodie ("mod_options_default", [ (faction_set_slot,"fac_mod_variables",slot_Mod_polearm_broken,1), (faction_set_slot,"fac_mod_variables",slot_Mod_polearm_broken_report,0), (faction_set_slot,"fac_mod_variables",slot_Mod_polearm_broken_chance_factor,100), ]), @module_game_menus.py ####################################################################################################################################### ## ZZ 16th war fog ("disable_war_fog",[(eq, "$disable_war_fog", 0),],"Close War Fog.", [(assign, "$disable_war_fog", 1),]), ## ZZ 16th war fog 之前添加 ## windmelodie mod options begin ("more_mod_options",[],"more options", [(start_presentation, "prsnt_more_mod_options"),]), ## windmelodie mod options end @module_presentations.py ####################################################################################################################################### 末尾添加 ## windmelodie mod options begin ("more_mod_options", 0, mesh_load_window, [ (ti_on_presentation_load, [ (presentation_set_duration, 999999), (set_fixed_point_multiplier, 1000), (str_clear, s0), (create_text_overlay, reg0, s0, tf_scrollable), (position_set_x, pos1, 50), (position_set_y, pos1, 50), (overlay_set_position, reg0, pos1), (position_set_x, pos1, 550), (position_set_y, pos1, 630), (overlay_set_area_size, reg0, pos1), (set_container_overlay, reg0), (assign, ":num_options", 15), (val_add, ":num_options", 2), #For extra space for headings (assign, ":cur_y_shift", 40), (store_div, ":line_y_shift", ":cur_y_shift", 2), (store_mul, ":headings_y", ":cur_y_shift", ":num_options"), (store_sub, ":inputs_y", ":headings_y", 5), ## Headings (position_set_x, pos1, 50), (val_sub, ":headings_y", 30), (create_text_overlay, reg0, "str_polearm_broken", tf_vertical_align_center), (position_set_y, pos1, ":headings_y"), (overlay_set_position, reg0, pos1), (val_sub, ":headings_y", ":cur_y_shift"), (assign, "$g_presentation_obj_banner_selection_2", reg0), #For Mouse-Overs (create_text_overlay, reg0, "str_polearm_broken_report", tf_vertical_align_center), (position_set_y, pos1, ":headings_y"), (overlay_set_position, reg0, pos1), (val_sub, ":headings_y", ":cur_y_shift"), (create_text_overlay, reg0, "str_polearm_broken_chance_factor", tf_vertical_align_center), (position_set_y, pos1, ":headings_y"), (overlay_set_position, reg0, pos1), (val_sub, ":headings_y", ":cur_y_shift"), (store_add, ":line_1_y", ":headings_y", ":line_y_shift"), #LINE 1 Here ## Lines (create_mesh_overlay, reg0, "mesh_white_plane"), (position_set_x, pos1, 23500), (position_set_y, pos1, 100), (overlay_set_size, reg0, pos1), (position_set_x, pos1, 50), (position_set_y, pos1, ":line_1_y"), (overlay_set_position, reg0, pos1), (overlay_set_color, reg0, 0), ## Inputs (position_set_x, pos1, 450), (val_sub, ":inputs_y", 30), (create_check_box_overlay, "$g_presentation_obj_name_kingdom_1", "mesh_checkbox_off", "mesh_checkbox_on"), #polearm_broken (position_set_y, pos1, ":inputs_y"), (overlay_set_position, "$g_presentation_obj_name_kingdom_1", pos1), (val_sub, ":inputs_y", ":cur_y_shift"), (create_check_box_overlay, reg0, "mesh_checkbox_off", "mesh_checkbox_on"), #polearm_broken_report (position_set_y, pos1, ":inputs_y"), (overlay_set_position, reg0, pos1), (val_sub, ":inputs_y", ":cur_y_shift"), (val_sub, ":inputs_y", 9), (create_number_box_overlay, reg0, 0, 300), (position_set_y, pos1, ":inputs_y"), (overlay_set_position, reg0, pos1),#polearm_broken_chance_factor (val_add, ":inputs_y", 9), (val_sub, ":inputs_y", ":cur_y_shift"), (set_container_overlay, -1), #Set Values of Caba'drin Order Preferences (assign,":overlay","$g_presentation_obj_name_kingdom_1"), (faction_get_slot,":polearm_broken","fac_mod_variables",slot_Mod_polearm_broken), (overlay_set_val, ":overlay", ":polearm_broken"), (val_add, ":overlay", 1), (faction_get_slot,":polearm_broken_report","fac_mod_variables",slot_Mod_polearm_broken_report), (overlay_set_val, ":overlay", ":polearm_broken_report"), (val_add, ":overlay", 1), (faction_get_slot,":polearm_broken_chance_factor","fac_mod_variables",slot_Mod_polearm_broken_chance_factor), (overlay_set_val, ":overlay", ":polearm_broken_chance_factor"), (val_add, ":overlay", 1), ## Mouse-over Tips (create_text_overlay, reg0, "str_more_mod_options", tf_center_justify|tf_with_outline), (overlay_set_color, reg0, 0xFFFFFFFF), (position_set_x, pos1, 800), (position_set_y, pos1, 600), (overlay_set_position, reg0, pos1), (position_set_x, pos1, 2000), (position_set_y, pos1, 2000), (overlay_set_size, reg0, pos1), (str_store_string, s0, "@Mouse-over options for further information."), (create_text_overlay, "$g_presentation_obj_banner_selection_1", s0, tf_double_space|tf_scrollable), (position_set_x, pos1, 650), (position_set_y, pos1, 400), (overlay_set_position, "$g_presentation_obj_banner_selection_1", pos1), (position_set_x, pos1, 800), (position_set_y, pos1, 800), (overlay_set_size, "$g_presentation_obj_banner_selection_1", pos1), (position_set_x, pos1, 300), (position_set_y, pos1, 150), (overlay_set_area_size, "$g_presentation_obj_banner_selection_1", pos1), ## Button (position_set_x, pos1, 900), (position_set_y, pos1, 25), (create_game_button_overlay, "$g_presentation_obj_name_kingdom_2", "@Done", tf_center_justify), (overlay_set_position, "$g_presentation_obj_name_kingdom_2", pos1), (position_set_x, pos1, 740), (create_game_button_overlay, reg0, "@Restore Defaults", tf_center_justify), (overlay_set_position, reg0, pos1), ]), (ti_on_presentation_event_state_change, [ (store_trigger_param_1, ":object"), (store_trigger_param_2, ":value"), (try_begin), #Button Done (assign,":overlay","$g_presentation_obj_name_kingdom_2"), (eq, ":object",":overlay"), (presentation_set_duration, 0), (else_try), #Button default (val_add, ":overlay", 1), (eq, ":object", ":overlay"), (call_script, "script_mod_options_default"), (start_presentation, "prsnt_more_mod_options"), (else_try), #polearm_broken (assign,":overlay","$g_presentation_obj_name_kingdom_1"), (eq, ":object", ":overlay"), (faction_set_slot,"fac_mod_variables",slot_Mod_polearm_broken,":value"), (else_try), #polearm_broken_report (val_add, ":overlay", 1), (eq, ":object", ":overlay"), (faction_set_slot,"fac_mod_variables",slot_Mod_polearm_broken_report,":value"), (else_try), #polearm_broken_chance_factor (val_add, ":overlay", 1), (eq, ":object", ":overlay"), (faction_set_slot,"fac_mod_variables",slot_Mod_polearm_broken_chance_factor,":value"), ]), (ti_on_presentation_mouse_enter_leave, #Mouse-Over Pref-Tips [ (store_trigger_param_1, ":object"), (store_trigger_param_2, ":enter_leave"), #0 if mouse enters, 1 if mouse leaves (try_begin), (eq, ":enter_leave", 1), (overlay_set_text, "$g_presentation_obj_banner_selection_1", "@Mouse-over options for further information."), (else_try), (eq, ":enter_leave", 0), (assign, ":overlay", "$g_presentation_obj_name_kingdom_1"), #Input (assign, ":overlay_2", "$g_presentation_obj_banner_selection_2"), #Heading (try_begin), (lt, ":object", ":overlay_2"), (overlay_set_text, "$g_presentation_obj_banner_selection_1", "@Mouse-over options for further information."), (else_try), #polearm_broken (this_or_next|eq, ":object", ":overlay_2"), (eq, ":object", ":overlay"), (overlay_set_text, "$g_presentation_obj_banner_selection_1", "str_polearm_broken_d"), (else_try), #polearm_broken_report (val_add, ":overlay", 1), (val_add, ":overlay_2", 1), (this_or_next|eq, ":object", ":overlay_2"), (eq, ":object", ":overlay"), (overlay_set_text, "$g_presentation_obj_banner_selection_1", "str_polearm_broken_report_d"), (else_try), #polearm_broken_chance_factor (val_add, ":overlay", 1), (val_add, ":overlay_2", 1), (this_or_next|eq, ":object", ":overlay_2"), (eq, ":object", ":overlay"), (overlay_set_text, "$g_presentation_obj_banner_selection_1", "str_polearm_broken_chance_factor_d"), (try_end), (try_end), ]), ]), ## windmelodie mod options end @module_mission_templates.py ####################################################################################################################################### ## Pike broken 整段替换 ## Polearm broken changed by windmelodie common_dealer_lance_break = ( ti_on_agent_hit, 0, 0, [ (store_trigger_param_1, ":inflicted_agent"), (store_trigger_param_2, ":dealer_agent"), (store_trigger_param_3, ":inflicted_damage"), (faction_slot_eq,"fac_mod_variables",slot_Mod_polearm_broken,1), (agent_is_human, ":dealer_agent"), (agent_get_attack_action, ":dealeraction", ":dealer_agent"), (eq,":dealeraction",3), (agent_get_wielded_item,":breakweapon",":dealer_agent",0), (gt,":breakweapon",2), (item_get_type, ":weapontype", ":breakweapon"), (eq,itp_type_polearm,":weapontype"), (assign,":report",0), (agent_get_troop_id,":inflicted_troop", ":inflicted_agent"), (agent_get_troop_id,":dealer_troop", ":dealer_agent"), (str_store_troop_name, s20, ":inflicted_troop"), (str_store_troop_name, s21, ":dealer_troop"), (str_store_item_name, s22, ":breakweapon"), (assign, reg20, ":inflicted_damage"), (agent_get_horse,":dealermounted",":dealer_agent"), (try_begin), (store_div,":weaponbreakchance",":inflicted_damage",20), (val_add,":weaponbreakchance",10), (try_begin), (ge,":dealermounted",0), (set_fixed_point_multiplier, 10), (agent_get_speed, pos1, ":dealermounted"), (position_get_y,":speed",pos1), (val_div,":speed",6), (val_add,":weaponbreakchance",":speed"), (try_end), (faction_get_slot,":factor","fac_mod_variables",slot_Mod_polearm_broken_chance_factor), (val_mul,":weaponbreakchance",":factor"), (val_div,":weaponbreakchance",100), (store_random_in_range, ":random", 0, 100), (try_begin), (eq,":dealer_troop","trp_player"), (assign,":report",1), (val_div,":weaponbreakchance",2), (faction_slot_eq,"fac_mod_variables",slot_Mod_polearm_broken_report,1), (assign,reg19,":weaponbreakchance"), (display_message, "str_polearm_broken_chance",0xFF9999), (else_try), (is_between,":dealer_troop",companions_begin,pretenders_end), (val_div,":weaponbreakchance",2), (assign,":report",1), (try_end), (try_begin), (gt,":weaponbreakchance",":random"), (agent_unequip_item,":dealer_agent",":breakweapon"), (play_sound_at_position, "snd_shield_broken", pos0), (particle_system_burst, "psys_dummy_smoke", pos0, 3), #(particle_system_burst, "psys_dummy_straw_big", pos0, 100), (particle_system_burst, "psys_dummy_straw_big", pos0, 50), (agent_unequip_item, ":dealer_agent", ":breakweapon"), (eq,":report",1), (display_message, "str_polearm_broken_message",0xFF6464), (lt,":dealermounted",0), (agent_set_animation, ":dealer_agent", "anim_strike_chest_front"), (try_end), (try_end), ], [])