Instead of a huge else if chain, it's a proc that returns either an associated list with the values the proselytizer will use for it or FALSE, if it can't be proselytized.
This makes it easier to mess with and also saves like 5 lines!
Bonus; harm intent no longer disables proselytizing because wow that's a pain in the butt, holy crap.
🆑 coiax
rscadd: Ghosts are notified when someone arrives on the Arrivals
Shuttle. This is independent of the announcement system, and the (F)
link will follow the arrived person.
/🆑
Also I got rid of a trailing return.
This PR finishes work started in #17300 by making all the machines use apply_default_parts(src) for components initialization.
It also adds two new board sprites, one for Abductor boards and one for Ravtar boards:
board board_a board_r
There are no deconstructable Ravtar machines yet, sprites are added for future use. Abductor sprite is used only by Seed Vault's plant DNA modifier. It wasn't made by actual abductors, but it was surely made by aliens.
Boards now have a new var: def_components. It is a list containing replacement paths for default parts. For example, list(/obj/item/weapon/stock_parts/matter_bin = /obj/item/weapon/stock_parts/matter_bin/super) would make machine spawn with super matter bins instead of basic ones by default.
Console screens that were used in machines instead of glass sheets are replaced with actual glass sheets. Support for sheets as machine components was added in a previous PR
Packagewrapping a pulled item now properly stops the pulling.
Using put_in_hands() procs now properly checks if the mob has a hand.
bodyparts icon_state is now "" like it should be.
You can no longer build a firelock on top of another firelock.
You can reinforce a firelock assembly to build a heavy firlock.
Human species who breath something other than oxygen now get the proper alert when in crit, and I fixed the alert not being removed when healed.
Also fixes#18352.
Slime colour and adulthood are specified in New(), which is a lot better
than having an ugly spawn(0) in the middle of a New(). Slimes also only
update their names when growing or shrinking when it matches their
existing name format.
So if you happen to be a slime called Carl Lagerfield, it won't change
your name if you grow up to adulthood.
In addition non-standard xeno names are preserved while evolving.
And it also applies your old dir to the new xeno, because that looks
slightly better.