@@ -107,16 +107,27 @@ bool ModifierManager::setup_modifier_effects() {
107107 bool ret = true ;
108108
109109 using enum ModifierEffect::format_t ;
110+ /* Tech/inventions only*/
111+ ret &= add_modifier_effect (" cb_creation_speed" , true );
112+ ret &= add_modifier_effect (" combat_width" , false );
113+ ret &= add_modifier_effect (" plurality" , true , PERCENTAGE_DECIMAL);
114+ ret &= add_modifier_effect (" pop_growth" , true );
115+ ret &= add_modifier_effect (" regular_experience_level" , true , RAW_DECIMAL);
116+ ret &= add_modifier_effect (" reinforce_rate" , true );
117+ ret &= add_modifier_effect (" seperatism" , false ); // paradox typo
118+ ret &= add_modifier_effect (" shared_prestige" , true , RAW_DECIMAL);
119+ ret &= add_modifier_effect (" tax_eff" , true );
110120
111121 /* Country Modifier Effects */
112122 ret &= add_modifier_effect (" administrative_efficiency" , true );
113123 ret &= add_modifier_effect (" administrative_efficiency_modifier" , true );
124+ ret &= add_modifier_effect (" administrative_multiplier" , true );
114125 ret &= add_modifier_effect (" artisan_input" , false );
115126 ret &= add_modifier_effect (" artisan_output" , true );
116127 ret &= add_modifier_effect (" artisan_throughput" , true );
117128 ret &= add_modifier_effect (" badboy" , false , RAW_DECIMAL);
118- ret &= add_modifier_effect (" cb_creation_speed" , true ); // seemingly works the same way as cb_generation_speed_modifier
119129 ret &= add_modifier_effect (" cb_generation_speed_modifier" , true );
130+ ret &= add_modifier_effect (" civilization_progress_modifier" , true );
120131 ret &= add_modifier_effect (" colonial_life_rating" , false , INT);
121132 ret &= add_modifier_effect (" colonial_migration" , true );
122133 ret &= add_modifier_effect (" colonial_points" , true , INT);
@@ -137,7 +148,6 @@ bool ModifierManager::setup_modifier_effects() {
137148 ret &= add_modifier_effect (" global_assimilation_rate" , true );
138149 ret &= add_modifier_effect (" global_immigrant_attract" , true );
139150 ret &= add_modifier_effect (" global_pop_consciousness_modifier" , false , RAW_DECIMAL);
140- ret &= add_modifier_effect (" global_pop_growth" , true );
141151 ret &= add_modifier_effect (" global_pop_militancy_modifier" , false , RAW_DECIMAL);
142152 ret &= add_modifier_effect (" global_population_growth" , true );
143153 ret &= add_modifier_effect (" goods_demand" , false );
@@ -167,12 +177,10 @@ bool ModifierManager::setup_modifier_effects() {
167177 ret &= add_modifier_effect (" min_social_spending" , true );
168178 ret &= add_modifier_effect (" min_tariff" , true );
169179 ret &= add_modifier_effect (" min_tax" , true );
180+ ret &= add_modifier_effect (" minimum_wage" , true );
170181 ret &= add_modifier_effect (" mobilisation_economy_impact" , false );
171- ret &= add_modifier_effect (" mobilisation_impact" , false );
172182 ret &= add_modifier_effect (" mobilisation_size" , true );
173- ret &= add_modifier_effect (" mobilization_economy_impact" , false );
174183 ret &= add_modifier_effect (" mobilization_impact" , false );
175- ret &= add_modifier_effect (" mobilization_size" , true );
176184 ret &= add_modifier_effect (" naval_attack_modifier" , true );
177185 ret &= add_modifier_effect (" naval_attrition" , false );
178186 ret &= add_modifier_effect (" naval_defense_modifier" , true );
@@ -183,50 +191,36 @@ bool ModifierManager::setup_modifier_effects() {
183191 ret &= add_modifier_effect (" org_regain" , true );
184192 ret &= add_modifier_effect (" pension_level" , true );
185193 ret &= add_modifier_effect (" permanent_prestige" , true , RAW_DECIMAL);
186- ret &= add_modifier_effect (" plurality" , true , PERCENTAGE_DECIMAL);
187194 ret &= add_modifier_effect (" political_reform_desire" , false );
188- ret &= add_modifier_effect (" pop_growth " , true );
195+ ret &= add_modifier_effect (" poor_savings_modifier " , true );
189196 ret &= add_modifier_effect (" prestige" , true , RAW_DECIMAL);
190- ret &= add_modifier_effect (" regular_experience_level" , true , RAW_DECIMAL);
191- ret &= add_modifier_effect (" reinforce_rate" , true );
197+ ret &= add_modifier_effect (" reinforce_speed" , true );
192198 ret &= add_modifier_effect (" research_points" , true , RAW_DECIMAL);
193199 ret &= add_modifier_effect (" research_points_modifier" , true );
194200 ret &= add_modifier_effect (" research_points_on_conquer" , true );
195201 ret &= add_modifier_effect (" rgo_output" , true );
196- ret &= add_modifier_effect (" RGO_output" , true );
197- ret &= add_modifier_effect (" rgo_size" , true );
198- ret &= add_modifier_effect (" RGO_size" , true );
199202 ret &= add_modifier_effect (" rgo_throughput" , true );
200- ret &= add_modifier_effect (" RGO_throughput" , true );
201203 ret &= add_modifier_effect (" ruling_party_support" , true );
202- ret &= add_modifier_effect (" shared_prestige" , true , RAW_DECIMAL);
203204 ret &= add_modifier_effect (" social_reform_desire" , false );
204205 ret &= add_modifier_effect (" soldier_to_pop_loss" , true );
205- ret &= add_modifier_effect (" seperatism" , false ); // paradox typo
206206 ret &= add_modifier_effect (" supply_consumption" , false );
207207 ret &= add_modifier_effect (" supply_range" , true );
208208 ret &= add_modifier_effect (" suppression_points_modifier" , true );
209209 ret &= add_modifier_effect (" tariff_efficiency_modifier" , true );
210- ret &= add_modifier_effect (" tax_eff" , true );
211210 ret &= add_modifier_effect (" tax_efficiency" , true );
211+ ret &= add_modifier_effect (" unemployment_benefit" , true );
212212 ret &= add_modifier_effect (" unit_recruitment_time" , false );
213- ret &= add_modifier_effect (" unit_start_experience" , true , RAW_DECIMAL);
214213 ret &= add_modifier_effect (" war_exhaustion" , false );
215- ret &= add_modifier_effect (" civilization_progress_modifier" , true );
216- ret &= add_modifier_effect (" administrative_multiplier" , true );
217- ret &= add_modifier_effect (" unemployment_benefit" , true );
218- ret &= add_modifier_effect (" minimum_wage" , true );
219- ret &= add_modifier_effect (" war_exhaustion_effect" , false );
220- ret &= add_modifier_effect (" reinforce_speed" , true );
214+
215+ /* State only*/
216+ ret &= add_modifier_effect (" flashpoint_tension" , true );
217+ ret &= add_modifier_effect (" railroads" , true ); // capitalist likelihood for railroads vs factories
221218
222219 /* Province Modifier Effects */
223220 ret &= add_modifier_effect (" assimilation_rate" , true );
224221 ret &= add_modifier_effect (" boost_strongest_party" , false );
225222 ret &= add_modifier_effect (" farm_rgo_eff" , true );
226- ret &= add_modifier_effect (" farm_RGO_eff" , true );
227223 ret &= add_modifier_effect (" farm_rgo_size" , true );
228- ret &= add_modifier_effect (" farm_RGO_size" , true );
229- ret &= add_modifier_effect (" flashpoint_tension" , false );
230224 ret &= add_modifier_effect (" immigrant_attract" , true );
231225 ret &= add_modifier_effect (" immigrant_push" , false );
232226 ret &= add_modifier_effect (" life_rating" , true );
@@ -238,28 +232,22 @@ bool ModifierManager::setup_modifier_effects() {
238232 ret &= add_modifier_effect (" local_factory_throughput" , true );
239233 ret &= add_modifier_effect (" local_repair" , true );
240234 ret &= add_modifier_effect (" local_rgo_output" , true );
241- ret &= add_modifier_effect (" local_RGO_output" , true );
242235 ret &= add_modifier_effect (" local_rgo_throughput" , true );
243- ret &= add_modifier_effect (" local_RGO_throughput" , true );
244236 ret &= add_modifier_effect (" local_ruling_party_support" , true );
245237 ret &= add_modifier_effect (" local_ship_build" , false );
246238 ret &= add_modifier_effect (" max_attrition" , false , RAW_DECIMAL);
247239 ret &= add_modifier_effect (" mine_rgo_eff" , true );
248- ret &= add_modifier_effect (" mine_RGO_eff" , true );
249240 ret &= add_modifier_effect (" mine_rgo_size" , true );
250- ret &= add_modifier_effect (" mine_RGO_size" , true );
251241 ret &= add_modifier_effect (" movement_cost" , false );
252242 ret &= add_modifier_effect (" number_of_voters" , false );
253243 ret &= add_modifier_effect (" pop_consciousness_modifier" , false , RAW_DECIMAL);
254244 ret &= add_modifier_effect (" pop_militancy_modifier" , false , RAW_DECIMAL);
255245 ret &= add_modifier_effect (" population_growth" , true );
256- ret &= add_modifier_effect (" railroads" , true ); // capitalist likelihood for railroads vs factories
257246 ret &= add_modifier_effect (" supply_limit" , true , RAW_DECIMAL);
258247
259248 /* Military Modifier Effects */
260249 ret &= add_modifier_effect (" attack" , true , INT);
261250 ret &= add_modifier_effect (" attrition" , false , RAW_DECIMAL);
262- ret &= add_modifier_effect (" combat_width" , false );
263251 ret &= add_modifier_effect (" defence" , true , INT);
264252 ret &= add_modifier_effect (" experience" , true );
265253 ret &= add_modifier_effect (" morale" , true );
@@ -280,6 +268,12 @@ bool ModifierManager::register_complex_modifier(std::string_view identifier) {
280268 }
281269}
282270
271+ std::string ModifierManager::get_flat_identifier (
272+ const std::string_view complex_modifier_identifier, const std::string_view variant_identifier
273+ ) {
274+ return StringUtils::append_string_views (complex_modifier_identifier, " " , variant_identifier);
275+ }
276+
283277bool ModifierManager::add_event_modifier (std::string_view identifier, ModifierValue&& values, Modifier::icon_t icon) {
284278 if (identifier.empty ()) {
285279 Logger::error (" Invalid event modifier effect identifier - empty!" );
@@ -370,17 +364,31 @@ bool ModifierManager::parse_scripts(GameManager const& game_manager) {
370364key_value_callback_t ModifierManager::_modifier_effect_callback (
371365 ModifierValue& modifier, key_value_callback_t default_callback, ModifierEffectValidator auto effect_validator
372366) const {
373- const auto add_modifier_cb = [this , &modifier, effect_validator](ModifierEffect const * effect, ast::NodeCPtr value) -> bool {
367+ const auto add_modifier_cb = [this , &modifier,
368+ effect_validator](ModifierEffect const * effect, ast::NodeCPtr value) -> bool {
374369 if (effect_validator (*effect)) {
370+
371+ static const case_insensitive_string_set_t no_effect_modifiers {
372+ " boost_strongest_party" , " poor_savings_modifier" , " poor_life_needs" ,
373+ " poor_everyday_needs" , " poor_luxury_needs" , " middle_life_needs" ,
374+ " middle_everyday_needs" , " middle_luxury_needs" , " rich_life_needs" ,
375+ " rich_everyday_needs" , " rich_luxury_needs" , " local_artisan_input" ,
376+ " local_artisan_throughput" , " local_artisan_output" , " artisan_input" ,
377+ " artisan_throughput" , " artisan_output" , " import_cost"
378+ };
379+ if (no_effect_modifiers.contains (effect->get_identifier ())) {
380+ Logger::warning (" This modifier does nothing: " , effect->get_identifier ());
381+ }
375382 return expect_fixed_point (map_callback (modifier.values , effect))(value);
376383 } else {
377384 Logger::error (" Failed to validate modifier effect: " , effect->get_identifier ());
378385 return false ;
379386 }
380387 };
381388
382- const auto add_flattened_modifier_cb = [this , add_modifier_cb](std::string_view prefix, std::string_view key, ast::NodeCPtr value) -> bool {
383- const std::string flat_identifier = StringUtils::append_string_views (prefix, " _" , key);
389+ const auto add_flattened_modifier_cb =
390+ [this , add_modifier_cb](std::string_view prefix, std::string_view key, ast::NodeCPtr value) -> bool {
391+ const std::string flat_identifier = get_flat_identifier (prefix, key);
384392 ModifierEffect const * effect = get_modifier_effect_by_identifier (flat_identifier);
385393 if (effect != nullptr ) {
386394 return add_modifier_cb (effect, value);
@@ -407,6 +415,9 @@ key_value_callback_t ModifierManager::_modifier_effect_callback(
407415 } else {
408416 return expect_dictionary (std::bind_front (add_flattened_modifier_cb, key))(value);
409417 }
418+ } else if (key == " war_exhaustion_effect" ) {
419+ Logger::warning (" war_exhaustion_effect does nothing (vanilla issues have it)." );
420+ return true ;
410421 } else {
411422 return default_callback (key, value);
412423 }
0 commit comments