Konrad von Richtmark
Veteran
I've been thinking lately of what could be done to make prosperity more relevant, as well as solve the now infamous village-town prosperity drain problem. I'm not much of a M&B modder (and I've already undertaken a major modding effort for another game), but I thought I could see if the issue could be solved with a few quick & dirty tweaks (which could then be ported into other mods, if successful). I have, however, zero experience of Python coding, my native languages are C and Matlab. If anyone wants to jump in, feel free to, and we'll brainstorm and experiment together!
I went digging in the code, and found the following snippets that might be relevant:
From module_scripts.py:
#script_game_get_item_buy_price_factor:
I went digging in the code, and found the following snippets that might be relevant:
From module_scripts.py:
#script_game_get_item_buy_price_factor:
#script_game_get_item_buy_price_factor:
# This script is called from the game engine for calculating the buying price of any item.
# INPUT:
# param1: item_kind_id
# OUTPUT:
# trigger_result and reg0 = price_factor
("game_get_item_buy_price_factor",
[
(store_script_param_1, ":item_kind_id"),
(assign, ":price_factor", 100),
(call_script, "script_get_trade_penalty", ":item_kind_id"),
(assign, ":trade_penalty", reg0),
(try_begin),
(is_between, "$g_encountered_party", centers_begin, centers_end),
(is_between, ":item_kind_id", trade_goods_begin, trade_goods_end),
(store_sub, ":item_slot_no", ":item_kind_id", trade_goods_begin),
(val_add, ":item_slot_no", slot_town_trade_good_prices_begin),
(party_get_slot, ":price_factor", "$g_encountered_party", ":item_slot_no"),
(try_begin),
(is_between, "$g_encountered_party", villages_begin, villages_end),
(party_get_slot, ":market_town", "$g_encountered_party", slot_village_market_town),
(party_get_slot, ":price_in_market_town", ":market_town", ":item_slot_no"),
(val_max, ":price_factor", ":price_in_market_town"),
(try_end),
#For villages, the good will be sold no cheaper than in the market town
#This represents the absence of a permanent market -- ie, the peasants retain goods to sell on their journeys to town, and are not about to do giveaway deals with passing adventurers
(val_mul, ":price_factor", 100), #normalize price factor to range 0..100
(val_div, ":price_factor", average_price_factor),
(try_end),
(store_add, ":penalty_factor", 100, ":trade_penalty"),
(val_mul, ":price_factor", ":penalty_factor"),
(val_div, ":price_factor", 100),
(assign, reg0, ":price_factor"),
(set_trigger_result, reg0),
]),[/quote]
Selling and buying items (relevant for prosperity overall, might come in handy if wanting to make player trading make more of a difference on prosperity)
Economical properties of different goods. There are the variables slot_item_urban_demand, slot_item_rural_demand, and slot_item_desert_demand. I wonder, could village prosperity be increased by decreasing food demand in them (assuming that they're self-sufficient in food and only the surplus is shown produced)? Currently my hypothesis on what causes the village town prosperity drain is that towns are inherently more productive than villages, causing each trade between the two the prices of the town to increase. If villages consumed less, it would lead to more goods being left over, and as such lower prices in the village, and less economic drain on the town. Also, a less radical thing to do might simply be to boost the
# This script is called from the game engine for calculating the buying price of any item.
# INPUT:
# param1: item_kind_id
# OUTPUT:
# trigger_result and reg0 = price_factor
("game_get_item_buy_price_factor",
[
(store_script_param_1, ":item_kind_id"),
(assign, ":price_factor", 100),
(call_script, "script_get_trade_penalty", ":item_kind_id"),
(assign, ":trade_penalty", reg0),
(try_begin),
(is_between, "$g_encountered_party", centers_begin, centers_end),
(is_between, ":item_kind_id", trade_goods_begin, trade_goods_end),
(store_sub, ":item_slot_no", ":item_kind_id", trade_goods_begin),
(val_add, ":item_slot_no", slot_town_trade_good_prices_begin),
(party_get_slot, ":price_factor", "$g_encountered_party", ":item_slot_no"),
(try_begin),
(is_between, "$g_encountered_party", villages_begin, villages_end),
(party_get_slot, ":market_town", "$g_encountered_party", slot_village_market_town),
(party_get_slot, ":price_in_market_town", ":market_town", ":item_slot_no"),
(val_max, ":price_factor", ":price_in_market_town"),
(try_end),
#For villages, the good will be sold no cheaper than in the market town
#This represents the absence of a permanent market -- ie, the peasants retain goods to sell on their journeys to town, and are not about to do giveaway deals with passing adventurers
(val_mul, ":price_factor", 100), #normalize price factor to range 0..100
(val_div, ":price_factor", average_price_factor),
(try_end),
(store_add, ":penalty_factor", 100, ":trade_penalty"),
(val_mul, ":price_factor", ":penalty_factor"),
(val_div, ":price_factor", 100),
(assign, reg0, ":price_factor"),
(set_trigger_result, reg0),
]),[/quote]
Selling and buying items (relevant for prosperity overall, might come in handy if wanting to make player trading make more of a difference on prosperity)
#script_game_event_buy_item:
# This script is called from the game engine when player buys an item.
# INPUT:
# param1: item_kind_id
("game_event_buy_item",
[
(store_script_param_1, ":item_kind_id"),
(store_script_param_2, ":reclaim_mode"),
(try_begin),
(is_between, ":item_kind_id", trade_goods_begin, trade_goods_end),
(store_sub, ":item_slot_no", ":item_kind_id", trade_goods_begin),
(val_add, ":item_slot_no", slot_town_trade_good_prices_begin),
(party_get_slot, ":multiplier", "$g_encountered_party", ":item_slot_no"),
(try_begin),
(eq, ":reclaim_mode", 0),
(val_add, ":multiplier", 10),
(else_try),
(val_add, ":multiplier", 15),
(try_end),
(val_min, ":multiplier", maximum_price_factor),
(party_set_slot, "$g_encountered_party", ":item_slot_no", ":multiplier"),
(try_end),
]),
#script_game_event_sell_item:
# This script is called from the game engine when player sells an item.
# INPUT:
# param1: item_kind_id
("game_event_sell_item",
[
(store_script_param_1, ":item_kind_id"),
(store_script_param_2, ":return_mode"),
(try_begin),
(is_between, ":item_kind_id", trade_goods_begin, trade_goods_end),
(store_sub, ":item_slot_no", ":item_kind_id", trade_goods_begin),
(val_add, ":item_slot_no", slot_town_trade_good_prices_begin),
(party_get_slot, ":multiplier", "$g_encountered_party", ":item_slot_no"),
(try_begin),
(eq, ":return_mode", 0),
(val_sub, ":multiplier", 15),
(else_try),
(val_sub, ":multiplier", 10),
(try_end),
(val_max, ":multiplier", minimum_price_factor),
(party_set_slot, "$g_encountered_party", ":item_slot_no", ":multiplier"),
(try_end),
]),
# This script is called from the game engine when player buys an item.
# INPUT:
# param1: item_kind_id
("game_event_buy_item",
[
(store_script_param_1, ":item_kind_id"),
(store_script_param_2, ":reclaim_mode"),
(try_begin),
(is_between, ":item_kind_id", trade_goods_begin, trade_goods_end),
(store_sub, ":item_slot_no", ":item_kind_id", trade_goods_begin),
(val_add, ":item_slot_no", slot_town_trade_good_prices_begin),
(party_get_slot, ":multiplier", "$g_encountered_party", ":item_slot_no"),
(try_begin),
(eq, ":reclaim_mode", 0),
(val_add, ":multiplier", 10),
(else_try),
(val_add, ":multiplier", 15),
(try_end),
(val_min, ":multiplier", maximum_price_factor),
(party_set_slot, "$g_encountered_party", ":item_slot_no", ":multiplier"),
(try_end),
]),
#script_game_event_sell_item:
# This script is called from the game engine when player sells an item.
# INPUT:
# param1: item_kind_id
("game_event_sell_item",
[
(store_script_param_1, ":item_kind_id"),
(store_script_param_2, ":return_mode"),
(try_begin),
(is_between, ":item_kind_id", trade_goods_begin, trade_goods_end),
(store_sub, ":item_slot_no", ":item_kind_id", trade_goods_begin),
(val_add, ":item_slot_no", slot_town_trade_good_prices_begin),
(party_get_slot, ":multiplier", "$g_encountered_party", ":item_slot_no"),
(try_begin),
(eq, ":return_mode", 0),
(val_sub, ":multiplier", 15),
(else_try),
(val_sub, ":multiplier", 10),
(try_end),
(val_max, ":multiplier", minimum_price_factor),
(party_set_slot, "$g_encountered_party", ":item_slot_no", ":multiplier"),
(try_end),
]),
Economical properties of different goods. There are the variables slot_item_urban_demand, slot_item_rural_demand, and slot_item_desert_demand. I wonder, could village prosperity be increased by decreasing food demand in them (assuming that they're self-sufficient in food and only the surplus is shown produced)? Currently my hypothesis on what causes the village town prosperity drain is that towns are inherently more productive than villages, causing each trade between the two the prices of the town to increase. If villages consumed less, it would lead to more goods being left over, and as such lower prices in the village, and less economic drain on the town. Also, a less radical thing to do might simply be to boost the
("initialize_item_info",
[
# Setting food bonuses - these have been changed to incentivize using historical rations. Bread is the most cost-efficient
#Staples
(item_set_slot, "itm_bread", slot_item_food_bonus, , #brought up from 4
(item_set_slot, "itm_grain", slot_item_food_bonus, 2), #new - can be boiled as porridge
#Fat sources - preserved
(item_set_slot, "itm_smoked_fish", slot_item_food_bonus, 4),
(item_set_slot, "itm_dried_meat", slot_item_food_bonus, 5),
(item_set_slot, "itm_cheese", slot_item_food_bonus, 5),
(item_set_slot, "itm_sausages", slot_item_food_bonus, 5),
(item_set_slot, "itm_butter", slot_item_food_bonus, 4), #brought down from 8
#Fat sources - perishable
(item_set_slot, "itm_chicken", slot_item_food_bonus, , #brought up from 7
(item_set_slot, "itm_cattle_meat", slot_item_food_bonus, 7), #brought down from 7
(item_set_slot, "itm_pork", slot_item_food_bonus, 6), #brought down from 6
#Produce
(item_set_slot, "itm_raw_olives", slot_item_food_bonus, 1),
(item_set_slot, "itm_cabbages", slot_item_food_bonus, 2),
(item_set_slot, "itm_raw_grapes", slot_item_food_bonus, 3),
(item_set_slot, "itm_apples", slot_item_food_bonus, 4), #brought down from 5
#Sweet items
(item_set_slot, "itm_raw_date_fruit", slot_item_food_bonus, 4), #brought down from 8
(item_set_slot, "itm_honey", slot_item_food_bonus, 6), #brought down from 12
(item_set_slot, "itm_wine", slot_item_food_bonus, 5),
(item_set_slot, "itm_ale", slot_item_food_bonus, 4),
#Item economic settings
(item_set_slot, "itm_grain", slot_item_urban_demand, 20),
(item_set_slot, "itm_grain", slot_item_rural_demand, 20),
(item_set_slot, "itm_grain", slot_item_desert_demand, 20),
(item_set_slot, "itm_grain", slot_item_production_slot, slot_center_acres_grain),
(item_set_slot, "itm_grain", slot_item_production_string, "str_acres_grain"),
(item_set_slot, "itm_grain", slot_item_base_price, 30),
(item_set_slot, "itm_bread", slot_item_urban_demand, 30),
(item_set_slot, "itm_bread", slot_item_rural_demand, 30),
(item_set_slot, "itm_bread", slot_item_desert_demand, 30),
(item_set_slot, "itm_bread", slot_item_production_slot, slot_center_mills),
(item_set_slot, "itm_bread", slot_item_production_string, "str_mills"),
(item_set_slot, "itm_bread", slot_item_primary_raw_material, "itm_grain"),
(item_set_slot, "itm_bread", slot_item_input_number, 6),
(item_set_slot, "itm_bread", slot_item_output_per_run, 6),
(item_set_slot, "itm_bread", slot_item_overhead_per_run, 30),
(item_set_slot, "itm_bread", slot_item_base_price, 50),
(item_set_slot, "itm_bread", slot_item_enterprise_building_cost, 1500),
(item_set_slot, "itm_ale", slot_item_urban_demand, 10),
(item_set_slot, "itm_ale", slot_item_rural_demand, 15),
(item_set_slot, "itm_ale", slot_item_desert_demand, 0),
(item_set_slot, "itm_ale", slot_item_production_slot, slot_center_breweries),
(item_set_slot, "itm_ale", slot_item_production_string, "str_breweries"),
(item_set_slot, "itm_ale", slot_item_base_price, 120),
(item_set_slot, "itm_ale", slot_item_primary_raw_material, "itm_grain"),
(item_set_slot, "itm_ale", slot_item_input_number, 1),
(item_set_slot, "itm_ale", slot_item_output_per_run, 2),
(item_set_slot, "itm_ale", slot_item_overhead_per_run, 50),
(item_set_slot, "itm_ale", slot_item_base_price, 120),
(item_set_slot, "itm_ale", slot_item_enterprise_building_cost, 2500),
(item_set_slot, "itm_wine", slot_item_urban_demand, 15),
(item_set_slot, "itm_wine", slot_item_rural_demand, 10),
(item_set_slot, "itm_wine", slot_item_desert_demand, 25),
(item_set_slot, "itm_wine", slot_item_production_slot, slot_center_wine_presses),
(item_set_slot, "itm_wine", slot_item_production_string, "str_presses"),
(item_set_slot, "itm_wine", slot_item_primary_raw_material, "itm_raw_grapes"),
(item_set_slot, "itm_wine", slot_item_input_number, 4),
(item_set_slot, "itm_wine", slot_item_output_per_run, 2),
(item_set_slot, "itm_wine", slot_item_overhead_per_run, 60),
(item_set_slot, "itm_wine", slot_item_base_price, 220),
(item_set_slot, "itm_wine", slot_item_enterprise_building_cost, 5000),
(item_set_slot, "itm_raw_grapes", slot_item_urban_demand, 0),
(item_set_slot, "itm_raw_grapes", slot_item_rural_demand, 0),
(item_set_slot, "itm_raw_grapes", slot_item_desert_demand, 0),
(item_set_slot, "itm_raw_grapes", slot_item_production_slot, slot_center_acres_vineyard),
(item_set_slot, "itm_raw_grapes", slot_item_production_string, "str_acres_orchard"),
(item_set_slot, "itm_raw_grapes", slot_item_is_raw_material_only_for, "itm_wine"),
(item_set_slot, "itm_raw_grapes", slot_item_base_price, 75),
(item_set_slot, "itm_apples", slot_item_urban_demand, 4),
(item_set_slot, "itm_apples", slot_item_rural_demand, 4),
(item_set_slot, "itm_apples", slot_item_desert_demand, 0),
(item_set_slot, "itm_apples", slot_item_production_slot, slot_center_acres_vineyard),
(item_set_slot, "itm_apples", slot_item_production_string, "str_acres_orchard"),
(item_set_slot, "itm_apples", slot_item_base_price, 44),
(item_set_slot, "itm_smoked_fish", slot_item_urban_demand, 16),
(item_set_slot, "itm_smoked_fish", slot_item_rural_demand, 16),
(item_set_slot, "itm_smoked_fish", slot_item_desert_demand, 16),
(item_set_slot, "itm_smoked_fish", slot_item_production_slot, slot_center_fishing_fleet),
(item_set_slot, "itm_smoked_fish", slot_item_production_string, "str_boats"),
(item_set_slot, "itm_salt", slot_item_urban_demand, 5),
(item_set_slot, "itm_salt", slot_item_rural_demand, 3),
(item_set_slot, "itm_salt", slot_item_desert_demand, -1),
(item_set_slot, "itm_salt", slot_item_production_slot, slot_center_salt_pans),
(item_set_slot, "itm_salt", slot_item_production_string, "str_pans"),
(item_set_slot, "itm_dried_meat", slot_item_urban_demand, 15),
(item_set_slot, "itm_dried_meat", slot_item_rural_demand, 15),
(item_set_slot, "itm_dried_meat", slot_item_desert_demand, 15),
(item_set_slot, "itm_dried_meat", slot_item_production_slot, slot_center_head_cattle),
(item_set_slot, "itm_dried_meat", slot_item_production_string, "str_head_cattle"),
(item_set_slot, "itm_cheese", slot_item_urban_demand, 10),
(item_set_slot, "itm_cheese", slot_item_rural_demand, 10),
(item_set_slot, "itm_cheese", slot_item_desert_demand, 10),
(item_set_slot, "itm_cheese", slot_item_production_slot, slot_center_head_cattle),
(item_set_slot, "itm_cheese", slot_item_production_string, "str_head_cattle"),
(item_set_slot, "itm_butter", slot_item_urban_demand, 2),
(item_set_slot, "itm_butter", slot_item_rural_demand, 2),
(item_set_slot, "itm_butter", slot_item_desert_demand, 2),
(item_set_slot, "itm_butter", slot_item_production_slot, slot_center_head_cattle),
(item_set_slot, "itm_butter", slot_item_production_string, "str_head_cattle"),
(item_set_slot, "itm_leatherwork", slot_item_urban_demand, 10),
(item_set_slot, "itm_leatherwork", slot_item_rural_demand, 10),
(item_set_slot, "itm_leatherwork", slot_item_desert_demand, 10),
(item_set_slot, "itm_leatherwork", slot_item_production_slot, slot_center_tanneries),
(item_set_slot, "itm_leatherwork", slot_item_production_string, "str_tanneries"),
(item_set_slot, "itm_leatherwork", slot_item_primary_raw_material, "itm_raw_leather"),
(item_set_slot, "itm_leatherwork", slot_item_input_number, 3),
(item_set_slot, "itm_leatherwork", slot_item_output_per_run, 3),
(item_set_slot, "itm_leatherwork", slot_item_overhead_per_run, 50),
(item_set_slot, "itm_leatherwork", slot_item_base_price, 220),
(item_set_slot, "itm_leatherwork", slot_item_enterprise_building_cost, 8000),
(item_set_slot, "itm_raw_leather", slot_item_urban_demand, 0),
(item_set_slot, "itm_raw_leather", slot_item_rural_demand, 0),
(item_set_slot, "itm_raw_leather", slot_item_desert_demand, 0),
(item_set_slot, "itm_raw_leather", slot_item_production_slot, slot_center_head_cattle),
(item_set_slot, "itm_raw_leather", slot_item_production_string, "str_head_cattle"),
(item_set_slot, "itm_raw_leather", slot_item_is_raw_material_only_for, "itm_leatherwork"),
(item_set_slot, "itm_raw_leather", slot_item_base_price, 120),
(item_set_slot, "itm_sausages", slot_item_urban_demand, 5),
(item_set_slot, "itm_sausages", slot_item_rural_demand, 5),
(item_set_slot, "itm_sausages", slot_item_desert_demand, 5),
(item_set_slot, "itm_sausages", slot_item_production_slot, slot_center_head_sheep),
(item_set_slot, "itm_sausages", slot_item_production_string, "str_head_sheep"),
(item_set_slot, "itm_wool", slot_item_urban_demand, 0),
(item_set_slot, "itm_wool", slot_item_rural_demand, 0),
(item_set_slot, "itm_wool", slot_item_desert_demand, 0),
(item_set_slot, "itm_wool", slot_item_production_slot, slot_center_head_sheep),
(item_set_slot, "itm_wool", slot_item_production_string, "str_head_sheep"),
(item_set_slot, "itm_wool", slot_item_is_raw_material_only_for, "itm_wool_cloth"),
(item_set_slot, "itm_wool", slot_item_base_price,130),
(item_set_slot, "itm_wool_cloth", slot_item_urban_demand, 15),
(item_set_slot, "itm_wool_cloth", slot_item_rural_demand, 20),
(item_set_slot, "itm_wool_cloth", slot_item_desert_demand, 5),
(item_set_slot, "itm_wool_cloth", slot_item_production_slot, slot_center_wool_looms),
(item_set_slot, "itm_wool_cloth", slot_item_production_string, "str_looms"),
(item_set_slot, "itm_wool_cloth", slot_item_primary_raw_material, "itm_wool"),
(item_set_slot, "itm_wool_cloth", slot_item_input_number, 2),
(item_set_slot, "itm_wool_cloth", slot_item_output_per_run, 2),
(item_set_slot, "itm_wool_cloth", slot_item_overhead_per_run, 120),
(item_set_slot, "itm_wool_cloth", slot_item_base_price, 250),
(item_set_slot, "itm_wool_cloth", slot_item_enterprise_building_cost, 6000),
(item_set_slot, "itm_raw_flax", slot_item_urban_demand, 0),
(item_set_slot, "itm_raw_flax", slot_item_rural_demand, 0),
(item_set_slot, "itm_raw_flax", slot_item_desert_demand, 0),
(item_set_slot, "itm_raw_flax", slot_item_production_slot, slot_center_acres_flax),
(item_set_slot, "itm_raw_flax", slot_item_production_string, "str_acres_flax"),
(item_set_slot, "itm_raw_flax", slot_item_is_raw_material_only_for, "itm_linen"),
(item_set_slot, "itm_raw_flax", slot_item_base_price, 150),
(item_set_slot, "itm_linen", slot_item_urban_demand, 7),
(item_set_slot, "itm_linen", slot_item_rural_demand, 3),
(item_set_slot, "itm_linen", slot_item_desert_demand, 15),
(item_set_slot, "itm_linen", slot_item_production_slot, slot_center_linen_looms),
(item_set_slot, "itm_linen", slot_item_production_string, "str_looms"),
(item_set_slot, "itm_linen", slot_item_primary_raw_material, "itm_raw_flax"),
(item_set_slot, "itm_linen", slot_item_input_number, 2),
(item_set_slot, "itm_linen", slot_item_output_per_run, 2),
(item_set_slot, "itm_linen", slot_item_overhead_per_run, 120),
(item_set_slot, "itm_linen", slot_item_base_price, 250),
(item_set_slot, "itm_linen", slot_item_enterprise_building_cost, 6000),
(item_set_slot, "itm_iron", slot_item_urban_demand, 0),
(item_set_slot, "itm_iron", slot_item_rural_demand, 0),
(item_set_slot, "itm_iron", slot_item_desert_demand, 0),
(item_set_slot, "itm_iron", slot_item_production_slot, slot_center_iron_deposits),
(item_set_slot, "itm_iron", slot_item_production_string, "str_deposits"),
(item_set_slot, "itm_iron", slot_item_is_raw_material_only_for, "itm_tools"),
(item_set_slot, "itm_iron", slot_item_base_price, 264),
(item_set_slot, "itm_tools", slot_item_urban_demand, 7),
(item_set_slot, "itm_tools", slot_item_rural_demand, 7),
(item_set_slot, "itm_tools", slot_item_desert_demand, 7),
(item_set_slot, "itm_tools", slot_item_production_slot, slot_center_smithies),
(item_set_slot, "itm_tools", slot_item_production_string, "str_smithies"),
(item_set_slot, "itm_tools", slot_item_primary_raw_material, "itm_iron"),
(item_set_slot, "itm_tools", slot_item_input_number, 2),
(item_set_slot, "itm_tools", slot_item_output_per_run, 2),
(item_set_slot, "itm_tools", slot_item_overhead_per_run, 60),
(item_set_slot, "itm_tools", slot_item_base_price, 410),
(item_set_slot, "itm_tools", slot_item_enterprise_building_cost, 3500),
(item_set_slot, "itm_pottery", slot_item_urban_demand, 5),
(item_set_slot, "itm_pottery", slot_item_rural_demand, 5),
(item_set_slot, "itm_pottery", slot_item_desert_demand, 5),
(item_set_slot, "itm_pottery", slot_item_production_slot, slot_center_pottery_kilns),
(item_set_slot, "itm_pottery", slot_item_production_string, "str_kilns"),
(item_set_slot, "itm_oil", slot_item_urban_demand, 10),
(item_set_slot, "itm_oil", slot_item_rural_demand, 5),
(item_set_slot, "itm_oil", slot_item_desert_demand, -1),
(item_set_slot, "itm_oil", slot_item_production_slot, slot_center_olive_presses),
(item_set_slot, "itm_oil", slot_item_production_string, "str_presses"),
(item_set_slot, "itm_oil", slot_item_primary_raw_material, "itm_raw_olives"),
(item_set_slot, "itm_oil", slot_item_input_number, 6),
(item_set_slot, "itm_oil", slot_item_output_per_run, 2),
(item_set_slot, "itm_oil", slot_item_overhead_per_run, 80),
(item_set_slot, "itm_oil", slot_item_base_price, 450),
(item_set_slot, "itm_oil", slot_item_enterprise_building_cost, 4500),
(item_set_slot, "itm_raw_olives", slot_item_urban_demand, 0),
(item_set_slot, "itm_raw_olives", slot_item_rural_demand, 0),
(item_set_slot, "itm_raw_olives", slot_item_desert_demand, 0),
(item_set_slot, "itm_raw_olives", slot_item_production_slot, slot_center_acres_olives),
(item_set_slot, "itm_raw_olives", slot_item_production_string, "str_olive_groves"),
(item_set_slot, "itm_raw_olives", slot_item_is_raw_material_only_for, "itm_oil"),
(item_set_slot, "itm_raw_olives", slot_item_base_price, 100),
(item_set_slot, "itm_velvet", slot_item_urban_demand, 5),
(item_set_slot, "itm_velvet", slot_item_rural_demand, 0),
(item_set_slot, "itm_velvet", slot_item_desert_demand, -1),
(item_set_slot, "itm_velvet", slot_item_production_slot, slot_center_silk_looms),
(item_set_slot, "itm_velvet", slot_item_production_string, "str_looms"),
(item_set_slot, "itm_velvet", slot_item_primary_raw_material, "itm_raw_silk"),
(item_set_slot, "itm_velvet", slot_item_input_number, 2),
(item_set_slot, "itm_velvet", slot_item_output_per_run, 2),
(item_set_slot, "itm_velvet", slot_item_overhead_per_run, 160),
(item_set_slot, "itm_velvet", slot_item_base_price, 1025),
(item_set_slot, "itm_velvet", slot_item_secondary_raw_material, "itm_raw_dyes"),
(item_set_slot, "itm_velvet", slot_item_enterprise_building_cost, 10000),
(item_set_slot, "itm_raw_silk", slot_item_urban_demand, 0),
(item_set_slot, "itm_raw_silk", slot_item_rural_demand, 0),
(item_set_slot, "itm_raw_silk", slot_item_production_slot, slot_center_silk_farms),
(item_set_slot, "itm_raw_silk", slot_item_production_string, "str_mulberry_groves"),
(item_set_slot, "itm_raw_silk", slot_item_is_raw_material_only_for, "itm_velvet"),
(item_set_slot, "itm_raw_silk", slot_item_base_price, 600),
(item_set_slot, "itm_raw_dyes", slot_item_urban_demand, 3),
(item_set_slot, "itm_raw_dyes", slot_item_rural_demand, 0),
(item_set_slot, "itm_raw_dyes", slot_item_desert_demand, -1),
(item_set_slot, "itm_raw_dyes", slot_item_production_string, "str_caravans"),
(item_set_slot, "itm_raw_dyes", slot_item_base_price, 200),
(item_set_slot, "itm_spice", slot_item_urban_demand, 5),
(item_set_slot, "itm_spice", slot_item_rural_demand, 0),
(item_set_slot, "itm_spice", slot_item_desert_demand, 5),
(item_set_slot, "itm_spice", slot_item_production_string, "str_caravans"),
(item_set_slot, "itm_furs", slot_item_urban_demand, 5),
(item_set_slot, "itm_furs", slot_item_rural_demand, 0),
(item_set_slot, "itm_furs", slot_item_desert_demand, -1),
(item_set_slot, "itm_furs", slot_item_production_slot, slot_center_fur_traps),
(item_set_slot, "itm_furs", slot_item_production_string, "str_traps"),
(item_set_slot, "itm_honey", slot_item_urban_demand, 5),
(item_set_slot, "itm_honey", slot_item_rural_demand, 5),
(item_set_slot, "itm_honey", slot_item_desert_demand, 5),
(item_set_slot, "itm_honey", slot_item_production_slot, slot_center_apiaries),
(item_set_slot, "itm_honey", slot_item_production_string, "str_hives"),
(item_set_slot, "itm_cabbages", slot_item_urban_demand, 7),
(item_set_slot, "itm_cabbages", slot_item_rural_demand, 7),
(item_set_slot, "itm_cabbages", slot_item_desert_demand, 7),
(item_set_slot, "itm_cabbages", slot_item_production_slot, slot_center_household_gardens),
(item_set_slot, "itm_cabbages", slot_item_production_string, "str_gardens"),
(item_set_slot, "itm_raw_date_fruit", slot_item_urban_demand, 7),
(item_set_slot, "itm_raw_date_fruit", slot_item_rural_demand, 7),
(item_set_slot, "itm_raw_date_fruit", slot_item_desert_demand, 7),
(item_set_slot, "itm_raw_date_fruit", slot_item_production_slot, slot_center_household_gardens),
(item_set_slot, "itm_raw_date_fruit", slot_item_production_string, "str_acres_oasis"),
[
# Setting food bonuses - these have been changed to incentivize using historical rations. Bread is the most cost-efficient
#Staples
(item_set_slot, "itm_bread", slot_item_food_bonus, , #brought up from 4
(item_set_slot, "itm_grain", slot_item_food_bonus, 2), #new - can be boiled as porridge
#Fat sources - preserved
(item_set_slot, "itm_smoked_fish", slot_item_food_bonus, 4),
(item_set_slot, "itm_dried_meat", slot_item_food_bonus, 5),
(item_set_slot, "itm_cheese", slot_item_food_bonus, 5),
(item_set_slot, "itm_sausages", slot_item_food_bonus, 5),
(item_set_slot, "itm_butter", slot_item_food_bonus, 4), #brought down from 8
#Fat sources - perishable
(item_set_slot, "itm_chicken", slot_item_food_bonus, , #brought up from 7
(item_set_slot, "itm_cattle_meat", slot_item_food_bonus, 7), #brought down from 7
(item_set_slot, "itm_pork", slot_item_food_bonus, 6), #brought down from 6
#Produce
(item_set_slot, "itm_raw_olives", slot_item_food_bonus, 1),
(item_set_slot, "itm_cabbages", slot_item_food_bonus, 2),
(item_set_slot, "itm_raw_grapes", slot_item_food_bonus, 3),
(item_set_slot, "itm_apples", slot_item_food_bonus, 4), #brought down from 5
#Sweet items
(item_set_slot, "itm_raw_date_fruit", slot_item_food_bonus, 4), #brought down from 8
(item_set_slot, "itm_honey", slot_item_food_bonus, 6), #brought down from 12
(item_set_slot, "itm_wine", slot_item_food_bonus, 5),
(item_set_slot, "itm_ale", slot_item_food_bonus, 4),
#Item economic settings
(item_set_slot, "itm_grain", slot_item_urban_demand, 20),
(item_set_slot, "itm_grain", slot_item_rural_demand, 20),
(item_set_slot, "itm_grain", slot_item_desert_demand, 20),
(item_set_slot, "itm_grain", slot_item_production_slot, slot_center_acres_grain),
(item_set_slot, "itm_grain", slot_item_production_string, "str_acres_grain"),
(item_set_slot, "itm_grain", slot_item_base_price, 30),
(item_set_slot, "itm_bread", slot_item_urban_demand, 30),
(item_set_slot, "itm_bread", slot_item_rural_demand, 30),
(item_set_slot, "itm_bread", slot_item_desert_demand, 30),
(item_set_slot, "itm_bread", slot_item_production_slot, slot_center_mills),
(item_set_slot, "itm_bread", slot_item_production_string, "str_mills"),
(item_set_slot, "itm_bread", slot_item_primary_raw_material, "itm_grain"),
(item_set_slot, "itm_bread", slot_item_input_number, 6),
(item_set_slot, "itm_bread", slot_item_output_per_run, 6),
(item_set_slot, "itm_bread", slot_item_overhead_per_run, 30),
(item_set_slot, "itm_bread", slot_item_base_price, 50),
(item_set_slot, "itm_bread", slot_item_enterprise_building_cost, 1500),
(item_set_slot, "itm_ale", slot_item_urban_demand, 10),
(item_set_slot, "itm_ale", slot_item_rural_demand, 15),
(item_set_slot, "itm_ale", slot_item_desert_demand, 0),
(item_set_slot, "itm_ale", slot_item_production_slot, slot_center_breweries),
(item_set_slot, "itm_ale", slot_item_production_string, "str_breweries"),
(item_set_slot, "itm_ale", slot_item_base_price, 120),
(item_set_slot, "itm_ale", slot_item_primary_raw_material, "itm_grain"),
(item_set_slot, "itm_ale", slot_item_input_number, 1),
(item_set_slot, "itm_ale", slot_item_output_per_run, 2),
(item_set_slot, "itm_ale", slot_item_overhead_per_run, 50),
(item_set_slot, "itm_ale", slot_item_base_price, 120),
(item_set_slot, "itm_ale", slot_item_enterprise_building_cost, 2500),
(item_set_slot, "itm_wine", slot_item_urban_demand, 15),
(item_set_slot, "itm_wine", slot_item_rural_demand, 10),
(item_set_slot, "itm_wine", slot_item_desert_demand, 25),
(item_set_slot, "itm_wine", slot_item_production_slot, slot_center_wine_presses),
(item_set_slot, "itm_wine", slot_item_production_string, "str_presses"),
(item_set_slot, "itm_wine", slot_item_primary_raw_material, "itm_raw_grapes"),
(item_set_slot, "itm_wine", slot_item_input_number, 4),
(item_set_slot, "itm_wine", slot_item_output_per_run, 2),
(item_set_slot, "itm_wine", slot_item_overhead_per_run, 60),
(item_set_slot, "itm_wine", slot_item_base_price, 220),
(item_set_slot, "itm_wine", slot_item_enterprise_building_cost, 5000),
(item_set_slot, "itm_raw_grapes", slot_item_urban_demand, 0),
(item_set_slot, "itm_raw_grapes", slot_item_rural_demand, 0),
(item_set_slot, "itm_raw_grapes", slot_item_desert_demand, 0),
(item_set_slot, "itm_raw_grapes", slot_item_production_slot, slot_center_acres_vineyard),
(item_set_slot, "itm_raw_grapes", slot_item_production_string, "str_acres_orchard"),
(item_set_slot, "itm_raw_grapes", slot_item_is_raw_material_only_for, "itm_wine"),
(item_set_slot, "itm_raw_grapes", slot_item_base_price, 75),
(item_set_slot, "itm_apples", slot_item_urban_demand, 4),
(item_set_slot, "itm_apples", slot_item_rural_demand, 4),
(item_set_slot, "itm_apples", slot_item_desert_demand, 0),
(item_set_slot, "itm_apples", slot_item_production_slot, slot_center_acres_vineyard),
(item_set_slot, "itm_apples", slot_item_production_string, "str_acres_orchard"),
(item_set_slot, "itm_apples", slot_item_base_price, 44),
(item_set_slot, "itm_smoked_fish", slot_item_urban_demand, 16),
(item_set_slot, "itm_smoked_fish", slot_item_rural_demand, 16),
(item_set_slot, "itm_smoked_fish", slot_item_desert_demand, 16),
(item_set_slot, "itm_smoked_fish", slot_item_production_slot, slot_center_fishing_fleet),
(item_set_slot, "itm_smoked_fish", slot_item_production_string, "str_boats"),
(item_set_slot, "itm_salt", slot_item_urban_demand, 5),
(item_set_slot, "itm_salt", slot_item_rural_demand, 3),
(item_set_slot, "itm_salt", slot_item_desert_demand, -1),
(item_set_slot, "itm_salt", slot_item_production_slot, slot_center_salt_pans),
(item_set_slot, "itm_salt", slot_item_production_string, "str_pans"),
(item_set_slot, "itm_dried_meat", slot_item_urban_demand, 15),
(item_set_slot, "itm_dried_meat", slot_item_rural_demand, 15),
(item_set_slot, "itm_dried_meat", slot_item_desert_demand, 15),
(item_set_slot, "itm_dried_meat", slot_item_production_slot, slot_center_head_cattle),
(item_set_slot, "itm_dried_meat", slot_item_production_string, "str_head_cattle"),
(item_set_slot, "itm_cheese", slot_item_urban_demand, 10),
(item_set_slot, "itm_cheese", slot_item_rural_demand, 10),
(item_set_slot, "itm_cheese", slot_item_desert_demand, 10),
(item_set_slot, "itm_cheese", slot_item_production_slot, slot_center_head_cattle),
(item_set_slot, "itm_cheese", slot_item_production_string, "str_head_cattle"),
(item_set_slot, "itm_butter", slot_item_urban_demand, 2),
(item_set_slot, "itm_butter", slot_item_rural_demand, 2),
(item_set_slot, "itm_butter", slot_item_desert_demand, 2),
(item_set_slot, "itm_butter", slot_item_production_slot, slot_center_head_cattle),
(item_set_slot, "itm_butter", slot_item_production_string, "str_head_cattle"),
(item_set_slot, "itm_leatherwork", slot_item_urban_demand, 10),
(item_set_slot, "itm_leatherwork", slot_item_rural_demand, 10),
(item_set_slot, "itm_leatherwork", slot_item_desert_demand, 10),
(item_set_slot, "itm_leatherwork", slot_item_production_slot, slot_center_tanneries),
(item_set_slot, "itm_leatherwork", slot_item_production_string, "str_tanneries"),
(item_set_slot, "itm_leatherwork", slot_item_primary_raw_material, "itm_raw_leather"),
(item_set_slot, "itm_leatherwork", slot_item_input_number, 3),
(item_set_slot, "itm_leatherwork", slot_item_output_per_run, 3),
(item_set_slot, "itm_leatherwork", slot_item_overhead_per_run, 50),
(item_set_slot, "itm_leatherwork", slot_item_base_price, 220),
(item_set_slot, "itm_leatherwork", slot_item_enterprise_building_cost, 8000),
(item_set_slot, "itm_raw_leather", slot_item_urban_demand, 0),
(item_set_slot, "itm_raw_leather", slot_item_rural_demand, 0),
(item_set_slot, "itm_raw_leather", slot_item_desert_demand, 0),
(item_set_slot, "itm_raw_leather", slot_item_production_slot, slot_center_head_cattle),
(item_set_slot, "itm_raw_leather", slot_item_production_string, "str_head_cattle"),
(item_set_slot, "itm_raw_leather", slot_item_is_raw_material_only_for, "itm_leatherwork"),
(item_set_slot, "itm_raw_leather", slot_item_base_price, 120),
(item_set_slot, "itm_sausages", slot_item_urban_demand, 5),
(item_set_slot, "itm_sausages", slot_item_rural_demand, 5),
(item_set_slot, "itm_sausages", slot_item_desert_demand, 5),
(item_set_slot, "itm_sausages", slot_item_production_slot, slot_center_head_sheep),
(item_set_slot, "itm_sausages", slot_item_production_string, "str_head_sheep"),
(item_set_slot, "itm_wool", slot_item_urban_demand, 0),
(item_set_slot, "itm_wool", slot_item_rural_demand, 0),
(item_set_slot, "itm_wool", slot_item_desert_demand, 0),
(item_set_slot, "itm_wool", slot_item_production_slot, slot_center_head_sheep),
(item_set_slot, "itm_wool", slot_item_production_string, "str_head_sheep"),
(item_set_slot, "itm_wool", slot_item_is_raw_material_only_for, "itm_wool_cloth"),
(item_set_slot, "itm_wool", slot_item_base_price,130),
(item_set_slot, "itm_wool_cloth", slot_item_urban_demand, 15),
(item_set_slot, "itm_wool_cloth", slot_item_rural_demand, 20),
(item_set_slot, "itm_wool_cloth", slot_item_desert_demand, 5),
(item_set_slot, "itm_wool_cloth", slot_item_production_slot, slot_center_wool_looms),
(item_set_slot, "itm_wool_cloth", slot_item_production_string, "str_looms"),
(item_set_slot, "itm_wool_cloth", slot_item_primary_raw_material, "itm_wool"),
(item_set_slot, "itm_wool_cloth", slot_item_input_number, 2),
(item_set_slot, "itm_wool_cloth", slot_item_output_per_run, 2),
(item_set_slot, "itm_wool_cloth", slot_item_overhead_per_run, 120),
(item_set_slot, "itm_wool_cloth", slot_item_base_price, 250),
(item_set_slot, "itm_wool_cloth", slot_item_enterprise_building_cost, 6000),
(item_set_slot, "itm_raw_flax", slot_item_urban_demand, 0),
(item_set_slot, "itm_raw_flax", slot_item_rural_demand, 0),
(item_set_slot, "itm_raw_flax", slot_item_desert_demand, 0),
(item_set_slot, "itm_raw_flax", slot_item_production_slot, slot_center_acres_flax),
(item_set_slot, "itm_raw_flax", slot_item_production_string, "str_acres_flax"),
(item_set_slot, "itm_raw_flax", slot_item_is_raw_material_only_for, "itm_linen"),
(item_set_slot, "itm_raw_flax", slot_item_base_price, 150),
(item_set_slot, "itm_linen", slot_item_urban_demand, 7),
(item_set_slot, "itm_linen", slot_item_rural_demand, 3),
(item_set_slot, "itm_linen", slot_item_desert_demand, 15),
(item_set_slot, "itm_linen", slot_item_production_slot, slot_center_linen_looms),
(item_set_slot, "itm_linen", slot_item_production_string, "str_looms"),
(item_set_slot, "itm_linen", slot_item_primary_raw_material, "itm_raw_flax"),
(item_set_slot, "itm_linen", slot_item_input_number, 2),
(item_set_slot, "itm_linen", slot_item_output_per_run, 2),
(item_set_slot, "itm_linen", slot_item_overhead_per_run, 120),
(item_set_slot, "itm_linen", slot_item_base_price, 250),
(item_set_slot, "itm_linen", slot_item_enterprise_building_cost, 6000),
(item_set_slot, "itm_iron", slot_item_urban_demand, 0),
(item_set_slot, "itm_iron", slot_item_rural_demand, 0),
(item_set_slot, "itm_iron", slot_item_desert_demand, 0),
(item_set_slot, "itm_iron", slot_item_production_slot, slot_center_iron_deposits),
(item_set_slot, "itm_iron", slot_item_production_string, "str_deposits"),
(item_set_slot, "itm_iron", slot_item_is_raw_material_only_for, "itm_tools"),
(item_set_slot, "itm_iron", slot_item_base_price, 264),
(item_set_slot, "itm_tools", slot_item_urban_demand, 7),
(item_set_slot, "itm_tools", slot_item_rural_demand, 7),
(item_set_slot, "itm_tools", slot_item_desert_demand, 7),
(item_set_slot, "itm_tools", slot_item_production_slot, slot_center_smithies),
(item_set_slot, "itm_tools", slot_item_production_string, "str_smithies"),
(item_set_slot, "itm_tools", slot_item_primary_raw_material, "itm_iron"),
(item_set_slot, "itm_tools", slot_item_input_number, 2),
(item_set_slot, "itm_tools", slot_item_output_per_run, 2),
(item_set_slot, "itm_tools", slot_item_overhead_per_run, 60),
(item_set_slot, "itm_tools", slot_item_base_price, 410),
(item_set_slot, "itm_tools", slot_item_enterprise_building_cost, 3500),
(item_set_slot, "itm_pottery", slot_item_urban_demand, 5),
(item_set_slot, "itm_pottery", slot_item_rural_demand, 5),
(item_set_slot, "itm_pottery", slot_item_desert_demand, 5),
(item_set_slot, "itm_pottery", slot_item_production_slot, slot_center_pottery_kilns),
(item_set_slot, "itm_pottery", slot_item_production_string, "str_kilns"),
(item_set_slot, "itm_oil", slot_item_urban_demand, 10),
(item_set_slot, "itm_oil", slot_item_rural_demand, 5),
(item_set_slot, "itm_oil", slot_item_desert_demand, -1),
(item_set_slot, "itm_oil", slot_item_production_slot, slot_center_olive_presses),
(item_set_slot, "itm_oil", slot_item_production_string, "str_presses"),
(item_set_slot, "itm_oil", slot_item_primary_raw_material, "itm_raw_olives"),
(item_set_slot, "itm_oil", slot_item_input_number, 6),
(item_set_slot, "itm_oil", slot_item_output_per_run, 2),
(item_set_slot, "itm_oil", slot_item_overhead_per_run, 80),
(item_set_slot, "itm_oil", slot_item_base_price, 450),
(item_set_slot, "itm_oil", slot_item_enterprise_building_cost, 4500),
(item_set_slot, "itm_raw_olives", slot_item_urban_demand, 0),
(item_set_slot, "itm_raw_olives", slot_item_rural_demand, 0),
(item_set_slot, "itm_raw_olives", slot_item_desert_demand, 0),
(item_set_slot, "itm_raw_olives", slot_item_production_slot, slot_center_acres_olives),
(item_set_slot, "itm_raw_olives", slot_item_production_string, "str_olive_groves"),
(item_set_slot, "itm_raw_olives", slot_item_is_raw_material_only_for, "itm_oil"),
(item_set_slot, "itm_raw_olives", slot_item_base_price, 100),
(item_set_slot, "itm_velvet", slot_item_urban_demand, 5),
(item_set_slot, "itm_velvet", slot_item_rural_demand, 0),
(item_set_slot, "itm_velvet", slot_item_desert_demand, -1),
(item_set_slot, "itm_velvet", slot_item_production_slot, slot_center_silk_looms),
(item_set_slot, "itm_velvet", slot_item_production_string, "str_looms"),
(item_set_slot, "itm_velvet", slot_item_primary_raw_material, "itm_raw_silk"),
(item_set_slot, "itm_velvet", slot_item_input_number, 2),
(item_set_slot, "itm_velvet", slot_item_output_per_run, 2),
(item_set_slot, "itm_velvet", slot_item_overhead_per_run, 160),
(item_set_slot, "itm_velvet", slot_item_base_price, 1025),
(item_set_slot, "itm_velvet", slot_item_secondary_raw_material, "itm_raw_dyes"),
(item_set_slot, "itm_velvet", slot_item_enterprise_building_cost, 10000),
(item_set_slot, "itm_raw_silk", slot_item_urban_demand, 0),
(item_set_slot, "itm_raw_silk", slot_item_rural_demand, 0),
(item_set_slot, "itm_raw_silk", slot_item_production_slot, slot_center_silk_farms),
(item_set_slot, "itm_raw_silk", slot_item_production_string, "str_mulberry_groves"),
(item_set_slot, "itm_raw_silk", slot_item_is_raw_material_only_for, "itm_velvet"),
(item_set_slot, "itm_raw_silk", slot_item_base_price, 600),
(item_set_slot, "itm_raw_dyes", slot_item_urban_demand, 3),
(item_set_slot, "itm_raw_dyes", slot_item_rural_demand, 0),
(item_set_slot, "itm_raw_dyes", slot_item_desert_demand, -1),
(item_set_slot, "itm_raw_dyes", slot_item_production_string, "str_caravans"),
(item_set_slot, "itm_raw_dyes", slot_item_base_price, 200),
(item_set_slot, "itm_spice", slot_item_urban_demand, 5),
(item_set_slot, "itm_spice", slot_item_rural_demand, 0),
(item_set_slot, "itm_spice", slot_item_desert_demand, 5),
(item_set_slot, "itm_spice", slot_item_production_string, "str_caravans"),
(item_set_slot, "itm_furs", slot_item_urban_demand, 5),
(item_set_slot, "itm_furs", slot_item_rural_demand, 0),
(item_set_slot, "itm_furs", slot_item_desert_demand, -1),
(item_set_slot, "itm_furs", slot_item_production_slot, slot_center_fur_traps),
(item_set_slot, "itm_furs", slot_item_production_string, "str_traps"),
(item_set_slot, "itm_honey", slot_item_urban_demand, 5),
(item_set_slot, "itm_honey", slot_item_rural_demand, 5),
(item_set_slot, "itm_honey", slot_item_desert_demand, 5),
(item_set_slot, "itm_honey", slot_item_production_slot, slot_center_apiaries),
(item_set_slot, "itm_honey", slot_item_production_string, "str_hives"),
(item_set_slot, "itm_cabbages", slot_item_urban_demand, 7),
(item_set_slot, "itm_cabbages", slot_item_rural_demand, 7),
(item_set_slot, "itm_cabbages", slot_item_desert_demand, 7),
(item_set_slot, "itm_cabbages", slot_item_production_slot, slot_center_household_gardens),
(item_set_slot, "itm_cabbages", slot_item_production_string, "str_gardens"),
(item_set_slot, "itm_raw_date_fruit", slot_item_urban_demand, 7),
(item_set_slot, "itm_raw_date_fruit", slot_item_rural_demand, 7),
(item_set_slot, "itm_raw_date_fruit", slot_item_desert_demand, 7),
(item_set_slot, "itm_raw_date_fruit", slot_item_production_slot, slot_center_household_gardens),
(item_set_slot, "itm_raw_date_fruit", slot_item_production_string, "str_acres_oasis"),