* PDAs now include round time (#59957)
Part of my document on duplicating verb panel functionality so at some point in the far, far future we may be rid of it. you can read more here.
hackmd.io/tJ5H3opRQiG1GCN1sP142w
The other thing the status panel needs to do is send time dilation to the tgui chat. Having messed around with tgui chat, I am very confident i'm going to need stylemistake or mothblocks help me out with that one, it's so beyond my level it isn't even funny.
I know this is a VERY long description for a very small change but expect more of this in the future
* PDAs now include round time
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Changes how weather sends sound to players, reduces sound loop overtime (#59284)
* Converts looping sounds from a list of play locations to just the one
* Updates all uses of looping sounds to match the new arg
* Adds an area based sound manager that hooks into looping sounds to drive the actual audio. I'll be using this to redo how weather effects handle sound
* Some structrual stuff to make everything else smoother
Timers now properly return the time left for client based timers
Weather sends global signals when it starts/stops
Looping sounds now use their timerid var for all their sound related timers, not just the main loop
* This is the painful part
Adds an area sound manager component, it handles the logic of moving into new areas potentially creating new
sound loops. We do some extra work to prevent stacking sound loops.
Adds an ash storm listener element that adds a tailored area sound manager to clients on the lavaland z level.
It's removed on logout.
Adds the ash_storm_sounds assoc list, a reference to this is passed into area sound managers, and it's modified
in a manner that doesn't break the reference in ash_storm (This is what I hate)
* Hooks ash storm listener into cliented mobs and possessed objects
* Documents the odd ref stuff, adds an ignore start var to looping sounds, fixes some errors and lint issues
* Applies kyler's review
banging
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
* Cleans up some var names, reduces the amount of looping we do in some areas
* Makes the code compile, redoes the movement listener to be more general
* fuck
* We don't need to detach on del if we're just removing signals on detach
* Should? work
* if(direct) memes
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
* Changes how weather sends sound to players, reduces sound loop overtime
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
* Fix hand teleporter and other portals looping forever (#59894)
Makes portals use Bumped() instead of COMSIG_ATOM_ENTERED for detecting atoms crossing the event horizon.
Removes unused and potential loop causing forceMove argument from do_teleport()
* Fix hand teleporter and other portals looping forever
Co-authored-by: Wayland-Smithy <64715958+Wayland-Smithy@users.noreply.github.com>
* Fix missing SIGNAL_HANDLER (#59826)
Adds SIGNAL_HANDLER to everywhere that didn't have it that was picked up by dm-lua, which is now ready enough to catch these.
* Fix missing SIGNAL_HANDLER
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Forcefield Projector Nerf (#59751)
The item can no longer be used to instantly lock someone into a corner. It's a minor balance change, but the projector is way too bullshit to play against as-is.
* Forcefield Projector Nerf
Co-authored-by: Cheshify <73589390+Cheshify@users.noreply.github.com>
* Makes turfs persist their signals, uses this to optimize connect_loc (#59608)
* Makes turfs persist signals
* Splits connect_loc up into two elements, one for stuff that wishes to connect on behalf of something, and one for stuff that just wants to connect normally. Connecting on behalf of someone has a significant amount of overhead, so let's do this to keep things clear
* Converts all uses of connect_loc over to the new patterns
* Adds some comments, actually makes turfs persist signals
* There's no need to detach connect loc anymore, since all it does is unregister signals. Unregisters a signal from formorly decal'd turfs, and makes the changeturf signal persistance stuff actually work
* bro fuck documentation
* Changes from a var to a proc, prevents admemems and idiots
* Extra detail on why we do the copy post qdel
* Makes turfs persist their signals, uses this to optimize connect_loc
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Adds set_density()
Fixes one instance of a duplicate density assignment on an object.
Comments two hacky usages of density which will have to forgo using the setter for now.
Lets us append code to the event of density changing.
Pretty sure this is leading up to some multitile object thing -Lemon
Co-authored-by: Rohesie <rohesie@gmail.com>
* Adds Neon Carpet (#59140)
Adds a couple varieties of neon carpet.
Makes decals care about their plane in addition to their layer.
* 0
* A
* a
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Makes obj_integrity only updated through procs (#59474)
Having things updating integrity directly is just going to cause more problems down the line as more elements and components depend on being notified of integrity changes. It's an easy mistake to make so making it private should deal with the problem.
get_integrity() might be useful in the future but is mainly a side effect of making obj_integrity private as that also disallows reads.
* Makes obj_integrity private and only updated through procs
* Mirror!
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* privateer 1? Who knows.
* shutters to windows
* Linters is moaning about area path?
* Update slaver_syndie.dmm
* Backpacks are too heavy!
* Oops! Forgot AI wire helpers for the rest of the doors.
* Tiny fan in airlock.
* Emptying the Captain's backpack into the map.
It won't pass sanity tests otherwise.
* use SIGNAL_HANDLER REEEEEE (#59242)
makes as many procs as i can find use the SIGNAL_HANDLER define which i assumed they all already did
* USE SIGNAL_HANDLER REEEEEE
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Makes pda alert overlay not a string overlay (#59269)
Switches the alert overlay to create a mutable appearance instead of using the text as the overlay
* Makes pda alert overlay not a string overlay
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* Credits Put Into PDAs/Modular Computers Go Into Inserted IDs (#59180)
* Credits Put Into PDAs/Modular Computers Go Into Inserted IDs
If a PDA or Modular Computer is attacked by something, it now checks to see if it can insert the object into the inserted ID
* Commenting the code
* Added Istype Checks Based on Feedback
* Adding a return to match the style of code in the same block
* Using Iscash instead of Istype spam
Changes the ID, PDA, and Modular Computer code to use Iscash (Apparently this already existed!)
Additionally, physical currency is checked internally instead of externall
* Credits Put Into PDAs/Modular Computers Go Into Inserted IDs
Co-authored-by: Beatrice <83368538+SpaceDragon00@users.noreply.github.com>
* removes the ability to see static for ai detectors and makes their other feature work for the first time in three years
* Update multitool.dm
* Update multitool.dm
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Touches up cameranet code (#59165)
makes it add only one vis_contents to all turfs for static (adding and removing when ai moves in/out of chunk gone)
original pr: #58522
basically the same but ai's moving in/out of the chunk doesnt affect vis_contents anymore because that was really racking up tidi for some reason.
Why It's Good For The Game
less maptick because theres only 1 vis_contents added instead of 2 and general optimizations to cameranet code
* (i found some cigs) touches up cameranet code and makes it add only one vis_contents to all turfs for static (adding and removing when ai moves in/out of chunk gone)
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* (code bounty) refactors all uses of Crossed() and Uncrossed() into signals sent to loc, tracked by connect_loc
* WHEW THAT WAS EASY
* Update ammo.dm
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Convert PDAs to GAGS (#58844)
* Convert PDAs to GAGS
* Leave the clown PDA as it was
Co-authored-by: celotajstg <celotajstg@ users.noreply.github.com>
* Convert PDAs to GAGS
Co-authored-by: Celotajs <81999976+celotajstg@users.noreply.github.com>
Co-authored-by: celotajstg <celotajstg@ users.noreply.github.com>
* PDAs reset the alert overlay when you read your messages (#58820)
* PDAs reset the alert overlay when you read your messages
Co-authored-by: Tom <tomforde4@gmail.com>
* Makes the explosive compressor and blastcannon actually use the TTVs they're given + the explosion changes to support that. (#58015)
* Adds explosion SFX to the blastcannon and explosive compressor
- Extracts the explosion SFX and screenshake proc from the SSexplosions explosion handling proc and lets the explosive compressor and blastcannon use it.
* Miscellaneous changes
- Adds defines for the internal explosion arglist keys
- Reverses the values of the explosion severity defines
- Changes almost everything that uses `/proc/explosion` to use named arguments
- Removes a whole bunch of argname = 0 in explosion calls.
* Removes named callback arguments.
* Changes the explosion signals to just use the arguments list
Adds a simple framework to let objects respond to explosions occurring inside of them.
Changes a whole bunch of explosions to use the object being exploded as the origin of the explosion rather than the turf the object is on.
Makes the explosive compressor and blastcannon actually use the TTVs they are given.
Adds support for things responding to internal explosions.
Less snowflake code for the explosive compressor and blastcannon calculating bomb range.*
Less confusing explosion severity defines.
Less opaque explosion arguments
*does not guarantee that the solution to letting them actually use the TTV is any less snowflake.
* Makes the explosive compressor and blastcannon actually use the TTVs they're given + the explosion changes to support that.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Fixes Chameleon Projector Dummies escaping containers (#58683)
You can see why this is bad from the issue, but it applies a lot of other places you can cram the projector into. Like transit tubes! Or vehicles! Or free escapes from welded lockers! Spooky.
* Fixes Chameleon Projector Dummies escaping containers
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Implements a new auto-tagging system for ID card which adds a config to auto-flag them as an intern. (#58236)
About The Pull Request
ID cards when equipped will check the player's living hours if the USE_LOW_LIVING_HOUR_INTERN flag is set. If their living hours is less than the first of the following (checked in order from 1st to 3rd until a valid value is found):
Config USE_LOW_LIVING_HOUR_INTERN_HOURS
Config USE_EXP_RESTRICTIONS_HEADS_HOURS
Hardcoded 15 hours
Then their ID card is tagged as Intern Assignment, unless they're a Head of Staff in which case they become an Assignment-in-Training.
PDAs, Wallets and Tablets also update any ID cards they hold, so equipping a PDA, Tablet or Wallet will also update any ID cards inside it.
This occurs automatically, even if the card does not belong to the owner. This only occurs when the user's assigned_role is a station job.
* Implements a new auto-tagging system for ID card which adds a config to auto-flag them as an intern.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Adds materials to PDAs (#57923)
Puts a small amount of iron, glass, and plastic into a PDA 'cause that sort of material usage makes sense to me
* Adds materials to PDAs
Co-authored-by: ArcaneDefence <51932756+ArcaneDefence@users.noreply.github.com>
* Autodocs the slippery component + changes the hardcoded slot whitelist to a variable (#57878)
* Autodocs the slippery component + changes the hardcoded slot whitelist to a variable
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Some explosions code cleanup (#57493)
Clears out two deprecated explosions systems (explosion ids and explosion levels)
Refactors a bunch of contents_explosions procs to be maybe slightly faster.
Cleans up a bunch of ex_act code.
Slightly cleaner code
A few less unused vars on /atom and /turf
* Some explosions code cleanup
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>