on_actions = { #ROOT is new controller #FROM is old controller #FROM.FROM is state ID on_state_control_changed = { effect = { if = { limit = { FROM.FROM = { is_core_of = SOV } FROM = { tag = SOV } } SOV = { set_country_flag = achievement_lost_state } } } effect = { if = { limit = { FROM.FROM = { is_core_of = GER NOT = { #these two cores are given to germany in the Danzig or War event, but the states are not transfered immediately state = 85 state = 807 state = 8 #Luxembourg & Alsace state = 28 } } has_global_flag = achievement_france_surrender NOT = { tag = SOV } NOT = { tag = GER }#in case Germany recaptures a state } set_global_flag = GER_lost_core_state } } effect = { IF = { limit = { FROM.FROM = { state = 742 NOT = { has_state_flag = dushanbe_flag } } OR = { ROOT = { original_tag = TAJ } ROOT = { original_tag = BUK } } } 742 = { set_state_name = SOV_Dushanbe set_state_flag = dushanbe_flag } set_province_name = { id = 1384 name = SOV_Dushanbe } } if = { limit = { FROM.FROM = { state = 85 } } 85 = { POL_remove_danzig_effect = yes } if = { limit = { ROOT = { OR = { original_tag = GER original_tag = DNZ } } } 85 = { reset_state_name = yes } reset_province_name = 362 } if = { limit = { ROOT = { original_tag = POL } } 85 = { set_state_name = "Gdańsk" } set_province_name = { id = 362 name = "Gdańsk" } } } if = { limit = { divisions_in_state = { state = FROM.FROM size > 0 } FROM.FROM = { NOT = { AND = { has_state_flag = already_sabotaged_flag is_core_of = controller # Should solve most instances of peaceful annexation } } } FROM = { original_tag = POL has_completed_focus = POL_sabotage_polish_industry NOT = { has_country_flag = GER_sent_annex_proposal_flag # To solve GER European Confederation } } } FROM.FROM = { set_state_flag = poland_state_withdrawn state_event = { id = poland.23 trigger_for = controller } } } if = { limit = { FROM.FROM = { state = 119 } } if = { limit = { ROOT = { original_tag = IRE } } set_province_name = { id = 385 name = "Derry" } } if = { limit = { ROOT = { original_tag = ENG } } reset_province_name = 385 } if = { limit = { ROOT = { original_tag = NIR } } random_list = { #Difficult to say if an independent Northern Ireland would call it Derry or Londonderry, let's let the dice gods decide. 1 = { set_province_name = { id = 385 name = "Derry" } modifier = { factor = 0 is_subject_of = ENG } } 1 = { reset_province_name = 385 modifier = { factor = 0 is_subject_of = IRE } } } } } } #SOVIET - If Death to Invaders Propaganda Campaign is active, manage the appropriate state modifier effect = { if = { limit = { has_global_flag = SOV_propaganda_death_to_invaders_active_flag FROM.FROM = { is_core_of = SOV } } if = { #If SOV is new controller, remove state modifier limit = { ROOT = { tag = SOV } FROM.FROM = { has_dynamic_modifier = { modifier = SOV_invaders_must_die } } } FROM.FROM = { remove_dynamic_modifier = { modifier = SOV_invaders_must_die } } } else_if = { #If SOV lost the state, add state modifier limit = { FROM = { tag = SOV } ROOT = { has_war_with = SOV } } FROM.FROM = { add_dynamic_modifier = { modifier = SOV_invaders_must_die } } } } } #SOVIET - Clean other state modifiers when Soviets lose control over the state effect = { if = { limit = { FROM.FROM = { is_core_of = SOV } ROOT = { NOT = { tag = SOV } } } if = { #SOV_defend_moscow limit = { FROM.FROM = { has_dynamic_modifier = { modifier = SOV_defend_moscow } } } FROM.FROM = { remove_dynamic_modifier = { modifier = SOV_defend_moscow } } } if = { #SOV_increased_metals_production limit = { FROM.FROM = { has_dynamic_modifier = { modifier = SOV_increased_metals_production } } } FROM.FROM = { remove_dynamic_modifier = { modifier = SOV_increased_metals_production } } } if = { #SOV_seraya_loshad_battery limit = { FROM.FROM = { has_dynamic_modifier = { modifier = SOV_seraya_loshad_battery } } } FROM.FROM = { remove_dynamic_modifier = { modifier = SOV_seraya_loshad_battery } } } if = { #SOV_krasnaya_gorka_battery limit = { FROM.FROM = { has_dynamic_modifier = { modifier = SOV_krasnaya_gorka_battery } } } FROM.FROM = { remove_dynamic_modifier = { modifier = SOV_krasnaya_gorka_battery } } } if = { #SOV_armored_battery_35 limit = { FROM.FROM = { has_dynamic_modifier = { modifier = SOV_armored_battery_35 } } } FROM.FROM = { remove_dynamic_modifier = { modifier = SOV_armored_battery_35 } } } if = { #SOV_factory_worker_militias_raised limit = { FROM.FROM = { has_dynamic_modifier = { modifier = SOV_factory_worker_militias_raised } } } FROM.FROM = { remove_dynamic_modifier = { modifier = SOV_factory_worker_militias_raised } } } if = { #SOV_civilian_labor_in_defense_mod limit = { FROM.FROM = { has_dynamic_modifier = { modifier = SOV_civilian_labor_in_defense_mod } } } FROM.FROM = { remove_dynamic_modifier = { modifier = SOV_civilian_labor_in_defense_mod } } } } } #ROOT is new controller #FROM is old controller #FROM.FROM is state ID #SOVIET CIVIL WAR effect = { if = { limit = { has_global_flag = SOV_soviet_civil_war check_variable = { SOV_civil_war_months > 1 } SOS = { surrender_progress < 0.85 } ROOT = { tag = SOV } FROM = { tag = SOS } FROM.FROM = { NOT = { has_state_flag = captured_by_opposition_flag } is_core_of = SOV } } FROM.FROM = { set_state_flag = captured_by_opposition_flag } # Only first capture random_list = { # Army Defections 10 = { modifier = { factor = 0 SOV = { has_country_flag = SOV_defections_army_flag } } modifier = { factor = 2 FROM.FROM = { check_variable = { state_strategic_value > 19 } } } SOV = { set_country_flag = SOV_defections_army_flag FROM.FROM = { set_variable = { SOV.SOV_defections_army_state = THIS.id } } country_event = { id = NSB_soviet_civil_war_common.125 hours = 1 } } } # Capture Stockpile 10 = { modifier = { factor = 0 SOV = { has_country_flag = SOV_stockpiles_flag } } SOV = { set_country_flag = SOV_stockpiles_flag FROM.FROM = { set_variable = { SOV.SOV_captured_stockpile_state = THIS.id } } country_event = { id = NSB_soviet_civil_war_common.126 hours = 1 } } } # Navy Defections 10 = { modifier = { factor = 0 SOV = { has_country_flag = SOV_defections_navy_flag } } modifier = { factor = 0 check_variable = { SOS.num_ships < 10 } # No point if number of ships too low } modifier = { factor = 0 FROM.FROM = { naval_base < 1 } # Only happening when capturing port areas } modifier = { factor = 4 FROM.FROM = { naval_base > 4 } # Very likely when capturing major port } SOV = { set_country_flag = SOV_defections_navy_flag FROM.FROM = { set_variable = { SOV.SOV_defections_navy_state = THIS.id } } country_event = { id = NSB_soviet_civil_war_common.127 hours = 1 } } } # Civilian Unrest 5 = { modifier = { factor = 0 SOV = { has_country_flag = SOV_civilian_unrest_flag } } modifier = { factor = 0 check_variable = { SOS.SOV_surrender_modifier < -0.8 } # don't win this way } SOV = { set_country_flag = SOV_civilian_unrest_flag FROM.FROM = { set_variable = { SOV.SOV_civilian_unrest_state = THIS.id } } country_event = { id = NSB_soviet_civil_war_common.128 hours = 1 } } } # No effect this time 20 = { modifier = { factor = 0 FROM.FROM = { check_variable = { state_strategic_value > 80 } } } modifier = { factor = 1.5 FROM.FROM = { check_variable = { state_strategic_value < 10 } } } modifier = { factor = 2 # Exiles need some more help I guess. SOV = { SOV_is_exiles = no } } } } } } #GERMANY - If Soviet Imports is active, remove it effect = { if = { limit = { FROM = { tag = GER } FROM.FROM = { has_dynamic_modifier = { modifier = SOV_soviet_imports } } } FROM.FROM = { remove_dynamic_modifier = { modifier = SOV_soviet_imports } } } } #SOVIET - Nikolay Kuznetsov becomes an operative (Ukrainian state occupied) effect = { #ROOT is new controller #FROM is old controller #FROM.FROM is state ID if = { limit = { has_dlc = "La Resistance" FROM.FROM = { is_core_of = UKR NOT = { is_owned_by = ROOT } } FROM = { original_tag = SOV has_government = communism } ROOT = { has_war_with = SOV } } FROM = { set_variable = { SOV_invader_of_ukraine = ROOT } #Store invader in SOV for loc purposes in the event below country_event = { id = NSB_soviet_great_patriotic_war.01 days = 10 random_days = 30 } } } } } #ROOT is winner #FROM gets annexed - This will also fire on_annex on_civil_war_end = { effect = { #Restore Baltic capitals if = { limit = { original_tag = LAT 808 = { is_capital = no } controls_state = 808 } set_capital = { state = 808 } } if = { limit = { original_tag = EST 812 = { is_capital = no } controls_state = 812 } set_capital = { state = 812 } } if = { limit = { original_tag = LIT 11 = { is_capital = no } 784 = { is_capital = no } OR = { controls_state = 11 controls_state = 784 } } if = { limit = { controls_state = 784 } set_capital = { state = 784 } } if = { limit = { controls_state = 11 } set_capital = { state = 11 } } } # After Soviet Communist Civil War if = { limit = { original_tag = SOV has_global_flag = SOV_soviet_civil_war } ROOT = { delete_unit_template_and_units = { division_template = "Opposition Partisan Brigade" disband = no } } IF = { limit = { SOV_is_left_opposition = yes } delete_unit_template_and_units = { division_template = "Trotskyist Workers' Militia" disband = no } delete_unit_template_and_units = { division_template = "Trotskyist Peasant Militia" disband = no } delete_unit_template_and_units = { division_template = "International Brigades" disband = no } } IF = { limit = { SOV_is_right_opposition = yes } delete_unit_template_and_units = { division_template = "Bukharinist Workers' Militia" disband = no } delete_unit_template_and_units = { division_template = "Bukharinist Peasant Militia" disband = no } delete_unit_template_and_units = { division_template = "Japanese Expeditionary Force" disband = no } } IF = { limit = { SOV_is_exiles = yes } delete_unit_template_and_units = { division_template = "Ruki" disband = no } delete_unit_template_and_units = { division_template = "Japanese Expeditionary Force" disband = no } } clr_global_flag = SOV_soviet_civil_war set_global_flag = SOV_soviet_civil_war_over IF = { limit = { ROOT = { NOT = { SOV_is_stalinist = yes } } } SOV = { country_event = { id = NSB_soviet_civil_war_common.001 days = 1 random_hours = 8 } } # Trigger the Post Civil War effects } } #Make Danzig demilitarised again if = { limit = { original_tag = POL NOT = { has_completed_focus = POL_ban_the_nazi_party } } 85 = { add_core_of = DNZ set_demilitarized_zone = yes add_dynamic_modifier = { modifier = international_city } } if = { limit = { has_completed_focus = POL_clamp_down_on_danzig } 85 = { remove_dynamic_modifier = { modifier = international_city } add_dynamic_modifier = { modifier = international_city_2 } force_enable_resistance = { clear = no occupier = POL occupied = DNZ } start_resistance = DNZ set_resistance = 40 set_compliance = 30 } } } if = { limit = { has_DLC = "No Step Back" is_baltic_country = yes NOT = { has_completed_focus = BALTIC_purge_of_our_own } } add_ideas = BALTIC_popular_resistance } # Give back POL focus tree to Peasants if they win the civil war. if = { limit = { original_tag = POL has_cosmetic_tag = POL_PEASANT FROM = { original_tag = POL } } delete_unit_template_and_units = { division_template = "Peasant Militia" } if = { limit = { has_focus_tree = generic_focus } load_focus_tree = { tree = polish_focus keep_completed = no } mark_focus_tree_layout_dirty = yes unlock_national_focus = POL_restore_the_sejm unlock_national_focus = POL_internationalism unlock_national_focus = POL_liberalism_focus } } # Give back POL focus tree to Sanation gov if they win the civil war against the peasants. if = { limit = { original_tag = POL has_government = neutrality NOT = { has_country_leader = { character = POL_edward_rydzsmigly ruling_only = yes } has_country_leader = { character = POL_walery_slawek ruling_only = yes } } has_focus_tree = generic_focus FROM = { original_tag = POL } } load_focus_tree = { tree = polish_focus keep_completed = no } mark_focus_tree_layout_dirty = yes complete_national_focus = POL_complete_april_constitution POL_sanation_left_opposition_remove = yes POL_sanation_right_opposition_remove = yes complete_national_focus = POL_polish_militarism complete_national_focus = POL_consolidate_sanation_government } # Give back POL focus tree to Sanation Right if they win the civil war. if = { limit = { original_tag = POL has_country_leader = { character = POL_edward_rydzsmigly ruling_only = yes } has_focus_tree = generic_focus FROM = { original_tag = POL } } load_focus_tree = { tree = polish_focus keep_completed = no } mark_focus_tree_layout_dirty = yes complete_national_focus = POL_complete_april_constitution POL_sanation_left_opposition_remove = yes POL_sanation_right_opposition_remove = yes complete_national_focus = POL_polish_militarism complete_national_focus = POL_consolidate_sanation_government complete_national_focus = POL_the_sanation_right complete_national_focus = POL_polish_revanchism complete_national_focus = POL_support_right_paramilitaries complete_national_focus = POL_second_man_of_the_state unlock_national_focus = POL_ozon } # Give back POL focus tree to Sanation Left if they win the civil war. if = { limit = { original_tag = POL has_country_leader = { character = POL_walery_slawek ruling_only = yes } has_focus_tree = generic_focus FROM = { original_tag = POL } } load_focus_tree = { tree = polish_focus keep_completed = no } mark_focus_tree_layout_dirty = yes complete_national_focus = POL_complete_april_constitution POL_sanation_left_opposition_remove = yes POL_sanation_right_opposition_remove = yes complete_national_focus = POL_polish_militarism complete_national_focus = POL_consolidate_sanation_government complete_national_focus = POL_the_sanation_left complete_national_focus = POL_modus_vivendi complete_national_focus = POL_draft_a_new_constitution complete_national_focus = POL_the_left_chairman complete_national_focus = POL_common_organization_of_society unlock_national_focus = POL_dissolve_the_bbwr } #Annex Belarus when the civil war ends if = { limit = { original_tag = BLR } set_global_flag = belarus_baltic_resolved if = { limit = { ROOT = { has_cosmetic_tag = BLR_baltic } } random_country = { limit = { is_baltic_country = yes has_country_flag = sponsored_belarus_flag } annex_country = { target = PREV transfer_troops = yes } every_state = { limit = { is_core_of = BLR } add_core_of = PREV } if = { limit = { NOT = { has_cosmetic_tag = BAL_UNIFIED } NOT = { has_cosmetic_tag = PLC_UNIFIED } } if = { limit = { original_tag = LIT } set_cosmetic_tag = LIT_belarus } if = { limit = { original_tag = LAT } set_cosmetic_tag = LAT_belarus } if = { limit = { original_tag = EST } set_cosmetic_tag = EST_belarus } } } } else = { SOV = { annex_country = { target = PREV transfer_troops = yes } } every_state = { limit = { is_core_of = BLR } add_core_of = SOV } } } #Puppet Lithuania/Romania when civil war ends if = { limit = { OR = { has_country_flag = POL_lithuanian_personal_union_flag has_country_flag = POL_romanian_personal_union_flag has_country_flag = POL_czech_personal_union_flag } POL = { is_subject = no has_government = neutrality } } POL = { set_autonomy = { target = PREV autonomy_state = autonomy_personal_union } } } #Puppet Poland when civil war ends if = { limit = { has_country_flag = LIT_poland_personal_union_flag LIT = { is_subject = no has_government = neutrality } } LIT = { set_autonomy = { target = PREV autonomy_state = autonomy_personal_union } } } if = { limit = { original_tag = LIT NOT = { has_focus_tree = lithuania_tree } has_dlc = "No Step Back" } load_focus_tree = { tree = lithuania_tree keep_completed = yes } if = { #Give Lithuania their focus tree back if the Iron Wolf win the civil war. limit = { has_government = fascism } if = { limit = { has_completed_focus = LIT_exile_voldemares } uncomplete_national_focus = { #Voldemares shouldn't exile himself focus = LIT_exile_voldemares uncomplete_children = yes } } if = { limit = { has_completed_focus = BALTIC_restore_workers_republic } uncomplete_national_focus = { focus = BALTIC_restore_workers_republic uncomplete_children = yes } } complete_national_focus = LIT_lithuanian_activist_front complete_national_focus = LIT_organize_the_iron_wolf complete_national_focus = LIT_lithuanian_youth complete_national_focus = LIT_unify_the_military } if = { #In case the old government defeats the Communists limit = { has_government = neutrality } if = { limit = { has_completed_focus = BALTIC_restore_workers_republic } uncomplete_national_focus = { focus = BALTIC_restore_workers_republic uncomplete_children = yes } } complete_national_focus = LIT_secure_a_loyal_cabinet } } if = { limit = { original_tag = EST NOT = { has_focus_tree = estonia_tree } has_dlc = "No Step Back" } load_focus_tree = { tree = estonia_tree keep_completed = yes } if = { #Give Estonia their focus tree back if the Vapsid win the civil war. limit = { has_government = fascism } if = { limit = { has_completed_focus = EST_era_of_silence } uncomplete_national_focus = { focus = EST_era_of_silence uncomplete_children = yes } } if = { limit = { has_completed_focus = BALTIC_restore_workers_republic } uncomplete_national_focus = { focus = BALTIC_restore_workers_republic uncomplete_children = yes } } unlock_national_focus = EST_rally_the_nation unlock_national_focus = EST_march_on_talinn } if = { #In case the old government defeats the Communists limit = { has_government = neutrality } if = { limit = { has_completed_focus = BALTIC_restore_workers_republic } uncomplete_national_focus = { focus = BALTIC_restore_workers_republic uncomplete_children = yes } } if = { limit = { has_completed_focus = EST_rally_the_nation } uncomplete_national_focus = { focus = EST_rally_the_nation uncomplete_children = yes } } complete_national_focus = EST_era_of_silence } if = { #In case of communist uprising limit = { has_government = communism } if = { limit = { has_completed_focus = EST_era_of_silence } uncomplete_national_focus = { focus = EST_era_of_silence uncomplete_children = yes } } if = { limit = { has_completed_focus = EST_rally_the_nation } uncomplete_national_focus = { focus = EST_rally_the_nation uncomplete_children = yes } } complete_national_focus = BALTIC_restore_workers_republic } } if = { limit = { original_tag = LAT NOT = { has_focus_tree = latvia_tree } has_dlc = "No Step Back" } load_focus_tree = { tree = latvia_tree keep_completed = yes } if = { #Give Latvia their focus tree back if the Perkonkrust win the civil war. limit = { has_government = fascism } if = { limit = { has_completed_focus = LAT_banish_clemens } uncomplete_national_focus = { focus = LAT_banish_clemens uncomplete_children = yes } } if = { limit = { has_completed_focus = LAT_anti_german_propaganda } uncomplete_national_focus = { focus = LAT_anti_german_propaganda uncomplete_children = yes } } if = { limit = { has_completed_focus = BALTIC_restore_workers_republic } uncomplete_national_focus = { focus = BALTIC_restore_workers_republic uncomplete_children = yes } } unlock_national_focus = LAT_latvia_for_latvians unlock_national_focus = LAT_lift_ban_on_perkonkrusts unlock_national_focus = LAT_fanatic_recruitment complete_national_focus = LAT_the_old_ways random_list = { 75 = { complete_national_focus = LAT_alignment_with_germany } 25 = { complete_national_focus = LAT_the_thunder_strikes_alone } } } if = { #In case the old government defeats the Communists limit = { has_government = neutrality } if = { limit = { has_completed_focus = BALTIC_restore_workers_republic } uncomplete_national_focus = { focus = BALTIC_restore_workers_republic uncomplete_children = yes } } complete_national_focus = LAT_suspend_the_constitution } } if = { limit = { has_completed_focus = BALTIC_soviet_volunteer_forces } delete_unit_template_and_units = { division_template = "Soviet Volunteers" } } } } on_ruling_party_change = { # temp var old_ideology_token is available for effects effect = { if = { limit = { original_tag = LAT has_government = fascism } remove_perkonkrust_effect = yes } if = { limit = { has_government = democratic has_idea = democratic_opposition } remove_ideas = democratic_opposition } if = { limit = { has_government = democratic has_idea = democratic_opposition_idea_1 } remove_ideas = democratic_opposition_idea_1 } if = { limit = { has_government = democratic has_idea = democratic_opposition_idea_2 } remove_ideas = democratic_opposition_idea_2 } if = { limit = { has_government = fascism any_owned_state = { is_capital = yes is_on_continent = south_america } is_in_faction = no has_country_flag = SOV_political_influence_americas_flag } country_event = { id = NSB_soviet_fascist_tsarist.8 days = 3 } } } effect = { #SOV - make FT dirty to force reload and tweak loc and icons to fit the new (wrong ^.^' ) ideology if = { limit = { original_tag = SOV } mark_focus_tree_layout_dirty = yes SOV_replace_stuff_based_on_ideology_effect = yes if = { #Remove Paranoia, if for whatever reason country changes ideology while still active limit = { NOT = { has_government = communism } has_country_flag = SOV_paranoia_system_active_flag } SOV_remove_paranoia_effect = yes } if = { limit = { #Kerensky comes back from exile if Democratic has_government = democratic SOV_aleksandr_kerensky = { has_character_flag = SOV_exiled_flag } } SOV_aleksandr_kerensky = { clr_character_flag = SOV_exiled_flag } } } } } #FROM - Country (owner) #ROOT - leader #FROMFROM - original owner for exiled leaders on_unit_leader_level_up = { effect = { if = { limit = { FROM = { has_idea = bold_attack_spirit } } character = { IF = { limit = { is_army_leader = yes } random_list = { 50 = { add_attack = 1 } 50 = {} } } } } else_if = { #since these spirits are mutually exclusive, we can use else_if for added performance! limit = { FROM = { has_idea = tenacious_defense_spirit } } character = { IF = { limit = { is_army_leader = yes } random_list = { 50 = { add_defense = 1 } 50 = {} } } } } else_if = { limit = { FROM = { has_idea = meticulous_preparation_spirit } } character = { IF = { limit = { is_army_leader = yes } random_list = { 50 = { add_planning = 1 add_logistics = 1 } 50 = {} } } } } if = { limit = { FROM = { has_idea = instilled_aggression_spirit } } character = { IF = { limit = { is_navy_leader = yes } random_list = { 50 = { add_attack = 1 } 50 = {} } } } } else_if = { limit = { FROM = { has_idea = calculated_restraint_spirit } } character = { IF = { limit = { is_navy_leader = yes } random_list = { 50 = { add_defense = 1 } 50 = {} } } } } else_if = { limit = { FROM = { has_idea = signals_training_spirit } } character = { IF = { limit = { is_navy_leader = yes } random_list = { 50 = { add_maneuver = 1 add_coordination = 1 } 50 = {} } } } } } } on_unit_leader_created = { # This uses the UNIT LEADER sub scope of a character, FROM == country effect = { character = { if = { limit = { is_army_leader = yes } if = { limit = { FROM = { OR = { has_idea = political_loyalty_spirit has_idea = CHI_whampoa_military_academy_spirit } } #done here instead of the trait file to avoid some oddness with generating assignable traits under certain circumstances, makes it easier to control probabilities } root = { random_list = { 50 = { add_unit_leader_trait = media_personality } 50 = { add_unit_leader_trait = politically_connected } } } } else_if = { limit = { FROM = { has_idea = mobile_warfare_academy_spirit } #done here instead of the trait file to avoid some oddness with generating assignable traits under certain circumstances, makes it easier to control probabilities } root = { random_list = { 50 = { add_unit_leader_trait = armor_officer } 50 = {} } } } else_if = { limit = { FROM = { has_idea = mass_assault_academy_spirit } #done here instead of the trait file to avoid some oddness with generating assignable traits under certain circumstances, makes it easier to control probabilities } root = { random_list = { 50 = { add_unit_leader_trait = infantry_officer } 50 = {} } } } else_if = { limit = { FROM = { has_idea = inventive_leadership_spirit } #done here instead of the trait file to avoid some oddness with generating assignable traits under certain circumstances, makes it easier to control probabilities } root = { random_list = { 75 = { random_list = { 33 = { add_unit_leader_trait = naval_invader } 33 = { add_unit_leader_trait = commando } 33 = { add_unit_leader_trait = trickster } } } 25 = {} } } } else_if = { limit = { FROM = { has_idea = superior_firepower_academy_spirit } #done here instead of the trait file to avoid some oddness with generating assignable traits under certain circumstances, makes it easier to control probabilities } root = { random_list = { 50 = { add_unit_leader_trait = engineer_officer } 50 = {} } } } else_if = { limit = { FROM = { has_idea = theatre_training_spirit } #done here instead of the trait file to avoid some oddness with generating assignable traits under certain circumstances, makes it easier to control probabilities } root = { random_list = { 50 = { random_list = { 50 = { add_unit_leader_trait = brilliant_strategist } 50 = { add_unit_leader_trait = inflexible_strategist } } } 50 = {} } } } } else_if = { limit = { FROM = { has_idea = fleet_in_being_academy_spirit } #done here instead of the trait file to avoid some oddness with generating assignable traits under certain circumstances, makes it easier to control probabilities } root = { random_list = { 50 = { add_unit_leader_trait = gunnery_expert } 50 = {} } } } else_if = { limit = { FROM = { has_idea = trade_interdiction_academy_spirit } #done here instead of the trait file to avoid some oddness with generating assignable traits under certain circumstances, makes it easier to control probabilities } root = { random_list = { 25 = { add_unit_leader_trait = seawolf } 25 = { add_unit_leader_trait = blockade_runner } 50 = {} } } } else_if = { limit = { FROM = { has_idea = base_strike_academy_spirit } #done here instead of the trait file to avoid some oddness with generating assignable traits under certain circumstances, makes it easier to control probabilities } root = { random_list = { 50 = { add_unit_leader_trait = aviation_enthusiast } 50 = {} } } } } } } on_government_change = { effect = { if = { limit = { original_tag = EST has_government = fascism } remove_vaps_effect = yes } } } on_peace = { effect = { IF = { limit = { THIS = { has_country_flag = SOV_unrecognized_country_flag has_country_flag = SOV_breakaway_country_flag } } THIS = { clr_country_flag = SOV_unrecognized_country_flag } set_rule = { can_join_factions = yes } } } } #ROOT - country that just went to peace on_peaceconference_ended = { effect = { if = { limit = { ROOT = { original_tag = POL } FROM = { original_tag = HUN } POL = { has_completed_focus = POL_press_the_habsburg_claim } HUN = { has_government = neutrality } } HUN = { promote_character = HUN_otto_von_habsburg add_ruling_to_neu = yes set_politics = { ruling_party = neutrality elections_allowed = no name = HUN_legitimists_party long_name = HUN_legitimists_party_long } if = { #Switch to the Habsburg branch limit = { has_focus_tree = hungarian_focus } if = { limit = { has_completed_focus = HUN_economic_intervention } uncomplete_national_focus = { focus = HUN_economic_intervention uncomplete_children = yes } } if = { limit = { has_completed_focus = HUN_elect_a_democratic_king } uncomplete_national_focus = { focus = HUN_elect_a_democratic_king uncomplete_children = yes } } if = { limit = { has_completed_focus = HUN_elect_a_fascist_king } uncomplete_national_focus = { focus = HUN_elect_a_fascist_king uncomplete_children = yes } } if = { limit = { NOT = { has_completed_focus = HUN_balanced_budget } } complete_national_focus = HUN_balanced_budget } if = { limit = { NOT = { has_completed_focus = HUN_elect_a_king } } complete_national_focus = HUN_elect_a_king } unlock_national_focus = HUN_invite_the_habsburg_prince if = { limit = { NOT = { has_completed_focus = HUN_strengthen_the_monarchists } } complete_national_focus = HUN_strengthen_the_monarchists } swap_ideas = { add_idea = HUN_habsburg_restored remove_idea = HUN_hungarian_monarchy_2 } } } } if = { limit = { tag = GER is_subject = yes } GER = { #Stop democratic Germany from doing Anschluss and awakening their ambition of global domination uncomplete_national_focus = { focus = GER_remilitarize_the_rhineland uncomplete_children = yes } if = { limit = { has_dlc = "Gotterdammerung" } uncomplete_national_focus = { focus = GER_oppose_hitler_ww uncomplete_children = yes } } else = { uncomplete_national_focus = { focus = GER_oppose_hitler uncomplete_children = yes } } } } if = { limit = { POL = { is_subject_of = GER is_ai = no #So that there's no weird transfer of states between AIs } GER = { is_ai = yes } } GER = { every_controlled_state = { limit = { OR = { is_core_of = POL is_claimed_by = POL } NOT = { is_core_of = GER } } POL = { transfer_state = PREV } } } } if = { limit = { is_baltic_country = yes is_subject_of = SOV SOV = { is_ai = yes } } SOV = { clr_global_flag = BALTIC_more_than_one_territory clear_global_event_target = BALTIC_loose_territory_country clear_global_event_target = BALTIC_country_to_transfer every_controlled_state = { #This transfers any baltic states SOV controls to the player if the player is a baltic country puppeted by SOV. limit = { OR = { is_core_of = LIT is_core_of = LAT is_core_of = EST } } if = { #This is to check if territories of more than one country are being transferred limit = { is_core_of = LIT NOT = { is_core_of = event_target:BALTIC_country_to_transfer } } set_global_flag = BALTIC_more_than_one_territory } else_if = { limit = { is_core_of = LAT NOT = { is_core_of = event_target:BALTIC_country_to_transfer } } set_global_flag = BALTIC_more_than_one_territory } else_if = { limit = { is_core_of = EST NOT = { is_core_of = event_target:BALTIC_country_to_transfer } } set_global_flag = BALTIC_more_than_one_territory } save_global_event_target_as = BALTIC_country_to_transfer random_country = { limit = { is_baltic_country = yes is_subject_of = SOV is_ai = no } transfer_state = PREV } } every_country = { #This gives the player playing a baltic country any other baltic country that is AI as long as they're both SOV puppets limit = { is_baltic_country = yes is_subject_of = SOV is_ai = yes } save_global_event_target_as = BALTIC_country_to_transfer random_country = { limit = { is_baltic_country = yes is_ai = yes NOT = { tag = PREV } } save_global_event_target_as = BALTIC_loose_territory_country } random_country = { limit = { is_baltic_country = yes is_subject_of = SOV is_ai = no } country_event = { id = BALTIC_events.19 } #This lets the player know that they were given a baltic state. annex_country = { target = PREV transfer_troops = yes } country_event = { id = baltic.8 } #This lets the player know that they were given a baltic state. } } } } } effect = { #SOV - Fourth Five Year Plan if = { limit = { original_tag = SOV has_country_flag = SOV_third_five_year_plan_locked_flag NOT = { has_country_flag = SOV_fourth_five_year_plan_available_flag } OR = { NOT = { any_country = { has_country_flag = SOV_third_five_year_plan_disruptor_flag } } any_country = { has_country_flag = SOV_third_five_year_plan_disruptor_flag NOT = { has_war_with = ROOT } } } } set_country_flag = SOV_fourth_five_year_plan_available_flag clr_country_flag = SOV_great_patriotic_war_flag complete_national_focus = SOV_restoration_and_development } } } #ROOT = attacking side #FROM = defending side #fired when two countries end up at war with each other (on_war is fired when a country goes to war against anyone and is not fired again when it enters war against another country unless it went to peace first) on_war_relation_added = { # ---> Fires in 2nd place (1st is on_declare_war) -> This one is triggered ALWAYS effect = { if = { limit = { original_tag = GER FROM = { original_tag = POL } } SOV = { set_country_flag = achievement_GER_attacked_POL_first } } } effect = { #SOV - Great Patriotic War and Third Five Year Plan if = { limit = { OR = { AND = { ROOT = { original_tag = SOV } FROM = { is_major = yes NOT = { original_tag = SOV } } } AND = { FROM = { original_tag = SOV } ROOT = { is_major = yes NOT = { original_tag = SOV } } } } } if = { ## GREAT PATRIOTIC WAR limit = { NOT = { has_country_flag = SOV_great_patriotic_war_flag } } SOV = { set_country_flag = SOV_great_patriotic_war_flag } } if = { ## THIRD FIVE YEAR PLAN limit = { SOV = { NOT = { has_country_flag = SOV_third_five_year_plan_locked_flag } } } SOV = { set_country_flag = SOV_third_five_year_plan_locked_flag if = { #Prio Germany if possible limit = { has_war_with = GER GER = { is_major = yes } } GER = { set_country_flag = SOV_third_five_year_plan_disruptor_flag } } else = { #If no Germany, choose a random enemy major random_enemy_country = { limit = { is_major = yes } set_country_flag = SOV_third_five_year_plan_disruptor_flag } } random_country = { limit = { has_country_flag = SOV_third_five_year_plan_disruptor_flag } #log = "The disruptor is [THIS.GetName]" } country_event = NSB_soviet_five_year_plan.01 } } } } #SOVIET - If Soviet has "Long Live to Peace" propaganda campaign active, bad shit happens if they enter a war effect = { if = { #SOV is attacker - bad SOV gets properly punished limit = { ROOT = { original_tag = SOV } SOV = { has_country_flag = SOV_propaganda_peace_active_flag NOT = { has_country_flag = SOV_punished_for_breaking_flag } } } country_event = { id = NSB_soviet_propaganda_capmaign_events.2 hours = 4 random_hours = 2 } } else_if = { #SOV is defender - SOV gets mild punishment // #MM: This is not triggering when someone declares on SOV limit = { FROM = { original_tag = SOV } SOV = { has_country_flag = SOV_propaganda_peace_active_flag NOT = { has_country_flag = SOV_punished_for_breaking_flag } } } country_event = { id = NSB_soviet_propaganda_capmaign_events.3 hours = 4 random_hours = 2 } } } #FINLAND - Winter War has started! effect = { if = { limit = { ROOT = { tag = SOV } FROM = { tag = FIN } NOT = { has_global_flag = SOV_winter_war_flag } } clear_variable = FIN_white_death_target_country set_variable = { FIN_white_death_target_country = ROOT } set_global_flag = SOV_winter_war_flag FIN = { country_event = finland.10 set_country_flag = FIN_winter_war_ongoing_flag #Used to prevent Finland from demanding territory from Soviets just by occupying Leningrad, when not in the Winter War } if = { limit = { FIN = { has_country_leader = { ruling_only = yes # default = yes character = FIN_kyosti_kallio # recommended } } } FIN = { set_country_flag = FIN_winter_war_kallio } #Used to flag if Kallio is Finland's leader during the Winter War } } } effect = { if = { limit = { FROM = { tag = SOV } ROOT = { tag = GER } NOT = { SOV = { has_country_flag = SOV_barbarossa_scorched_earth_delay } } } SOV = { set_country_flag = { flag = SOV_barbarossa_scorched_earth_delay days = 45 value = 1 } } } } # Iran (or overlord) at war with SOV -> Remove resource rights effect = { if = { #British Puppet limit = { OR = { AND = { ROOT = { original_tag = SOV } OR = { FROM = { original_tag = PER } PER = { is_subject_of = FROM } } } AND = { FROM = { original_tag = SOV } OR = { ROOT = { original_tag = PER } PER = { is_subject_of = ROOT } } } } PER = { any_owned_state = { has_state_flag = SOV_soviet_resource_rights_iran_flag } } } PER = { every_owned_state = { limit = { has_state_flag = SOV_soviet_resource_rights_iran_flag } PREV = { remove_resource_rights = PREV } clr_state_flag = SOV_soviet_resource_rights_iran_flag } } } else_if = { #Soviet Puppet limit = { OR = { AND = { ROOT = { original_tag = ENG } OR = { FROM = { original_tag = PER } PER = { is_subject_of = FROM } } } AND = { FROM = { original_tag = ENG } OR = { ROOT = { original_tag = PER } PER = { is_subject_of = ROOT } } } } PER = { any_owned_state = { has_state_flag = SOV_british_resource_rights_iran_flag } } } PER = { every_owned_state = { limit = { has_state_flag = SOV_british_resource_rights_iran_flag } PREV = { remove_resource_rights = PREV } clr_state_flag = SOV_british_resource_rights_iran_flag } } } } } on_weekly_SOV = { effect ={ #Weekly Paranoia modifiers if = { #If other modifiers affect Paranoia, then use the same flag with different values, which will work as a multiplier limit = { has_country_flag = SOV_paranoia_system_active_flag has_country_flag = SOV_paranoia_modifier_active_flag #Stalin's Paranoid leader trait } SOV_paranoia_modifier_increase_effect = yes } } effect = { #Randomly Triggered Purges if = { limit = { NOT = { has_country_flag = SOV_civil_war_triggered_flag } # check if Civil war has been triggered first TODO_THOMAS: remove if not using paranoia has_country_flag = SOV_paranoia_system_active_flag } set_temp_variable = { SOV_temp_paranoia_days = SOV_medium_paranoia_days } add_to_temp_variable = { SOV_temp_paranoia_days = SOV_high_paranoia_days } #log = "Total Paranoia days = [?SOV_temp_paranoia_days]" if = { limit = { check_variable = { SOV_temp_paranoia_days > 3 } NOT = { has_country_flag = SOV_paranoia_conducting_inspection_flag } #Don't trigger a random purge if one is already going to be triggered from decision SOV_paranoia_is_finishing_purge_focus = no #Don't trigger a random purge if one is already going to be triggered from focus NOT = { has_country_flag = SOV_paranoia_random_purge_cooldown_from_focus_flag } #Wait 15 days after a purge has been triggered from focus NOT = { has_country_flag = SOV_paranoia_random_purge_cooldown_from_decision_flag } #Wait 15 days after a purge has been triggered from decision } random_list = { 100 = { # Nothing Happens modifier = { factor = 5 check_variable = { SOV_paranoia_weekly_bucket < 400 } } modifier = { factor = 0.75 check_variable = { SOV_paranoia_weekly_bucket > 500 } } #log = "Lucky you: No random purge this week" } 100 = { # Regular Purge modifier = { factor = 0 check_variable = { SOV_medium_paranoia_days = 0 } } modifier = { factor = 1.5 check_variable = { SOV_paranoia_weekly_bucket > 400 } } modifier = { factor = 2 check_variable = { SOV_medium_paranoia_days > SOV_high_paranoia_days } } SOV_manage_a_regular_purge_effect = yes } 100 = { #Great Purge modifier = { factor = 0 check_variable = { SOV_high_paranoia_days = 0 } } modifier = { factor = 0.5 check_variable = { SOV_high_paranoia_days < 3 } } modifier = { factor = 2 check_variable = { SOV_high_paranoia_days > SOV_medium_paranoia_days } } modifier = { factor = 1.5 check_variable = { SOV_paranoia_weekly_bucket > 400 } } SOV_manage_a_great_purge_effect = yes } } } #CLEAN STUFF FOR NEXT WEEK set_variable = { SOV_medium_paranoia_days = 0 } set_variable = { SOV_high_paranoia_days = 0 } set_variable = { SOV_paranoia_weekly_bucket = 0 } } } } on_daily_SOV = { effect = { if = { limit = { has_country_flag = { flag = SOV_last_purge_flag days > 15 } } add_to_variable = { SOV_paranoia_weekly_bucket = SOV_paranoia } #log = "Added [?SOV_paranoia] Paranoia. Weekly BUCKET = [?SOV_paranoia_weekly_bucket]" #Debug if = { #MEDIUM PARANOIA LEVEL limit = { SOV_paranoia_is_medium_level = yes } add_to_variable = { SOV_medium_paranoia_days = 1 } #Used to randomize having a Great or a Regular purge (so that every day kinda counts) } else_if = { #HIGH PARANOIA LEVEL limit = { SOV_paranoia_is_high_level = yes } add_to_variable = { SOV_high_paranoia_days = 1 } #Used to randomize having a Great or a Regular purge (so that every day kinda counts) } #log = "Medium Paranoia days = [?SOV_medium_paranoia_days] // High Paranoia days = [?SOV_high_paranoia_days]" #Debug } else = { #log = "NOT A PURGE WEEK" #Debug } ### SOVIET CIVIL WAR TRIGGER IF = { limit = { SOV_is_opposition = yes # Don't test for Stalin SOV_soviet_civil_war_not_started = yes # Only test before the war has started check_variable = { SOV_paranoia > 89} is_ai = no # Slight cheat, but the ai needs some support } random_list = { 80 = { } # No effect 20 = { set_country_flag = SOV_civil_war_triggered_flag country_event = { id = NSB_soviet_civil_war_common.003 hours = 0 } } } } } } on_monthly_SOV = { effect = { IF = { limit = { has_global_flag = SOV_soviet_civil_war } # nationalist uprisings IF = { limit = { check_variable = { SOV.SOV_civil_war_months > 2 } SOV = { SOV_is_exiles = yes } # currently exiles only } SOV = { country_event = { id = NSB_soviet_nationalist.000 days = 2 random_days = 4 } } } add_to_variable = { SOV.SOV_civil_war_months = 1 } # Civil war counter } # Check for leader desertions IF = { limit = { ROOT = { has_global_flag = SOV_soviet_civil_war } SOS = { any_unit_leader = { has_trait = trait_SOV_cowed_by_stalin_army NOT = { has_trait = trait_SOV_stalinist } } } } SOS = { random_unit_leader = { limit = { has_trait = trait_SOV_cowed_by_stalin_army NOT = { has_trait = trait_SOV_stalinist } } set_variable = { SOS.SOV_general_to_desert = THIS } } } random_list = { 25 = { # defections country_event = { id = NSB_soviet_communist_civil_war.010 hours = 1 } } 75 = { # Nothing happens } } } } } #FROM is faction leader on join faction requests. THIS DOES NOT FIRE ON ADD_TO_FACTION EFFECT! USE ON_OFFER_JOIN_FACTION! on_join_faction = { effect = { #Add to Baltic research if = { limit = { any_other_country = { is_in_faction_with = ROOT is_in_tech_sharing_group = baltic_allied_research } } add_to_tech_sharing_group = baltic_allied_research } } #SINKIANG counter effect = { if = { limit = { tag = SIK FROM = { original_tag = SOV } } FROM = { set_country_flag = SOV_sinkiang_joined_comintern_counter_flag } } } } #FROM is country getting invited. on_offer_join_faction = { effect = { if = { limit = { FROM = { tag = SIK } original_tag = SOV } SOV = { set_country_flag = SOV_sinkiang_joined_comintern_counter_flag } } } } on_release_as_puppet = { effect = { if = { limit = { FROM = { tag = SOV has_completed_focus = SOV_autonomous_soviet_republics } } ROOT = { add_ideas = { SOV_system_decentralization_idea SOV_the_local_soviets_idea } } } if = { limit = { FROM = { tag = SOV has_completed_focus = SOV_international_union_of_soviet_republics } } ROOT = { add_ideas = { SOV_puppet_international_of_soviet_republics_idea } } } } } # called when a country send volunteers to another # ROOT is sender, FROM is receiver on_send_volunteers = { #Manage Soviet volunteers in China effect = { if = { #Russia has sent volunteers to a Chinese faction limit = { original_tag = SOV FROM = {is_literally_china = yes } } FROM = { set_country_flag = SOV_russian_volunteers_in_china_flag } } } } on_startup = { effect = { #Set Iranian initial states (for Anglo-Soviet invasion of Iran) PER = { every_owned_state = { add_to_array = { SOV_iranian_initial_states = PREV } } } } } # ROOT is capitulated country, FROM is winner on_capitulation = { effect = { if = { limit = { original_tag = GER FROM = { tag = SOV } SOV = { NOT = { has_global_flag = GER_lost_core_state } has_global_flag = achievement_france_surrender } } SOV = { set_country_flag = achievement_race_for_germany } } } effect = { if = { limit = { tag = GER FROM = { original_tag = SOV } SOV = { casualties_inflicted_by = { opponent = GER thousands < 1000 } } } SOV = { set_country_flag = achievement_no_statistics } } } #Soviet / Anglo-Soviet Invasion of Iran effect = { if = { limit = { original_tag = PER FROM = { original_tag = SOV } } if = { #Soviets alone (or joint but ENG died) limit = { OR = { has_global_flag = SOV_soviet_invasion_of_iran_flag AND = { has_global_flag = SOV_agreed_anglo_soviet_invasion_of_iran_flag NOT = { country_exists = ENG } } } } FROM = { white_peace = PER puppet = ROOT #SOV puppet Iran } if = { limit = { has_global_flag = SOV_soviet_invasion_of_iran_flag } clr_global_flag = SOV_soviet_invasion_of_iran_flag } else = { clr_global_flag = SOV_agreed_anglo_soviet_invasion_of_iran_flag } FROM = { country_event = { id = NSB_soviet_foreign_politics_events.156 days = 1 } } #Hidden Effect to transfer states and give resource rights } else_if = { limit = { has_global_flag = SOV_agreed_anglo_soviet_invasion_of_iran_flag } FROM = { white_peace = PER } ENG = { white_peace = PER puppet = ROOT #ENG gets to puppet Iran } clr_global_flag = SOV_agreed_anglo_soviet_invasion_of_iran_flag FROM = { country_event = { id = NSB_soviet_foreign_politics_events.157 days = 1 } } #Hidden Effect to transfer states and give resource rights and military access } } } #Spanish general from SPD/SPC exile in SOV -> NSB effect = { if = { limit = { SOV = { has_country_flag = SOV_spanish_refugee_generals_welcome_flag } has_dlc = "La Resistance" OR = { tag = SPD tag = SPC } OR = { SPR_scw_in_progress = yes #In case someone else caps the Spanish faction FROM = { original_tag = SPR } } } SOV_manage_spanish_generals_exiled_in_ussr_effect = yes } } #If Soviet capitulates, remove dynamic modifiers from propagandas and stuff effect = { if = { limit = { original_tag = SOV } if = { #SOV_invaders_must_die limit = { any_state = { has_dynamic_modifier = { modifier = SOV_invaders_must_die } } } every_state = { limit = { has_dynamic_modifier = { modifier = SOV_invaders_must_die } } remove_dynamic_modifier = { modifier = SOV_invaders_must_die } } } if = { #SOV_defend_moscow limit = { any_state = { has_dynamic_modifier = { modifier = SOV_defend_moscow } } } every_state = { limit = { has_dynamic_modifier = { modifier = SOV_defend_moscow } } remove_dynamic_modifier = { modifier = SOV_defend_moscow } } } if = { #SOV_increased_metals_production limit = { any_state = { has_dynamic_modifier = { modifier = SOV_increased_metals_production } } } every_state = { limit = { has_dynamic_modifier = { modifier = SOV_increased_metals_production } } remove_dynamic_modifier = { modifier = SOV_increased_metals_production } } } if = { #SOV_factory_worker_militias_raised limit = { any_state = { has_dynamic_modifier = { modifier = SOV_factory_worker_militias_raised } } } every_state = { limit = { has_dynamic_modifier = { modifier = SOV_factory_worker_militias_raised } } remove_dynamic_modifier = { modifier = SOV_factory_worker_militias_raised } } } if = { #SOV_civilian_labor_in_defense_mod limit = { any_state = { has_dynamic_modifier = { modifier = SOV_civilian_labor_in_defense_mod } } } every_state = { limit = { has_dynamic_modifier = { modifier = SOV_civilian_labor_in_defense_mod } } remove_dynamic_modifier = { modifier = SOV_civilian_labor_in_defense_mod } } } } } effect = { if = { limit = { tag = SOV FROM = { tag = GER } FROM = { NOT = { has_country_flag = achievement_stalingrad_taken } } } FROM = { set_country_flag = achievement_not_much_fun_in_stalingrad } } } } #ROOT is new controller #FROM is old controller #FROM.FROM is state ID on_state_control_changed = { effect = { if = { limit = { FROM.FROM = { state = 217 } tag = GER NOT = { has_country_flag = achievement_stalingrad_taken } divisions_in_state = { state = 217 size > 1 } #only happens if Germany has at least one division in the state, because state control changes before on_capitulation fires } set_country_flag = achievement_stalingrad_taken } } } }