Initial commit
This commit is contained in:
@@ -0,0 +1,550 @@
|
||||
# =============================================================================
|
||||
# Giga + Age of Wonder Compatibility Patch — Giga Dyson Swarm/Sphere overrides
|
||||
# AOW overrides dyson_swarm_1 (redirects to AOW swarm) and dyson_swarm_3 (removes
|
||||
# Giga's auto-upgrade to dyson_swarm_3_basic). This file restores Giga's original
|
||||
# behaviour so the Giga Dyson Swarm chain works correctly.
|
||||
#
|
||||
# User design: the ONLY Dyson Sphere path is Giga Dyson Swarm -> AOW Dyson Sphere.
|
||||
# * dyson_swarm_1 : restored to Giga original (no AOW redirect to AOW swarm).
|
||||
# * dyson_swarm_3 : restored to Giga original, then on_build_complete routes
|
||||
# DIRECTLY to AOW_MEGA_dyson_sphere_entry (bypasses swarm_3_basic / star-class
|
||||
# passthroughs which are virtual inline_script shells that cannot carry a
|
||||
# reliable on_build_complete).
|
||||
# * dyson_swarm_3_basic + 7 star-class variants : on_build_complete overrides
|
||||
# kept as a safety net in case any other path reaches them (dead code under
|
||||
# normal flow). These were the cause of the "stuck at swarm stage 3" bug.
|
||||
# * dyson_sphere_0 : direct Giga Dyson Sphere build DISABLED.
|
||||
# * dyson_sphere_2 : Giga swarm->sphere link severed.
|
||||
# =============================================================================
|
||||
|
||||
# =============================================================================
|
||||
# dyson_swarm_1 — Giga original restored (AOW's redirect removed)
|
||||
# =============================================================================
|
||||
dyson_swarm_1 = {
|
||||
entity = "dyson_swarm_phase_1_entity"
|
||||
construction_entity = "dyson_swarm_phase_1_entity"
|
||||
portrait = "GFX_megastructure_dyson_swarm_background"
|
||||
entity_offset = { x = 0.1 y = 0.1 }
|
||||
rotate_to_center = no
|
||||
scale_offset = yes
|
||||
place_entity_on_planet_plane = yes
|
||||
use_planet_resource = yes
|
||||
build_time = 1080 # 3 years
|
||||
resources = {
|
||||
category = giga_kilostructures
|
||||
cost = {
|
||||
unity = 1000
|
||||
}
|
||||
inline_script = {
|
||||
script = megastructures/generic_parts/giga_mega_alloy_cost
|
||||
alloys = 500
|
||||
}
|
||||
upkeep = {
|
||||
alloys = 5
|
||||
}
|
||||
}
|
||||
|
||||
outliner_trigger = { exists = owner NOT = { has_megastructure_flag = giga_outliner_hidden_by_@owner } }
|
||||
|
||||
construction_blocks_and_blocked_by = none
|
||||
|
||||
prerequisites = { "tech_dyson_swarm" }
|
||||
|
||||
dismantle_cost = {
|
||||
category = giga_kilostructures
|
||||
cost = {
|
||||
energy = 500
|
||||
}
|
||||
}
|
||||
|
||||
dismantle_time = 360
|
||||
|
||||
dismantle_potential = {
|
||||
always = yes
|
||||
}
|
||||
|
||||
dismantle_possible = {
|
||||
can_dismantle_megastructure = {
|
||||
TECH = tech_dyson_swarm
|
||||
}
|
||||
}
|
||||
|
||||
on_dismantle_start = {
|
||||
fromfrom.planet = { set_planet_flag = giga_dismantle_not_cancelled planet_event = { id = giga_dismantle.001 days = 361 } }
|
||||
}
|
||||
|
||||
on_dismantle_cancel = {
|
||||
fromfrom.planet = { remove_planet_flag = giga_dismantle_not_cancelled }
|
||||
}
|
||||
|
||||
on_dismantle_complete = {
|
||||
from = {
|
||||
add_resource = {
|
||||
alloys = 500
|
||||
mult = modifier:megastructure_dismantle_refund_mult
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
check_variable = {
|
||||
which = dyson_swarm_counter
|
||||
value >= 1
|
||||
}
|
||||
}
|
||||
change_variable = {
|
||||
which = dyson_swarm_counter
|
||||
value = -1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
potential = {
|
||||
NOT = { has_country_flag = compat_mega_hide_giga } # compat (SPIKE): AoW-only build-menu tab hides Giga structures
|
||||
has_machine_age_dlc = yes
|
||||
NOT = { has_global_flag = vanilla_dyson_swarm_disabled}
|
||||
OR = {
|
||||
check_variable = {
|
||||
which = dyson_swarm_counter
|
||||
value < value:dyson_swarm_limit
|
||||
}
|
||||
has_global_flag = vanilla_dyson_swarm_capped_u
|
||||
}
|
||||
}
|
||||
|
||||
possible = {
|
||||
hidden_trigger = {
|
||||
exists = starbase
|
||||
}
|
||||
custom_tooltip = {
|
||||
fail_text = "requires_inside_border"
|
||||
is_inside_border = from
|
||||
}
|
||||
custom_tooltip = {
|
||||
fail_text = "requires_surveyed_system"
|
||||
NOT = {
|
||||
any_system_planet = {
|
||||
is_surveyed = {
|
||||
who = prev.from
|
||||
status = no
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
custom_tooltip = {
|
||||
fail_text = "requires_less_than_x_dyson_swarms"
|
||||
from = {
|
||||
OR = {
|
||||
check_variable = {
|
||||
which = dyson_swarm_counter
|
||||
value < value:dyson_swarm_limit
|
||||
}
|
||||
has_global_flag = vanilla_dyson_swarm_capped_u
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
placement_rules = {
|
||||
planet_possible = {
|
||||
custom_tooltip = { fail_text = "requires_no_existing_megastructure" NOR = { has_planet_flag = megastructure has_planet_flag = has_megastructure } }
|
||||
custom_tooltip = { fail_text = "must_build_around_star" is_star = yes }
|
||||
custom_tooltip = { fail_text = "requires_no_anomaly" has_anomaly = no }
|
||||
custom_tooltip = { fail_text = "requires_further_stars" NOR = { AND = { giga_is_close_pair_star = yes is_primary_star = no } giga_is_close_pair_primary = yes } }
|
||||
custom_tooltip = {
|
||||
fail_text = "requires_standard_star_class"
|
||||
giga_brown_dwarf = no
|
||||
OR = {
|
||||
giga_is_standard_star = yes
|
||||
is_planet_class = pc_toxoid_star
|
||||
}
|
||||
giga_is_o_star_for_megas = no
|
||||
NOT = { has_planet_flag = giga_eawaf_sun }
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
from = { is_ai = yes }
|
||||
}
|
||||
NOR = {
|
||||
has_deposit = d_energy_1
|
||||
has_deposit = d_energy_2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
country_modifier = {
|
||||
custom_tooltip = dyson_swarm_1_mod_tooltip
|
||||
}
|
||||
|
||||
# root = system
|
||||
# from = country
|
||||
ai_weight = {
|
||||
weight = value:giga_ai_base_mega
|
||||
|
||||
mult = value:giga_ai_core_territory
|
||||
|
||||
mult = value:giga_ai_value_deposits
|
||||
|
||||
mult = value:giga_ai_prevent_spam|MEGA|dyson_swarm|
|
||||
}
|
||||
|
||||
on_build_start = {
|
||||
from = {
|
||||
set_country_flag = is_currently_building_dyson_swarm
|
||||
}
|
||||
}
|
||||
on_build_cancel = {
|
||||
from = {
|
||||
remove_country_flag = is_currently_building_dyson_swarm
|
||||
}
|
||||
}
|
||||
on_build_complete = {
|
||||
set_star_flag = conduit_excluded
|
||||
fromfrom.planet = {
|
||||
set_planet_flag = has_megastructure
|
||||
add_modifier = {
|
||||
modifier = dyson_swarm_1_mod
|
||||
days = -1
|
||||
}
|
||||
if = {
|
||||
limit = { has_orbital_station = yes }
|
||||
orbital_station = {
|
||||
dismantle = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
from = {
|
||||
remove_country_flag = is_currently_building_dyson_swarm
|
||||
set_timed_country_flag = { years = 5 flag = has_recently_built_dyson_swarm }
|
||||
change_variable = {
|
||||
which = dyson_swarm_counter
|
||||
value = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# dyson_sphere_0 — Direct Giga Dyson Sphere build DISABLED (build a Giga Dyson Swarm instead)
|
||||
# =============================================================================
|
||||
dyson_sphere_0 = {
|
||||
entity = "construction_platform_entity"
|
||||
construction_entity = "construction_platform_entity"
|
||||
portrait = "GFX_megastructure_construction_background"
|
||||
place_entity_on_planet_plane = no
|
||||
entity_offset = { x = -7 y = -7 }
|
||||
prerequisites = { "tech_dyson_sphere" }
|
||||
build_time = 0
|
||||
potential = { always = no }
|
||||
possible = { always = no }
|
||||
placement_rules = { planet_possible = { always = no } }
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# dyson_sphere_2 — Giga swarm->Giga sphere link severed (rerouted to AOW). Unreachable.
|
||||
# =============================================================================
|
||||
dyson_sphere_2 = {
|
||||
entity = "dyson_sphere_phase_02_entity"
|
||||
construction_entity = "dyson_sphere_part_1_entity"
|
||||
portrait = "GFX_megastructure_construction_background"
|
||||
place_entity_on_planet_plane = no
|
||||
upgrade_from = { dyson_sphere_1 }
|
||||
build_time = 0
|
||||
potential = { always = no }
|
||||
possible = { always = no }
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# dyson_swarm_3 — Giga original restored (AOW removed the auto-upgrade).
|
||||
# COMPAT: on_build_complete routes DIRECTLY to AOW_MEGA_dyson_sphere_entry.
|
||||
# The Giga star-class scaling (giga_dyson_scaling) is irrelevant here because
|
||||
# the AOW sphere entry bridge reads the actual star class and routes to the
|
||||
# correct sphere_0 variant. Bypassing swarm_3_basic / swarm_3_*_star avoids
|
||||
# the "stuck at swarm stage 3" bug — those are virtual inline_script shells
|
||||
# that cannot carry a functioning on_build_complete.
|
||||
# =============================================================================
|
||||
dyson_swarm_3 = {
|
||||
entity = "dyson_swarm_phase_3_entity"
|
||||
construction_entity = "dyson_swarm_phase_3_entity"
|
||||
portrait = "GFX_megastructure_dyson_swarm_background"
|
||||
entity_offset = { x = -0.1 y = -0.1 }
|
||||
rotate_to_center = no
|
||||
scale_offset = yes
|
||||
place_entity_on_planet_plane = yes
|
||||
outliner_trigger = {
|
||||
exists = owner
|
||||
system_has_arc_furnace = no
|
||||
NOT = {
|
||||
solar_system = {
|
||||
has_star_flag = arc_furnace_construction
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
solar_system = {
|
||||
any_system_planet = {
|
||||
is_colony = yes
|
||||
is_artificial = no
|
||||
exists = owner
|
||||
owner = {
|
||||
is_primitive = no
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
solar_system = {
|
||||
any_system_planet = {
|
||||
exists = owner
|
||||
owner = {
|
||||
is_primitive = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
owner = {
|
||||
has_policy_flag = interference_aggressive
|
||||
}
|
||||
}
|
||||
owner = {
|
||||
has_technology = tech_dyson_sphere
|
||||
OR = {
|
||||
has_global_flag = vanilla_dyson_capped_u
|
||||
check_variable = { which = giga_current_vanilla_dyson value < giga_vanilla_dyson_cap }
|
||||
root = { is_upgrading = yes }
|
||||
}
|
||||
}
|
||||
NOT = { has_megastructure_flag = giga_outliner_hidden_by_@owner }
|
||||
}
|
||||
|
||||
construction_blocks_and_blocked_by = none
|
||||
use_planet_resource = yes
|
||||
|
||||
dismantle_cost = {
|
||||
category = giga_kilostructures
|
||||
cost = {
|
||||
energy = 1500
|
||||
}
|
||||
}
|
||||
|
||||
dismantle_time = 360
|
||||
|
||||
dismantle_potential = {
|
||||
always = yes
|
||||
}
|
||||
|
||||
dismantle_possible = {
|
||||
can_dismantle_megastructure = {
|
||||
TECH = tech_dyson_swarm
|
||||
}
|
||||
}
|
||||
|
||||
on_dismantle_start = {
|
||||
fromfrom.planet = { set_planet_flag = giga_dismantle_not_cancelled planet_event = { id = giga_dismantle.003 days = 361 } }
|
||||
}
|
||||
|
||||
on_dismantle_cancel = {
|
||||
fromfrom.planet = { remove_planet_flag = giga_dismantle_not_cancelled }
|
||||
}
|
||||
|
||||
on_dismantle_complete = {
|
||||
from = {
|
||||
add_resource = {
|
||||
alloys = 1500
|
||||
mult = modifier:megastructure_dismantle_refund_mult
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
check_variable = {
|
||||
which = dyson_swarm_counter
|
||||
value >= 1
|
||||
}
|
||||
}
|
||||
change_variable = {
|
||||
which = dyson_swarm_counter
|
||||
value = -1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
build_time = 1080 # 3 years
|
||||
resources = {
|
||||
category = giga_kilostructures
|
||||
cost = {
|
||||
unity = 5000
|
||||
}
|
||||
inline_script = {
|
||||
script = megastructures/generic_parts/giga_mega_alloy_cost
|
||||
alloys = 1500
|
||||
}
|
||||
|
||||
upkeep = {
|
||||
alloys = 20
|
||||
}
|
||||
}
|
||||
upgrade_from = {
|
||||
dyson_swarm_2
|
||||
}
|
||||
|
||||
prerequisites = { "tech_dyson_swarm" }
|
||||
|
||||
potential = {
|
||||
always = yes
|
||||
}
|
||||
|
||||
country_modifier = {
|
||||
custom_tooltip = dyson_swarm_3_mod_tooltip
|
||||
}
|
||||
|
||||
ai_weight = { weight = value:giga_ai_base_continue }
|
||||
|
||||
on_build_complete = {
|
||||
fromfrom.planet = {
|
||||
remove_modifier = dyson_swarm_2_mod
|
||||
add_modifier = {
|
||||
modifier = dyson_swarm_3_mod
|
||||
days = -1
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
any_system_megastructure = {
|
||||
OR = {
|
||||
is_megastructure_type = orbital_arc_furnace_4
|
||||
is_megastructure_type = orbital_arc_furnace_restored
|
||||
}
|
||||
}
|
||||
}
|
||||
from = {
|
||||
set_country_flag = burning_brightly_achievement
|
||||
}
|
||||
}
|
||||
# COMPAT: route directly to AOW sphere entry (bypassing Giga's
|
||||
# swarm_3_basic / swarm_3_*_star virtual passthroughs). The entry
|
||||
# bridge reads the actual star class and routes to the correct
|
||||
# AOW sphere_0 variant.
|
||||
fromfrom = {
|
||||
upgrade_megastructure_to = AOW_MEGA_dyson_sphere_entry
|
||||
finish_upgrade = yes
|
||||
}
|
||||
fromfrom = {
|
||||
set_megastructure_flag = giga_dyson_swarm
|
||||
if = {
|
||||
limit = {
|
||||
OR = {
|
||||
has_global_flag = vanilla_dyson_disabled
|
||||
NOT = { has_global_flag = vanilla_dyson_swarm_replace_disabled }
|
||||
}
|
||||
}
|
||||
set_megastructure_flag = giga_outliner_hidden_by_@owner
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# Giga swarm stage-3 final variants — SAFETY NET overrides.
|
||||
# These are normally UNREACHED because dyson_swarm_3 now routes directly to
|
||||
# AOW_MEGA_dyson_sphere_entry (see above). The on_build_complete redirects below
|
||||
# exist only as dead-code insurance in case any other path creates these
|
||||
# inline_script virtual megastructures. They were the original compat design
|
||||
# but proved unreliable — the inline_script body does not support a functioning
|
||||
# on_build_complete override, which caused the "stuck at swarm stage 3" bug.
|
||||
# =============================================================================
|
||||
|
||||
dyson_swarm_3_basic = {
|
||||
inline_script = {
|
||||
script = megastructures/dyson_swarm/dyson_swarm_scale
|
||||
}
|
||||
on_build_complete = {
|
||||
fromfrom = {
|
||||
upgrade_megastructure_to = AOW_MEGA_dyson_sphere_entry
|
||||
finish_upgrade = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dyson_swarm_3_a_star = {
|
||||
inline_script = {
|
||||
script = megastructures/dyson_swarm/dyson_swarm_scale
|
||||
}
|
||||
on_build_complete = {
|
||||
fromfrom = {
|
||||
upgrade_megastructure_to = AOW_MEGA_dyson_sphere_entry
|
||||
finish_upgrade = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dyson_swarm_3_b_star = {
|
||||
inline_script = {
|
||||
script = megastructures/dyson_swarm/dyson_swarm_scale
|
||||
}
|
||||
on_build_complete = {
|
||||
fromfrom = {
|
||||
upgrade_megastructure_to = AOW_MEGA_dyson_sphere_entry
|
||||
finish_upgrade = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dyson_swarm_3_f_star = {
|
||||
inline_script = {
|
||||
script = megastructures/dyson_swarm/dyson_swarm_scale
|
||||
}
|
||||
on_build_complete = {
|
||||
fromfrom = {
|
||||
upgrade_megastructure_to = AOW_MEGA_dyson_sphere_entry
|
||||
finish_upgrade = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dyson_swarm_3_g_star = {
|
||||
inline_script = {
|
||||
script = megastructures/dyson_swarm/dyson_swarm_scale
|
||||
}
|
||||
on_build_complete = {
|
||||
fromfrom = {
|
||||
upgrade_megastructure_to = AOW_MEGA_dyson_sphere_entry
|
||||
finish_upgrade = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dyson_swarm_3_k_star = {
|
||||
inline_script = {
|
||||
script = megastructures/dyson_swarm/dyson_swarm_scale
|
||||
}
|
||||
on_build_complete = {
|
||||
fromfrom = {
|
||||
upgrade_megastructure_to = AOW_MEGA_dyson_sphere_entry
|
||||
finish_upgrade = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dyson_swarm_3_m_giant_star = {
|
||||
inline_script = {
|
||||
script = megastructures/dyson_swarm/dyson_swarm_scale
|
||||
}
|
||||
on_build_complete = {
|
||||
fromfrom = {
|
||||
upgrade_megastructure_to = AOW_MEGA_dyson_sphere_entry
|
||||
finish_upgrade = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dyson_swarm_3_m_star = {
|
||||
inline_script = {
|
||||
script = megastructures/dyson_swarm/dyson_swarm_scale
|
||||
}
|
||||
on_build_complete = {
|
||||
fromfrom = {
|
||||
upgrade_megastructure_to = AOW_MEGA_dyson_sphere_entry
|
||||
finish_upgrade = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user