From 8ad5a6c6867d60d9e8697a18bb87b96a4568b3df Mon Sep 17 00:00:00 2001 From: "actions[bot]" Date: Thu, 15 Aug 2024 16:35:22 +0000 Subject: [PATCH] 2024-08-15 16:35:22 --- src/common/ai_equipment/vnr_battleships.txt | 22 +-- src/common/ai_equipment/vnr_carriers.txt | 35 ++-- .../ai_equipment/vnr_heavy_cruisers.txt | 2 +- .../ai_equipment/vnr_medium_cruiser.txt | 2 +- src/common/ai_strategy/naval_production.txt | 49 +++++ src/common/defines/VNR_naval_defines.lua | 7 +- .../game_rules/000_naval_rework_rules.txt | 30 +++ src/common/ideas/vnr_ai.txt | 8 + .../scripted_effects/_add_naval_variants.txt | 28 +-- src/common/scripted_effects/_vnr_ai.txt | 29 +++ src/common/technologies/MTG_naval.txt | 23 ++- src/common/technologies/MTG_naval_Support.txt | 9 +- src/common/technologies/naval_doctrine.txt | 5 +- src/common/units/a_battlecarrier.txt | 6 +- src/common/units/a_medium_cruiser.txt | 2 +- src/common/units/battlecruiser.txt | 2 +- .../critical_parts/00_critical_parts.txt | 3 +- .../modules/00_ship_modules_electronics.txt | 139 ++++++++++++-- .../equipment/modules/00_ship_modules_gun.txt | 105 ++++++++++- .../modules/00_ship_modules_protection.txt | 36 ++-- .../modules/00_ship_modules_role.txt | 15 +- .../modules/00_ship_modules_support.txt | 30 ++- .../units/equipment/ship_hull_carrier.txt | 48 ++--- .../units/equipment/ship_hull_cruiser.txt | 34 ++-- .../units/equipment/ship_hull_heavy.txt | 94 +++++++--- .../units/equipment/ship_hull_light.txt | 23 +-- .../units/names_ships/ITA_ship_names.txt | 2 +- src/descriptor.mod | 2 +- src/documentation/Guide.md | 161 ++++++++++++++++ src/documentation/Modding_Tutorial.md | 174 ++++++++++++++++++ src/documentation/README.txt | 140 -------------- src/events/00_navy_rework.txt | 2 + src/events/ai_ships.txt | 2 +- src/gfx/entities/z_vnr_ships.asset | 4 + .../modules/icons/ship_anti_air_circle.png | Bin 0 -> 7172 bytes .../naval/modules/icons/ship_helipad.png | Bin 5504 -> 7182 bytes .../naval/modules/icons/torpedo_computer.png | Bin 4892 -> 0 bytes .../naval/modules/icons/torpedo_computer1.png | Bin 0 -> 5407 bytes .../naval/modules/icons/torpedo_computer2.png | Bin 0 -> 5448 bytes .../naval/modules/icons/torpedo_computer3.png | Bin 0 -> 5280 bytes .../advanced_torpedo_ballistics.png | Bin 0 -> 7778 bytes .../technologies/navy_techtree/helipad.png | Bin 4825 -> 7880 bytes .../navy_techtree/torpedo_computer.png | Bin 7400 -> 0 bytes src/gfx/interface/vnr_main_menu_bg.dds | Bin 14745596 -> 14745596 bytes src/interface/z_navy_techtree.gfx | 4 +- src/interface/z_ship_modules.gfx | 18 +- .../replace/navy_rework_welcome_l_english.yml | 4 +- .../english/replace/research_l_english.yml | 11 +- ...hip_modules_country_specific_l_english.yml | 38 +++- .../replace/ship_modules_l_english.yml | 47 ++++- .../english/replace/vnr_ai_l_english.yml | 10 +- .../replace/navy_rework_welcome_l_english.yml | 4 +- .../replace/research_l_english.yml | 11 +- ...hip_modules_country_specific_l_english.yml | 38 +++- .../replace/ship_modules_l_english.yml | 47 ++++- src/localisation/replace/vnr_ai_l_english.yml | 10 +- .../navy_rework_welcome_l_simp_chinese.yml | 4 +- .../replace/research_l_simp_chinese.yml | 11 +- ...odules_country_specific_l_simp_chinese.yml | 38 +++- .../replace/ship_modules_l_simp_chinese.yml | 47 ++++- .../replace/vnr_ai_l_simp_chinese.yml | 10 +- 61 files changed, 1235 insertions(+), 390 deletions(-) create mode 100755 src/documentation/Guide.md create mode 100755 src/documentation/Modding_Tutorial.md delete mode 100755 src/documentation/README.txt create mode 100755 src/gfx/entities/z_vnr_ships.asset create mode 100755 src/gfx/interface/equipmentdesigner/naval/modules/icons/ship_anti_air_circle.png delete mode 100755 src/gfx/interface/equipmentdesigner/naval/modules/icons/torpedo_computer.png create mode 100755 src/gfx/interface/equipmentdesigner/naval/modules/icons/torpedo_computer1.png create mode 100755 src/gfx/interface/equipmentdesigner/naval/modules/icons/torpedo_computer2.png create mode 100755 src/gfx/interface/equipmentdesigner/naval/modules/icons/torpedo_computer3.png create mode 100755 src/gfx/interface/technologies/navy_techtree/advanced_torpedo_ballistics.png delete mode 100755 src/gfx/interface/technologies/navy_techtree/torpedo_computer.png diff --git a/src/common/ai_equipment/vnr_battleships.txt b/src/common/ai_equipment/vnr_battleships.txt index e908ded..6706cf7 100755 --- a/src/common/ai_equipment/vnr_battleships.txt +++ b/src/common/ai_equipment/vnr_battleships.txt @@ -95,7 +95,7 @@ naval_capital_battleship = { fixed_ship_fire_control_system_slot = ship_fire_control_system fixed_ship_radar_slot = ship_radar fixed_ship_engine_slot = { upgrade = current any_of = { heavy_ship_engine_4 heavy_ship_engine_3 heavy_ship_engine_2 heavy_ship_engine_1 } } - fixed_ship_secondaries_slot = ship_dp_secondaries + fixed_ship_secondaries_slot = ship_dp_secondaries_bb fixed_ship_armor_slot = { any_of = { ship_armor_bb_3 ship_armor_bb_2 ship_armor_bb_1 } } fixed_ship_airplane_launcher_slot = ship_airplane_launcher fixed_ship_armor_scheme_slot = { upgrade = current any_of = { ship_scheme_all_or_nothing_armor_box ship_scheme_all_or_nothing ship_scheme_mixed ship_scheme_incremental } } @@ -104,7 +104,7 @@ naval_capital_battleship = { front_1_custom_slot = { any_of = { ship_heavy_battery_triple ship_super_heavy_battery } } mid_1_custom_slot = ship_secondaries mid_2_custom_slot = ship_anti_air - mid_3_custom_slot = ship_dp_secondaries + mid_3_custom_slot = ship_dp_secondaries_bb rear_1_custom_slot = { any_of = { ship_heavy_battery_triple ship_super_heavy_battery } } rear_2_custom_slot = { any_of = { ship_heavy_battery_triple ship_super_heavy_battery } } } @@ -131,16 +131,16 @@ naval_capital_battleship = { fixed_ship_fire_control_system_slot = ship_fire_control_system fixed_ship_radar_slot = ship_radar fixed_ship_engine_slot = { upgrade = current any_of = { heavy_ship_engine_5 heavy_ship_engine_4 heavy_ship_engine_3 heavy_ship_engine_2 heavy_ship_engine_1 } } - fixed_ship_secondaries_slot = ship_dp_secondaries + fixed_ship_secondaries_slot = ship_dp_secondaries_bb fixed_ship_armor_slot = { any_of = { ship_armor_bb_4 ship_armor_bb_3 ship_armor_bb_2 ship_armor_bb_1 } } fixed_ship_airplane_launcher_slot = ship_airplane_launcher fixed_ship_armor_scheme_slot = { upgrade = current any_of = { ship_scheme_all_or_nothing_armor_box ship_scheme_all_or_nothing ship_scheme_mixed ship_scheme_incremental } } fixed_ship_torpedo_defense_system_slot = { upgrade = current any_of = { torpedo_belt_enhanced torpedo_belt torpedo_bulge } } fixed_ship_extra_secondaries_slot = { any_of = { heavy_miscellaneous generic_miscellaneous } } front_1_custom_slot = { any_of = { ship_heavy_battery_triple ship_super_heavy_battery } } - mid_1_custom_slot = ship_dp_secondaries + mid_1_custom_slot = ship_dp_secondaries_bb mid_2_custom_slot = ship_anti_air - mid_3_custom_slot = ship_dp_secondaries + mid_3_custom_slot = ship_dp_secondaries_bb rear_1_custom_slot = { any_of = { ship_heavy_battery_triple ship_super_heavy_battery } } rear_2_custom_slot = { any_of = { ship_heavy_battery_triple ship_super_heavy_battery } } } @@ -167,16 +167,16 @@ naval_capital_battleship = { fixed_ship_fire_control_system_slot = ship_fire_control_system fixed_ship_radar_slot = ship_radar fixed_ship_engine_slot = { any_of = { heavy_ship_engine_4_gas heavy_ship_engine_nuclear } } - fixed_ship_secondaries_slot = ship_dp_secondaries + fixed_ship_secondaries_slot = ship_dp_secondaries_bb fixed_ship_armor_slot = { any_of = { ship_armor_bb_4 ship_armor_bb_3 ship_armor_bb_2 ship_armor_bb_1 } } fixed_ship_airplane_launcher_slot = ship_airplane_launcher fixed_ship_armor_scheme_slot = { upgrade = current any_of = { ship_scheme_all_or_nothing_armor_box ship_scheme_all_or_nothing ship_scheme_mixed ship_scheme_incremental } } fixed_ship_torpedo_defense_system_slot = { upgrade = current any_of = { torpedo_belt_enhanced torpedo_belt torpedo_bulge } } fixed_ship_extra_secondaries_slot = { any_of = { heavy_miscellaneous generic_miscellaneous } } front_1_custom_slot = { any_of = { ship_heavy_battery_triple ship_super_heavy_battery } } - mid_1_custom_slot = ship_dp_secondaries + mid_1_custom_slot = ship_dp_secondaries_bb mid_2_custom_slot = ship_missile_1 - mid_3_custom_slot = ship_dp_secondaries + mid_3_custom_slot = ship_dp_secondaries_bb rear_1_custom_slot = { any_of = { ship_heavy_battery_triple ship_super_heavy_battery } } rear_2_custom_slot = ship_missile_aa } @@ -242,7 +242,7 @@ naval_capital_battleship = { fixed_ship_fire_control_system_slot = ship_fire_control_system fixed_ship_radar_slot = { any_of = { ship_radar ship_mast } } fixed_ship_engine_slot = { upgrade = current any_of = { heavy_ship_engine_3 heavy_ship_engine_2 heavy_ship_engine_1 } } - fixed_ship_secondaries_slot = ship_dp_secondaries + fixed_ship_secondaries_slot = ship_dp_secondaries_bb fixed_ship_armor_slot = { upgrade > current any_of = { ship_armor_bb_3 ship_armor_bb_2 ship_armor_bb_1 } } fixed_ship_armor_scheme_slot = { upgrade > current any_of = { ship_scheme_all_or_nothing ship_scheme_mixed ship_scheme_incremental_post_jutland ship_scheme_incremental } } fixed_ship_torpedo_defense_system_slot = { upgrade > current any_of = { torpedo_belt_enhanced torpedo_belt torpedo_bulge } } @@ -273,7 +273,7 @@ naval_capital_battleship = { fixed_ship_fire_control_system_slot = ship_fire_control_system fixed_ship_radar_slot = ship_radar fixed_ship_engine_slot = { upgrade > current any_of = { heavy_ship_engine_5 heavy_ship_engine_4 heavy_ship_engine_3 heavy_ship_engine_2 heavy_ship_engine_1 } } - fixed_ship_secondaries_slot = ship_dp_secondaries + fixed_ship_secondaries_slot = ship_dp_secondaries_bb fixed_ship_armor_slot = { upgrade > current any_of = { ship_armor_bb_4 ship_armor_bb_3 ship_armor_bb_2 ship_armor_bb_1 } } fixed_ship_armor_scheme_slot = { upgrade > current any_of = { ship_scheme_all_or_nothing_armor_box ship_scheme_all_or_nothing ship_scheme_mixed ship_scheme_incremental } } fixed_ship_torpedo_defense_system_slot = { upgrade > current any_of = { torpedo_belt_enhanced torpedo_belt torpedo_bulge } } @@ -306,7 +306,7 @@ naval_capital_battleship = { fixed_ship_fire_control_system_slot = ship_fire_control_system fixed_ship_radar_slot = ship_radar fixed_ship_engine_slot = { upgrade > current any_of = { heavy_ship_engine_5 heavy_ship_engine_4 heavy_ship_engine_3 heavy_ship_engine_2 heavy_ship_engine_1 } } - fixed_ship_secondaries_slot = ship_dp_secondaries + fixed_ship_secondaries_slot = ship_dp_secondaries_bb fixed_ship_armor_slot = { upgrade > current any_of = { ship_armor_bb_4 ship_armor_bb_3 ship_armor_bb_2 ship_armor_bb_1 } } fixed_ship_armor_scheme_slot = { upgrade > current any_of = { ship_scheme_all_or_nothing_armor_box ship_scheme_all_or_nothing ship_scheme_mixed ship_scheme_incremental } } fixed_ship_torpedo_defense_system_slot = { upgrade > current any_of = { torpedo_belt_enhanced torpedo_belt torpedo_bulge } } diff --git a/src/common/ai_equipment/vnr_carriers.txt b/src/common/ai_equipment/vnr_carriers.txt index 4563402..a5cee22 100755 --- a/src/common/ai_equipment/vnr_carriers.txt +++ b/src/common/ai_equipment/vnr_carriers.txt @@ -1,4 +1,3 @@ -# By Pelmen, 1.10.7 naval_carrier = { category = naval #blocked_for = {} @@ -41,7 +40,7 @@ naval_carrier = { fixed_ship_deck_slot_2 = ship_deck_space fixed_ship_anti_air_slot = ship_anti_air fixed_ship_engine_slot = carrier_ship_engine - fixed_ship_secondaries_slot = { any_of = { ship_secondaries ship_dp_secondaries } } + fixed_ship_secondaries_slot = { any_of = { ship_secondaries ship_dp_secondaries_bb } } fixed_ship_flight_deck_slot = carrier_wooden_deck } } @@ -59,7 +58,7 @@ naval_carrier = { fixed_ship_deck_slot_2 = ship_deck_space fixed_ship_anti_air_slot = ship_anti_air fixed_ship_engine_slot = carrier_ship_engine - fixed_ship_secondaries_slot = { any_of = { ship_secondaries ship_dp_secondaries } } + fixed_ship_secondaries_slot = { any_of = { ship_secondaries ship_dp_secondaries_bb } } mid_1_custom_slot = ship_deck_space fixed_ship_carrier_miscellaneous_slot_1 = carrier_unit fixed_ship_carrier_miscellaneous_slot_2 = carrier_miscellaneous @@ -85,7 +84,7 @@ naval_carrier = { fixed_ship_deck_slot_2 = ship_deck_space fixed_ship_anti_air_slot = ship_anti_air fixed_ship_engine_slot = carrier_ship_engine_2 - fixed_ship_secondaries_slot = { any_of = { ship_secondaries ship_dp_secondaries } } + fixed_ship_secondaries_slot = { any_of = { ship_secondaries ship_dp_secondaries_bb } } fixed_ship_radar_slot = ship_radar fixed_ship_carrier_miscellaneous_slot_1 = carrier_unit fixed_ship_carrier_miscellaneous_slot_2 = carrier_miscellaneous @@ -114,7 +113,7 @@ naval_carrier = { fixed_ship_deck_slot_2 = ship_deck_space fixed_ship_anti_air_slot = ship_anti_air fixed_ship_engine_slot = { upgrade = current any_of = { carrier_ship_engine_3 carrier_ship_engine_2 carrier_ship_engine_1 } } - fixed_ship_secondaries_slot = { any_of = { ship_secondaries ship_dp_secondaries } } + fixed_ship_secondaries_slot = { any_of = { ship_secondaries ship_dp_secondaries_bb } } fixed_ship_radar_slot = ship_radar fixed_ship_carrier_miscellaneous_slot_1 = carrier_unit fixed_ship_carrier_miscellaneous_slot_2 = carrier_miscellaneous @@ -122,7 +121,7 @@ naval_carrier = { front_1_custom_slot = ship_deck_space front_2_custom_slot = carrier_side_lift mid_1_custom_slot = ship_deck_space - mid_2_custom_slot = ship_dp_secondaries + mid_2_custom_slot = ship_dp_secondaries_bb } } } @@ -144,9 +143,9 @@ naval_carrier = { modules = { fixed_ship_deck_slot_1 = ship_deck_space fixed_ship_deck_slot_2 = ship_deck_space - fixed_ship_anti_air_slot = { any_of { ship_anti_air ship_missile_aa } } + fixed_ship_anti_air_slot = { any_of = { ship_anti_air ship_missile_aa } } fixed_ship_engine_slot = { upgrade = current any_of = { carrier_ship_engine_4 carrier_ship_engine_3 carrier_ship_engine_2 carrier_ship_engine_1 } } - fixed_ship_secondaries_slot = { any_of = { ship_secondaries ship_dp_secondaries } } + fixed_ship_secondaries_slot = { any_of = { ship_secondaries ship_dp_secondaries_bb } } fixed_ship_radar_slot = ship_radar fixed_ship_carrier_miscellaneous_slot_1 = carrier_unit fixed_ship_carrier_miscellaneous_slot_2 = carrier_miscellaneous @@ -155,7 +154,7 @@ naval_carrier = { front_2_custom_slot = carrier_side_lift mid_1_custom_slot = ship_deck_space mid_2_custom_slot = ship_deck_space - rear_1_custom_slot = ship_dp_secondaries + rear_1_custom_slot = ship_dp_secondaries_bb } } } @@ -177,10 +176,10 @@ naval_carrier = { modules = { fixed_ship_deck_slot_1 = ship_deck_space_big fixed_ship_deck_slot_2 = ship_deck_space_big - fixed_ship_anti_air_slot = { any_of { ship_anti_air ship_missile_aa } } + fixed_ship_anti_air_slot = { any_of = { ship_anti_air ship_missile_aa } } fixed_ship_armor_slot = ship_carrier_armor_heavy fixed_ship_engine_slot = { upgrade = current any_of = { carrier_ship_engine_4 carrier_ship_engine_3 carrier_ship_engine_2 carrier_ship_engine_1 } } - fixed_ship_secondaries_slot = ship_dp_secondaries + fixed_ship_secondaries_slot = ship_dp_secondaries_bb fixed_ship_radar_slot = ship_radar fixed_ship_carrier_miscellaneous_slot_1 = carrier_unit fixed_ship_carrier_miscellaneous_slot_2 = carrier_miscellaneous @@ -214,7 +213,7 @@ naval_carrier = { fixed_ship_anti_air_slot = ship_missile_aa fixed_ship_armor_slot = ship_carrier_armor_heavy fixed_ship_engine_slot = carrier_ship_engine_nuclear - fixed_ship_secondaries_slot = ship_dp_secondaries + fixed_ship_secondaries_slot = ship_dp_secondaries_bb fixed_ship_radar_slot = ship_radar fixed_ship_carrier_miscellaneous_slot_1 = carrier_unit fixed_ship_carrier_miscellaneous_slot_2 = economical_nuclear_reactor_carrier @@ -247,7 +246,7 @@ naval_carrier = { fixed_ship_deck_slot_2 = ship_deck_space fixed_ship_anti_air_slot = ship_anti_air fixed_ship_engine_slot = carrier_ship_engine_2 - fixed_ship_secondaries_slot = { upgrade > current any_of = { ship_dp_secondaries } } + fixed_ship_secondaries_slot = { upgrade > current any_of = { ship_dp_secondaries_bb } } fixed_ship_radar_slot = ship_radar fixed_ship_carrier_miscellaneous_slot_1 = carrier_spared_squad fixed_ship_carrier_miscellaneous_slot_2 = carrier_secondary_island @@ -276,7 +275,7 @@ naval_carrier = { fixed_ship_deck_slot_2 = ship_deck_space fixed_ship_anti_air_slot = ship_anti_air fixed_ship_engine_slot = { upgrade = current any_of = { carrier_ship_engine_3 carrier_ship_engine_2 carrier_ship_engine_1 } } - fixed_ship_secondaries_slot = { upgrade > current any_of = { ship_dp_secondaries } } + fixed_ship_secondaries_slot = { upgrade > current any_of = { ship_dp_secondaries_bb } } fixed_ship_radar_slot = ship_radar fixed_ship_carrier_miscellaneous_slot_1 = carrier_spared_squad fixed_ship_carrier_miscellaneous_slot_2 = carrier_secondary_island @@ -305,9 +304,9 @@ naval_carrier = { modules = { fixed_ship_deck_slot_1 = ship_deck_space fixed_ship_deck_slot_2 = ship_deck_space - fixed_ship_anti_air_slot = { any_of { ship_anti_air ship_missile_aa } } + fixed_ship_anti_air_slot = { any_of = { ship_anti_air ship_missile_aa } } fixed_ship_engine_slot = { upgrade = current any_of = { carrier_ship_engine_4 carrier_ship_engine_3 carrier_ship_engine_2 carrier_ship_engine_1 } } - fixed_ship_secondaries_slot = { upgrade > current any_of = { ship_dp_secondaries } } + fixed_ship_secondaries_slot = { upgrade > current any_of = { ship_dp_secondaries_bb } } fixed_ship_radar_slot = ship_radar fixed_ship_carrier_miscellaneous_slot_1 = carrier_spared_squad fixed_ship_carrier_miscellaneous_slot_2 = carrier_secondary_island @@ -340,7 +339,7 @@ naval_carrier = { fixed_ship_anti_air_slot = ship_missile_aa fixed_ship_armor_slot = ship_carrier_armor_heavy fixed_ship_engine_slot = { upgrade > current any_of = { carrier_ship_engine_4 carrier_ship_engine_3 carrier_ship_engine_2 carrier_ship_engine_1 } } - fixed_ship_secondaries_slot = { upgrade > current any_of = { ship_dp_secondaries } } + fixed_ship_secondaries_slot = { upgrade > current any_of = { ship_dp_secondaries_bb } } fixed_ship_radar_slot = ship_radar fixed_ship_carrier_miscellaneous_slot_1 = carrier_spared_squad fixed_ship_carrier_miscellaneous_slot_2 = carrier_secondary_island @@ -373,7 +372,7 @@ naval_carrier = { fixed_ship_anti_air_slot = ship_missile_aa fixed_ship_armor_slot = ship_carrier_armor_heavy fixed_ship_engine_slot = carrier_ship_engine_nuclear - fixed_ship_secondaries_slot = { upgrade > current any_of = { ship_dp_secondaries } } + fixed_ship_secondaries_slot = { upgrade > current any_of = { ship_dp_secondaries_bb } } fixed_ship_radar_slot = ship_radar fixed_ship_carrier_miscellaneous_slot_1 = carrier_spared_squad fixed_ship_carrier_miscellaneous_slot_2 = carrier_secondary_island diff --git a/src/common/ai_equipment/vnr_heavy_cruisers.txt b/src/common/ai_equipment/vnr_heavy_cruisers.txt index 1b0776b..c07d238 100755 --- a/src/common/ai_equipment/vnr_heavy_cruisers.txt +++ b/src/common/ai_equipment/vnr_heavy_cruisers.txt @@ -153,7 +153,7 @@ naval_cruiser_heavy = { type = vnr_ship_hull_cruiser_5 modules = { fixed_ship_battery_slot = ship_medium_battery - fixed_ship_anti_air_slot = { any_of { ship_anti_air ship_missile_aa } } + fixed_ship_anti_air_slot = { any_of = { ship_anti_air ship_missile_aa } } fixed_ship_fire_control_system_slot = ship_fire_control_system fixed_ship_engine_slot = { upgrade = current any_of = { cruiser_ship_engine_5 cruiser_ship_engine_4 cruiser_ship_engine_3 cruiser_ship_engine_2 cruiser_ship_engine_1 } } fixed_ship_radar_slot = { any_of = { ship_radar } } diff --git a/src/common/ai_equipment/vnr_medium_cruiser.txt b/src/common/ai_equipment/vnr_medium_cruiser.txt index cf15a95..cbf93a8 100755 --- a/src/common/ai_equipment/vnr_medium_cruiser.txt +++ b/src/common/ai_equipment/vnr_medium_cruiser.txt @@ -120,7 +120,7 @@ naval_cruiser_medium = { type = vnr_ship_hull_cruiser_5 modules = { fixed_ship_battery_slot = ship_medium_battery - fixed_ship_anti_air_slot = { any_of { ship_anti_air ship_missile_aa } } + fixed_ship_anti_air_slot = { any_of = { ship_anti_air ship_missile_aa } } fixed_ship_fire_control_system_slot = ship_fire_control_system fixed_ship_engine_slot = { upgrade = current any_of = { cruiser_ship_engine_5 cruiser_ship_engine_4 cruiser_ship_engine_3 cruiser_ship_engine_2 cruiser_ship_engine_1 } } fixed_ship_radar_slot = { any_of = { ship_radar } } diff --git a/src/common/ai_strategy/naval_production.txt b/src/common/ai_strategy/naval_production.txt index ce238bd..bf93f32 100755 --- a/src/common/ai_strategy/naval_production.txt +++ b/src/common/ai_strategy/naval_production.txt @@ -432,6 +432,7 @@ naval_unit_role_ratios_GER_atwar = { } enable = { has_war_with = ENG + num_of_naval_factories < 35 } abort_when_not_enabled = yes @@ -460,6 +461,54 @@ naval_unit_role_ratios_GER_atwar = { } } +naval_unit_role_ratios_GER_atwar_many_shipyard = { + allowed = { + has_dlc = "Man the Guns" + tag = GER + } + enable = { + has_war_with = ENG + num_of_naval_factories > 34 + } + abort_when_not_enabled = yes + + ai_strategy = { + type = role_ratio + id = vnr_naval_submarine + value = 80 + } + + ai_strategy = { + type = role_ratio + id = vnr_naval_screen + value = 300 + } + + ai_strategy = { + type = role_ratio + id = vnr_naval_cruiser_light + value = 50 + } + + ai_strategy = { + type = role_ratio + id = vnr_naval_cruiser_medium + value = 30 + } + + ai_strategy = { + type = role_ratio + id = vnr_naval_capital_bb + value = 20 + } + + ai_strategy = { + type = role_ratio + id = vnr_naval_carrier + value = 20 + } +} + naval_unit_role_ratios_GER_atwar_knock_USA = { allowed = { has_dlc = "Man the Guns" diff --git a/src/common/defines/VNR_naval_defines.lua b/src/common/defines/VNR_naval_defines.lua index f90bfc2..e1d7237 100755 --- a/src/common/defines/VNR_naval_defines.lua +++ b/src/common/defines/VNR_naval_defines.lua @@ -50,7 +50,7 @@ NDefines.NNavy.SCREENING_EFFICIENCY_PENALTY_ON_MINIMUM_POSITIONING = 0.45; NDefines.NNavy.AA_EFFICIENCY_PENALTY_ON_MINIMUM_POSITIONING = 0.5; NDefines.NNavy.MANPOWER_LOSS_RATIO_ON_STR_LOSS = 0.1; NDefines.NNavy.MANPOWER_LOSS_RATIO_ON_SUNK = 0.25; -NDefines.NNavy.BASE_GUN_COOLDOWNS = { 1.0, 10.0, 1.0 }; +NDefines.NNavy.BASE_GUN_COOLDOWNS = { 1.0, 8.0, 1.0 }; NDefines.NNavy.COMBAT_TORPEDO_CRITICAL_DAMAGE_MULT = 3.0; NDefines.NNavy.PRIDE_OF_THE_FLEET_UNASSIGN_COST = 25; NDefines.NNavy.SUBMARINE_ESCAPE_RATIOS = { 90, 15, 3.0, 1.0, 0.1 } @@ -69,7 +69,7 @@ NDefines.NNavy.AGGRESSION_SETTINGS_VALUES = { }; NDefines.NNavy.GUN_HIT_PROFILES = { -- hit profiles for guns, if target ih profile is lower the gun will have lower accuracy 80.0, -- big guns - 130.0, -- torpedoes + 120.0, -- torpedoes 45.0, -- small guns }; NDefines.NNavy.MISSION_SUPREMACY_RATIOS = { @@ -133,9 +133,8 @@ NDefines.NProduction.EQUIPMENT_MODULE_ADD_XP_COST = 2; NDefines.NProduction.EQUIPMENT_MODULE_REPLACE_XP_COST = 3; NDefines.NProduction.EQUIPMENT_MODULE_CONVERT_XP_COST = 1; NDefines.NProduction.EQUIPMENT_MODULE_REMOVE_XP_COST = 1; -NDefines.NProduction.MIN_NAVAL_EQUIPMENT_CONVERSION_IC_COST_FACTOR = 0.05 +NDefines.NProduction.BASE_NAVAL_EQUIPMENT_CONVERSION_IC_COST_FACTOR = 0.1 NDefines.NProduction.MIN_NAVAL_EQUIPMENT_CONVERSION_RESOURCE_COST_FACTOR = 0.1 -NDefines.NProduction.BASE_FACTORY_SPEED_NAV = 4; NDefines.NIntel.NAVY_SHIP_COUNT_INTEL_MIN = 0; NDefines.NIntel.NAVY_SHIP_COUNT_INTEL_MAX = 0.4; diff --git a/src/common/game_rules/000_naval_rework_rules.txt b/src/common/game_rules/000_naval_rework_rules.txt index b5e3b69..5d665da 100755 --- a/src/common/game_rules/000_naval_rework_rules.txt +++ b/src/common/game_rules/000_naval_rework_rules.txt @@ -50,4 +50,34 @@ allow_ai_tech_auto_unlock = { desc = RULE_ALLOW_AI_TECH_AUTO_UNLOCK_BLOCKED_DESC allow_achievements = yes } +} + +shipyard_output_boost = { + name = RULE_SHIPYARD_OUTPUT_BOOST + group = RULE_GROUP_NAVY_REWORK + + default = { + name = FREE_ALL + text = RULE_OPTION_FREE + desc = RULE_SHIPYARD_OUTPUT_BOOST_FREE_DESC + allow_achievements = yes + } + option = { + name = FREE_AI + text = RULE_OPTION_FREE_AI + desc = RULE_SHIPYARD_OUTPUT_BOOST_FREE_AI_DESC + allow_achievements = yes + } + option = { + name = FREE_PLAYER + text = RULE_OPTION_FREE_PLAYER + desc = RULE_SHIPYARD_OUTPUT_BOOST_FREE_PLAYER_DESC + allow_achievements = yes + } + option = { + name = BLOCKED + text = RULE_OPTION_BLOCKED + desc = RULE_SHIPYARD_OUTPUT_BOOST_BLOCKED_DESC + allow_achievements = yes + } } \ No newline at end of file diff --git a/src/common/ideas/vnr_ai.txt b/src/common/ideas/vnr_ai.txt index 7cc7d36..4ec5c65 100755 --- a/src/common/ideas/vnr_ai.txt +++ b/src/common/ideas/vnr_ai.txt @@ -121,4 +121,12 @@ ideas = { } } } + + hidden_ideas = { + vnr_shipyard_output_boost = { + modifier = { + industrial_capacity_dockyard = 0.6 + } + } + } } \ No newline at end of file diff --git a/src/common/scripted_effects/_add_naval_variants.txt b/src/common/scripted_effects/_add_naval_variants.txt index c1901be..63677b5 100755 --- a/src/common/scripted_effects/_add_naval_variants.txt +++ b/src/common/scripted_effects/_add_naval_variants.txt @@ -10,7 +10,7 @@ ENG_start_naval_variants = { fixed_ship_deck_slot_2 = ship_deck_space fixed_ship_anti_air_slot = ship_anti_air_2 fixed_ship_engine_slot = carrier_ship_engine_2 - fixed_ship_secondaries_slot = dp_ship_secondaries_1 + fixed_ship_secondaries_slot = dp_ship_secondaries_1_bb fixed_ship_armor_slot = ship_armor_cruiser_2 fixed_ship_flight_deck_slot = carrier_armor_deck front_1_custom_slot = ship_deck_space @@ -92,14 +92,14 @@ ENG_start_naval_variants = { fixed_ship_anti_air_slot = ship_anti_air_2 fixed_ship_fire_control_system_slot = ship_fire_control_system_1 fixed_ship_engine_slot = heavy_ship_engine_2 - fixed_ship_secondaries_slot = dp_ship_secondaries_1 + fixed_ship_secondaries_slot = dp_ship_secondaries_1_bb fixed_ship_armor_slot = ship_armor_bb_2 fixed_ship_armor_scheme_slot = ship_scheme_all_or_nothing fixed_ship_torpedo_defense_system_slot = torpedo_belt front_1_custom_slot = ship_anti_air_2 front_2_custom_slot = eng_14in_mk7_quad mid_1_custom_slot = ship_airplane_launcher_1 - mid_2_custom_slot = dp_ship_secondaries_1 + mid_2_custom_slot = dp_ship_secondaries_1_bb rear_1_custom_slot = eng_14in_mk7_quad } } @@ -964,7 +964,7 @@ GER_start_naval_variants = { create_equipment_variant = { name = "Type IIA级" # Type IIA Class parent_version = 0 - icon = "gfx/interface/technologies/generic/generic_midget_submarine.png" + icon = "gfx/interface/technologies/Generic/generic_midget_submarine.png" role_icon_index = 49 type = vnr_ship_hull_submarine_2 name_group = GER_SS_HISTORICAL @@ -978,7 +978,7 @@ GER_start_naval_variants = { create_equipment_variant = { name = "Type IIB级" # Type IIB Class parent_version = 0 - icon = "gfx/interface/technologies/generic/generic_midget_submarine.png" + icon = "gfx/interface/technologies/Generic/generic_midget_submarine.png" role_icon_index = 49 type = vnr_ship_hull_submarine_2 name_group = GER_SS_HISTORICAL @@ -1543,7 +1543,7 @@ JAP_start_naval_variants = { fixed_ship_deck_slot_2 = ship_deck_space fixed_ship_engine_slot = carrier_ship_engine_2 fixed_ship_anti_air_slot = ship_anti_air_2 - fixed_ship_secondaries_slot = dp_ship_secondaries_1 + fixed_ship_secondaries_slot = dp_ship_secondaries_1_bb fixed_ship_armor_slot = ship_armor_cruiser_1 front_1_custom_slot = ship_deck_space } @@ -1559,7 +1559,7 @@ JAP_start_naval_variants = { fixed_ship_deck_slot_2 = ship_deck_space fixed_ship_engine_slot = carrier_ship_engine_2 fixed_ship_anti_air_slot = ship_anti_air_1 - fixed_ship_secondaries_slot = dp_ship_secondaries_1 + fixed_ship_secondaries_slot = dp_ship_secondaries_1_bb front_1_custom_slot = ship_deck_space } } @@ -1575,7 +1575,7 @@ JAP_start_naval_variants = { fixed_ship_deck_slot_2 = ship_deck_space fixed_ship_engine_slot = carrier_ship_engine_1 fixed_ship_anti_air_slot = ship_anti_air_1 - fixed_ship_secondaries_slot = dp_ship_secondaries_1 + fixed_ship_secondaries_slot = dp_ship_secondaries_1_bb } } create_equipment_variant = { @@ -1590,7 +1590,7 @@ JAP_start_naval_variants = { fixed_ship_deck_slot_2 = ship_deck_space fixed_ship_engine_slot = carrier_ship_engine_2 fixed_ship_anti_air_slot = ship_anti_air_2_h - fixed_ship_secondaries_slot = dp_ship_secondaries_1 + fixed_ship_secondaries_slot = dp_ship_secondaries_1_bb fixed_ship_armor_slot = ship_armor_cruiser_heavy_2 fixed_ship_carrier_miscellaneous_slot_1 = carrier_spared_squad mid_1_custom_slot = ship_deck_space @@ -3407,7 +3407,7 @@ USA_start_naval_variants = { fixed_ship_deck_slot_2 = ship_deck_space fixed_ship_anti_air_slot = ship_anti_air_2 fixed_ship_engine_slot = carrier_ship_engine_2 - fixed_ship_secondaries_slot = dp_ship_secondaries_1 + fixed_ship_secondaries_slot = dp_ship_secondaries_1_bb fixed_ship_carrier_miscellaneous_slot_1 = carrier_spared_squad front_1_custom_slot = ship_deck_space mid_1_custom_slot = ship_deck_space @@ -3425,7 +3425,7 @@ USA_start_naval_variants = { fixed_ship_deck_slot_2 = ship_deck_space fixed_ship_anti_air_slot = ship_anti_air_2 fixed_ship_engine_slot = carrier_ship_engine_1 - fixed_ship_secondaries_slot = dp_ship_secondaries_1 + fixed_ship_secondaries_slot = dp_ship_secondaries_1_bb fixed_ship_carrier_miscellaneous_slot_1 = carrier_spared_squad front_1_custom_slot = ship_deck_space mid_1_custom_slot = ship_deck_space @@ -3461,7 +3461,7 @@ USA_start_naval_variants = { fixed_ship_deck_slot_2 = ship_deck_space fixed_ship_engine_slot = carrier_ship_engine_1 fixed_ship_anti_air_slot = ship_anti_air_1 - fixed_ship_secondaries_slot = dp_ship_secondaries_1 + fixed_ship_secondaries_slot = dp_ship_secondaries_1_bb front_1_custom_slot = ship_deck_space mid_1_custom_slot = ship_deck_space } @@ -3490,7 +3490,7 @@ USA_start_naval_variants = { name_group = USA_BB_HISTORICAL modules = { fixed_ship_battery_slot = ship_heavy_battery_2_triple - fixed_ship_secondaries_slot = dp_ship_secondaries_1 + fixed_ship_secondaries_slot = dp_ship_secondaries_1_bb fixed_ship_anti_air_slot = ship_anti_air_2 fixed_ship_fire_control_system_slot = ship_fire_control_system_1 fixed_ship_engine_slot = heavy_ship_engine_2 @@ -3498,7 +3498,7 @@ USA_start_naval_variants = { fixed_ship_armor_scheme_slot = ship_scheme_all_or_nothing fixed_ship_torpedo_defense_system_slot = torpedo_belt front_2_custom_slot = ship_heavy_battery_2_triple - mid_1_custom_slot = dp_ship_secondaries_1 + mid_1_custom_slot = dp_ship_secondaries_1_bb mid_2_custom_slot = ship_anti_air_2 mid_3_custom_slot = empty rear_1_custom_slot = ship_heavy_battery_2_triple diff --git a/src/common/scripted_effects/_vnr_ai.txt b/src/common/scripted_effects/_vnr_ai.txt index b68f8d1..de4a14e 100755 --- a/src/common/scripted_effects/_vnr_ai.txt +++ b/src/common/scripted_effects/_vnr_ai.txt @@ -145,4 +145,33 @@ ai_get_navy_experience = { limit = { has_navy_experience < 50 } navy_experience = 100 } +} + +set_shipyard_output_boost = { + if = { + limit = { + has_game_rule = { rule = shipyard_output_boost option = FREE_ALL } + } + every_country = { + add_ideas = vnr_shipyard_output_boost + } + } + else_if = { + limit = { + has_game_rule = { rule = shipyard_output_boost option = FREE_AI } + } + every_country = { + limit = { is_ai = yes } + add_ideas = vnr_shipyard_output_boost + } + } + else_if = { + limit = { + has_game_rule = { rule = shipyard_output_boost option = FREE_PLAYER } + } + every_country = { + limit = { is_ai = no } + add_ideas = vnr_shipyard_output_boost + } + } } \ No newline at end of file diff --git a/src/common/technologies/MTG_naval.txt b/src/common/technologies/MTG_naval.txt index 8e4c409..267113a 100755 --- a/src/common/technologies/MTG_naval.txt +++ b/src/common/technologies/MTG_naval.txt @@ -2728,6 +2728,7 @@ technologies = { position = { x = 1 y = @1932_module } } dependencies = { + krupp_cemented_steel = 1 basic_heavy_armor = 1 } @@ -2764,13 +2765,14 @@ technologies = { xp_research_bonus = 1.25 research_cost = 1.25 - start_year = 1942 + start_year = 1943 folder = { name = mtgnavalfolder position = { x = 1 y = @1940_module } } dependencies = { + homogeneous_krupp_steel = 1 improved_heavy_armor = 1 } @@ -3089,6 +3091,7 @@ technologies = { enable_equipment_modules = { ship_anti_air_shell + ship_anti_air_circle } folder = { @@ -4393,7 +4396,7 @@ technologies = { research_cost_coeff = 1 } path = { - leads_to_tech = torpedo_computer + leads_to_tech = advanced_torpedo_ballistics research_cost_coeff = 1 } path = { @@ -4437,6 +4440,7 @@ technologies = { sub_ship_engine_3 pressure_hull_3 diving_plane + ship_sub_torpedo_computer_1 } path = { @@ -4493,6 +4497,7 @@ technologies = { enable_equipment_modules = { sub_ship_engine_4 pressure_hull_4 + ship_sub_torpedo_computer_2 } path = { leads_to_tech = improved_submarine_snorkel @@ -4544,6 +4549,9 @@ technologies = { enable_equipments = { vnr_ship_hull_submarine_5 } + enable_equipment_modules = { + ship_sub_torpedo_computer_3 + } research_cost = 2.0 @@ -4745,18 +4753,17 @@ technologies = { } } - torpedo_computer = { - enable_equipment_modules = { - ship_sub_torpedo_computer - } - + advanced_torpedo_ballistics = { xp_research_type = navy xp_boost_cost = 20 xp_research_bonus = 1.50 - research_cost = 1 + research_cost = 0.8 start_year = 1939 + navy_submarine_attack_factor = 0.1 + naval_torpedo_screen_penetration_factor = 0.1 + folder = { name = mtgnavalfolder position = { x = -2 y = @1932_module } diff --git a/src/common/technologies/MTG_naval_Support.txt b/src/common/technologies/MTG_naval_Support.txt index 43684a7..23134d0 100755 --- a/src/common/technologies/MTG_naval_Support.txt +++ b/src/common/technologies/MTG_naval_Support.txt @@ -173,6 +173,7 @@ technologies = { dp_light_battery_1 dp_light_battery_1_single dp_ship_secondaries_1 + dp_ship_secondaries_1_bb ship_anti_air_2_h } @@ -958,6 +959,7 @@ technologies = { dp_light_battery_2 dp_light_battery_2_single dp_ship_secondaries_2 + dp_ship_secondaries_2_bb } path = { @@ -1004,6 +1006,7 @@ technologies = { dp_light_battery_3 dp_light_battery_3_single dp_ship_secondaries_3 + dp_ship_secondaries_3_bb } on_research_complete = { @@ -1050,6 +1053,7 @@ technologies = { dp_light_battery_4 dp_light_battery_4_single dp_ship_secondaries_4 + dp_ship_secondaries_4_bb } on_research_complete = { @@ -1400,7 +1404,7 @@ technologies = { enable_equipment_modules = { ship_torpedo_1 torpedo_mounting - ship_torpedo_fire_control + ship_torpedo_fire_control_1 ship_torpedo_bb ship_torpedo_sub_1 } @@ -1891,6 +1895,7 @@ technologies = { enable_equipment_modules = { ship_torpedo_3 ship_torpedo_sub_3 + ship_torpedo_fire_control_2 } @@ -1925,6 +1930,7 @@ technologies = { enable_equipment_modules = { ship_torpedo_4 ship_torpedo_sub_4 + ship_torpedo_fire_control_3 } on_research_complete = { @@ -1964,6 +1970,7 @@ technologies = { enable_equipment_modules = { ship_torpedo_5 ship_torpedo_sub_5 + ship_torpedo_fire_control_4 } on_research_complete = { diff --git a/src/common/technologies/naval_doctrine.txt b/src/common/technologies/naval_doctrine.txt index 744613f..1675dc2 100755 --- a/src/common/technologies/naval_doctrine.txt +++ b/src/common/technologies/naval_doctrine.txt @@ -2393,6 +2393,7 @@ technologies = { carrier = { anti_air_attack = 0.1 surface_visibility = -0.1 + surface_detection = 0.1 } navy_carrier_air_attack_factor = 0.1 sortie_efficiency = 0.1 @@ -2442,8 +2443,8 @@ technologies = { mass_air_raid = { # EFFECT ############# - naval_strike_targetting_factor = 0.1 - naval_strike_attack_factor = 0.1 + naval_strike_targetting_factor = 0.15 + naval_strike_attack_factor = 0.15 port_strike = 0.25 ######## diff --git a/src/common/units/a_battlecarrier.txt b/src/common/units/a_battlecarrier.txt index b3c0c7a..8f458a1 100755 --- a/src/common/units/a_battlecarrier.txt +++ b/src/common/units/a_battlecarrier.txt @@ -7,14 +7,16 @@ sub_units = { type = { capital_ship carrier } need_equipment = { ship_hull_heavy = 1 } need_equipment_modules = { - ship_deck_space_bb = 1 + any = { + ship_deck_space_bb = 1 + } } max_organisation = 60 supply_consumption = 0.3 critical_parts = { rudder_jammed destroyed_ammo_storage broken_propeller on_fire } - critical_part_damage_chance_mult = 1.2 + critical_part_damage_chance_mult = 1.3 hit_profile_mult = 1.5 } diff --git a/src/common/units/a_medium_cruiser.txt b/src/common/units/a_medium_cruiser.txt index 40dcd3d..268f2f5 100755 --- a/src/common/units/a_medium_cruiser.txt +++ b/src/common/units/a_medium_cruiser.txt @@ -1,6 +1,6 @@ sub_units = { medium_cruiser = { - sprite = heavy_cruiser + sprite = medium_cruiser map_icon_category = ship priority = 5 active = yes diff --git a/src/common/units/battlecruiser.txt b/src/common/units/battlecruiser.txt index 444308d..918a53b 100755 --- a/src/common/units/battlecruiser.txt +++ b/src/common/units/battlecruiser.txt @@ -20,7 +20,7 @@ sub_units = { supply_consumption = 0.33 critical_parts = { rudder_jammed destroyed_ammo_storage broken_propeller on_fire } - critical_part_damage_chance_mult = 1 + critical_part_damage_chance_mult = 1.25 hit_profile_mult = 1.0 } diff --git a/src/common/units/critical_parts/00_critical_parts.txt b/src/common/units/critical_parts/00_critical_parts.txt index eada3fb..c910d50 100755 --- a/src/common/units/critical_parts/00_critical_parts.txt +++ b/src/common/units/critical_parts/00_critical_parts.txt @@ -181,7 +181,8 @@ critical_parts = { icon = "GFX_default_critical_damage_icons" frame = 6 stat_penalties = { - max_strength = -0.75 + navy_org_factor = -0.9 + naval_morale_factor = -1 } chance = 0.1 org_damage_multiplier = 3 diff --git a/src/common/units/equipment/modules/00_ship_modules_electronics.txt b/src/common/units/equipment/modules/00_ship_modules_electronics.txt index 4d14dbe..9432be4 100755 --- a/src/common/units/equipment/modules/00_ship_modules_electronics.txt +++ b/src/common/units/equipment/modules/00_ship_modules_electronics.txt @@ -257,33 +257,150 @@ equipment_modules = { } critical_parts = { damaged_fire_control } } - ship_sub_torpedo_computer = { + ship_sub_torpedo_computer_1 = { category = sub_fire_control_system gui_category = ship_fire_control_system sfx = sfx_ui_sd_module_sonar add_stats = { - build_cost_ic = 250 - naval_torpedo_hit_chance_factor = 0.05 + build_cost_ic = 200 + naval_torpedo_hit_chance_factor = 0.075 + } + can_convert_from = { + module_category = sub_fire_control_system + convert_cost_ic = 140 } } - ship_torpedo_fire_control = { - category = ship_fire_control_system - multiply_stats = { - naval_torpedo_hit_chance_factor = 0.03 - } + ship_sub_torpedo_computer_2 = { + category = sub_fire_control_system + parent = ship_sub_torpedo_computer_1 + gui_category = ship_fire_control_system + sfx = sfx_ui_sd_module_sonar + add_stats = { - build_cost_ic = 150 + build_cost_ic = 250 + naval_torpedo_hit_chance_factor = 0.1 + } + can_convert_from = { + module = sub_fire_control_system_1 + convert_cost_ic = 150 + } + can_convert_from = { + module_category = sub_fire_control_system + convert_cost_ic = 180 + } + } + ship_sub_torpedo_computer_3 = { + category = sub_fire_control_system + parent = ship_sub_torpedo_computer_2 + gui_category = ship_fire_control_system + sfx = sfx_ui_sd_module_sonar + + add_stats = { + build_cost_ic = 300 + naval_torpedo_hit_chance_factor = 0.125 + fuel_consumption = 3 + } + can_convert_from = { + module = sub_fire_control_system_2 + convert_cost_ic = 200 + } + can_convert_from = { + module_category = sub_fire_control_system + convert_cost_ic = 220 + } + } + ship_torpedo_fire_control_1 = { + category = ship_fire_control_system + add_stats = { + build_cost_ic = 120 + naval_torpedo_hit_chance_factor = 0.05 + } + can_convert_from = { + module = ship_torpedo_fire_control_2 + convert_cost_ic = 100 + } + can_convert_from = { + module = ship_torpedo_fire_control_3 + convert_cost_ic = 80 + } + can_convert_from = { + module = ship_torpedo_fire_control_4 + convert_cost_ic = 60 + } + } + ship_torpedo_fire_control_2 = { + category = ship_fire_control_system + parent = ship_torpedo_fire_control_1 + gfx = ship_sub_torpedo_computer_1 + add_stats = { + build_cost_ic = 160 + naval_torpedo_hit_chance_factor = 0.075 + } + can_convert_from = { + module = ship_torpedo_fire_control_1 + convert_cost_ic = 120 + } + can_convert_from = { + module = ship_torpedo_fire_control_3 + convert_cost_ic = 100 + } + can_convert_from = { + module = ship_torpedo_fire_control_4 + convert_cost_ic = 80 + } + } + ship_torpedo_fire_control_3 = { + category = ship_fire_control_system + parent = ship_torpedo_fire_control_2 + gfx = ship_sub_torpedo_computer_2 + add_stats = { + build_cost_ic = 200 + naval_torpedo_hit_chance_factor = 0.1 + } + can_convert_from = { + module = ship_torpedo_fire_control_1 + convert_cost_ic = 180 + } + can_convert_from = { + module = ship_torpedo_fire_control_2 + convert_cost_ic = 120 + } + can_convert_from = { + module = ship_torpedo_fire_control_4 + convert_cost_ic = 100 + } + } + ship_torpedo_fire_control_4 = { + category = ship_fire_control_system + parent = ship_torpedo_fire_control_3 + gfx = ship_sub_torpedo_computer_3 + add_stats = { + build_cost_ic = 250 + naval_torpedo_hit_chance_factor = 0.125 + fuel_consumption = 3 + } + can_convert_from = { + module = ship_torpedo_fire_control_1 + convert_cost_ic = 230 + } + can_convert_from = { + module = ship_torpedo_fire_control_2 + convert_cost_ic = 180 + } + can_convert_from = { + module = ship_torpedo_fire_control_3 + convert_cost_ic = 150 } } ship_aa_fire_control = { category = generic_miscellaneous gui_category = ship_miscellaneous multiply_stats = { - anti_air_attack = 0.05 + anti_air_attack = 0.25 } add_stats = { - build_cost_ic = 100 + build_cost_ic = 250 } } } \ No newline at end of file diff --git a/src/common/units/equipment/modules/00_ship_modules_gun.txt b/src/common/units/equipment/modules/00_ship_modules_gun.txt index aa45b95..f207dd5 100755 --- a/src/common/units/equipment/modules/00_ship_modules_gun.txt +++ b/src/common/units/equipment/modules/00_ship_modules_gun.txt @@ -1861,7 +1861,7 @@ equipment_modules = { reliability = -0.12 } multiply_stats = { - naval_speed = -0.08 + naval_speed = -0.065 max_strength = 0.15 } add_average_stats = { @@ -1885,7 +1885,7 @@ equipment_modules = { reliability = -0.12 } multiply_stats = { - naval_speed = -0.09 + naval_speed = -0.075 max_strength = 0.16 } add_average_stats = { @@ -1910,7 +1910,7 @@ equipment_modules = { naval_heavy_gun_hit_chance_factor = -0.015 } multiply_stats = { - naval_speed = -0.1 + naval_speed = -0.105 max_strength = 0.17 } add_average_stats = { @@ -2092,6 +2092,97 @@ equipment_modules = { critical_parts = { damaged_secondaries } } + dp_ship_secondaries_1_bb = { + category = ship_dp_secondaries_bb + gui_category = ship_secondaries + gfx = dp_ship_secondaries_1 + sfx = sfx_ui_sd_module_turret + add_stats = { + lg_attack = 2 + anti_air_attack = 1.5 + build_cost_ic = 180 + } + add_average_stats = { + lg_armor_piercing = 5 + } + + multiply_stats = { + naval_speed = -0.01 + } + + dismantle_cost_ic = 36 + critical_parts = { damaged_secondaries } + } + + dp_ship_secondaries_2_bb = { + category = ship_dp_secondaries_bb + gui_category = ship_secondaries + parent = dp_ship_secondaries_1 + gfx = dp_ship_secondaries_2 + sfx = sfx_ui_sd_module_turret + add_stats = { + lg_attack = 3 + anti_air_attack = 2.5 + build_cost_ic = 200 + } + + multiply_stats = { + naval_speed = -0.01 + } + add_average_stats = { + lg_armor_piercing = 7.5 + } + + dismantle_cost_ic = 40 + critical_parts = { damaged_secondaries } + } + + dp_ship_secondaries_3_bb = { + category = ship_dp_secondaries_bb + gui_category = ship_secondaries + parent = dp_ship_secondaries_2 + gfx = dp_ship_secondaries_3 + sfx = sfx_ui_sd_module_turret + add_stats = { + lg_attack = 4 + anti_air_attack = 3 + build_cost_ic = 240 + } + + multiply_stats = { + naval_speed = -0.02 + } + add_average_stats = { + lg_armor_piercing = 9 + } + + dismantle_cost_ic = 48 + critical_parts = { damaged_secondaries } + } + + dp_ship_secondaries_4_bb = { + category = ship_dp_secondaries_bb + gui_category = ship_secondaries + parent = dp_ship_secondaries_3 + gfx = dp_ship_secondaries_4 + sfx = sfx_ui_sd_module_turret + add_stats = { + lg_attack = 5 + anti_air_attack = 3.5 + build_cost_ic = 290 + } + + multiply_stats = { + naval_speed = -0.03 + } + add_average_stats = { + lg_armor_piercing = 11 + } + + dismantle_cost_ic = 58 + critical_parts = { damaged_secondaries } + } + ################ ## MISSILES ## @@ -2100,7 +2191,7 @@ equipment_modules = { category = ship_missile add_stats = { - build_cost_ic = 2000 + build_cost_ic = 1000 hg_attack = 30 lg_attack = 20 naval_heavy_gun_hit_chance_factor = 0.05 @@ -2116,13 +2207,13 @@ equipment_modules = { naval_speed = -0.1 surface_visibility = -0.025 } - dismantle_cost_ic = 1800 + dismantle_cost_ic = 800 } ship_cruise_missile_1 = { category = ship_missile add_stats = { - build_cost_ic = 1400 + build_cost_ic = 800 hg_attack = 25 naval_heavy_gun_hit_chance_factor = -0.8 reliability = -0.1 @@ -2130,7 +2221,7 @@ equipment_modules = { multiply_stats = { naval_speed = -0.1 } - dismantle_cost_ic = 1100 + dismantle_cost_ic = 600 } ship_cruise_missile_sub_1 = { category = ship_sub_missile diff --git a/src/common/units/equipment/modules/00_ship_modules_protection.txt b/src/common/units/equipment/modules/00_ship_modules_protection.txt index 9177dfc..8e67425 100755 --- a/src/common/units/equipment/modules/00_ship_modules_protection.txt +++ b/src/common/units/equipment/modules/00_ship_modules_protection.txt @@ -32,7 +32,7 @@ equipment_modules = { steel = 1 } } - dismantle_cost_ic = 2000 + dismantle_cost_ic = 3500 } ship_armor_bc_1 = { abbreviation = "sdf" @@ -58,7 +58,7 @@ equipment_modules = { steel = 1 } } - dismantle_cost_ic = 1500 + dismantle_cost_ic = 2500 } ship_armor_bb_2 = { abbreviation = "sdg" @@ -93,7 +93,7 @@ equipment_modules = { steel = 1 } } - dismantle_cost_ic = 2800 + dismantle_cost_ic = 4000 } ship_armor_bc_2 = { abbreviation = "sdh" @@ -127,7 +127,7 @@ equipment_modules = { steel = 1 } } - dismantle_cost_ic = 2200 + dismantle_cost_ic = 3000 } ship_armor_bb_3 = { abbreviation = "sdi" @@ -163,7 +163,7 @@ equipment_modules = { steel = 1 } } - dismantle_cost_ic = 3500 + dismantle_cost_ic = 4500 } ship_armor_bc_3 = { abbreviation = "sdj" @@ -199,7 +199,7 @@ equipment_modules = { steel = 1 } } - dismantle_cost_ic = 3000 + dismantle_cost_ic = 3500 } ship_armor_bb_4 = { abbreviation = "sdj1" @@ -234,7 +234,7 @@ equipment_modules = { steel = 1 } } - dismantle_cost_ic = 4000 + dismantle_cost_ic = 5000 } ship_armor_bc_4 = { abbreviation = "sdj2" @@ -269,7 +269,7 @@ equipment_modules = { steel = 1 } } - dismantle_cost_ic = 3500 + dismantle_cost_ic = 4000 } ship_armor_shbb = { abbreviation = "sk" @@ -306,7 +306,7 @@ equipment_modules = { steel = 1 } } - dismantle_cost_ic = 4800 + dismantle_cost_ic = 5000 } ship_armor_shbb_2 = { category = ship_super_heavy_armor @@ -350,7 +350,7 @@ equipment_modules = { steel = 1 } } - dismantle_cost_ic = 5400 + dismantle_cost_ic = 6000 } @@ -366,7 +366,7 @@ equipment_modules = { build_cost_ic = 0.05 naval_speed = -0.05 } - dismantle_cost_ic = 1250 + dismantle_cost_ic = 1500 add_stats = { armor_value = 8 @@ -386,7 +386,7 @@ equipment_modules = { naval_speed = -0.075 max_strength = 0.05 } - dismantle_cost_ic = 1500 + dismantle_cost_ic = 1750 add_stats = { armor_value = 10 @@ -414,7 +414,7 @@ equipment_modules = { naval_speed = -0.1 max_strength = 0.1 } - dismantle_cost_ic = 1750 + dismantle_cost_ic = 2000 add_stats = { armor_value = 12 @@ -442,7 +442,7 @@ equipment_modules = { naval_speed = -0.125 max_strength = 0.15 } - dismantle_cost_ic = 2000 + dismantle_cost_ic = 2250 add_stats = { armor_value = 14 @@ -477,7 +477,7 @@ equipment_modules = { add_stats = { armor_value = 10 } - dismantle_cost_ic = 1200 + dismantle_cost_ic = 1500 can_convert_from = { module_category = ship_cruiser_heavy_armor convert_cost_ic = 1500 @@ -502,7 +502,7 @@ equipment_modules = { naval_torpedo_damage_reduction_factor = 0.05 reliability = 0.05 } - dismantle_cost_ic = 1600 + dismantle_cost_ic = 2000 can_convert_from = { module_category = ship_cruiser_heavy_armor convert_cost_ic = 2000 @@ -532,7 +532,7 @@ equipment_modules = { naval_torpedo_damage_reduction_factor = 0.05 reliability = 0.05 } - dismantle_cost_ic = 2000 + dismantle_cost_ic = 2500 can_convert_from = { module_category = ship_cruiser_heavy_armor convert_cost_ic = 2500 @@ -562,7 +562,7 @@ equipment_modules = { naval_torpedo_damage_reduction_factor = 0.05 reliability = 0.05 } - dismantle_cost_ic = 2400 + dismantle_cost_ic = 3000 can_convert_from = { module_category = ship_cruiser_heavy_armor convert_cost_ic = 3000 diff --git a/src/common/units/equipment/modules/00_ship_modules_role.txt b/src/common/units/equipment/modules/00_ship_modules_role.txt index 490cf62..7df3616 100755 --- a/src/common/units/equipment/modules/00_ship_modules_role.txt +++ b/src/common/units/equipment/modules/00_ship_modules_role.txt @@ -95,25 +95,27 @@ equipment_modules = { } } ship_hull_light_role_dda = { - category = dd_role + category = dd_role_missile + gui_category = dd_role add_stats = { reliability = 0.1 } multiply_stats = { - build_cost_ic = 0.1 + build_cost_ic = 0.15 } forbid_module_categories = { ship_missile } } ship_hull_light_role_ddg = { - category = dd_role + category = dd_role_missile + gui_category = dd_role add_stats = { reliability = 0.2 } multiply_stats = { naval_speed = 0.05 - build_cost_ic = 0.1 + build_cost_ic = 0.25 } } @@ -252,11 +254,12 @@ equipment_modules = { } } ship_hull_cruiser_role_cg = { - category = c_role + category = c_role_missile + gui_category = c_role add_equipment_type = capital_ship multiply_stats = { anti_air_attack = 0.1 - build_cost_ic = 0.1 + build_cost_ic = 0.25 } add_stats = { max_strength = 200 diff --git a/src/common/units/equipment/modules/00_ship_modules_support.txt b/src/common/units/equipment/modules/00_ship_modules_support.txt index 4396f22..013c463 100755 --- a/src/common/units/equipment/modules/00_ship_modules_support.txt +++ b/src/common/units/equipment/modules/00_ship_modules_support.txt @@ -797,14 +797,14 @@ equipment_modules = { surface_detection = 7 sub_detection = 3.5 sub_attack = 2.5 - build_cost_ic = 200 + build_cost_ic = 250 } can_convert_from = { module_category = ship_airplane_launcher convert_cost_ic = 80 } multiply_stats = { - naval_speed = -0.003 + naval_speed = -0.004 } } ship_helipad = { @@ -866,6 +866,7 @@ equipment_modules = { gfx = ship_extra_fuel_tank add_stats = { naval_range = 2000 + build_cost_ic = 250 } multiply_stats = { naval_speed = -0.05 @@ -876,6 +877,7 @@ equipment_modules = { category = ship_auxiliary add_stats = { naval_range = 1000 + build_cost_ic = 100 } multiply_stats = { reliability = 0.05 @@ -887,6 +889,9 @@ equipment_modules = { naval_range = 0.2 naval_speed = -0.05 } + add_stats = { + build_cost_ic = 350 + } } @@ -1043,19 +1048,19 @@ equipment_modules = { category = heavy_miscellaneous gui_category = ship_miscellaneous add_stats = { - reliability = -0.05 + reliability = -0.1 } multiply_stats = { - anti_air_attack = 0.02 - build_cost_ic = 0.01 + anti_air_attack = 0.2 + build_cost_ic = 0.05 } } ship_vt_shell = { category = generic_miscellaneous gui_category = ship_miscellaneous multiply_stats = { - anti_air_attack = 0.04 - build_cost_ic = 0.02 + anti_air_attack = 0.25 + build_cost_ic = 0.08 } } crewed_torpedo = { @@ -1196,4 +1201,15 @@ equipment_modules = { steel = -3 } } + ship_anti_air_circle = { + category = heavy_miscellaneous + gui_category = ship_anti_air + multiply_stats = { + anti_air_attack = 0.35 + build_cost_ic = 0.15 + } + build_cost_resources = { + steel = 1 + } + } } \ No newline at end of file diff --git a/src/common/units/equipment/ship_hull_carrier.txt b/src/common/units/equipment/ship_hull_carrier.txt index 0176288..a62c5eb 100755 --- a/src/common/units/equipment/ship_hull_carrier.txt +++ b/src/common/units/equipment/ship_hull_carrier.txt @@ -48,7 +48,7 @@ equipments = { } fixed_ship_secondaries_slot = { required = no - allowed_module_categories = { ship_secondaries ship_dp_secondaries } + allowed_module_categories = { ship_secondaries ship_dp_secondaries_bb } } fixed_ship_armor_slot = { required = no @@ -72,9 +72,8 @@ equipments = { allowed_module_categories = { ship_deck_space ship_deck_space_small - ship_carrier_armor ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb } } } @@ -102,7 +101,7 @@ equipments = { hg_attack = 0 torpedo_attack = 0 - sub_attack = 3 + sub_attack = 1.5 anti_air_attack = 0 @@ -171,7 +170,7 @@ equipments = { fixed_ship_engine_slot = cruiser_ship_engine_1 fixed_ship_secondaries_slot = empty } - naval_range = 4000 + naval_range = 3000 max_strength = 125 @@ -204,7 +203,7 @@ equipments = { } fixed_ship_secondaries_slot = { required = no - allowed_module_categories = { ship_secondaries ship_dp_secondaries ship_medium_battery_single ship_secondaries_special } + allowed_module_categories = { ship_secondaries ship_dp_secondaries_bb ship_medium_battery_single ship_secondaries_special } } fixed_ship_armor_slot = inherit fixed_ship_carrier_miscellaneous_slot_1 = inherit @@ -214,10 +213,9 @@ equipments = { required = no allowed_module_categories = { ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_deck_space ship_deck_space_small - ship_carrier_armor } } mid_2_custom_slot = { @@ -226,7 +224,6 @@ equipments = { ship_secondaries ship_deck_space ship_deck_space_small - ship_carrier_armor } } } @@ -237,9 +234,9 @@ equipments = { } naval_range = 4000 reliability = 0.65 - max_strength = 250 + max_strength = 220 naval_speed = 26.5 - surface_visibility = 30 + surface_visibility = 33 build_cost_ic = 2800 @@ -284,7 +281,7 @@ equipments = { } fixed_ship_secondaries_slot = { required = no - allowed_module_categories = { ship_secondaries ship_dp_secondaries } + allowed_module_categories = { ship_secondaries ship_dp_secondaries_bb } } fixed_ship_armor_slot = inherit fixed_ship_carrier_miscellaneous_slot_1 = inherit @@ -296,9 +293,8 @@ equipments = { allowed_module_categories = { ship_deck_space ship_deck_space_small - ship_carrier_armor ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb } } mid_1_custom_slot = { @@ -306,9 +302,8 @@ equipments = { allowed_module_categories = { ship_deck_space ship_deck_space_small - ship_carrier_armor ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb } } } @@ -344,7 +339,6 @@ equipments = { ship_anti_air ship_deck_space ship_deck_space_small - ship_carrier_armor } } front_2_custom_slot = { @@ -359,10 +353,9 @@ equipments = { required = no allowed_module_categories = { ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_deck_space ship_deck_space_small - ship_carrier_armor } } mid_2_custom_slot = { @@ -372,7 +365,7 @@ equipments = { carrier_side_lift carrier_angled_deck ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_deck_space ship_deck_space_small } @@ -431,7 +424,6 @@ equipments = { ship_anti_air ship_deck_space ship_deck_space_small - ship_carrier_armor } } front_2_custom_slot = { @@ -446,10 +438,9 @@ equipments = { required = no allowed_module_categories = { ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_deck_space ship_deck_space_small - ship_carrier_armor steam_catapult carrier_side_lift carrier_angled_deck @@ -459,10 +450,9 @@ equipments = { required = no allowed_module_categories = { ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_deck_space ship_deck_space_small - ship_carrier_armor steam_catapult carrier_side_lift carrier_angled_deck @@ -472,7 +462,7 @@ equipments = { required = no allowed_module_categories = { ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_anti_air carrier_side_lift } @@ -585,7 +575,7 @@ equipments = { } fixed_ship_secondaries_slot = { required = no - allowed_module_categories = { ship_secondaries ship_dp_secondaries } + allowed_module_categories = { ship_secondaries ship_dp_secondaries_bb } } fixed_ship_armor_slot = { required = yes @@ -614,7 +604,7 @@ equipments = { required = no allowed_module_categories = { ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_deck_space ship_deck_space_big steam_catapult @@ -627,7 +617,7 @@ equipments = { required = no allowed_module_categories = { ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_anti_air ship_missile_aa carrier_side_lift diff --git a/src/common/units/equipment/ship_hull_cruiser.txt b/src/common/units/equipment/ship_hull_cruiser.txt index 75249fb..7162453 100755 --- a/src/common/units/equipment/ship_hull_cruiser.txt +++ b/src/common/units/equipment/ship_hull_cruiser.txt @@ -165,6 +165,18 @@ equipments = { category = seaplane_hangar count < 3 } + module_count_limit = { + module = full_missile_upgrade + count < 2 + } + module_count_limit = { + module = economical_nuclear_reactor_cruiser + count < 2 + } + module_count_limit = { + module = ship_display_system + count < 2 + } default_modules = { fixed_ship_battery_slot = empty @@ -731,7 +743,10 @@ equipments = { fixed_ship_secondaries_slot = inherit fixed_ship_armor_slot = inherit fixed_ship_airplane_launcher_slot = inherit - fixed_ship_role_slot = inherit + fixed_ship_role_slot = { + required = yes + allowed_module_categories = { c_role c_role_missile } + } fixed_ship_extra_secondaries_slot = inherit front_1_custom_slot = { required = no @@ -863,7 +878,10 @@ equipments = { fixed_ship_secondaries_slot = inherit fixed_ship_armor_slot = inherit fixed_ship_airplane_launcher_slot = inherit - fixed_ship_role_slot = inherit + fixed_ship_role_slot = { + required = yes + allowed_module_categories = { c_role c_role_missile } + } fixed_ship_extra_secondaries_slot = inherit fixed_ship_extra_missile_slot = fixed_ship_extra_secondaries_slot front_1_custom_slot = { @@ -953,18 +971,6 @@ equipments = { category = ship_missile_aa count < 8 } - module_count_limit = { - module = full_missile_upgrade - count < 2 - } - module_count_limit = { - module = economical_nuclear_reactor_cruiser - count < 2 - } - module_count_limit = { - module = ship_display_system - count < 2 - } default_modules = { fixed_ship_engine_slot = cruiser_ship_engine_5 } diff --git a/src/common/units/equipment/ship_hull_heavy.txt b/src/common/units/equipment/ship_hull_heavy.txt index 905fe87..2ed9780 100755 --- a/src/common/units/equipment/ship_hull_heavy.txt +++ b/src/common/units/equipment/ship_hull_heavy.txt @@ -43,7 +43,7 @@ equipments = { } fixed_ship_secondaries_slot = { required = no - allowed_module_categories = { ship_secondaries ship_dp_secondaries ship_torpedo_bb } + allowed_module_categories = { ship_secondaries ship_dp_secondaries_bb ship_torpedo_bb } } fixed_ship_armor_slot = { required = yes @@ -100,7 +100,7 @@ equipments = { ship_heavy_battery_quad ship_anti_air ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_airplane_launcher } } @@ -117,7 +117,7 @@ equipments = { ship_heavy_battery_triple ship_heavy_battery_quad ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_airplane_launcher ship_deck_space_bb } @@ -169,7 +169,7 @@ equipments = { surface_detection = 20 sub_detection = 1 - surface_visibility = 26 + surface_visibility = 36 naval_speed = 30 reliability = 0.80 @@ -203,16 +203,50 @@ equipments = { can_convert_from = { vnr_ship_hull_pre_dreadnought } visual_level = 0 module_slots = { - fixed_ship_battery_slot = inherit - fixed_ship_anti_air_slot = inherit - fixed_ship_fire_control_system_slot = inherit - fixed_ship_radar_slot = inherit - fixed_ship_engine_slot = inherit - fixed_ship_secondaries_slot = inherit - fixed_ship_armor_slot = inherit - fixed_ship_airplane_launcher_slot = inherit - fixed_ship_extra_secondaries_slot = inherit - fixed_ship_armor_scheme_slot = inherit + fixed_ship_battery_slot = { + required = yes + allowed_module_categories = { ship_heavy_battery } + } + fixed_ship_anti_air_slot = { + required = no + allowed_module_categories = { ship_anti_air } + } + fixed_ship_fire_control_system_slot = { + required = no + allowed_module_categories = { ship_fire_control_system } + } + fixed_ship_radar_slot = { + required = no + allowed_module_categories = { ship_radar ship_mast } + } + fixed_ship_engine_slot = { + required = yes + allowed_module_categories = { heavy_ship_engine } + } + fixed_ship_secondaries_slot = { + required = no + allowed_module_categories = { ship_secondaries ship_dp_secondaries_bb ship_torpedo_bb } + } + fixed_ship_armor_slot = { + required = yes + allowed_module_categories = { ship_heavy_armor } + } + fixed_ship_airplane_launcher_slot = { + required = no + allowed_module_categories = { ship_airplane_launcher generic_miscellaneous } + } + fixed_ship_extra_secondaries_slot = { + required = no + allowed_module_categories = { heavy_miscellaneous generic_miscellaneous } + } + fixed_ship_armor_scheme_slot = { + required = yes + allowed_module_categories = { armor_scheme } + } + fixed_ship_torpedo_defense_system_slot = { + required = no + allowed_module_categories = { torpedo_defense_system } + } front_1_custom_slot = { required = no allowed_module_categories = { @@ -225,7 +259,7 @@ equipments = { ship_torpedo ship_anti_air ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_airplane_launcher } } @@ -235,8 +269,6 @@ equipments = { ship_anti_air ship_airplane_launcher ship_heavy_battery - ship_heavy_battery_triple - ship_heavy_battery_quad } } } @@ -247,7 +279,7 @@ equipments = { mid_1_custom_slot = empty rear_1_custom_slot = empty } - naval_range = 2250 + naval_range = 2000 max_strength = 180 naval_speed = 21 @@ -293,7 +325,7 @@ equipments = { } fixed_ship_secondaries_slot = { required = no - allowed_module_categories = { ship_secondaries ship_dp_secondaries ship_torpedo_bb } + allowed_module_categories = { ship_secondaries ship_dp_secondaries_bb ship_torpedo_bb } } fixed_ship_armor_slot = { required = yes @@ -350,7 +382,7 @@ equipments = { ship_heavy_battery_quad ship_anti_air ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_airplane_launcher } } @@ -367,7 +399,7 @@ equipments = { ship_heavy_battery_triple ship_heavy_battery_quad ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_airplane_launcher ship_deck_space_bb } @@ -395,6 +427,7 @@ equipments = { reliability = 0.70 naval_speed = 27 fuel_consumption = 63 + surface_visibility = 38 build_cost_ic = 2200 } @@ -429,6 +462,7 @@ equipments = { reliability = 0.75 naval_speed = 27.5 fuel_consumption = 67 + surface_visibility = 36 build_cost_ic = 2600 manpower = 2200 } @@ -456,6 +490,7 @@ equipments = { reliability = 0.85 fuel_consumption = 67 naval_speed = 32 + surface_visibility = 31 build_cost_ic = 2700 manpower = 2500 @@ -484,7 +519,7 @@ equipments = { max_strength = 320 reliability = 0.9 fuel_consumption = 67 - + surface_visibility = 29 build_cost_ic = 3000 manpower = 2800 @@ -550,7 +585,7 @@ equipments = { ship_heavy_battery_quad ship_anti_air ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_airplane_launcher ship_missile ship_missile_aa @@ -569,7 +604,7 @@ equipments = { ship_heavy_battery_triple ship_heavy_battery_quad ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_airplane_launcher ship_missile ship_missile_aa @@ -590,6 +625,7 @@ equipments = { max_strength = 350 naval_speed = 30.5 fuel_consumption = 67 + surface_visibility = 27 reliability = 0.95 build_cost_ic = 3300 @@ -629,7 +665,7 @@ equipments = { } fixed_ship_secondaries_slot = { required = no - allowed_module_categories = { ship_secondaries ship_dp_secondaries ship_torpedo_bb } + allowed_module_categories = { ship_secondaries ship_dp_secondaries_bb ship_torpedo_bb } } fixed_ship_armor_slot = { required = yes @@ -671,7 +707,7 @@ equipments = { allowed_module_categories = { ship_anti_air ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_heavy_battery ship_heavy_battery_triple ship_heavy_battery_quad @@ -689,7 +725,7 @@ equipments = { allowed_module_categories = { ship_anti_air ship_secondaries - ship_dp_secondaries + ship_dp_secondaries_bb ship_heavy_battery ship_heavy_battery_triple ship_heavy_battery_quad @@ -715,10 +751,10 @@ equipments = { } naval_range = 4500 naval_speed = 26.5 - max_strength = 330 + max_strength = 350 fuel_consumption = 75 reliability = 0.9 - surface_visibility = 35 + surface_visibility = 42 build_cost_ic = 3800 resources = { steel = 4 diff --git a/src/common/units/equipment/ship_hull_light.txt b/src/common/units/equipment/ship_hull_light.txt index abc6fd0..047b8a3 100755 --- a/src/common/units/equipment/ship_hull_light.txt +++ b/src/common/units/equipment/ship_hull_light.txt @@ -132,7 +132,10 @@ equipments = { category = ship_sonar count < 2 } - + module_count_limit = { + category = ship_missile + count < 3 + } module_count_limit = { category = ship_missile_aa count < 3 @@ -318,7 +321,10 @@ equipments = { fixed_ship_radar_slot = inherit fixed_ship_torpedo_slot = inherit fixed_ship_engine_slot = inherit - fixed_ship_role_slot = inherit + fixed_ship_role_slot = { + required = yes + allowed_module_categories = { dd_role dd_role_missile } + } fixed_ship_extra_secondaries_slot = inherit front_1_custom_slot = { required = no @@ -403,7 +409,10 @@ equipments = { fixed_ship_radar_slot = inherit fixed_ship_torpedo_slot = inherit fixed_ship_engine_slot = inherit - fixed_ship_role_slot = inherit + fixed_ship_role_slot = { + required = yes + allowed_module_categories = { dd_role dd_role_missile } + } fixed_ship_extra_secondaries_slot = inherit front_1_custom_slot = { required = no @@ -484,14 +493,6 @@ equipments = { manpower = 600 naval_speed = 36.5 - module_count_limit = { - category = ship_missile - count < 3 - } - module_count_limit = { - category = ship_missile_aa - count < 3 - } module_count_limit = { category = ship_anti_air count < 5 diff --git a/src/common/units/names_ships/ITA_ship_names.txt b/src/common/units/names_ships/ITA_ship_names.txt index bedb7f6..f849bb3 100755 --- a/src/common/units/names_ships/ITA_ship_names.txt +++ b/src/common/units/names_ships/ITA_ship_names.txt @@ -100,7 +100,7 @@ ITA_BB_HISTORICAL = { unique = { "加富尔伯爵" "朱利奥·凯撒" "利托里奥" "维内托" - "卡约·杜伊里奥" "安德烈亚·多利亚" "帝国" + "卡约·杜伊里奥" "安德烈亚·多利亚" "罗马" "帝国" "但丁·阿利吉耶里" "艾莉娜王后" "维托里奥·埃曼努埃莱" "威尼斯" "伦巴底" } diff --git a/src/descriptor.mod b/src/descriptor.mod index 639468d..46f047f 100755 --- a/src/descriptor.mod +++ b/src/descriptor.mod @@ -1,4 +1,4 @@ -version="v1.10 - Tokyo Express" +version="v1.11 - King's Gambit" tags={ "Military" "Translation" diff --git a/src/documentation/Guide.md b/src/documentation/Guide.md new file mode 100755 index 0000000..22c25e4 --- /dev/null +++ b/src/documentation/Guide.md @@ -0,0 +1,161 @@ +# A Simple Guide to Vanilla Navy Rework # + +## Preface ## +Hi, this is the author of VNR, MrPunk. VNR is a naval overhaul mod with a huge amount of new contents and mechanisms, though its core is still similar to vanilla. I bet most people, whether experienced in navy or not, might face a hard time adjusting to a fresh style of naval game. I'm not an expert, but I want to write down this guide with insights during my modding process, in an attempt to relieve players from duplicate learning. + +You can play VNR in different ways. Stick to history if you want to do it in a realistic style, or create meta designs to simply be a winner. It's up to you which style to pick, and VNR always offers numerous things for you to achieve that. + +## Designer ## +Designer is the basic of VNR and the most important components you deal with. To design a ship, you need to know about your requirements and more. A good navy does not always equal to the United States Navy in real life, but it should fit in your overall strategy and geopolitical environment. Fortunately, VNR has a wide range of modules to help you customize your fleet. To begin with, I'd like to bring up the six dimensions of ship designs. + +### Philosophy of Balance ### + +**Firepower** + +Firepower in HOI4 is split into 3 types of attacks, light, heavy and torpedo. + +Light attack is provided by batteries on destroyers and cruisers, and secondary batteries on capital ships. Heavy attack is the damage done by heavy batteries on battleships or battlecruisers, and medium guns on heavy cruisers by a very small amount. While damage caused by guns is affected by armor of target which their ratio leads to very different damage and critical chance, torpedo simply ignores armor and can cause great damage and score more critical hits, but it's fired more slowly and suffers a great penalty on hit chance when screen efficiency is good. Given that enemy's screen efficiency is one vital factor in the equation, swiftly eliminating its screen ships paves the way to a grand victory because low screen efficiency of the other side will make dynamics at sea more favorable to your side. + +A conclusion can be drawn here. Light gun is very efficient against light ships, with the other side's screen efficiency totally crushed, your fleet will have an upper hand in hitting and evasion. Heavy gun can do more damage to heavy ships due to its heavy armor piercing effects, though it's not common to see battleships sunk by it. Torpedo have a higher critical chance against heavy ships and carriers which often deals triple or even quadruple damages, but its setbacks are long loading time and low hit chance. + +Carrier, on the other hand, is very different from all the firepowers mentioned above. Its damage relies on your air variants and sortie efficiency, and is only affected by weather, anti-air and night. + +**Protection** + +The protection of ships varies on different hulls. For example, destroyer has close to zero protection, cruiser has armor plates, while battleship possesses armor, scheme and torpedo defense systems. + +When HP gets reduced to 0, the ship will be sunk. Typically, the two ways to avoid it will be enhancing your ship in terms of HP and armor strength. Having more HP brings obvious benefits that the ship can take more damage before sunk. Armor improves survivability with a different approach to reduce damage received each time it's hit. Based on the formula listed in intro panel, if armor piercing of a gun is lower than half of the armor, its damage is reduced to 20% of its original value. As a result, armor is extremely useful against guns. + +Torpedo completely ignores armor and can cause great damage. Even torpedo defense system is not effective enough to save the ship if it gets hit by torpedo. But luckily, with a good escort force, torpedo will have a hard time penetrating the screen line to get your capital ships. + +Contrary to most people's impression, anti-air is also a part of protection facing aircrafts and carriers. Good AA provides damage reduction or even evasion when attacked by planes, and it gets more bonus from the overall AA from your fleet, factored to align with the ship's. That means a ship without anti-air gun can also benefit from other ships' AA, but anti-air guns are mandatory if you want to shoot down the plane. + +**Speed** + +Besides stacking armor, another way to improve your ship's survivability is to increase its speed. Higher speed helps reduce ship's hit profile which is compared with hit chance of guns to determine whether your ship is hit or not. As an effective measure to evade gun fires, however, speed is useless against planes. In order to get a higher speed, avoid stacking too many guns or armors on a hull. Generally speaking, you'd better make capital ships around 30kn, light ships 35-40kn. + +**Reliability** + +The impact of reliability is not superficial, but it determines how likely the ship may suffer a critical hit or damaged in accidents. Many immature or complex modules such as quad guns and missiles will cause loss of reliability, making the ship very vulnerable in combat and training, just like the Swedish warship Wasa. In my opinion, low reliability is somewhat tolerable on platforms with higher HP, but it's definitely not recommended on light hulls. + +**Detection** + +Detection, or recon, is a very important factor to gain initiativeness in naval combat. It is divided into surface detection and sub detection, with influence on spotting enemy fleet or submarines. Greater detection is always good, but it's also expensive, so only vanguard fleet is usually composed of fast and dedicated recon ships. + +**Cost** + +Unless you are playing as US or UK, building a large fleet takes too much time and IC, and it may hamper your army production. This is especially true for countries like Germany or Soviet Union which requires army focus more than anyone else. As a result, keeping the cost of shipbuilding programs under control can make the whole experience of your game smoother. + +### How to Design Your Ship ### + +If you can fully understand the six dimensions, now it's time to design your first ship! + +**Carrier** + +Carrier serves as the main source of damage in battle, and it's heavily relied on its aircrafts. The most important thing about it is the capacity, which requires you to mount as many hangars as possible. However, having too many hangars will certainly degrade speed and other metrics, especially that organisation and HP will impact sortie efficiency. Thus, you should keep the degradation under control. + +**Heavy Ship** + +You can't skip heavy ships, such as battleships and battlecruisers, in your fleet. While screen ships escort capital ships, these heavy ships will escort carriers and boost their survivability by drawing aircrafts' attack. It's hard to summarize the key to such ship because it literally needs every aspect to be perfectly balanced. Firepower may not be the keypoint on battleships since their maximum HP is almost immortal compared to guns' heavy attack, but armor and AA are needed to protect itself and other ships, especially carriers. In that case, a historical battleship is more than sufficient to be included in a strike taskforce. + +On the other hand, battlecruiser is not a good option despite its advantage of speed. Its chance to receive critical hit is higher than battleship, which battleship with high speed engine is already fast enough. + +As for super heavy battleships, you can mount one gun on it to fully utilize its high HP, but normally it's not recommended. + +**Cruiser** + +Unlike vanilla, heavy cruiser and light cruiser in VNR are not defined by its gun caliber but by role. Yet there are still differences between cruiser guns. Light medium guns are similar to their origins, but medium guns have bonus on HP and armor to simulate a linear relation between survivability and tonnage. In VNR, heavy cruiser plays the role of cruiser killer instead of being useless in capital line, it's more flexible and can perform actions in both capital line and screen line based on the role you give it. As mentioned above, cruisers use light attack to eliminate screen ships and crush enemy's screen efficiency, creating a more favorable situation for your fleet to fire on the enemy. To achieve that, you need to pursue a fast and light-gun-centric design in order to keep up with destroyers and wipe out enemy's screen line as fast as you can. + +Cruiser is not only used for attack, but also some supporting jobs, such as scouting, and sometimes it can be a luxurious option for anti-submarine and mine warfare. That's where the role system gonna help you to fully dig out all its potentials. Radar picket cruiser is perfect for spotting enemy fleet. Colonial cruiser is cheaper, good supplement to colonial empire like UK and also a second best choice for minor countries. Then you have large cruiser and missile cruiser if there are sufficient IC power within your nation. The list goes on, but one thing for sure is that cruiser offers the most possibilities in all kinds of ships. + +**Destroyer** + +Destroyer is weak at the first glance, but it has the best speed and visibility in the game. Since destroyer's gun is almost useless against any ships but itself, torpedo is often used as the main weapon of destroyer, making destroyer heavily depending on the diminishment of your enemy's screen efficiency. Besides, destroyers also shoulder the most important mission in the fleet, which is to maintain screen efficiency by their numbers. Therefore, cost should always be the top priority when designing a destroyer, and there are a series of roles to achieve that. + +Typically, the generic destroyer role can handle most scenarios. Escort destroyer is cheaper and expert at anti-submarine, and frigate can reduce the cost even more with numerous degradations in other aspects. Of course, you can also try to go another way to improve quality of your destroyer. Roles like destroyer leader and super destroyer can both enhance its performance in terms of firepower and protection at the cost of a sharp increase in IC. Destroyer leader may look redundant in the list, you are correct, that's also the reason why this type of ships was eventually outdated in history. + +**Submarine** + +Subs are greatly nerfed compared to vanilla in terms of competing with a proper fleet, but they are still lethal towards convoys. There isn't much choice for each slot on submarine like other ships, and that makes the design of submarines quite linear and easier since all you have to do is updating it with new hulls or new modules. + +AI in VNR has been enhanced to carry more depth charges and sonars, which is a major challenge to sub-centric games. As a result, you should try to lower your sub visibility as much as possible. Mount every useful module, including snorkel and pressure hull, on your sub and keep them updated to the latest. + +### Special Hulls ### + +Special hulls are ships that can't be simply represented by generic ship hulls. They are made for flavor and immersion. Using them does not always give you a good result in naval battle. + +**Battlecarrier** + +Battlecarrier is a hybrid ship with features from both battleship and carrier, you can make one by putting conversion deck on rear slots of the heavy hull. Although it has heavy guns, battlecarrier is considered as carrier and is in the carrier line, and it's restricted by the max carrier limit. Furthermore, battlecarrier can't get any bonus from doctrines, and its high conversion cost also blocks the possibility to build the fleet around it. + +**Super Heavy Battleship** + +In fact, super heavy battleship has no fundamental difference from ordinary battleships. It's just larger and more expensive with dedicated armor and engines. + +**Escort Carrier** + +A cheap but very weak carrier. Escort carrier is unlocked around 1940-1941 in the techtree, it's basically a toy for major powers as the carrier count limit largely restricts its usage scenario, but it's still a perfect choice for anti-submarine missions in secondary theaters. + +**Super Carrier** + +Just like Essex or Midway post-refit, super carrier is a weapon with no shortcoming. By combining with modern carrier modules such as large armored hangar, steamed catapult and side lifts, a super carrier can possess a capacity of 130-150 planes. Except for its incredible cost, super carrier is the best type of carrier in the mod. + +**Panzerschiff** + +Panzerschiff in VNR or revived armored cruiser in KRNR, is basically a cruiser with heavy guns, though there is a limit set to prevent super heavy guns being installed on it. Just like the real armored ship in history, it has some advantages in one-on-one combat against cruisers, such as better guns and armor, making it an intermediate option between battlecruiser and heavy cruiser. The problem is, panzerschiff is stuck in the middle, so it can't fully cover either's job. + +**Auxiliary Ship** + +The max range of the fleet is calculated by average range of all ships within, so mathematically speaking you can boost it by adding long-range ships to your fleet. However, if you know maths very well, you may notice once the average surpass a certain value, it will bring the increase rate to a stagnation, so it's unwise to put too many auxiliary ships together because the range bonus is reaching the upper limit. + +To keep it away from the frontline, auxiliary ship is considered as capital ship, which means it can provide escort efficiency for your carrier just like battleship does. It's weak without doubt, but really really cheap. + +## Techtree ## + +Techtree is the soul of VNR and also the most interesting part of the game. Compared to base game, the naval techtree has been expanded in width and depth, from bonuses to modules. From the first glance, it may look complicated for people who love short and condensed techtree. It is large but you don't necessarily have to research all of them, and I will try to make your decision easier. Note that not all techs are worthy, you have to choose wisely and try not to overwhelm yourself. + +### Naval Tree ### + +**Destroyer Branch** + +Destroyer is the fundation of any navies, so there is no reason that you should skip this part of the tree, unless you don't want to play navy at all. As I mentioned in designing section, cost is the key element of destroyer variants, so any tech that lowers IC cost of a ship is certainly a must. The research on destroyer should be centered around the job you give them in your fleet. Anti-submarine is one of the most common tasks handled by destroyer, making depth charge and sonar technologies become the theme of this branch. Typically, that's all you need to have to make a decent destroyer. When I say "decent", it stands for "a ship that works under most circumstances regardless of which country you are playing", but there are exceptions that you will be against different enemies. + +**Cruiser Branch** + +Cruiser can make incredible damage on light ships in the battle when it gets into close combat stage. Therefore, if you want to build a nice surface fleet, don't hesitate to give your cruiser the best guns and armors. Although you have many options in cruiser's tree, the process becomes easier that you only have to choose those improve it in terms of things you really need, including firepower, speed and armor. + +**Heavy Armor Branch** + +This branch is composed of battleship armor scheme and armor processing technologies. The necessity depends on whether you are going to include heavy ships in your fleet and when you want to exclude them. If heavy ships still hold a place in your fleet, you should update these techs to the latest whenever there's a chance, otherwise just leave it alone. + +**Battleship Branch** + +Battleship branch is actually quite flexible because you can drop it from anywhere if it's no longer needed in your fleet. But if you want a good cold war era experience, at least research hulls to gain access to cold war fire-control/nuclear-fleet technologies. Back to the base tree, battleship techs prior to the 1930s are very useful despite not being mandatory. Its sub techs during the early 1940s are not recommended for their crummy bonus unless it's out of roleplay. After all, not many people will need excellent battleships but just-okay ones. + +**Carrier Branch** + +I can't stress more about the dominating power of carrier in reality and mod. Except for some early sub techs of carrier which only apply little bonus, most carrier techs are extremely useful and will definitely give you an upper hand in the battle. My suggestion is to skip techs before 1932, and get all of them after that. + +**Submarine Branch** + +Submarine is useless against anything but convoys because of AI's ASW improvements. Submarine research should be centered around lowering visibility and improving torpedo attack, other techs remain optional no matter what bonus they offer. + +### Naval Support Tree ### + +**Gun Branch** + +You need guns everywhere, so there is basically no reason to skip this branch. Except for super heavy guns and rocket artillery, get all techs to the latest if you want to have a decent fleet. + +**Torpedo Branch** + +Torpedo techs are needed by both submarines and torpedo ships, and overall torpedo weapons are nerfed in accuracy but buffed in damage. Keep it up to date if your fleet is heavily relied on torpedo. + +**Auxiliary Branch** + +The auxiliary branch is split into three sub-branches, port facilities, auxiliary ships and fuel silos. Basically designed for immersion, you can just skip the whole branch without need to worry about missing important bonus or modules. Of course, if you want to experience this part of the mod, there are some useful techs. + +The branch of port facilities aims at accelerating building and repairing speed of naval infrastructure such as shipyard and naval base, but I won't recommended you to finish this line due to poor bonus. + +Auxiliary ship branch is centered around the debate over "range or speed". Speed branch is relatively better since it's one of the six dimensions of ship designs and it offers some exclusive modules like raider cruiser. + +As for fuel branch, its research cost is insignificant with little bonus, making it an irrelevant factor in your game. diff --git a/src/documentation/Modding_Tutorial.md b/src/documentation/Modding_Tutorial.md new file mode 100755 index 0000000..089e529 --- /dev/null +++ b/src/documentation/Modding_Tutorial.md @@ -0,0 +1,174 @@ +# Vanilla Navy Rework Modding Tutorial # + +Hi there, this is MrPunk, in this file I will try to explain everything about VNR technically. + +## Topics ## + +1. [File Structure](#file-structure) +2. [Post-loading Mechanism](#post-loading) +3. [Interesting Features Breakdown](#interesting-feature-breakdown) + + +## File Structure ## + +### Common ### + +Common is where the fundamental materials of the game are stored, usually it includes technology, national focus, decisions and much more. + +The files in this folder will be loaded at game starts (in the loading screen), so if the game never made it to the menu, more likely it's caused by bugs in Common. + +**Structure** + +- ai_equipment + + The ship design templates are stored here, each file within indicates a type of ship, with specific templates of each level of the hull. AI will replace the template with newer ones if it has enough navy XP, weighted by the AI factors in the file. The variable "role" is the keyword telling AI what to produce in its strategy. + +- ai_strategy + + AI production strategies are stored here. Using the role defined in ai_equipment, it directly tells AI what to produce, and assigning a value to it determines how AI are willing to produce such templates. Theoretically, any value over 0 will make AI execute the strategy, unless the number of AI's dockyard is too low to make that happen. + +- decisions + + A place where decisions definition is stored. Currently it has the behemoths and naval introduction related decisions. + +- defines + + Here you modify some static constants in the game mechanism. As the formula set in the code, defines provide a way to scale the effects. + +- on_actions + + It declares some starting, global and triggering variables, including intro panel display and definition of major naval powers. + +- scripted_effects + + Basically they are like functions in programming, purely customized effects. All the starting tech setup and naval variants are stored here. + +- scripted_gui + + Just the starting intro panel. + +- scripted_localisation + + Defines alternative text for behemoth events. (used by different countries) + +- technologies + + title says all + +- units + + Containing units, equipments and modules definition of the mod. + + Units are basic combat unit in the game such as carrier, destroyer and battleship. Equipments is more specifically the ship hulls you see in the game. Definition including allowed modules on each slot, and base stats such as speed, armor, fuel consumption. Modules are the parts you put in every slot in ship designers. Plus, ship names are stored in names_ships sorted by country tag. + +### Events ### + +Events are, well, just events.. + +Nothing to put here, it's very easy to understand. + +### GFX ### + +All the pictures, icons and 3D assets are put here. + +**Structure** + +- army_icons + + The ship insignia and their tooltips + +- event_pictures + + Nothing special + +- interface + + - counters + + Small and green icons shown the number of ships when you hover on your fleet. + + - equipmentdesigner + + Stores the icons of ship modules and topviews + + - navalcomabt + + Stores icons of ships shown on the left side of the screen when you select a fleet, it's also used in naval combat panel. + + - technologies + + Stores icons of ships in the tech tree and designer. Tech icons are also put here under navy_tree. + + - Others + + Some textures used in tech tree and backgrounds. + +### History ### + +This part is loaded after you select a country and start the game. Mostly there are country definitions such as leaders/parties/techs and starting military. + +All files start with 00_vnr will be loaded as starting navy of that country. The empty files are just for overriding the vanilla ones. + +### Interface ### + +This folder is in close relation to GFX, which it defines the name of GFX files, the UI lookings and which location the GFX should show up. + +**Structure** + +- equipmentdesigner + +The topviews in ship designers are defined here. Each hull and module has its texture defined in these files, or it won't show up in designer. + +- .gfx files + +Any files end with .gfx is the definitions of picture/icon texture. It directly points to the location where these icons are stored. + +- .gui files + +Any files end with .gui is the UI definition, including size and position of these elements. + +### Localisation ### + +The texts of events, technologies, etc. + + +## Post-Loading ## + +The most interesting feature of VNR is the post-loading mechanism. For so long, there are many navy mods out there, but they all have to change the files within history/countries, for that's where tank/air/ship designs are defined. In instance of a large naval overhaul mod, you have to modify these files to make new modules and new hulls working. It's very common on mods such as NRM. + +Despite being the most sraightforward approach, it will bring harms to compatibility and robustness throughout basegame updates. The country history files store more than starting variants, it also has leaders, historical events, political status and national spirits. Overwriting such files is a complete disaster when it comes to compatibility. Even a minor fix on the country's starting stability will be incompatible, depending on the loading order, it may break its variants too. + +To counter it, the post-loading mechanism is created. It is not some fancy skill, but I want it recorded, so the late comers know how to do that. + +The basis of post-loading is achieved in following steps: +1. Put all vanilla ship hulls to a hidden and disallowed techs, this blocks any variants using these hulls from appearing and won't cause any crash/error, because variants using blocked techs will be unlocked after the tech is researched. But in this case, it will never be researched. Then simply replacing them with hulls with different IDs is going to form the basic of your designer. + +2. Overriding all vanilla units history files. Unlike country history files, the unit files are less sensitive for they only take effects when it's loaded in your script. Combining step 1 and step 2 will give a clean state on game start, no country has naval variants or fleet. Then you may load your own. + +3. Loading customized units and designs is the last step. It is achieved through hidden events. Some people say game is an art of interaction, and here is how I load everything without you even noticing it. By completing step 2, no country has navy upon game start, but as you may notice, there is an intro panel. The intro panel draws your attention, and your first reaction is to click continue. A trigger is set there, when it is clicked, it will set a global flag, telling the loading event to take effects. The effects are modified to have no popup, and done in an instant. Then you get everything set. + +Reference files: + + events/00_navy_rework.txt + + common/scripted_guis/00_navy_rework_welcome_splash_gui.txt + +## Interesting Feature Breakdown ## + +1. **Multiple customized ship icons for one hull** + + NSB and BBA have introduced a new style of designer to the game, which you can choose the sprite for your tank/airplane from numerous icon presets. But ship designer still adopts the tradition from MTG that only equipment icons are available. Fortunately, this new feature is actually supported, just not applied. + + This is achieved through graphic_db which is the database for icons in equipment designer. It seems that, even though ship designer owns a standalone UI, the way of accessing database is common among all designers. To do it, create a file for ship icons in gfx/interface/equipmentdesigner/graphic_db, then try to assign pool of icons to each hull and tag. For details, you can refer to tank and air icon files in the same location, the style and grammar are identical. + + As for unique icons of starting variants, that is actually a workaround. You can add a line "icon = xxx.dds" in the variant definition. + +2. **Ship role system** + + The ship role system is what creates more variants. Before that, most naval mods simply add a lot of hulls to represent new type of ships, but they in fact are not so different from the base platform. For example, destroyer leader, destroyer and escort destroyer. Offering different bonus, the ship role also allow or disallow certain categories of modules. + +3. **Dynamic title for ship designer** + + As you may notice, the title of ship designer has dynamic effects in the mod, which it will change according to the tag's historical ship designing organization, such as DNC of Britain and BuC&R of America. Dynamic localisation doesn't work here because the title is an embedded element in UI. + + To change it, you need to edit the original text of the title to an empty string first. Then, make a scripted gui attached to equipment designer with only an instantTextBox. Since scripted gui is the only way to put scripted localisation on UI, you can then modify the gui to make it responsive at last. diff --git a/src/documentation/README.txt b/src/documentation/README.txt deleted file mode 100755 index 7342d66..0000000 --- a/src/documentation/README.txt +++ /dev/null @@ -1,140 +0,0 @@ -########################### -### Vanilla Navy Rework ### -########################### -Hi there, this is MrPunk, in this file I will try to explain everything about VNR technically. - -########################### -### Topics ### -########################### - 1. File Structure - 2. Post-loading Mechanism - 3. Interesting Features Breakdown - - -########################### -### File Structure ### -########################### -1. Common - Overview - Common is where the fundamental materials of the game are stored, usually it includes technology, national focus, decisions and much more. - - The files in this folder will be loaded at game starts (in the loading screen), so if the game never made it to the menu, more likely it's caused by bugs in Common. - - Structure - a. ai_equipment - The ship design templates are stored here, each file within indicates a type of ship, with specific templates of each level of the hull. - AI will replace the template with newer ones if it has enough navy XP, weighted by the AI factors in the file. - The variable "role" is the keyword telling AI what to produce in its strategy. - b. ai_strategy - AI production strategies are stored here. Using the role defined in ai_equipment, it directly tells AI what to produce, and assigning a value to it determines how AI are willing to produce such templates. Theoretically, any value over 0 will make AI execute the strategy, unless the number of AI's dockyard is too low to make that happen. - c. decisions - A place where decisions definition is stored. Currently it has the behemoths and naval introduction related decisions. - d. defines - Here you modify some static constants in the game mechanism. As the formula set in the code, defines provide a way to scale the effects. - e. on_actions - It declares some starting, global and triggering variables, including intro panel display and definition of major naval powers. - f. scripted_effects - Basically they are like functions in programming, purely customized effects. All the starting tech setup and naval variants are stored here. - g. scripted_gui - Just the starting intro panel. - h. scripted_localisation - Defines alternative text for behemoth events. (used by different countries) - i. technologies - title says all - j. units - Containing units, equipments and modules definition of the mod. - Units are basic combat unit in the game such as carrier, destroyer and battleship. - Equipments is more specifically the ship hulls you see in the game. Definition including allowed modules on each slot, and base stats such as speed, armor, fuel consumption... - Modules are the parts you put in every slot in ship designers - Plus, ship names are stored in names_ships sorted by country tag. - -2. Events - Overview - Events are, well, just events.. - - Structure - Nothing to put here, it's very easy to understand. - -3. GFX - Overview - All the pictures, icons and 3D assets are put here. - - Structure - a. army_icons - The ship insignia and their tooltips - b. event_pictures - Nothing special - c. interface - c.1. counters - Small and green icons shown the number of ships when you hover on your fleet. - c.2. equipmentdesigner - Stores the icons of ship modules and topviews - c.3. navalcomabt - Stores icons of ships shown on the left side of the screen when you select a fleet, it's also used in naval combat panel. - c.4. technologies - Stores icons of ships in the tech tree and designer. Tech icons are also put here under navy_tree. - c.5. Others - Some textures used in tech tree and backgrounds. - -4. History - Overview - This part is loaded after you select a country and start the game. Mostly there are country definitions such as leaders/parties/techs and starting military. - - Structure - All files start with 00_vnr will be loaded as starting navy of that country. - The empty files are just for overriding the vanilla ones. - -5. Interface - Overview - This folder is in close relation to GFX, which it defines the name of GFX files, the UI lookings and which location the GFX should show up. - - Structure - a. equipmentdesigner - The topviews in ship designers are defined here. Each hull and module has its texture defined in these files, or it won't show up in designer. - b. .gfx files - Any files end with .gfx is the definitions of picture/icon texture. It directly points to the location where these icons are stored. - c. .gui files - Any files end with .gui is the UI definition, including size and position of these elements. - -6. Localisation - Overview - The texts of events, technologies, etc. - - -########################### -### Post-Loading ### -########################### - -The most interesting feature of VNR is the post-loading mechanism. For so long, there are many navy mods out there, but they all have to change the files within history/countries, for that's where tank/air/ship designs are defined. In instance of a large naval overhaul mod, you have to modify these files to make new modules and new hulls working. It's very common on mods such as NRM. - -Despite being the most sraightforward approach, it will bring harms to compatibility and robustness throughout basegame updates. The country history files store more than starting variants, it also has leaders, historical events, political status and national spirits. Overwriting such files is a complete disaster when it comes to compatibility. Even a minor fix on the country's starting stability will be incompatible, depending on the loading order, it may break its variants too. - -To counter it, the post-loading mechanism is created. It is not some fancy skill, but I want it recorded, so the late comers know how to do that. - -The basis of post-loading is achieved in following steps: - 1. Put all vanilla ship hulls to a hidden and disallowed techs, this blocks any variants using these hulls from appearing and won't cause any crash/error, because variants using blocked techs will be unlocked after the tech is researched. But in this case, it will never be researched. Then simply replacing them with hulls with different IDs is going to form the basic of your designer. - 2. Overriding all vanilla units history files. Unlike country history files, the unit files are less sensitive for they only take effects when it's loaded in your script. Combining step 1 and step 2 will give a clean state on game start, no country has naval variants or fleet. Then you may load your own. - 3. Loading customized units and designs is the last step. It is achieved through hidden events. Some people say game is an art of interaction, and here is how I load everything without you even noticing it. By completing step 2, no country has navy upon game start, but as you may notice, there is an intro panel. The intro panel draws your attention, and your first reaction is to click continue. A trigger is set there, when it is clicked, it will set a global flag, telling the loading - event to take effects. The effects are modified to have no popup, and done in an instant. Then you get everything set. - -Reference files: - events/00_navy_rework.txt - common/scripted_guis/00_navy_rework_welcome_splash_gui.txt - -############################################ -### Interesting Feature Breakdown ### -############################################ -1. Multiple customized ship icons for one hull - NSB and BBA have introduced a new style of designer to the game, which you can choose the sprite for your tank/airplane from numerous icon presets. But ship designer still adopts the tradition from MTG that only equipment icons are available. Fortunately, this new feature is actually supported, just not applied. - - This is achieved through graphic_db which is the database for icons in equipment designer. It seems that, even though ship designer owns a standalone UI, the way of accessing database is common among all designers. To do it, create a file for ship icons in gfx/interface/equipmentdesigner/graphic_db, then try to assign pool of icons to each hull and tag. For details, you can refer to tank and air icon files in the same location, the style and grammar are identical. - - As for unique icons of starting variants, that is actually a workaround. You can add a line "icon = xxx.dds" in the variant definition. - -2. Ship role system - The ship role system is what creates more variants. Before that, most naval mods simply add a lot of hulls to represent new type of ships, but they in fact are not so different from the base platform. For example, destroyer leader, destroyer and escort destroyer. Offering different bonus, the ship role also allow or disallow certain categories of modules. - -3. Dynamic title for ship designer - As you may notice, the title of ship designer has dynamic effects in the mod, which it will change according to the tag's historical ship designing organization, such as DNC of Britain and BuC&R of America. Dynamic localisation doesn't work here because the title is an embedded element in UI. - - To change it, you need to edit the original text of the title to an empty string first. Then, make a scripted gui attached to equipment designer with only an instantTextBox. Since scripted gui is the only way to put scripted localisation on UI, you can then modify the gui to make it responsive at last. \ No newline at end of file diff --git a/src/events/00_navy_rework.txt b/src/events/00_navy_rework.txt index 825aed5..8c8d404 100755 --- a/src/events/00_navy_rework.txt +++ b/src/events/00_navy_rework.txt @@ -10,6 +10,8 @@ country_event = { immediate = { add_starting_techs = yes makeup_starting_techs = yes + # set shipyard output boost + set_shipyard_output_boost = yes # add starting variants and navy ARG = { diff --git a/src/events/ai_ships.txt b/src/events/ai_ships.txt index 7376ee4..76acf22 100755 --- a/src/events/ai_ships.txt +++ b/src/events/ai_ships.txt @@ -500,7 +500,7 @@ country_event = { memory_expansion = 1 integrated_combat_system = 1 comprehensive_display_system = 1 - recon_drone_1 = 1 + recon_drones = 1 electromagnetic_signature_study = 1 airborne_early_warning = 1 optical_landing_system = 1 diff --git a/src/gfx/entities/z_vnr_ships.asset b/src/gfx/entities/z_vnr_ships.asset new file mode 100755 index 0000000..fa3545c --- /dev/null +++ b/src/gfx/entities/z_vnr_ships.asset @@ -0,0 +1,4 @@ +entity = { + name = "medium_cruiser_entity" + clone = "heavy_cruiser_entity" +} \ No newline at end of file diff --git a/src/gfx/interface/equipmentdesigner/naval/modules/icons/ship_anti_air_circle.png b/src/gfx/interface/equipmentdesigner/naval/modules/icons/ship_anti_air_circle.png new file mode 100755 index 0000000000000000000000000000000000000000..5c462ce8375d425dce11a83feab965aa837c78d0 GIT binary patch literal 7172 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 literal 5504 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 JPDHLkV1mtFjK%-} literal 0 HcmV?d00001 diff --git a/src/gfx/interface/equipmentdesigner/naval/modules/icons/torpedo_computer2.png b/src/gfx/interface/equipmentdesigner/naval/modules/icons/torpedo_computer2.png new file mode 100755 index 0000000000000000000000000000000000000000..e54f6aaa7219ed55c3e49731edfb18b2929b4988 GIT binary patch literal 5448 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 diff --git a/src/gfx/interface/technologies/navy_techtree/torpedo_computer.png b/src/gfx/interface/technologies/navy_techtree/torpedo_computer.png deleted file mode 100755 index 12b1cc84c6ae5c0d2406b940bef8a64d38f4be78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7400 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 delta 25556 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