I've started working on this a good while ago and decided it would be nice to have at least a released version that could be of use for some mods.
- What does it add/do?
Current version is mainly a template for modders to add parties on the map where players can recruit troops/mercenaries. Current template for native adds 4 mercenary camps:
Screenshots:
Optional scenes: Clicky
Code:
Only add the parts between # Merc Camp Begin/End, the rest is suggestion of places/references where to put the code
You are free to use and modify the code posted, credits are always nice but not mandatory.
I used Sword of Damocles for the old M&B as inspiration, I really liked going to the mercenary camps in that mod there is also a submod for Floris with mercenary camps but I haven't tried it.
I'm not sure if it's worth it to expand the Native template provided, I had plans to have pretty much all the Quick Battle Characters have their own camp/outpost but Native resources are limited and I prefer to let it to modders to make things the way they like it.
Speaking of which, Totenkopf900/Crossbow Pig made some additions that you might want to check out: Post
- What does it add/do?
Current version is mainly a template for modders to add parties on the map where players can recruit troops/mercenaries. Current template for native adds 4 mercenary camps:
- Geroian Camp - Soldiers from Geroia set up a camp as their base of operations and to oversee their trade caravans in Calradia (kit doesn't actually add Geroian caravans)
- Balion Keep - A Keep built by the King of Balion for his planned invasion of Calradia, however things went sideways and it was abandoned until some mercenaries from Balion decided to reclaim it.
- Jumne Bay - Some Warlord from Jumne installed himself in this cozy bay and abandoned himself to a wide range of activities, trading, raiding, pillaging and mercenary work. Whatever he feels like.
- Ruins of Zendar - A notable Zendarian (not Hareck) makes his return in the hopes of rebuilding the city, in the meantime he leads the Manhunter bands of Calradia and gives boring history lessons.
Screenshots:
Optional scenes: Clicky
Code:
Only add the parts between # Merc Camp Begin/End, the rest is suggestion of places/references where to put the code
Code:
vaegir_merc_parties_begin = "p_town_8_mercs"
vaegir_merc_parties_end = "p_zendar"
# Merc Camp Begin
mercenary_camp_begin = "p_merc_camp_geroia"
mercenary_camp_end = "p_merc_camp_end"
# Merc Camp End
This part can be placed nearly anywhere as long as it's before this line: [anyone,"start", [], "Surrender or die. Make your choice", "battle_reason_stated",[]],
Code:
# Merc Camp Begin
# Balion
[anyone ,"start", [(eq,"$g_talk_troop","trp_konrad"),], "Good day, {sir/madam}. Here to take a look at Balion's finest?", "mercenary_recruit",[]],
# Geroia
[anyone ,"start", [(eq,"$g_talk_troop","trp_vernid"),], "Courage and discipline makes Geroia's strenght, perhaps you would like a demonstration?", "mercenary_recruit",[]],
# Jumne
[anyone ,"start", [(eq,"$g_talk_troop","trp_sverre"),], "Speak Southerner, what brings you to our camp?", "mercenary_recruit",[]],
# Zendar
[anyone ,"start", [(eq,"$g_talk_troop","trp_stavros"),], "What brings you to this cold and desolate place?", "mercenary_recruit",[]],
# Generic
[anyone|plyr,"mercenary_recruit", [], "I wish to recruit some of your men.", "mercenary_buy_troops",[]],
[anyone,"mercenary_buy_troops", [], "I'll gather the men available, they'll do anything you say as long as you pay them for it.", "mercenary_buy_troops_2",
[
(set_mercenary_source_party,"$g_talk_troop_party"),
(change_screen_buy_mercenaries)
]],
# Backstory
# Balion
[anyone|plyr,"mercenary_recruit", [(eq,"$g_talk_troop","trp_konrad"),], "Tell me about the land of Balion and how you arrived in Calradia.", "balion_backstory",[]],
[anyone,"balion_backstory", [], "The lands of Balion lay beyond the Calradian sea, a great island with vast grasslands separated by mountain ranges, lush forests pepper the land with fair game for our hunters...", "balion_backstory_2",[]],
[anyone,"balion_backstory_2", [], "... The Kings of Balion united the tribes under a single banner after fending off several invasions of the Calradian Empire and the Northmen of Jumne. After decades of peace and prosperity they looked for new lands to conquer and Calradia seemed a good place to start.", "balion_backstory_3",[]],
[anyone,"balion_backstory_3", [], "This castle here was built as a staging area for the main invasion force but soon after it was built, the King received news of rebelling Earls trying to seize power in his absence. Prompting him to return home and fight a civil war that is still unresolved to this day.", "balion_backstory_4",[]],
[anyone,"balion_backstory_4", [], "Myself? I left Balion with a company of men to serve as a mercenary here in Calradia, I enjoyed my time for the most part but I earned myself some nasty wounds that hampered my ability to fight. I had to look for other ways to make money so I claimed this abandoned fortress and through my contacts in Balion I keep a steady flow of Knights and mercenaries that wish to have no part in the civil war but still wish to earn their fame in battle.", "mercenary_recruit",[]],
# Geroia
[anyone|plyr,"mercenary_recruit", [(eq,"$g_talk_troop","trp_vernid"),], "What brings you to Calradia?", "geroia_backstory",[]],
[anyone,"geroia_backstory", [], "Trade. The Counts of Geroia try to maintain trade posts everywhere possible and Calradia is no exception, even though our first expeditions were a disaster.", "geroia_backstory_2",[]],
[anyone,"geroia_backstory_2", [], "Calradia has a serious banditry problem and even though we always escort our caravans with a handful of guards they still managed to overpower them and seize our trade goods.", "geroia_backstory_3",[]],
[anyone,"geroia_backstory_3", [], "Our own reputation at stake, the Counts commissioned me to lead a Geroian company to guard our caravans and wage war against bandits. We managed to dissolve the larger groups but many still remain, in the process we managed to earn ourselves a name here in Calradia, Kings seek our services and bandits fear us.", "geroia_backstory_4",[]],
[anyone,"geroia_backstory_4", [], "Since most bandits now wouldn't dare attacking our caravans, most of our forces are sought after for other purposes. Be it military trainers, advisors or mercenaries.", "mercenary_recruit",[]],
# Geroia
[anyone|plyr,"mercenary_recruit", [(eq,"$g_talk_troop","trp_sverre"),], "What can you tell me about Jumne and its warriors?", "jumne_backstory",[]],
[anyone,"jumne_backstory", [], "Hah, here for a tale Southerner? Very well I will oblige. The icy lands of Jumne lay very far to the north-west of Calradia, your Vaegirs complain of their cold winters but theirs is nothing compared to the one in Jumne.", "jumne_backstory_2",[]],
[anyone,"jumne_backstory_2", [], "There is no place our explorers haven't reached and no place our warriors haven't fought. Calradia, Balion, Geroia and many other lands suffered the wrath of the Northmen and our name brought fear on all of them.", "jumne_backstory_3",[]],
[anyone,"jumne_backstory_3", [], "The Nords may be our descendants from the times we invaded Calradia but they bear little resemblance to the peoples of Jumne, they have forsaken most of their heritage and gods and adopted many customs of the Calradians. Pathetic.", "jumne_backstory_4",[]],
[anyone,"jumne_backstory_4", [], "Now the tribes are scattered and there is no great King to unite them towards a common goal so many turn to trading, raiding or mercenary work. I do all three depending on my mood, today you caught me in a good mood so better not waste it.", "mercenary_recruit",[]],
# Geroia
[anyone|plyr,"mercenary_recruit", [(eq,"$g_talk_troop","trp_stavros"),], "What happened here?", "zendar_backstory",[]],
[anyone,"zendar_backstory", [], "Are you so young that you have never heard of the fall of Zendar? Well then allow me to tell you the tale, not one with a happy ending as you can see...", "zendar_backstory_2",[]],
[anyone,"zendar_backstory_2", [], "A few decades ago stood here the city-state of Zendar. A merchant hub where all the peoples of Calradia did trade and it was neutral ground to all, many treaties were signed here and all respected Zendar's neutrality.", "zendar_backstory_3",[]],
[anyone,"zendar_backstory_3", [], "The city had no enemies except some nuisible river pirates that attacked the merchant caravans that left the city, since trade was the livelihood of the city this treat had to be contained. I used to lead the guard of Zendar so Constable Hareck, which was the leader of the city at the time, ordered me to lure the main force of river pirates into an ambush to finish them once and for all.", "zendar_backstory_4",[]],
[anyone,"zendar_backstory_4", [], "We infiltrated some men in their ranks and left a tip that a lightly guarded caravan of goods would leave the city in the early morning with exquisite goods. The trap was set, they sent in their main force and instead of finding caravans loaded with goods, they were loaded with guards. The battle was fierce, we lost many men but the pirates were ultimately defeated and their leader dead.", "zendar_backstory_5",[]],
[anyone,"zendar_backstory_5", [], "One deception led to another however, somehow the Sea Raiders knew we set a trap to the river pirates and allowed us to proceed with it whilst they attacked a Zendar depleted of its defenders. They killed Hareck, slaughtered the populace and burned everything they couldn't carry. We saw the smoke on the horizon but still arrived too late, Zendar was ablaze and would never recover.", "zendar_backstory_6",[]],
[anyone,"zendar_backstory_6", [], "The survivors scattered around Calradia and some such as myself vowed that no bandit in Calradia shall know rest whilst the men of Zendar still draw breath. They banded together to form groups of manhunters that would seek to destroy bandits roaming Calradia but what started as a noble goal soon turned into the very thing they sought to destroy, bands of slavers that cared only for gold.", "zendar_backstory_7",[]],
[anyone,"zendar_backstory_7", [], "I grew old and tired of that life and now I seek to rebuild, I know I won't see Zendar stand again in my lifetime but perhaps through my efforts I will set its reconstruction in motion. I'm gathering here refugees and the old guard of Zendar so they may make use of their services for a nobler goal.", "mercenary_recruit",[]],
[anyone,"mercenary_buy_troops_2", [], "Anything else?", "mercenary_recruit",[]],
[anyone|plyr ,"mercenary_recruit", [], "I'll be on my way.", "close_window", []],
# Merc Camp End
Code:
(call_script, "script_update_tavern_minstrels"),
(call_script, "script_update_booksellers"),
# Merc Camp Begin
(try_for_range, ":camp_no", mercenary_camp_begin, mercenary_camp_end),
(call_script, "script_refresh_mercenary_camp_troops",":camp_no"),
(try_end),
# Merc Camp End
Code:
...
(else_try),
(eq, "$g_encountered_party", "p_camp_bandits"),
(jump_to_menu, "mnu_camp"),
# Merc Camp Begin
(else_try),
(is_between, "$g_encountered_party", mercenary_camp_begin, mercenary_camp_end),
(jump_to_menu, "mnu_mercenary_camp"),
# Merc Camp End
(else_try),
(jump_to_menu, "mnu_simple_encounter"),
...
Code:
# Merc Camp Begin
# script_refresh_mercenary_camp_troops
# Input: arg1 = camp_no
# Output: none
("refresh_mercenary_camp_troops",
[
(store_script_param_1, ":camp_no"),
(assign, ":ideal_size", 50), # Past this value the troop pool of the camp will be reset
(try_begin),
(eq, ":camp_no", "p_merc_camp_geroia"),
(assign, ":party_template", "pt_merc_camp_geroia_troops"),
(else_try),
(eq, ":camp_no", "p_merc_camp_balion"),
(assign, ":party_template", "pt_merc_camp_balion_troops"),
(else_try),
(eq, ":camp_no", "p_merc_camp_jumne"),
(assign, ":party_template", "pt_merc_camp_jumne_troops"),
(else_try),
(eq, ":camp_no", "p_merc_camp_zendar"),
(assign, ":party_template", "pt_merc_camp_zendar_troops"),
(try_end),
(party_get_num_companions, ":party_size", ":camp_no"),
(try_begin),
(gt, ":party_size", ":ideal_size"), # We're past the ideal number of troops in the camp
(party_clear,":camp_no"), # Reset the troop pool
(party_add_template, ":camp_no", ":party_template"),
(else_try),
(party_add_template, ":camp_no", ":party_template"),
(try_end),
]),
# Merc Camp End
Place it at the bottom of the file before the closing "]" in order to avoid the added parties to be caught in an existing party loop.
Code:
# Merc Camp Begin
("merc_camp_geroia", "Geroian Camp", icon_camp|pf_hide_defenders|pf_is_static|pf_always_visible|pf_label_medium, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(-45.27, 49.45),[], 100),
("merc_camp_balion", "Balion Keep", icon_castle_a|pf_hide_defenders|pf_is_static|pf_always_visible|pf_label_medium, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(-132.4, -53.3),[], 100),
("merc_camp_jumne", "Jumne Bay", icon_ship_on_land|pf_hide_defenders|pf_is_static|pf_always_visible|pf_label_medium, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(-41.16, 117),[], 100),
("merc_camp_zendar", "Ruins of Zendar", icon_village_burnt_a|pf_hide_defenders|pf_is_static|pf_always_visible|pf_label_medium, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(18,60),[], 100),
("merc_camp_end" ,"{!}last_spawn_point", pf_disabled|pf_is_static, no_menu, pt_none, fac_commoners,0,ai_bhvr_hold,0,(0., 0),[(trp_looter,15,0)]),
# Merc Camp End
If you don't want to make use of scenes you can use the default encounter one and instead of using change_screen_mission use change_screen_map_conversation set up to the correct troop, Diplomacy has a good example of this with the "Meet the Village Elder" menu.
Code:
# Merc Camp Begin
(
"mercenary_camp",0,
"You approach the mercenary camp...",
"none",
[],
[
("enter_geroian_camp",[(eq, "$g_encountered_party", "p_merc_camp_geroia"),],"Visit the Geroian Camp.",[
(modify_visitors_at_site,"scn_geroian_camp"),
(reset_visitors),
(assign, "$g_mt_mode", tcm_default),
(set_jump_entry, 1),
(set_visitor, 2, "trp_vernid"),
(set_visitor, 5, "trp_geroia_sergeant"),
(set_visitor, 6, "trp_geroia_swordsman"),
(set_visitor, 7, "trp_geroia_swordsman"),
(set_visitor, 8, "trp_geroia_pavisier"),
(set_visitor, 9, "trp_geroia_pavisier"),
(set_jump_mission,"mt_visit_town_castle"),
(jump_to_scene,"scn_geroian_camp"),
(change_screen_mission),
]),
("enter_balion_camp",[(eq, "$g_encountered_party", "p_merc_camp_balion"),],"Enter the castle of the Knights of Balion.",[
(modify_visitors_at_site,"scn_balion_camp"),
(reset_visitors),
(assign, "$g_mt_mode", tcm_default),
(set_jump_entry, 1),
(set_visitor, 2, "trp_konrad"),
(set_visitor, 5, "trp_balion_knight"),
(set_visitor, 6, "trp_balion_infantry"),
(set_visitor, 7, "trp_balion_infantry"),
(set_visitor, 8, "trp_balion_longbowman"),
(set_visitor, 9, "trp_balion_longbowman"),
(set_jump_mission,"mt_visit_town_castle"),
(jump_to_scene,"scn_balion_camp"),
(change_screen_mission),
]),
("enter_jumne_camp",[(eq, "$g_encountered_party", "p_merc_camp_jumne"),],"Enter the Northmen camp.",[
(modify_visitors_at_site,"scn_jumne_camp"),
(reset_visitors),
(assign, "$g_mt_mode", tcm_default),
(set_jump_entry, 1),
(set_visitor, 2, "trp_sverre"),
(set_visitor, 5, "trp_jumne_huscarl"),
(set_visitor, 6, "trp_jumne_raider"),
(set_visitor, 7, "trp_jumne_raider"),
(set_visitor, 8, "trp_jumne_raider"),
(set_visitor, 9, "trp_jumne_skirmisher"),
(set_jump_mission,"mt_visit_town_castle"),
(jump_to_scene,"scn_jumne_camp"),
(change_screen_mission),
]),
("enter_zendar_camp",[(eq, "$g_encountered_party", "p_merc_camp_zendar"),],"Enter the ruins of Zendar.",[
(modify_visitors_at_site,"scn_zendar_camp"),
(reset_visitors),
(assign, "$g_mt_mode", tcm_default),
(set_jump_entry, 1),
(set_visitor, 2, "trp_stavros"),
(set_visitor, 5, "trp_slaver_chief"),
(set_visitor, 6, "trp_manhunter"),
(set_visitor, 7, "trp_manhunter"),
(set_visitor, 8, "trp_manhunter"),
(set_visitor, 9, "trp_manhunter"),
(set_jump_mission,"mt_visit_town_castle"),
(jump_to_scene,"scn_zendar_camp"),
(change_screen_mission),
]),
("leave",[],"Leave.",[(leave_encounter),(change_screen_return)]),
]
),
# Merc Camp End
You can hijack an existing trigger instead of adding a new one
Code:
# Merc Camp Begin
# Replenish camps every 3 days
(24 * 3,
[
(try_for_range, ":camp_no", mercenary_camp_begin, mercenary_camp_end),
(call_script, "script_refresh_mercenary_camp_troops", ":camp_no"),
(try_end),
]),
# Merc Camp End
Code:
# Merc Camp Begin
("merc_camp_geroia_troops", "{!}Geroian Mercs", 0, 0, fac_commoners, 0, [(trp_geroia_swordsman,5,10),(trp_geroia_pikeman,4,8),(trp_geroia_pavisier,4,8),(trp_geroia_sergeant,1,2)]),
("merc_camp_balion_troops", "{!}Balion Mercs", 0, 0, fac_commoners, 0, [(trp_balion_infantry,5,12),(trp_balion_longbowman,4,10),(trp_balion_knight,1,6)]),
("merc_camp_jumne_troops", "{!}Jumne Mercs", 0, 0, fac_commoners, 0, [(trp_jumne_raider,5,12),(trp_jumne_skirmisher,4,10),(trp_jumne_huscarl,1,6)]),
("merc_camp_zendar_troops", "{!}Zendar Mercs", 0, 0, fac_commoners, 0, [(trp_manhunter,5,12),(trp_slave_hunter,4,10),(trp_slave_crusher,1,6)]),
# Merc Camp End
Code:
# Merc Camp Begin
("geroian_camp",sf_generate,"none", "none", (0,0),(100,100),-100,"0x000000003000050000064592000063c100001bee00006f14",
[],[],"outer_terrain_plain"),
("balion_camp",sf_generate,"none", "none", (0,0),(100,100),-100,"0x000000003000050000064592000063c100001bee00006f14",
[],[],"outer_terrain_beach"),
("jumne_camp",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000000b00562e200040900000063f40000679f00006cda",
[],[],"sea_outer_terrain_1"),
("zendar_camp",sf_generate,"none", "none", (0,0),(100,100),-100,"0x000000003000050000064592000063c100001bee00006f14",
[],[],"outer_terrain_snow"),
# Merc Camp End
Code:
# Merc Camp Begin
# Balion
["konrad","Konrad","Konrad", tf_hero,scn_balion_camp|entry(2), reserved,fac_commoners,
[itm_sword_two_handed_a, itm_mace_4, itm_tab_shield_kite_d,
itm_bascinet_3, itm_scale_armor, itm_mail_mittens, itm_mail_boots],
str_18|agi_15|int_12|cha_12|level(24),wpex(130,150,130,30,50,90),knows_riding_2|knows_athletics_5|knows_shield_4|knows_weapon_master_5|knows_power_throw_3|knows_power_strike_6|knows_ironflesh_6,0x000000081700205434db6df4636db8e400000000001db6e30000000000000000, swadian_face_old_2],
["balion_longbowman","Balion Longbowman","Balion Longbowmen",tf_guarantee_ranged|tf_guarantee_boots|tf_guarantee_armor,0,0,fac_commoners,
[itm_arena_helmet_red,itm_arena_helmet_green,itm_norman_helmet,itm_arming_cap,itm_hood_a,itm_hood_b,itm_hood_c,itm_balion_leather_gloves,itm_aketon_green,itm_padded_cloth,itm_red_gambeson,itm_ankle_boots,itm_woolen_hose,itm_long_bow,itm_balion_arrows,itm_balion_sword,itm_mace_2,itm_hammer,itm_hand_axe],
str_13 | agi_8 | int_4 | cha_4|level(20),wp_one_handed (115) | wp_two_handed (115) | wp_polearm (115) | wp_archery (130) | wp_crossbow (115) | wp_throwing (115),knows_power_strike_3|knows_ironflesh_4|knows_power_draw_5|knows_athletics_7,nord_face_middle_1, nord_face_older_2],
["balion_infantry","Balion Infantry","Balion Infantry",tf_guarantee_shield|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_helmet,0,0,fac_commoners,
[itm_mail_coif,itm_norman_helmet,itm_helmet_with_neckguard,itm_arena_helmet_red,itm_arena_helmet_green,itm_arena_helmet_red,itm_arena_helmet_yellow,itm_mail_hauberk,itm_mail_shirt,itm_mail_mittens,itm_mail_chausses,itm_norman_shield_1,itm_norman_shield_2,itm_norman_shield_3,itm_norman_shield_4,itm_norman_shield_5,itm_norman_shield_6,itm_norman_shield_7,itm_norman_shield_8,itm_balion_sword,itm_balion_sword_b,itm_one_handed_battle_axe_a,itm_war_spear],
def_attrib|level(24),wp_melee(125),knows_common|knows_ironflesh_2|knows_power_strike_3|knows_shield_3|knows_athletics_4,swadian_face_middle_1, swadian_face_old_2],
["balion_knight","Balion Knight","Balion Knights",tf_mounted|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_helmet|tf_guarantee_horse|tf_guarantee_shield,0,0,fac_kingdom_1,
[itm_mail_coif,itm_norman_helmet,itm_guard_helmet,itm_arena_helmet_red,itm_arena_helmet_green,itm_arena_helmet_red,itm_arena_helmet_yellow,itm_mail_hauberk,itm_haubergeon,itm_mail_mittens,itm_mail_chausses,itm_lance,itm_balion_longsword,itm_one_handed_battle_axe_a,itm_norman_shield_8,itm_norman_shield_7,itm_norman_shield_6,itm_norman_shield_5,itm_norman_shield_4,itm_norman_shield_3,itm_norman_shield_2,itm_norman_shield_1,itm_hunter,itm_balion_horse],
def_attrib|level(23),wp_melee(115),knows_common|knows_riding_4|knows_ironflesh_2|knows_shield_2|knows_power_strike_3,swadian_face_young_1, swadian_face_old_2],
# Geroia
["vernid","Vernid","Vernid", tf_hero, scn_geroian_camp|entry(2),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],
["geroia_swordsman","Geroian Swordsman","Geroian Swordsmen",tf_guarantee_shield|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_helmet,0,0,fac_commoners,
[itm_byzantion_helmet_a,itm_geroia_bascinet,itm_geroia_bascinet_b,itm_mail_coif,itm_byzantion_helmet_a,itm_light_mail_and_plate,itm_mail_boots,itm_mail_chausses,itm_mail_mittens,itm_geroia_broadsword,itm_geroia_broadsword,itm_geroia_arming_sword,itm_tab_shield_pavise_d],
def_attrib|level(20),wp_melee(105),knows_common|knows_ironflesh_3|knows_power_strike_2|knows_shield_3|knows_athletics_3,swadian_face_middle_1, swadian_face_old_2],
["geroia_pikeman","Geroian Pikeman","Geroian Pikemen",tf_guarantee_shield|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_helmet,0,0,fac_commoners,
[itm_byzantion_helmet_a,itm_geroia_bascinet,itm_geroia_bascinet_b,itm_mail_coif,itm_byzantion_helmet_a,itm_mail_hauberk,itm_mail_and_plate,itm_mail_mittens,itm_mail_chausses,itm_mail_boots,itm_pike,itm_ashwood_pike,itm_awlpike_long],
def_attrib|level(20),wp_melee(105),knows_common|knows_ironflesh_3|knows_power_strike_2|knows_shield_3|knows_athletics_3,swadian_face_middle_1, swadian_face_old_2],
["geroia_sergeant","Geroian Sergeant","Geroian Sergeant",tf_guarantee_shield|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_helmet,0,0,fac_commoners,
[itm_bascinet_2,itm_bascinet_3,itm_full_helm,itm_brigandine_red,itm_brigandine_red,itm_geroia_surcoat_over_mail,itm_mail_mittens,itm_gauntlets,itm_iron_greaves,itm_sword_two_handed_a,itm_bastard_sword_b,itm_bec_de_corbin_a],
def_attrib|level(25),wp_melee(135),knows_common|knows_ironflesh_4|knows_power_strike_4|knows_athletics_3,swadian_face_middle_1, swadian_face_old_2],
["geroia_pavisier","Geroian Pavisier","Geroian Pavisiers",tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_helmet|tf_guarantee_ranged|tf_guarantee_shield,0,0,fac_kingdom_5,
[itm_byzantion_helmet_a,itm_mail_coif,itm_geroia_bascinet,itm_geroia_bascinet_b,itm_padded_leather,itm_leather_jerkin,itm_leather_gloves,itm_leather_boots,itm_ankle_boots,itm_geroia_arming_sword,itm_bolts,itm_hammer,itm_hatchet,itm_geroia_crossbow,itm_geroia_heavy_crossbow,itm_tab_shield_pavise_c],
def_attrib|level(20),wp_one_handed (100) | wp_two_handed (100) | wp_polearm (100) | wp_archery (100) | wp_crossbow (130) | wp_throwing (100),knows_common|knows_ironflesh_2|knows_shield_3|knows_power_strike_3|knows_athletics_4,rhodok_face_middle_1, rhodok_face_older_2],
# Jumne
["sverre","Sverre","Sverre", tf_hero,scn_jumne_camp|entry(2),reserved, fac_commoners,
[itm_long_axe, itm_sword_viking_1, itm_light_throwing_axes, itm_tab_shield_round_d,
itm_nordic_fighter_helmet, itm_byrnie, itm_leather_gloves, itm_leather_boots],
str_15|agi_15|int_12|cha_12|level(21),wpex(110,130,110,80,15,110),knows_riding_1|knows_athletics_5|knows_shield_4|knows_weapon_master_5|knows_power_draw_2|knows_power_throw_4|knows_power_strike_5|knows_ironflesh_5,0x000000048a00024723134e24cb51c91b00000000001dc6aa0000000000000000, swadian_face_old_2],
["jumne_huscarl","Jumne Huskarl","Jumne Huskarls",tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_shield|tf_guarantee_helmet,0,0,fac_commoners,
[itm_nordic_huscarl_helmet,itm_nordic_fighter_helmet,itm_byrnie,itm_scale_armor,itm_mail_boots,itm_leather_boots,itm_mail_mittens,itm_long_axe_c,itm_tab_shield_round_d,itm_jumne_noble_sword,itm_one_handed_battle_axe_a],
def_attrib|level(28),wp(175),knows_ironflesh_7|knows_power_strike_8|knows_riding_2|knows_athletics_6|knows_shield_6,nord_face_middle_1, nord_face_older_2],
["jumne_raider","Jumne Raider","Jumne Raiders",tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_shield|tf_guarantee_helmet,0,0,fac_kingdom_4,
[itm_nordic_archer_helmet,itm_nordic_veteran_archer_helmet,itm_nordic_footman_helmet,itm_nordic_fighter_helmet,itm_leather_jerkin,itm_leather_armor,itm_leather_boots,itm_wooden_shield,itm_nordic_shield,itm_jumne_shield_a,itm_jumne_shield_b,itm_one_handed_war_axe_a,itm_one_handed_war_axe_b,itm_jumne_longsword_a,itm_jumne_longsword_b],
def_attrib|level(15),wp(110),knows_ironflesh_3|knows_power_strike_4|knows_athletics_3|knows_shield_2,nord_face_young_1, nord_face_old_2],
["jumne_skirmisher","Jumne Skirmisher","Jumne Skirmishers",tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_shield|tf_guarantee_helmet|tf_guarantee_ranged,0,0,fac_kingdom_4,
[itm_nordic_archer_helmet,itm_nordic_veteran_archer_helmet,itm_rawhide_coat,itm_pelt_coat,itm_ankle_boots,itm_leather_covered_round_shield,itm_javelin,itm_javelin,itm_throwing_axes,itm_hand_axe,itm_hatchet,itm_sword_viking_2_small],
def_attrib|level(12),wp_one_handed (100) | wp_two_handed (100) | wp_polearm (100) | wp_archery (100) | wp_crossbow (100) | wp_throwing (130),knows_ironflesh_3|knows_power_strike_3|knows_power_throw_4|knows_athletics_3|knows_shield_2,nord_face_young_1, nord_face_old_2],
# Zendar
["stavros","Stavros","Stavros", tf_hero,scn_zendar_camp|entry(2),reserved,fac_commoners,
[itm_heavy_crossbow, itm_bolts, itm_sword_medieval_b_small, itm_tab_shield_pavise_c,
itm_nasal_helmet, itm_padded_leather, itm_leather_gloves, itm_leather_boots],
str_12|agi_15|int_15|cha_12|level(21),wpex(100,70,70,30,140,80),knows_horse_archery_2|knows_riding_2|knows_athletics_5|knows_shield_3|knows_weapon_master_5|knows_power_throw_2|knows_power_strike_4|knows_ironflesh_4,0x0000000e1400659226e34dcaa46e36db00000000001e391b0000000000000000, swadian_face_old_2],
# Merc Camp End
The items added are unused Native resources, just to add some diversity to the added troops if one decides to use them of course.
Code:
# Merc Camp Begin
# Balion Items
["hood_a", "Hood", [("hood_a",0)],itp_type_head_armor|itp_civilian,0,9, weight(1)|abundance(100)|head_armor(10)|body_armor(0)|leg_armor(0)|difficulty(0),imodbits_cloth],
["balion_leather_gloves","Leather Gloves", [("lthr_glove_L",0)], itp_type_hand_armor,0, 90, weight(0.25)|abundance(120)|body_armor(2)|difficulty(0),imodbits_cloth],
["balion_arrows","Arrows", [("arrow",0),("flying_missile",ixmesh_flying_ammo),("arena_quiver", ixmesh_carry)], itp_type_arrows|itp_default_ammo, itcf_carry_quiver_back, 172,weight(3)|abundance(160)|weapon_length(95)|thrust_damage(3,pierce)|max_ammo(30),imodbits_missile],
["balion_sword", "Balion Sword",[("sword_norman",0),("sword_norman_scabbard", ixmesh_carry),("sword_norman_rusty",imodbit_rusty),("sword_norman_rusty_scabbard", ixmesh_carry|imodbit_rusty)],itp_type_one_handed_wpn|itp_primary, itc_longsword|itcf_carry_sword_left_hip|itcf_show_holster_when_drawn, 183 , weight(1.25)|difficulty(0)|spd_rtng(103) | weapon_length(91)|swing_damage(27 , cut) | thrust_damage(23 , pierce),imodbits_sword ],
["balion_sword_b", "Balion Sword", [("sword_medieval_d",0),("sword_medieval_d_scabbard", ixmesh_carry)], itp_type_one_handed_wpn|itp_primary, itc_longsword|itcf_carry_sword_left_hip|itcf_show_holster_when_drawn,264 , weight(1.5)|difficulty(0)|spd_rtng(99) | weapon_length(95)|swing_damage(29 , cut) | thrust_damage(22 , pierce),imodbits_sword ],
["balion_longsword", "Balion Longsword", [("sword_medieval_a_long",0),("sword_medieval_a_long_scabbard", ixmesh_carry)], itp_type_one_handed_wpn|itp_primary, itc_longsword|itcf_carry_sword_left_hip|itcf_show_holster_when_drawn, 292 , weight(1.5)|difficulty(0)|spd_rtng(97) | weapon_length(105)|swing_damage(30 , cut) | thrust_damage(27 , pierce),imodbits_sword ],
["balion_horse","Horse", [("horse_c",0),("horse_c",imodbits_horse_good)], itp_type_horse, 0, 810,abundance(60)|hit_points(160)|body_armor(18)|difficulty(3)|horse_speed(43)|horse_maneuver(44)|horse_charge(24)|horse_scale(108),imodbits_horse_basic|imodbit_champion],
# Geroian Items
["geroia_bascinet", "Bascinet", [("bascinet_avt_new1",0)], itp_type_head_armor ,0, 479 , weight(2.25)|abundance(100)|head_armor(45)|body_armor(0)|leg_armor(0)|difficulty(8) ,imodbits_plate ],
["geroia_bascinet_b", "Bascinet", [("bascinet_avt_new2",0)], itp_type_head_armor ,0, 479 , weight(2.25)|abundance(100)|head_armor(45)|body_armor(0)|leg_armor(0)|difficulty(8) ,imodbits_plate ],
["geroia_surcoat_over_mail", "Surcoat over Mail", [("surcoat_over_mail",0)], itp_type_body_armor |itp_covers_legs ,0,1720 , weight(22)|abundance(100)|head_armor(0)|body_armor(43)|leg_armor(14)|difficulty(7) ,imodbits_armor ],
["geroia_broadsword", "Broadsword", [("broadsword",0),("scab_broadsword", ixmesh_carry)], itp_type_one_handed_wpn|itp_primary, itc_scimitar|itcf_carry_sword_left_hip|itcf_show_holster_when_drawn, 122 , weight(2.5)|difficulty(8)|spd_rtng(98) | weapon_length(100)|swing_damage(27 , cut) | thrust_damage(0 , pierce),imodbits_sword ],
["geroia_arming_sword", "Arming Sword", [("b_long_sword",0),("scab_longsw_b", ixmesh_carry)], itp_type_one_handed_wpn|itp_primary, itc_longsword|itcf_carry_sword_left_hip|itcf_show_holster_when_drawn, 156 , weight(1.5)|difficulty(0)|spd_rtng(101) | weapon_length(100)|swing_damage(25 , cut) | thrust_damage(22 , pierce),imodbits_sword ],
["geroia_crossbow", "Crossbow", [("light_crossbow",0)], itp_type_crossbow |itp_primary|itp_two_handed|itp_cant_reload_on_horseback ,itcf_shoot_crossbow|itcf_carry_crossbow_back, 182 , weight(3)|difficulty(8)|spd_rtng(43) | shoot_speed(66) | thrust_damage(49,pierce)|max_ammo(1),imodbits_crossbow ],
["geroia_heavy_crossbow", "Heavy Crossbow", [("heavy_crossbow",0)], itp_type_crossbow |itp_primary|itp_two_handed|itp_cant_reload_on_horseback ,itcf_shoot_crossbow|itcf_carry_crossbow_back, 349 , weight(3.5)|difficulty(9)|spd_rtng(41) | shoot_speed(68) | thrust_damage(58 ,pierce)|max_ammo(1),imodbits_crossbow ],
# Jumne Items
["jumne_noble_sword", "Nordic Noble Sword", [("viking_sword",0),("scab_vikingsw", ixmesh_carry)], itp_type_one_handed_wpn|itp_primary, itc_longsword|itcf_carry_sword_left_hip|itcf_show_holster_when_drawn, 224 , weight(1.5)|difficulty(0)|spd_rtng(99) | weapon_length(98)|swing_damage(30 , cut) | thrust_damage(18 , pierce),imodbits_sword ],
["jumne_longsword_a", "Nordic Sword", [("sword_viking_c_long",0),("sword_viking_c_long_scabbard ", ixmesh_carry)], itp_type_one_handed_wpn|itp_primary, itc_longsword|itcf_carry_sword_left_hip|itcf_show_holster_when_drawn,198 , weight(1.5)|difficulty(0)|spd_rtng(95) | weapon_length(101)|swing_damage(28 , cut) | thrust_damage(23 , pierce),imodbits_sword ] ,
["jumne_longsword_b", "Nordic Sword", [("sword_viking_a_long",0),("sword_viking_a_long_scabbard", ixmesh_carry)], itp_type_one_handed_wpn|itp_primary, itc_longsword|itcf_carry_sword_left_hip|itcf_show_holster_when_drawn,183 , weight(1.5)|difficulty(0)|spd_rtng(97) | weapon_length(101)|swing_damage(29 , cut) | thrust_damage(19 , pierce),imodbits_sword ],
["jumne_shield_a", "Round Shield", [("shield_round_c",0)], itp_type_shield|itp_wooden_parry, itcf_carry_round_shield, 64 , weight(2)|hit_points(400)|body_armor(1)|spd_rtng(100)|shield_width(50),imodbits_shield ],
["jumne_shield_b", "Round Shield", [("shield_wood_b",0)], itp_type_shield|itp_wooden_parry, itcf_carry_round_shield, 64 , weight(2)|hit_points(400)|body_armor(1)|spd_rtng(100)|shield_width(50),imodbits_shield ],
# Merc Camp End
You are free to use and modify the code posted, credits are always nice but not mandatory.
I used Sword of Damocles for the old M&B as inspiration, I really liked going to the mercenary camps in that mod there is also a submod for Floris with mercenary camps but I haven't tried it.
I'm not sure if it's worth it to expand the Native template provided, I had plans to have pretty much all the Quick Battle Characters have their own camp/outpost but Native resources are limited and I prefer to let it to modders to make things the way they like it.
Speaking of which, Totenkopf900/Crossbow Pig made some additions that you might want to check out: Post