Intercontinental Gaslighting (#998)

* diversified building management by injecting behavior; allocated entries for the intercontinental lattice and have begun connecting warp gate entities along the intercontinental lattice; beginnings of warp gate broadcast operations; disabled free merit commendations

* allow transit across a predetermined warp gate path, i.e., proper zone-to-zone gating

* game variables for modifying warp gate behaviors; moved choice of building game logic into overloaded constructor; only handle the capitol fore dome in more realistic conditions; warp gate state restored primarily b y internal game logic; changes to which and how gates are declared inactive or broadcast at startup

* initial work on WarpgateLinkOverrideMessage, even if the packet doesn't seem to do anything; added basic service for rotating cavern zone locks via the galaxy messaging service; moved error checking for lattice connectedness

* cavern closing warning messages queued

* starting to set up ChatActor for /zlock command, and added /setbaseresources; conditions for correcting broadcast conditions of a locking warp gate pair; system for rotating through locking and unlocking cavern zones only uses two timers now and has an advance command that speeds to the next closing warning or cavern opening

* expedited cavern rotations available via '/zonerotate' and '!zonerotate [-list]'; '/zonelock' should work for caverns, though distorting the rotation order to accommodate the cavern being unlocked; configuration arguments exist for the setup of cavern rotations and for the rotation itself

* populated cavern lattice connections for a specific rotation order; warp gates will properly activate and deactivate and modify their neighborhood information based on which stage of the rotation; fed up with the blockmap going wrong; added a sanity test for the cavern lattice; Spiker damage calculation changes

* adjusted local variable requirements of BuildingActor to integrate retained actors more closely with the Behavior; on the other hand, another value is passed around the logic

* bug fixes observed from issues found in logs since 20220520; halved the spawn height when gating to a cavern warpgate

* cavern benefits are now represented by enumeration classes rather than additive binary numbers; when facilities change state, benefits are evaluated; when caverns rotate, benefits are evaluated; cavern facility logic added; attempted handling for inventory disarray conditions (untested)

* broke down tabs for easier navigation; added test to stop spawning of cavern equipment when not otherwise permitted

* code comments, everywhere; correcting issues with cavern rotation timing reports

* but is it flying?
This commit is contained in:
Fate-JH 2022-06-14 02:21:24 -04:00 committed by GitHub
parent 546a4e4f0d
commit ced228509c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
63 changed files with 4445 additions and 1235 deletions

View file

@ -110,6 +110,43 @@ game {
standard_armor,
agile_armor
]
warp-gates {
# When a gating fails, fall back to sanctuary rather than stay in the same zone
default-to-sanctuary-destination = yes
# When a facility next to a warp gate is captured by one faction,
# if the facility on the other side of the intercontinental gate pair is owned by a different faction,
# that gate pair becomes a broadcast warp gate for those factions
broadcast-between-conflicted-factions = yes
}
cavern-rotation = {
# The number of hours between any given cavern locking and another cavern unlocking,
# not the total number of hours between a single cavern locking and unlocking.
hours-between-rotation = 3
# How many caverns are unlocked at once during rotations
# Pay attention to the logs that a corresponding combinational existence found in zonemaps/lattice.json
# Examples:
# [a,b,c] with 1 requires 'caverns-a' 'caverns-b' 'caverns-c'
# [a,b,c] with 2 requires 'caverns-a-b' 'caverns-b-c' 'caverns-a-c'
# [a,b,c] with 3 requires 'caverns-a-b-c'
# [a,b,c,d] with 3 requires 'caverns-a-b-c' 'caverns-b-c-d' 'caverns-a-c-d' 'caverns-a-b-d'
simultaneous-unlocked-zones = 2
# A list of zone numbers that correspond to the caverns, in a continuous order
# in which the caverns are locked and are unlocked.
# When left empty, the order of the caverns is traversed as-is provided
# For example, for cavern zones with number [23, 24, 25, 26, 27, 28],
# the order [23, 24, 26, 23, 24, 25, 26] would eliminate #27 and #28 from the rotation
enhanced-rotation-order = [23, 24, 25, 26, 27, 28]
# If a cavern rotation is forced by the system,
# the system will attempt to advance only to the first possible closing warning message at five minutes
# When set, however, the next zone unlock is carried out regardless of the amount of time remaining
force-rotation-immediately = false
}
}
anti-cheat {

View file

@ -1027,7 +1027,7 @@
"Map99_Gate_Three"
]
],
"udg01": [
"ugd01": [
[
"N_Redoubt",
"N_ATPlant"
@ -1077,7 +1077,7 @@
"S_ATPlant"
]
],
"udg02": [
"ugd02": [
[
"N_Redoubt",
"N_ATPlant"
@ -1127,7 +1127,7 @@
"S_ATPlant"
]
],
"udg03": [
"ugd03": [
[
"NW_Redoubt",
"NW_ATPlant"
@ -1177,7 +1177,7 @@
"SE_ATPlant"
]
],
"udg04": [
"ugd04": [
[
"N_Redoubt",
"N_ATPlant"
@ -1227,7 +1227,7 @@
"S_ATPlant"
]
],
"udg05": [
"ugd05": [
[
"NW_Redoubt",
"NW_ATPlant"
@ -1281,7 +1281,7 @@
"SE_ATPlant"
]
],
"udg06": [
"ugd06": [
[
"N_Redoubt",
"N_ATPlant"
@ -1330,5 +1330,423 @@
"GW_Cavern6_S",
"S_ATPlant"
]
],
"intercontinental": [
[
"z1/WG_Solsar_to_Amerish",
"home2/WG_TRSanc_to_Cyssor"
],
[
"z1/WG_Solsar_to_Cyssor",
"z3/WG_Cyssor_to_NCSanc"
],
[
"z1/WG_Solsar_to_Hossin",
"z6/WG_Ceryshen_to_Forseral"
],
[
"z1/WG_Solsar_to_Forseral",
"i3/Map97_Gate_One"
],
[
"z2/WG_Hossin_to_VSSanc",
"home2/WG_TRSanc_to_Forseral"
],
[
"z2/WG_Hossin_to_Solsar",
"z4/WG_Ishundar_to_Searhus"
],
[
"z2/WG_Hossin_to_Ceryshen",
"z10/WG_Amerish_to_Ceryshen"
],
[
"z2/WG_Hossin_to_Oshur",
"z9/WG_Searhus_to_Ishundar"
],
[
"z3/WG_Cyssor_to_Searhus",
"z7/WG_Esamir_to_Oshur"
],
[
"z3/WG_Cyssor_to_Solsar",
"z4/WG_Ishundar_to_VSSanc"
],
[
"z3/WG_Cyssor_to_TRSanc",
"z6/WG_Ceryshen_to_Amerish"
],
[
"z4/WG_Ishundar_to_TRSanc",
"z7/WG_Esamir_to_Searhus"
],
[
"z4/WG_Ishundar_to_Ceryshen",
"z5/WG_Forseral_to_Ceryshen"
],
[
"z5/WG_Forseral_to_TRSanc",
"i2/Map98_Gate_One"
],
[
"z5/WG_Forseral_to_Solsar",
"home3/WG_VSSanc_to_Hossin"
],
[
"z5/WG_Forseral_to_Oshur",
"z7/WG_Esamir_to_NCSanc"
],
[
"z6/WG_Ceryshen_to_Ishundar",
"z9/WG_Searhus_to_Esamir"
],
[
"z6/WG_Ceryshen_to_Hossin",
"home3/WG_VSSanc_to_Esamir"
],
[
"z7/WG_Esamir_to_VSSanc",
"home1/WG_NCSanc_to_Esamir"
],
[
"z9/WG_Searhus_to_Cyssor",
"z10/WG_Amerish_to_NCSanc"
],
[
"z10/WG_Amerish_to_Solsar",
"home1/WG_NCSanc_to_Amerish"
],
[
"z10/WG_Amerish_to_Oshur",
"i1/Map99_Gate_One"
],
[
"i1/Map99_Gate_Two",
"i3/Map97_Gate_Three"
],
[
"i2/Map98_Gate_Three",
"i3/Map97_Gate_Two"
],
[
"i4/Map96_Gate_One",
"i2/Map98_Gate_Two"
],
[
"i4/Map96_Gate_Two",
"i1/Map99_Gate_Three"
]
],
"caverns-c1": [
[
"c1/GW_Cavern1_N",
"z10/GW_Amerish_N"
],
[
"c1/GW_Cavern1_S",
"z5/GW_Forseral_N"
],
[
"c1/GW_Cavern1_E",
"z1/GW_Solsar_N"
],
[
"c1/GW_Cavern1_W",
"z4/GW_Ishundar_N"
]
],
"caverns-c2": [
[
"c2/GW_Cavern2_N",
"z5/GW_Forseral_N"
],
[
"c2/GW_Cavern2_S",
"z3/GW_Cyssor_S"
],
[
"c2/GW_Cavern2_E",
"z6/GW_Ceryshen_S"
],
[
"c2/GW_Cavern2_W",
"z7/GW_Esamir_S"
]
],
"caverns-c3": [
[
"c3/GW_Cavern3_N",
"z7/GW_Esamir_S"
],
[
"c3/GW_Cavern3_S",
"z2/GW_Hossin_N"
],
[
"c3/GW_Cavern3_E",
"z5/GW_Forseral_N"
],
[
"c3/GW_Cavern3_W",
"z9/GW_Searhus_S"
]
],
"caverns-c4": [
[
"c4/GW_Cavern4_N",
"z5/GW_Forseral_N"
],
[
"c4/GW_Cavern4_S",
"z10/GW_Amerish_N"
],
[
"c4/GW_Cavern4_E",
"z7/GW_Esamir_S"
],
[
"c4/GW_Cavern4_W",
"z3/GW_Cyssor_S"
]
],
"caverns-c5": [
[
"c5/GW_Cavern5_N",
"z2/GW_Hossin_N"
],
[
"c5/GW_Cavern5_S",
"z1/GW_Solsar_N"
],
[
"c5/GW_Cavern5_E",
"z3/GW_Cyssor_S"
],
[
"c5/GW_Cavern5_W",
"z9/GW_Searhus_N"
]
],
"caverns-c6": [
[
"c6/GW_Cavern6_N",
"z5/GW_Forseral_S"
],
[
"c6/GW_Cavern6_S",
"z2/GW_Hossin_S"
],
[
"c6/GW_Cavern6_E",
"z4/GW_Ishundar_S"
],
[
"c6/GW_Cavern6_W",
"z3/GW_Cyssor_S"
]
],
"caverns-c1-c2": [
[
"c1/GW_Cavern1_N",
"z9/GW_Searhus_N"
],
[
"c1/GW_Cavern1_S",
"z6/GW_Ceryshen_N"
],
[
"c1/GW_Cavern1_E",
"z1/GW_Solsar_S"
],
[
"c1/GW_Cavern1_W",
"z3/GW_Cyssor_N"
],
[
"c2/GW_Cavern2_N",
"z4/GW_Ishundar_S"
],
[
"c2/GW_Cavern2_S",
"z2/GW_Hossin_N"
],
[
"c2/GW_Cavern2_E",
"z7/GW_Esamir_S"
],
[
"c2/GW_Cavern2_W",
"z10/GW_Amerish_S"
]
],
"caverns-c2-c3": [
[
"c2/GW_Cavern2_N",
"z7/GW_Esamir_N"
],
[
"c2/GW_Cavern2_S",
"z4/GW_Ishundar_S"
],
[
"c2/GW_Cavern2_E",
"z3/GW_Cyssor_S"
],
[
"c2/GW_Cavern2_W",
"z2/GW_Hossin_N"
],
[
"c3/GW_Cavern3_N",
"z10/GW_Amerish_N"
],
[
"c3/GW_Cavern3_S",
"z1/GW_Solsar_N"
],
[
"c3/GW_Cavern3_E",
"z6/GW_Ceryshen_N"
],
[
"c3/GW_Cavern3_W",
"z5/GW_Forseral_S"
]
],
"caverns-c3-c4": [
[
"c3/GW_Cavern3_N",
"z6/GW_Ceryshen_N"
],
[
"c3/GW_Cavern3_S",
"z4/GW_Ishundar_S"
],
[
"c3/GW_Cavern3_E",
"z10/GW_Amerish_S"
],
[
"c3/GW_Cavern3_W",
"z2/GW_Hossin_S"
],
[
"c4/GW_Cavern4_N",
"z5/GW_Forseral_N"
],
[
"c4/GW_Cavern4_S",
"z7/GW_Esamir_S"
],
[
"c4/GW_Cavern4_E",
"z9/GW_Searhus_N"
],
[
"c4/GW_Cavern4_W",
"z3/GW_Cyssor_N"
]
],
"caverns-c4-c5": [
[
"c4/GW_Cavern4_N",
"z4/GW_Ishundar_N"
],
[
"c4/GW_Cavern4_S",
"z1/GW_Solsar_S"
],
[
"c4/GW_Cavern4_E",
"z3/GW_Cyssor_N"
],
[
"c4/GW_Cavern4_W",
"z2/GW_Hossin_N"
],
[
"c5/GW_Cavern5_N",
"z10/GW_Amerish_N"
],
[
"c5/GW_Cavern5_S",
"z6/GW_Ceryshen_N"
],
[
"c5/GW_Cavern5_E",
"z7/GW_Esamir_S"
],
[
"c5/GW_Cavern5_W",
"z9/GW_Searhus_N"
]
],
"caverns-c5-c6": [
[
"c5/GW_Cavern5_N",
"z10/GW_Amerish_S"
],
[
"c5/GW_Cavern5_S",
"z7/GW_Esamir_S"
],
[
"c5/GW_Cavern5_E",
"z2/GW_Hossin_S"
],
[
"c5/GW_Cavern5_W",
"z1/GW_Solsar_N"
],
[
"c6/GW_Cavern6_N",
"z5/GW_Forseral_N"
],
[
"c6/GW_Cavern6_S",
"z3/GW_Cyssor_N"
],
[
"c6/GW_Cavern6_E",
"z6/GW_Ceryshen_N"
],
[
"c6/GW_Cavern6_W",
"z9/GW_Searhus_N"
]
],
"caverns-c1-c6": [
[
"c1/GW_Cavern1_N",
"z3/GW_Cyssor_S"
],
[
"c1/GW_Cavern1_S",
"z1/GW_Solsar_S"
],
[
"c1/GW_Cavern1_E",
"z6/GW_Ceryshen_S"
],
[
"c1/GW_Cavern1_W",
"z5/GW_Forseral_N"
],
[
"c6/GW_Cavern6_N",
"z2/GW_Hossin_S"
],
[
"c6/GW_Cavern6_S",
"z10/GW_Amerish_N"
],
[
"c6/GW_Cavern6_E",
"z9/GW_Searhus_N"
],
[
"c6/GW_Cavern6_W",
"z4/GW_Ishundar_N"
]
]
}
}