Fixes https://github.com/Aurorastation/Aurora.3/issues/21944
Spiritual successor of
https://github.com/Aurorastation/Aurora.3/pull/22352
Cherrypicked changes from the C3 Crew Management branch, this PR
contains all NTNet extensibility features, including Field Relay
construction, off-site camera usage (contingent on standing up remote
hardware and being out of jamming), etc. This also fixes a handful of
outstanding telecomms and view/mobeye-related bugs adjacent to where I
was working.
changes:
- rscadd: "Adds NTNet extensibility, requires new machinery constructed
on away-site z-levels."
- rscadd: "Breaks NTNet Relay machinery into Quantum Relay ('core' obj
on Horizon) and Field Relay (deployable off-site constructions)."
- qol: "Embedded cameras (basically every video camera EXCEPT those
which are installed on walls) can now be viewed from NTNet-connected
z-level, not just connected ones."
- rscadd: "Adds several public camera monitor consoles to the Horizon
(near where public sensor grid feed consoles already exist)."
- rscadd: "Adds some spare camera console boards to Horizon technical
storage."
- qol: "Adds action button for 'cancel-camera-view' verb while viewing
cameras or looking up/down z-level."
- bugfix: "Fixes Jockey comms (frequency was missing from ANTAG_FREQS)."
- bugfix: "Fixes look-up/look-down actions intermittently failing
without first using cancel-camera-view."
# Summary
This PR is the next update to the persistency subsystem. The goal of
this PR is to provide more framework like functions to allow more types
of content to be made persistent.
Currently only volatile game objects created during a round can be (*in
a [clean](https://www.youtube.com/watch?v=rZ3ETK7-ZM8) way*) saved and
made persistent. This update attempts to provide methods to make
*everything*¹ persistent.
This introduces persistent generics and history.
## Database
The following things are going to be changed and added in the database
(open in new tab for better visibility, PNG file includes the drawIO
code):
<img width="1692" height="1041" alt="aurora_persistency_db drawio"
src="https://github.com/user-attachments/assets/ea53f419-f9aa-4592-af8f-3a8d5edf3177"
/>
**Deviations on database implementation from diagram:**
- Removed unique constraint on history table - Prevented adding multiple
records per round per attribute.
## Framework surface changes
- MC/VV: Moved global object track register to subsystem var space.
- MC/VV: Point of interest: Added history_cache and generic_cache to
subsystem var space.
- MC/VV: Updated subsystem stat entry message, now providing information
on cache sizes of new types.
- Added `singleton/persistent_type` defines (Type, clean-up rules,
finalization hook) and macros allowing new definitions of said types.
- Added cache structures that are also used for returns on public procs
in generics and history persistent types.
- Major new framework features: Persistent history (example: Mining
yield records) and persistent generics (example: Persistent Horizon
overmap position). See documentation for more information.
DrawIO diagram for documentation, includes source in it (open in new
tab):
<img width="200" height="200" alt="Persistence-subsystem-flowchart
drawio"
src="https://github.com/user-attachments/assets/51f28331-f999-49a2-a7cc-58278f7ae416"
/>
## Tasks
(These lists are not comprehensive.)
**General**
- [x] Update DB - Write SQL scripts.
- [x] Add subsystem modular files for generics and history.
- [x] Add type definition logic, macros.
- [x] Add type-DB init logic.
- [x] Logging.
- [x] A lot of testing. *A lot.*
- [x] Changelog.
- [x] Self-Review.
- [x] Update documentation on the persistence subsystem.
**"Persistent history"**
- [x] Add init logic.
- [x] Add finalize logic.
- [x] Add framework surface procs.
- [x] Get last record.
- [x] Get last X records.
- [x] Add record.
- [x] Add character ID related validation.
- [x] Add initial example mechanic.
**"Persistent generics"**
- [x] Add init logic.
- [x] Add finalize logic.
- [x] Add framework surface procs.
- [x] Save.
- [x] Load.
- [x] Add initial example mechanic.
## Changes
Too many changes to be listed here - Check changelog and actual changes.
## Warning
There are certain use/test cases that *cannot* be tested locally due to
missing preexisting data in the database. This should only affect new
data structures (new persistent types), not existing data.
¹ _Large scale persistent mapping is excluded for this version._
---------
Co-authored-by: Copilot <copilot@github.com>
changes:
- refactor: "Refactors Gravity Generator UI from HTML to TGUI."
- rscadd: "Adds sector-based modifier var 'overmap_hazards_multiplier'
for generating total overmap hazard count."
- soundadd: "Adds new Lemurian Sea 'welcome' announcements."
- rscadd: "Added Lemurian Sea gravitic anomalies as overmap hazards and
random events."
- rscadd: "Adds ADPI/The Voices."
- rscadd: "Adds ADPI Panel for modmins to send ADPI messages to a single
character or all characters from their respective pools, or custom
messages."
- balance: "Vaurca Hivenet communication, the Hivenet Manifest, and
Hivenet Echoes are now disabled while the ship is in Lemurian Sea
sectors."
# Summary
This PR rebalances the spawn count and radius of overmap hazard
clusters, as well as adjusts some of their overmap movement behavior.
## Justification
Mining trips to exoplanets distant to the Horizon can force miners to
spend large portions of a given round just trying to navigate around
overmap hazards; in the worst cases, the sheer number of dead ends and
blind spots can result in their effective removal from the first 60-90
minutes of a round, and the worst delays can obviate the need for their
materials in the first place. While reducing these hazards would also
benefit the Horizon and offships, the primary motivation was to reduce
mining's "dead time" in any given round.
## Details
Most overmap hazard types have had their 'count' (the number of clusters
spawned) and radius reduced, to open up more navigable space on the
overmap. This has been compensated for by modifying movement
probabilities, speeds, and behaviors of overmap hazards.
The intervals between overmap hazards moving (their effective speeds)
has been made variable; different clusters of movable hazards will no
longer always proc movement at the same time.
Carp continue to have a random chance to move in a random direction
every interval. Space dust and meteors now also have a chance to spawn
in as movable hazards, but they will only ever move in one direction.
While more dangerous to passing shuttles and ships than carp, they are
also much more predictable.
The current numbers were based on observation of several randomly
generated maps during testing, but will likely need adjustment as it
faces actual miners and we accumulate their feedback. I erred on the
side of 'less difficult' to avoid overtuned rocks from smashing crew to
pieces every round.
Reverts #20467
For some reason, if you put a png into icon() and then show that to a
client, it uses a colossal amount of GPU. No idea.
Reverts to our older lobby system pending TGUI update.
Fixes#21489
## About PR
PR'd again from #21045 because a mistake I made, apologies for this.
Off-ship packages are now spawned whenever they exist in the overmap.
Adjusted the warehouse to include a small room for newer packages to
come in, given the alternative was letting them spawn and scatter out of
nowhere in the middle of the round. Packages for roundstart non-hidden
locations like exoplanets or any other location with delivery spots
aren't affected by any of these changes.
Also when an off-ship becomes available for packages, operations receive
an announcement message about it.
## Images
<img width="416" height="512" alt="grr"
src="https://github.com/user-attachments/assets/a8d82a60-e18e-4fda-ac3f-acccc256c6f6"
/>
<img width="891" height="42"
alt="469941125-59633a9b-a32f-40ea-98b8-4a38fd0d31ac"
src="https://github.com/user-attachments/assets/bf5586e6-efea-4c01-af51-6c405107a8d0"
/>
* Cargo delivery packages now have colored tags on them which should
hopefully make it easier to distinguish between them, instead of
changing the entire package's color.
* Delivering a package now outputs another, allowing you to continuously
deliver throughout the round, should you choose to.
* Fixed cargo packages runtiming on the runtime map.
https://forums.aurorastation.org/topic/20198-mission-briefing-auroras-gamemode-revolution
To-do:
- [x] Finish storyteller verbs.
- [x] Storyteller landmarks.
- [x] Proper storyteller spawning. Right now the gamemode system is
happy with just picking one storyteller and no actors.
- [x] Antagonist whitelists code.
- [x] Adding the Storyteller whitelist.
- [x] Mission map loading code.
- [x] Map in a bunch of missions.
- [ ] Storyteller adminhelps.
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: DreamySkrell <>
tl;dr: instead of doing it on the last added zlevel (which is not
correct anyways...), it uses bounds received from load_new_z
---------
Co-authored-by: DreamySkrell <>
Adds some new fields to the shuttle manifest:
- Destination (Per shuttle)
- Heading (Per shuttle)
- Mission (Per shuttle)
- Departure Time (Per Shuttle)
- Return Time (Per Shuttle)
- Expedition/Mission Leader (One per shuttle)
- Shuttle Pilot (One per shuttle)
Also adds the shuttle manifest to Bridge Crew PDAs by default.
<img width="458" alt="image"
src="https://github.com/Aurorastation/Aurora.3/assets/26849270/802d9a8d-9c43-4883-a5a7-d23967616766">
* Port of Call Template Flag
* oops
* bitflags
* bitflags but frfr
* I give up + fix
* bitflags again again
* Port of Call Day changes
* remove Horizon check
* small thing :)
* check day directly now
* new proc to check port of call, and possible fix
* Requested Changes
* requested gem changes
* gem gaming
* gemmmmmmmmmmmmmmmmmmmmmmmmmmm
---------
Co-authored-by: Benedict <Ben10083@users.noreply.github.com>
* Re-adds the message of the day.
* Re-adds the MOTD and adds mechanical support for ports of call.
* sddsds
* Destroy it all!
* incorrect info
* grammar and shit
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
* SSatlas.current_map
* hardsuit spell tab appears to clear correctly
* sdfsa
* from the moment i understood the weakness of my flesh, it disgusted me
* sdf
* SDQL2 update
* fix that verb
* cl
* fix that
* toworld
* this is pointless
* update info
* siiiiick..
* vv edit update
* fix that
* fix editing vars
* fix VV
* Port the /TG/ globals controller.
* part 1
* part 2
* oops
* part 3
* Hollow Purple
* sadas
* bsbsdb
* muda na agaki ta
* ids 1-15
* 16-31
* 41-75
* bring me back to how things used to be before i lost it all
* the strength of mayhem
* final touches
* cl
* protect some vars
* update sdql2 to use glob
* stuff?
* forgot that is not defined there
* whoops
* observ
* but it never gets better
* a
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Leaving the lobby screen list empty now adds all icon states to the lobby screen list. Also, only one dmi plays at a time.
This means that adding a new title screen is now as simple as just adding it to the dmi. Or making a new dmi for a new category.
Added a new sound when you click things in the menu - more futuristic.
The lobby menu now fades in and out smoothly.
Removes the old background object which was left in by accident.
The buttons now get bigger when you mouse over them. Responsiveness!