* Fix: DNA Infuser & Infusions
* Fixes the damn conflict
* Fix: DNA Infuser Organ Filtering (#72745)
## About The Pull Request
My PR #72688 was merged mid-review. This is a followup PR to fix the
buggy code which was introduced by myself in between testing a naive
approach to organ filtering. The code does not work due to my own
oversight, as I was attempting to test buggy code in
`/obj/machinery/dna_infuser/proc/infuse_organ` when the prior PR was
merged.
I took this chance to simplify the code more, and I added an additional
proc to the DNA Infuser to replace inline code, `pick_organ`. The proc
picks a random mutated organ from the infuser entry which is also
compatible with the target mob. If none of the organs are compatible,
then the infusion still pricks you with needles but nearly-silently
fails by omitting the "You feel yourself becoming..." chat message.
`pick_organ` tries to return a valid mutant organ if all of the
following criteria are true:
1. Target must have a pre-existing organ in the same organ slot as the
new organ;
- Or, the new organ must be external.
2. Target's pre-existing organ must be organic / not robotic.
3. Target must not have the same/identical organ.
## Why It's Good For The Game
The DNA Infuser should filter organs depending on whether or not the
occupant has one already, if it is organic, and if it doesn't exist the
occupant can still get an external organ (such as a cat tail). This PR
introduces algorithmically correct code to filter the organs, and fixes
bugs introduced by my prior PR which caused the proc to throw a runtime.
## Changelog
🆑 A.C.M.O.
fix: Fixed buggy organ filtering code in the DNA Infuser which stopped
it from infusing organs.
/🆑
Co-authored-by: Dani Glore <fantasticdragons@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Changes signals In item_scaling to fix inventory scaling (#72696)
## About The Pull Request
Fixes#72601 which finally allows item scalable objects to properly
scale to large again when inside an inventory.
Replaces and removes signals that don't seem to effect the item itself.
## Why It's Good For The Game
Can finally see cards in ones binder easily, and allows future items
with item_scaling to properly work.
## Changelog
🆑
fix: fixed Item scaling objects not properly scaling in inventory slots.
/🆑
Co-authored-by: Ed640 <Ed.640@hotmail.com>
* Refactors memories to be less painful to add and apply, moves memory detail / text to memory subtypes. Adds some new memories to demonstrate. (#72110)
So, a huge issue with memories and - what I personally believe is the
reason why not many have been added since their inception is - they're
very annoying to add!
Normally, adding subtypes of stuff like traumas or hallucinations are as
easy as doing just that, adding a subtype.
But memories used this factory argument passing method combined with
holding all their strings in a JSON file which made it just frustrating
to add, debug, or just mess with.
It also made it much harder to organize new memories keep it clean for
stuff like downstreams.
So I refactored it. Memories are now handled on a subtype by subtype
basis, instead of all memories being a `/datum/memory`.
Any variety of arguments can be passed into memories like addcomponent
(KWARGS) so each subtype can have their own `new` parameters.
This makes it much much easier to add a new memory. All you need to do
is make your subtype and add it somewhere. Don't need to mess with jsons
or defines or anything.
To demonstrate this, I added a few memories. Some existing memories had
their story values tweak to compensate.
Makes it way simpler to add new memories. Maybe we'll get some more fun
ones now?
🆑 Melbert
add: Roundstart captains will now memorize the code to the spare ID
safe.
add: Traitors will now memorize the location and code to their uplink.
add: Heads of staff winning a revolution will now get a memory of their
success.
add: Heads of staff and head revolutionaries who lose their respective
sides of the revolution also get a memory of their failure.
add: Completing a ritual of knowledge as a heretic grants you a quality
memory.
add: Successfully defusing a bomb now grants you a cool memory. Failing
it will also grant you a memory, though you will likely not be alive to
see it.
add: Planting bombs now increase their memory quality depending on how
cool the bomb is.
refactor: Memories have been refactored to be much easier to add.
/🆑
* Modular!
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Basic mobs won't shoot walls / Basic mobs won't leave permanent bullet casings (#72494)
## About The Pull Request
Basic mobs using the generic ranged attack behaviour will now not
attempt to shoot a target which they can no longer see.
If they can still see you through a window that's fine because shooting
in your direction will probably break the window eventually, but a mob
knowing you're on the other side of a wall and pointlessly firing at it
isn't useful.
Additionally, adds a component to bullet casings fired by basic mobs
which deletes them after 30 seconds.
https://user-images.githubusercontent.com/7483112/211012442-027455c7-2846-426e-89fb-c8c89d891e4f.mp4
Here's a demonstration but sped up so they vanish after 5 seconds
instead.
## Why It's Good For The Game

We're not actually sure that's where these 75,000 bullet casings came
from (it's probably related to that pAI down there) but it's one way it
could happen.
Players with limited ammo leaving persistent bullet casings should
rarely be a problem, mobs have infinite ammo and so should not be able
to generate infinite debris. Having them just sort of disappear after 30
seconds is... less than immersive, but I feel like it's better than the
alternative.
You can attach the element to other things to thanos snap them if you
want.
## Changelog
🆑
fix: Syndicate mobs will no longer attempt to shoot you through walls,
building up massive piles of empty bullet casings in the process.
qol: Bullet casings from "weapons" fired by certain mobs will clean
themselves up after 30 seconds.
/🆑
* Basic mobs won't shoot walls / Basic mobs won't leave permanent bullet casings
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Converts drowsy and eye blur to status effects, striking yet another two carbon level status vars
* merge conflicts
* adjust_eye_blur and set_eye_blur_if_lower
* adjust drowsiness overdoses
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Dogs use the Pet Command system
* modular pets
* modular dogs
* oops
* NO
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Basic Mobs can run away (#71963)
## About The Pull Request
That's right I'm still atomising #71421, some day I might even post
something related to carp.
This PR adds various behaviours to basic mobs allowing them to run away,
in a couple of variations.
Mice will flee from anyone who doesn't share their factions, at all
times (so they will scatter from most humans, but not regal rats).
Rabbits and Sheep will flee from anyone who has attacked them.
Pigs will run away from people who have attacked them, but only if
they're below half health.
https://user-images.githubusercontent.com/7483112/207127135-d1737f91-d3f7-468a-ac60-7c7ae5d6623d.mp4
Mice are still plenty catchable because they don't run _very far_ (or
very fast) but I think the chase will be good enrichment.
To achieve this I had to change the signal COMSIG_CARBON_HEALTH_UPDATE
into COMSIG_LIVING_HEALTH_UPDATE but frankly the latter seems more
sensible anyway.
## Why It's Good For The Game
More behaviours to use later when designing mobs, gradually gives mobs
more things to do rather than just sort of moving aimlessly around the
area you left them in.
It'll give people hunting rats in maintenance some exercise.
## Changelog
🆑
add: Mice will now run away from you, you have to catch them if you want
to eat them. Use those traps!
add: Rabbits, Sheep, and Pigs likewise won't just sit there and let you
pulverise them if they can see an escape route.
/🆑
* Basic Mobs can run away
* Modular!
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Touch spells can now be used for high fiving, which casts it on the high-five-ee. (#71978)
## About The Pull Request

https://user-images.githubusercontent.com/51863163/207440026-bbb77b71-1b9a-4330-9192-61b50e079df2.mp4
Offering a touch spell to someone will offer them a high five like with
the slapper.
If someone accepts your offer to high five, you will cast the spell on
them.
### **Important distinction: Cult spells are not touch spells they
aren't even spells**
## Why It's Good For The Game
A funny interaction with the offer system. High five people with smite
for fantastic results.
## Changelog
🆑 Melbert
add: You can now high five people with (non-cult) touch spells! Maybe be
careful high-fiving a wizard who knows Smite.
/🆑
* Touch spells can now be used for high fiving, which casts it on the high-five-ee.
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes some bad AddElements, Fixes incompatible element runtime error text (#72188)
## About The Pull Request
- `/datum/element/squish` cannot be applied to non-carbons, and the
falling hazard element works on all livings.
- It seems like squish could easily be changed to apply to all livings,
but out of scope.
- `/datum/element/fried_item` and `/datum/element/griled_item` weren't
being applied to the new item correctly
- This one's my bad
- Changes "Incompatible element" `CRASH` to print the element type
rather than the mob's name mistakenly
- I think this was intended, but always used the wrong arguments, and no
one noticed?
## Why It's Good For The Game
Less runtimes, features work as expected, and a more clearer runtime for
element errors
## Changelog
🆑 Melbert
fix: Silver foods correctly spawn things grilled and fried
/🆑
* Fixes some bad AddElements, Fixes incompatible element runtime error text
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Basic Mob Carp: Retaliate Element (#71593)
## About The Pull Request
Adds an Element and AI behaviour intended to replicate the "retaliate"
behaviour which made up an entire widely-populated subtype of simple
mobs.
The behaviour is pretty simply "If you fuck with me I fuck with you".
Mobs with the component will "remember" being attacked and will try to
attack people who attacked them, until they lose sight of those people.
They don't have very long memories so breaking line of sight is enough
to remove you from their grudge list.
The implementation unfortunately requires registering to 600 different
"I have been attacked by X" signals but c'est la vie.
It will still be cleaner than
`/mob/living/simple_animal/hostile/retaliate/clown/clownhulk/honcmunculus`
and `mob/living/simple_animal/hostile/retaliate/bat/sgt_araneus`.
I attached it to the pig for testing and left it there because out of
all the farm animals we have right now, a pig would probably get pissed
off if you tried to kill it. Unfortunately it's got a sausage's chance
in hell of ever killing anyone.
## Why It's Good For The Game
It doesn't have much purpose yet but as we make more basic mobs this is
going to see a **lot** of use.
## Changelog
🆑
add: Basic mobs have the capability of being upset that you kicked and
punched them.
add: Pigs destined for slaughter will now ineffectually attempt to
resist their fate, at least until they lose sight of you.
balance: Bar bots are better at noticing that you're trying to kill
them.
/🆑
* Basic Mob Carp: Retaliate Element
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Fixes art decal from spray can and crayon always being terrible (#71760)
## About The Pull Request
Fixes#71688
`apply_moodlet(source, user, impressiveness * mult)` can result in
`impressiveness * 0 ` thus giving all decals bad artistic value.
## Why It's Good For The Game
Bug fix is very gud
## Changelog
🆑
fix: fixe all art decal giving you bad art moodlet on examine
/🆑
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Fixes art decal from spray can and crayon always being terrible
Co-authored-by: FinancialGoose <92416224+TheBoondock@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Fixes registersignal(s) sound manager runtime (#71667)
## About The Pull Request
RegisterSignal no longer takes lists, so these needed to be updated
The element passed an empty list to the component (caused a runtime but
not one you'd expect) and also registered a list to SSdcs incorrectly
Very cool
* Fixes registersignal(s) sound manager runtime
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Add baking and grilling results to the blackbox (#71632)
## About The Pull Request
Adds baking and grilling results to the blackbox. Microwaved and crafted
foods were being logged here, but the logging messages were lost when we
got the grilling and baking components.
## Why It's Good For The Game
More food logging yeehaw
## Changelog
No player-facing changes
Co-authored-by: tattle <article.disaster@ gmail.com>
* Add baking and grilling results to the blackbox
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@ gmail.com>
* This kills the deep fried foods holder. Refactors deep frying to just make the thing edible but still functional. (#71551)
## About The Pull Request
Refactors deepfrying, removing the gross Deep Fried Foods Holder Object
and replacing it with the edible component.
Now, deep frying a food will simply make the item edible directly. This
means it's still functional and doesn't become a dead item.
This follows the same method that grilling uses when applying its
effects. Tweaks grilling a bit so they line up better. Also, silver
foods can make grilled items.

I swear this is unrelated to the other 2 fried foods related PRs. I
started this a few weeks ago.
## Why It's Good For The Game
Tangibly better code (doesn't have to copy a million vars! Less
abusable!) at the price of removing a soulful piece of code. Also means
that deep frying an item doesn't irreversibly make it unusable / dead.
This is sad, but... damn the holder object sucks.
Unfortunate side effect is that anything that overrides `attack` to not
send signal will *not* be edible when deepfried. Maybe this encourages
better signal use?
Either that or fried foods can override `pre_attack` to hook directly
into eating. I can do that as well.
## Changelog
🆑 Melbert
refactor: Refactored deep fried foods. Deep fried foods are still
""usable"" as their normal item, but are just edible.
qol: Silver Slime stuff can spawn grilled as well as fried.
/🆑
* This kills the deep fried foods holder. Refactors deep frying to just make the thing edible but still functional.
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Undertile Element Logic Refactor, or Catwalks Aren't Affected by Ambient Occlusion Anymore (#71555)
## About The Pull Request
It was bugging me how catwalks would just be stuck rendering on the game
plane in order to be above the pipes and all the other underfloor
objects, because it meant that they stood out due to being affected by
ambient occlusion.
So I decided to change that, and the best change I could come up with,
was to refactor the logic of `/datum/element/undertile` in order to
actually allow us to do exactly what we wanted by having three different
states of underfloor visibility, which in turn allowed me to slap
everything that wasn't accessible on the floor plane rather than
whatever plane they were on, effectively making it so catwalk tiles
wouldn't need to be on the game plane anymore. :)
Also fixes https://github.com/tgstation/tgstation/issues/63590 while I'm
at it :)
## Why It's Good For The Game
Seeing ambient occlusion on catwalks make them stand out in a jarring
way, now that won't be the case anymore!
Now, instead, you get something like this, which _absolutely_ looks like
it fits in!

## Changelog
🆑 GoldenAlpharex
refactor: Refactored the way the undertile component works, to allow it
to have a bit more granularity as to when it's meant to be covered, but
still visible, like for catwalks!
fix: Catwalks no longer are affected by ambient occlusion, and now
properly feel like actual floor tiles.
/🆑
* Undertile Element Logic Refactor, or Catwalks Aren't Affected by Ambient Occlusion Anymore
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Basic Mob Carp Bonus Part: Wall smashing (#71524)
## About The Pull Request
Atomisation of #71421
This moves the attack function of "environment smash" flags which allow
simple mobs to attack walls into an element, so that we can put it on
other things later.
For some reason while working on carp I convinced myself that they had
"environment_smash" flags, which they do not, so this actually is not
relevant to carp in any way.
While implementing this I learned that the way wall smashing works is
stupid, because walls don't have health and so resultingly if a mob can
attack walls it deletes them in a single click. If we ever decide to
change this then it should be easier in an element than in three
different `attack_animal` reactions.
This is especially silly with the "wumborian fugu" item which allows any
mob it is used on to instantly delete reinforced walls, and also to
destroy tables if they click them like seven or eight times (because it
does not increase their object damage in any way).
## Why It's Good For The Game
Eventually someone will port a basic mob which does use this behaviour
(most of the mining ones for instance) and then this will be useful.
If we ever rebalance wall smashing to not instantly delete walls then
this will also be useful.
Admins can apply this to a mob to allow it to delete walls if they
wanted to do that for some reason, they probably shouldn't to be honest
at least until after we've done point two unless they trust the player
not to just use it to deconstruct the space station.
## Changelog
🆑
refactor: Moves wall smashing out of simple mob code and into an element
we can reuse for basic mobs later
/🆑
* Basic Mob Carp Bonus Part: Wall smashing
* SR mobs
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Save 0.6-0.7s of init time by splitting registering lists of signals into its own proc, and optimizing QDELETED
* modular RegisterSignals
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Coffee Shop DLC - done right this time edition (#70991)
## About The Pull Request
this is a re-attempt at PR #70725 that was practically ready but was
ruined in the course of my hardships with git. Mistakes were made.
In this re-edition I also addressed a few suggestions from the comments
of the original pr. There is a shaker added in the meta station cafe and
the pill bottle is moved out of sight to the fridge (I still left it
cause it contained antidepressants for the especially overworked NT
employees). Additionally, the naming of `/cup/glass/coffee` has been
handled differently this time to minimize the need of changing the code
in multiple places.
Please refer to the original PR for all details concerning the content,
below I add just a rough line-out for the sake of coherency.

The content of the pr extends to:
- a new coffee bean driven coffeemaker
- syrup bottles
- a coffee condiment display box
- almost complete make-over of the meta station cafe
- adding the new coffeemaker in a few break rooms on delta and tram (2
machines per station)
## Why It's Good For The Game
Please refer to #70725
## Changelog
🆑
add: After a massive success of the Modello 3 series, Piccionaia Home
Appliances rolls out a completely new coffeemaker model and renovates
the meta station cafe for free in a promotional campaign!
add: Syrup bottles, condiment displays, and more, to make the spess
coffee experience even better
/🆑
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@ gmail.com>
* Coffee Shop DLC - done right this time edition
Co-authored-by: disappointedButNotSuprised <57324037+disappointedButNotSuprised@users.noreply.github.com>
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@ gmail.com>
* Improve the naming of the element argument hash index selector (#71319)
So confusing name
* Improve the naming of the element argument hash index selector
* sr sync
Co-authored-by: oranges <email@oranges.net.nz>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Fix being unable to block embeds (#71334)
## About The Pull Request
Fixes#62386Fixes#71309
## Changelog
🆑
fix: Fix being unable to block embeds
/🆑
* Fix being unable to block embeds
Co-authored-by: 1bw0kopy <xz2rbf23@protonmail.com>
* Adds falling hazard element, beware of falling tools, wear your hardhat, comically timed piano falling on the clown (#70970)
## About The Pull Request
https://user-images.githubusercontent.com/82386923/199180691-6605c8cc-e8aa-490e-ab65-909d45d12ca0.mp4
Do note that the damage in this video is extremely exaggerated compared
to what the normal value is.
## Why It's Good For The Game
All these signs about engineers needing to wear their hardhat, and for
what? For the assistant dropping toolboxes onto them from above, that's
what! Also allows people to do as god intended by allowing them to drop
pianos on people.
## Changelog
🆑
add: A variety of items, mainly tools, around the station might hurt if
they fall on your head, remember to wear your hardhat and to avoid
standing under large red X marks on the ground with a piano hanging
above them.
/🆑
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Adds falling hazard element, beware of falling tools, wear your hardhat, comically timed piano falling on the clown
* Made anvil and large mortar falling hazards
Co-authored-by: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
* mech bustin update 2022 (#70891)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
Adds a huge ass crowbar to robotics (the mech removal tool), it deals 5
damage unwielded, or 19 wielded. (should be fine, considering robotics
also has the easiest access to the materials needed for a chainsaw)
You can use it while wielded on mechs to break the occupants out. This
takes 5 seconds (or 3 in an unenclosed mech like a ripley)
When you die in a mech you no longer automatically get ejected.
refactors fire axe cabinets to support more items than the fireaxe
makes some vehicle code better
closes#70845 (you can still enter a mech without limbs, i think thats
fine because you can use it to protect yourself from death in a
dangerous situation or something until someone breaks you out with the
really large crowbar)
video: https://streamable.com/x4gom2
## Why It's Good For The Game
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
robotics having a giant ass crowbar to break people out of mechs seems
like a fun idea
you currently cant exit a mech if youre incapacitated inside it unless
you DIE
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑 Fikou, sprites by Halcyon
refactor: fire axe cabinets support items that aren't fire axes
balance: mechs no longer eject you when you die in them
add: Adds a giant crowbar to robotics, it can break open mechs to eject
their pilots.
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
* mech bustin update 2022
* vr for the love of god
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
* Refactors Rabbits to be a Basic Mob (#71205)
## About The Pull Request
Back in #64175, I reworked rabbits such that their base behavior was
just a cute fluffy snuggle monster, and not have the "easter" variant be
the default. Now that we're transitioning everything from simple_animal
to basic, I figured now was the time to shift that over too.
Pretty much everything should be the same as it was before, I even took
some time to add behavior to some elements to allow it to work (let me
know if I should handle it a different way) but rabbits as a
simple_animal and rabbits as a basic mob should now not be very
distinguishable (beyond the fact that they only speak via subtrees).
I also got rid of the single-letter icon_states in the DMI and
accomodated the code to fix because I finally got irritated enough to do
something about that.
## Why It's Good For The Game
Although I didn't really have any pressing urge to add more complex AI
behavior to rabbits than just pretty much re-implementing what they had
as a simple_animal, this is an excellent first-step to allowing much
more extensible behaviors to these fuzzy creatures.
Also, it takes three more mobs off "the frozen list". Whoopie!
## Changelog
🆑
fix: Dead Black Space Rabbits should now properly have a sprite.
/🆑
The UpdatePaths is useless for the maps we have on our repository
(holodecks use a spawner code-side), but I'm going to be nice to
downstreams who need it.
* Refactors Rabbits to be a Basic Mob
* Fixed the CI and the rabbit on VoidRaptor
* Oops, forgot to remove it from here too
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Bedsheet Improvements (#70576)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
This is a remake of #68602 that does:
- Adds context screentips for bedsheets
- Lets you attack other mobs that are lying down to cover them in a
bedsheet
- Removes deprecated bedsheet code
- Fixes tucked in items (plushies, nuke disk, bedsheets) to use proper
direction and rotation for beds
- Fixes bedsheets covering mobs in the wrong direction
- Changes bedsheets to only cover mobs that are lying down
- Bedsheets can now be rotated with AltClick
## Why It's Good For The Game
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
Easier to use and looks nice.
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
qol: Bedsheets now have context screentips and will cover up mobs if
they are attacked and lying down. Bedsheet can also be rotated with
AltClick.
fix: Fix rotation and offsets to work properly on mobs, nuke disk,
plushies, and bedsheets when placing something on a bed.
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Bedsheet Improvements
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Easy's Super Omega "unarmed strike based species var moved to limbs" refractor, unarmed strike striking with specific body parts rather than it just being flavor, and brain based attacking limb selection extra chunky edition. And also bodypart traits.
* Removed all the conflicts, and started converting all the arms and legs to the proper typepaths
* Actually makes the game compile :)
* Makes the maps compile too!
* Early mirror of #71143 because it's more relevant to us
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Remove ELEMENT_DETACH on everything that doesn't need it, rename to ELEMENT_DETACH_ON_HOST_DESTROY + a PSA (about 0.2s init time savings) (#70972)
ELEMENT_DETACH is **not** a requirement to having `Detach` called.
Detach is always called when the element itself is destroyed.
ELEMENT_DETACH is a flag that when set, makes sure Detach is called when
the atom destroys.
Sometimes you want this, for instance:
```dm
/datum/element/point_of_interest/Detach(datum/target)
SSpoints_of_interest.on_poi_element_removed(target)
return ..()
```
This Detach cleans up a reference that would have hung if target was
destroyed without this being called.
However, most uses of Detach are cleaning up signals. Signals are
automatically cleaned up when something is destroyed. You do not need
ELEMENT_DETACH in this case, and it slows down init. This also includes
somewhat more complex stuff, like removing overlays on the source
object. It's getting deleted anyway, you don't care!
I have removed all uses of ELEMENT_DETACH that seemed superfluous. I
have also renamed it to `ELEMENT_DETACH_ON_HOST_DESTROY` to make its
purpose more clear, as me and a lot of other maintainers misunderstood
what it did,
---
An update to this, ELEMENT_DETACH *is* needed for anything that can
register to a turf, as turfs do not clear their signals on destroy.
* Remove ELEMENT_DETACH on everything that doesn't need it, rename to ELEMENT_DETACH_ON_HOST_DESTROY + a PSA (about 0.2s init time savings)
* skyrat elements
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Saves 2 seconds off init by inlining the bumpclick element (#71008)
## About The Pull Request
It was also a tad yorked so I fixed that bit
bump_click did very little in this case, and while the modularity is
nice, the hotness of minerals made this totally untenable
* Saves 2 seconds off init by inlining the bumpclick element
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixes some bespoke elements being passed non-static lists. (#70690)
Bespoke keys use references of lists in generation. Non-static lists will create a million instances of the element, not good.
* Fixes some bespoke elements being passed non-static lists.
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Refactors some signal misuse with the stationloving component (#70496)
* Refactors secluded locs
* Tweak
* Use traits instead of signals
* Review
* Type error
* Refactors some signal misuse with the stationloving component
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes contextual bare hand element improperly setting up its element ID (#70538)
Fixes contextual barehanded screentips being inaccurate if only LMB text is set
* Fixes contextual bare hand element improperly setting up its element ID
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Put clothing on people by clicking on them with clothing inhand + targeting correct area. (#69560)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Put clothing on people by clicking on them with clothing inhand + targeting correct area.
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>