neutroceparus
Recruit
I've done some trading with caravans.
On native 1.171/1.174
Initially it was in mod that I do for myself.
Post factum I recognized, that there is caravan trade in Floris Modpack, but works different than mine.
It's not tested in the long run, but seems to be ok.
I've done some scripting tricks, also many things can be done other way.
Changed code is marked orange.
Credit goes to: Lav and other people who made Tweaked MS 1.166 - especially for great operations documentation,
kalarhan - I used tips that he posted to someone in QA Thread
and other community members who done documentation, tutorials, forum answers etc.
Feel free to use it and modify
1. module_troops.py
There must be enough custom caravan masters for every active caravan. Can be calculated from script create_kingdom_party_if_below_limit, but i prefer to add some more.
2. module_constants.py
3. module_party_templates.py
4. module_scripts.py
5. module_game_menus.py
6. module_dialogs.py
Basically what it does is using custom kind of NPCs as leaders of Caravans. They are taken from pool and returned when defeated in battle. Refreshing inventories takes place when the caravan is spawned, or visit city. This trade system doesnt have any connection with loot from caravan or economy system.
On native 1.171/1.174
Initially it was in mod that I do for myself.
Post factum I recognized, that there is caravan trade in Floris Modpack, but works different than mine.
It's not tested in the long run, but seems to be ok.
I've done some scripting tricks, also many things can be done other way.
Changed code is marked orange.
Credit goes to: Lav and other people who made Tweaked MS 1.166 - especially for great operations documentation,
kalarhan - I used tips that he posted to someone in QA Thread
and other community members who done documentation, tutorials, forum answers etc.
Feel free to use it and modify
1. module_troops.py
Rich (BB code):
(...)
knight_skills_3 = knows_riding_5|knows_ironflesh_4|knows_power_strike_5|knows_athletics_3|knows_tactics_4|knows_prisoner_management_2|knows_leadership_6
knight_skills_4 = knows_riding_6|knows_ironflesh_5|knows_power_strike_6|knows_athletics_4|knows_tactics_5|knows_prisoner_management_3|knows_leadership_7
knight_skills_5 = knows_riding_7|knows_ironflesh_6|knows_power_strike_7|knows_athletics_5|knows_tactics_6|knows_prisoner_management_3|knows_leadership_9
#generic caravan merchant things
gen_caravan_master_1 = tf_mounted|tf_guarantee_boots|tf_guarantee_armor|tf_guarantee_horse|tf_hero|tf_inactive|tf_is_merchant
gen_caravan_master_skills = knows_riding_1|knows_trade_2|knows_prisoner_management_1|knows_leadership_1|knows_riding_4|knows_ironflesh_3|knows_inventory_management_10
#These face codes are generated by the in-game face generator.
#Enable edit mode and press ctrl+E in face generator screen to obtain face codes.
reserved = 0
no_scene = 0
(...)
Rich (BB code):
(...)
["coop_companion_equipment_ui_1_f","{!}multiplayer_end","{!}multiplayer_end", tf_female, 0, 0, fac_kingdom_5, [], 0, 0, 0, 0, 0],
["coop_companion_equipment_sets_end","{!}multiplayer_end","{!}multiplayer_end", 0, 0, 0, fac_kingdom_5, [], 0, 0, 0, 0, 0],
#caravan masters begin
["caravan_master_01","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_02","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_03","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_04","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_05","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_06","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_07","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_08","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_09","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_10","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_11","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_12","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_13","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_14","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_15","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_16","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_17","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_18","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_19","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_20","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_31","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_32","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_33","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_34","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_35","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_36","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_37","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_38","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_39","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_40","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_41","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_42","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_43","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_44","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_45","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_46","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_47","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_48","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_49","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_master_50","Caravan Master","Caravan Masters",gen_caravan_master_1,0,0, fac_commoners,[itm_sword_medieval_c,itm_fur_coat,itm_hide_boots,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse,itm_saddle_horse, itm_leather_jacket, itm_leather_cap], def_attrib|level(9), wp(100), gen_caravan_master_skills, mercenary_face_1, mercenary_face_2],
["caravan_masters_end","caravan_masters_end","caravan_masters_end",tf_hero, 0,0, fac_commoners,[],def_attrib|level(2),wp(20),knows_inventory_management_10,0],
]
#Troop upgrade declarations
upgrade(troops,"farmer", "watchman")
upgrade(troops,"townsman","watchman")
upgrade2(troops,"watchman","caravan_guard","mercenary_crossbowman")
(...)
Rich (BB code):
(...)
enctype_catched_during_village_raid = 2
### Troop occupations slot_troop_occupation
##use of unused constant
slto_merchant = 1
slto_inactive = 0 #for companions at the beginning of the game
slto_kingdom_hero = 2
(...)
Rich (BB code):
#custom caravan masters constants
custom_caravan_masters_begin = "trp_caravan_master_01"
custom_caravan_masters_end = "trp_caravan_masters_end"
Rich (BB code):
(...)
("raider_party","Raiders",icon_gray_knight|carries_goods(16)|pf_quest_party,0,fac_commoners,bandit_personality,[]),
("raider_captives","Raider Captives",0,0,fac_commoners,0,[(trp_peasant_woman,6,30,pmf_is_prisoner)]),
#edited to allow custom merchants
("kingdom_caravan_party","Caravan",icon_mule|carries_goods(25)|pf_show_faction,0,fac_commoners,merchant_personality,[(trp_caravan_guard,12,40)]),
("prisoner_train_party","Prisoner Train",icon_gray_knight|carries_goods(5)|pf_show_faction,0,fac_commoners,merchant_personality,[]),
("default_prisoners","Default Prisoners",0,0,fac_commoners,0,[(trp_bandit,5,10,pmf_is_prisoner)]),
(...)
Rich (BB code):
(...)
(faction_slot_eq, ":cur_troop_faction", slot_faction_marshall, ":cur_troop_id"),
(is_between, ":cur_troop_faction", kingdoms_begin, kingdoms_end),
(assign, "$marshall_defeated_in_battle", ":cur_troop_id"),
#Marshall is defeated, refresh ai.
(assign, "$g_recalculate_ais", 1),
(try_end),
(try_end),
#merchants automatically silently escape
(try_begin),
(ge, ":collective_casualties", 0),
(party_get_num_companion_stacks, ":num_stacks", ":collective_casualties"),
(else_try),
(assign, ":num_stacks", 0),
(try_end),
(try_for_range, ":troop_iterator", 0, ":num_stacks"),
(party_stack_get_troop_id, ":cur_troop_id", ":collective_casualties", ":troop_iterator"),
(is_between, ":cur_troop_id", custom_caravan_masters_begin, custom_caravan_masters_end),
(call_script, "script_remove_troop_from_prison", ":cur_troop_id"),
(troop_set_slot, ":cur_troop_id", slot_troop_occupation, slto_inactive),
(try_end),
(try_begin),
(ge, ":collective_casualties", 0),
(party_get_num_prisoner_stacks, ":num_stacks", ":collective_casualties"),
(else_try),
(assign, ":num_stacks", 0),
(try_end),
(...)
Rich (BB code):
(...)
(gt, ":rand", 82),
(call_script, "script_change_center_prosperity", ":center_no", 1),
(val_add, "$newglob_total_prosperity_from_caravan_trade", 1),
(try_end),
(try_end),
#caravan master trade inventory refresh
(try_for_range, ":cur_merch", custom_caravan_masters_begin, custom_caravan_masters_end),
(troop_get_slot, ":is_active", ":cur_merch", slot_troop_occupation),
(eq, ":is_active", slto_merchant),
(party_count_members_of_type, ":merch_in_party", ":party_no", ":cur_merch"),
(eq, ":merch_in_party", 1),
(call_script, "script_cf_refresh_caravan_merchant_inventory", ":cur_merch"),
(try_end),
]),
(...)
Rich (BB code):
(...)
(party_set_slot, ":result", slot_party_ai_state, spai_undefined),
(try_begin),
(neq, ":party_name_str", "str_no_string"),
(party_set_name, ":result", ":party_name_str"),
(try_end),
#add custom caravan master
(try_begin),
(assign, ":check", 0),
(try_for_range, ":merch", custom_caravan_masters_begin, custom_caravan_masters_end),
(eq, ":check", 0),
(troop_get_slot, ":is_active", ":merch", slot_troop_occupation),
(eq, ":is_active", 0),
(party_add_leader, ":result", ":merch", 1),
(troop_set_slot, ":merch", slot_troop_occupation, slto_merchant),#not sure
(call_script, "script_cf_refresh_caravan_merchant_inventory", ":merch"),
(assign, ":check", 1),
(try_end),
#at least can be caravan without master
(try_end),
(try_begin),
## (eq, ":party_type", spt_forager),
## (party_add_template, ":result", ":reinforcements_a"),
## (else_try),
(...)
Rich (BB code):
(...)
(position_rotate_z, pos8, 30),
(position_rotate_x, pos8, -50),
(cur_tableau_add_sun_light, pos8, 175,150,125),
]),
#INVASION MODE END
#refresh caravan merchant inventory
#param 1 = current merchant
#can be done any other configuration, but order of adding is important
(
"cf_refresh_caravan_merchant_inventory",
[
(store_script_param_1, ":cur_merch"),
(set_merchandise_modifier_quality,150),
(reset_item_probabilities,100),
(troop_get_slot, ":is_active", ":cur_merch", slot_troop_occupation),
(eq, ":is_active", slto_merchant),
(store_random_in_range, ":goods_number", 2, 4),
(troop_clear_inventory, ":cur_merch"),
#dont know why it must be done here (city mecrchants dont need it)
(troop_set_inventory_slot, ":cur_merch", 0, "itm_sword_medieval_c"),
(troop_set_inventory_slot, ":cur_merch", 4, "itm_leather_cap"),
(troop_set_inventory_slot, ":cur_merch", 5, "itm_fur_coat"),
(troop_set_inventory_slot, ":cur_merch", 6, "itm_hide_boots"),
(troop_set_inventory_slot, ":cur_merch", 8, "itm_saddle_horse"),
(troop_add_merchandise, ":cur_merch", itp_type_goods, ":goods_number"),
(troop_sort_inventory, ":cur_merch"),
(store_troop_gold, ":cur_gold",":cur_merch"),
(lt,":cur_gold",200),
(store_random_in_range,":new_gold",100,200),
(call_script, "script_troop_add_gold", ":cur_merch", ":new_gold"),
]
),
]
Rich (BB code):
(...)
# Talk to enemy leaders
(assign, ":break", 0),
(party_get_num_companion_stacks, ":num_stacks", "p_total_enemy_casualties"), #p_encountered changed to total_enemy_casualties
(try_for_range, ":stack_no", "$last_defeated_hero", ":num_stacks"), #May 31 bug note -- this now returns some heroes in victorious party as well as in the other party
(eq, ":break", 0),
(party_stack_get_troop_id, ":stack_troop", "p_total_enemy_casualties", ":stack_no"),
(party_stack_get_troop_dna, ":stack_troop_dna", "p_total_enemy_casualties", ":stack_no"),
#merchant always escape mechanism
(try_begin),
(troop_is_hero, ":stack_troop"),
(store_troop_faction, ":defeated_faction", ":stack_troop"),
#steve post 0912 changes begin - removed, this is duplicated elsewhere in game menus
#(call_script, "script_add_log_entry", logent_lord_defeated_by_player, "trp_player", -1, ":stack_troop", ":defeated_faction"),
(try_begin),
(store_relation, ":relation", ":defeated_faction", "fac_player_faction"),
(ge, ":relation", 0),
(str_store_troop_name, s4, ":stack_troop"),
(try_begin),
(eq, "$cheat_mode", 1),
(display_message, "@{!}{s4} skipped in p_total_enemy_casualties capture queue because is friendly"),
(try_end),
(else_try),
(try_begin),
(party_stack_get_troop_id, ":party_leader", "$g_encountered_party", 0),
(is_between, ":party_leader", active_npcs_begin, active_npcs_end),
(troop_slot_eq, ":party_leader", slot_troop_occupation, slto_kingdom_hero),
(store_sub, ":kingdom_hero_id", ":party_leader", active_npcs_begin),
(get_achievement_stat, ":was_he_defeated_player_before", ACHIEVEMENT_BARON_GOT_BACK, ":kingdom_hero_id"),
(eq, ":was_he_defeated_player_before", 1),
(unlock_achievement, ACHIEVEMENT_BARON_GOT_BACK),
(try_end),
(store_add, "$last_defeated_hero", ":stack_no", 1),
(call_script, "script_remove_troop_from_prison", ":stack_troop"),
(troop_set_slot, ":stack_troop", slot_troop_leaded_party, -1),
(call_script, "script_cf_check_hero_can_escape_from_player", ":stack_troop"),
(str_store_troop_name, s1, ":stack_troop"),
(str_store_faction_name, s3, ":defeated_faction"),
(str_store_string, s17, "@{s1} of {s3} managed to escape."),
(display_log_message, "@{!}{s17}"),
(jump_to_menu, "mnu_enemy_slipped_away"),
(assign, ":break", 1),
(else_try),
(store_add, "$last_defeated_hero", ":stack_no", 1),
(call_script, "script_remove_troop_from_prison", ":stack_troop"),
(troop_set_slot, ":stack_troop", slot_troop_leaded_party, -1),
(assign, "$talk_context", tc_hero_defeated),
(call_script, "script_setup_troop_meeting", ":stack_troop", ":stack_troop_dna"),
(assign, ":break", 1),
(try_end),
#merchant always escape mechanism
(try_end),
(try_begin),
(is_between, ":stack_troop", custom_caravan_masters_begin, custom_caravan_masters_end),
(call_script, "script_remove_troop_from_prison", ":stack_troop"),
(troop_set_slot, ":stack_troop", slot_troop_occupation, slto_inactive),
(try_end),
(try_end),
(eq, ":break", 1),
(else_try),
# Talk to freed heroes
(assign, ":break", 0),
(...)
Rich (BB code):
(...)
[anyone,"talk_caravan_enemy_2", [],
"Never. It is our duty to protect these goods. You shall have to fight us, brigand!", "close_window",
[
(store_relation,":rel","$g_encountered_party_faction","fac_player_supporters_faction"),
(val_min,":rel",0),
(val_sub,":rel",4),
(call_script, "script_set_player_relation_with_faction", "$g_encountered_party_faction", ":rel"),
(call_script, "script_diplomacy_party_attacks_neutral", "p_main_party", "$g_encountered_party"),
]],
#trade with caravan master
[
anyone|plyr,
"merchant_talk",
[
(store_relation, ":rel", "$g_encountered_party_faction", "fac_player_supporters_faction"),
(ge, ":rel", 0),
(store_conversation_troop, ":car_master"),
(is_between, ":car_master", custom_caravan_masters_begin, custom_caravan_masters_end),
],
"Wanna trade?",
"merchant_pretalk",
[
(change_screen_trade),
]
],
[anyone|plyr,"merchant_talk", [], "[Leave]", "close_window",[(assign, "$g_leave_encounter",1)]],
(...)
Last edited by a moderator: