Project Alice
Loading...
Searching...
No Matches
modifiers.hpp
Go to the documentation of this file.
1#pragma once
2#include <stdint.h>
3#include "date_interface.hpp"
4#include "dcon_generated.hpp"
5
6namespace sys {
7
8// cat t.cpp | awk '{print $1 $6 ", " $5 ", " $2 " " $3 " " $4}' >t2.cpp
9#define MOD_PROV_LIST \
10 MOD_LIST_ELEMENT(0, supply_limit, true, modifier_display_type::integer, "modifier_supply_limit") \
11 MOD_LIST_ELEMENT(1, attrition, false, modifier_display_type::percent, "modifier_attrition") \
12 MOD_LIST_ELEMENT(2, max_attrition, false, modifier_display_type::integer, "modifier_max_attrition") \
13 MOD_LIST_ELEMENT(3, local_ruling_party_support, true, modifier_display_type::percent, "modifier_ruling_party_support") \
14 MOD_LIST_ELEMENT(4, poor_life_needs, false, modifier_display_type::percent, "modifier_poor_life_needs") \
15 MOD_LIST_ELEMENT(5, rich_life_needs, false, modifier_display_type::percent, "modifier_rich_life_needs") \
16 MOD_LIST_ELEMENT(6, middle_life_needs, false, modifier_display_type::percent, "modifier_middle_life_needs") \
17 MOD_LIST_ELEMENT(7, poor_everyday_needs, false, modifier_display_type::percent, "modifier_poor_everyday_needs") \
18 MOD_LIST_ELEMENT(8, rich_everyday_needs, false, modifier_display_type::percent, "modifier_rich_everyday_needs") \
19 MOD_LIST_ELEMENT(9, middle_everyday_needs, false, modifier_display_type::percent, "modifier_middle_everyday_needs") \
20 MOD_LIST_ELEMENT(10, poor_luxury_needs, false, modifier_display_type::percent, "modifier_poor_luxury_needs") \
21 MOD_LIST_ELEMENT(11, middle_luxury_needs, false, modifier_display_type::percent, "modifier_middle_luxury_needs") \
22 MOD_LIST_ELEMENT(12, rich_luxury_needs, false, modifier_display_type::percent, "modifier_rich_luxury_needs") \
23 MOD_LIST_ELEMENT(13, population_growth, true, modifier_display_type::fp_three_places, "modifier_population_growth") \
24 MOD_LIST_ELEMENT(14, local_factory_input, false, modifier_display_type::percent, "modifier_factory_input") \
25 MOD_LIST_ELEMENT(15, local_factory_output, true, modifier_display_type::percent, "modifier_factory_output") \
26 MOD_LIST_ELEMENT(16, local_factory_throughput, true, modifier_display_type::percent, "modifier_factory_throughput") \
27 MOD_LIST_ELEMENT(17, local_rgo_input, true, modifier_display_type::percent, "modifier_rgo_input") \
28 MOD_LIST_ELEMENT(18, local_rgo_output, true, modifier_display_type::percent, "modifier_rgo_output") \
29 MOD_LIST_ELEMENT(19, local_rgo_throughput, true, modifier_display_type::percent, "modifier_rgo_throughput") \
30 MOD_LIST_ELEMENT(20, local_artisan_input, false, modifier_display_type::percent, "modifier_artisan_input") \
31 MOD_LIST_ELEMENT(21, local_artisan_output, true, modifier_display_type::percent, "modifier_artisan_output") \
32 MOD_LIST_ELEMENT(22, local_artisan_throughput, true, modifier_display_type::percent, "modifier_artisan_throughput") \
33 MOD_LIST_ELEMENT(23, number_of_voters, true, modifier_display_type::percent, "modifier_number_of_voters") \
34 MOD_LIST_ELEMENT(24, goods_demand, true, modifier_display_type::percent, "modifier_goods_demand") \
35 MOD_LIST_ELEMENT(25, assimilation_rate, true, modifier_display_type::percent, "modifier_assimilation_rate") \
36 MOD_LIST_ELEMENT(26, life_rating, true, modifier_display_type::percent, "modifier_life_rating") \
37 MOD_LIST_ELEMENT(27, farm_rgo_eff, true, modifier_display_type::percent, "modifier_farm_efficiency") \
38 MOD_LIST_ELEMENT(28, mine_rgo_eff, true, modifier_display_type::percent, "modifier_mine_efficiency") \
39 MOD_LIST_ELEMENT(29, farm_rgo_size, true, modifier_display_type::percent, "modifier_farm_size") \
40 MOD_LIST_ELEMENT(30, mine_rgo_size, true, modifier_display_type::percent, "modifier_mine_size") \
41 MOD_LIST_ELEMENT(31, pop_militancy_modifier, false, modifier_display_type::fp_two_places, "modifier_pop_militancy_modifier") \
42 MOD_LIST_ELEMENT(32, pop_consciousness_modifier, true, modifier_display_type::fp_two_places, \
43 "modifier_pop_consciousness_modifier") \
44 MOD_LIST_ELEMENT(33, rich_income_modifier, true, modifier_display_type::percent, "modifier_rich_income_modifier") \
45 MOD_LIST_ELEMENT(34, middle_income_modifier, true, modifier_display_type::percent, "modifier_middle_income_modifier") \
46 MOD_LIST_ELEMENT(35, poor_income_modifier, true, modifier_display_type::percent, "modifier_poor_income_modifier") \
47 MOD_LIST_ELEMENT(36, boost_strongest_party, true, modifier_display_type::percent, "modifier_boost_strongest_party") \
48 MOD_LIST_ELEMENT(37, immigrant_attract, true, modifier_display_type::percent, "modifier_immigant_attract") \
49 MOD_LIST_ELEMENT(38, immigrant_push, true, modifier_display_type::percent, "modifier_immigant_push") \
50 MOD_LIST_ELEMENT(39, local_repair, true, modifier_display_type::percent, "modifier_local_repair") \
51 MOD_LIST_ELEMENT(40, local_ship_build, false, modifier_display_type::percent, "modifier_local_ship_build") \
52 MOD_LIST_ELEMENT(41, movement_cost, false, modifier_display_type::percent, "modifier_movement_cost") \
53 MOD_LIST_ELEMENT(42, defense, true, modifier_display_type::integer, "defence") \
54 MOD_LIST_ELEMENT(43, attack, true, modifier_display_type::integer, "attack") \
55 MOD_LIST_ELEMENT(44, combat_width, true, modifier_display_type::integer, "modifier_combat_width") \
56 MOD_LIST_ELEMENT(45, min_build_naval_base, false, modifier_display_type::integer, "naval_base_level") \
57 MOD_LIST_ELEMENT(46, min_build_railroad, false, modifier_display_type::integer, "railroad_level") \
58 MOD_LIST_ELEMENT(47, min_build_fort, false, modifier_display_type::integer, "fort_level") \
59 MOD_LIST_ELEMENT(48, min_build_bank, false, modifier_display_type::integer, "bank_level") \
60 MOD_LIST_ELEMENT(49, min_build_university, false, modifier_display_type::integer, "university_level") \
61 MOD_LIST_ELEMENT(50, conversion_rate, true, modifier_display_type::percent, "modifier_conversion_rate")
62#define MOD_PROV_LIST_COUNT 51
63
64#define MOD_NAT_LIST \
65 MOD_LIST_ELEMENT(0, war_exhaustion, false, modifier_display_type::fp_two_places, "war_exhaustion") \
66 MOD_LIST_ELEMENT(1, max_war_exhaustion, true, modifier_display_type::integer, "max_war_exhaustion") \
67 MOD_LIST_ELEMENT(2, leadership, true, modifier_display_type::integer, "leadership") \
68 MOD_LIST_ELEMENT(3, leadership_modifier, true, modifier_display_type::percent, "modifier_global_leadership_modifier") \
69 MOD_LIST_ELEMENT(4, supply_consumption, false, modifier_display_type::percent, "modifier_supply_consumption") \
70 MOD_LIST_ELEMENT(5, org_regain, true, modifier_display_type::percent, "modifier_org_regain") \
71 MOD_LIST_ELEMENT(6, reinforce_speed, true, modifier_display_type::percent, "modifier_reinforce_speed") \
72 MOD_LIST_ELEMENT(7, land_organisation, true, modifier_display_type::percent, "modifier_land_organisation") \
73 MOD_LIST_ELEMENT(8, naval_organisation, true, modifier_display_type::percent, "modifier_naval_organisation") \
74 MOD_LIST_ELEMENT(9, research_points, true, modifier_display_type::integer, "modifier_research_points") \
75 MOD_LIST_ELEMENT(10, research_points_modifier, true, modifier_display_type::percent, "modifier_research_points_modifier") \
76 MOD_LIST_ELEMENT(11, research_points_on_conquer, true, modifier_display_type::percent, "modifier_research_points_on_conquer") \
77 MOD_LIST_ELEMENT(12, import_cost, false, modifier_display_type::percent, "modifier_import_cost") \
78 MOD_LIST_ELEMENT(13, loan_interest, false, modifier_display_type::percent, "loan_interest_tech") \
79 MOD_LIST_ELEMENT(14, tax_efficiency, true, modifier_display_type::percent, "modifier_tax_efficiency") \
80 MOD_LIST_ELEMENT(15, min_tax, true, modifier_display_type::percent, "modifier_min_tax") \
81 MOD_LIST_ELEMENT(16, max_tax, true, modifier_display_type::percent, "modifier_max_tax") \
82 MOD_LIST_ELEMENT(17, min_military_spending, true, modifier_display_type::percent, "modifier_min_military_spending") \
83 MOD_LIST_ELEMENT(18, max_military_spending, true, modifier_display_type::percent, "modifier_max_military_spending") \
84 MOD_LIST_ELEMENT(19, min_social_spending, true, modifier_display_type::percent, "modifier_min_social_spending") \
85 MOD_LIST_ELEMENT(20, max_social_spending, true, modifier_display_type::percent, "modifier_max_social_spending") \
86 MOD_LIST_ELEMENT(21, factory_owner_cost, false, modifier_display_type::percent, "modifier_factory_owner_cost") \
87 MOD_LIST_ELEMENT(22, min_tariff, true, modifier_display_type::percent, "modifier_min_tariff") \
88 MOD_LIST_ELEMENT(23, max_tariff, true, modifier_display_type::percent, "modifier_max_tariff") \
89 MOD_LIST_ELEMENT(24, ruling_party_support, true, modifier_display_type::percent, "modifier_ruling_party_support") \
90 MOD_LIST_ELEMENT(25, rich_vote, true, modifier_display_type::percent, "modifier_rich_vote") \
91 MOD_LIST_ELEMENT(26, middle_vote, true, modifier_display_type::percent, "modifier_middle_vote") \
92 MOD_LIST_ELEMENT(27, poor_vote, true, modifier_display_type::percent, "modifier_poor_vote") \
93 MOD_LIST_ELEMENT(28, minimum_wage, true, modifier_display_type::percent, "modifier_minimun_wage") \
94 MOD_LIST_ELEMENT(29, factory_maintenance, false, modifier_display_type::percent, "modifier_factory_maintenance") \
95 MOD_LIST_ELEMENT(30, poor_life_needs, false, modifier_display_type::percent, "modifier_poor_life_needs") \
96 MOD_LIST_ELEMENT(31, rich_life_needs, false, modifier_display_type::percent, "modifier_rich_life_needs") \
97 MOD_LIST_ELEMENT(32, middle_life_needs, false, modifier_display_type::percent, "modifier_middle_life_needs") \
98 MOD_LIST_ELEMENT(33, poor_everyday_needs, false, modifier_display_type::percent, "modifier_poor_everyday_needs") \
99 MOD_LIST_ELEMENT(34, rich_everyday_needs, false, modifier_display_type::percent, "modifier_rich_everyday_needs") \
100 MOD_LIST_ELEMENT(35, middle_everyday_needs, false, modifier_display_type::percent, "modifier_middle_everyday_needs") \
101 MOD_LIST_ELEMENT(36, poor_luxury_needs, false, modifier_display_type::percent, "modifier_poor_luxury_needs") \
102 MOD_LIST_ELEMENT(37, middle_luxury_needs, false, modifier_display_type::percent, "modifier_middle_luxury_needs") \
103 MOD_LIST_ELEMENT(38, rich_luxury_needs, false, modifier_display_type::percent, "modifier_rich_luxury_needs") \
104 MOD_LIST_ELEMENT(39, unemployment_benefit, true, modifier_display_type::percent, "modifier_unemployment_benefit") \
105 MOD_LIST_ELEMENT(40, pension_level, true, modifier_display_type::percent, "modifier_pension_level") \
106 MOD_LIST_ELEMENT(41, factory_input, false, modifier_display_type::percent, "modifier_factory_input") \
107 MOD_LIST_ELEMENT(42, factory_output, true, modifier_display_type::percent, "modifier_factory_output") \
108 MOD_LIST_ELEMENT(43, factory_throughput, true, modifier_display_type::percent, "modifier_factory_throughput") \
109 MOD_LIST_ELEMENT(44, rgo_input, true, modifier_display_type::percent, "modifier_rgo_input") \
110 MOD_LIST_ELEMENT(45, rgo_output, true, modifier_display_type::percent, "modifier_rgo_output") \
111 MOD_LIST_ELEMENT(46, rgo_throughput, true, modifier_display_type::percent, "modifier_rgo_throughput") \
112 MOD_LIST_ELEMENT(47, artisan_input, false, modifier_display_type::percent, "modifier_artisan_input") \
113 MOD_LIST_ELEMENT(48, artisan_output, true, modifier_display_type::percent, "modifier_artisan_output") \
114 MOD_LIST_ELEMENT(49, artisan_throughput, true, modifier_display_type::percent, "modifier_artisan_throughput") \
115 MOD_LIST_ELEMENT(50, goods_demand, true, modifier_display_type::percent, "modifier_goods_demand") \
116 MOD_LIST_ELEMENT(51, badboy, false, modifier_display_type::fp_two_places, "modifier_badboy") \
117 MOD_LIST_ELEMENT(52, global_assimilation_rate, true, modifier_display_type::percent, "modifier_assimilation_rate") \
118 MOD_LIST_ELEMENT(53, prestige, true, modifier_display_type::percent, "modifier_prestige") \
119 MOD_LIST_ELEMENT(54, factory_cost, false, modifier_display_type::percent, "modifier_factory_cost") \
120 MOD_LIST_ELEMENT(55, farm_rgo_eff, true, modifier_display_type::percent, "tech_farm_output") \
121 MOD_LIST_ELEMENT(56, mine_rgo_eff, true, modifier_display_type::percent, "tech_mine_output") \
122 MOD_LIST_ELEMENT(57, farm_rgo_size, true, modifier_display_type::percent, "modifier_farm_rgo_size") \
123 MOD_LIST_ELEMENT(58, mine_rgo_size, true, modifier_display_type::percent, "modifier_mine_rgo_size") \
124 MOD_LIST_ELEMENT(59, issue_change_speed, true, modifier_display_type::percent, "modifier_issue_change_speed") \
125 MOD_LIST_ELEMENT(60, social_reform_desire, true, modifier_display_type::percent, "modifier_social_reform_desire") \
126 MOD_LIST_ELEMENT(61, political_reform_desire, true, modifier_display_type::percent, "modifier_political_reform_desire") \
127 MOD_LIST_ELEMENT(62, literacy_con_impact, true, modifier_display_type::percent, "modifier_literacy_con_impact") \
128 MOD_LIST_ELEMENT(63, rich_income_modifier, true, modifier_display_type::percent, "modifier_rich_income_modifier") \
129 MOD_LIST_ELEMENT(64, middle_income_modifier, true, modifier_display_type::percent, "modifier_middle_income_modifier") \
130 MOD_LIST_ELEMENT(65, poor_income_modifier, true, modifier_display_type::percent, "modifier_poor_income_modifier") \
131 MOD_LIST_ELEMENT(66, global_immigrant_attract, true, modifier_display_type::percent, "modifier_immigant_attract") \
132 MOD_LIST_ELEMENT(67, poor_savings_modifier, true, modifier_display_type::percent, "modifier_poor_savings_modifier") \
133 MOD_LIST_ELEMENT(68, influence_modifier, true, modifier_display_type::percent, "modifier_greatpower_influence_gain") \
134 MOD_LIST_ELEMENT(69, diplomatic_points_modifier, true, modifier_display_type::percent, "modifier_diplopoints_gain") \
135 MOD_LIST_ELEMENT(70, mobilization_size, true, modifier_display_type::percent, "modifier_mobilisation_size") \
136 MOD_LIST_ELEMENT(71, global_pop_militancy_modifier, false, modifier_display_type::fp_two_places, \
137 "modifier_global_pop_militancy_modifier") \
138 MOD_LIST_ELEMENT(72, global_pop_consciousness_modifier, true, modifier_display_type::fp_two_places, \
139 "modifier_global_pop_consciousness_modifier") \
140 MOD_LIST_ELEMENT(73, core_pop_militancy_modifier, false, modifier_display_type::fp_two_places, \
141 "modifier_core_pop_militancy_modifier") \
142 MOD_LIST_ELEMENT(74, core_pop_consciousness_modifier, true, modifier_display_type::fp_two_places, \
143 "modifier_core_pop_consciousness_modifier") \
144 MOD_LIST_ELEMENT(75, non_accepted_pop_militancy_modifier, false, modifier_display_type::fp_two_places, \
145 "modifier_non_accepted_pop_militancy_modifier") \
146 MOD_LIST_ELEMENT(76, non_accepted_pop_consciousness_modifier, true, modifier_display_type::fp_two_places, \
147 "modifier_non_accepted_pop_consciousness_modifier") \
148 MOD_LIST_ELEMENT(77, cb_generation_speed_modifier, true, modifier_display_type::percent, "cb_manufacture_tech") \
149 MOD_LIST_ELEMENT(78, mobilization_impact, true, modifier_display_type::percent, "modifier_mobilization_impact") \
150 MOD_LIST_ELEMENT(79, suppression_points_modifier, true, modifier_display_type::percent, "suppression_tech") \
151 MOD_LIST_ELEMENT(80, education_efficiency_modifier, true, modifier_display_type::percent, "modifier_education_efficiency") \
152 MOD_LIST_ELEMENT(81, civilization_progress_modifier, true, modifier_display_type::percent, "modifier_civilization_progress") \
153 MOD_LIST_ELEMENT(82, administrative_efficiency_modifier, true, modifier_display_type::percent, \
154 "modifier_administrative_efficiency") \
155 MOD_LIST_ELEMENT(83, land_unit_start_experience, true, modifier_display_type::percent, "modifier_land_unit_start_experience") \
156 MOD_LIST_ELEMENT(84, naval_unit_start_experience, true, modifier_display_type::percent, \
157 "modifier_naval_unit_start_experience") \
158 MOD_LIST_ELEMENT(85, naval_attack_modifier, true, modifier_display_type::percent, "modifier_naval_attack") \
159 MOD_LIST_ELEMENT(86, naval_defense_modifier, true, modifier_display_type::percent, "modifier_naval_defense") \
160 MOD_LIST_ELEMENT(87, land_attack_modifier, true, modifier_display_type::percent, "modifier_land_attack") \
161 MOD_LIST_ELEMENT(88, land_defense_modifier, true, modifier_display_type::percent, "modifier_land_defense") \
162 MOD_LIST_ELEMENT(89, tariff_efficiency_modifier, true, modifier_display_type::percent, "modifier_tariff_efficiency") \
163 MOD_LIST_ELEMENT(90, max_loan_modifier, true, modifier_display_type::percent, "modifier_max_loan_amount") \
164 MOD_LIST_ELEMENT(91, unciv_economic_modifier, false, modifier_display_type::percent, "modifier_unciv_economic") \
165 MOD_LIST_ELEMENT(92, unciv_military_modifier, false, modifier_display_type::percent, "modifier_unciv_military") \
166 MOD_LIST_ELEMENT(93, self_unciv_economic_modifier, false, modifier_display_type::percent, "modifier_self_unciv_economic") \
167 MOD_LIST_ELEMENT(94, self_unciv_military_modifier, false, modifier_display_type::percent, "modifier_self_unciv_military") \
168 MOD_LIST_ELEMENT(95, commerce_tech_research_bonus, true, modifier_display_type::percent, "commerce_tech_research_bonus") \
169 MOD_LIST_ELEMENT(96, army_tech_research_bonus, true, modifier_display_type::percent, "army_tech_research_bonus") \
170 MOD_LIST_ELEMENT(97, industry_tech_research_bonus, true, modifier_display_type::percent, "industry_tech_research_bonus") \
171 MOD_LIST_ELEMENT(98, navy_tech_research_bonus, true, modifier_display_type::percent, "navy_tech_research_bonus") \
172 MOD_LIST_ELEMENT(99, culture_tech_research_bonus, true, modifier_display_type::percent, "culture_tech_research_bonus") \
173 MOD_LIST_ELEMENT(100, supply_limit, true, modifier_display_type::percent, "supply_limit_tech") \
174 MOD_LIST_ELEMENT(101, colonial_migration, true, modifier_display_type::percent, "colonial_migration_tech") \
175 MOD_LIST_ELEMENT(102, max_national_focus, true, modifier_display_type::integer, "tech_max_focus") \
176 MOD_LIST_ELEMENT(103, education_efficiency, true, modifier_display_type::percent, "edu_eff_tech") \
177 MOD_LIST_ELEMENT(104, reinforce_rate, true, modifier_display_type::percent, "reinforce_tech") \
178 MOD_LIST_ELEMENT(105, influence, true, modifier_display_type::percent, "tech_gp_influence") \
179 MOD_LIST_ELEMENT(106, dig_in_cap, true, modifier_display_type::integer, "digin_from_tech") \
180 MOD_LIST_ELEMENT(107, combat_width, false, modifier_display_type::integer, "combat_width_tech") \
181 MOD_LIST_ELEMENT(108, military_tactics, true, modifier_display_type::percent, "mil_tactics_tech") \
182 MOD_LIST_ELEMENT(109, supply_range, true, modifier_display_type::percent, "supply_range_tech") \
183 MOD_LIST_ELEMENT(110, regular_experience_level, true, modifier_display_type::integer, "regular_exp_tech") \
184 MOD_LIST_ELEMENT(111, soldier_to_pop_loss, true, modifier_display_type::percent, "soldier_to_pop_loss_tech") \
185 MOD_LIST_ELEMENT(112, naval_attrition, false, modifier_display_type::percent, "naval_attrition_tech") \
186 MOD_LIST_ELEMENT(113, land_attrition, false, modifier_display_type::percent, "land_attrition_tech") \
187 MOD_LIST_ELEMENT(114, pop_growth, true, modifier_display_type::fp_three_places, "tech_pop_growth") \
188 MOD_LIST_ELEMENT(115, colonial_life_rating, false, modifier_display_type::integer, "modifier_life_rating") \
189 MOD_LIST_ELEMENT(116, colonial_prestige, true, modifier_display_type::percent, "colonial_prestige_modifier_tech") \
190 MOD_LIST_ELEMENT(117, permanent_prestige, true, modifier_display_type::fp_two_places, "permanent_prestige_tech") \
191 MOD_LIST_ELEMENT(118, global_conversion_rate, true, modifier_display_type::percent, "modifier_conversion_rate") \
192 MOD_LIST_ELEMENT(119, min_domestic_investment, false, modifier_display_type::percent, "modifier_min_domestic_investment") \
193 MOD_LIST_ELEMENT(120, max_domestic_investment, true, modifier_display_type::percent, "modifier_max_domestic_investment") \
194 MOD_LIST_ELEMENT(121, military_theory_tech_research_bonus, true, modifier_display_type::percent, "military_theory_tech_research_bonus") \
195 MOD_LIST_ELEMENT(122, population_tech_research_bonus, true, modifier_display_type::percent, "population_tech_research_bonus") \
196 MOD_LIST_ELEMENT(123, diplomacy_tech_research_bonus, true, modifier_display_type::percent, "diplomacy_theory_tech_research_bonus") \
197 MOD_LIST_ELEMENT(124, flavor_tech_research_bonus, true, modifier_display_type::percent, "flavor_theory_tech_research_bonus") \
198 MOD_LIST_ELEMENT(125, seperatism, false, modifier_display_type::fp_two_places, "seperatism") \
199
200#define MOD_NAT_LIST_COUNT 126
201
202namespace provincial_mod_offsets {
203#define MOD_LIST_ELEMENT(num, name, green_is_negative, display_type, locale_name) \
204 constexpr inline dcon::provincial_modifier_value name{num};
206#undef MOD_LIST_ELEMENT
208} // namespace provincial_mod_offsets
209
210namespace national_mod_offsets {
211#define MOD_LIST_ELEMENT(num, name, green_is_negative, display_type, locale_name) \
212 constexpr inline dcon::national_modifier_value name{num};
214#undef MOD_LIST_ELEMENT
216} // namespace national_mod_offsets
217
219 static constexpr uint32_t modifier_definition_size = 22;
220
221 float values[modifier_definition_size] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
222 dcon::provincial_modifier_value offsets[modifier_definition_size] = {dcon::provincial_modifier_value{}};
223 uint16_t padding = 0;
224};
225static_assert(sizeof(provincial_modifier_definition) ==
229
231 static constexpr uint32_t modifier_definition_size = 22;
232
233 float values[modifier_definition_size] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
234 dcon::national_modifier_value offsets[modifier_definition_size] = {dcon::national_modifier_value{}};
235 uint16_t padding = 0;
236};
237static_assert(sizeof(national_modifier_definition) ==
241
243 float amount = 0.0f;
244 dcon::commodity_id type;
245 uint8_t padding[3] = {0};
246};
247static_assert(sizeof(commodity_modifier) ==
251
253 int32_t build_time = 0;
255 float maximum_speed = 0.0f;
256 float defence_or_hull = 0.0f;
258 float supply_consumption = 0.0f;
259 float support = 0.0f;
263
264 void operator+=(unit_variable_stats const& other) {
265 build_time += other.build_time;
266 default_organisation += other.default_organisation;
267 maximum_speed += other.maximum_speed;
268 defence_or_hull += other.defence_or_hull;
269 attack_or_gun_power += other.attack_or_gun_power;
270 supply_consumption += other.supply_consumption;
271 support += other.support;
272 siege_or_torpedo_attack += other.siege_or_torpedo_attack;
273 reconnaissance_or_fire_range += other.reconnaissance_or_fire_range;
274 discipline_or_evasion += other.discipline_or_evasion;
275 }
276 void operator-=(unit_variable_stats const& other) {
277 build_time -= other.build_time;
278 default_organisation -= other.default_organisation;
279 maximum_speed -= other.maximum_speed;
280 defence_or_hull -= other.defence_or_hull;
281 attack_or_gun_power -= other.attack_or_gun_power;
282 supply_consumption -= other.supply_consumption;
283 support -= other.support;
284 siege_or_torpedo_attack -= other.siege_or_torpedo_attack;
285 reconnaissance_or_fire_range -= other.reconnaissance_or_fire_range;
286 discipline_or_evasion -= other.discipline_or_evasion;
287 }
288};
289static_assert(sizeof(unit_variable_stats) ==
300
302 dcon::unit_type_id type;
303 uint8_t padding[3] = { 0 };
304};
305static_assert(sizeof(unit_modifier) ==
306 sizeof(unit_variable_stats)
307 + sizeof(unit_modifier::type)
308 + sizeof(unit_modifier::padding));
309
311 float amount = 0.0f; //4
312 dcon::rebel_type_id type; //1 - no type set = all rebels
313 uint8_t padding[2] = { 0, 0 };
314};
315static_assert(sizeof(rebel_org_modifier) ==
319
322 dcon::modifier_id mod_id;
323};
324static_assert(sizeof(dated_modifier) ==
326 + sizeof(dated_modifier::mod_id));
327
328// restores values after loading a save
330
332void update_single_nation_modifiers(sys::state& state, dcon::nation_id n);
333
334void add_modifier_to_nation(sys::state& state, dcon::nation_id target_nation, dcon::modifier_id mod_id,
335 sys::date expiration); // default construct date for no expiration
336void add_modifier_to_province(sys::state& state, dcon::province_id target_prov, dcon::modifier_id mod_id,
337 sys::date expiration); // default construct date for no expiration
338void remove_modifier_from_nation(sys::state& state, dcon::nation_id target_nation, dcon::modifier_id mod_id);
339void remove_modifier_from_province(sys::state& state, dcon::province_id target_prov, dcon::modifier_id mod_id);
340void remove_expired_modifiers_from_nation(sys::state& state, dcon::nation_id target_nation);
341void remove_expired_modifiers_from_province(sys::state& state, dcon::province_id target_prov);
342
343void toggle_modifier_from_province(sys::state& state, dcon::province_id target_prov, dcon::modifier_id mod_id, sys::date expiration);
344
345} // namespace sys
#define MOD_PROV_LIST_COUNT
Definition: modifiers.hpp:62
#define MOD_NAT_LIST
Definition: modifiers.hpp:64
#define MOD_NAT_LIST_COUNT
Definition: modifiers.hpp:200
#define MOD_PROV_LIST
Definition: modifiers.hpp:9
MOD_NAT_LIST constexpr uint32_t count
Definition: modifiers.hpp:215
MOD_PROV_LIST constexpr uint32_t count
Definition: modifiers.hpp:207
Definition: constants.hpp:4
void toggle_modifier_from_province(sys::state &state, dcon::province_id target_prov, dcon::modifier_id mod_id, sys::date expiration)
Definition: modifiers.cpp:109
void remove_expired_modifiers_from_nation(sys::state &state, dcon::nation_id target_nation)
void remove_modifier_from_nation(sys::state &state, dcon::nation_id target_nation, dcon::modifier_id mod_id)
Definition: modifiers.cpp:87
void update_single_nation_modifiers(sys::state &state, dcon::nation_id n)
Definition: modifiers.cpp:426
void repopulate_modifier_effects(sys::state &state)
Definition: modifiers.cpp:653
void update_modifier_effects(sys::state &state)
Definition: modifiers.cpp:661
void add_modifier_to_nation(sys::state &state, dcon::nation_id target_nation, dcon::modifier_id mod_id, sys::date expiration)
Definition: modifiers.cpp:63
void add_modifier_to_province(sys::state &state, dcon::province_id target_prov, dcon::modifier_id mod_id, sys::date expiration)
Definition: modifiers.cpp:75
void remove_expired_modifiers_from_province(sys::state &state, dcon::province_id target_prov)
void remove_modifier_from_province(sys::state &state, dcon::province_id target_prov, dcon::modifier_id mod_id)
Definition: modifiers.cpp:98
uint uint32_t
uchar uint8_t
dcon::commodity_id type
Definition: modifiers.hpp:244
sys::date expiration
Definition: modifiers.hpp:321
dcon::modifier_id mod_id
Definition: modifiers.hpp:322
float values[modifier_definition_size]
Definition: modifiers.hpp:233
dcon::national_modifier_value offsets[modifier_definition_size]
Definition: modifiers.hpp:234
static constexpr uint32_t modifier_definition_size
Definition: modifiers.hpp:231
float values[modifier_definition_size]
Definition: modifiers.hpp:221
static constexpr uint32_t modifier_definition_size
Definition: modifiers.hpp:219
dcon::provincial_modifier_value offsets[modifier_definition_size]
Definition: modifiers.hpp:222
dcon::rebel_type_id type
Definition: modifiers.hpp:312
dcon::unit_type_id type
Definition: modifiers.hpp:302
uint8_t padding[3]
Definition: modifiers.hpp:303
void operator-=(unit_variable_stats const &other)
Definition: modifiers.hpp:276
void operator+=(unit_variable_stats const &other)
Definition: modifiers.hpp:264