Are you fed up of having Jeremus as your medic on every campaign? Read on.
I'm working on a mod that replaces the 16 native companions, allowing for a different play experiences (and experimentations). I played many campaigns with the native 16, and I find I'm running in circles, always using the same guys for the same role. Malik's companion collection has given me a lot of food for thought, but I know I want the 16 to stay low-level enough that you can customize them over the course of the game.
All companions have very basic equipment so that the player equips them as he wants, with little regard for the low-level stuff they originally came with. For the same reason, they have equalized weapon proficiencies and some basics of strong draw / throwing / horse archery.
Dislikes are disabled, and I don't plan to implement any character-specific ones.
No companions are 'noble'. Calradian nobles should object to you granting fiefs to *anyone* you found in a tavern !
No companions are warriors by design. All have the potential of being strong warriors if you specialize them as such (and it will never make you waste the potential of an unreplaceable specialist).
I made 4 groups:
The sergents
Hiring cost : 1500, level:15, number: 2
Their unusual train:7 makes them teach the player, all companions, and T1 - T3 troops. However you need to level them further, if you want them to train T4 then T5 troops.
They can be useful at any point of the game, but if you don't carry them throughout the game, a more INT-optimized companion will catch up levels and easily overtake their skill.
I made 2, so that it's easier to find one. Their stats are subtly different, but it's mostly for flavor.
I also gave them Surgery 2, because when all hell breaks loose (better medics are KO), good sergents keep rookies alive.
The blank slates
Hiring cost : 0, level:1, number: 5
They are balanced and scaled similarly as the original Marnid/Ymira.
If you optimize them for INT they will be your experts in at least 2 domains, if you optimize them for combat they will be your most optimized fighters.
The adventurers
Hiring cost : 200, level:6, number: 6
Each one has a 1-3 points in 5 support skills, so they are early "jack-of-all-trades" helpers. They pay these early advantages by taking a bit longer to reach INT 30.
It's still not a mistake to use one as your specialist for some support skill.
The early specialists
Hiring cost : 500, level:10, number: 3
The mod is designed to be easy to patcg into the mods I mostly play (Tocan's Calradia, Nativeenhanced expansion)
TODO :
version 1, 30/08/2019
module_scripts.py
module_troops.py
I'm working on a mod that replaces the 16 native companions, allowing for a different play experiences (and experimentations). I played many campaigns with the native 16, and I find I'm running in circles, always using the same guys for the same role. Malik's companion collection has given me a lot of food for thought, but I know I want the 16 to stay low-level enough that you can customize them over the course of the game.
All companions have very basic equipment so that the player equips them as he wants, with little regard for the low-level stuff they originally came with. For the same reason, they have equalized weapon proficiencies and some basics of strong draw / throwing / horse archery.
Dislikes are disabled, and I don't plan to implement any character-specific ones.
No companions are 'noble'. Calradian nobles should object to you granting fiefs to *anyone* you found in a tavern !
No companions are warriors by design. All have the potential of being strong warriors if you specialize them as such (and it will never make you waste the potential of an unreplaceable specialist).
I made 4 groups:
The sergents
Hiring cost : 1500, level:15, number: 2
Their unusual train:7 makes them teach the player, all companions, and T1 - T3 troops. However you need to level them further, if you want them to train T4 then T5 troops.
They can be useful at any point of the game, but if you don't carry them throughout the game, a more INT-optimized companion will catch up levels and easily overtake their skill.
I made 2, so that it's easier to find one. Their stats are subtly different, but it's mostly for flavor.
I also gave them Surgery 2, because when all hell breaks loose (better medics are KO), good sergents keep rookies alive.
The blank slates
Hiring cost : 0, level:1, number: 5
They are balanced and scaled similarly as the original Marnid/Ymira.
If you optimize them for INT they will be your experts in at least 2 domains, if you optimize them for combat they will be your most optimized fighters.
The adventurers
Hiring cost : 200, level:6, number: 6
Each one has a 1-3 points in 5 support skills, so they are early "jack-of-all-trades" helpers. They pay these early advantages by taking a bit longer to reach INT 30.
It's still not a mistake to use one as your specialist for some support skill.
The early specialists
Hiring cost : 500, level:10, number: 3
- A medic (wound treatment, surgery, first aid: 4)
- A scout (pathfinding, spotting, tracking: 4)
- A scholar (engineer, tactics, trade: 4)
The mod is designed to be easy to patcg into the mods I mostly play (Tocan's Calradia, Native
TODO :
- In-depth testing and balancing
- The sergents probably need some tradeoff / upkeep / requirement for balance.
- Random 'contacts' town (current placeholder is Ichamur)
- More generic dialogs, instead of using the ones from the companion they replace
version 1, 30/08/2019
module_scripts.py
Code:
("initialize_npcs",
[
# set strings
#--- alternative companions - begin ---
(try_for_range, ":npc", companions_begin, companions_end),
(troop_set_slot, ":npc", slot_troop_morality_type, tmt_humanitarian),
(troop_set_slot, ":npc", slot_troop_morality_value, 2),
(troop_set_slot, ":npc", slot_troop_2ary_morality_type, tmt_honest),
(troop_set_slot, ":npc", slot_troop_2ary_morality_value, 1),
(troop_set_slot, ":npc", slot_troop_personalityclash_object, "trp_kradus"),
(troop_set_slot, ":npc", slot_troop_personalityclash2_object, "trp_kradus"),
(troop_set_slot, ":npc", slot_troop_personalitymatch_object, "trp_kradus"),
(troop_set_slot, ":npc", slot_troop_home, "p_zendar"),
(troop_set_slot, ":npc", slot_troop_kingsupport_argument, argument_commons),
(troop_set_slot, ":npc", slot_troop_kingsupport_opponent, "trp_kradus"),
#(store_random_in_range, ":contacts_town", 1, 22),
(troop_set_slot, ":npc", slot_troop_town_with_contacts, "p_town_17"),
(troop_set_slot, ":npc", slot_troop_original_faction, 0),
(store_random_in_range, ":reputation", lrep_martial, lrep_custodian),
(troop_set_slot, ":npc", slot_lord_reputation_type, ":reputation"),
(try_end),
(troop_set_slot, "trp_npc1", slot_troop_payment_request, 1500),
(troop_set_slot, "trp_npc2", slot_troop_payment_request, 1500),
(troop_set_slot, "trp_npc3", slot_troop_payment_request, 0),
(troop_set_slot, "trp_npc4", slot_troop_payment_request, 0),
(troop_set_slot, "trp_npc5", slot_troop_payment_request, 0),
(troop_set_slot, "trp_npc6", slot_troop_payment_request, 0),
(troop_set_slot, "trp_npc7", slot_troop_payment_request, 0),
(troop_set_slot, "trp_npc8", slot_troop_payment_request, 200),
(troop_set_slot, "trp_npc9", slot_troop_payment_request, 200),
(troop_set_slot, "trp_npc10", slot_troop_payment_request, 200),
(troop_set_slot, "trp_npc11", slot_troop_payment_request, 200),
(troop_set_slot, "trp_npc12", slot_troop_payment_request, 200),
(troop_set_slot, "trp_npc13", slot_troop_payment_request, 200),
(troop_set_slot, "trp_npc14", slot_troop_payment_request, 500),
(troop_set_slot, "trp_npc15", slot_troop_payment_request, 500),
(troop_set_slot, "trp_npc16", slot_troop_payment_request, 500),
#--- alternative companions - end ---
(store_sub, "$number_of_npc_slots", slot_troop_strings_end, slot_troop_intro),
(try_for_range, ":npc", companions_begin, companions_end),
Code:
#Companions
["kingdom_heroes_including_player_begin", "kingdom_heroes_including_player_begin", "kingdom_heroes_including_player_begin", tf_hero, 0,reserved, fac_kingdom_1,[], lord_attrib,wp(220),knows_lord_1, 0x000000000010918a01f248377289467d],
#--- alternative companions - start ---
# sergents
["npc1","Valeria","Valeria",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_aketon_green,itm_splinted_leather_greaves,itm_scale_gauntlets,itm_bastard_sword_a,itm_tab_shield_kite_b,itm_hunter],
str_11|agi_13|int_8|cha_12|level(15),wp(110),knows_inventory_management_2|knows_trainer_7|knows_tactics_4|knows_surgery_2|knows_engineer_2|knows_looting_2|knows_ironflesh_3|knows_power_strike_1|knows_power_throw_2|knows_power_draw_2|knows_weapon_master_4|knows_shield_1|knows_athletics_2|knows_riding_3|knows_horse_archery_2|knows_leadership_3,
0x0000000f790420043bd929a12429b8d300000000001db9040000000000000000],
["npc2","Heinrich","Heinrich", tf_hero|tf_unmoveable_in_party_window, 0,reserved, fac_commoners,[itm_aketon_green,itm_splinted_leather_greaves,itm_scale_gauntlets,itm_winged_mace,itm_tab_shield_pavise_a,itm_crossbow,itm_bolts],
str_13|agi_11|int_8|cha_12|level(15),wp(110),knows_inventory_management_2|knows_trainer_7|knows_tactics_2|knows_surgery_2|knows_engineer_4|knows_looting_2|knows_ironflesh_4|knows_power_strike_1|knows_power_throw_3|knows_power_draw_2|knows_weapon_master_4|knows_shield_1|knows_athletics_4|knows_riding_2|knows_leadership_3,
0x0000000fff1015450b0dada49a41defe00000000001d39320000000000000000],
# level 1 blank slates
["npc3","Ava","Ava",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_short_tunic,itm_woolen_hose,itm_dagger],
str_8|agi_8|int_11|cha_12|level(1),wp(40),knows_inventory_management_2|knows_tracking_1|knows_pathfinding_1|knows_ironflesh_2|knows_power_strike_2|knows_power_throw_2|knows_power_draw_2|knows_weapon_master_2|knows_shield_1|knows_athletics_1|knows_riding_1,
0x00000002210040030f1851b888699d1200000000001e36430000000000000000],
["npc4","Clement","Clement",tf_hero|tf_unmoveable_in_party_window, 0,reserved, fac_commoners,[itm_red_shirt,itm_hide_boots,itm_dagger],
str_8|agi_8|int_11|cha_12|level(1),wp(40),knows_inventory_management_2|knows_tactics_1|knows_spotting_1|knows_ironflesh_2|knows_power_strike_2|knows_power_throw_2|knows_power_draw_2|knows_weapon_master_2|knows_shield_1|knows_athletics_1|knows_riding_1,
0x00000007bf083007460e8937a610069c00000000001f78b20000000000000000],
["npc5","Elina","Elina",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_peasant_dress,itm_woolen_hose,itm_dagger],
str_8|agi_8|int_11|cha_12|level(1),wp(40),knows_inventory_management_2|knows_surgery_1|knows_looting_1|knows_ironflesh_2|knows_power_strike_2|knows_power_throw_2|knows_power_draw_2|knows_weapon_master_2|knows_shield_1|knows_athletics_1|knows_riding_1,
0x00000002290c30064b947642e38e252d00000000001e36ea0000000000000000],
["npc6","Arthur","Arthur",tf_hero|tf_unmoveable_in_party_window, 0,reserved, fac_commoners,[itm_hide_boots,itm_dagger,itm_headcloth],
str_8|agi_8|int_11|cha_12|level(1),wp(40),knows_inventory_management_2|knows_wound_treatment_1|knows_first_aid_1|knows_ironflesh_2|knows_power_strike_2|knows_power_throw_2|knows_power_draw_2|knows_weapon_master_2|knows_shield_1|knows_athletics_1|knows_riding_1,
0x000000002f042044469c12352baac95a00000000001f43340000000000000000],
["npc7","Susan","Susan",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_red_shirt,itm_woolen_hose,itm_dagger],
str_8|agi_8|int_11|cha_12|level(1),wp(40),knows_inventory_management_2|knows_engineer_1|knows_trade_1|knows_ironflesh_2|knows_power_strike_2|knows_power_throw_2|knows_power_draw_2|knows_weapon_master_2|knows_shield_1|knows_athletics_1|knows_riding_1,
0x000000021204200132928358cb6a472c00000000001dc2d50000000000000000],
# level 6 adventurers
["npc8","Ben","Ben",tf_hero|tf_unmoveable_in_party_window, 0,reserved, fac_commoners,[itm_red_tunic,itm_hide_boots,itm_sword_viking_1,itm_nordic_shield,itm_sumpter_horse],
str_10|agi_9|int_13|cha_11|level(6),wp(80),knows_inventory_management_2|knows_trainer_1|knows_tracking_2|knows_pathfinding_3|knows_spotting_1|knows_wound_treatment_2|knows_trade_3|knows_looting_2|knows_ironflesh_1|knows_power_strike_1|knows_power_throw_1|knows_power_draw_1|knows_weapon_master_3|knows_shield_2|knows_athletics_2|knows_riding_2|knows_horse_archery_3,
0x00000005750c2145390892ecb3cc38a900000000001d5ad90000000000000000],
["npc9","Bridget","Bridget",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_blue_tunic,itm_ankle_boots,itm_spear,itm_nordic_shield,itm_sumpter_horse],
str_10|agi_9|int_13|cha_11|level(6),wp(80),knows_inventory_management_2|knows_trainer_1|knows_tactics_2|knows_pathfinding_1|knows_spotting_3|knows_first_aid_2|knows_looting_3|knows_ironflesh_1|knows_power_strike_1|knows_power_throw_1|knows_power_draw_1|knows_weapon_master_3|knows_shield_2|knows_athletics_2|knows_riding_2|knows_horse_archery_3,
0x00000002060810045cec69d2add54b1e000000000005196d0000000000000000],
["npc10","Sven","Sven",tf_hero|tf_unmoveable_in_party_window, 0,reserved, fac_commoners,[itm_green_tunic,itm_hide_boots,itm_spear,itm_saddle_horse,itm_nordic_shield],
str_10|agi_9|int_13|cha_11|level(6),wp(80),knows_inventory_management_2|knows_trainer_1|knows_tracking_3|knows_spotting_2|knows_wound_treatment_1|knows_surgery_2|knows_engineer_2|knows_ironflesh_1|knows_power_strike_1|knows_power_throw_1|knows_power_draw_1|knows_weapon_master_3|knows_shield_2|knows_athletics_2|knows_riding_2|knows_horse_archery_3,
0x000000008b08030a460e8937a610069c00000000001f78b20000000000000000],
["npc11","Louise","Louise",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_linen_tunic,itm_woolen_hose,itm_spear,itm_saddle_horse,itm_nordic_shield],
str_10|agi_9|int_13|cha_11|level(6),wp(80),knows_inventory_management_2|knows_trainer_1|knows_tracking_2|knows_tactics_4|knows_pathfinding_2|knows_engineer_2|knows_trade_1|knows_ironflesh_1|knows_power_strike_1|knows_power_throw_1|knows_power_draw_1|knows_weapon_master_3|knows_shield_2|knows_athletics_2|knows_riding_2|knows_horse_archery_3,
0x000000091808000356094b389161a48000000000001e52860000000000000000],
["npc12","Malik","Malik",tf_hero|tf_unmoveable_in_party_window, 0,reserved, fac_commoners,[itm_linen_tunic,itm_hide_boots,itm_axe,itm_short_bow,itm_arrows],
str_10|agi_9|int_13|cha_11|level(6),wp(80),knows_inventory_management_2|knows_trainer_1|knows_wound_treatment_3|knows_surgery_2|knows_first_aid_1|knows_engineer_3|knows_trade_2|knows_ironflesh_1|knows_power_strike_1|knows_power_throw_1|knows_power_draw_1|knows_weapon_master_3|knows_shield_2|knows_athletics_2|knows_riding_2|knows_horse_archery_3,
0x00000009f40472802921b1c79da9a51400000000001d8af30000000000000000],
["npc13","Sophia","Sophia",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_short_tunic,itm_woolen_hose,itm_fighting_axe,itm_wooden_shield,itm_short_bow,itm_arrows],
str_12|agi_10|int_13|cha_11|level(6),wp(80),knows_inventory_management_2|knows_trainer_1|knows_tactics_2|knows_surgery_3|knows_first_aid_3|knows_looting_1|knows_ironflesh_1|knows_power_strike_1|knows_power_throw_1|knows_power_draw_1|knows_weapon_master_3|knows_shield_2|knows_athletics_2|knows_riding_2|knows_horse_archery_3,
0x00000006cd100003420fbf165cd4fd2c00000000001c12680000000000000000],
# level 10 specialists
["npc14","Andy","Andy",tf_hero|tf_unmoveable_in_party_window, 0,reserved, fac_commoners,[itm_tunic_with_green_cape,itm_hunter_boots,itm_crossbow,itm_bolts],
str_9|agi_10|int_14|cha_13|level(10),wp(60),knows_inventory_management_2|knows_trainer_3|knows_tactics_4|knows_engineer_4|knows_trade_4|knows_ironflesh_2|knows_power_strike_1|knows_power_throw_1|knows_power_draw_1|knows_weapon_master_2|knows_athletics_3|knows_riding_2|knows_horse_archery_2,
0x00000009c90405c4695c8dba9440c8e900000000001ca6e20000000000000000],
["npc15","Blandine","Blandine",tf_female|tf_hero|tf_unmoveable_in_party_window, 0, reserved, fac_commoners,[itm_blue_gambeson,itm_woolen_hose,itm_mace_2,itm_tab_shield_heater_a],
str_9|agi_9|int_14|cha_13|level(10),wp(60),knows_inventory_management_2|knows_trainer_3|knows_surgery_4|knows_first_aid_4|knows_engineer_4|knows_ironflesh_2|knows_power_strike_1|knows_power_throw_1|knows_power_draw_1|knows_weapon_master_2|knows_athletics_3|knows_riding_2|knows_horse_archery_2,
0x00000001400000010d1a2a26e391cad500000000001e59610000000000000000],
["npc16","Gorek","Gorek",tf_hero|tf_unmoveable_in_party_window, 0,reserved, fac_commoners,[itm_red_gambeson,itm_hide_boots,itm_dagger,itm_long_bow,itm_arrows],
str_10|agi_9|int_14|cha_13|level(10),wp(60),knows_inventory_management_2|knows_trainer_3|knows_tracking_4|knows_pathfinding_4|knows_spotting_4|knows_ironflesh_2|knows_power_strike_1|knows_power_throw_1|knows_power_draw_1|knows_weapon_master_2|knows_athletics_3|knows_riding_2|knows_horse_archery_2,
0x00000000b008100b460e8937a610069c00000000001f78b20000000000000000],
#--- alternative companions - end ---
#NPC system changes end
#governers olgrel rasevas Horse Bodywear Footwear_in Footwear_out Armor Weapon Shield Headwaer