Recent content by Eleazar16

  1. Eleazar16

    SP Tutorial Module System Make your own Companions

    module_scripts.py around 30 lines into the "cf_multiplayer_upgrade_companion_equipment" script:
    (try_begin),
          (is_between, ":companion_template", multiplayer_coop_class_templates_begin, multiplayer_coop_class_templates_end),
          (assign, ":multiplier", 21), #formerly 18 (6*3 for vanilla factions)
        (else_try),
          (assign, ":multiplier", 18 ), #formerly 16 (klethi, npc16, max companion id)
        (try_end),
       
        (try_begin),
          (lt, ":companion_level", 3),
          (store_mul, ":template_leveler", ":companion_level", ":multiplier"),
          (val_add, ":companion_template", ":template_leveler"),
        (else_try),
          (store_mul, ":template_leveler", 3, ":multiplier"), #4 is max level
          (val_add, ":companion_template", ":template_leveler"),
        (try_end),
  2. Eleazar16

    SP Tutorial Module System Make your own Companions

    I've used this tutorial to successfully create 24 companions so far, but I'm curious if anyone has figured out how to make custom companions available in Multiplayer Invasion mode.  I'm using version 1.171 as the base for my mod, but I have yet to find the source of a bug I'm encountering in doing this.  I'll post in the related code I have found so far, marking my changes in red.

    module_troops.py just before the upgrade path declarations:
    ...
      ["coop_faction_troop_templates_end","{!}multiplayer_end","{!}multiplayer_end", 0, 0, 0, fac_kingdom_5, [], 0, 0, 0, 0, 0],
      #tier 1
      ["npc1_1","Borcha","Borcha",tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_khergit_armor,itm_nomad_boots,itm_knife, itm_courser],
      str_16|agi_17|int_6|cha_30|level(25),wpex(250,80,140,160,90,250),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_ironflesh_1|knows_power_strike_7|knows_pathfinding_3|knows_athletics_5|knows_tracking_1|knows_riding_6|knows_power_throw_7|knows_power_draw_5, #skills 2/3 player at that level
      0x00000004bf086143259d061a9046e23500000000001db52c0000000000000000],
      ["npc2_1","Marnid","Marnid", tf_hero|tf_unmoveable_in_party_window, 0,reserved, fac_commoners,[itm_linen_tunic,itm_hide_boots,itm_club, itm_saddle_horse],
      str_14|agi_17|int_6|cha_30|level(25),wpex(240,130,170,150,170,90),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_trade_2|knows_weapon_master_1|knows_ironflesh_1|knows_wound_treatment_1|knows_athletics_5|knows_first_aid_1|knows_leadership_1|knows_riding_4|knows_power_strike_7|knows_power_draw_3|knows_power_throw_3,
      0x000000019d004001570b893712c8d28d00000000001dc8990000000000000000],
      ["npc3_1","Ymira","Ymira",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_dress,itm_woolen_hose,itm_knife, itm_hunter],
      str_24|agi_13|int_6|cha_30|level(25),wpex(190,80,240,180,180,80),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_wound_treatment_1|knows_trade_1|knows_first_aid_3|knows_surgery_1|knows_athletics_6|knows_riding_8|knows_power_strike_5|knows_power_draw_3|knows_power_throw_3,
      0x0000000083040001583b6db8dec5925b00000000001d80980000000000000000],
      ["npc4_1","Rolf","Rolf",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_leather_jerkin,itm_nomad_boots, itm_sword_medieval_a, itm_hunter],
      str_20|agi_13|int_6|cha_30|level(25),wpex(210,230,200,90,100,95),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_weapon_master_2|knows_power_strike_9|knows_riding_8|knows_athletics_7|knows_power_throw_3|knows_first_aid_1|knows_surgery_1|knows_tactics_2|knows_leadership_2|knows_power_draw_2,
      0x000000057f1074002c75c6a8a58ad72e00000000001e1a890000000000000000],
      ["npc5_1","Baheshtur","Baheshtur",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_nomad_vest,itm_nomad_boots, itm_sword_khergit_1, itm_steppe_horse],
      str_18|agi_13|int_6|cha_30|level(25),wpex(160,80,130,250,50,230),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_riding_7|knows_horse_archery_9|knows_power_draw_8|knows_leadership_2|knows_weapon_master_1|knows_power_strike_5|knows_power_throw_8|knows_athletics_5,
      0x000000088910318b5c6f972328324a6200000000001cd3310000000000000000],
      ["npc6_1","Firentis","Firentis",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_tabard,itm_nomad_boots, itm_sword_medieval_a, itm_sumpter_horse],
      str_20|agi_19|int_6|cha_30|level(25),wpex(240,210,180,90,100,80),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_riding_7|knows_weapon_master_2|knows_athletics_8|knows_trainer_1|knows_leadership_1|knows_power_strike_7|knows_power_draw_2|knows_power_throw_3,
      0x00000002050052036a1895d0748f3ca30000000000000f0b0000000000000000],
      ["npc7_1","Deshavi","Deshavi",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_ragged_outfit,itm_wrapping_boots, itm_hunting_bow, itm_arrows, itm_quarter_staff, itm_arabian_horse_b],
      str_16|agi_13|int_6|cha_30|level(25),wpex(90,80,230,280,110,130),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_tracking_2|knows_athletics_8|knows_spotting_1|knows_pathfinding_1|knows_power_draw_10|knows_riding_4|knows_power_strike_6|knows_power_throw_5,
      0x00000001fc08400533a15297634d44f400000000001e02db0000000000000000],
      ["npc8_1","Matheld","Matheld",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_tribal_warrior_outfit,itm_nomad_boots, itm_sword_viking_1, itm_courser],
      str_18|agi_15|int_6|cha_30|level(25),wpex(190,250,80,120,80,250),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_weapon_master_3|knows_athletics_10|knows_leadership_3|knows_tactics_1|knows_riding_4|knows_power_strike_10|knows_power_draw_2|knows_power_throw_8,
      0x00000005800c000637db8314e331e76e00000000001c46db0000000000000000],
      ["npc9_1","Alayen","Alayen",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_tabard,itm_nomad_boots, itm_sword_medieval_b_small, itm_courser],
      str_22|agi_19|int_6|cha_30|level(25),wpex(80,230,130,220,70,160),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_weapon_master_1|knows_riding_4|knows_athletics_6|knows_leadership_1|knows_tactics_1|knows_power_strike_4|knows_power_draw_7|knows_power_throw_5,
      0x000000030100300f499d5b391b6db8d300000000001dc2e10000000000000000],
      ["npc10_1","Bunduk","Bunduk",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_padded_leather,itm_nomad_boots, itm_crossbow, itm_bolts, itm_pickaxe, itm_saddle_horse],
      str_24|agi_19|int_6|cha_30|level(25),wpex(170,80,80,160,290,150),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_weapon_master_3|knows_tactics_1|knows_leadership_1|knows_ironflesh_3|knows_trainer_2|knows_first_aid_2|knows_riding_4|knows_power_strike_5|knows_power_draw_5|knows_power_throw_5|knows_athletics_7,
      0x0000000a3f081006572c91c71c8d46cb00000000001e468a0000000000000000],
      ["npc11_1","Katrin","Katrin",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_leather_apron, itm_falchion, itm_wrapping_boots, itm_sumpter_horse],
      str_16|agi_17|int_6|cha_30|level(25),wpex(140,230,130,80,210,170),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_weapon_master_1|knows_first_aid_1|knows_wound_treatment_2|knows_ironflesh_3|knows_inventory_management_5|knows_riding_4|knows_power_strike_5|knows_power_draw_2|knows_power_throw_7|knows_athletics_5,
      0x0000000d7f0400035915aa226b4d975200000000001ea49e0000000000000000],
      ["npc12_1","Jeremus","Jeremus",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_pilgrim_disguise,itm_nomad_boots, itm_staff, itm_sumpter_horse],
      str_16|agi_17|int_6|cha_30|level(25),wpex(120,110,290,80,110,120),  knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_ironflesh_1|knows_power_strike_7|knows_surgery_4|knows_wound_treatment_3|knows_first_aid_3|knows_riding_4|knows_power_draw_2|knows_power_throw_3|knows_athletics_7,
      0x000000078000500e4f8ba62a9cd5d36d00000000001e36250000000000000000],
      ["npc13_1","Nizar","Nizar",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_nomad_robe,itm_nomad_boots, itm_scimitar, itm_courser],
      str_14|agi_17|int_6|cha_30|level(25),wpex(250,80,140,210,110,140),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_riding_9|knows_leadership_2|knows_athletics_5|knows_ironflesh_2|knows_power_strike_6|knows_weapon_master_1|knows_power_draw_7|knows_power_throw_4,
      0x00000004bf0475c85f4e9592de4e574c00000000001e369c0000000000000000],
      ["npc14_1","Lezalit","Lezalit",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_nobleman_outfit,itm_nomad_boots, itm_sword_medieval_b_small, itm_courser],
      str_18|agi_19|int_6|cha_30|level(25),wpex(280,170,170,170,170,180),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_trainer_4|knows_weapon_master_3|knows_leadership_2|knows_power_strike_1|knows_riding_7|knows_power_strike_7|knows_power_draw_6|knows_power_throw_6|knows_athletics_8,
      0x00000001a410259144d5d1d6eb55e96a00000000001db0db0000000000000000],
      ["npc15_1","Artimenner","Artimenner",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_rich_outfit,itm_nomad_boots, itm_sword_medieval_b_small, itm_hunter],
      str_18|agi_13|int_6|cha_30|level(25),wpex(190,290,130,210,90,90),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_tactics_2|knows_engineer_4|knows_trade_3|knows_tracking_1|knows_spotting_1|knows_riding_6|knows_power_strike_7|knows_power_draw_7|knows_power_throw_3|knows_athletics_5,
      0x0000000f2e1021862b4b9123594eab5300000000001d55360000000000000000],
      ["npc16_1","Klethi","Klethi",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_peasant_dress,itm_nomad_boots, itm_dagger, itm_throwing_knives, itm_saddle_horse],
      str_14|agi_17|int_6|cha_30|level(25),wpex(260,10,100,160,30,300),knows_tracking_10|knows_engineer_10|knows_first_aid_10|knows_surgery_10|knows_wound_treatment_10|knows_tactics_10|knows_trainer_10|knows_looting_10|
      knows_power_throw_10|knows_athletics_10|knows_power_strike_8|knows_riding_4|knows_power_draw_5,
      0x00000000000c100739ce9c805d2f381300000000001cc7ad0000000000000000],
      ["npc17_1","Excalibur","Excalibur",tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_leather_armor,itm_hunting_bow, itm_arrows, itm_spear],
      str_15|agi_16|int_9|cha_30|level(25),wpex(275,250,300,300,125,60),
      knows_ironflesh_10|knows_power_strike_8|knows_power_throw_3|knows_power_draw_8|knows_looting_10|knows_weapon_master_10|knows_shield_3|knows_athletics_10|knows_riding_4|knows_horse_archery_4|knows_trainer_10|knows_tracking_10|knows_tactics_10|knows_pathfinding_10|knows_wound_treatment_10|knows_surgery_10|knows_first_aid_10|knows_engineer_10|knows_leadership_3,
      0x00000000f708134136ec6dd865a9ab1b00000000001d6f1b0000000000000000],

     
        #tier 2
      ["npc1_2","Borcha","Borcha",tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_leather_steppe_cap_c,itm_leather_gloves,itm_nomad_robe,itm_hide_boots,itm_sword_medieval_b_small, itm_courser],
      str_16|agi_17|int_12|cha_7|level(14),wp(60),knows_tracker_npc|
      knows_ironflesh_1|knows_power_strike_1|knows_pathfinding_3|knows_athletics_2|knows_tracking_1|knows_riding_2, #skills 2/3 player at that level
      0x00000004bf086143259d061a9046e23500000000001db52c0000000000000000],
      ["npc2_2","Marnid","Marnid", tf_hero|tf_unmoveable_in_party_window, 0,reserved, fac_commoners,[itm_nasal_helmet,itm_padded_leather,itm_leather_boots,itm_mace_2,itm_tab_shield_small_round_a, itm_saddle_horse],
      str_14|agi_17|int_11|cha_6|level(14),wp(40),knows_merchant_npc|
      knows_trade_2|knows_weapon_master_1|knows_ironflesh_1|knows_wound_treatment_1|knows_athletics_2|knows_first_aid_1|knows_leadership_1,
      0x000000019d004001570b893712c8d28d00000000001dc8990000000000000000],
      ["npc3_2","Ymira","Ymira",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_head_wrappings,itm_leather_jerkin,itm_wrapping_boots,itm_sword_medieval_b_small, itm_hunter],
      str_24|agi_13|int_11|cha_6|level(14),wp(20),knows_merchant_npc|
      knows_wound_treatment_1|knows_trade_1|knows_first_aid_3|knows_surgery_1|knows_athletics_1|knows_riding_1,
      0x0000000083040001583b6db8dec5925b00000000001d80980000000000000000],
      ["npc4_2","Rolf","Rolf",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_kettle_hat,itm_leather_gloves,itm_studded_leather_coat,itm_leather_boots,itm_sword_medieval_c,itm_tab_shield_heater_c, itm_hunter],
      str_20|agi_13|int_13|cha_10|level(27),wp(110),knows_warrior_npc|
      knows_weapon_master_2|knows_power_strike_2|knows_riding_2|knows_athletics_2|knows_power_throw_2|knows_first_aid_1|knows_surgery_1|knows_tactics_2|knows_leadership_2,
      0x000000057f1074002c75c6a8a58ad72e00000000001e1a890000000000000000],
      ["npc5_2","Baheshtur","Baheshtur",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_sword_khergit_2, itm_tab_shield_small_round_b, itm_leather_steppe_cap_b, itm_tribal_warrior_outfit, itm_khergit_leather_boots, itm_steppe_horse],
      str_18|agi_13|int_12|cha_7|level(23),wp(90),knows_warrior_npc|
      knows_riding_2|knows_horse_archery_3|knows_power_draw_3|knows_leadership_2|knows_weapon_master_1,
      0x000000088910318b5c6f972328324a6200000000001cd3310000000000000000],
      ["npc6_2","Firentis","Firentis",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_bastard_sword_a, itm_mail_coif, itm_mail_with_tunic_red, itm_ankle_boots, itm_sumpter_horse],
      str_20|agi_19|int_10|cha_5|level(25),wp(105),knows_warrior_npc|
      knows_riding_2|knows_weapon_master_2|knows_power_strike_2|knows_athletics_3|knows_trainer_1|knows_leadership_1,
      0x00000002050052036a1895d0748f3ca30000000000000f0b0000000000000000],
      ["npc7_2","Deshavi","Deshavi",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_voulge, itm_short_bow, itm_barbed_arrows, itm_nordic_fighter_helmet, itm_leather_gloves, itm_studded_leather_coat, itm_leather_boots, itm_arabian_horse_b],
      str_16|agi_13|int_10|cha_6|level(17),wp(80),knows_tracker_npc|
      knows_tracking_2|knows_athletics_2|knows_spotting_1|knows_pathfinding_1|knows_power_draw_2,
      0x00000001fc08400533a15297634d44f400000000001e02db0000000000000000],
      ["npc8_2","Matheld","Matheld",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_sword_viking_2, itm_nordic_helmet, itm_byrnie, itm_leather_boots, itm_courser],
      str_18|agi_15|int_9|cha_10|level(26),wp(90),knows_warrior_npc|
      knows_weapon_master_3|knows_power_strike_2|knows_athletics_2|knows_leadership_3|knows_tactics_1,
      0x00000005800c000637db8314e331e76e00000000001c46db0000000000000000],
      ["npc9_2","Alayen","Alayen",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_sword_medieval_c, itm_vaegir_fur_cap, itm_leather_vest, itm_nomad_boots, itm_courser],
      str_22|agi_19|int_7|cha_8|level(17),wp(100),knows_warrior_npc|
      knows_weapon_master_1|knows_riding_1|knows_athletics_1|knows_leadership_1|knows_tactics_1|knows_power_strike_1,
      0x000000030100300f499d5b391b6db8d300000000001dc2e10000000000000000],
      ["npc10_2","Bunduk","Bunduk",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_military_sickle_a, itm_heavy_crossbow, itm_bolts, itm_mail_coif, itm_leather_gloves, itm_aketon_green, itm_leather_boots, itm_saddle_horse],
      str_24|agi_19|int_9|cha_11|level(27),wp(105),knows_warrior_npc|
      knows_weapon_master_3|knows_tactics_1|knows_leadership_1|knows_ironflesh_3|knows_trainer_2|knows_first_aid_2,
      0x0000000a3f081006572c91c71c8d46cb00000000001e468a0000000000000000],
      ["npc11_2","Katrin","Katrin",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_sarranid_axe_a, itm_arming_cap, itm_leather_gloves, itm_padded_cloth, itm_ankle_boots, itm_sumpter_horse],
      str_16|agi_17|int_10|cha_10|level(26),wp(70),knows_merchant_npc|
      knows_weapon_master_1|knows_first_aid_1|knows_wound_treatment_2|knows_ironflesh_3|knows_inventory_management_5,
      0x0000000d7f0400035915aa226b4d975200000000001ea49e0000000000000000],
      ["npc12_2","Jeremus","Jeremus",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_iron_staff, itm_padded_coif, itm_leather_gloves, itm_pilgrim_disguise, itm_leather_boots, itm_sumpter_horse],
      str_16|agi_17|int_13|cha_7|level(20),wp(30),  knows_merchant_npc|
      knows_ironflesh_1|knows_power_strike_1|knows_surgery_4|knows_wound_treatment_3|knows_first_aid_3,
      0x000000078000500e4f8ba62a9cd5d36d00000000001e36250000000000000000],
      ["npc13_2","Nizar","Nizar",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_scimitar, itm_tab_shield_small_round_b, itm_sarranid_warrior_cap, itm_sarranid_leather_armor, itm_sarranid_boots_b, itm_courser],
      str_14|agi_17|int_12|cha_8|level(19),wp(80),knows_warrior_npc|
      knows_riding_2|knows_leadership_2|knows_athletics_2|knows_ironflesh_2|knows_power_strike_1|knows_weapon_master_1,
      0x00000004bf0475c85f4e9592de4e574c00000000001e369c0000000000000000],
      ["npc14_2","Lezalit","Lezalit",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_sword_medieval_b, itm_tab_shield_heater_c, itm_mail_coif, itm_studded_leather_coat, itm_leather_boots, itm_courser],
      str_18|agi_19|int_11|cha_8|level(23),wp(100),knows_warrior_npc|
      knows_trainer_4|knows_weapon_master_3|knows_leadership_2|knows_power_strike_1,
      0x00000001a410259144d5d1d6eb55e96a00000000001db0db0000000000000000],
      ["npc15_2","Artimenner","Artimenner",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_long_axe, itm_helmet_with_neckguard, itm_leather_gloves, itm_red_gambeson, itm_leather_boots, itm_hunter],
      str_18|agi_13|int_12|cha_8|level(25),wp(80),knows_warrior_npc|
      knows_tactics_2|knows_engineer_4|knows_trade_3|knows_tracking_1|knows_spotting_1,
      0x0000000f2e1021862b4b9123594eab5300000000001d55360000000000000000],
      ["npc16_2","Klethi","Klethi",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_sword_viking_2_small, itm_light_throwing_axes, itm_helmet_with_neckguard, itm_leather_gloves, itm_leather_jerkin, itm_ankle_boots, itm_saddle_horse],
      str_14|agi_17|int_8|cha_7|level(17),wp(80),knows_tracker_npc|
      knows_power_throw_3|knows_athletics_2|knows_power_strike_1,
      0x00000000000c100739ce9c805d2f381300000000001cc7ad0000000000000000],
      ["npc17_2","Excalibur","Excalibur",tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_padded_leather,itm_hide_boots,itm_padded_coif,itm_leather_gloves,itm_short_bow, itm_arrows, itm_spear, itm_arrows],
      str_15|agi_16|int_21|cha_12|level(27),wpex(100,75,125,125,60,10),
      knows_ironflesh_2|knows_power_strike_1|knows_power_draw_1|knows_weapon_master_2|knows_shield_1|knows_athletics_2|knows_trainer_1|knows_pathfinding_3|knows_wound_treatment_1|knows_first_aid_1|knows_engineer_1|knows_tactics_3,
      0x00000000f708134136ec6dd865a9ab1b00000000001d6f1b0000000000000000],


      #tier 3
      ["npc1_3","Borcha","Borcha",tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_khergit_war_helmet,itm_lamellar_gauntlets,itm_lamellar_vest_khergit,itm_khergit_leather_boots,itm_sword_medieval_c_small, itm_courser],
      str_16|agi_17|int_12|cha_7|level(14),wp(60),knows_tracker_npc|
      knows_ironflesh_1|knows_power_strike_1|knows_pathfinding_3|knows_athletics_2|knows_tracking_1|knows_riding_2, #skills 2/3 player at that level
      0x00000004bf086143259d061a9046e23500000000001db52c0000000000000000],
      ["npc2_3","Marnid","Marnid", tf_hero|tf_unmoveable_in_party_window, 0,reserved, fac_commoners,[itm_nordic_veteran_archer_helmet,itm_leather_gloves,itm_byrnie,itm_leather_boots,itm_mace_3,itm_tab_shield_small_round_b, itm_saddle_horse],
      str_14|agi_17|int_11|cha_6|level(14),wp(40),knows_merchant_npc|
      knows_trade_2|knows_weapon_master_1|knows_ironflesh_1|knows_wound_treatment_1|knows_athletics_2|knows_first_aid_1|knows_leadership_1,
      0x000000019d004001570b893712c8d28d00000000001dc8990000000000000000],
      ["npc3_3","Ymira","Ymira",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_skullcap,itm_leather_gloves,itm_mail_shirt,itm_wrapping_boots,itm_sword_medieval_c_small, itm_hunter],
      str_24|agi_13|int_11|cha_6|level(14),wp(20),knows_merchant_npc|
      knows_wound_treatment_1|knows_trade_1|knows_first_aid_3|knows_surgery_1|knows_athletics_1|knows_riding_1,
      0x0000000083040001583b6db8dec5925b00000000001d80980000000000000000],
      ["npc4_3","Rolf","Rolf",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_bascinet_2,itm_leather_gloves,itm_surcoat_over_mail,itm_mail_chausses,itm_sword_medieval_c_long,itm_tab_shield_heater_c, itm_hunter],
      str_20|agi_13|int_13|cha_10|level(27),wp(110),knows_warrior_npc|
      knows_weapon_master_2|knows_power_strike_2|knows_riding_2|knows_athletics_2|knows_power_throw_2|knows_first_aid_1|knows_surgery_1|knows_tactics_2|knows_leadership_2,
      0x000000057f1074002c75c6a8a58ad72e00000000001e1a890000000000000000],
      ["npc5_3","Baheshtur","Baheshtur",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_scimitar, itm_tab_shield_small_round_c, itm_khergit_cavalry_helmet, itm_leather_gloves, itm_lamellar_vest, itm_khergit_leather_boots, itm_steppe_horse],
      str_18|agi_13|int_12|cha_7|level(23),wp(90),knows_warrior_npc|
      knows_riding_2|knows_horse_archery_3|knows_power_draw_3|knows_leadership_2|knows_weapon_master_1,
      0x000000088910318b5c6f972328324a6200000000001cd3310000000000000000],
      ["npc6_3","Firentis","Firentis",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_bastard_sword_b, itm_flat_topped_helmet, itm_mail_mittens, itm_haubergeon, itm_mail_chausses, itm_sumpter_horse],
      str_20|agi_19|int_10|cha_5|level(25),wp(105),knows_warrior_npc|
      knows_riding_2|knows_weapon_master_2|knows_power_strike_2|knows_athletics_3|knows_trainer_1|knows_leadership_1,
      0x00000002050052036a1895d0748f3ca30000000000000f0b0000000000000000],
      ["npc7_3","Deshavi","Deshavi",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_long_bardiche, itm_strong_bow, itm_barbed_arrows, itm_nordic_helmet, itm_leather_gloves, itm_mail_hauberk, itm_splinted_leather_greaves, itm_arabian_horse_b],
      str_16|agi_13|int_10|cha_6|level(17),wp(80),knows_tracker_npc|
      knows_tracking_2|knows_athletics_2|knows_spotting_1|knows_pathfinding_1|knows_power_draw_2,
      0x00000001fc08400533a15297634d44f400000000001e02db0000000000000000],
      ["npc8_3","Matheld","Matheld",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_battle_axe, itm_nordic_huscarl_helmet, itm_leather_gloves, itm_mail_hauberk, itm_mail_chausses, itm_courser],
      str_18|agi_15|int_9|cha_10|level(26),wp(90),knows_warrior_npc|
      knows_weapon_master_3|knows_power_strike_2|knows_athletics_2|knows_leadership_3|knows_tactics_1,
      0x00000005800c000637db8314e331e76e00000000001c46db0000000000000000],
      ["npc9_3","Alayen","Alayen",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_sword_medieval_c_long, itm_vaegir_lamellar_helmet, itm_leather_gloves, itm_lamellar_vest, itm_leather_boots, itm_courser],
      str_22|agi_19|int_7|cha_8|level(17),wp(100),knows_warrior_npc|
      knows_weapon_master_1|knows_riding_1|knows_athletics_1|knows_leadership_1|knows_tactics_1|knows_power_strike_1,
      0x000000030100300f499d5b391b6db8d300000000001dc2e10000000000000000],
      ["npc10_3","Bunduk","Bunduk",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_military_pick, itm_heavy_crossbow, itm_steel_bolts, itm_kettle_hat, itm_leather_gloves, itm_mail_with_tunic_green, itm_leather_boots, itm_saddle_horse],
      str_24|agi_19|int_9|cha_11|level(27),wp(105),knows_warrior_npc|
      knows_weapon_master_3|knows_tactics_1|knows_leadership_1|knows_ironflesh_3|knows_trainer_2|knows_first_aid_2,
      0x0000000a3f081006572c91c71c8d46cb00000000001e468a0000000000000000],
      ["npc11_3","Katrin","Katrin",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_sarranid_axe_b, itm_arming_cap, itm_leather_gloves, itm_mail_with_surcoat, itm_mail_chausses, itm_sumpter_horse],
      str_16|agi_17|int_10|cha_10|level(26),wp(70),knows_merchant_npc|
      knows_weapon_master_1|knows_first_aid_1|knows_wound_treatment_2|knows_ironflesh_3|knows_inventory_management_5,
      0x0000000d7f0400035915aa226b4d975200000000001ea49e0000000000000000],
      ["npc12_3","Jeremus","Jeremus",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_iron_staff, itm_mail_coif, itm_mail_mittens, itm_pilgrim_disguise, itm_mail_chausses, itm_sumpter_horse],
      str_16|agi_17|int_13|cha_7|level(20),wp(30),  knows_merchant_npc|
      knows_ironflesh_1|knows_power_strike_1|knows_surgery_4|knows_wound_treatment_3|knows_first_aid_3,
      0x000000078000500e4f8ba62a9cd5d36d00000000001e36250000000000000000],
      ["npc13_3","Nizar","Nizar",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_scimitar, itm_tab_shield_small_round_c, itm_sarranid_mail_coif, itm_arabian_armor_b, itm_sarranid_boots_c, itm_courser],
      str_14|agi_17|int_12|cha_8|level(19),wp(80),knows_warrior_npc|
      knows_riding_2|knows_leadership_2|knows_athletics_2|knows_ironflesh_2|knows_power_strike_1|knows_weapon_master_1,
      0x00000004bf0475c85f4e9592de4e574c00000000001e369c0000000000000000],
      ["npc14_3","Lezalit","Lezalit",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_sword_medieval_c, itm_tab_shield_heater_c, itm_bascinet_2, itm_leather_gloves, itm_surcoat_over_mail, itm_mail_chausses, itm_courser],
      str_18|agi_19|int_11|cha_8|level(23),wp(100),knows_warrior_npc|
      knows_trainer_4|knows_weapon_master_3|knows_leadership_2|knows_power_strike_1,
      0x00000001a410259144d5d1d6eb55e96a00000000001db0db0000000000000000],
      ["npc15_3","Artimenner","Artimenner",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_long_axe_b, itm_guard_helmet, itm_mail_mittens, itm_haubergeon, itm_mail_chausses, itm_hunter],
      str_18|agi_13|int_12|cha_8|level(25),wp(80),knows_warrior_npc|
      knows_tactics_2|knows_engineer_4|knows_trade_3|knows_tracking_1|knows_spotting_1,
      0x0000000f2e1021862b4b9123594eab5300000000001d55360000000000000000],
      ["npc16_3","Klethi","Klethi",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_sword_viking_2_small, itm_throwing_axes, itm_vaegir_fur_helmet, itm_leather_gloves, itm_lamellar_vest, itm_leather_boots, itm_saddle_horse],
      str_14|agi_17|int_8|cha_7|level(17),wp(80),knows_tracker_npc|
      knows_power_throw_3|knows_athletics_2|knows_power_strike_1,
      0x00000000000c100739ce9c805d2f381300000000001cc7ad0000000000000000],
      ["npc17_3","Excalibur","Excalibur",tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_lamellar_vest,itm_leather_boots,itm_leather_cap,itm_mail_mittens,itm_khergit_bow, itm_barbed_arrows, itm_boar_spear, itm_barbed_arrows, itm_saddle_horse],
      str_15|agi_16|int_21|cha_12|level(27),wpex(175,150,180,180,125,60),
      knows_ironflesh_2|knows_power_strike_1|knows_power_draw_1|knows_weapon_master_2|knows_shield_1|knows_athletics_2|knows_trainer_1|knows_pathfinding_3|knows_wound_treatment_1|knows_first_aid_1|knows_engineer_1|knows_tactics_3,
      0x00000000f708134136ec6dd865a9ab1b00000000001d6f1b0000000000000000],


      #tier 4
      ["npc1_4","Borcha","Borcha",tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_khergit_guard_helmet,itm_lamellar_gauntlets,itm_khergit_guard_armor,itm_khergit_guard_boots,itm_sword_viking_3_small, itm_courser],
      str_16|agi_17|int_12|cha_7|level(14),wp(60),knows_tracker_npc|
      knows_ironflesh_1|knows_power_strike_1|knows_pathfinding_3|knows_athletics_2|knows_tracking_1|knows_riding_2, #skills 2/3 player at that level
      0x00000004bf086143259d061a9046e23500000000001db52c0000000000000000],
      ["npc2_4","Marnid","Marnid", tf_hero|tf_unmoveable_in_party_window, 0,reserved, fac_commoners,[itm_nordic_helmet,itm_mail_mittens,itm_mail_hauberk,itm_mail_chausses,itm_mace_4,itm_tab_shield_small_round_c, itm_saddle_horse],
      str_14|agi_17|int_11|cha_6|level(14),wp(40),knows_merchant_npc|
      knows_trade_2|knows_weapon_master_1|knows_ironflesh_1|knows_wound_treatment_1|knows_athletics_2|knows_first_aid_1|knows_leadership_1,
      0x000000019d004001570b893712c8d28d00000000001dc8990000000000000000],
      ["npc3_4","Ymira","Ymira",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_guard_helmet,itm_gauntlets,itm_plate_armor,itm_plate_boots,itm_sword_viking_3_small, itm_hunter],
      str_24|agi_13|int_11|cha_6|level(14),wp(20),knows_merchant_npc|
      knows_wound_treatment_1|knows_trade_1|knows_first_aid_3|knows_surgery_1|knows_athletics_1|knows_riding_1,
      0x0000000083040001583b6db8dec5925b00000000001d80980000000000000000],
      ["npc4_4","Rolf","Rolf",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_full_helm,itm_scale_gauntlets,itm_heraldic_mail_with_tabard,itm_iron_greaves,itm_sword_medieval_d_long,itm_tab_shield_heater_d, itm_hunter],
      str_20|agi_13|int_13|cha_10|level(27),wp(110),knows_warrior_npc|
      knows_weapon_master_2|knows_power_strike_2|knows_riding_2|knows_athletics_2|knows_power_throw_2|knows_first_aid_1|knows_surgery_1|knows_tactics_2|knows_leadership_2,
      0x000000057f1074002c75c6a8a58ad72e00000000001e1a890000000000000000],
      ["npc5_4","Baheshtur","Baheshtur",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_scimitar_b, itm_tab_shield_small_round_c, itm_khergit_guard_helmet, itm_scale_gauntlets, itm_lamellar_armor, itm_iron_greaves, itm_steppe_horse],
      str_18|agi_13|int_12|cha_7|level(23),wp(90),knows_warrior_npc|
      knows_riding_2|knows_horse_archery_3|knows_power_draw_3|knows_leadership_2|knows_weapon_master_1,
      0x000000088910318b5c6f972328324a6200000000001cd3310000000000000000],
      ["npc6_4","Firentis","Firentis",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_sword_two_handed_b, itm_bascinet, itm_gauntlets, itm_cuir_bouilli, itm_plate_boots, itm_sumpter_horse],
      str_20|agi_19|int_10|cha_5|level(25),wp(105),knows_warrior_npc|
      knows_riding_2|knows_weapon_master_2|knows_power_strike_2|knows_athletics_3|knows_trainer_1|knows_leadership_1,
      0x00000002050052036a1895d0748f3ca30000000000000f0b0000000000000000],
      ["npc7_4","Deshavi","Deshavi",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_great_long_bardiche, itm_war_bow, itm_khergit_arrows, itm_nordic_huscarl_helmet, itm_scale_gauntlets, itm_heraldic_mail_with_tabard, itm_iron_greaves, itm_arabian_horse_b],
      str_16|agi_13|int_10|cha_6|level(17),wp(80),knows_tracker_npc|
      knows_tracking_2|knows_athletics_2|knows_spotting_1|knows_pathfinding_1|knows_power_draw_2,
      0x00000001fc08400533a15297634d44f400000000001e02db0000000000000000],
      ["npc8_4","Matheld","Matheld",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_great_axe, itm_nordic_warlord_helmet, itm_mail_mittens, itm_banded_armor, itm_mail_chausses, itm_courser],
      str_18|agi_15|int_9|cha_10|level(26),wp(90),knows_warrior_npc|
      knows_weapon_master_3|knows_power_strike_2|knows_athletics_2|knows_leadership_3|knows_tactics_1,
      0x00000005800c000637db8314e331e76e00000000001c46db0000000000000000],
      ["npc9_4","Alayen","Alayen",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_bastard_sword_b, itm_vaegir_war_helmet, itm_lamellar_gauntlets, itm_banded_armor, itm_iron_greaves, itm_courser],
      str_22|agi_19|int_7|cha_8|level(17),wp(100),knows_warrior_npc|
      knows_weapon_master_1|knows_riding_1|knows_athletics_1|knows_leadership_1|knows_tactics_1|knows_power_strike_1,
      0x000000030100300f499d5b391b6db8d300000000001dc2e10000000000000000],
      ["npc10_4","Bunduk","Bunduk",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_military_pick, itm_sniper_crossbow, itm_steel_bolts, itm_full_helm, itm_mail_mittens, itm_surcoat_over_mail, itm_splinted_leather_greaves, itm_saddle_horse],
      str_24|agi_19|int_9|cha_11|level(27),wp(105),knows_warrior_npc|
      knows_weapon_master_3|knows_tactics_1|knows_leadership_1|knows_ironflesh_3|knows_trainer_2|knows_first_aid_2,
      0x0000000a3f081006572c91c71c8d46cb00000000001e468a0000000000000000],
      ["npc11_4","Katrin","Katrin",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_sarranid_two_handed_axe_a, itm_great_helmet, itm_gauntlets, itm_brigandine_red, itm_plate_boots, itm_sumpter_horse],
      str_16|agi_17|int_10|cha_10|level(26),wp(70),knows_merchant_npc|
      knows_weapon_master_1|knows_first_aid_1|knows_wound_treatment_2|knows_ironflesh_3|knows_inventory_management_5,
      0x0000000d7f0400035915aa226b4d975200000000001ea49e0000000000000000],
      ["npc12_4","Jeremus","Jeremus",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_iron_staff, itm_kettle_hat, itm_gauntlets, itm_surcoat_over_mail, itm_plate_boots, itm_sumpter_horse],
      str_16|agi_17|int_13|cha_7|level(20),wp(30),  knows_merchant_npc|
      knows_ironflesh_1|knows_power_strike_1|knows_surgery_4|knows_wound_treatment_3|knows_first_aid_3,
      0x000000078000500e4f8ba62a9cd5d36d00000000001e36250000000000000000],
      ["npc13_4","Nizar","Nizar",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_scimitar_b, itm_tab_shield_small_round_c, itm_sarranid_veiled_helmet, itm_scale_gauntlets, itm_mamluke_mail, itm_sarranid_boots_d, itm_courser],
      str_14|agi_17|int_12|cha_8|level(19),wp(80),knows_warrior_npc|
      knows_riding_2|knows_leadership_2|knows_athletics_2|knows_ironflesh_2|knows_power_strike_1|knows_weapon_master_1,
      0x00000004bf0475c85f4e9592de4e574c00000000001e369c0000000000000000],
      ["npc14_4","Lezalit","Lezalit",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_sword_medieval_d_long, itm_tab_shield_heater_d, itm_great_helmet, itm_gauntlets, itm_heraldic_mail_with_surcoat, itm_plate_boots, itm_courser],
      str_18|agi_19|int_11|cha_8|level(23),wp(100),knows_warrior_npc|
      knows_trainer_4|knows_weapon_master_3|knows_leadership_2|knows_power_strike_1,
      0x00000001a410259144d5d1d6eb55e96a00000000001db0db0000000000000000],
      ["npc15_4","Artimenner","Artimenner",tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_long_axe_c, itm_full_helm, itm_scale_gauntlets, itm_heraldic_mail_with_surcoat, itm_iron_greaves, itm_hunter],
      str_18|agi_13|int_12|cha_8|level(25),wp(80),knows_warrior_npc|
      knows_tactics_2|knows_engineer_4|knows_trade_3|knows_tracking_1|knows_spotting_1,
      0x0000000f2e1021862b4b9123594eab5300000000001d55360000000000000000],
      ["npc16_4","Klethi","Klethi",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved,  fac_commoners,[itm_sword_viking_3_small, itm_heavy_throwing_axes, itm_vaegir_lamellar_helmet, itm_lamellar_gauntlets, itm_lamellar_armor, itm_khergit_guard_boots, itm_saddle_horse],
      str_14|agi_17|int_8|cha_7|level(17),wp(80),knows_tracker_npc|
      knows_power_throw_3|knows_athletics_2|knows_power_strike_1,
      0x00000000000c100739ce9c805d2f381300000000001cc7ad0000000000000000],
      ["npc17_4","Excalibur","Excalibur",tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_lamellar_armor,itm_splinted_greaves,itm_skullcap,itm_lamellar_gauntlets,itm_strong_bow, itm_bodkin_arrows, itm_war_spear, itm_bodkin_arrows, itm_courser],
      str_15|agi_16|int_21|cha_12|level(27),wpex(175,150,180,180,125,60),
      knows_ironflesh_2|knows_power_strike_1|knows_power_draw_1|knows_weapon_master_2|knows_shield_1|knows_athletics_2|knows_trainer_1|knows_pathfinding_3|knows_wound_treatment_1|knows_first_aid_1|knows_engineer_1|knows_tactics_3,
      0x00000000f708134136ec6dd865a9ab1b00000000001d6f1b0000000000000000],

    ...

    module_scripts.py starting around line 51000 (give or take for my 24 new companions' code blocks):
        (try_begin),
          (eq, ":companion_alive", 0), #for dead companions, we check their class and level to get the right template
          (try_for_range, ":cur_slot", slot_player_companion_ids_begin, slot_player_companion_ids_end),
            (player_slot_eq, ":my_player_no", ":cur_slot", ":troop_no"), #check which companion we're using (since this isn't sent as a parameter...)
            (try_begin),
              (gt, ":cur_slot", slot_player_companion_ids_begin),
              (val_add, ":canvas_no", 2), #the second companion uses different troops
            (try_end),
            (val_add, ":cur_slot", 2),
            (player_get_slot, ":template_no", ":my_player_no", ":cur_slot"), #get their class
            (val_add, ":cur_slot", 2),
            (player_get_slot, ":level_no", ":my_player_no", ":cur_slot"), #and upgrade it for their level
            (try_begin),
              (ge, ":template_no", "trp_npc1_1"), #companion class troops come after faction class troops
              (val_mul, ":level_no", 17), #there are (companion mod)17 at each level tier (one for each companion) so multiply by (companion mod)17 to get to the right level
              (val_add, ":template_no", ":level_no"),
            (else_try),
              (val_mul, ":level_no", 21), #(companion mod)21 at each level tier for faction classes ((companion mod)7 factions * 3 troops, one ranged, one melee, one cav)
              (val_add, ":template_no", ":level_no"),
            (try_end),
            (try_for_range, ":cur_inv_slot", 0, 8 ),
              (troop_get_inventory_slot, ":cur_item", ":template_no", ":cur_inv_slot"),
              (ge, ":cur_item", 0),
              (cur_tableau_add_override_item, ":cur_item"),
            (try_end),
          (try_end),
        (try_end),
    (Note: I highlighted a line that I changed for a different purpose in purple)

    The bug I'm getting is that all the companions, not just my new one, are upgrading to the previous companion's next tier each time (except for borcha, marnid, and ymira, who end up down one tier from the others).

    The second set of code should have been the problem and my change should have resolved it, but there seems to be a second set of code somewhere that overrides this change.  The original code was a 16 instead of a 17, just for reference.

    EDIT:  I figured it out.  There is a second script managing the troop updates.  If anyone else is curious how it's done, the code is in the next post from me (with changes in red).
Back
Top Bottom