* Uses regex datums and macros for text-manipulation (#61042)
* Uses regex datums and macros for text-manipulation
* a
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Fix pass-by-ref issue causing ID card access lists to be incorrectly mutated. (#61117)
stored_card.GetAccess() eventually leads to /obj/item/card/id/GetAccess() being called. This proc returns the actual access list associated with the ID card rather than a .Copy() of it.
As a result, the line total_access = stored_card.GetAccess() is storing a reference to the stored_card's actual access list.
total_access |= card_slot2.stored_card.GetAccess() is then mutating the first ID card's access list via the reference.
The result? When /obj/item/computer_hardware/card_slot/GetAccess() is called with 2 ID cards in a modular computer, the second ID card gives all of its accesses to the first ID card thanks to the |= operation.
There are a number of ways around this. Some pieces of code do var/list/thing = list() and then |= every GetAccess() since it's guaranteed to return a list. This creates new lists instead.
However, I feel GetAccess() for ID cards really shouldn't be returning a ref to the list. Instead, it now returns a Copy() of the list and code implementing behaviour using GetAccess() doesn't need to worry about list mutation at all.
* Fix pass-by-ref issue causing ID card access lists to be incorrectly mutated.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* small refactor to can_interact() so that borg range is fully respected (#60693)
Its a relatively small refactor that changes the previous machinery "can_interact()" proc that literally did a full override despite half of their checks already existing in not one, but TWO parent procs, so i removed the redundant checks, added callbacks to its parents and then added the cyborg range check on the can_interact_with() itself. in doing so i also moved the interaction range var from silicons only, to mobs as a whole and defaulted it to a single tile, silicons override it to 7 (so pAIs and borgs like before) but then set AI and AI.eye to "null", because i have a check in can_interact that if there is no range set, then the range is effectively unlimited. and i even added code for when AI is carded and their wireless transmission is disabled it sets their range to "0" aka, it has no range to do anything even if it could
this was really complicated for me so despite my extensive testing it probably would be a bad thing if any of you want to test my code yourself to ensure there isnt a bug with this (theres no runtimes ive come across)
note: i did a lot of searching and going through machinery to ensure i caught all the little snowflake overrides and added can_interact() checks to them, but i may have missed one or two things, especially maybe a altclick or ctrlclick somewhere, however i believe i caught most of them
one nice side effect of this refactor is that you can actually set another mobs range to something other than 1 tile and they can interact at range, rather than only silicons getting this ability, an admin could VV a human to have a 3 tile arm reach as a meme if they want
* small refactor to can_interact() so that borg range is fully respected
Co-authored-by: 小月猫 <alina.r.starkova@gmail.com>
* Get your protein fix here (for monkey meat). (#60696)
Meat steaks now have the material flag to un-link from from material effects, meaning that monkey meat will now have the proper nutrients and reagents it was intended to, primarily that monkey meat will have protein for cytology purposes.
(Basically, the meat mat was not adding a food component, but then trying to remove "any" food component regardless of a material_no_effects flag. Kinda a mess, and maybe this could be done in an event based way, but this is a real sane fix. The hard part was tracking down the error anyway. Kudos fictional arcane who will read this commit message)
* Get your protein fix here (for monkey meat).
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Small Spider Balance Changes and Tarantula QoL (#60505)
* Add Sealed Webs
* Add Sealed Web Icon
* Spider Changes
* Update this dumb var
* Make Broodmothers spawn in the same place
* Remove unused var
* Re-Add Sealed Web Sprite
* Small Spider Balance Changes and Tarantula QoL
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
* bane component to element. nullrod now uses it for revenants. (#60640)
* bane component to element. nullrod uses it for revenants.
* TRUE to FALSE
* bane component to element. nullrod now uses it for revenants.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Fix crayon text input (#61002)
The regex expression being used missed some symbols and screwed up spacing.
* Fix crayon text input
Co-authored-by: Tim <timothymtorres@gmail.com>
* fix hypospray bad init
* fix bad init for liquid abstract
* update this to pass correct params
* remove an unused element that
isnt even used correctly anyway
* fix hard del on cargo console
maybe fix cluwne
Makes stack code support merging two different stacks with the same mats, but different mats_per_unit numbers by implementing averages.
It's in an attempt to support the stupid efficiency shit that protolathes do. It's not great, but it ought to work alright for now. Kinda a bandaid
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Colovorat <35225170+Colovorat@users.noreply.github.com>
QDEL_IN could hardel if the timer was greater than 5 minutes (time for the qdel queue)
we can use weakref to prevent this
Co-authored-by: BraveMole <bsouchu@gmail.com>
* Refactors connect_loc_behalf into a component (#60678)
See title. Also refactors caltrops into a component because they use connect_loc_behalf which requires them to hold the state.
This also fixes COMPONENT_DUPE_SELECTIVE from just outright not working.
connect_loc_behalf doesn't make sense as an element because it tries to hold states. There is also no way to maintain current behaviour and not have the states that it needs.
Due to the fact that it tries to hold states, it means the code itself is a lot more buggy because it's a lot harder to successfully manage these states without runtimes or bugs.
On metastation, there is only 2519 connect_loc_behalf components at roundstart. MrStonedOne has told me that datums take up this much space:
image
If we do the (oversimplified) math, there are only ever 5 variables that'll likely be changed on most connect_loc_behalf components at runtime:
connections,
tracked,
signal_atom,
parent,
signal_procs
This means that on metastation at roundstart, we take up this amount: (24 + 16 * 5) * 2519 = 261.97600 kilobytes
This is not really significant and the benefits of moving this to a component greatly outweighs the memory cost.
(Basically the memory cost is outweighed by the maint cost of tracking down issues with the thing. It's too buggy to be viable longterm basically)
* Update glass.dm
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Del The World: Unit testing for hard deletes (#59612)
Co-authored-by: SteelSlayer <42044220+SteelSlayer@ users.noreply.github.com>
* Del The World: Unit testing for hard deletes
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: SteelSlayer <42044220+SteelSlayer@ users.noreply.github.com>
* Drugs of the 26th century. Three new hella rad drugs, one less lame drug and more!
* Update traits.dm
* Update maint_loot_trash.dm
Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Mindshielding now sends a signal, and is dealt by the antagonist (#60850)
Mindshielding people isn't hardcoded to the mindshield's implanting anymore, instead sending a signal, which I find better in the long run (especially for downstreams).
* Mindshielding now sends a signal, and is dealt by the antagonist
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* AAAAAAAAAAA
* pollution scrubbbies
* fires cause smoke, right? Also NSS journey has scrubbies
* washing things removes the smell!
* what the fuck were you doing last night
* Update temporary_pollution_emission_component.dm
* space turfs shouldn't have pollution
* Fix air now fixes smoke
* Update pollution.dm
* Update pollution.dm
* Update bonfire.dm
* freezers will now actually protect their contents from explosions once. (#60875)
It's supposed to shield contents from explosions, not only itself.
* freezers will now actually protect their contents from explosions once.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Cyborg emergency reboot module now is no longer dropped if revive is succesful (#60848)
Co-authored-by: Colovorat <lolqwert569@ gmail.com>
* Cyborg emergency reboot module now is no longer dropped if revive is succesful
Co-authored-by: Colovorat <35225170+Colovorat@users.noreply.github.com>
Co-authored-by: Colovorat <lolqwert569@ gmail.com>
* Healium crystal changes (#60477)
Healium crystals now straight up fix the air in a room instead of giving an undetermined amount of gas
Area fixed is now a 7x7
Changed the recipe to no longer require freon but O2 instead
* Healium crystal changes
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* Crystal foam - crystallizer new recipe (#60535)
Adds crystal foam, a crystal grenade made in the crystallizer from CO2, N2O and H2O. When used it will release a big foamed area that will close any breaches, similar to the smart foam grenade.
* Crystal foam - crystallizer new recipe
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* Fixes 2 DNA activator descriptions (#60553)
There was an empty space between name and suffix when there wasn't one, and expended DNA activators wouldnt get the name 'expended' if it didn't work, despite being so.
* Fixes 2 DNA activator descriptions
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* initial
* whoops
* more fixes
* forgot
* frick
* oop
* minor visual fixes
* cleared out-of-date stuff that was asimilated by erp update. ye, sry for that but useroth said i can if i need to
* interface fixes + cleaned trash.
* fixesss
* more fixes
* other interface fix and im dumb
* text and fonts fixes
* mapfixes
* small item fix
* floppa my beloved
* fixme
* yepp
* little addition to vibrator
* more user friendly toys
* hotfix because im dumb
* informing user about stuff happening in their genitals
* Fixed strip menu for new slots
* Vibrating toys now makes constant vibration sounds.
* fucking ton of fixes, i debugged so much stuff i want to die when did i slept last time
* signal vibrator fixes
* i guess its all bugs for now, need testing
* hotfix
* chemicals fixed. other dumb bug fixed too
* feex
* undo
* aight, some text stuff
* repsrited signal vibrator, fixed some dumb bugs. Almost ready for tommorrow pr.
* tried to fix things, need to test
* fixed?
* maybe now its fixed
* we finished here.
* yeah, credits. I forgot them.
* Oh well, resolved the conflict wrong.
* map fixed
* formatting test
* more linter stuff
* did changed that skyrat asked me to
* kinda fixed more stuff
* remove mapchanges
* no magic like kat magic
* please
* further mapchanges removal
* fix
* little fix, because one map supposed to be changed.
* quick structure fixes + balance stuff
* some fixes. remind - fix worn tomorrow.
* ah fuck it, i fixed it now. Who need sleep anyway?
* furnitures are no longer invuln
* fixes poles
* milking machine uses cuffs instead
* makes stuff uses cuffs
* frick
* fix lints
* stuffe
* line
* Forgot to add this little feature
* OKAY FINE I GUESS 10 MINUTES IS TOO MUCH.
* squashed bugs
* minor fix to prevent visual bugs with pillow piles.
* frick
* removed logging
* pref for toys
* tabs
* suggested idea added
* hot fix
* Revert "suggested idea added"
This reverts commit 33796f0abb896b83d02dbefee4e3b62df5f6a5db.
* Revert "hot fix"
This reverts commit bf0bc6330f5897ce2d67bb9571eb818d3a64325b.
* fuck the suggestions, i just want it to work fine
* fuck the suggestions, i just want it to work fine
* truly fixes lints
* balance tweaks + fleshlight fixed
* more balance tweaks
* gasmask fixes. Now it doesn't kill people but still makes them suffer
* fix ball mittens
* dead people tell no tales
* some minor fixes
* grammars
* add messages
* use a new pref
* simple check
* knock-knock. Who? A fix.
* fuck
* fixes vibrators
* hexacrocin now can be cured properly
* fix x_stand
* frick
* FUCK
* fixes everyonr being horny
* fixes pain
* fixes strapon
* stop process
* nymphomania fixed
* fix spam
* fixed heels and quirks
* Dead people shouldn't cum
* Knock-knock. A penis enlarger fix
* use the traits goddamn it
* Nymphomania fix
* Fucking moths can't now chomp vibrators
* Added yes/no check to climax button, also some improvements and multiple messages bugfix
* milking machine balance tweaks, bimbo trauma fix
* milking machine construction messages added
* some fixes
* Revert "Fucking moths can't now chomp vibrators"
This reverts commit 2bf37ca3b0b98c3bbd7bf35626faa7a0be54fcfb.
* little clean up of code, but it still doesn't works properly
* fuck the moths. You can't eat vibrators once more.
* catsuit bug fix
* balance tweaks
* Pillows now made of cloth, not metal.
* pillow fixes
* masochism quick fix
* dumb quickfix, it will break anything, don't panic
* yay now it works again
* nymphomania fix
* clean up
* half of ball mittens fix. For another half buy our DLC just for 2,99$!
* IM COOL I FIXED THE BALL MITTENS! FINALLY!
* prefs now works properly
* pain stuff fixed, i guess. no more arousal by decompression damage.
* lol how did i missed those
* can't buckle fucking cows to milker anymore
* oops
* me cool
* fixed small bug with pillows
* gasmask quick fix
* fix spam
* fixes strapon
* balance stuff.
* fix because im dumb
* fix
* the last fix for this codebomination. I hope this is it.
Co-authored-by: Katherine Kiefer <sterlite2902@gmail.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com>