renames the basic role access list to "job_access" to make its purpose
clearer and removes the unused expanded access list since we only use
the former. it should also help prevent confusion when adding access to
roles.
server config should be updated.
Instead of middle clicking to lie down, you now simply rest. You can
also now do it with your gun in your hand. Removes all code related to
bespoke lying down.
To-do:
- [x] Add a signal to make firearm accuracies update on lying down.
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Changes the Auth System to use the new login server to fetch the
users/groups instead of the deprecated forumuserapi.
Removes the ForumUserAPI and moves the admin authorization processes to
a auth subsystem
---------
Co-authored-by: Werner <Arrow768@users.noreply.github.com>
This PR updates the repo fully to Byond 516.1673. We now have access to
Associative Lists, Vectors, Matrices, and a huge number of math
improvements tha will allow us to catapult the repo into a new era of
simulationism.
I have tested this PR to verify that it works.
<img width="1076" height="1079" alt="image"
src="https://github.com/user-attachments/assets/c69a7276-7611-4a59-8630-46d8dd8a12a6"
/>
# Summary
This PR has the goal of adding a base framework for tracking, saving and
otherwise managing persistent data between rounds, written from scratch.
Persistent data can be anything - Most expectedly noticeboards, dirt,
papers, etc.
_Technical details about the PR below are subject to change._
## Estimated scope
The first iteration of the persistence framework should include the
functioning subsystem and the first implementation of a persistent type
using said subsystem.
- [x] Prepare database for persistent data
- [x] Add new features to `/obj/`
- [x] Logic to get and load persistent data into objects for the
subsystem
- [x] Internal logic for tracking and other
- [x] Implement subsystem
- [x] Basics, files, integration of subsystem
- [x] Database queries for different operations
- [x] Methods for registering and de-registering object tracking for
`/obj`
- [x] Round start logic
- [x] Round end logic
- [x] Implement first persistent type: Papers on notice boards
- [ ] Code review
- [x] Scope validation
- [x] Testing
- [x] Full changelog
- Merge
- [ ] Setup logging config for new subsystem
- [x] Documentation for developers ([How to add new persistent
types](https://github.com/Aurorastation/Aurora.3/wiki/Persistence))
## Inner workings
The new persistence subsystem has the following concept:
At round start the subsystem reads existing data from the database and
creates objects for them.
During the round objects can be added to the tracking using a register
function (or removed by a de-register function).
At round end the subsystem goes over all it's actively tracked objects:
Create new objects (that don't have a persistent ID from the database),
update objects that changed during the round and expire objects that are
no longer tracked.
The objects in questions can register themselves, de-register themselves
and decide themselves what content should be stored and handle how to
set themselves up during the subsystems init phase.
## Information on the new table
`id` - database generated ID for tracking persistent objects over
multiple rounds, objects without an ID are considered new and created
during the round.
`author_ckey` - With the first implementation unused, but expected to be
required in the future to allow any staff/moderation on persistent data.
Nullable as persistent data also can be things like decals without an
actual owner.
`type` - Type of persistent data used for creating objects at round
start.
`created_at` - Statistical values.
`expire_at` - Used for cleaning the database and setting limits for
persistent data types. It's optional and allows permanent persistent
data (command notice boards?).
`content` - JSON formatted data containing the actual properties of an
individual tracked object (e.g. what's written on a paper, what's its
title).
`x`, `y`, `z` - Coordinates taken and given from/to the object during
save/load. Those can be null for future purposes.
## The goal on how to add new persistent data types
`/obj` received two new methods which need to be overriden in the to-be
added new persistent type:
`persistence_get_content()` and `persistence_apply_content(content, x,
y, z)`.
The first method has the responsibility to provide all custom content of
a new type to the subsystem in the form of an associated list (`["title"
= "Hello, World!", "value" = 1337].
What does that mean?
In the example of a piece of paper, the method needs to put the papers
title and text content into a an associated list, that list will be
saved by the persistence subsystem.
The second method has the responsibility to apply the previously saved
content when persistent data is initialized at the start of the round:
The associated list needs to be read back and applied to the paper,
additionally coordinates are provided for the object that have been
taken during saving. Note that the coordinates might be null and could
be ignored during setup.
During the round, when a new object is created, like a paper, you need
to call the subsystem and register a track:
`SSpersistence.register_track(your_object_to_track, ckey (optional)`.
The subsystem will be using the methods above when the round ends and
saves the object - and loads it at the start of the round using the
second method. The ckey needs to be given for all persistent that
contains user generated content, e.g. papers.
In case a persistent object gets removed, you need to call
`SSpersistence.deregister_track(your_tracked_object)`. At the end of the
round the object will be removed from the storage.
`/obj` contains the variable (along some other technical vars)
`persistance_initial_expiration_time_days`, which has a default value of
30 days, but can be safely overriden on a per-type basis. This value (in
days) will be used for the persistent data entry expiration date when a
new object of said type is stored in the database.
## PR description changelog
- Added *The goal on how to add new persistent data types*.
- Updates *Estimated scope* format.
- Updates *Inner workings*.
- Final iteration.
*(Grammer and formatting not tracked manually)*
Requires https://github.com/Aurorastation/Web-Interface/pull/136 be
merged.
Allows users to authenticate themselves using only the forum. It will
generate a custom ckey for these users in the form of
`GuestF-[ckey(forum-nickname)]`. This will be saved into the database
and will act as a normal ckey from thereon out. These ckeys will be
marked in the player table, to allow for later filtering.
This will also modify the config parameter external_auth to be an enum
of 3 values.
Open questions: can we do automatic linking from purely the game side?
Since upon creation of the custom ckey, it should also be linked back to
the forums.
---------
Co-authored-by: Erki <erki@skullnet.me>
Refactored the projectile code, mostly in line with TG's now.
Refactored various procs that are used or depends on it.
Projectiles can now ricochet if enabled to.
Damage falloffs with distance.
Homing projectiles can now have accuracy falloff with distance.
Projectiles have a maximum range.
Muzzle flash is configurable per projectile.
Impact effect of the projectile is configurable per projectile.
Accuracy decreases with distance.
Projectiles work with signals and emits them, for easy hooking up from
other parts of the code.
Meatshielding is now less effective .
Impact sound is now configurable per projectile.
High risk.
Removed the gelf logging infrastructure.
Refactored the various logging procs to be a direct call in light of the
above.
Removed ancilliary UDP related things.
the rules button now redirects to the rules page instead of using broken
html
---------
Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>
Co-authored-by: Matt Atlas <liermattia@gmail.com>
* Adds SShttp
Adds a HTTP Subsystem with a integrated Retry-Queue for Status-Code 429 and 503
Changes the discord subsystems send message function to the new http subsystem
The previous http_ request functions remain but have been renamed to old to signify that they should not be used for new implementations
* Fixes lint error
* DMDoc Pass
* marks build_options as private
* SHOULD_NOT_SLEEP where its relevant
* update_channels is not a private proc, as it can be called by the API
* Remove comments
* Make fluffy happy
* Makes fluffy even happier
---------
Co-authored-by: Werner <Arrow768@users.noreply.github.com>
* Updates Loadout Backend
Updates the loadout backend to store gear data in a separate table.
This might enable us to increase the number of loadout points available
* Bump MariaDB Version to 10.11
* Update editorconfig for SQL
* Fix update_character_gear
* tgui_alert and TOPIC_NOACTION
* Fix missing sur
* Actually, its user
* Adds a CHECK_TICK, just in case
---------
Co-authored-by: Werner <Arrow768@users.noreply.github.com>
* 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>
* Changes the discord bot into a subsystem and adds quite a bit of additional logging
* Removes a forgotten todo
* replaces call with RUSTG_CALL (to make it compile) and adds a comment
* Re-Add log prefix
---------
Co-authored-by: Werner <Arrow768@users.noreply.github.com>
* Initial implementation
* Commented code
* More work for directional handling
* Initial wielding accuracy integration
* Final touchups
* Changelog
* Linter plz
* Alright you prefer this?
* Update code/_onclick/hud/screen_objects.dm
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
* Update code/_onclick/hud/screen_objects.dm
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
* Small fix
* and this too
* Diona now have the icon back, but it's locked to walk and lay down
* Fix buckling direction
* Fucking merge conflicts resolution editor highlighter
---------
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
* tgui the beginning
* binaries and the like
* Bring in the last of it
* Example radio UI
* delete example
* NTOS Main Menu, start on manifest, tgui states
* tasks.json
* gunnery ui pt 1
* okay
* fix everything
* scss update
* oops
* manifest gigablast
* downloader part 1
* download prt 2
* NTOSDownloader final
* mfw committing to_worlds
* gunnery console pt2
* i cooked
* targeting (finished)
* one vueui down
* voting ui almost done
* MY MIND FEELS LIKE AN ARCH ENEMYYYY
* voting ui down
* photocopier
* ntos config + download fixes
* photocopier 2
* refactor define
* NTOS client manager + fixes
* fax machine final (it also uses toner now)
* marching forwards... left behind...
* ntnrc part 1
* canister
* add quotes
* portable pumps pt1 + more backgrounds
* oops
* finish the portable pump
* freezers
so I'll keep on pushing forward... you haven't seen the last of me... oooooooh...
* doors ui pt1
* finish doors UI (forgive me wildkins it's a bit of shitcode)
* vitals monitor, make things use labeled lists, new backgrounds
* mais j'envoyé aucun mayday...
* maglock pt1
* pour ça je me suis perdu...
* infrared
* fix that
* prox sensor pt1
* prox sensor
* signaler (this was actually pretty hard)
* atmos control pt1
* atmos control pt1.1
* atmos pt 2
* fuel injector
* multitool UI
* jammer
* list viewer
* APC
* portgen
* targeting console updates + SMES ui
* new themes, shield generator
* supermatter
* Add ore detector and (shitty) NTNet Relay
* orderterminal pt1
* orderterminal pt2
* smartfridge
* Add (air-)tank GUI update ore detector size
* Adds Transfer Valves
* Add AtmoScrubber
* analyzer pt1
* weapons analyzer pt2
* bodyscanner pt1
* bodyscanner pt2
* fix this shitcode
* seed storage
* appearance changer
* appearance changer final
* sleeper pt1
* sleeper
* gps
* vehicles
* chem dispenser
* lily request
* holopad
* tgui modules pt1
* ppanel
* damage menu
* fixes
* im here too now
* follow menu, search bars
* quikpay
* quikpay fixes
* circuit printer
* ppanel
* ppanel updates
* pai
* turret controls (i want to kill myself)
* tweak
* remove the boardgame
* guntracker
* implant tracker
* penal mechs
come close to me, come close to me
* chem codex
* pai radio
* doorjack
* pai directives
* signaler removal, sensors
* ghost spawner
* spawnpoint
* fixes
* teleporter
* one more to the chopping block
* account database
* remove divider
* scanner, atmos
* latejoin ui pt1
* latejoin
* records pt1
* RECORDS UI DONE
* delete interpreter & records
* CHAT FUCKING CLIENT
* data updates
* fix some things
* final UI, log
* basic nanoui fix
* antag panel
* remove vueui
* atm update
* vending update
* warrants, cameras
* ntmonitor
* time comes for all
* preserve this legacy
* bring that back (oops)
* rcon, ui auto update for computer UIs, remove rcon computers
* alarm monitoring (a bit broke and also todo: add custom alarm monitoring programs to a few consoles)
* A LIKE SUPREME
* a
* power monitor
* lights on
* fuck this code, fuck nanoui modules, and fuck nanoui
* LEAVE IT OH SO FAR BEHIND
* fix alarm monitoring for synths
* I SAW IN YOU WHAT LIFE WAS MISSING
* comms console
* idcard and record updates
* turn the light on
* arcade
* pt2
* news browser
* static
* crusher
* f
* COULD I JUST SLEIGH THE GOLD FROM THE BALLS? I'M SO FRUSTRATED OH COULD YOU TELL? IF I HEAR ONE MORE VUEUI OR ONE NANOUI I'M GONNA LOSE IT SO LET ME GOOOOOOOOOOOOOOOOO
* codeowners & suit sensors
* html ui style removal
* make lint happy
* resist and disorder
* i slowly get up and turn off the noise, already fed up...
* pleaseeeeeeeeeeeeeee
* THE CREDIT LARP IS NECESSARY
* i hold the keys
* RISE UP
* fix that?
* harry's suggestions xoxo
* runtime fix pt2
* You are the only thing that I still care about
* adds build workflow
* Update update_tgui.yml
* adds some needed steps
* ATM
* misc fixes and tweaks
* fixes 2
* make newscasters usable and fix use power on freezers
* turret control is clearer
---------
Co-authored-by: John Wildkins <john.wildkins@gmail.com>
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: harryob <55142896+harryob@users.noreply.github.com>
Co-authored-by: Werner <Arrow768@users.noreply.github.com>
Co-authored-by: Geeves <ggrobler447@gmail.com>
Co-authored-by: harryob <me@harryob.live>
* add para-byond-tracy and modify the tracy init
* remove obsolete binaries, add replay.py, add tracy 0.8.2 client, add changelog
* add tracy client files and other version of byond-tracy
* Alert level change
Changes references from station to ship
* Revert "Alert level change"
This reverts commit f198380c4b.
* Revert "Revert "Alert level change""
This reverts commit efee31daf9.
* actual change
actually fixes it in config because I'm an idiot
* reg fix
changes references from station to ship in regs
* changelog
* Increase error logging to diagnose server conking
* more logging and db retry
* whoops
* rename error() to log_error() to better reflect what it does
Move a bunch of world.log messages to log_error
* Fix compile error
---------
Co-authored-by: Werner <Arrow768@users.noreply.github.com>
* Adds drone tasks to Execute UTs on Aurora and Exodus
* Adds a drone task to Migrate SQL and Perform the SQL UT on Runtime
* Changes the SQL UT to respect the config.sql_enabled setting and
use that sql connection
* Changes the default config.sql_enabled state to 0, so uncommenting
SQL_ENABLED has a actual effect
* Moves a number of UT tests into a helper script (code_check.sh)
* Updates the way the RUST_G dll/so is located
* Adds a check to load_databases to verify that sql is enabled
* Adds a check to establish_db_connection to verify that sql is enabled
* Adds spearate config files used during the UTs (which hold the UT db
connection info and enable/disable the db epending on the UT)
PDAs are dead, long live PDAs. All trace of old PDAs has been scoured from the codebase, and in its place are modular computer PDAs that are feature-equivalent. Essentially every PDA function except the Syndicate detonation feature and Notepad has been ported over, and battery life for handheld computers has been boosted alongside the addition of charging cables to make things easier.
Ports the external URL preloading from tg-station. This allows us to point the config to an external URL, from which the .rsc file will be downloaded. This will be way faster than using the BYOND system, as we don't have to deal with BYOND's netcode.