Riftwake Incursion: Difference between revisions
More actions
Created page with " '''Riftwake Incursion''' is a recurring weekly Alliance-versus-Alliance event in '''Per Regna'''. Five ancient '''Riftwake Scars''' mark the galaxy; each week one flares. Alliances destroy '''Siphon Spines''' (PvE), then fight for a continuous hold on the '''Wakeheart''' (PvP). The victor becomes '''Realmwarden''' for seven days and holds the '''Mandate of Regna''': discretionary '''Mandate Caches''' and server-wide '''Regnal Honors / Marks'''.<blockquote>'''Status:'''..." |
No edit summary |
||
| Line 1: | Line 1: | ||
'''Riftwake Incursion''' is a recurring weekly Alliance-versus-Alliance event in '''Per Regna'''. Five ancient '''Riftwake Scars''' mark the galaxy; each week one flares. Alliances destroy '''Siphon Spines''' (PvE), then fight for a continuous hold on the '''Wakeheart''' (PvP). The victor becomes '''Realmwarden''' for seven days and holds the '''Mandate of Regna''': discretionary '''Mandate Caches''' and server-wide '''Regnal Honors''' (buff titles only).<blockquote>'''Status:''' Implemented behind <code>features.riftwakeIncursion</code> (default '''false'''). Contagion belts are seeded by migration and stay unconquerable even while the event flag is off. Eligible galaxies: '''realmLevel ≥ 4''' (Realm 4+ only — R2/R3 lack enough alliance density for Contagion-range AvA).</blockquote> | |||
'''Riftwake Incursion''' is a recurring weekly Alliance-versus-Alliance event in '''Per Regna'''. Five ancient '''Riftwake Scars''' mark the galaxy; each week one flares. Alliances destroy '''Siphon Spines''' (PvE), then fight for a continuous hold on the '''Wakeheart''' (PvP). The victor becomes '''Realmwarden''' for seven days and holds the '''Mandate of Regna''': discretionary '''Mandate Caches''' and server-wide '''Regnal Honors | |||
== Contents == | == Contents == | ||
| Line 9: | Line 8: | ||
* Event flow | * Event flow | ||
* Access & launch | * Access & launch | ||
* Allies, NAP & FCS coalitions | |||
* Phase 1 — Siphon Spines | * Phase 1 — Siphon Spines | ||
* Phase 2 — Wakeheart hold | * Phase 2 — Wakeheart hold | ||
| Line 14: | Line 14: | ||
* Realmwarden & Mandate of Regna | * Realmwarden & Mandate of Regna | ||
* Rewards | * Rewards | ||
* Regnal Honors | * Regnal Honors (buffs only) | ||
* Fleet losses | * Fleet losses | ||
* FCS limits | * FCS limits | ||
| Line 27: | Line 27: | ||
# '''Spatial pressure''' — expand or ally toward this week’s Active Scar | # '''Spatial pressure''' — expand or ally toward this week’s Active Scar | ||
# '''Hybrid combat''' — PvE spine clears plus open PvP at the Wakeheart | # '''Hybrid combat''' — PvE spine clears plus open PvP at the Wakeheart | ||
# '''Governance''' — the Realmwarden manually distributes Mandate Caches and Regnal Honors | # '''Governance''' — the Realmwarden manually distributes Mandate Caches and Regnal Honors, driving diplomacy and counter-coalitions | ||
== Lore glossary == | == Lore glossary == | ||
| Line 65: | Line 65: | ||
|- | |- | ||
|'''Regnal Honors''' | |'''Regnal Honors''' | ||
|Positive player titles (buffs) | |Positive player titles (buffs) assigned by the Realmwarden | ||
|- | |- | ||
|'''Regnal Marks''' | |'''Regnal Marks''' | ||
| | |''(Removed from v1 — buffs only; no personal debuff titles)'' | ||
|} | |} | ||
| Line 88: | Line 88: | ||
|- | |- | ||
|Layout (Active Scar) | |Layout (Active Scar) | ||
|'''1 Wakeheart''' + '''4 Siphon Spines''' in the same system | |'''1 Wakeheart''' (center colony) + '''4 Siphon Spines''' (orbital colonies) in the same system — nebula-style, not a normal colonizable system | ||
|} | |} | ||
=== Scar center layout (nebula pattern) === | |||
Scar '''centers''' are special systems (not normal habitable colony rings). Structure mirrors nebulas: one center body + orbital targets players attack by planet/colony id. | |||
{| class="wikitable" | |||
!Slot | |||
!Position | |||
!Entity | |||
!Role | |||
|- | |||
|Center | |||
|'''0''' | |||
|'''Wakeheart''' colony | |||
|Final PvP hold target (FCS / station at system center) | |||
|- | |||
|Orbit | |||
|'''1–4''' | |||
|'''Siphon Spine''' colonies | |||
|PvE raid targets; must all be cleared before Wakeheart is attackable | |||
|- | |||
|— | |||
|5+ | |||
|None | |||
|No extra planets, asteroids, or player colonies on scar centers | |||
|} | |||
<code>[Spine 2] [Spine 3] | |||
\ / | |||
\ / | |||
[Wakeheart] ← position 0 (system center) | |||
/ \ | |||
/ \ | |||
[Spine 1] [Spine 4]</code> | |||
{| class="wikitable" | |||
!Rule | |||
!Detail | |||
|- | |||
|Planet types | |||
|New types e.g. <code>wakeheart</code> / <code>siphonSpine</code> (or reuse <code>systemCenter</code> + tagged NPC colonies) | |||
|- | |||
|Colonizable | |||
|'''false''' — no player colonies on scar centers | |||
|- | |||
|Owner | |||
|Shared Riftwake NPC player (like system protector / pirate NPC) | |||
|- | |||
|Attack flow | |||
|Target a '''Siphon Spine colony''' with FCS → clear all 4 → Wakeheart shield drops → target '''Wakeheart colony''' to occupy/hold | |||
|- | |||
|Contagion neighbors | |||
|Stay normal habitable systems (planets OK); only scar '''centers''' use this layout | |||
|- | |||
|UI | |||
|System view like nebula: show Wakeheart + 4 spines only, hide normal planet strip | |||
|} | |||
'''Conversion (existing maps):''' for each <code>riftwake_scars.systemId</code>, strip/hide colonizable planets + pirates/asteroids at the scar; ensure position 0 = Wakeheart colony and positions 1–4 = Siphon Spine colonies; wire <code>riftwake_spines</code> rows to those colony/planet ids. | |||
=== Rift Contagion (unconquerable belt) === | === Rift Contagion (unconquerable belt) === | ||
| Line 115: | Line 169: | ||
== Event flow == | == Event flow == | ||
<code>Weekly rotation picks Active Scar | <code>Weekly rotation picks Active Scar (realmLevel ≥ 4 galaxies) | ||
│ | │ | ||
▼ | ▼ | ||
Launch from Contagion-range origin (own / alliance / diplomatic-ally station) | |||
│ | │ | ||
▼ | ▼ | ||
| Line 127: | Line 181: | ||
Phase 2 — Occupy Wakeheart; hold continuously (default 3h, shortened by hold bonus) | Phase 2 — Occupy Wakeheart; hold continuously (default 3h, shortened by hold bonus) | ||
│ Displacement resets that alliance’s hold timer | │ Displacement resets that alliance’s hold timer | ||
│ Spines may respawn for bonus contests (Wakeheart stays vulnerable) | │ Diplomatic allies cannot displace each other (NAP still can) | ||
│ Spines may respawn (±jitter) for bonus contests (Wakeheart stays vulnerable) | |||
▼ | ▼ | ||
Winner — Realmwarden (7 days) | Winner — Realmwarden (7 days) | ||
Mandate Caches + Regnal Honors | Mandate Caches + Regnal Honors + Mandate fatigue if they win again next week | ||
Auto participation packs for 2nd / 3rd / spine-clear fighters</code> | |||
== Access & launch == | == Access & launch == | ||
| Line 138: | Line 194: | ||
|- | |- | ||
|Eligibility | |Eligibility | ||
| | |'''Launch origin''' (from-colony '''or''' warp-hop exit) must sit within '''2 hexes''' of the active Contagion belt. Distant ally presence does '''not''' unlock global launches. | ||
|- | |||
|Origin ownership | |||
|Own colony, same-alliance colony, or '''diplomatic ally''' station | |||
|- | |||
|Warp hop | |||
|Warp exit must still be an '''own-alliance''' hop target (unchanged warp rules). Ally stations help as '''launch/station origins''', not as free warp exits for other alliances. | |||
|- | |- | ||
|Solo | |Solo | ||
| Line 144: | Line 206: | ||
|- | |- | ||
|Launch | |Launch | ||
|FCS / station missions from eligible origins | |FCS / station missions from eligible origins | ||
|- | |- | ||
|Ownership | |Ownership | ||
|Active Scar system is '''never''' permanently conquered | |Active Scar system is '''never''' permanently conquered | ||
|} | |||
== Allies, NAP & FCS coalitions == | |||
Diplomatic treaties do '''not''' merge alliances for Riftwake scoring or win conditions. Each alliance remains a separate competitor. | |||
{| class="wikitable" | |||
!Topic | |||
!Locked rule | |||
|- | |||
|Scoring / win | |||
|Spine credit, hold ownership, and Realmwarden are always '''one alliance id''' — never shared across allies | |||
|- | |||
|Inter-alliance FCS | |||
|Allowed only when the rally lead opts in ('''Allow inter-alliance participation'''). NAP-only / strangers cannot join | |||
|- | |||
|Credit on joint FCS | |||
|'''Lead’s alliance''' gets spine clear / Wakeheart occupy / hold. Allied joiners help damage and share '''spine loot''', but do '''not''' share hold-bonus ownership or Realmwarden | |||
|- | |||
|Own rallies | |||
|Allies may still run their '''own''' FCS and compete against each other | |||
|- | |||
|Wakeheart displace | |||
|'''Diplomatic <code>ally</code>''' cannot kick / replace the occupying partner (must break ally first) | |||
|- | |||
|NAP on Wakeheart | |||
|'''Still contestable''' — NAP does not protect the holder | |||
|- | |||
|Allied launch | |||
|May launch Riftwake attacks from an ally station '''in Contagion range'''; does not grant map-wide unlock | |||
|} | |} | ||
| Line 171: | Line 261: | ||
|Max '''2''' active Riftwake FCS rallies per alliance | |Max '''2''' active Riftwake FCS rallies per alliance | ||
|- | |- | ||
| | |Fleet / loot | ||
| | |'''1.5× high Boss''' (<code>boss</code> tier) fleet + resource/item pool; '''FCS-only'''; loot share uses the '''same boss participation curves''' (more joiners → more pool access) | ||
|- | |||
|Target | |||
|Players pick '''one Siphon Spine colony''' (positions 1–4) as mission target | |||
|- | |||
|Debris | |||
|Softer PvE (~15% debris / graveyard split) on spine PvE losses | |||
|} | |} | ||
| Line 182: | Line 278: | ||
|- | |- | ||
|Respawn | |Respawn | ||
|Every '''90 minutes''' at '''50% HP''' | |Every '''90 ± 15 minutes''' at '''50% HP''' (jitter anti-timer-snipe) | ||
|- | |- | ||
|Shield | |Shield | ||
| Line 198: | Line 294: | ||
!Mechanic | !Mechanic | ||
!Detail | !Detail | ||
|- | |||
|Mission | |||
|FCS '''attack''' (no new mission type). On attacker victory, survivors '''auto-station''' and occupation starts | |||
|- | |||
|Initial NPC garrison | |||
|'''2× high Boss''' fleet — '''no resource stockpile / no combat loot''' (fight is for the hold only) | |||
|- | |- | ||
|Capture | |Capture | ||
|Win | |Win at '''Wakeheart colony''' (pos 0) → your alliance '''occupies''' | ||
|- | |- | ||
|Win condition | |Win condition | ||
| Line 212: | Line 314: | ||
|- | |- | ||
|Displacement | |Displacement | ||
| | |Rival FCS victory vs occupying fleets → timer '''resets to 0'''; winners auto-station. '''Diplomatic allies cannot displace each other''' (must break ally first). NAP remains contestable. | ||
|- | |- | ||
|Neutral Wakeheart | |Neutral Wakeheart | ||
|No alliance left stationed → timer does not tick | |No alliance left stationed → timer does not tick | ||
|- | |||
|Gating | |||
|Wakeheart attacks '''refused''' while any Siphon Spine still has NPC ships | |||
|- | |||
|Loot on kick/win | |||
|'''None''' — no RSS moved to the next winner; spine loot + Mandate Caches are the payouts | |||
|- | |- | ||
|Window | |Window | ||
| Line 287: | Line 395: | ||
|Manual distribution by leadership | |Manual distribution by leadership | ||
|- | |- | ||
|'''Regnal Honors | |'''Regnal Honors''' | ||
|Up to '''8''' | |Up to '''8''' buff titles, any player on the server | ||
|- | |||
|Alliance perk | |||
|'''+5%''' resource production for Realmwarden members while Mandate lasts | |||
|- | |||
|Mandate fatigue | |||
|'''−5%''' battle stats per consecutive week retained (cap '''−15%'''); resets when another alliance wins | |||
|} | |} | ||
| Line 294: | Line 408: | ||
=== Mandate Caches (manual) === | === Mandate Caches (manual) === | ||
Delivered to the | Delivered once per win to the Realmwarden alliance leadership vault. Leader / Deputy gift to players. Contents use existing quest / weekly-event item types (realm-scaled resource packs). | ||
==== Prime Mandate Cache × 3 (high) ==== | |||
{| class="wikitable" | |||
!Content | |||
!Spec | |||
|- | |||
|Resources | |||
|<code>resourcePack: large</code> × 1 | |||
|- | |||
|Monument | |||
|<code>monument_piece</code> / <code>monument_mythical</code> × 3 | |||
|- | |||
|Relic | |||
|<code>relic_piece</code> / <code>relic_piece_mythical</code> × 2 | |||
|- | |||
|Speed | |||
|<code>nano_boost</code> / <code>nano_boost_building_epic</code> × 5 | |||
|- | |||
|Combat prep | |||
|<code>boost_box</code> / <code>boost_box_epic</code> × 3 | |||
|- | |||
|Tech | |||
|<code>tech_boost</code> / <code>tech_boost_mythical</code> × 3 | |||
|- | |||
|Flex | |||
|<code>artifact_box</code> / <code>artifact_box_standard</code> × 2 | |||
|} | |||
==== Spinebreaker Cache × 8 (medium) ==== | |||
{| class="wikitable" | |||
!Content | |||
!Spec | |||
|- | |||
|Resources | |||
|<code>resourcePack: medium</code> × 1 | |||
|- | |||
|Monument | |||
|<code>monument_piece</code> / <code>monument_mythical</code> × 1 | |||
|- | |||
|Relic | |||
|<code>relic_piece</code> / <code>relic_piece_legendary</code> × 2 | |||
|- | |||
|Speed | |||
|<code>nano_boost</code> / <code>nano_boost_building_epic</code> × 3 | |||
|- | |||
|Combat prep | |||
|<code>boost_box</code> / <code>boost_box_epic</code> × 2 | |||
|- | |||
|Tech | |||
|<code>tech_boost</code> / <code>tech_boost_epic</code> × 2 | |||
|} | |||
==== Accord Cache × 15 (standard) ==== | |||
{| class="wikitable" | |||
!Content | |||
!Spec | |||
|- | |||
|Resources | |||
|<code>resourcePack: small</code> × 1 | |||
|- | |||
|Combat prep | |||
|<code>boost_box</code> / <code>boost_box_rare</code> × 2 | |||
|- | |||
|Speed | |||
|<code>nano_boost</code> / <code>nano_boost_building_epic</code> × 1 | |||
|- | |||
|Tech | |||
|<code>tech_boost</code> / <code>tech_boost_epic</code> × 1 | |||
|} | |||
==== Vault rules ==== | |||
{| class="wikitable" | {| class="wikitable" | ||
! | !Rule | ||
! | !Value | ||
|- | |||
|Who can send | |||
|Leader + Deputy | |||
|- | |||
|Audit | |||
|Alliance-visible gift log | |||
|- | |- | ||
| | |Expiry | ||
| | |End of Realmwarden week | ||
|- | |- | ||
| | |Undistributed | ||
|''' | |'''50%''' auto-split by contribution score among members who fought; '''50%''' void | ||
|- | |- | ||
| | |Stockpile | ||
| | |Current week’s grant only | ||
|} | |} | ||
=== Participation (non-winners) === | === Participation (non-winners) === | ||
Automatic at window end (not manual): | |||
{| class="wikitable" | |||
!Place | |||
!Reward | |||
|- | |||
|2nd by contribution | |||
|Per active fighter: <code>resourcePack: medium</code> + <code>boost_box_epic</code> × 1 | |||
|- | |||
|3rd | |||
|Per active fighter: <code>resourcePack: small</code> + <code>boost_box_rare</code> × 1 | |||
|- | |||
|Spine clear (≥1 credited) | |||
|Fighters with spine-clear contribution: <code>resourcePack: tiny</code> + <code>boost_box_common</code> × 1 | |||
|} | |||
Contribution score (board + place ranking) ≈ spine damage + Wakeheart PvP damage + hold seconds + '''spines cleared × heavy weight'''. | |||
== Regnal Honors | == Regnal Honors (buffs only) == | ||
'''No personal debuff titles in v1.''' Soft power is buffing allies / diplomats and distributing Mandate Caches — not nerfing rivals. | |||
Realmwarden leadership assigns up to '''8''' unique Honors to '''any player on the server'''. Effects last while assigned (up to 7 days). '''24h cooldown''' per slot after reassignment. One player may hold '''at most one''' Honor at a time. | |||
{| class="wikitable" | {| class="wikitable" | ||
!ID | |||
!Honor | !Honor | ||
!Intent | !Intent | ||
! | !Modifiers | ||
|- | |- | ||
|<code>supreme_marshal</code> | |||
|Supreme Marshal | |Supreme Marshal | ||
|Military lead | |Military lead | ||
| +12% | |<code>fleetAttackPct +12%</code>, <code>unitRepairCostPct −15%</code> | ||
|- | |- | ||
|<code>arch_architect</code> | |||
|Arch-Architect | |Arch-Architect | ||
|Build / infra | |Build / infra | ||
| +20% | |<code>constructionSpeedPct +20%</code>, <code>monumentUpgradeCostPct −10%</code> | ||
|- | |- | ||
|<code>master_of_trade</code> | |||
|Master of Trade | |Master of Trade | ||
|Economy / diplomacy | |Economy / diplomacy | ||
| +25% | |<code>resourceProductionPct +25%</code>, <code>marketplaceTaxPct −15%</code> | ||
|- | |- | ||
|<code>high_inquisitor</code> | |||
|High Inquisitor | |High Inquisitor | ||
|Ops / PvE | |Ops / PvE | ||
| +15% | |<code>fleetSpeedPct +15%</code>, <code>pveBossDamagePct +10%</code> | ||
|- | |||
|<code>veilwarden</code> | |||
|Veilwarden | |||
|Defense / hold | |||
|<code>fleetDefensePct +12%</code>, <code>stationedRepairPct +10%</code> | |||
|- | |||
|<code>rift_cartographer</code> | |||
|Rift Cartographer | |||
|Travel / logistics | |||
|<code>fleetSpeedPct +10%</code>, <code>warpFuelCostPct −10%</code> | |||
|- | |||
|<code>mandate_quartermaster</code> | |||
|Mandate Quartermaster | |||
|Industry | |||
|<code>shipBuildSpeedPct +15%</code>, <code>defenseBuildSpeedPct +15%</code> | |||
|- | |||
|<code>first_speaker</code> | |||
|First Speaker | |||
|Prestige / diplomacy | |||
|Cosmetic nameplate + <code>resourceProductionPct +5%</code> | |||
|} | |} | ||
=== | === Honors as reward management === | ||
Honors are a '''prestige + performance''' lever alongside caches: | |||
* '''Caches''' = loot (fungible, many recipients) | |||
* '''Honors''' = scarce status + a real buff (8 slots server-wide) | |||
That can create '''healthy''' in-alliance competition (“I want Marshal next week”) and unhealthy drama if leadership is opaque. Mitigations: | |||
{| class="wikitable" | {| class="wikitable" | ||
! | !Practice | ||
! | !Detail | ||
|- | |||
|Contribution board | |||
|Public Riftwake score per member (spine / hold / PvP) so awards feel earned | |||
|- | |||
|Role diversity | |||
|Eight ''different'' buffs — not one “best” title; Marshal ≠ Architect ≠ Trade | |||
|- | |- | ||
| | |Split policy | ||
| | |Recommend: ~half Honors to own fighters, rest for diplomacy / NAP partners | ||
|- | |- | ||
| | |Rotation norm | ||
| | |Soft expectation to rotate Marshal / Inquisitor across top contributors week to week | ||
|- | |- | ||
| | |Reassign cost | ||
|24h slot cooldown + server announcement reduces silent favoritism flips | |||
| + | |||
|- | |- | ||
| | |One Honor / player | ||
| | |Stops stacking all best buffs on one whale | ||
|} | |} | ||
Some rivalry for Marshal / Inquisitor is '''intended''' — same as officer roles and FCS lead prestige. Keep it productive by making criteria visible and buffs specialized, not one god-tier title. | |||
== Fleet losses == | == Fleet losses == | ||
| Line 376: | Line 605: | ||
|- | |- | ||
|Siphon Spine (PvE) | |Siphon Spine (PvE) | ||
|Softer ( | |Softer (~'''15%''' debris); loot = '''1.5× boss''' pool + boss share curves | ||
|- | |- | ||
| | |Wakeheart (NPC then PvP) | ||
| | |'''2× boss''' initial garrison, '''0 loot'''; then standard PvP (~'''30%''' debris) vs occupying players | ||
|- | |- | ||
|Home colony stun | |Home colony stun | ||
| Line 479: | Line 708: | ||
|- | |- | ||
|Spine respawn | |Spine respawn | ||
|90 min @ 50% HP (Wakeheart phase) | |90 ± 15 min @ 50% HP (Wakeheart phase) | ||
|- | |||
|Spine debris | |||
|15% | |||
|- | |- | ||
|Astral Siphon | |Astral Siphon | ||
| Line 487: | Line 719: | ||
|7 days | |7 days | ||
|- | |- | ||
|Regnal Honor | |Regnal Honor slots | ||
|8 | |8 (buffs only; no debuff Marks) | ||
|- | |- | ||
|Title reassignment cooldown | |Title reassignment cooldown | ||
| Line 495: | Line 727: | ||
|Concurrent FCS / alliance | |Concurrent FCS / alliance | ||
|2 | |2 | ||
|- | |||
|Min galaxy realmLevel | |||
|'''4''' (Realm 4+ only) | |||
|- | |||
|Realmwarden production perk | |||
| +5% | |||
|- | |- | ||
|Mandate fatigue | |Mandate fatigue | ||
|−5% / retained week, max −15% | |−5% / retained week, max −15% | ||
|} | |||
== Implementation notes == | |||
{| class="wikitable" | |||
!Piece | |||
!Location | |||
|- | |||
|Feature flag | |||
|<code>features.riftwakeIncursion</code> (default false) | |||
|- | |||
|Config | |||
|<code>regna-api/src/config/riftwakeIncursionConfig.ts</code> + <code>riftwake.*</code> game_config rows | |||
|- | |||
|Migration | |||
|<code>2026-08-26_create_riftwake_incursion.ts</code> — tables, flag, scar seed | |||
|- | |||
|Scar picker | |||
|<code>riftwakeScarPlacement.ts</code> — skips belts with alliance ownership, territory nodes, or real player colonies (NPC protectors/pirates/trade ignored) | |||
|- | |||
|Contagion gate | |||
|<code>systemConquestService</code>, <code>systemSiegeService.canStartContest</code>, <code>allianceTerritoryNodeService.upsertOnConquest</code> | |||
|- | |||
|Denorm column | |||
|<code>systems.isRiftContagion</code> | |||
|- | |||
|Scar structures | |||
|<code>riftwakeScarStructureService</code> — strips planets/pirates/asteroids/protectors on scar centers; spawns Wakeheart @0 + Spines @1–4 | |||
|- | |||
|Structure migration | |||
|<code>2026-08-26_002_riftwake_scar_structures.ts</code> | |||
|- | |||
|Map tint | |||
|Contagion purple wash + Scar center magenta stroke in <code>SystemRenderer</code> | |||
|- | |||
|Structure overlay | |||
|<code>RiftwakeStructureDetailOverlay</code> — access / ally-hold badges + FCS attack CTA | |||
|- | |||
|Mandate UI | |||
|Alliance modal <code>Riftwake</code> tab — member picker for caches/Honors, contribution board | |||
|- | |||
|Access range | |||
|<code>assertLaunchAccess</code> — launch origin (colony / warp exit) within <code>accessRangeHexes</code> of Contagion belt | |||
|- | |||
|Ally hold lock | |||
|<code>assertWakeheartNotHeldByAlly</code> — diplomatic <code>ally</code> cannot displace occupying partner on Wakeheart; NAP can | |||
|- | |||
|Concurrent FCS | |||
|<code>assertConcurrentFcsLimit</code> — max 2 open Riftwake lead FCS per alliance | |||
|- | |||
|Participation rewards | |||
|Auto-grant 2nd/3rd + spine-clear packs at window end / Realmwarden declare | |||
|- | |||
|Honor / fatigue combat | |||
|Applied in <code>combatResearchService</code> + fleet speed via <code>calculateFleetSpeedWithCatalogs</code>; production Honor in <code>resourceService</code> | |||
|- | |||
|Client API | |||
|<code>riftwakeApiService</code> | |||
|- | |||
|Combat | |||
|<code>riftwakeCombatService</code> — spine clear credit, Wakeheart auto-station + displace, hold bonus | |||
|- | |||
|State machine | |||
|<code>riftwakeIncursionService.processTick</code> (1m) — weekly schedule, hold win, spine respawn (±jitter), window end | |||
|- | |||
|Astral Siphon | |||
|Applied in <code>resourceService.calculateResourceProductionPerHourForColony</code> | |||
|- | |||
|Mandate / Honors | |||
|<code>POST /api/riftwake/mandate-caches/:id/distribute</code>, <code>POST /api/riftwake/honors/assign</code> | |||
|- | |||
|API | |||
|<code>GET /api/riftwake/overview</code> (includes contribution board + access badges), <code>GET /api/riftwake/scars</code> | |||
|- | |||
|Client flag | |||
|<code>RIFTWAKE_INCURSION_FEATURE_KEY</code> in game-core <code>featureFlags.ts</code> | |||
|} | |} | ||
Revision as of 09:17, 27 August 2026
Riftwake Incursion is a recurring weekly Alliance-versus-Alliance event in Per Regna. Five ancient Riftwake Scars mark the galaxy; each week one flares. Alliances destroy Siphon Spines (PvE), then fight for a continuous hold on the Wakeheart (PvP). The victor becomes Realmwarden for seven days and holds the Mandate of Regna: discretionary Mandate Caches and server-wide Regnal Honors (buff titles only).
Status: Implemented behind
features.riftwakeIncursion(default false). Contagion belts are seeded by migration and stay unconquerable even while the event flag is off. Eligible galaxies: realmLevel ≥ 4 (Realm 4+ only — R2/R3 lack enough alliance density for Contagion-range AvA).
Contents
- Why it exists
- Lore glossary
- Map: scars & contagion
- Event flow
- Access & launch
- Allies, NAP & FCS coalitions
- Phase 1 — Siphon Spines
- Phase 2 — Wakeheart hold
- Astral Siphon (galaxy drain)
- Realmwarden & Mandate of Regna
- Rewards
- Regnal Honors (buffs only)
- Fleet losses
- FCS limits
- Anti-domination
- Edge cases
- Tunables
- Related systems
Why it exists
Uncoordinated moon raids and border scrapes do not create a shared server story. Riftwake Incursion channels conflict into:
- Spatial pressure — expand or ally toward this week’s Active Scar
- Hybrid combat — PvE spine clears plus open PvP at the Wakeheart
- Governance — the Realmwarden manually distributes Mandate Caches and Regnal Honors, driving diplomacy and counter-coalitions
Lore glossary
| Term | Meaning |
|---|---|
| Riftwake | Alien puncture of local space; drains productivity until silenced |
| Riftwake Scar | One of five fixed systems where a Riftwake can flare |
| Active Scar | This week’s flared scar (the only attackable site) |
| Siphon Spine | PvE alien node shielding the Wakeheart (×4 per Active Scar) |
| Wakeheart | PvP hold target at the scar’s system center |
| Rift Contagion | Unconquerable blight on the scar + adjacent hexes |
| Astral Siphon | Galaxy-wide production drain while Riftwake structures live |
| Realmwarden | Alliance that silenced the Active Scar; rules for 7 days |
| Mandate of Regna | Realmwarden privileges: caches + title assignment |
| Mandate Caches | Sealed reward packages distributed by leadership |
| Regnal Honors | Positive player titles (buffs) assigned by the Realmwarden |
| Regnal Marks | (Removed from v1 — buffs only; no personal debuff titles) |
Map: scars & contagion
Five rotating Riftwake Scars
| Rule | Detail |
|---|---|
| Scars | 5 fixed systems on a ring (not galaxy center) |
| Active | 1 scar per week (published rotation) |
| Dormant | Other 4 visible on the map, not attackable that week |
| Layout (Active Scar) | 1 Wakeheart (center colony) + 4 Siphon Spines (orbital colonies) in the same system — nebula-style, not a normal colonizable system |
Scar center layout (nebula pattern)
Scar centers are special systems (not normal habitable colony rings). Structure mirrors nebulas: one center body + orbital targets players attack by planet/colony id.
| Slot | Position | Entity | Role |
|---|---|---|---|
| Center | 0 | Wakeheart colony | Final PvP hold target (FCS / station at system center) |
| Orbit | 1–4 | Siphon Spine colonies | PvE raid targets; must all be cleared before Wakeheart is attackable |
| — | 5+ | None | No extra planets, asteroids, or player colonies on scar centers |
[Spine 2] [Spine 3]
\ /
\ /
[Wakeheart] ← position 0 (system center)
/ \
/ \
[Spine 1] [Spine 4]
| Rule | Detail |
|---|---|
| Planet types | New types e.g. wakeheart / siphonSpine (or reuse systemCenter + tagged NPC colonies)
|
| Colonizable | false — no player colonies on scar centers |
| Owner | Shared Riftwake NPC player (like system protector / pirate NPC) |
| Attack flow | Target a Siphon Spine colony with FCS → clear all 4 → Wakeheart shield drops → target Wakeheart colony to occupy/hold |
| Contagion neighbors | Stay normal habitable systems (planets OK); only scar centers use this layout |
| UI | System view like nebula: show Wakeheart + 4 spines only, hide normal planet strip |
Conversion (existing maps): for each riftwake_scars.systemId, strip/hide colonizable planets + pirates/asteroids at the scar; ensure position 0 = Wakeheart colony and positions 1–4 = Siphon Spine colonies; wire riftwake_spines rows to those colony/planet ids.
Rift Contagion (unconquerable belt)
Alien influence bleeds into neighboring stars. Empires cannot permanently claim those systems.
| Scope | Count |
|---|---|
| Per scar | Scar + 6 adjacent hexes = 7 systems |
| All scars | 5 × 7 = 35 systems |
| Rules | No system conquering, no alliance territory nodes |
| Allowed | Travel, station for the event, harvest/PvE as configured |
| Lore | Rift Contagion has spread; those stars reject permanent control |
~35 locked systems out of ~7500 is negligible for colonization and prevents a single alliance from owning every approach hex.
Event flow
Weekly rotation picks Active Scar (realmLevel ≥ 4 galaxies)
│
▼
Launch from Contagion-range origin (own / alliance / diplomatic-ally station)
│
▼
Phase 1 — Destroy all 4 Siphon Spines (PvE + PvP perimeter)
│ Wakeheart invulnerable while any spine stands
│ Each clear: −1% Astral Siphon + hold bonus for clearing alliance
▼
Phase 2 — Occupy Wakeheart; hold continuously (default 3h, shortened by hold bonus)
│ Displacement resets that alliance’s hold timer
│ Diplomatic allies cannot displace each other (NAP still can)
│ Spines may respawn (±jitter) for bonus contests (Wakeheart stays vulnerable)
▼
Winner — Realmwarden (7 days)
Mandate Caches + Regnal Honors + Mandate fatigue if they win again next week
Auto participation packs for 2nd / 3rd / spine-clear fighters
Access & launch
| Rule | Detail |
|---|---|
| Eligibility | Launch origin (from-colony or warp-hop exit) must sit within 2 hexes of the active Contagion belt. Distant ally presence does not unlock global launches. |
| Origin ownership | Own colony, same-alliance colony, or diplomatic ally station |
| Warp hop | Warp exit must still be an own-alliance hop target (unchanged warp rules). Ally stations help as launch/station origins, not as free warp exits for other alliances. |
| Solo | No Realmwarden path without an alliance |
| Launch | FCS / station missions from eligible origins |
| Ownership | Active Scar system is never permanently conquered |
Allies, NAP & FCS coalitions
Diplomatic treaties do not merge alliances for Riftwake scoring or win conditions. Each alliance remains a separate competitor.
| Topic | Locked rule |
|---|---|
| Scoring / win | Spine credit, hold ownership, and Realmwarden are always one alliance id — never shared across allies |
| Inter-alliance FCS | Allowed only when the rally lead opts in (Allow inter-alliance participation). NAP-only / strangers cannot join |
| Credit on joint FCS | Lead’s alliance gets spine clear / Wakeheart occupy / hold. Allied joiners help damage and share spine loot, but do not share hold-bonus ownership or Realmwarden |
| Own rallies | Allies may still run their own FCS and compete against each other |
| Wakeheart displace | Diplomatic ally cannot kick / replace the occupying partner (must break ally first)
|
| NAP on Wakeheart | Still contestable — NAP does not protect the holder |
| Allied launch | May launch Riftwake attacks from an ally station in Contagion range; does not grant map-wide unlock |
Phase 1 — Siphon Spines
Four high-tier Siphon Spines protect the Wakeheart.
| Mechanic | Detail |
|---|---|
| Wakeheart shield | Invulnerable while any spine is alive |
| Combat | Hybrid: damage the spine (PvE) while rival fleets contest the system (PvP) |
| Clear credit | Alliance that destroys the spine gets credit |
| Hold bonus | +5% Wakeheart hold rate per credited spine (max +20%) |
| Concurrent FCS | Max 2 active Riftwake FCS rallies per alliance |
| Fleet / loot | 1.5× high Boss (boss tier) fleet + resource/item pool; FCS-only; loot share uses the same boss participation curves (more joiners → more pool access)
|
| Target | Players pick one Siphon Spine colony (positions 1–4) as mission target |
| Debris | Softer PvE (~15% debris / graveyard split) on spine PvE losses |
Spine respawn (Wakeheart phase)
After all four spines fall and the Wakeheart is vulnerable:
| Rule | Detail |
|---|---|
| Respawn | Every 90 ± 15 minutes at 50% HP (jitter anti-timer-snipe) |
| Shield | Does not re-lock the Wakeheart |
| Credit | Re-clear can grant or steal hold-bonus credit for that spine slot |
| Cap | Hold bonus still capped at +20% |
Phase 2 — Wakeheart hold
| Mechanic | Detail |
|---|---|
| Mission | FCS attack (no new mission type). On attacker victory, survivors auto-station and occupation starts |
| Initial NPC garrison | 2× high Boss fleet — no resource stockpile / no combat loot (fight is for the hold only) |
| Capture | Win at Wakeheart colony (pos 0) → your alliance occupies |
| Win condition | Continuous occupation until required hold time elapses |
| Base hold | 3 hours wall-clock at +0% bonus |
| Hold bonus | requiredHold = 3h / (1 + bonus); e.g. +20% → ~2h 30m
|
| Displacement | Rival FCS victory vs occupying fleets → timer resets to 0; winners auto-station. Diplomatic allies cannot displace each other (must break ally first). NAP remains contestable. |
| Neutral Wakeheart | No alliance left stationed → timer does not tick |
| Gating | Wakeheart attacks refused while any Siphon Spine still has NPC ships |
| Loot on kick/win | None — no RSS moved to the next winner; spine loot + Mandate Caches are the payouts |
| Window | Default 8 hour active event window |
Example hold times
| Spines credited | Hold bonus | Approx. continuous hold needed |
|---|---|---|
| 0 | +0% | 3h 00m |
| 1 | +5% | ~2h 51m |
| 2 | +10% | ~2h 43m |
| 3 | +15% | ~2h 36m |
| 4 | +20% | ~2h 30m |
Tiebreakers (window ends, no full hold)
- Longest continuous hold in the last 2 hours
- Else most spine clears credited
- Else no Realmwarden — Mandate Cache pool rolls to next week (+10%)
Astral Siphon (galaxy drain)
While Riftwake structures remain, they drain galaxy productivity.
drain = 5% base + (1% × remaining alive spines/Wakeheart)
With 1 Wakeheart + 4 Siphon Spines (5 structures):
| State | Approx. drain |
|---|---|
| Event start (all alive) | 10% |
| Each spine cleared | −1% |
| All spines cleared, Wakeheart still contested | 6% (Wakeheart) |
| Realmwarden claimed / Wakeheart silenced | 0% |
Applies to production income, not warehouse stock. Global UI should show current Astral Siphon and recent clear attribution.
Realmwarden & Mandate of Regna
| Privilege | Duration |
|---|---|
| Realmwarden status | 7 days (until next Incursion) |
| Mandate Caches | Manual distribution by leadership |
| Regnal Honors | Up to 8 buff titles, any player on the server |
| Alliance perk | +5% resource production for Realmwarden members while Mandate lasts |
| Mandate fatigue | −5% battle stats per consecutive week retained (cap −15%); resets when another alliance wins |
Rewards
Mandate Caches (manual)
Delivered once per win to the Realmwarden alliance leadership vault. Leader / Deputy gift to players. Contents use existing quest / weekly-event item types (realm-scaled resource packs).
Prime Mandate Cache × 3 (high)
| Content | Spec |
|---|---|
| Resources | resourcePack: large × 1
|
| Monument | monument_piece / monument_mythical × 3
|
| Relic | relic_piece / relic_piece_mythical × 2
|
| Speed | nano_boost / nano_boost_building_epic × 5
|
| Combat prep | boost_box / boost_box_epic × 3
|
| Tech | tech_boost / tech_boost_mythical × 3
|
| Flex | artifact_box / artifact_box_standard × 2
|
Spinebreaker Cache × 8 (medium)
| Content | Spec |
|---|---|
| Resources | resourcePack: medium × 1
|
| Monument | monument_piece / monument_mythical × 1
|
| Relic | relic_piece / relic_piece_legendary × 2
|
| Speed | nano_boost / nano_boost_building_epic × 3
|
| Combat prep | boost_box / boost_box_epic × 2
|
| Tech | tech_boost / tech_boost_epic × 2
|
Accord Cache × 15 (standard)
| Content | Spec |
|---|---|
| Resources | resourcePack: small × 1
|
| Combat prep | boost_box / boost_box_rare × 2
|
| Speed | nano_boost / nano_boost_building_epic × 1
|
| Tech | tech_boost / tech_boost_epic × 1
|
Vault rules
| Rule | Value |
|---|---|
| Who can send | Leader + Deputy |
| Audit | Alliance-visible gift log |
| Expiry | End of Realmwarden week |
| Undistributed | 50% auto-split by contribution score among members who fought; 50% void |
| Stockpile | Current week’s grant only |
Participation (non-winners)
Automatic at window end (not manual):
| Place | Reward |
|---|---|
| 2nd by contribution | Per active fighter: resourcePack: medium + boost_box_epic × 1
|
| 3rd | Per active fighter: resourcePack: small + boost_box_rare × 1
|
| Spine clear (≥1 credited) | Fighters with spine-clear contribution: resourcePack: tiny + boost_box_common × 1
|
Contribution score (board + place ranking) ≈ spine damage + Wakeheart PvP damage + hold seconds + spines cleared × heavy weight.
Regnal Honors (buffs only)
No personal debuff titles in v1. Soft power is buffing allies / diplomats and distributing Mandate Caches — not nerfing rivals.
Realmwarden leadership assigns up to 8 unique Honors to any player on the server. Effects last while assigned (up to 7 days). 24h cooldown per slot after reassignment. One player may hold at most one Honor at a time.
| ID | Honor | Intent | Modifiers |
|---|---|---|---|
supreme_marshal
|
Supreme Marshal | Military lead | fleetAttackPct +12%, unitRepairCostPct −15%
|
arch_architect
|
Arch-Architect | Build / infra | constructionSpeedPct +20%, monumentUpgradeCostPct −10%
|
master_of_trade
|
Master of Trade | Economy / diplomacy | resourceProductionPct +25%, marketplaceTaxPct −15%
|
high_inquisitor
|
High Inquisitor | Ops / PvE | fleetSpeedPct +15%, pveBossDamagePct +10%
|
veilwarden
|
Veilwarden | Defense / hold | fleetDefensePct +12%, stationedRepairPct +10%
|
rift_cartographer
|
Rift Cartographer | Travel / logistics | fleetSpeedPct +10%, warpFuelCostPct −10%
|
mandate_quartermaster
|
Mandate Quartermaster | Industry | shipBuildSpeedPct +15%, defenseBuildSpeedPct +15%
|
first_speaker
|
First Speaker | Prestige / diplomacy | Cosmetic nameplate + resourceProductionPct +5%
|
Honors as reward management
Honors are a prestige + performance lever alongside caches:
- Caches = loot (fungible, many recipients)
- Honors = scarce status + a real buff (8 slots server-wide)
That can create healthy in-alliance competition (“I want Marshal next week”) and unhealthy drama if leadership is opaque. Mitigations:
| Practice | Detail |
|---|---|
| Contribution board | Public Riftwake score per member (spine / hold / PvP) so awards feel earned |
| Role diversity | Eight different buffs — not one “best” title; Marshal ≠ Architect ≠ Trade |
| Split policy | Recommend: ~half Honors to own fighters, rest for diplomacy / NAP partners |
| Rotation norm | Soft expectation to rotate Marshal / Inquisitor across top contributors week to week |
| Reassign cost | 24h slot cooldown + server announcement reduces silent favoritism flips |
| One Honor / player | Stops stacking all best buffs on one whale |
Some rivalry for Marshal / Inquisitor is intended — same as officer roles and FCS lead prestige. Keep it productive by making criteria visible and buffs specialized, not one god-tier title.
Fleet losses
| Combat | Loss profile |
|---|---|
| Siphon Spine (PvE) | Softer (~15% debris); loot = 1.5× boss pool + boss share curves |
| Wakeheart (NPC then PvP) | 2× boss initial garrison, 0 loot; then standard PvP (~30% debris) vs occupying players |
| Home colony stun | No colony hangar stun from Riftwake battles |
| Attacker immunity | Riftwake PvP does not strip personal immunity shields |
FCS limits
| Limit | Value |
|---|---|
| Concurrent Riftwake FCS rallies per alliance | 2 |
| Participants per rally | Boss-tier caps (reuse pirate boss style: high participant / per-alliance soft caps) |
| Loot / credit curve | Prefer 10–12 participants for strong share access |
Anti-domination
| Lever | Effect |
|---|---|
| Hold bonus from spines | Skill / timing can beat pure blob size |
| Spine respawn | Late alliances can steal bonuses |
| Coalitions | NAP + allied launch stations |
| Mandate fatigue | Each consecutive week the same alliance retains Realmwarden: −5% battle stats (cap −15%); resets when another alliance wins |
| Manual caches / titles | Tyranny invites next-week coalitions |
Rotation cartels are a social risk, not a hard technical ban.
Edge cases
| Case | Resolution |
|---|---|
| Four alliances clear four spines; fifth takes Wakeheart | Allowed; fifth has no hold bonus unless they steal respawns |
| Same tick damage on a spine | Higher total damage alliance gets clear credit |
| Occupier at 2h59m kicked | Timer resets; must complete a full continuous hold again |
| Alliance disbands mid-hold | Occupation void; Wakeheart goes neutral |
| Event ends with no full hold | Tiebreakers; else no Realmwarden, Mandate Cache pool rolls over |
| Caches undistributed | Vault holds them; end-of-week auto-split / decay rules apply |
| Pre-existing owners in Contagion hexes | Prefer empty rings at seed; live servers need a one-time abandon / relocate path |
Tunables
| Parameter | Starting value |
|---|---|
| Riftwake Scars | 5 |
| Systems under Rift Contagion | 35 |
| Wakeheart + Siphon Spines | 1 + 4 |
| Access range | 2 hexes |
| Event window | 8 hours |
| Base continuous hold | 3 hours |
| Hold bonus per spine | +5% (max +20%) |
| Spine respawn | 90 ± 15 min @ 50% HP (Wakeheart phase) |
| Spine debris | 15% |
| Astral Siphon | 5% + 1% per remaining structure |
| Realmwarden duration | 7 days |
| Regnal Honor slots | 8 (buffs only; no debuff Marks) |
| Title reassignment cooldown | 24h / slot |
| Concurrent FCS / alliance | 2 |
| Min galaxy realmLevel | 4 (Realm 4+ only) |
| Realmwarden production perk | +5% |
| Mandate fatigue | −5% / retained week, max −15% |
Implementation notes
| Piece | Location |
|---|---|
| Feature flag | features.riftwakeIncursion (default false)
|
| Config | regna-api/src/config/riftwakeIncursionConfig.ts + riftwake.* game_config rows
|
| Migration | 2026-08-26_create_riftwake_incursion.ts — tables, flag, scar seed
|
| Scar picker | riftwakeScarPlacement.ts — skips belts with alliance ownership, territory nodes, or real player colonies (NPC protectors/pirates/trade ignored)
|
| Contagion gate | systemConquestService, systemSiegeService.canStartContest, allianceTerritoryNodeService.upsertOnConquest
|
| Denorm column | systems.isRiftContagion
|
| Scar structures | riftwakeScarStructureService — strips planets/pirates/asteroids/protectors on scar centers; spawns Wakeheart @0 + Spines @1–4
|
| Structure migration | 2026-08-26_002_riftwake_scar_structures.ts
|
| Map tint | Contagion purple wash + Scar center magenta stroke in SystemRenderer
|
| Structure overlay | RiftwakeStructureDetailOverlay — access / ally-hold badges + FCS attack CTA
|
| Mandate UI | Alliance modal Riftwake tab — member picker for caches/Honors, contribution board
|
| Access range | assertLaunchAccess — launch origin (colony / warp exit) within accessRangeHexes of Contagion belt
|
| Ally hold lock | assertWakeheartNotHeldByAlly — diplomatic ally cannot displace occupying partner on Wakeheart; NAP can
|
| Concurrent FCS | assertConcurrentFcsLimit — max 2 open Riftwake lead FCS per alliance
|
| Participation rewards | Auto-grant 2nd/3rd + spine-clear packs at window end / Realmwarden declare |
| Honor / fatigue combat | Applied in combatResearchService + fleet speed via calculateFleetSpeedWithCatalogs; production Honor in resourceService
|
| Client API | riftwakeApiService
|
| Combat | riftwakeCombatService — spine clear credit, Wakeheart auto-station + displace, hold bonus
|
| State machine | riftwakeIncursionService.processTick (1m) — weekly schedule, hold win, spine respawn (±jitter), window end
|
| Astral Siphon | Applied in resourceService.calculateResourceProductionPerHourForColony
|
| Mandate / Honors | POST /api/riftwake/mandate-caches/:id/distribute, POST /api/riftwake/honors/assign
|
| API | GET /api/riftwake/overview (includes contribution board + access badges), GET /api/riftwake/scars
|
| Client flag | RIFTWAKE_INCURSION_FEATURE_KEY in game-core featureFlags.ts
|
Related systems
- Alliance Territory — connected territory and access
- Territory Siege — hold / debris patterns (inspirational, not the same flow)
- Pirate Bosses — FCS tonnage, participant caps, loot share curves
- Fleet Combat — PvP debris vs Ship Graveyard
- Alliances — leadership ranks for cache / title tools