* Minor Gravity Fixes (#74285)
## About The Pull Request
Fixes forced gravity not updating a mob (trait was added too early,
before hook signals are registered)
Fixes spawning a mob in space not causing floats (default grav was 0, so
== null was wrong)
Runs shake_everyone() (Our gravity gen reaction hook) AFTER gravity
changes, ensuring mobs hook into it
## Why It's Good For The Game
Closes#74271Closes#74272 (Caused by being in nograv but not floating)
Closes#74274
## Changelog
🆑
fix: Fixes a bunch of minor gravity bugs, report em if you see more
yeah?
/🆑
* Minor Gravity Fixes
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Removes networks from the game (#74142)
## About The Pull Request
This is a continuation of
https://github.com/tgstation/tgstation/pull/74085 - I announced in the
comments there that this would be my next PR, and this is it.
Removes SSnetwork, ``/datum/ntnet``,
``/datum/component/ntnet_interface``, ``var/network_root_id``, the
network unit test, and a lot of other things related to networks.
- NTNet circuits now check for an Ntnet relay, and uses signals to
operate.
- Logs in Wirecarp is now only for PDA and Ntnet Relay things, so you
can no longer see what ruins exist using it (why should Wirecarp know
that Oldstation spawned? The flavor is that they dont know its there).
- Removed it from MULEbots entirely, I don't think it even did anything
for them? Botkeeper seems to work without it, so it's possibly there
from pre-tgui PDAs.
- Moves assigning random names to a base proc instead of being tied to
network, this is things like random-naming scrubbers/vents. The behavior
hasn't changed at all.
- Makes Ntos work for consoles when relays are down, as the comments
said they're supposed to (because they're wired). I think this was an
accidental change on my part, so this is a revert of that.
## Why It's Good For The Game
Ntnet is ancient code that hasn't given us much that we can't do with
already existing alternatives, we've been slowly moving away from it for
init times, and though a large portion of that was limited to airlocks,
I still don't think this is a system worth keeping around.
It's way too complex to expect feature coders to do anything with it,
and too old with better alternatives for anyone to want to improve any
of it.
## Changelog
🆑
fix: Computers are now properly connected to Ethernet, and can use Ntos
when Relays are down.
refactor: Removes Ntnet and Ntnet interfaces, which was only used by
Ntnet circuits (which now directly checks for a Relay to work) and
MULEbots, which did nothing with it.
balance: Wirecarp no longer tells you what ruins spawned in a round,
instead it's limited to PDA logs, and tells you the source too. This
means the RD can catch someone running illegal programs if they don't
make any attempt at hiding it.
qol: Wirecarp logs is now set to save 300 at once, instead of 100 and
being increased to 300 by the RD during the round. This is pretty
insignificant, since there's no reason to NOT want as many logs as
possible.
/🆑
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Removes networks from the game
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Reworks blood deficiency backend, & some adjustments to slime blood deficiency
* Update jellypeople.dm
* e
* wew
* https://github.com/tgstation/tgstation/pull/74246
Co-Authored-By: san7890 <the@san7890.com>
* https://github.com/tgstation/tgstation/pull/74189
I was looking over https://github.com/tgstation/tgstation/pull/74143 one
last time as I tend to do with merged PR's and noticed a couple of
nitpicky comment formatting things that will grate on me. Sorry about
this @san7890
Edit: Then even worse I found a bug. Roundstart species with blood
deficiency should now get the appropriate blood pack mail goodies sent
to them. I had completely forgotten about ethereals. Code is a bit
cleaner too.
Fixes bug, dmdoc formatting
🆑
fix: fixed blood deficiency quirk sending the wrong blood pack to
roundstart species who have exotic blood
/🆑
Co-Authored-By: san7890 <the@san7890.com>
* https://github.com/tgstation/tgstation/pull/74229
Followup to #74189
What it says on the tin. This is the last time I will ping you on a
blood-deficiency related PR, I swear! @san7890
About lizards--they have a special bloodtype that isn't compatible with
the generic O- that gets sent to everyone else, which I am just now
realizing.
I also realized that there is never a situation when `on_species_loss`
gets called without `on_species_gain` so there is no reason to call
`update_mail_goodies` in each of those. I deleted the extra proc calls
in `on_species_loss` to save on performance.
Also cleans up some single letter vars in the lizard species file.
Fixes an oversight, cleans up some code.
🆑
qol: lizards with blood deficiency now receive the type 'L' blood packs
instead of an unhelpful type 'O-' one.
/🆑
Co-Authored-By: san7890 <the@san7890.com>
---------
Co-authored-by: Bloop <vinylspiders@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
* Adds non-clothing item equipping others feedback messages (#73982)
## About The Pull Request
Things like pens weren't giving any feedback messages when you put them
on someone else, and I ran into this while working on another PR so I've
dealt with that
Renames `worn_dangerous` to `show_visible_message` as it was only used
to confirm if there would be visible messages or not
The `DANGEROUS_OBJECT` clothing flag is a trait now, so it can be put on
non-clothing items too
Removing non-clothing items from someone has been unchanged.
## Why It's Good For The Game
People should be able to identify that someone is putting something on
them, and recognize what that is if they pay attention.
This means that a player cannot reverse pickpocket a grenade onto
someone else without giving any indication of doing so
## Changelog
🆑
balance: Putting a non-clothing item onto someone else creates a visible
message the same way a clothing item would.
/🆑
* Adds non-clothing item equipping others feedback messages
---------
Co-authored-by: ArcaneDefence <51932756+ArcaneDefence@users.noreply.github.com>
* Ethereals now correctly list "LE" as their blood type in medical records. (#74209)
## About The Pull Request
Fixes#74208
One line change woo yea. How did we have this in place for vampires but
not ethereals? That's wild. Yeah yeah, I tested it. Everything is nice
and shiny, all works good.
## Why It's Good For The Game
So it turns out ethereals do not have AB- and what I just did is called
"malpractice".
## Changelog
🆑
fix: The intern who was recording Etheral crewmembers' bloodtypes as
random human bloodtypes has been replaced with an intern who has seen
the example made of the previous one.
/🆑
* Ethereals now correctly list "LE" as their blood type in medical records.
---------
Co-authored-by: Vladin Heir <44104681+VladinXXV@users.noreply.github.com>
* Replaces internal_organs with organs
* Makes all of the necessary internal_organs -> organs in our files to compile
And it seems to work too!
---------
Co-authored-by: Time-Green <timkoster1@hotmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Standarized silicon examine stuff.
* There we actually go
* Fuck, finally.
* Let's do something to amend the double-messages
* fixing a dumb copypaste
* How dumb of me
* Amendments
* oh well, this should take care of some runtimes
* this too
* Okay now it should compile
* Oh well, might as well do this too
* Dear got, subtler is full of spaghetti. Even before I touched it. It legitimately deserves a fucking rewrite.
* one way to resolve a conflict
* ordered tgstation.dme correctly now
* fiiiixed
* NODISMEMBER mobs are no longer miraculously immune to the flesh heretic worm (#74141)
When the NODISMEMBER trait check was passed, it would return without
calling the rest of AttackingTarget and not actually follow through with
dealing the damage. Now, the early return calls parent and completes
normally.
* NODISMEMBER mobs are no longer miraculously immune to the flesh heretic worm
---------
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Tram signal process/destination improvements (#74072)
## About The Pull Request
- Tram crossing signals now call process() much less often
- Tram crossing signals don't turn amber/red needlessly
- Tram destination landmarks are more generic to accommodate future
maps, like Birdshot
- Renames to_where and from_where, because those vars didn't always
match tram position to/from
## Why It's Good For The Game
Tram works better, uses less processing
## Changelog
🆑 LT3
code: Tram crossing signal/platform logic improvements
/🆑
* Tram signal process/destination improvements
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Fix not being able to read in full bright areas (#73843)
## About The Pull Request
Fixes#73830Fixes#74107
There seems to be a problem when the map template reloads for full
bright areas, but only for thunderdome specifically. Very strange and my
fix feels like a band-aid but it's a niche bug report.
Also deleted an area that was not used anywhere in the codebase.
## Why It's Good For The Game
Silly bug go bye bye.
## Changelog
🆑
fix: Fix not being able to read in full bright areas
/🆑
* Fix not being able to read in full bright areas
---------
Co-authored-by: Tim <timothymtorres@gmail.com>
* Fixes "melty humans" (#74076)
## About The Pull Request
Fixes#73154
Includes human height in icon render key.
The logic here is that if two mobs share the same icon render key they
probably grab the same icon and thus a tall person would grab a "short
person icon".
## Why It's Good For The Game
Melty bad
## Changelog
🆑 Melbert
fix: Fixes rare human arm melting condition
/🆑
* Fixes "melty humans"
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fix explosive holoparasite plant bomb runtime (#74012)
## About The Pull Request
If you planted a bomb as an explosive holopara it would do a stack_trace
cause it was using RegisterSignal instead of RegisterSignals
So, literally just changed RegisterSignal to RegisterSignals
## Why It's Good For The Game
Fixes#73854
## Changelog
🆑
fix: Explosive holoparasites no longer runtime if they plant bombs
/🆑
* Fix explosive holoparasite plant bomb runtime
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
* Fix borg synthesizers getting stuck on the status panel (#74017)
## About The Pull Request
Unregisters status panel signal if the robot model item is deleting
## Why It's Good For The Game
Fixes#73594
## Changelog
🆑
fix: Borg synthesizers will no longer remain on the status panel if a
borg changes modules
/🆑
* Fix borg synthesizers getting stuck on the status panel
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
* Audits usage of isanimal() vs isanimal_or_basic_mob() (#74029)
## About The Pull Request
There's a couple of open issues which fix places where only simple
animals were considered, but they are doing it piecemeal.
I decided to just go through every instance of `isanimal` or
`subtypesof(mob/living/simple_animal)` I could find, identify which
should also affect basic mobs, and fix them.
I left out the two others which are already in PR, I'm not stealing your
GBP.
Fixes https://github.com/tgstation/tgstation/issues/68881
## Why It's Good For The Game
Consistency, mostly.
As far as I can tell all of these things _should_ have effected basic
mobs, but didn't.
This fixes a fair number of bugs but also they're bugs that nobody
noticed or reported.
There are a couple of places I did not update which will need updating
in future. These are:
- Dextrousness checks, because basic mobs don't have that yet.
- The Charge cooldown action, because frankly I couldn't tell what it
was trying to do.
alright here goes
## Changelog
🆑
fix: Carp will once again be healed from being near carp rifts
fix: Sepia slime cores and the rewind camera now work on Ian
fix: Sapient ridden carp (or cows) can throw off their riders by shoving
them, or by performing the spin emote.
fix: Giant Spider AI will be disabled by the timestop spell
fix: Ian can eat envirochow
fix: Mice, Frogs, and Cockroaches will no longer set off bear traps
fix: You can put a macrobomb implant into Cayenne (or Ian)
fix: Ian will now recognise that being squeezed by a cyborg is a nice
hug
fix: The player panel will tell admins if you're currently a corgi
fix: The staff of storms deals massive damage to Bileworms and Giant
Spiders
fix: Ian will whimper if forced to scream
fix: Slimes can consume space carp
fix: Mice can be captured in xenoballs
fix: You can use pacifying potions on Giant Spiders
fix: Sgt Araneus can be fitted with a xenobiological radio implant
fix: Sapient corgis no longer count as living players for the purpose of
highlander escape objectives
fix: The random sentience event can now target corgis and sergeant
araneus
add: The random sentience event can target a wider array of farm animals
fix: Petsplosion wizard event can target corgis
add: Petsplosion wizard event will now target farm animals and
mothroaches
fix: The colossus possession crystal can now actually possess the
cockroach it spawns, does not kill you instantly upon ending possession
/🆑
* Audits usage of isanimal() vs isanimal_or_basic_mob()
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Player-controlled Regal Rats now lick or scratch based on their combat mode (#74040)
## About The Pull Request
This updates Regal Rats to now check for a user's combat mode when
determining whether to lick or scratch a living target (Lick = combat
off, and Scratch = combat on). It also Closes#68621.
Additionally, it allows for player movement during the licking
interaction to properly cancel that action. Previously, it would attempt
a lick, the player would cancel it, and then the player would attack
their target instead (this was due to an oversight in the code).
Edit: It now also prevents NPC Regal rats from licking entirely, and
fixes their logic so that they move on to a new target after completing
a kill.
## Why It's Good For The Game
It allows players to control what their Regal rat does according to
their combat mode, which matches the behavior for other
player-controlled creatures (such as humans). Plus, this allows Regal
rats control over when to harm living creatures, making them much less
vulnerable than they were before.
Edit: As for NPC Regal rats, it allows them to be a bit more dangerous,
since they'll now only attack creatures that are alive. Moreover,
removing the ability to lick from NPCs helps avoid the strange scenario
where players could belong to a faction which is led by an NPC. (How can
one serve a King that lacks a sentient mind? Spacemen aren't ready for
that type of philosophical dilemma.)
## Changelog
🆑
fix: Player-controlled Regal Rats now lick or claw based on their combat
mode.
fix: NPC Regal rats now properly claw at enemies, moving on to new
targets after completing kills.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Player-controlled Regal Rats now lick or scratch based on their combat mode
---------
Co-authored-by: Antonio Tosti <5588048+atosti@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Admins can now customize the wisdom cow event. (#74045)
## About The Pull Request
Gives admins the ability to customize the spawn location of the cow and
the wisdom that it grants.
## Why It's Good For The Game
Wisdom cows lack any sort of customization at present, this allows
admins to set what type of wisdom which is granted which may be thematic
for events and adding positional spawn support for them is a pretty easy
addition.
## Changelog
🆑
admin: Admins can now customize the wisdom cow event.
/🆑
* Admins can now customize the wisdom cow event.
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* Cleans up `..()` usage in organs' `Insert()` and `Remove()` (#74055)
## About The Pull Request
fumbled around while investigating #74047 and turns out there's other
organs that have the same issue as the reported alien organs in that
issue. went around and replaced parent calls where applicable
(cursed/demonic hearts, flashlight eyes, alien organs, abductor glands)
## Why It's Good For The Game
Fixes#74047
Considerably less ghost internal organs, hopefully less unreported jank
on removing organs
## Changelog
🆑
fix: fixed a few internal organs acting wonky on inserting/removing
(some xenomorph organs, abductor glands, flashlight eyes, demon/cursed
hearts)
/🆑
* Cleans up `..()` usage in organs' `Insert()` and `Remove()`
---------
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
* Splits mutant_bodyparts.dmi into several subfiles. (#71408)
Splits the `mutant_bodyparts.dmi` file up, as was suggested, but not
implemented, in #69302.
The following new files were created in the `icons\mob\species` folder,
containing the listed sprites:
- `lizard\lizard_misc.dmi`: Snouts, horns, frills, and body markings.
Anything I didn't feel needed an entire file to itself.
- `lizard\lizard_spines.dmi`: Lizard spines, both animated and not.
- `lizard\lizard_tails.dmi`: Lizard tails, both animated and not.
- `human\cat_features.dmi`: Felinid ears and tails.
- `monkey\monkey_tail.dmi`: The monkey tail.
- `mush_cap.dmi`: The lone mushperson cap, so easily forgotten.
Additionally, I moved `wings.dmi` from `mob\clothing` to `mob\species`.
I'm not sure what it was doing there.
`mutant_bodyparts.dmi` was something of a mess, with parts from four
different species thrown together haphazardly. It probably made sense in
earlier days when "mutant humans" were few and far between, but
splitting it up makes it more intuitive to find these sprites, and
brings it in line with other species - namely, moths. It also means that
any future sprites of these types added will not bloat an oversized file
even more.
Moving the wings file to the species folder just makes sense, because
wings are not a type of clothing.
🆑
refactor: Removed mutant_bodyparts.dmi and distributed its sprites in a
more sensible and granular manner.
/🆑
* External Organ Rework: new bodypart_overlay system (#72734)
Bodypart overlays are now drawn by the new /datum/bodypart_overlay
datum.
External organs no longer draw anything and instead add a special
/datum/bodypart_overlay/mutant to the bodypart, which draws everything
Makes it way easier to add custom overlays to limbs, since the whole
system is now modularized and external organs are just one
implementation of it
I haven't moved anything but external organs to this new system, I'll
move eyes, bodymarkings, hair, lipstick etc to this later
New pipeline is as follows:
- External organ added to limb
- External organ adds /datum/bodypart_overlay/mutant to limb to
bodypart_overlays
- Limb updates its icon, looks for all /datum/bodypart_overlay in
bodypart_overlays
- Very cool new overlay on your limb!
closes#71820🆑
refactor: External organs have been near-completely refactored.
admin: Admin-spawned external organs will load with a random icon and
color
fix: fixes angel wings not working for non-humans (it was so fucking
broken)
fix: fixes external organs being invisible if they werent initialized
with a human
/🆑
External organs are cool but are pretty limited in some ways. Making
stuff like synthetic organs is kinda fucked. I tried and it was dogshit.
Now you can just give an icon state and icon and you're good (using
/datum/bodypart_accessory/simple)
Stuff like eyes, cat ears and hair seem like good choices for extorgans,
but don't quite work for it because their icons work a lot differently.
This solves for it completely since any organ (or object or whatever)
can add it's own icon to a bodypart.
Want to add an iron plate to someones head? Go ahead. Want a heart to
stick out of someones chest? No problem.
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Makes the whole thing compile, although it most likely doesn't work
* Whoopsie daisy
* Now it's starting to work
* ok monkey
* Fixes tails some more
* Moth wings should be wings not moth wings
* Podpeople hair, yeah.
* Okay no more handle_mutant_bodyparts()
* Removed an useless variable from is_hidden()
* Fixes some more can_draw_on_bodypart (I'm gonna have to fix it upstream too)
* Removes the second useless argument of is_hidden()
* No, cat tails are no longer allowed to be snowflake
* Removes some useless variables from humans
* Whoops I forgot to commit this one
* How did I miss this one?
* Okay, yeah, tails and some other stuff show up now. Pod people hair too. Just many of them don't. Good enough for today.
* Okay so after a lot of pain and suffering, many mutant_bodyparts are now functional
* Everything works, except for ears, some of the taur layering, and moth markings (which never worked it seems)
* Alright skintones seem to work rather well now(?)
* Okay, my bad, now they do
* Moth markings can't be selected and won't be added anymore (since they're broken and integrated into the regular markings system anyway)
* Spines are no longer just matching the color of the limb they're attached to
* Moves taur organ and bodypart_overlay out of the sprite_accessory file for taurs, and fixes the taur rendering
* Linters moment
* Alright, spines are working and overlaying properly now
They just need to have a FRONT overlay for the /tg/ ones if we want them to display above the lizard tails, we already have that for vox spines thankfully.
* Disables moth_markings for good
* Fixes some rendering bugs
* Makes ears work (almost, rest of the code has MODsuit stuff in it too :( )
* Made the MODsuit overlays work :)
* Fixed horns and spines
* Fixes all of the screenshot tests
* Removes the Body Markings option from Appearances, use Augments+ instead (because that one works and is just better)
* Bye bye handle_mutant_bodyparts(), I won't miss you :)
* Forgot to take this out, whoops
* Fixes the moth antennae being unticked
* Removes some commented code in a modular file
* Fixes part of the create_and_destroy unit test
* Fixes a pretty big issue that caused some sprite_accessories to be removed from the global list because of the alter_form action (deep copies ftw)
* Fixes the runtimes related to pod_hair
* Gives the vox a better look in the prefs menu
* Fixes the appearance of functional wings
* Makes synths able to access their robotic wings
* Podpeople don't cause runtimes during CI anymore
* Fixes the random appearance of locked functional wings
* Fixed cat and lizard tails using the /tg/ sprites (we have slightly modified ones)
* Fixes the coloring on multi-colored sprites
* Fixes the code for the screenshot of the mammal screenshots and preview, so it has a tail
* Fixes the screenshot tests for a few species
* Fixes tails going invisible when wagging
* Fixes a runtime with horns
* Fixes showing/hiding mutant bodyparts not working at all
* (Hopefully) fully fixes all the issues related to extra and extra2-related icon_states.
* Fixes synth stuff and starts working on pod hair again
* I DID IT PODPEOPLE HAVE HAIR AGAIN
* Fixes the podpeople hair showing up on more than just podpeople
* Fixes the IPC screens showing up on species outside of synthetics
* Fixes a runtime in the pod_hair and the synth_screen's apply_to_human
* Updates the screenshots for podpeople and synths
* Fixes an issue with a certain type of organs
* Fixes another runtime, whoops
* Fixes the markings from /tg/'s Body Markings not being available in our markings system
* Re-adds support for taur-variants of certain mutant bodyparts
* Hopefully fixes a few more runtimes
* Adds some debug variable in the code for now, likely to be removed later if really necessary. This will make my life easier.
* Whoops, that needed to be backwards. :clown:
* Fixes the top snouts not rendering at all
* Fixes the issues where bodytypes weren't handled properly, and thus snouts were getting squished
* Fixes the weird placement of the Xeno Head Emissives in the prefs menu
* Removes a no-longer-necessary override of post_set_preference() in the limbs_and_markings middleware
* Reverts an unnecessary SKYRAT EDIT inside of commented out code
* No longer creates a new body every time we change prefs in the prefs menu, we reusing now lads
I know there's commented out code but I'm going to remove that in another commit
* Removed some more dead code.
* Fixes jellyfish ears being all white
* Fixes plasmaman limbs not displaying because I accidentally hardcoded the limb_id for all augments to "robotic"
---------
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
Co-authored-by: Time-Green <timkoster1@hotmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Fixes slimepeople not being affected by blood deficiency quirk (#73866)
## About The Pull Request
Slimepeople were not being affected by the blood deficiency quirk due to
having `TRAIT_NOBLOOD`:
https://github.com/tgstation/tgstation/blob/0426f7ddbaa91439c7278189101f5db9c7f2ed95/code/datums/quirks/negative_quirks.dm#L73-L74
Additionally, the rate at which slimes regenerate blood is not the same
as the rate for humans.
I added a new species var, `blood_deficiency_drain_rate`, to allow for
variable drain rates that can be customized on a species basis.
Currently the only species with varying regen rates seem to be
slimepeople and vampires. In the case of vampires, they already lost
blood over time but it will now just happen slightly faster.
One thing to note for posterity: as a side effect of this, slimes with
this trait will have a pretty impressive appetite due to this:
https://github.com/tgstation/tgstation/blob/afe6ecc353eef0db92a23dd1928768651071d11e/code/modules/mob/living/carbon/human/species_types/jellypeople.dm#L63-L66
If you find some way to keep your blood volume higher than
`BLOOD_VOLUME_NORMAL` then you can prevent the nutrition loss entirely.
Easier said than done though! Could lead to some interesting
shenanigans.
Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/15447
## Why It's Good For The Game
Fixes a quirk being broken for some species. Code changes to allow for
better handling of such cases as variable species blood regen rates in
the future.
## Changelog
🆑
fix: slimepeople and vampires are now affected by the blood deficiency
quirk
/🆑
* Fixes slimepeople not being affected by blood deficiency quirk
---------
Co-authored-by: Bloop <vinylspiders@gmail.com>
* Station Trait: Spider Infestation (#73893)
## About The Pull Request
Hate having your cables eaten by mice? Nanotrasen have heard your
complaints and settled on a natural, _organic_, and eco-friendly
solution.
When this station trait is active, roundstart and event mouse spawns
have a chance to instead be replaced with duct spiders (both will exist,
it doesn't remove mice).
Duct spiders are largely harmless to humans, actively hunt other
maintenance creatures (such as mice), and have only one _tiny_ downside.

These mobs can also sometimes be spawned by a minor scrubber clog event.
As a side note, all spider basic mobs with AI (except Araneus) will now
try to automatically fill a small area around them with webs.
Also I made it so that mobs will ignore their random_walking behaviour
if they're engaged in a `do_after`, just in case.
## Why It's Good For The Game
Adds a little bit of variety to things which can slightly annoy you in
maintenance.
Spiders will automatically make places they live in look like spiders
live there.
## Changelog
🆑
add: A station trait which sometimes populates maintenance with small
spiders. You can wear them as a hat if you wanted to have a spider on
your head for some reason.
add: Spider mobs will automatically start webbing up their environment.
/🆑
* Station Trait: Spider Infestation
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Fixes syndicate ghost roles not spawning with codespeak language
* Fixes related NRI issues as well while we're at it
* Fixes a couple issue and adds the new naming scheme
* Phonetic alphabet numbers, fixes trailing space in formatting
* change to NATO numbers rather than phonetic
* final quality sweep
* moved this into the proper place
* Removes the no longer in use 'rank' var
* fixes a runtime
* Update modular_skyrat/master_files/code/modules/mob_spawn/mob_spawn.dm
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Fixes a mistake
* refactor outfit paths
* Doc
* Fixes ashwalkers sometimes spawning without language
* Removes the need for post_transfer_prefs for languages and fixes language prefs not being applied correctly due to a bug
Fixes another bug - the innate language (common) was always being applied when a new mob was spawned on the station, but interestingly it works fine for ghost roles.
My solution to ensure that things are always set up correctly is to use the proc 'adjust_language_to_prefs' to do just that, and call it at the highest level after a mob spawns.
This fixes the bug that was making it so that even if you deselected common from language prefs you'd still get it no matter what. Which honestly I am still fuzzy on the precise cause of because of how much coupling there is between mind code, language holders, and spawning new mobs. The logic of this code is absolutely mental and rather than try to weave things into functions it seems best to just do this instead. Less prone to breakage that way.
* Update modular_skyrat/master_files/code/modules/client/preferences/middleware/languages.dm
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Suggestions
* A more fitting description for this var
* Modifies language perk tooltips to better fit the codebase, refactors do_not_sanitize into a whitelist instead that can be configured for species
The Ashwalker tooltip inaccurately listed common as a language they were able to speak. Also slightly changed the wording of the rest of the tooltips to reflect the fact it is possible to disable a species' native tongue via prefs.
Refactored the 'do_not_sanitize' var to use a whitelist instead, allowing for more reliable sanitizing and also more configuration for new species to have such features.
* rephrasing
---------
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Brings the monkey back down (body horror edition/addition.) (#73325)
## About The Pull Request
Let me paint you a story.
A long time ago monkeys once rested their feet on the floor, this was a
time of bliss and peace. But sometime around the horrors of making
monkeys subtypes of humans did an atrocity occur.

**The monkeys were moved up.**
I thought this was bad, and alot of people on the forum tended to agree
with me

This was do to some purpose of adjusting them so it could be easier to
fit item sprites onto them instead of preforming the hours of work
refractoring to make the heights of the items dynamic and adjustable. A
simple pixel shift may have sufficed, but you see, such a change would
NEVER allow the frankensteining of monkey and human features together.
This is that refractor.
In essence, the following is now true.
A top_offset can now be generated for a human based on a varible on
their chest and legs. By default, and as is true with human legs and
chests, this variable is ZERO by default. Monkey legs and chest have
NEGATIVE values proportionate and onto how much smaller their sprite is
compared to humans. Other bodyparts, as well as any other accociated
overlays, or clothing will automatically be offset to this axis. THIS
MEANS THAT MONKEYS ARE ON THE FLOOR. But is means something else too.
Something more freakish,

**What abominable monsters**, unreachable by players as long as we can't
stitch monkeys and humans together (oh but just wait until the feature
freeze ends)
Oh but you might be thinking, if legs can make a mob go down.
can it make a mob
**go**
**up??**
**OH NO**



These lads are stepping, and have been implemented solely for proof of
concept as a way to flex the system I have created and remain
inaccessible without admin intervention.
But really, when all is said and done, all this PR does in terms of
player facing changes is move the monkey back down.

Oh and fixed monkey husked which have been broken for who knows how
long.

## Why It's Good For The Game
The monkey is restored to its original position. Tools now exist to have
legs and torsos of varying heights. Monkey Husking is fixed.
## Changelog
🆑 itseasytosee
fix: Monkeys ues the proper husk sprites.
imageadd: The monkey has been moved back down to its lower, more
submissive position.
refactor: Your bodyparts are now dynamically rendered at a height
relevant to the length of your legs and torso, what does this mean for
you? Not much to be honest, but you might see a monkey pop up a bit if
you cut its legs off.
admin: The Tallboy is here
/🆑
---------
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Brings the monkey back down (body horror edition/addition.)
* Update species.dm
* Delete infuser_entries.dm
---------
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>