feat(bridge): RaidableBases — raid.* events, raid.spawn, the raids helper (PLAN_REDESIGNS §11.4) #42
@@ -30,7 +30,7 @@
|
||||
#
|
||||
# 2. A FRAMEWORK-NEUTRAL LAYOUT. The tarball holds one directory,
|
||||
# `runicgateway-rust-plugin/`, with `RunicGateway.cs`, its helpers
|
||||
# (`RunicGatewayZones.cs`, `RunicGatewayDomes.cs`) and `manifest.json` at its top. Every `.cs` in it is listed in the
|
||||
# (`RunicGatewayZones.cs`, `RunicGatewayDomes.cs`, `RunicGatewayRaids.cs`) and `manifest.json` at its top. Every `.cs` in it is listed in the
|
||||
# manifest's `files`, and the installer and the egg place every one of them. It does NOT mirror `oxide/plugins/`: the same file goes to
|
||||
# `oxide/plugins/` or `carbon/plugins/`, and the installer and the egg each
|
||||
# decide which (§34.2.1). The fixed, unversioned prefix is so a reader never
|
||||
@@ -41,7 +41,8 @@
|
||||
# committed file keeps its placeholder; the manifest records the commit.
|
||||
# Only the bridge is stamped. A helper (docs/modules/rust/PLAN_FIXES.md D168,
|
||||
# D182 — today `RunicGatewayZones.cs` for ZoneManager and `RunicGatewayDomes.cs`
|
||||
# for ZoneDomes, PLAN_REDESIGNS D194) keeps its own
|
||||
# for ZoneDomes, PLAN_REDESIGNS D194, and `RunicGatewayRaids.cs` for RaidableBases,
|
||||
# D204) keeps its own
|
||||
# version: it does one job, changes rarely, and the bridge reads its version at
|
||||
# hello to know which job it does.
|
||||
#
|
||||
@@ -81,7 +82,7 @@ env:
|
||||
PLUGIN: overlay/oxide/plugins/RunicGateway.cs
|
||||
# The helpers shipped beside the bridge (D168, D182). Optional at runtime —
|
||||
# the bridge loads without them — and installed by default.
|
||||
HELPERS: overlay/oxide/plugins/RunicGatewayZones.cs overlay/oxide/plugins/RunicGatewayDomes.cs
|
||||
HELPERS: overlay/oxide/plugins/RunicGatewayZones.cs overlay/oxide/plugins/RunicGatewayDomes.cs overlay/oxide/plugins/RunicGatewayRaids.cs
|
||||
SEED_VERSION: "0.1.0"
|
||||
INSTALLER_REPO: RunicGateway/installer
|
||||
|
||||
|
||||
21
README.md
21
README.md
@@ -37,6 +37,7 @@ unauthenticated command channel on the network.
|
||||
overlay/oxide/plugins/RunicGateway.cs → <server>/oxide/plugins/RunicGateway.cs
|
||||
overlay/oxide/plugins/RunicGatewayZones.cs → <server>/oxide/plugins/RunicGatewayZones.cs
|
||||
overlay/oxide/plugins/RunicGatewayDomes.cs → <server>/oxide/plugins/RunicGatewayDomes.cs
|
||||
overlay/oxide/plugins/RunicGatewayRaids.cs → <server>/oxide/plugins/RunicGatewayRaids.cs
|
||||
```
|
||||
|
||||
`RunicGatewayZones.cs` is the **ZoneManager helper** (docs/modules/rust/PLAN_FIXES.md D181, D182). ZoneManager
|
||||
@@ -52,6 +53,17 @@ helper patches the first with Harmony and tells the bridge when ZoneDomes has st
|
||||
domes back without drawing any twice. It is optional: without it the site offers no dome, and says which piece is
|
||||
missing. `rgd.status` in the server console says whether it patched.
|
||||
|
||||
`RunicGatewayRaids.cs` is the **RaidableBases helper** (docs/modules/rust/PLAN_REDESIGNS.md §11.4, D204–D207,
|
||||
D387). RaidableBases' API spawns nothing and despawns nothing, so an event's base cannot be the event's from the
|
||||
outside. The helper reaches its internals by reflection and patches its spawn queue, `OpenEvent` and each base's
|
||||
`BypassUseOwners()` with Harmony: it tags the base a run asked for at birth, applies that spawn's own PvP, NPCs,
|
||||
despawn time and lock on a copy of its profile, places one at a spot after checking it, despawns that one base at
|
||||
the run's end, and reloads RaidableBases' profiles when the site edits them. It serves both editions, free and
|
||||
paid, and reads every difficulty, profile and base name from the installed plugin. It is optional: without it the
|
||||
bridge still reports raid bases on the feed and the map, and a step can still ask RaidableBases for a base where it
|
||||
picks, but that base despawns on its own timer, and the site says so. `rgr.status` in the server console says
|
||||
whether it patched, which edition's spawn call it found, and whether the plugin's spawn grid is built.
|
||||
|
||||
Oxide compiles and loads it on the write, and writes `oxide/config/RunicGateway.json` on first load:
|
||||
|
||||
```json
|
||||
@@ -134,6 +146,15 @@ kept when the event ends: Guarded Crate has no way to end one event alone. Witho
|
||||
is refused, because the crate would land unguarded; and, as for Dangerous Treasures, a framework with
|
||||
`consolePlugins=False` cannot place one.
|
||||
|
||||
nivex's `RaidableBases` is optional, free or paid, and needs `CopyPaste` to paste its bases. Where it is
|
||||
loaded, a base appearing, being raided, bought or locked to a player reach the site's feed, its map's own
|
||||
*Raid bases* layer and the *Warlord* title, and an event can spawn one (`raid.spawn`). With
|
||||
`RunicGatewayRaids.cs` (above) the base is the event's: at a spot or where RaidableBases picks, with its own
|
||||
settings, despawned when the event ends; and the site can edit RaidableBases' profiles from its configuration
|
||||
page, reloading them under watch. For up to ten minutes after RaidableBases loads it builds its spawn grid and
|
||||
refuses every spawn, and a spawn then is answered "not ready". Every difficulty, profile and base name is read
|
||||
from the installed plugin.
|
||||
|
||||
nivex's `ZLevels Remastered` is optional, and the bridge only says whether it is loaded. Its levels are
|
||||
never read or sent. Its XP boosts are its own permissions (`zlevelsremastered.vip1` to `vip3`), so an
|
||||
event lends one as it lends any other permission, and it takes effect at once.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
1697
overlay/oxide/plugins/RunicGatewayRaids.cs
Normal file
1697
overlay/oxide/plugins/RunicGatewayRaids.cs
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user