* Adds random number to space-dragon-rift-spawned space carp (#60058)
Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>
* Adds random number to space-dragon-rift-spawned space carp
Co-authored-by: obsol <33932119+read-0nly@users.noreply.github.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>
* Makes mutant bodyparts and mutcolors into editable genetic traits (plus a whole shitload of otherwise out of scope code improvements because I just HAD to touch old code)
* Mirror
* genetically-editable mutant bodyparts and colors - skyrat edition
Co-authored-by: Funce <funce.973@gmail.com>
* Drastic Lag Mitigation Subsystem: SSlag_switch (#59717)
Requested by oranges and inspired by the upcoming event. A new subsyetem, non-processing (for now), aimed at providing some toggle switches that can be flipped as a last ditch effort to save some CPU cycles by sacrificing some non-critical mechanics. Below you can see each individual toggle.
Screenshot of the admin panel:
image
Surely there are more opportunities for toggles I missed, but adding new ones is not very difficult at all.
Why It's Good For The Game
Better performance during extreme pop, I hope.
Changelog
cl
code: Introduces the Lag Switch subsystem for when a smoother experience is worth trading a few bells and whistles for. Performance enhancement measures can be togged by admins with the Show Lag Switches admin verb or enabled automatically at a pop amount set via config.
config: Added a new config var: number/auto_lag_switch_pop
* Drastic Lag Mitigation Subsystem: SSlag_switch
* mirrored the changes to the modular file
Co-authored-by: Wayland-Smithy <64715958+Wayland-Smithy@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Fixed carps being untameable and fixes tameable code not properly removing itself from something (#59955)
Fixes#59897
* Fixed carps being untameable and fixes tameable code not properly removing itself from something
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
* Fix blanket cure_blind calls removing quirk and blindfold traits (#59943)
Makes it so when proc/cure_blind(source) is called with no source is does not cure blindness from the quirk, blindfolds, or other eye coverings.
* Fix blanket cure_blind calls removing quirk and blindfold traits
Co-authored-by: Wayland-Smithy <64715958+Wayland-Smithy@users.noreply.github.com>
* Makes polar bears not become easier to move after you kill and revive them (#59939)
* Makes polar bears not become easier to move after you kill and revive them
Co-authored-by: interestingusernam3 <51925758+interestingusernam3@users.noreply.github.com>
* Reverts Entered() passing dir instead of old loc (#59910)
* Reverts Entered() passing dir instead of old loc
Co-authored-by: Rohesie <rohesie@gmail.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>
* Remove unnecessary species breath code (#59864)
Human code override breathe(), called the species datum which checked if the human had NO_BREATH. I just made it check for NOBREATH directly, since it is apparently a human only trait.
If someone wants to implement special breathing checks/behaviour, make custom lungs
* removes unnecessary species breath code
Co-authored-by: Time-Green <timkoster1@hotmail.com>
* Refactors species stomach code, makes ethereal charge inherent to their stomach (#59801)
A stomach would literally just ask the species datum how to be hungry and made a bunch of exceptions for ethereals. I mostly just moved code around so that hunger is handled by a persons stomach, thus shrinking the species.dm bloat.
This also makes it so ethereal's charge mechanic is unique to their stomache, instead of this really weird inbetween where just nothing happens and you kinda starve to death. You can stick an ethereal stomach in a human and this will replace their hunger mechanic with the charge mechanic and lets them absorb power from APCs and everything. You can also give ethereals a normal stomach and they'll use the normal hunger mechanics
* Refactors species stomach code, makes ethereal charge inherent to their stomach
Co-authored-by: Time-Green <timkoster1@hotmail.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>
* Adds the MMI circuit component. Allows inputting signals into circuit component ports (#59743)
Adds the MMI component which outputs signals whenever they click somewhere/try to move.
Allows inputting signals into ports, making it easier to debug integrated components.
* Adds the MMI circuit component. Allows inputting signals into circuit component ports
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
* Converts tippable behavior from cows and medibots to a component (tip over anything with adminbus) (#59705)
This PR converts cow-tipping and medibot-tipping into a component, /datum/component/tippable. Cows and medibots now use the tippable component to control their tipping behaviors.
This PR also goes through a few atom_attack_hand signals and makes them all send the same arguments.
* Converts tippable behavior from cows and medibots to a component (tip over anything with adminbus)
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Admin QOL: Adds a speech prefix for ghosted admins to talk through their linked body (#59762)
One of the more annoying parts of sending in a centcom official or ERT as an admin is the fact that sometimes you need to keep in touch with them- especially when you're supporting a response team with multiple people, and sending them headset messages one-by-one or using command reports won't cut it. In these cases, I spawn myself in at centcom (or use the body I made for briefing) and talk on the Centcom radio freq, but this sucks because while you're in the body, you can't watch what they're doing because you're not a ghost!
So this PR adds a special speech prefix for admin ghosts, :j, which tries to relay your chat message to your linked body if one exists, instead of sending it to deadchat.
* Admin QOL: Adds a speech prefix for ghosted admins to talk through their linked body
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@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>
* Converts the enemies list to weakrefs (#59694)
This has some minor overhead, but listtargets isn't exactly a hot proc, so we should be just fine
* Converts the enemies list to weakrefs
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixes explosions having a higher chance of delimbing you if they're weaker (#59662)
Don't know if it's an oversight or not, but currently, explosions delimb you if they're weaker. This PR fixes that by removing the division in the probability calculations and replacing it with a multiplication, whilst also changing the base probability value.
The value 16.6 was chosen because at devastation 3, aka max devastation, that will equal out to approximately 50%
* Fixes explosions having a higher chance of delimbing you if they're weaker
Co-authored-by: Watermelon914 <37270891+Watermelon914@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>
* During unit tests, does extra verification on text based overlays (#59553)
This makes it so during unit tests, adding a text based overlay to something will runtime if the icon does not have an icon state matching that text. I would do this during normal compiles as well but getting the icon states from an icon is surprisingly expensive.
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* During unit tests, does extra verification on text based overlays
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Digitigrade Paralysis BugFix (#59697)
* Fixing Digitigrade Legs, Adding Sanity Checks
- A limb's attach_limb proc now uses the set_owner() proc instead of setting the owner manually, fixing problems where limbs that were meant to be paralyzed were not
- Added a sanity check to set_usable_legs to ensure the value isn't set lower than 0
* Adds A Stack Trace to Set_Usable_Legs
- set_usable_legs now calls stack_trace() whenever it is provided with a negative value
* Digitigrade Paralysis BugFix
Co-authored-by: Beatrice <83368538+SpaceDragon00@users.noreply.github.com>
* Fixes custom emotes not working with slimes (#59680)
Allows slimes to use hotkey emotes and custom emotes by removing /mob/living/simple_animal/slime from mob_type_blacklist_typecache in code/modules/mob/living/emote.dm, added by #22405
* Fixes custom emotes not working with slimes
Co-authored-by: Bytube <40742162+Bytube@users.noreply.github.com>
* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
* Ads
* dddd
* a
* a
* a
* Update uniform_digi.dmi
* Update uniform_digi.dmi
* Update uniform_digi.dmi
* Some random new potted plants!
* a
* Update flora.dm
* a
* fixes
* a
* a
* e
* Converts the new span_ procs to macros, fixing a few oversights/errors along the way (#59685)
This is a partial re-implementation of #59645
oranges has expressed a desire for the span_ procs to instead be macros.
I agree. Even though it's a small micro-optimisation, a well contained macro can be self-linting. I've already caught one edge case thanks to this in launch_pad.dm
Similarly, there was an edge case where a [ was escaped inappropriately (that errored out) in watercloset.dm and a case where a ] that should probably have been escaped actually wasn't in robot_defense.dm
I have opted to make an exception to the ALLCAPS convention for these macros.
I have guaraded these macros in parenthesis. In doing so, additional error states can be captured as part of the build process as malformed inputs will then cause errors and prompt further investigation.
* Converts the new span_ procs to macros, fixing a few oversights/errors along the way
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Defibrillator Fixes + Code Cleanup (#59615)
Cleans up some of the defib code by reducing repeated code blocks, renaming certain procs, reducing unnecessary if statements, and adding flexability to certain aspects, like cooldown time. Additionally fixes some issues with the code, like visible messages not showing up for mobs who are wearing the source and shock_touching not using its provided damage values.
I have defined the combat paddles' emp_act change as a "Fix" because the comment appended to the combat variable, as well as the lack of sprites/clarity for emped syndicate defibs, made me feel this was unintentional. However, if this is seen as intentional, I will revert those changes to keep this a purely fix/cleanup-based PR
* Defibrillator Fixes + Code Cleanup
Co-authored-by: Beatrice <83368538+SpaceDragon00@users.noreply.github.com>
* Revert "prevent SSinput from constantly reporting null movements (#59558)" (#59650)
This reverts commit 6c2d17bb15.
Fucky movement fix oranges is literally threatening me.
I feel like I've messed up somewhere here...
Either way this is causing movements to be a bit fucky where one input counts as two in a direction.
* Revert "Prevent SSinput from constantly requesting moving in-place"
Co-authored-by: brotherbeyondd <68032262+brotherbeyondd@users.noreply.github.com>
* USB Cables -- Connect circuits to computers/machines (#59345)
* Initial commit
* Sprites, finishing work
* More ways to detach from circuitboards
* Clear TODOs, give bots a button
* Fix qdel loop
* Designs
* It's the bots that have them
* Grammar fix
* Feedback for connecting to circuit directly
* Add USB cable design to basic circuitry
* Better naming
* Feedback
* Fix for new code
* COMSIG_CIRCUIT_ADD_COMPONENT_MANUALLY
* span procs
* USB Cables -- Connect circuits to computers/machines
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.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>
* Fixes Cayenne's error sign flickering (#59614)
This PR fixes a case where Cayenne's sprite was flickering an error sign when carrying a disk and correctly assigns icon state names to JSON gags files for carp mouth and wirecutters as per newest standards to prevent further issues with them in the future.
* Fixes Cayenne's error sign flickering
Co-authored-by: Arkatos1 <43862960+Arkatos1@users.noreply.github.com>