Initial commit
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
# =============================================================================
|
||||
# Giga + Age of Wonder Compatibility Patch — scripted_triggers bridge
|
||||
# Loads after both mods (see descriptor.mod dependencies), so these definitions
|
||||
# win the merge for every shared vanilla-override trigger below.
|
||||
#
|
||||
# PROBLEM: Both mods overwrite the same vanilla scripted_triggers, but each only
|
||||
# "knows" its own megastructures:
|
||||
# - Giga's versions are huge hard-coded enumerations of Giga megastructure IDs
|
||||
# (zzz_overwrites.txt) and never list AOW structures.
|
||||
# - AOW's versions (zz_AOW_trgr_Vanilla.txt) only account for AOW structures.
|
||||
# Whichever loads last wins, so cross-mod placement checks misfire (double-builds,
|
||||
# broken gating).
|
||||
#
|
||||
# FIX: Re-author each trigger using mod-AGNOSTIC generic iterators
|
||||
# (has_any_megastructure / any_owned_megastructure / any_system_megastructure),
|
||||
# enumerating only the small, stable set of "gate-type" megastructures as the
|
||||
# exception. That way both mods' rosters are recognized automatically.
|
||||
# =============================================================================
|
||||
|
||||
# Helper (new name, no collision): true when the scoped megastructure is a
|
||||
# transit "gate" that should NOT block building other megastructures.
|
||||
# Covers vanilla gateways/relays/L-gate plus the gateway variants both mods add.
|
||||
compat_is_gate_megastructure = {
|
||||
OR = {
|
||||
is_megastructure_type = gateway_0
|
||||
is_megastructure_type = gateway_final
|
||||
is_megastructure_type = gateway_restored
|
||||
is_megastructure_type = gateway_ruined
|
||||
is_megastructure_type = gateway_derelict
|
||||
is_megastructure_type = gateway_heaven
|
||||
is_megastructure_type = gateway_titan
|
||||
is_megastructure_type = gateway_ness_restored
|
||||
is_megastructure_type = gateway_ness_ruined
|
||||
is_megastructure_type = hyper_relay
|
||||
is_megastructure_type = hyper_relay_restored
|
||||
is_megastructure_type = hyper_relay_ruined
|
||||
is_megastructure_type = lgate_base
|
||||
}
|
||||
}
|
||||
|
||||
# "No non-gate megastructure in this system" — used to enforce one big
|
||||
# megastructure per system. Preserves Giga's outer structure (incl. ring_world
|
||||
# flag), but the inner test now means "a megastructure that is NOT a gate exists"
|
||||
# for ANY mod's structure, instead of Giga's fixed blocking list.
|
||||
# Conservative by design: enforces one-mega-per-system across BOTH mods, which is
|
||||
# exactly what prevents the cross-mod double-build bug.
|
||||
has_no_non_gate_megastructure = {
|
||||
OR = {
|
||||
has_any_megastructure = no
|
||||
NOT = {
|
||||
has_star_flag = ring_world_built # ringworlds count as a megastructure
|
||||
any_system_megastructure = { # exists a non-gate megastructure?
|
||||
NOT = { compat_is_gate_megastructure = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# "Empire owns any (real) megastructure" — generic, catches both rosters.
|
||||
# Gate-type structures are excluded to match Giga's original intent (a mere
|
||||
# gateway/relay should not count as "owning a megastructure").
|
||||
has_any_megastructure_in_empire = {
|
||||
OR = {
|
||||
any_owned_megastructure = {
|
||||
NOT = { compat_is_gate_megastructure = yes }
|
||||
}
|
||||
any_system_within_border = {
|
||||
any_system_megastructure = {
|
||||
NOT = { compat_is_gate_megastructure = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Ringworld output boost — keep Giga's logic (incl. its exclusion list) and ALSO
|
||||
# grant the boost to AOW's pc_starcage_world (AOW's ringworld-equivalent).
|
||||
has_ringworld_output_boost = {
|
||||
OR = {
|
||||
AND = {
|
||||
is_ringworld = yes
|
||||
giga_has_ringworld_output_boost_exclusions = no
|
||||
}
|
||||
giga_has_ringworld_output_boost = yes
|
||||
is_planet_class = pc_starcage_world # AOW
|
||||
}
|
||||
}
|
||||
|
||||
# Dismantle check (parameterized $TECH$, called by both mods). Keep Giga's
|
||||
# custom_tooltips AND AOW's "dismantle at war" global-flag flexibility.
|
||||
can_dismantle_megastructure = {
|
||||
custom_tooltip = {
|
||||
fail_text = "requires_not_upgrading"
|
||||
is_upgrading = no
|
||||
}
|
||||
custom_tooltip = {
|
||||
fail_text = "requires_owned_system"
|
||||
solar_system = {
|
||||
is_owned_by = from
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = { has_global_flag = can_dismantle_megastructure_at_war } # AOW feature
|
||||
from = { has_technology = $TECH$ }
|
||||
}
|
||||
else = {
|
||||
from = {
|
||||
has_technology = $TECH$
|
||||
is_at_war = no
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# AOW_trigger_mega_potential — patch override (megastructure build-menu tabs)
|
||||
# Every AOW megastructure routes its `potential` through this one shared trigger,
|
||||
# so adding a single condition here gates the ENTIRE AOW roster behind the
|
||||
# Giga-only build-menu tab. Body is AOW's original verbatim; the only addition is
|
||||
# the `NOT = { has_country_flag = compat_mega_hide_aow }` line in the player branch.
|
||||
# AI evaluates the is_ai=yes branch (no tab check) and is never affected, since the
|
||||
# hide flag only ever exists on a human player's country (set by the tab buttons).
|
||||
# Scope here is the viewing country (megastructure potential scope = country).
|
||||
# Keeps AOW's $KEY$ parameter intact.
|
||||
# =============================================================================
|
||||
AOW_trigger_mega_potential = {
|
||||
if = { #如果是玩家,则对应巨构没有被禁用
|
||||
limit = { is_ai = no }
|
||||
NOT = { has_country_flag = compat_mega_hide_aow } # compat: Giga-only tab hides AOW structures
|
||||
OR = {
|
||||
NOT = { has_global_flag = AOW_flag_GLBL_no_player_$KEY$ }
|
||||
event_target:global_event_country = {
|
||||
check_variable = { which = AOW_var_player_mega_cap_$KEY$ value != 0 }
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = { #如果是AI,则对应巨构没有被禁用
|
||||
limit = { is_ai = yes }
|
||||
OR = {
|
||||
NOT = { has_global_flag = AOW_flag_GLBL_no_ai_$KEY$ }
|
||||
event_target:global_event_country = {
|
||||
check_variable = { which = AOW_var_ai_mega_cap_$KEY$ value != 0 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user