OSP Kit QoL Heraldic Shields

Users who are viewing this thread

Forum thread for an old OSP, indexing a MBRepository file.

This resource pack contains Native shields modified to use the tableau system in order to display banners. These include the various heater/kite/Norman shields in older versions, and I have also taken the liberty of generating normal maps and re-enabling specular for existing shields. Also included is a bonus Pavise shield that wasn't used in Native.
I am well aware that the alpha channel isn't exactly the greatest, and neither is the positioning of the banner (it's functional). The material settings are guestimates based on Native items and could use some tweaking.


There are no text files, only source code to be used at your own discretion
To install, do the usual and then change load_resource = shields to load_mod_resource. Add in code and compile.
Copy paste into module_items.py
Code:
["shield_heater_c", "Leather Covered Heater Shield", [("shield_heater_c",0)], itp_merchandise|itp_type_shield|itp_wooden_parry, itcf_carry_kite_shield,  277 , weight(2.75)|hit_points(310)|body_armor(12)|spd_rtng(80)|shield_width(30)|shield_height(51),imodbits_shield,
[(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_shield_heater_c", ":agent_no", ":troop_no")])]],
["shield_heater_d", "Heater Shield", [("shield_heater_d",0)], itp_merchandise|itp_type_shield|itp_wooden_parry, itcf_carry_kite_shield,  477 , weight(3.25)|hit_points(510)|body_armor(14)|spd_rtng(80)|shield_width(31)|shield_height(52),imodbits_shield,
[(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_shield_heater_d", ":agent_no", ":troop_no")])]],

["shield_kite_g", "Kite Shield", [("shield_kite_g",0)], itp_merchandise|itp_type_shield|itp_wooden_parry, itcf_carry_kite_shield, 118 , weight(2.5)|hit_points(480)|body_armor(1)|spd_rtng(82)|shield_width(36)|shield_height(72),imodbits_shield,
[(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_shield_kite_g", ":agent_no", ":troop_no")])]],
["shield_kite_h", "Battle Shield", [("shield_kite_h",0)], itp_merchandise|itp_type_shield|itp_wooden_parry, itcf_carry_kite_shield,  118 , weight(2.5)|hit_points(480)|body_armor(1)|spd_rtng(82)|shield_width(35)|shield_height(75),imodbits_shield,
[(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_shield_kite_h", ":agent_no", ":troop_no")])]],
["shield_kite_i", "Banded Kite Shield", [("shield_kite_i",0)], itp_merchandise|itp_type_shield|itp_wooden_parry, itcf_carry_kite_shield,  118 , weight(2.5)|hit_points(480)|body_armor(1)|spd_rtng(82)|shield_width(36)|shield_height(70),imodbits_shield,
[(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_shield_kite_i", ":agent_no", ":troop_no")])]],
["shield_kite_k", "Studded Kite Shield", [("shield_kite_k",0)], itp_merchandise|itp_type_shield|itp_wooden_parry, itcf_carry_kite_shield,  118 , weight(2.5)|hit_points(480)|body_armor(1)|spd_rtng(82)|shield_width(36)|shield_height(70),imodbits_shield,
[(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_shield_kite_k", ":agent_no", ":troop_no")])]],

["norman_shield_1",         "Kite Shield", [("norman_shield_a",0)], itp_type_shield|itp_wooden_parry, itcf_carry_kite_shield,  118 , weight(2.5)|hit_points(480)|body_armor(1)|spd_rtng(82)|shield_width(35)|shield_height(70),imodbits_shield,
[(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_shield_norman_1", ":agent_no", ":troop_no")])]],
["norman_shield_2",         "Kite Shield", [("norman_shield_b",0)], itp_type_shield|itp_wooden_parry, itcf_carry_kite_shield,  118 , weight(2.5)|hit_points(480)|body_armor(1)|spd_rtng(82)|shield_width(35)|shield_height(70),imodbits_shield,
[(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_shield_norman_2", ":agent_no", ":troop_no")])]],
["norman_shield_3",         "Kite Shield", [("norman_shield_c",0)], itp_type_shield|itp_wooden_parry, itcf_carry_kite_shield,  118 , weight(2.5)|hit_points(480)|body_armor(1)|spd_rtng(82)|shield_width(35)|shield_height(70),imodbits_shield,
[(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_shield_norman_3", ":agent_no", ":troop_no")])]],
["norman_shield_4",         "Kite Shield", [("norman_shield_d",0)], itp_type_shield|itp_wooden_parry, itcf_carry_kite_shield,  118 , weight(2.5)|hit_points(480)|body_armor(1)|spd_rtng(82)|shield_width(35)|shield_height(70),imodbits_shield,
[(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_shield_norman_4", ":agent_no", ":troop_no")])]],

["practice_board_shield", "Practice Board Shield",   [("tableau_shield_pavise" ,0)], itp_type_shield|itp_cant_use_on_horseback, itcf_carry_board_shield, 
370 , weight(5)|hit_points(550)|body_armor(10)|spd_rtng(78)|shield_width(45)|shield_height(100),imodbits_shield,
 [(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_pavise_shield_3", ":agent_no", ":troop_no")])]],

Copy paste into module_tableau_meshes.py:
Code:
("shield_heater_c", 0, "shields_old", 1024, 1024, 0, 0, 0, 0,
   [
       (store_script_param, ":banner_mesh", 1),
       (set_fixed_point_multiplier, 100),
       (init_position, pos1),
       (position_set_x, pos1, 9),
       (position_set_y, pos1, 111),
       (cur_tableau_add_mesh, ":banner_mesh", pos1, 40, 0),
       (init_position, pos1),

       (cur_tableau_add_mesh, "mesh_tableau_mesh_shield_old", pos1, 0, 0),
       (cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),
       ]),

  ("shield_heater_d", 0, "shields_old", 1024, 1024, 0, 0, 0, 0,
   [
       (store_script_param, ":banner_mesh", 1),
       (set_fixed_point_multiplier, 100),
       (init_position, pos1),
       (position_set_x, pos1, -41),
       (position_set_y, pos1, 27),
       (cur_tableau_add_mesh, ":banner_mesh", pos1, 40, 0),
       (init_position, pos1),

       (position_set_z, pos1, 10),
       (cur_tableau_add_mesh, "mesh_tableau_mesh_shield_old", pos1, 0, 0),
       (cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),
       ]),

  ("shield_kite_g", 0, "shields_old", 1024, 1024, 0, 0, 0, 0,
   [
       (store_script_param, ":banner_mesh", 1),

       (set_fixed_point_multiplier, 100),

       (init_position, pos1),
       (position_set_x, pos1, 42),
       (position_set_y, pos1, 42),
       (cur_tableau_add_mesh, ":banner_mesh", pos1, 42, 0),
       (init_position, pos1),
       (position_set_z, pos1, 10),
       (cur_tableau_add_mesh, "mesh_tableau_mesh_shield_old", pos1, 0, 0),
       (cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),
       ]),


  ("shield_kite_h", 0, "shields_old", 1024, 1024, 0, 0, 0, 0,
   [
       (store_script_param, ":banner_mesh", 1),

       (set_fixed_point_multiplier, 100),
       (init_position, pos1),
       (position_set_x, pos1, 6),
       (position_set_y, pos1, 60),
       (cur_tableau_add_mesh, ":banner_mesh", pos1, 45, 0),
       (init_position, pos1),
       (position_set_z, pos1, 10),
       (cur_tableau_add_mesh, "mesh_tableau_mesh_shield_old", pos1, 0, 0),
       (cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),
       ]),


  ("shield_kite_i", 0, "shields_old", 1024, 1024, 0, 0, 0, 0,
   [
       (store_script_param, ":banner_mesh", 1),

       (set_fixed_point_multiplier, 100),

       (init_position, pos1),
       (position_set_x, pos1, 70),
       (position_set_y, pos1, -20),
       (cur_tableau_add_mesh, ":banner_mesh", pos1, 50, 0),
       (init_position, pos1),
       (position_set_z, pos1, 10),
       (cur_tableau_add_mesh, "mesh_tableau_mesh_shield_old", pos1, 0, 0),
       (cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),
       ]),

  ("shield_kite_k", 0, "shields_old", 1024, 1024, 0, 0, 0, 0,
   [
       (store_script_param, ":banner_mesh", 1),

       (set_fixed_point_multiplier, 100),

       (init_position, pos1),
       (position_set_x, pos1, 78),
       (position_set_y, pos1, -60),
       (cur_tableau_add_mesh, ":banner_mesh", pos1, -50, 0),
       (init_position, pos1),
       (position_set_z, pos1, 10),

       (cur_tableau_add_mesh, "mesh_tableau_mesh_shield_old", pos1, 0, 0),
       (cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),

       ]),
      
  ("shield_norman_4", 0, "shields_b_old", 1024, 1024, 0, 0, 0, 0,
   [
       (store_script_param, ":banner_mesh", 1),

       (set_fixed_point_multiplier, 100),

       (init_position, pos1),
 
       (position_set_x, pos1, -15),
       (position_set_y, pos1, -65),
       (cur_tableau_add_mesh, ":banner_mesh", pos1, -55, 0),
       (init_position, pos1),
       (cur_tableau_add_mesh, "mesh_tableau_mesh_shield_norman", pos1, 0, 0),
       (cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),

       ]),
      
  ("shield_norman_3", 0, "shields_b_old", 1024, 1024, 0, 0, 0, 0,
   [
       (store_script_param, ":banner_mesh", 1),

       (set_fixed_point_multiplier, 100),

       (init_position, pos1),

       (position_set_x, pos1, -60),
       (position_set_y, pos1, -60),
       (cur_tableau_add_mesh, ":banner_mesh", pos1, -60, 0),
       (init_position, pos1),
       (cur_tableau_add_mesh, "mesh_tableau_mesh_shield_norman", pos1, 0, 0),
       (cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),

       ]),

  ("shield_norman_2", 0, "shields_b_old", 1024, 1024, 0, 0, 0, 0,
   [
       (store_script_param, ":banner_mesh", 1),

       (set_fixed_point_multiplier, 100),

       (init_position, pos1),

       (position_set_x, pos1, -36),
       (position_set_y, pos1, 100),
       (cur_tableau_add_mesh, ":banner_mesh", pos1, 50, 0),
       (init_position, pos1),
       (cur_tableau_add_mesh, "mesh_tableau_mesh_shield_norman", pos1, 0, 0),

       (cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),

       ]),
      
  ("shield_norman_1", 0, "shields_b_old", 1024, 1024, 0, 0, 0, 0,
   [
       (store_script_param, ":banner_mesh", 1),

       (set_fixed_point_multiplier, 100),

       (init_position, pos1),
       (position_set_x, pos1, -77),
       (position_set_y, pos1, 111),
       (cur_tableau_add_mesh, ":banner_mesh", pos1, 60, 0),
       (init_position, pos1),
       (cur_tableau_add_mesh, "mesh_tableau_mesh_shield_norman", pos1, 0, 0),
       (cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),

       ]),
Due to character length restrictions, I can't post changes to existing shields. Modify sample_shield_matte to whatever new material that was included in the BRF.

Copy paste into module_meshes.py:
Code:
  ("tableau_mesh_shield_old",   0, "tableau_mesh_shield_old",  0, 0, 0, 0, 0, 0, 5, 5, 5),
  ("tableau_mesh_shield_norman",   0, "tableau_mesh_shield_bold",  0, 0, 0, 0, 0, 0, 5, 5, 5),
  ("tableau_mesh_shield_pavise_3", 0, "tableau_mesh_shield_pavise_3",  0, 0, 0, 0, 0, 0, 10, 10, 10),
 
Back
Top Bottom