Commit Graph

7622 Commits

Author SHA1 Message Date
SkeletalElite
77bad3e2c6 Fixes Brain Trauma Forced Speech Triggering the World Filter (#71897)
## About The Pull Request
Fixes #71849

## Why It's Good For The Game
bug bad

## Changelog

🆑
fix: Forced speech from brain damage will no longer trigger the world
filter
/🆑
2022-12-11 12:34:20 +01:00
texan-down-under
05b7e0d0c0 Modularizes the forensics scanner, and letting items modify it. (#71109)
Overhauls the fornesics scanner system, letting items modify the readout
and adding additional information through the COMSIG_DET_SCANNED signal.

Buffs the forensics scanner by letting it reveal more info, makes the
code look nicer, and allows for a bit more flavour text to be added to
items.
2022-12-11 04:21:16 -05:00
LemonInTheDark
e766444468 Changes our map_format to SIDE_MAP (#70162)
## About The Pull Request

This does nothing currently, but will allow me to test for layering
issues on LIVE, rather then in just wallening.
Oh also I'm packaging in a fix to one of my macros that I wrote wrong,
as a joke

[removes SEE_BLACKNESS usage, because we actually cannot use it
effectively](c9a19dd7cc)

[c9a19dd](c9a19dd7cc)

Sidemap removes the ability to control it on a plane, so it basically
just means there's an uncontrollable black slate even if you have other
toggles set.

This just like, removes that, since it's silly

[fixes weird layering on solars and ai portraits. Pixel y was casuing
things to render below who
shouldn't](3885b9d9ed)

[3885b9d](3885b9d9ed)

[Fixes flicker
issues](2defc0ad20)

[2defc0a](2defc0ad20)

Offsetting the vis_contents'd objects down physically, and then up
visually resolves the confliciting that was going on between the text
and its display.

This resolves the existing reported flickering issues

[fixes plated food not appearing in
world](28a34c64f8)

[28a34c6](28a34c64f8)

pixel_y'd vis_contents strikes again. It's a tad hacky but we'll just
use pixel_z for this

[Adds wall and upper wall plane
masters](89fe2b4eb4)

[89fe2b4](89fe2b4eb4)

We use these + the floor and space planes to build a mask of all the
visible turfs.
Then we take that, stick it in a plane master, and mask the emissive
plane with it.

This solves the lighting fulldark screen object getting cut by emissives
Shifts some planes around to match this new layering. Also ensures we
only shift fullscreen objects if they don't object to it.

[compresses plane master
controllers](bd64cc196a)

[bd64cc1](bd64cc196a)

we don't use them for much rn, but we might in future so I'm keeping it
as a convienince thing

🆑
refactor: The logic of how we well, render things has changed. Make an
issue report if anything looks funky, particularly layers. PLEASE USE
YOUR EYES
/🆑

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-12-10 17:30:54 -08:00
zxaber
54cfbcce2e Replaces Traitor Greentext Objectives with Assassination/Escape Objectives (#71349)
## About The Pull Request
- Traitors now have the old two kill + escape objectives from before
progressive traitors. These objectives are for greentext/victory
conditions only, and are known as "Primary Objectives".
- The Progressive Traitor system remains in place for unlocking
dangerous gear.
- Completing the Final Objective from the progressive list is an
alternate route to victory.
- Traitor Uplinks now have a new tab that lists Primary Objectives,
which will also indicate when the Traitor has a secured victory by Final
Objective.
- Also cleaned up the round end report, see below.
## Why It's Good For The Game

See https://hackmd.io/WVjTLp6xTJiTFEkhSqqWIQ?view for my complete
thoughts.

TL;DR:
- Getting Rep is too much of a time commitment for Greentext. 
- Most of ProgTraitor is quiet sabotage that no one cares about, leading
to less conflict with the crew.
- Losing the Uplink creates an unwinnable state.

This PR fixes the above, by bringing back the 2 kill + escape system.
Traitors are now required to actually negatively affect at least some
crewmembers, and actually survive the round, to gain a victory state.
Alternatively, if they reach the Final Objective, they are given a free
pass, as an alternate route if they cannot find their Primary Objective
targets. Final Objectives will count as a victory even if the traitor
dies.

The Progressive Traitor system is still used for unlocking gear, and no
values for items, or restrictions based on role, have been changed.
## Changelog
🆑
balance: Traitors now have two kill and an escape objective for
Greentext purposes, though completing a Final Objective will Greentext
too.
/🆑
New Primary Objective Tab:

![tot_objs](https://user-images.githubusercontent.com/37497534/202838143-e3f8f10f-8b13-4e0a-80dc-efc9271e8089.png)
If the Final Objective is done, the traitor's victory condition is
secured, and the Primary Objectives no longer matter.

![tot_objs_complete](https://user-images.githubusercontent.com/37497534/202838147-bac663b0-8f30-4e84-bf2a-23f014992a75.png)
Round-end report, showing one traitor that greentexts through
traditional means, and one that doesn't get their kill target or escape,
but greentexts via Final Objective anyway.

![round_end](https://user-images.githubusercontent.com/37497534/202838156-0b1cc7dd-3048-40f6-a640-cef7a613d4ba.png)
2022-12-11 00:01:06 +00:00
tattle
9b1be9ef13 Investigate logs include ckey of source (if applicable) (#71833)
## About The Pull Request
All investigate logs start with [src], which can be any atom. So
sometimes names and items get printed twice. Adds ckeys to the
investigate_logs of living mobs.


![image](https://user-images.githubusercontent.com/66640614/206372340-3c50bc9d-b662-4a4d-b1ec-91c0b4db8a39.png)


## Why It's Good For The Game
Better logging, includes the ckey for living mobs in investigate logs,
and fixes some investigate_death logs that weren't properly attributed
to mobs.

## Changelog

🆑 Tattle
admin: investigate logs include ckey of source (if applicable)
/🆑

Co-authored-by: tattle <article.disaster@gmail.com>
2022-12-11 12:52:50 +13:00
Salex08
e463890361 Sleeping status now considers being deaf (#71879)
A bug in the sleeping status effect made it impossible to adjust the
healing threshold with wearing earmuffs or being deaf alltogether, this
PR fixes that issue
2022-12-10 16:03:27 -06:00
FinancialGoose
1b5a710f3c 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>
2022-12-10 16:16:39 +00:00
EvilDragonfiend
a629cd3128 Renames quirk dm files (#71853)
## About The Pull Request
Renames quirk dm files
## Why It's Good For The Game
`good v.s. negative` is weirdly named in its relation and it is annoying
to find these specific files
## Changelog
🆑
code: quirk dm files are renamed 'positive_quirks.dm',
'negative_quirks.,dm', and 'neutral_quirks.dm'
/🆑
2022-12-09 23:41:01 -05:00
tattle
e928449067 3/4ths-ify some wall mount sprites (by Kryson and Viro) (#71788)
posters are now 24px tall, new sprites for nanomeds, emergency safes, and ticket machines
(by Kryson)
2022-12-09 18:02:16 -03:00
Fikou
f9445e027f makes beams better (plus small kinesis tweaks) (#71768)
## About The Pull Request
kinesis now waits for its first inputs to be given before firing, it
should no longer pull the item to the center of the screen
the kinesis overlay now is emissive
beam emissivity now works (emissive appearances no longer reset
transform)
beams now have a variable whether or not they should be emissive,
because of stuff like vines or chains from the meat hook
fixes https://github.com/tgstation/tgstation/issues/71640

## Why It's Good For The Game
neat visual stuff

## Changelog
🆑
fix: fixes beam glow in the dark effects
fix: kinesis now doesnt pull the item to the centre of the screen when
first used
fix: physical beams (like vines or meat hook chain) no longer glow in
the dark
/🆑
2022-12-09 15:58:58 -05:00
Tim
48e36ef2c7 Saycode refactor, unit tests, and fixes (#69799)
<!-- 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! -->

Fixes #69798
Fixes #71621

When using hypnosis on a victim, the language should be accounted for
and whether the victim can properly hear it. Before the hearing code
would magically translate any message, this is no longer the case.

This also fixes the language barrier involving hearing for:
- Mind echo trauma
- Phobia trauma
- Hypnotic trigger trauma
- Split Personality brainwashing trauma
- Codeword hearing
- Hypnotize status effect
- Impure Inacusiate reagent

## 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. -->

Better consistency, improved readability, and less bugs in the future.

## 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. -->

🆑
fix: Fix hypnosis, mind echo trauma, phobia trauma, hypnotic trigger
trauma, split personality brainwashing trauma, codeword hearing, and
impure inacusiate reagent all bypassing language and hearing checks. If
you try to give commands to a victim in a language they don't
understand, they will no longer magically understand the words.
fix: Fix sign language having accent modifications
refactor: Refactored saycode to be more robust, readable, and have more
unit tests.
/🆑

<!-- 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>
2022-12-09 20:28:17 +01:00
Jacquerel
58b61a17a7 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.
/🆑
2022-12-09 19:53:58 +01:00
Zephyr
d55dae757a Refactors calculating shuttle bounds into a dedicated proc (#71687)
Adds the ability to calculate the information during runtime by
iterating through the shuttle areas; which essentially means that you
now have the ability to shrink/expand shuttles. A front end for doing
this has not been implemented in this PR, however this means that in the
future doing so would be as simple as adding the new area into the
shuttle_areas list on the docking port and then calling
`calculate_docking_port_information` on the docking port.
2022-12-09 02:58:22 +00:00
CapybaraExtravagante
64b9943684 Fixes bug where datum AI could double-plan behaviors if they had AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION (#71756)
## About The Pull Request

We didn't check if an action was already queued, which resulted in
behaviors being added to the current_behaviors even when they were
already planned

## Why It's Good For The Game

will prevent issues when this flag is used!

## Changelog

no player facing changes. also this is my own bug so pls dont give me
GBP XD

Co-authored-by: Capybara <Capybara@CapybaraMailingServices.com>
2022-12-08 20:15:41 +01:00
Tastyfish
0995527ab7 [NO GBP] Fixes some dog behaviors (#71759)
## About The Pull Request

I somehow missed a `simple_animal` reference in the dog's play dead
command. I also forgot there was a play dead command, heh.

Makes attack command's harass behavior less garbage by making the
`required_distance` 1 as it always should have been. A higher than 1
required_distance would have made it never possible for the behavior to
complete correctly, possibly being the cause of [this
runtime](https://runtimes.moth.fans/runtime/%EF%BF%BD%15Lisa%20wants%20to%20perform%20action%20type%20%2Fdatum%2Fai_behavior%2Fharass%20which%20requires%20movement%2C%20but%20has%20no%20current%20movement%20target!%20(code%2Fdatums%2Fai%2F_ai_controller.dm%3A162)_______%2Fproc%2F_stack_trace)
but I'm not sure since the runtime should have appeared before the
refactor as well.
* There's also a random silent failure where jps just gives up creating
a path even if the dog and target are in a clear straight line with each
other and cancels the action. As far as I could tell, it's an issue with
the JPS ai movement, or the JPS movement datum since the target still
exists and all. Dunno.
## Why It's Good For The Game

bugs
## Changelog
🆑
fix: The dog's attack command is somewhat more reliable.
/🆑
2022-12-08 08:08:57 +01:00
Rhials
c6e5127ea9 Ethereals who are turned into statues via something_terrible() cannot be crystallized (#71762)
<!-- 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

Forces ghostize() to be called after you die to a DNA meltdown-induced
petrification. This makes sure that ethereals do not crystalize, and
makes doubly sure that people who are statued are forced out of the body
and not trapped.

Also makes a very very minor change to the log message, for
clarification on the victim's fate.

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game

Closes #71580.

<!-- 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. -->

## 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. -->

🆑 Rhials
fix: Ethereals cannot crystal revive back from genetic meltdown
petrification.
/🆑

<!-- 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. -->
2022-12-08 08:07:42 +01:00
Fikou
6d1dc8dd26 fixes linters (#71814) 2022-12-07 22:27:45 +00:00
itseasytosee
478a969cbb Delimbs Stamina (#71663)
## About The Pull Request
This changes stamina damage from a damage that affects limbs (like brute
and burn) to a damage that affects the body at whole (such as tox or
oxy)
Stamina being run like brute or burn is rooted all the way back to when
it was halloss, and used exclusively for holodeck items and
hallucinations.
Most coders probably didn't even know that stamina worked like this, and
most implimentatiosn of stmaina mechanics use a generic "adjust stamina"
or a "apply_damage(type = stamina zone - body_zone_chest)" to avoid the
issues that come when stamina is evenly distributed among limbs (and
some limbs only count as a fraction to stamina damage total)

The only thing that is truly lost here, is disabling limbs (arms and
legs) with stamina damage, by aiming specifically at them with disablers
(batons always apply their stamina damage to the chest, no matter where
they hit) our through smashing limbs on tables.
The idea of making an opponent drop a weapon out of pain is fun, but
stamina doesn't support it, or make sense in context.

A depth filled limb-based pain system that has interactions with
painkillers and replaces damage based move slowdown would be fun, and
maybe something that could be implemented in the future.
## Why It's Good For The Game
The biggest draw here, is that it will make stamina easier to maintain 
## Changelog
🆑 itseasytosee
code: Stamina no longer affects individual limbs. 
/🆑

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-12-08 10:20:57 +13:00
Rhials
bf1b85ca78 Adds nest sustenance status effect, halves xenomorph nest escape time (#71691)
## About The Pull Request

Hosts who are buckled to a xenomorph nests will gestate their xenomorph
egg 20% faster (4 minutes in a nest, 5 without) as long as they are
trapped. To keep them alive in the nest, they will recieve temperature
stabilization and be healed until they are pulled (or break) free.

To ensure the gift of life is not wasted by captured humans, they can
now break free from resin nests after one minute of struggling, down
from two.
## Why It's Good For The Game

There's currently no incentive to not kill facehugger infectees
immediately after they're impregnated. Dead bodies can't run away,
gestate at the same speed, and hives are often breached from space
making them deadly to live captures regardless. This serves the dual
purpose of incentivizing live captures, while also making them a
feasible option, without removing the ability to infect dead bodies and
seriously impacting the xenomorph playstyle.

Cutting the escape timer in half (while also ensuring that captured
humans are alive enough to break out) means there will be many more
opportunities for live captures to escape. Additionally, the xeno
players will have to spare manpower to actively defend hosts and if they
wish to ensure they do not escape. Hopefully it should give more reason
to play defensively and set up a proper hive, instead of the
hypermobile-hyperviolent playstyle you sometimes encounter.
## Changelog
🆑 Rhials
balance: Xenomorph nests will now sustain humans that are buckled to
them, and gestate xenomorph eggs slightly faster.
balance: Xenomorph nests evolved healing capabilities in exchange for
some of their grip. They now take only one minute to escape from.
/🆑
2022-12-06 21:19:37 -08:00
Fikou
518080a31d gives hop basic cargo access + desc change (#71742)
## About The Pull Request
the hop now gets basic cargo access
his desc now no longer mentions overlooking cargo

## Why It's Good For The Game
second thing is an oversight
hop is a job that should overlook the personnel of the station, he is
the head of personnel after all. he has basic access to every other
department. if jobs like the hos and paramedic get access to cargo, i
think its fair that the hop would get it too, he handles civilian
matters, just like a paramedic can handle medical matters or the hos can
handle security matters across all the station

## Changelog
🆑
qol: hop has basic cargo access
/🆑
2022-12-06 10:59:53 -08:00
Zephyr
5c18606d9b [FUCK] Linters work again, V3 (#71748)
Get linters working again, I was never using the correct directory
expansion syntax for checks, so why some of them still worked anyway is
beyond me.

Fixes https://github.com/tgstation/tgstation/issues/71695
2022-12-06 01:05:52 -08:00
kawoppi
dba21aa8bd fixes cleaning animation disappearing if you clean something that's already being cleaned (#71673)
## About The Pull Request
1: Start cleaning something.
2: Clean the same thing again before the original cleaning manages to
finish. This removes the cleaning bubbles animation early, before the
actual cleaning is done. You can also spam the start cleaning message
with this.

The cleaning overlay is removed after the do_after that makes you wait
the time it takes to clean. When you're already waiting and you clean it
a second time the do_after returns instantly and removes the overlay
while the first one is still waiting.

But it seems that we don't even need to bother with any of that code if
we're already cleaning the thing, so we can just return early and
prevent the issue.
## Why It's Good For The Game
Fixes a graphical bug.
## Changelog
🆑
fix: trying to clean something while it's already being cleaned will no
longer prematurely remove the cleaning animation
/🆑
2022-12-06 00:39:01 -08:00
John Willard
f00ca62d08 Adds a modular computer subsystem to shift modPCs away from radios (#71732)
## About The Pull Request

Adds the modular computer subsystem which is meant to replace mod PC's
reliance on networks and radios, specifically the network subsystem, the
ntnet interface, and /datum/ntnet. This PR removes station_root ntnets
entirely, but I tried to keep it small.

This PR also removes a ton of unused vars and defines, such as NTNet
channels that were unused (peer2peer and systemcontrol), atmos networks
(as they were removed a while ago) and NTNet var on relays (its stated
purpose is so admins can see it through varedits, but that's useless now
that it's a subsystem)

I also removed ``setting_disabled`` as a thing the RD can do, it turned
off ALL ntnet systems. However, this was when there were 4 different
ones, now that there's only 2 I thought it was redundant and he could
just click 2 buttons to close them.

## Why It's Good For The Game

``/datum/ntnet``, ``/datum/component/ntnet_interface``, and
``/datum/controller/subsystem/networks`` are all old-code messes that
depend on eachother and is hard for people to understand what exactly it
adds to the game. 90% of its features is allowing the Wirecarp app to
see all the ruins that spawned in-game, which I don't think is something
that we even WANT (why does the RD need to know that oldstation spawned?
Why should they know this anyway??)

This hopefully starts to simplify networks/ntnet to make it easier to
remove in the future, because surely there are better alternatives than
**this**

## Changelog

🆑
refactor: Modular computers NTnet and applications run on its own
subsystem, please report any new bugs you may find.
/🆑
2022-12-06 00:29:31 -08:00
Tastyfish
ebc0227176 Makes dog a basic mob [MDB IGNORE] (#70799)
About The Pull Request

    Made a basic version of the pet base called /mob/living/basic/pet. It's significantly more stripped down from the old simple_animal one, because its half collar stuff and...

    Made the collar slot a component that you could theoretically remove from a pet to disable the behavior, or add to any other living mob as long as you set up the icon states for the collar (or not, the visuals are optional).
        The corgi's collar strippable slot is now generally the pet collar slot, and in theory could be used for other pet stripping screens.

    I also gutted the extra access card code from /mob/living/basic/pet as it's only being used by corgis. Having a physical ID is now just inherent to corgis, as they're the only ones that could equip it anyway.

    Ported the make_babies() function from simple_animals to a new subtree and associated behavior, called /datum/ai_planning_subtree/make_babies that uses blackboards to know the animal-specific info.
        Note that it's marginally improved, as the female walks to the male first instead of bluespace reproduction.

    Tweaked and improved the dog AI to work as a basic mob, including making /datum/idle_behavior/idle_dog fully functional.

    Made a /datum/ai_planning_subtree/random_speech/dog that pulls the dynamic speech and emotes to support dog fashion.

I've tested base collars across multiple pet types.

For dogs, I've tested general behavior, fetching, reproduction, dog fashion, and deadchat_plays, covering all the oddities I'm aware of.

image
Why It's Good For The Game

Very big mob converted to a basic mob.
Changelog

cl
fix: Lisa no longer uses bluespace when interacting with Ian.
refactor: A large portion of dog code was re-written; please report any strange bugs.
/cl
2022-12-06 09:13:13 +13:00
tralezab
e9cff525dc Refactors Pirates into Pirate Gangs, Adds the Psyker-gang as new pirates (#71650)
## About The Pull Request

### Refactor
Pirate gangs are now datumized for extendability, custom dialogue, etc.

### Psyker Gang 🧠 
Psyker-gang Members are pirates who are... yes, Psykers. They're on a
gore-binge and need some money for more hits of gore!

- Gore autoinjectors, filled with dirty kronkaine. Don't overdose,
you'll go splat.
- Psykerboost armor, reactive armor that refreshes psychic abilities.
Given to the leader.

- [x] @Fikou is making the map :D

## Why It's Good For The Game

God I fucking love variety also now we can add as many different pirates
as we so desire

<details>
  <summary>Spoiler warning</summary>
  

![image](https://user-images.githubusercontent.com/40974010/205342701-9cba63ef-a22c-4f07-9b48-8793c4a2b5af.png)
  
</details>

## Changelog
🆑 Tralezab code, Fikou's map, PigeonVerde and Halcyon for sprites!
add: Psyker-gangers are new pirates
refactor: refactored pirate code so we can add more in the future
/🆑

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2022-12-05 02:18:23 +00:00
MrMelbert
329921639a Rewrites how action buttons icons are generated, makes them layer nicer. Allows observers to see a mob's action buttons. (#71339)
## About The Pull Request

- Rewrites how action button icons are generated.
- Prior, generated an action button icon was fairly simplistic and
didn't allow for many changes. Someone recently added the option for
overlays to be generated over action buttons, but the framework was very
weak.
- Now, action button icon generation is split across multiple procs,
like atom icon updates.
      - The background of action buttons are underlays
- The actual icon of the action button is the icon and icon state of the
action button movable
- The rim / border of the button is an overlay, layered overtop the
button.

- Allows observers to see what action buttons a mob has. They even
update in real time! And no, the observers cannot click on them.

## Why It's Good For The Game

- Runechat text of action buttons are no longer hidden behind the actual
icon. This was very ugly with cooldown actions, as the cooldown text was
hidden behind a lot of spell icons.
- Cuts down on a lot of icon duplication. 
- Gives much finer control over action button icons
- Saves a bit of processing from generating full action button icons
when not necessary. Not implemented in many places, but is in some.


![image](https://user-images.githubusercontent.com/51863163/202816617-342e87e6-2cc6-488e-9af2-4b2053dc3dc6.png)


![image](https://user-images.githubusercontent.com/51863163/202816604-da8d4821-0e2b-45af-b289-7442367f98ce.png)

## Changelog

🆑 Melbert
add: Observers can now see what action buttons an observed mob has. No,
you can't click them. And no it doesn't show EVERY action.
refactor: Refactored how action button icons are generated. Some actions
will now use a colored border when active instead of just turning green.
Cooldown text will also appear on the top layer of actions too. If you
see any funky lookin' icons (namely their borders), let me know.
refactor: Bluespace Golem's teleport action is now a cooldown action.
fix: Construct actions go to the middle of the screen like expected. 
/🆑
2022-12-03 19:01:08 -08:00
MrMelbert
de54bff26f Fixes food holder screentip runtime (#71671)
## About The Pull Request

`held_item` isn't guaranteed to exist, and `valid_ingredient` does no
null-checking, as it doesn't expect it to be passed a null item

Fixes it with a null check in the screentip

## Why It's Good For The Game

More minor runtimes

## Changelog

🆑 Melbert
fix: Fixed a runtime from hovering over stuff like bread with an empty
hand.
/🆑
2022-12-03 17:09:04 -08:00
MrMelbert
661eaa985e Important heretic spell rebalancing (#71620)
## About The Pull Request

Nerfs
- Furious steel cooldown: 30s -> 60 seconds (when ascended: 10s -> 30s)
- Furious steel: Now affected by antimagic
- Cleave cooldown: 40s -> 45s
- Cleave range: 9 tiles -> 4 tiles
- Cleave wound: Now has natural clotting, changing the amount of blood
loss from inf -> ~40%
- Blood siphon range: 9 tiles -> 6 tiles
- Void Pull: Now affected by antimagic
- Void Phase: Now affected by antimagic

Buffs
- Void Blast cooldown: 60s -> 30s

Other
- Rust Formation now has a "distinct" icon
- Void Blast now has a "distinct" icon

## Why It's Good For The Game

A lot of these spells were extremely oppressive, and made it pretty much
a joke to get away with anything.
They were no-brainer choices, and as a result no one really pathed into
anything else but these.

- Furious Steel: 
- Now that blade heretics have "realignment" in their repertoire, which
offers them another counter for being hit by disablers or batons, this
spell doesn't need to have such an insanely high uptime. The spell
should be used for initiating and obtaining the lead in a combat,
instead of having nigh-invulnerability for most periods.
- Additionally, antimagic protection was kind of missing, which was
partially an oversight of it not being a `/magic` projectile.
 
- Cleave:
- Cleave was by far the most absurd ability available bar none. This
spell was guaranteed death in 30 seconds if the target had no way to
stop the bloodflow immediately. AND it could be casted from across the
screen. This brings cleave's range into midrange between you and the
target, giving a lot more opportunity to be aware for the victim.
- Critical bleed wounds had a negative clotting rate, meaning that prior
you would bleed to 0% from cleave if you didn't stop it. Not very fun,
so with the default clotting rate it now stops at 60% blood flow -
enough to be lethal if untreated, but doesn't completely tap you out
   - **Alternatives**: 
      - Keep the no clotting, make it a pure melee / touch spell. 
      - Reduce the cooldown, make it a projectile
- Change it to be like a cool scythe attack that comes out of the caster
and does a sweep

- Blood Siphon: 
- This was primarily done to slot in better with Cleave's range
decrease, encouraging more close range combat between the two. Getting
point clicked from across the screen isn't fun.

- Void Pull and Phase:
- Largely done for consistency. These are spells which cause damage, so
anti-magic should stop the damage from the spells.

- Void Blast
- I have no idea why I made the cooldown so high on this, 1 minute made
it almost worthless.

TLDR: Instakill click spells from across the screen bad, invulnerability
bad

## Changelog

🆑 Melbert
balance: Heretic: Furious Steel's cooldown has been doubled (30s ->
60s), and abides by antimagic
balance: Heretic: Cleave's cooldown has increased by 5s, range has been
decreased to 4 tiles, and wound applied now has natural clotting
balance: Heretic: Blood Siphon's range has been decreased to 6 tiles
balance: Heretic: Void Pull and Phase abide by antimagic
balance: Heretic: Halved Void Blast's cooldown to 30s
qol: Heretic: Void Blast and Rust Formation now have distinct icons 
/🆑
2022-12-03 17:08:44 -08:00
MrMelbert
6811c4d208 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
2022-12-03 17:08:19 -08:00
Rhials
8b373aef89 Fixes unconciousness (typo) (#71648)
## About The Pull Request

Made a typo while doing a github search, but it still gave me results.
This removes the "unconcious" typo from a few different places,
including code comments, tgui interfaces, descriptions, etc.
## Why It's Good For The Game

Good spellign
## Changelog
🆑
spellcheck: removes a bunch of instances of "unconcious" from the code.
/🆑
2022-12-02 18:35:25 -08:00
tralezab
4fd404aa8f Moves speaking verbs to tongues + subtypes, moves wing sprites to wing subtypes, bodypart damage examines to limbs, fixes sign language not working without a tongue (#71635)
## About The Pull Request

### Moves speaking verbs to tongues + subtypes
Moves species say mod onto tongues, creates any tongues that didn't
exist for the say mods they needed to hold.

### moves wing sprites to wing subtypes
Moves the logic of selecting a wing sprite onto subtypes of /functional
on the wing type. Now, angel wings bring the holy trait with them, it
isn't a special check on flight potions, and we can expand it. (EMPs
taking down robowings? Fires burning megamoth wings? Cool stuff)

### bodypart damage examines to limbs
Instead of checking what your species says, it tallies up your limbs and
provides the damage description that matches most of your limbs. So for
example, If you're mostly human with one augmented part, you take
bruises and cuts. If you're mostly robot augmented with one human part,
you get robot damage descriptions. Yay!

### fixes sign language working without a tongue
Having no tongue would garble your speech, and this had no interaction
with sign language, so you'd be speaking in broken gurgling with
perfectly working hands. Now, the sign language component prevents any
kind of garbling, since it brings its own garbling for full/missing arms


![image](https://user-images.githubusercontent.com/40974010/204932511-42c8e020-a2d7-4fc1-befc-7cd46a2f2932.png)

## Why It's Good For The Game

Moving things off of species inherent makes the game expose way more
interesting mechanics to play with. It sucks that you can't steal a
jellyperson's chirping, since they can get a normal tongue and they'll
go back to... chirping! LAME! THAT IS LAME!

Ditto goes for wings, and for limbs, well, having someone be entirely
augmented but get descriptions of bleeding because they didn't spawn as
an android is kinda lame.

<details>
  <summary>Spoiler warning</summary>
  

![image](https://user-images.githubusercontent.com/40974010/204922627-333de052-a02b-4786-8ff9-f6e739443f2c.png)
  
</details>



## Changelog
🆑
refactor: Refactored wings, tongues, and some examine messages,
hopefully with minimal effect on actual changes. A few more species have
tongues, angel wings bring the holy trait with them, and wings have new
descriptions. should be the biggest parts of it
/🆑
2022-12-03 00:34:54 +01:00
Mothblocks
2e6b06353d Atmospheric machineries now interact with each other directly, rather than going through a radio layer -- saves about 0.4s of init time (#71232)
More than a decade ago, these were all coded to use a weird dynamic list
radio broadcasting system to communicate with each other. If there was
any depth that they were planning on creating with this, it didn't come
to fruition, and it instead just wasted a lot of init time.

Removing `post_signal` saves 198.41ms, fired 588 times from lots of
different machinery. Its self cost was 81.44ms.

`broadcast_status`, also removed, was taking 218ms.

I'm pretty sure I'm done with this, but it's hard to tell given the
nature of old radio signal code.

A small self cost of 34.9ms was added in the form of /obj/Initialize
checking id_tag to set in a global list. This could be optimized away by
tagging everything that does use id_tag, but it's a loooot and I think
this is just a useful mechanism to have. Not worth it IMO.

The "Check Atmos Chamber Devices" verb has been removed. Everything it
did *should* be replicated by runtimes on Initialize, which is both more
obvious to mappers and shows up in unit tests since we spawn every ruin.
2022-12-02 01:28:24 -08:00
John Willard
2425531eb2 Removes tablets (not PDAs) entirely. (#71507)
## About The Pull Request

**Comes with an UpdatePaths!**

Removes the tablet subtype, PDAs now replaces them entirely.

Nukie and Silicon tablets are now subtypes of the PDA instead, while
contractor ones were removed entirely as they didn't do anything and
were unused (though it wouldn't be hard to re-add).

Nukie PDAs are now the only type of PDA that uses modular_tablets.dmi,
which is just larger icons of modular_pda. Each application requires an
icon state in both of these, for 2 different sizes, which makes it
annoying to make new applications, especially if it can also run on
computers/laptops.

### Icons

Because Silicon tablets are now a subtype of PDA, they use PDA icons
instead of tablet ones. Luckily for us, they already exist in code.

![image](https://user-images.githubusercontent.com/53777086/203876575-56eb1593-774c-47c6-8e7d-491a7805f28c.png)

AI's don't use a tablet icon though, so they aren't affected.

## Why It's Good For The Game

There's very little difference between tablets and PDAs, PDAs overshadow
them in every single way, so at this point I don't see why we should
have both of these, and if you compare the two in usefulness and actual
in-game use by players, it's a no-brainer than the item all players get
roundstart and comes with a messenger should be the one we go with.

Also as said in the about section, when making an app you would need to
make icon states for the program running for all hardware it can run on,
which is Computer, Laptop, PDA, and Tablet.

Laptop is just a smaller computer icon
PDA is just a smaller tablet icon

However, you can't simply shrink the size of the icon, instead you have
to completely resprite the same app icon FOUR TIMES for it to not
bluescreen on all these different devices.

<details>
<summary>
Here's examples of it
</summary>
Computer (NOTE: *They share the same icon file as regular computers*)
<img
src="https://user-images.githubusercontent.com/53777086/203876801-486a8054-489a-4983-bdad-a2599b4dc379.png"/>
Laptop
<img
src="https://user-images.githubusercontent.com/53777086/203876333-58e5d135-f4c6-4a02-8948-1df771e294a4.png"/>
Tablet
<img
src="https://user-images.githubusercontent.com/53777086/203876352-816c7fb1-c681-40b9-99e0-052f49632c7f.png"/>
PDA
<img
src="https://user-images.githubusercontent.com/53777086/203876358-1cf7253d-3c6a-456a-8133-ebf7f0351637.png"/>
</details>

If we wish to help in simplifying this, we should remove tablet icons
entirely, which means 1 less icon to worry about. To do this, we'd need
to resprite nukie PDAs, however I am very much not a spriter and never
tried GAGS, so I'll leave it to someone else to do.

## Changelog

🆑
del: Tablets are now removed, PDAs are now the base 'tablet'. Silicon
and nukie tablets are now PDAs.
/🆑
2022-12-02 00:15:14 -08:00
RikuTheKiller
5da871e271 Made geysers easier to find (#71608)
## About The Pull Request

This PR raises the geyser spawn rate from 0.1 to 0.15 and increases the
weight of wittel geysers to 10 which is the same as every other special
geyser. (previously 6)

Wittel shouldn't be any less difficult to find than other geysers as all
of the special geysers are equally powerful. Hyper-plasmium oxide can be
used to make extremely powerful explosives that can go beyond maxcaps
and hollow water + protozine can create an infinite amount of strange
reagent.

I've subjected myself to going out of my way to visit lavaland/icemoon
several times to get wittel and each time finding a single geyser takes
about 5 minutes of my time. This, coupled with the fact you really don't
have a lot of time to be wasting on looking for the geysers results in
an unfun experience.

I understand geysers are sort of a necessary evil, however, they
shouldn't be THIS difficult to find. Out of the 10 or so geysers I've
found, only 1 has had wittel in it and it was next to a whelp portal
which ended both me and my miner escort.

I've also hunted the entirety of lavaland with no luck. (Horrendous
experience.)

I've dedicated entire rounds to this, by the way.
## Why It's Good For The Game

If you go out of your way to waste ages hunting for geysers, there
should at least be a reward. That is, in the same round, not after 3 or
more rounds as even megafauna gear isn't gatekept THAT hard.

You shouldn't have to waste this much of a miner's time (who is also
going for megafauna gear) to get something that is arguably less
powerful than what they get for less effort. Megafauna gear is also
available every round and is attained via predictable methods.

This PR will also likely make geyser scanning a more comparable method
of point gain to just mining.

Oh and not to mention that penthrite is available almost roundstart via
luxpens. (It's a wittel chem.)
## Changelog
🆑
balance: Geysers now spawn more often, especially wittel geysers.
/🆑
2022-12-01 20:59:07 -08:00
Andrew
cf1107fbec Fermentation and barrel refactoring (#71475)
## About The Pull Request

The barrel was essentially a grinder that also added a lot of wine on
top of other reagents. Now it converts only nutriment and vitamin into
the wine.

Also the Auto-Distilling Composition plant gene didn't make fruit wine
and gave only half of the distilled drink volume.

- Now the fermentation is consistent and it happens in one place - the
`ferment()` proc of the plant. Both gene and barrel use it.
- Added some sounds and ballon alerts.
- Increased the barrel volume to 600, as other stationary reagent
containers have even more.


https://user-images.githubusercontent.com/3625094/203582992-8d31cff6-15bd-416f-b2fb-c7a0f6cfbcb4.mp4

## Why It's Good For The Game

Barrels are cute, we should use them more.

## Changelog

🆑
qol: barrel works with the plant bag now
balance: barrel volume increased to 600 units
fix: barrel now properly converts nutriments into wine
fix: added 4% nutriments to sugar cane, to allow rum creation
refactor: barrel logic and fermentation refactoring
/🆑
2022-12-01 19:38:26 -08:00
tralezab
a592e157be Legitimizes BOMBGERs. Add grenades to burgers and assistants will still eat it. (#71552)
## About The Pull Request

Here's the changes to custom food:
- Can now accept grenades
- If you add something larger than the custom food, the custom food
becomes that size
- Biting down on food with grenades in them triggers the grenades

## Why It's Good For The Game

We're trying so hard to remove getting around this whole bombger thing
but wait it's actually based as hell. Why don't we just cut the fat of
what doesn't work (getting around sanity checks with deep frying) and
legitimize what does?

## Changelog
🆑
add: You can add grenades to food
add: Grenades explode when accidentally bitten into
balance: Adding something large to custom food will make it, too, also
large
/🆑
2022-12-01 20:03:39 +00:00
tattle
bcbe219973 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>
2022-12-01 05:26:25 +00:00
MrMelbert
e339ae76cb 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.


![image](https://user-images.githubusercontent.com/51863163/204105022-ee66889b-f843-4dc2-b0dc-5f1eb5ba19c3.png)

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. 
/🆑
2022-11-30 16:23:23 -08:00
GoldenAlpharex
5db421281c 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!

![image](https://user-images.githubusercontent.com/58045821/204106823-95b77a6b-b9c1-4494-b2f8-3b586c42428c.png)


## 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.
/🆑
2022-11-30 14:02:54 -08:00
MrMelbert
cffce8de2c Status effect process has SHOULD NOT OVERRIDE (#71594)
## About The Pull Request

Adds `SHOULD_NOT_OVERRIDE` to status effect process.

Nothing currently does it but another PR attempted it which is
incorrect.

## Why It's Good For The Game

Status effect subtypes shouldn't extend or override process. They can be
`qdel`ed at the end, and not everything will handle it properly.

Adding processed effects should be done in `tick`, with a set
`tick_interval`.

## Changelog
 
Not necessary
2022-11-29 15:11:13 -08:00
CapybaraExtravagante
e511ef53e8 Fixes monkeys being unable to retaliate to people who attacked them (#71598)
## About The Pull Request

Monkeys were not attacking creatures they hated, as the check for who to
attack was mangled in messed with in #70722

## Why It's Good For The Game

Monkey castle doctrine is important!

## Changelog

🆑 Capybara holly
fix: After rigorous training excercises monkeys now understand how to
defend themselves from vile greytiders again
/🆑

Co-authored-by: Capybara <Capybara@CapybaraMailingServices.com>
2022-11-29 14:32:15 -08:00
CapybaraExtravagante
1b8bd51ec2 Allows datum AI to create new plans while a plan is still executing (#71596)
## About The Pull Request

In some cases, you need to perform behaviors that can occur ontop of
different behaviors. E.g. "I need to continiously spit out foam while
moving to a point". If these behaviors are put separetely, it is
difficult to determine that the behavior for spitting out foam needs to
end. And in the current code, aslong as it has not ended, the plan will
never end. So once the AI reaches the point it would stand still at the
end and spit out foam unendingly.

To work around this I've made it so behaviors can be set to allow
planning while they run if they have the
AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION flag. If all remaining behaviors
on a controller have this flag, a new plan is made. If this plan is the
exact same as the plan that was currently being performed, nothing
happens. But if the plan is different, the current one is ended and the
new plan is executed. This means situations like this are handled
gracefully now. This will be required for basic bots.

## Why It's Good For The Game

More graceful handling of "continous" behaviors! :)

## Changelog

🆑 Capybara Holly
refactor: Allows datum AI to create new plans while a plan is still
executing
/🆑

Co-authored-by: Capybara <Capybara@CapybaraMailingServices.com>
2022-11-29 14:31:53 -08:00
CapybaraExtravagante
8f6528c9ec Allows datum AI to switch to different movement datums (#71595)
## About The Pull Request

Allows basic mobs / datum AI to switch between movement datums. Useful
if you need JPS in some moments, but simple obstacle avoidance in others

This isn't used anywhere yet, but is a building block for basic bots.

## Why It's Good For The Game

Allows us to pick the right tool for the job!

## Changelog

🆑 Capybara Holly
refactor: Datum AI can now switch to different movement datums in their
behavior.
/🆑

Co-authored-by: Capybara <Capybara@CapybaraMailingServices.com>
2022-11-29 14:30:30 -08:00
lessthanthree
07c03375ce Fixes layering of tram rails (#71382)
## About The Pull Request
-Fixes the layering of the tram rail so that it doesn't end up below the
reinforced glass.
-Replaces the last remaining vault platform turfs with proper tram
turfs.
-Removes an un-needed layer define for turf transparency.


![image](https://user-images.githubusercontent.com/83487515/204107725-c422180b-661c-4981-8a0b-edbdb7ced9fe.png)

## Why It's Good For The Game
The tram rail becoming disconnected when it travels over glass, in
reality that'd probably derail it. So let's fix it!
## Changelog
🆑 LT3
fix: Tram platform is now entirely built with tram tiles.
fix: All the parts of the tram are now on a correct layer/plane.
remove: Removed the openspace layer on the transparency plane.
/🆑
2022-11-29 20:52:59 +00:00
Fikou
35b5ac0c4e Psykers (#71566)
## About The Pull Request
Finishes #66471
At burden level nine (or through a deadly genetic breakdown), you now
turn into a psyker.
This splits your skull in half and transforms it into a weird fleshy
mass. You become blind, but your skull is perfectly suited for sending
out psychic waves. You get potent psy abilities.
First one is brainwave echolocation, inspired by Gehennites (but not as
laggy).
Secondly, you get the ability of Psychic Walls, which act similarly to
wizard ones, but last shorter, and cause projectiles to ricochet off
them.
Thirdly, you get a projectile boost ability, this temporarily lets you
fire guns twice as fast and gives them homing to the target you clicked.
Lastly, you get the ability of psychic projection. This terrifies the
victim, fucking their screen up and causing them to rapidfire any gun
they have in their general direction (they'll probably miss you)
With most of the abilities being based around guns, a burden level nine
chaplain now gets a new rite, Transmogrify. This lets them turn their
null rod into a 5-shot 18 damage .77 revolver. The revolver possesses a
weaker version of antimagic (protects against mind and unholy spells,
but not wizard/cult ones). It is reloaded by a prayer action (can also
only be performed by a max burdened person).
General Video: https://streamable.com/w3kkrk
Psychic Projection Video: https://streamable.com/4ibu7o

![image](https://user-images.githubusercontent.com/23585223/204150279-a6cf8e2f-c678-476e-b72c-6088cd8b684b.png)

## Why It's Good For The Game
Rewards the burdened chaplain with some pretty cool stuff for going
through hell like losing half his limbs, cause the current psychics dont
cut it as much as probably necessary, adds echolocation which can be
used for neat stuff in the future (bat organs for DNA infuser for
example).

## Changelog
🆑 Fikou, sprites from Halcyon, some old code from Basilman and
Armhulen.
refactor: Honorbound and Burdened mutations are brain traumas now.
add: Psykers. Become a psyker through the path of the burdened, or a
genetic breakdown.
add: Echolocation Component.
/🆑

Co-authored-by: tralezab <spamqetuo2@gmail.com>
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-11-29 20:13:28 +00:00
tralezab
83f475aa7e Adds the DNA Infuser, a genetics machine you feed corpses to infuse their DNA with yours! What could go wrong?! (#71351)
## About The Pull Request  
Adds the "DNA Infuser" to genetics. One person enters, a corpse is added
to the machine, and you can activate the machine to "infuse" the subject
with the DNA. This converts one random organ from a set into the
mob-related organ.

### Rat mutation 🐀

Rats can be fed in to turn you into a rat-creature-thing!
```diff
+See better in the dark
+Can pretty much eat anything! Toxic foods, gross foods, whatever works!
+Smaller, and can climb tables
?Randomly squeaks occasionally?
-Take twice as much damage
-Vulnerable to flashes
-Gets hungry MUCH quicker.
-Yes, eat anything, but only ENJOY dairy.
```
Having every rat organ at once allows you to ventcrawl nude!

### Carp mutation 🐟 

Carp work for a mutation as well!
```diff
+Strong jaws, that drop teeth over time!
+Space immunity! Breathe in space, unbothered by pressure or cold!
+Smaller, and can climb tables
-Can't block your jaws with a mask
-Can't take the heat, overheats easily
-Can only breathe in environments that have minimal or no oxygen
-Nomadic. If you don't enter a new zlevel for awhile, you'll start feeling anxious.
```
Having every carp organ at once allows you to swim through space!

### Fly mutation 🪰 

Any corpses without organs to turn into turn into fly organs! Fly organs
now have a bonus for collecting them all, transforming you into a fly,
when you pass the threshold. But even without those, fly organs are
technically... organs. They most of the time work like normal ones.

## Todo 🐦 

- [x] Finish the infuser code
- [x] Create a little booklet that shows what kind of shit you can turn
into, hopefully i can autogenerate this based off of organ set subtypes
list
- [x] sprite/slap a color on rat mutant organs
- [x] Maybe make a *few* more organ sets

## Why It's Good For The Game 🐑 

Oops, I forgor to fill this out! My hackmd is here.

https://hackmd.io/@bazelart/ByFkhuUIi

## Changelog 🧬 

🆑 Tralezab code, Azlan + Azarak (Az gaaang) for the organs
add: Added the DNA infuser to genetics! Person goes in, corpse goes in,
and they combine!
add: Try not to turn yourself into a fly, OK?
/🆑

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-11-29 02:05:44 +00:00
texan-down-under
0a8f8849bd Quantum keycards change color depending on the linked pad's location (#71518)
## About The Pull Request
aka: quantum pads with gags

Quantum keycards now light up depending on the linked pads
location/status, and the pads location will be visible on examine.
The card will be white if no pad is linked, the color of the department
the linked pad is in, or dark gray as a fallback.
## Why It's Good For The Game
Quantum keycards are impossible to organize, especially if you have
multiple on you. Differentiating your secret way into CE's office or
space could be vital. This helps to differentiate them and keep you
'safe'.
## Changelog
🆑
qol: quantum keycards light up with the department theyre in (or grey as
a fallback)
qol: quantum keycards are custom renamable w/ pen, to help keep em
organized
/🆑

Co-authored-by: etherware-novice <candy@notarealaddr.com>
Co-authored-by: Candycaneannihalator <candycane@thisisnotarealaddr.com>
2022-11-28 07:23:32 +01:00
Kyle Spier-Swenson
b7387ec345 Revert "Unit tests radio, saymode, and language prefix keys" (#71474)
Reverts tgstation/tgstation#71328 (@Zonespace27 )

Departmental shorthand (.h/:h) is a convenience alias that should apply
to all jobs and all race types and all classifications. ITS SUPPOSE TO
FUCKING CONFLICT.

if you are ai and not in a holopad, it should go to binary.

if you are ai and in a holopad, it should go to the holopad.

if you are borg it should go to binary

if you are xeno it should go to alien

Removing it from the AI over a stupid need to made universal broad
reaching rules that can be declared upon the code was stupid.

This entire unittest is needlessly overboard and over generic putting
"rules" that are not backed up by logic on the codebase in a way that
hinders making good UX, not help.

The datumized saymode system not being able to handle this complexity
when the old hardcoded system could is a problem with the datumized
saymode system and not the fucking :h shortcut for holopad.


🆑 Common fucking sense
fix: The changes to Mafia and holopad say prefixes was reverted.
spellcheck: Mafia changeling say prefix has no longer been changed to
.1, and has been returned to .j
spellcheck: AI Holopad say has no longer been changed to .2, and has
been returned to .h
/🆑
2022-11-27 22:17:01 -08:00
Jacquerel
c185dffda0 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
/🆑
2022-11-27 20:14:07 -08:00
Jacquerel
e285b75fc5 Lambs can now be killed with swords (#71500)
Previously hitting a sheep with any item which was not "a razor" or
"some grass" would have no effect whatsoever.
Now hitting a sheep with a sword, axe, toolbox, or implement of your
choice will hurt it.
If you do this a sufficient number of times (more than you might expect)
the sheep will expire.
2022-11-26 04:27:55 -06:00