OSP 3D Art World Map [WB] FISH&CHIP OSP - Heraldry&Retexturing Unleashed

Users who are viewing this thread

Lav

Sergeant Knight at Arms
M&BWB
FISH&CHIP OSP
Flag Icons Support for Heraldry and Camo/Heraldry Items Pack

Download on Google Drive
Download on Nexus Mods

CONTENTS

In this OSP pack, you will find the following:

1. Heraldry Support for Map Icon Flags

After lots of careful tinkering I have finally managed to adapt heraldic tableau code to all three variants of the flag map icons (vertical, horizontal and square).

With this fix, you can replace the 140+ map icons used by Native to support party flags with just three. Since Warband has a hardcoded limit to 255 map icons, freeing up 140 of them might prove useful if you wish to see a lot of variety on your world map.

Note: script responsible to selecting party banner is currently a stub. This is because the code was developed for my own mod which is incompatible with Native, and I was not diligent enough to write it from scratch in my hurry to have this pack published. Eventually I'm going to fix this oversight, or maybe someone else will. Script has been included into the pack. If you do not wish to re-download the file, this is the final script text:
Code:
    ("get_banner_mesh_for_party",
        [
            (store_script_param_1, ":party_id"),
            (assign, ":lord_id", -1),
            (try_begin),
                (this_or_next|party_slot_eq, ":party_id", slot_party_type, spt_castle),
                (party_slot_eq, ":party_id", slot_party_type, spt_town),
                (party_get_slot, ":lord_id", ":party_id", slot_town_lord),
            (else_try),
                (eq, ":party_id", "p_main_party"),
                (assign, ":lord_id", "trp_player"),
            (else_try),
                (party_slot_eq, ":party_id", slot_party_type, spt_kingdom_hero_party),
                (party_get_num_companion_stacks, ":stacks", ":party_id"),
                (gt, ":stacks", 0),
                (party_stack_get_troop_id, ":lord_id", ":party_id", 0),
            (try_end),
            (try_begin),
                (this_or_next|eq, ":lord_id", "trp_player"),
                (is_between, ":lord_id", active_npcs_begin, active_npcs_end),
                (troop_get_slot, reg0, ":lord_id", slot_troop_banner_scene_prop),
                (val_sub, reg0, banner_scene_props_begin),
                (val_add, reg0, banner_meshes_begin),
            (else_try),
                (assign, reg0, "mesh_banners_default_a"),
            (try_end),
        ]
    ),

2. Seventeen New Heraldic Items.

With these you will have much greater variety equipping your troops for peace and war.

2hqrvqf.jpg

206yakx.jpg
68uakg.jpg
1537cpx.jpg

Code:
  ["hera_shirt_a", "Heraldic Linen Tunic", [("shirt_a",0)], itp_merchandise|itp_type_body_armor|itp_civilian|itp_covers_legs,0,6,weight(1)|abundance(100)|head_armor(0)|body_armor(6)|leg_armor(1)|difficulty(0),imodbits_cloth,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_shirt_a", ":agent_id", ":troop_id")])],[]],
  ["hera_arena_tunicW", "Heraldic Arena Tunic", [("arena_tunicW_new",0)], itp_type_body_armor |itp_covers_legs ,0, 47 , weight(2)|abundance(100)|head_armor(0)|body_armor(16)|leg_armor(6), imodbits_cloth,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_arena_tunicW", ":agent_id", ":troop_id")])],[]],
  ["hera_rich_tunic_a", "Heraldic Tunic", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_rich_tunic_a", ":agent_id", ":troop_id")])],[]],
  ["hera_tabard_b", "Heraldic Tabard", [("tabard_b",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs |itp_civilian,0, 107 , weight(3)|abundance(100)|head_armor(0)|body_armor(14)|leg_armor(6)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_tabard_b", ":agent_id", ":troop_id")])], []],
  ["hera_padded_cloth_a", "Heraldic Aketon", [("padded_cloth_a",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 297 , weight(11)|abundance(100)|head_armor(0)|body_armor(22)|leg_armor(6)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_padded_cloth_a", ":agent_id", ":troop_id")])],[]],
  ["hera_padded_cloth_b", "Heraldic Padded Cloth", [("padded_cloth_b",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 297 , weight(11)|abundance(100)|head_armor(0)|body_armor(22)|leg_armor(6)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_padded_cloth_b", ":agent_id", ":troop_id")])],[]],
  ["hera_archers_vest", "Heraldic Archer's Padded Vest", [("archers_vest",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 260 , weight(6)|abundance(100)|head_armor(0)|body_armor(23)|leg_armor(12)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_archers_vest", ":agent_id", ":troop_id")])],[]],
  ["hera_leather_vest", "Heraldic Leather Vest", [("leather_vest_a",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs|itp_civilian ,0, 146 , weight(4)|abundance(100)|head_armor(0)|body_armor(15)|leg_armor(7)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_leather_vest_a", ":agent_id", ":troop_id")])],[]],
  ["hera_sarranid_leather_armor", "Heraldic Sarranid Leather Armor", [("sarranid_leather_armor",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 650 , weight(9)|abundance(100)|head_armor(0)|body_armor(32)|leg_armor(12)|difficulty(0) ,imodbits_armor,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_sarranid_leather_armor", ":agent_id", ":troop_id")])],[]],
  ["hera_tribal_warrior_outfit_a_new", "Heraldic Tribal Warrior Outfit", [("tribal_warrior_outfit_a_new",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs|itp_civilian ,0, 520 , weight(14)|abundance(100)|head_armor(0)|body_armor(30)|leg_armor(10)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_tribal_warrior_outfit_a", ":agent_id", ":troop_id")])],[]],
  ["hera_light_mail_and_plate", "Heraldic Light Mail and Plate", [("light_mail_and_plate",0)], itp_type_body_armor|itp_covers_legs   ,0, 532 , weight(10)|abundance(100)|head_armor(0)|body_armor(32)|leg_armor(12)|difficulty(0) ,imodbits_armor,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_light_mail_and_plate", ":agent_id", ":troop_id")])],[]],
  ["hera_mail_and_plate", "Heraldic Mail and Plate", [("mail_and_plate",0)], itp_type_body_armor|itp_covers_legs   ,0, 593 , weight(16)|abundance(100)|head_armor(0)|body_armor(34)|leg_armor(12)|difficulty(0) ,imodbits_armor,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_mail_and_plate", ":agent_id", ":troop_id")])],[]],
  ["hera_cuir_bouilli_a", "Heraldic Cuir Bouilli", [("cuir_bouilli_a",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 3100 , weight(24)|abundance(100)|head_armor(0)|body_armor(50)|leg_armor(15)|difficulty(8) ,imodbits_armor,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_cuir_bouilli_a", ":agent_id", ":troop_id")])],[]],
  ["hera_brigandine_b", "Heraldic Brigandine", [("brigandine_b",0)], itp_merchandise| itp_type_body_armor|itp_covers_legs,0, 1830 , weight(19)|abundance(100)|head_armor(0)|body_armor(46)|leg_armor(12)|difficulty(0) ,imodbits_armor,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_brigandine_b", ":agent_id", ":troop_id")])],[]],
  ["hera_arena_armorW", "Heraldic Arena Armor", [("arena_armorW_new",0)], itp_type_body_armor  |itp_covers_legs ,0, 650 , weight(16)|abundance(100)|head_armor(0)|body_armor(29)|leg_armor(13), imodbits_armor,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_arena_armorW", ":agent_id", ":troop_id")])], []],
  ["hera_mail_long_surcoat", "Heraldic Mail with Surcoat", [("mail_long_surcoat_new",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 1544 , weight(22)|abundance(100)|head_armor(0)|body_armor(42)|leg_armor(14)|difficulty(7) ,imodbits_armor,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_mail_long_surcoat", ":agent_id", ":troop_id")])],[]],
  ["hera_plate_armor", "Heraldic Plate Armor", [("full_plate_armor",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 6553 , weight(27)|abundance(100)|head_armor(0)|body_armor(55)|leg_armor(17)|difficulty(9) ,imodbits_plate,
    [(ti_on_init_item, [(store_trigger_param_1, ":agent_id"),(store_trigger_param_2, ":troop_id"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_full_plate", ":agent_id", ":troop_id")])], []],

3. Fourteen New Camo Items.

Main feature of this mod is the Camo Items. As a mod author, you can clone these items however you like, painting them with any color or texture you can make.

Essentially, with Camo Items, to add an item's recolored or retextured version you only need to add one extra entry in module_items.py!

Well, strictly speaking if you want to use a new texture, you will have to make it as well. This is as difficult as creating a new image and flood-filling it with a texture - and once it's ready, you can apply it to any of the available item meshes!

34tejut.jpg
wqt1d2.jpg

dpz2wm.jpg
9qxwus.jpg

rs53ci.jpg
np59cm.jpg

Code:
  ["camo_peasant_dress_b", "Camo Peasant Dress", [("peasant_dress_b_new",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs|itp_civilian ,0, 6 , weight(1)|abundance(100)|head_armor(0)|body_armor(6)|leg_armor(2)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_peasant_dress_b", -0x800000)])],[]],
  ["camo_blue_dress", "Camo Dress", [("blue_dress_new",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs|itp_civilian ,0, 6 , weight(1)|abundance(100)|head_armor(0)|body_armor(6)|leg_armor(2)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_blue_dress", -0x800000)])], []],

  ["camo_shirt_a", "Camo Linen Tunic", [("shirt_a",0)], itp_merchandise|itp_type_body_armor|itp_civilian|itp_covers_legs,0,6,weight(1)|abundance(100)|head_armor(0)|body_armor(6)|leg_armor(1)|difficulty(0),imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_shirt_a", -0x800000)])],[]],
  ["camo_arena_tunicW", "Camo Arena Tunic", [("arena_tunicW_new",0)], itp_type_body_armor |itp_covers_legs ,0, 47 , weight(2)|abundance(100)|head_armor(0)|body_armor(16)|leg_armor(6), imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_arena_tunicW", -0x800000)])],[]],
  ["camo_rich_tunic_a", "Camo Tunic", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", -0x800000)])],[]],
  ["camo_coarse_tunic_a", "Camo Tunic with vest", [("coarse_tunic_a",0)], itp_merchandise| itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 47 , weight(2)|abundance(100)|head_armor(0)|body_armor(11)|leg_armor(6)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_coarse_tunic_a", -0x800000)])],[]],
  ["camo_tabard_b", "Camo Tabard", [("tabard_b",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs |itp_civilian,0, 107 , weight(3)|abundance(100)|head_armor(0)|body_armor(14)|leg_armor(6)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_tabard_b", -0x800000)])], []],
  ["camo_sarranid_cloth_robe_b", "Camo Worn Robe", [("sar_robe_b",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 33 , weight(1)|abundance(100)|head_armor(0)|body_armor(9)|leg_armor(9)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_sarranid_cloth_robe_b", -0x800000)])],[]],
  ["camo_padded_cloth_a", "Camo Aketon", [("padded_cloth_a",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 297 , weight(11)|abundance(100)|head_armor(0)|body_armor(22)|leg_armor(6)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_padded_cloth_a", -0x800000)])],[]],
  ["camo_padded_cloth_b", "Camo Padded Cloth", [("padded_cloth_b",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 297 , weight(11)|abundance(100)|head_armor(0)|body_armor(22)|leg_armor(6)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_padded_cloth_b", -0x800000)])],[]],
  ["camo_red_gambeson_a", "Camo Gambeson", [("red_gambeson_a",0)], itp_merchandise| itp_type_body_armor|itp_covers_legs|itp_civilian,0, 275 , weight(5)|abundance(100)|head_armor(0)|body_armor(21)|leg_armor(5)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_red_gambeson_a", -0x800000)])],[]],
  ["camo_fur_coat", "Camo Fur Coat", [("fur_coat",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs |itp_civilian,0, 117 , weight(6)|abundance(100)|head_armor(0)|body_armor(13)|leg_armor(6)|difficulty(0) ,imodbits_armor,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_fur_coat", -0x800000)])],[]],
  ["camo_archers_vest", "Camo Archer's Padded Vest", [("archers_vest",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 260 , weight(6)|abundance(100)|head_armor(0)|body_armor(23)|leg_armor(12)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_archers_vest", -0x800000)])],[]],
  ["camo_tribal_warrior_outfit_a_new", "Camo Tribal Warrior Outfit", [("tribal_warrior_outfit_a_new",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs|itp_civilian ,0, 520 , weight(14)|abundance(100)|head_armor(0)|body_armor(30)|leg_armor(10)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_tribal_warrior_outfit_a", -0x800000)])],[]],

Code:
  ["camo_rich_tunic_a_01", "Re-Textured Tunic 01", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", "mesh_camo_texture_01")])],[]],
  ["camo_rich_tunic_a_02", "Re-Textured Tunic 02", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", "mesh_camo_texture_02")])],[]],
  ["camo_rich_tunic_a_03", "Re-Textured Tunic 03", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", "mesh_camo_texture_03")])],[]],
  ["camo_rich_tunic_a_04", "Re-Textured Tunic 04", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", "mesh_camo_texture_04")])],[]],
  ["camo_rich_tunic_a_05", "Re-Textured Tunic 05", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", "mesh_camo_texture_05")])],[]],
  ["camo_rich_tunic_a_06", "Re-Textured Tunic 06", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", "mesh_camo_texture_06")])],[]],
  ["camo_rich_tunic_a_07", "Re-Textured Tunic 07", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", "mesh_camo_texture_07")])],[]],
  ["camo_rich_tunic_a_08", "Re-Textured Tunic 08", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", "mesh_camo_texture_08")])],[]],
  ["camo_rich_tunic_a_09", "Re-Textured Tunic 09", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", "mesh_camo_texture_09")])],[]],
  ["camo_rich_tunic_a_10", "Re-Textured Tunic 10", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", "mesh_camo_texture_10")])],[]],
  ["camo_rich_tunic_a_11", "Re-Textured Tunic 11", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", "mesh_camo_texture_11")])],[]],
  ["camo_rich_tunic_a_12", "Re-Textured Tunic 12", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", "mesh_camo_texture_12")])],[]],
  ["camo_rich_tunic_a_13", "Re-Textured Tunic 13", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", "mesh_camo_texture_13")])],[]],
  ["camo_rich_tunic_a_14", "Re-Textured Tunic 14", [("rich_tunic_a",0)], itp_type_body_armor |itp_civilian |itp_covers_legs ,0, 10 , weight(1)|abundance(100)|head_armor(0)|body_armor(7)|leg_armor(1)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_rich_tunic_a", "mesh_camo_texture_14")])],[]],

FAQ

Q. How do I add a re-colored version of an item?

1. Find a camo item you want to use as the base. For example, "camo_tabard_b":

Code:
  ["camo_tabard_b", "Camo Tabard", [("tabard_b",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs |itp_civilian,0, 107 , weight(3)|abundance(100)|head_armor(0)|body_armor(14)|leg_armor(6)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_tabard_b", -0x800000)])], []],

2. Copy it's entry with a new item ID and name:

Code:
  ["camo_tabard_b_blue", "Blue Tabard", [("tabard_b",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs |itp_civilian,0, 107 , weight(3)|abundance(100)|head_armor(0)|body_armor(14)|leg_armor(6)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_tabard_b", -0x800000)])], []],

3. Change the color code used in item declaration. Note that the script uses a negative value, so don't remove that minus sign. Otherwise, it's a normal color hex code.

Code:
  ["camo_tabard_b_blue", "Blue Tabard", [("tabard_b",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs |itp_civilian,0, 107 , weight(3)|abundance(100)|head_armor(0)|body_armor(14)|leg_armor(6)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_tabard_b", -0x000080)])], []],

4. Done! You now have a blue version of a tabard in your game!

Q. How do I add a re-textured version of an item?

1. Find a camo item you want to use as the base. For example, "camo_archers_vest":

Code:
  ["camo_archers_vest", "Camo Archer's Padded Vest", [("archers_vest",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 260 , weight(6)|abundance(100)|head_armor(0)|body_armor(23)|leg_armor(12)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_archers_vest", -0x800000)])],[]],

2. Copy it's entry with a new item ID and name:

Code:
  ["camo_archers_vest_tx1", "Textured Archer's Padded Vest", [("archers_vest",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 260 , weight(6)|abundance(100)|head_armor(0)|body_armor(23)|leg_armor(12)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_archers_vest", -0x800000)])],[]],

3. Replace the negative color code with a texture mesh that will be used to paint the item. FISH&CHIP is supplied with a small pack of 14 textures, let's use "mesh_camo_texture_09":

Code:
  ["camo_archers_vest_tx1", "Textured Archer's Padded Vest", [("archers_vest",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 260 , weight(6)|abundance(100)|head_armor(0)|body_armor(23)|leg_armor(12)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_archers_vest", "mesh_camo_texture_09")])],[]],

4. Done! You now have a very fancy version of an archer's vest in your game!

Q. How do I use my own texture?

1. Create an image file with size 1024*1024.

2. Flood fill it with texture of your choosing. Or paint kittens on it, whatever.

3. Save the file as DDS texture with DXT1 compression (for the best file size). Let's assume you named the file "camo_my_great_texture.dds".

4. Open fish&chip_items.brf in OpenBrf.

5. Import your texture and create matching material (if you create it automatically, it will have the same name as your texture).

6. Check parameters for your material and set them to be identical to other background textures in the file (shader "simple_shader_no_mip", zero Spec RGB, Coeff = 1.0, and in flags set Render order = 1).

7. Open meshes tab, duplicate any mesh with a new name (let's assume it's still "camo_my_great_texture") and set it to use your material.

8. In module_meshes.py, add an entry for your background texture mesh:

Code:
  ("camo_my_great_texture", 0, "camo_my_great_texture",  0, 0, 0, 0, 0, 0, 1, 1, 1),

9. Done! You can now use your fantastic new mesh to re-texture any camo items from the pack!

WARNINGS

This pack "heraldifies" the same items as Zagibu's Heraldry Pack, and more. So there's no need to use both. Additionally, some resource names in both packs are the same, which will not result in errors, but may result in slightly unexpected (though still decent-looking) results.
 

Jarvisimo

Grandmaster Knight
Nice work, I hope you don't mind if I nab those new civilian clothes! Although, the google drive link makes me request permission to download - so if you could

a) Accept my request to download
and
b) Do something about that,

That'd be great. Thanks for the contribution,

Jarvy
 

Lav

Sergeant Knight at Arms
M&BWB
Jarvisimo said:
Nice work, I hope you don't mind if I nab those new civilian clothes! Although, the google drive link makes me request permission to download - so if you could

a) Accept my request to download
and
b) Do something about that,

That'd be great. Thanks for the contribution,

Jarvy
Whoops. Apparently I posted the URL to my entire Warband folder on Google Drive. Fixed that, sorry. :smile:

P. S. Uploaded the file to Nexus Mods as well.
 

Lav

Sergeant Knight at Arms
M&BWB
FAQ
(also updated root post)

Q. How do I add a re-colored version of an item?

1. Find a camo item you want to use as the base. For example, "camo_tabard_b":

Code:
  ["camo_tabard_b", "Camo Tabard", [("tabard_b",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs |itp_civilian,0, 107 , weight(3)|abundance(100)|head_armor(0)|body_armor(14)|leg_armor(6)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_tabard_b", -0x800000)])], []],

2. Copy it's entry with a new item ID and name:

Code:
  ["camo_tabard_b_blue", "Blue Tabard", [("tabard_b",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs |itp_civilian,0, 107 , weight(3)|abundance(100)|head_armor(0)|body_armor(14)|leg_armor(6)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_tabard_b", -0x800000)])], []],

3. Change the color code used in item declaration. Note that the script uses a negative value, so don't remove that minus sign. Otherwise, it's a normal color hex code.

Code:
  ["camo_tabard_b_blue", "Blue Tabard", [("tabard_b",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs |itp_civilian,0, 107 , weight(3)|abundance(100)|head_armor(0)|body_armor(14)|leg_armor(6)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_tabard_b", -0x000080)])], []],

4. Done! You now have a blue version of a tabard in your game!

Q. How do I add a re-textured version of an item?

1. Find a camo item you want to use as the base. For example, "camo_archers_vest":

Code:
  ["camo_archers_vest", "Camo Archer's Padded Vest", [("archers_vest",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 260 , weight(6)|abundance(100)|head_armor(0)|body_armor(23)|leg_armor(12)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_archers_vest", -0x800000)])],[]],

2. Copy it's entry with a new item ID and name:

Code:
  ["camo_archers_vest_tx1", "Textured Archer's Padded Vest", [("archers_vest",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 260 , weight(6)|abundance(100)|head_armor(0)|body_armor(23)|leg_armor(12)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_archers_vest", -0x800000)])],[]],

3. Replace the negative color code with a texture mesh that will be used to paint the item. FISH&CHIP is supplied with a small pack of 14 textures, let's use "mesh_camo_texture_09":

Code:
  ["camo_archers_vest_tx1", "Textured Archer's Padded Vest", [("archers_vest",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 260 , weight(6)|abundance(100)|head_armor(0)|body_armor(23)|leg_armor(12)|difficulty(0) ,imodbits_cloth,
    [(ti_on_init_item, [(cur_item_set_tableau_material, "tableau_camo_archers_vest", "mesh_camo_texture_09")])],[]],

4. Done! You now have a very fancy version of an archer's vest in your game!

Q. How do I use my own texture?

1. Create an image file with size 1024*1024.

2. Flood fill it with texture of your choosing. Or paint kittens on it, whatever.

3. Save the file as DDS texture with DXT1 compression (for the best file size). Let's assume you named the file "camo_my_great_texture.dds".

4. Open fish&chip_items.brf in OpenBrf.

5. Import your texture and create matching material (if you create it automatically, it will have the same name as your texture).

6. Check parameters for your material and set them to be identical to other background textures in the file (shader "simple_shader_no_mip", zero Spec RGB, Coeff = 1.0, and in flags set Render order = 1).

7. Open meshes tab, duplicate any mesh with a new name (let's assume it's still "camo_my_great_texture") and set it to use your material.

8. In module_meshes.py, add an entry for your background texture mesh:

Code:
  ("camo_my_great_texture", 0, "camo_my_great_texture",  0, 0, 0, 0, 0, 0, 1, 1, 1),

9. Done! You can now use your fantastic new mesh to re-texture any camo items from the pack!
 

DerGreif

Sergeant Knight at Arms
WBVC
Lav said:
FISH&CHIP OSP
Flag Icons Support for Heraldry and Camo/Heraldry Items Pack

Download on Google Drive
Download on Nexus Mods

In this OSP pack, you will find the following:

1. Heraldry Support for Map Icon Flags

After lots of careful tinkering I have finally managed to adapt heraldic tableau code to all three variants of the flag map icons (vertical, horizontal and square).

With this fix, you can replace the 140+ map icons used by Native to support party flags with just three. Since Warband has a hardcoded limit to 255 map icons, freeing up 140 of them might prove useful if you wish to see a lot of variety on your world map.

Note: script responsible to selecting party banner is currently a stub. This is because the code was developed for my own mod which is incompatible with Native, and I was not diligent enough to write it from scratch in my hurry to have this pack published. Eventually I'm going to fix this oversight, or maybe someone else will.

[...]
This is one of the single best add-ons to Mount & Blade! Thank you so much for all your work! Freeing so many Map Icons wil allow us all to really beautify the map! really great work!

Now combining this with the upcoming "seasonal changes" pack by le Grandmaster and truely stunning results can be achieved!
 

Lumos

Archduke
WBWF&SNWM&BVC
Good work, Lav. Custom banners have been used as wrappers to the regular ones before as well, but I don't remember if I ever managed to implement that in my own mod, so I'll have to see, and, if that one's not there, implement this one.
Also, the name is magnificent and you deserve five beers for that.
Also, procedurally-generated items.

Also, I wish I had more time to mod M&B... :cry:
 

Lav

Sergeant Knight at Arms
M&BWB
DerGreif said:
This is one of the single best add-ons to Mount & Blade! Thank you so much for all your work! Freeing so many Map Icons wil allow us all to really beautify the map! really great work!

Now combining this with the upcoming "seasonal changes" pack by le Grandmaster and truely stunning results can be achieved!
I've had this idea for a few years by now, to enrich village icons on the map by placing various situational icons around the village icon to indicate prosperity (wheat fields), herd status (cattle icons), presence of various buildings et cetera. In fact, this is quite likely to be one of my next release OSP packs, unless someone manages to do it first - in which case I'll be extremely happy since I won't have to spend the time and effort. :smile:

Oh, and expect FISH&CHIP update with hats, gloves and boots (and a few more body clothing items), just not in the next couple of days as I'm currently busy on my RL job.
 

usnavy30

Grandmaster Knight
WF&SM&BWBNWVC
This is very awesome heraldic OSP, very nice work I will have to find time to delve into testing the concept further.
 

Lav

Sergeant Knight at Arms
M&BWB
I have added the missing script and re-uploaded the pack to Google Drive and Nexus Mods.

For those who just want the script, here it is:

Code:
    ("get_banner_mesh_for_party",
        [
            (store_script_param_1, ":party_id"),
            (assign, ":lord_id", -1),
            (try_begin),
                (this_or_next|party_slot_eq, ":party_id", slot_party_type, spt_castle),
                (party_slot_eq, ":party_id", slot_party_type, spt_town),
                (party_get_slot, ":lord_id", ":party_id", slot_town_lord),
            (else_try),
                (eq, ":party_id", "p_main_party"),
                (assign, ":lord_id", "trp_player"),
            (else_try),
                (party_slot_eq, ":party_id", slot_party_type, spt_kingdom_hero_party),
                (party_get_num_companion_stacks, ":stacks", ":party_id"),
                (gt, ":stacks", 0),
                (party_stack_get_troop_id, ":lord_id", ":party_id", 0),
            (try_end),
            (try_begin),
                (this_or_next|eq, ":lord_id", "trp_player"),
                (is_between, ":lord_id", active_npcs_begin, active_npcs_end),
                (troop_get_slot, reg0, ":lord_id", slot_troop_banner_scene_prop),
                (val_sub, reg0, banner_scene_props_begin),
                (val_add, reg0, banner_meshes_begin),
            (else_try),
                (assign, reg0, "mesh_banners_default_a"),
            (try_end),
        ]
    ),
 

ArchieDuke

Knight at Arms
WB
Hey man, could you heraldify the "peasant_man_a" mesh? The mesh can be found in "Arabian_Armors" if you're interested, and perhaps Narf's Corrazina and gambeson from his transitional pack?
 

Lav

Sergeant Knight at Arms
M&BWB
I'll have a look at them. :smile:

peasant_man_a is definitely possible, so far it looks like this:

16itw5u.jpg


Didn't bother with crest positioning yet, I'll have to re-install FISH&CHIP for this (currently I only have it's modified version for my new heraldry project at hand).

Actually, if I'm going for another heraldifying rush, perhaps you could suggest a few more textures to heraldify? I'd rather do a pack at once than 1-3 at a time. :smile:
 

ArchieDuke

Knight at Arms
WB
Very nice work, what about the other two suggestions, though?

I can't think of any thing else, sadly. You should look around for Native and OSP resources to heraldify and just do a bunch of them that'd look good.
 

DerGreif

Sergeant Knight at Arms
WBVC
I managed to implement the FISH part rather smoothly, especially for a me being a complete amateur when it comes to programming. Still I got warnings while compiling with regards to some scripts and the banner_selection representation,which I had to modify, becausde oft he now missing banner_icons. For the time being I commented most of the stuff out, which caused the problems, but I will look into a proper handling of those cases when I come to back to banner_selection. Most scripts were easy enough to modify. They mostly dealt with reassigning the appropriate banner to a settlement after a succesful conquest.

Best regards and thanks again for your great work.
 

keinPlan86m

Squire
VCWBNW
Hi,

i tried to get the FISH to work.

I replaced the party_set_banner_icon in the scripts like this:

Code:
#(party_set_banner_icon, "$pout_party", ":cur_banner"),
        (party_set_banner_icon, "$pout_party", "icon_heraldic_banner_01"),

, changes the constants and commented out the native banners in the map_icon.py

Code:
custom_banner_map_icons_begin = "icon_custom_banner_01"
#custom_banner_map_icons_end = "icon_banner_01"
custom_banner_map_icons_end = "icon_map_flag_kingdom_a"

#banner_map_icons_begin = "icon_banner_01"
#banner_map_icons_end_minus_one = "icon_banner_136"

banner_map_icons_begin = "icon_heraldic_banner_01"
banner_map_icons_end_minus_one = "icon_camp_plain"

banner_scene_props_begin = "spr_banner_a"
banner_scene_props_end_minus_one = "spr_banner_f21"

khergit_banners_begin_offset = 63
khergit_banners_end_offset = 84

sarranid_banners_begin_offset = 105
sarranid_banners_end_offset = 125

#banners_end_offset = 136

banners_end_offset = 3

Now my Lords and Citys only have naked flagpoles without a flag.

If i don't change the party_set_banner code they run around with a mix of map_icons as flags.

It's the first time im working with banners, so could anyone help me with this? :smile:
 

fladin

Baron
M&BWBWF&SNWVC
same thing for me  :???:

even replacing
(cur_map_icon_set_tableau_material, "tableau_heraldic_banner_03", reg0),
by
(cur_map_icon_set_tableau_material, "tableau_heraldic_banner_03", "mesh_banner_01"),
(for testing purpose)

any idea ?
 

Lav

Sergeant Knight at Arms
M&BWB
Curious. I'll check to see that everything is working correctly - maybe latest patches changed something.
 

Lor Dric

Marquis
M&BWBWF&S
you said "Since Warband has a hardcoded limit to 255 map icons,"

what icons are counted toward this 255 map icons limit? ie: trade caravans, village farmers, towns, war partys
 

Lav

Sergeant Knight at Arms
M&BWB
Lor Dric said:
you said "Since Warband has a hardcoded limit to 255 map icons,"

what icons are counted toward this 255 map icons limit? ie: trade caravans, village farmers, towns, war partys
There's a hardcoded limitation of 256 map icons that can be assigned to parties and party templates by module system. So yes, all those party types you mentioned count towards that limit.

However I'm not sure about map icons assigned by script code - it's perfectly possible (and in fact likely) that Warband allows icons with reference indexes above 255 to be assigned to parties as main, extra and flag icons. I'm actually planning to test this for about a year, but somehow inevitably forget or get distracted or don't have time at any given moment. :smile:

If there's no engine limit for script-assigned icons, then the module system limit can be easily circumvented with a bit of scripting. If there is engine limit, however, then flag icons will also count towards the 256 icon limit.
 
Top Bottom