* 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>
* 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>
* 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>
* 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>
* Turns lighting objects into a datum, makes all lighting be performed with an underlay. big maptick fix very good!
* Mirror!
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Fixed wrap and charge abilities for tarantula and broodmother (#59627)
* Fixed wrap and charge abilities for tarantula and broodmother spiders
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
* Blindness-related bug fix and code improvements (#59616)
TRAIT_BLIND caused by the hypnochair or by being unconscious (eg. sleeping) will no longer prevent you from being flashed.
Moves all raw text strings used in become_blind and cure_blind calls (as well as nanites in general with ADD_TRAIT) into defines.
Code changes not in changelog due to not being even the slightest bit of player facing.
* Blindness-related bug fixes and code improvements
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>