Commit Graph
15536 Commits
Author SHA1 Message Date
thegrb93andGitHub 97a1d7a81f Make butt sprites overridable for downstream (#84100)
## About The Pull Request
Allows changing the spritesheet for downstreams
## Why It's Good For The Game
Small code cleanup and lets downstreams do more butts for other species.
2024-06-19 15:46:23 -06:00
FlufflesTheDogandGitHub e4ef6ee680 Fix bodytype bitflag check for prosthetic repair (#84124)
## About The Pull Request
bodytype is a bitflag, and can have multiple biotypes selected.
Shouldn't use equality comparisons for bitflags.
## Changelog
🆑
fix: limbs that are both robotic and something else can be repaired
properly
/🆑
2024-06-19 15:40:37 -06:00
Ben10OmintrixandGitHub 9b0649c752 mothroaches in the wardrobe (#83695)
## About The Pull Request
there is a very small chance vendrobes will have mothroaches inside.
this will become apparent as the clothes you buy will come out slightly
damaged and eaten. hitting the vendrobe with a weapon (or throwing the
weapon at it) will cause the mothroaches to come out and scatter
everywhere. mothroaches will now also seek out clothes to eat them

## Why It's Good For The Game
gives more character and depth to mothroach AI

## Changelog
🆑
add: vendrobes may have mothroaches inside them
add: mothroaches will now seek out clothes to eat them
/🆑
2024-06-19 15:38:29 -06:00
SyncIt21andGitHub 8cca0333d7 Improvements for can_perform_action() (#84006)
## About The Pull Request
The proc `can_perform_action()` now
- Accepts atoms & not just movables without runtiming. Fixes #83985
- It now uses `CanReach()` instead of `Adjacent()`. Allows you to
  - Check if the target object is placed on top & not hidden
  - Is the object inside another storage atom & such
- Properly checks for recursive locs. Before we were passing the direct
atom & not the type to `recursive_loc_check()` causing this proc to
always return true & giving us false positives. Now this proc has been
adjusted to accept both type paths & real atoms
- Removes `can_perform_turf_action()` since its now obsolete

## Changelog
🆑
fix: no more runtimes when dragging turfs onto other stuff
code: most actions now properly check for recursive locs & better
adjacency
/🆑
2024-06-19 11:47:51 -07:00
jimmylandGitHub ba8259da53 fixes gasp not making sound (#84108)
## About The Pull Request

fixes #84013

## Why It's Good For The Game

fixes #84013

## Changelog
🆑
fix: gasping makes sound now
/🆑
2024-06-19 17:08:28 +02:00
JacquerelandGitHub e8157f4dfc Items in your hands can catch fire (#83867)
## About The Pull Request

Recently we allowed items held in your hands to catch fire if you catch
fire.
This makes sense but the code had a few oversights, then we reverted it.

This PR reintroduces the feature, but with a few refinements.
The basic feature is simple: If you are on fire then items you are
holding will also catch fire, in the same vein as items you are wearing
on your head or hands.

There are also a few caveats we forgot about the first time we added
this:

- If your gloves cannot catch fire, your held items will not catch fire
(because your hands aren't on fire).
- If you are extinguished, your held items will also be extinguished.
- Stopping, Dropping, and Rolling on top of any items will also
extinguish those items.

As part of this change, after an argument about whether or not this is
an oversight in coding-general, I've made the proc `get_equipped_items`
take a bitflag instead of a series of booleans as an argument and added
a new one for "include held items", so that we need no longer argue
about whether holding something counts as "equipping" it (in all other
parts of the game than this proc, it does). This is what gives the PR
most of its code footprint, don't be scared.

## Why It's Good For The Game

Items you are holding in your hands _should_ catch fire if everything
else on your person is on fire, and taking an item off of your body to
put it in your hands shouldn't protect it from fire, because those
things don't make intuitive sense.
If we want an item to be able to catch fire when worn, then it should do
so.

This might expose some issues where we were improperly setting the
flammability flags on items, but any weapon which will burn in your
hands now would also have burned if you were wearing it on your belt or
back, so making those issues more visible should be a bonus (we'll also
stop them from burning on your back or belt).

If you see someone holding a piece of paper that you really don't want
them to read you can now set them on fire to stop them from reading it,
whereas previously they would deftly hold the very flammable object out
of reach of their flaming body.

## Changelog

🆑
balance: Items held in your hands can catch fire.
balance: Items you are holding won't catch fire if your hands cannot
catch fire.
balance: When you stop being on fire so will items you are holding.
balance: If you roll around on your burning items they will stop being
on fire.
/🆑
2024-06-19 12:15:27 +12:00
Time-GreenandGitHub 4fd0e28f42 Refactors body markings into bodypart overlays (#83744)
## About The Pull Request
Refactors body markings (lizard and moths) into the bodypart overlays
system
I've also renamed the icon states for lizard bodymarkings (downstreams
with lots of lizard body markings might have problems with this)

## Why It's Good For The Game
Gives us better controle over /human appearances. I didn't add any means
of actually changing them on the person (aside from genetics. how would
that even work? with a waterproof marker?), but makes it easy for
when/if I do. Also unloads mutant_bodyparts more, moving is yet closer
to full species dedatumization

## Changelog
🆑
refactor: Lizard and moth markings now use the bodypart overlay system
/🆑
2024-06-18 14:07:47 +02:00
JacquerelandGitHub 225b64077c Gorillas have big fingers (#83999)
## About The Pull Request

Gives gorillas the big fingers trait

## Why It's Good For The Game

because gorillas have big fingers
this doesnt actually have a lot of effects because Gorillas already
can't use guns for unrelated reasons, but as gorillas have hands it
might come up some day as we expand the number of items which interact
with this trait

currently this stops gorillas from using stun batons, and laser pointers
gorillas dont need to use stun batons because they can just beat you to
death with their fists

## Changelog

🆑
balance: Gorillas have big fingers, which mostly just prevents them from
using laser pointers and stun batons
/🆑
2024-06-18 09:40:41 +02:00
carlarctgandGitHub 0119b95d2d Genetics Rebalance: Negative mutations add stability, standarized instability cost for mutations (#83439)
## About The Pull Request

PR has been reworked a bunch! Changes in bold. Some of the **HATE** is
now outdated.

**Negative mutations now allow you to have more positive mutations, via
reducing your instability!**

**All mutations have been overall standardized via defines on their
instability values. Many mediocre positive mutations have had their cost
reduced significantly!**

```
/// Negatives that are virtually harmless and mostly just funny (language)
// Set to 0 because munchkinning via miscommunication = bad
#define NEGATIVE_STABILITY_MINI 0
/// Negatives that are slightly annoying (unused)
#define NEGATIVE_STABILITY_MINOR -20
/// Negatives that present an uncommon or weak, consistent hindrance to gameplay (cough, paranoia)
#define NEGATIVE_STABILITY_MODERATE -30
/// Negatives that present a major consistent hindrance to gameplay (deaf, mute, acid flesh)
#define NEGATIVE_STABILITY_MAJOR -40

/// Positives that provide basically no benefit (glowy)
#define POSITIVE_INSTABILITY_MINI 5
/// Positives that are niche in application or useful in rare circumstances (parlor tricks, geladikinesis, autotomy)
#define POSITIVE_INSTABILITY_MINOR 10
/// Positives that provide a new ability that's roughly par with station equipment (insulated, cryokinesis)
#define POSITIVE_INSTABILITY_MODERATE 25
/// Positives that are unique, very powerful, and noticeably change combat/gameplay (hulk, tk)
#define POSITIVE_INSTABILITY_MAJOR 35

```

Added a new height mutation: Acromegaly! It's the opposite of Dwarfism
and makes you uncannily tall. It also makes you hit your head 8% or 4%
(with synch) of the time you pass through airlocks. Wear a helmet!

**Injectors and activators' duration is now dependent on the
in/stability (absolute value) of the mutations to be injected! With a
minimum of 5-10-15 seconds for each type of injector. Also changed up a
bit how part upgrade cooldowns work, by making each tier reduce
cooldowns by 25-15-10% for each injector type.**

## Why It's Good For The Game


**> Negative mutations now allow you to have more positive mutations,
via reducing your instability!**

Genetics has been long in dire need of a rework. This isn't really one,
but it IS intended to increase genetics depth a bit and stave off its
stagnation, making it slightly more interesting than 'free shit', by
making it so **you can now gain more positive mutations, but you need to
figure out what you're going to take as a downgrade in turn.**

Genetic powers are heavily themed around comic book superheroes, and you
know what those had a lot? Debilitating drawbacks to their powers. Let's
replicate that.

**I intend to make a sister PR for this that adds more interesting
positive mutations (for the first time in decades) to genetics, so
there's an actual element of pick-and-choose involved**

> Added a new height mutation: Acromegaly! It's the opposite of Dwarfism
and makes you uncannily tall. It also makes you hit your head 8% or 4%
(with synch) of the time you pass through airlocks. Wear a helmet!

We have Super Tall. Let's add it to the game somewhere! With a fun
downside, of course.

**Gigantism is now a recipe mutation, mix Acromegaly with Strength to
get it.**

> **Injectors and activators' duration is now dependent on the
in/stability (absolute value) of the mutations to be injected! With a
minimum of 5-10-15 seconds for each type of injector. Also changed up a
bit how part upgrade cooldowns work, by making each tier reduce
cooldowns by 25-15-10% for each injector type.**

**Made no sense that a Glowy injector cost the same as a Hulk injector.
Just annoying. The cooldown is based on the absolute value, so a -30
instability injector would take ~30 seconds. This mostly so that
geneticists can't make a million modded syringe gun supersyringes**
2024-06-18 04:39:04 +00:00
fa21f8edd4 Slime transparency fix [NO GBP] (#84031)
## About The Pull Request

I forgot to add transparency for the non-metallic slime subtypes. This
PR fixes that.


![image](https://github.com/tgstation/tgstation/assets/3625094/82a3c04a-ad41-4446-9665-dab9d38b40fb)

## Why It's Good For The Game

A mistake was made.

## Changelog

🆑
fix: Non-metallic slime types are semi-transparent
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2024-06-17 15:06:03 +01:00
SyncIt21andGitHub c60556217e [NO GBP] Admin ctrl+shift works only on the clicked ghost (#84005)
## About The Pull Request
- Fixes #83995

## Changelog
🆑
fix: ctrl+shift clicking on a ghost will only quick spawn that clicked
target and not you
/🆑
2024-06-16 22:23:42 -06:00
GoblinBackwardsandGitHub 4c8351b32f Fixes mulebots being able to run over players leaning on walls (#84020)
## About The Pull Request
Mulebot was running over anyone who was on the same tile as it when it
moved without checking if they were actually lying down, which meant
they could run over people who were leaning against a wall.
## Why It's Good For The Game
Fixes #84015 
## Changelog
🆑
fix: Fixed mulebots being able to run over people who are leaning
against a wall.
/🆑
2024-06-16 22:16:34 -06:00
jimmylandGitHub a836be707d fixes two harddels (#84019)
## About The Pull Request

build mode and space dragons should stop harddeling on destroy

## Why It's Good For The Game

harddelete = bad

## Changelog
🆑
fix: build mode and space dragons dont harddel on destroy
/🆑
2024-06-16 22:14:51 -06:00
6351073f56 Pegging Update (#83991)
## About The Pull Request
We be addin' peg legs an' peg arms, makin' 'em craftable fer all ye
scurvy dogs. Ye can attach 'em yerselves, no need fer a surgeon's touch,
usin' the mighty ligament hook code. There be tons o' balance tweaks an'
special properties fer these limbs. Yarrrrr!
## Why It's Good For The Game
Arrr, this be givin' ye a ghetto alternative to headin' to medbay when
yer limbs be blown off. Plus, the potential fer pirate RP be fantastic!
Who doesn’t want peg limbs? If ye think otherwise, ye be lyin’ ,and
ye'll be walkin’ the plank! Yarrrrr!
## Changelog
🆑 Hacks-The-Doors (coding) & Septicchlorine (spriting)
add: craftable peg limbs (2 planks) which are attachable without surgery
bal: peg limbs take 1.5x burn and 1.3x brute, and do reduced damage
bal: peg limbs have chunky fingers (like insuls, but per limb)
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: septic <105231896+septoBismol@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
2024-06-17 00:11:44 +01:00
grungussussandGitHub 9502f89146 Misha - the bear (#83949)
## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/96586172/beeee166-f838-4bce-ab52-667ed566e25c)
Adds Misha the bear to icebox HoS office, a snow bear with the same
health stats as Sgt. Araneus.
## Why It's Good For The Game
With how easy it is to break into the HoS office on icebox (you don't
need any space protection) it never made sense to keep a slow pet in the
office. The bear is fast and deals 15 damage, while also resistant to
cold.
I think it adds more depth that the HoS tamed a bear on icebox and
trained it. Also the bear fits the map.
## Changelog
🆑 grungussuss
add: Added Misha the bear to the HoS office on icebox.
/🆑
2024-06-16 02:18:13 +01:00
AfevisandGitHub 4e08eb644c Fixes LateSpawn runtime when someone latejoins as the only command member (#83974)
the mob's key was already transferred from this mob to the new one
before this. guess we've been lucky to never see this runtime on live.

```
[2024-06-14 05:40:50.631] RUNTIME: runtime error: Called is_banned_from without specifying a ckey.
 - proc name:  stack trace (/proc/_stack_trace)
 -   source file: code/__HELPERS/stack_trace.dm,4
 -   usr: ShizCalev (/mob/dead/new_player)
 -   src: null
 -   usr.loc: null
 -   call stack:
 -  stack trace("Called is_banned_from without ...", "code/modules/admin/sql_ban_sys...", 19)
 - is banned from(null, /list (/list))
 - ShizCalev (/mob/dead/new_player): AttemptLateSpawn("Chief Medical Officer")
 - /datum/latejoin_menu (/datum/latejoin_menu): ui act("select_job", /list (/list), /datum/tgui (/datum/tgui), /datum/ui_state/new_player_sta... (/datum/ui_state/new_player_state))
 - /datum/tgui (/datum/tgui): on act message("select_job", /list (/list), /datum/ui_state/new_player_sta... (/datum/ui_state/new_player_state))
 - /datum/callback/verb_callback (/datum/callback/verb_callback): InvokeAsync()
 - /datum/callback/verb_callback (/datum/callback/verb_callback): InvokeAsync()
 - /datum/tgui (/datum/tgui): on message("act/select_job", /list (/list), /list (/list))
 - /datum/tgui_window (/datum/tgui_window): on message("act/select_job", /list (/list), /list (/list))
 - tgui Topic(/list (/list))
 - ShizCalev (/client): Topic("type=act%2Fselect_job&payload=...", /list (/list), null, null)
 - 
```
2024-06-14 23:41:03 -06:00
JacquerelandGitHub c9986346e4 Ian and Runtime can lick your wounds (#83746)
## About The Pull Request

As I turned this into a trait the other day I thought I might as well go
all the way.

This PR allows basic mobs to perform wound handling steps if not in
combat mode.
This chiefly means that:
- cats and dogs can lick your wounds clean (they have the "wound licker"
trait)
- gorillas can set a dislocated limb (they have hands)
- dextrous holoparasites can pluck the eyeballs out of someone's crushed
head (they also have hands)

Wolves have the wound licker trait but can't lick your wounds because
for some reason they can't drag humans and I couldn't be bothered to
figure out why that was set up that way. Also it would look stupid
because it would still do the attack forecast animation.

In order to facilitate being able to set bones, gorillas need to be able
to aggressively grab you.
While I was there I set it to allow them to strangle people to death
because... well they're gorillas. It's probably slower than they could
punch you to death, so I don't see the harm.

## Why It's Good For The Game

If felinids can lick your wounds to heal them why can't an ordinary cat?
An ordinary cat won't _often_ do this and I have not placed any such
behaviour into their AI tree, but a sapient Ian or Runtime might provide
extremely minor assistance in medbay.

Also Cargorilla setting your dislocated limbs seems very funny and like
something it should be allowed to do.

## Changelog

🆑
add: Cats and Dogs can lick slashing wounds clean.
add: Basic Mobs with hands can relocate dislocated bones, and pluck
eyeballs out of pulped skulls.
balance: Gorillas can strangle people.
/🆑
2024-06-14 18:27:15 -07:00
e87045b377 Tweaks some instances of get_safe_turf so things like the nuclear disk doesn't accidentally teleport to the Icebox Syndicate Base (#83012)
Yes, I know preventing the nuke disk teleporting to the icebox syndicate
base (or possibly the wendigo arena) is removing soul. Please don't kill
me :(

## About The Pull Request

Adds some missing variables to instances of get_safe_turf() so they will
only teleport to the given z-level.
Replaces some instances of get_safe_turf() with
get_safe_random_station_turf().

## Why It's Good For The Game

First, the differences between get_safe_turf() and
get_safe_random_station_turf():

### get_safe_turf()
- gets a random safe turf on a z-level (usually any of the staiton
z-levels), not accounting for the /area/
- should be used if you don't care if it spawns on the station or not,
or if you need to specifically teleport to a z-level
- not very expensive performance wise

###  get_safe_random_station_turf()
- gets a random safe turf that will always be a station area, ignoring
z-level.
- should be used if you NEED the turf to be on a station's area
- slightly more expensive performance wise than get_safe_turf, but still
very cheap

Some code was using get_safe_turf() when it should've been using
get_safe_random_station_turf(), and some code that should be using
get_safe_turf() were incorrectly using the zlevels arg instead of zlevel
arg (Yes, there is a difference), or didn't include it at all.

All the changes were made to my best judgement. If you're curious about
a change, please ask and I will explain why I did it.

## Changelog

🆑 BurgerBB
fix: Tweaks some instances of get_safe_turf so things like the nuclear
disk doesn't accidentally teleport to the Icebox Syndicate Base
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2024-06-14 21:57:33 +01:00
MrMelbertandGitHub f4dc0ebc81 Cleans up some sound emote related stuff (#83894)
## About The Pull Request

1. We don't have a reason to make a separate emote for livings and
humans, `get_sound` can filter humans out for us
2. All sounds abide by physique, rather than only half the sounds
abiding by physique and the other half abiding by gender. If this is
problematic let me know.
3. Removes a copied `/datum/emote/living/carbon/human/glasses/run_emote`
4. Gasp now makes the same sound as gaspshock
5. I let any mob with hands clap, this is notably xenos but anyone who
gets adminbussed hands will also be able to. I think.

## Changelog

🆑 Melbert
fix: Humans can't cough on menthol again
fix: Moth and lizard emotes decide what sound to play based on body
type, not gender.
sound: *gasp now makes a sound, it's the same as *gaspshock.
sound: Xenos (or anything with hands) can clap
/🆑
2024-06-13 23:48:02 -06:00
MrMelbertandGitHub 6fea9d999d Small playsound audit, particularly involving portal sounds (#83893)
## About The Pull Request

I was looking at sounds (as you do) and I noticed this


![image](https://github.com/tgstation/tgstation/assets/51863163/25b298ca-31ac-48a0-9f86-c65a8becd532)

These sounds don't exist

We have `portal_open_1`, not `portal_open1`. 
This wasn't caught on compile because they used `""` and not `''`.

So I went through and audited a bunch of playsound uses that don't use
`''`. Only one error, fortunately

Likewise there was a ton of places running `get_sfx` pointlessly
(because `playsound` does it for you) so I clened that up.

However while auditing the portal stuff I noticed a few oddities, so I
cleaned it up a bit.

Also also I added the portal sounds to the wormholes event and gave it a
free ™️ optimization because it was an in-world loop

## Changelog

🆑 Melbert
sound: Portals made by portal guns now make sounds as expected
sound: Wormholes from the wormhole event now make sounds when formed
/🆑
2024-06-13 23:47:37 -06:00
AndrewandGitHub 832cecdbb1 New Slime Sprites (#83891) 2024-06-14 00:01:38 -04:00
c433813503 Makes that one random frog in the freezing cold plasma facility more atmospherically resistant (#83928)
## About The Pull Request

Makes the random frog in the icemoon plasma facility more
atmospherically resistant so that it survives in its environment.

## Why It's Good For The Game

Please stop failing my PRs by dying in the cold, Peter.

## Changelog
🆑
fix: Peter Jr. is capable of surviving in the environment they spawn in.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2024-06-13 20:38:45 +00:00
SyncIt21andGitHub 47be0bffc2 Ctrl click refactor (#83784)
## About The Pull Request
Same idea as #82656 but for ctrl click & ctrl shift click cause why not

- Does your signal & `can_perform_action()` checks using
`interaction_flags_click` flags before delegating the event down to
`ctrl_click()` proc.
- The one new change now is that `ctrl_click()` proc is now blocking,
meaning returning `CLICK_ACTION_SUCCESS` or `CLICK_ACTION_BLOCKING` will
stop the object from getting grabbed/pulled. So remember to return these
values if you want to stop the grab action or return `NONE` if you want
to process the click but still want the object to get grabbed as well

## Changelog
🆑
refactor: Ctrl click & Ctrl shift click has been refactored. Please
report bugs on GitHub
/🆑
2024-06-13 13:29:45 -07:00
b6369a47b4 Mouse drag & drop refactored attack chain (#83690)
## About The Pull Request
Mouse drag & drop has been refactored into its own attack chain. The
flowchart below summarizes it

![Flowchart](https://github.com/tgstation/tgstation/assets/110812394/d92047ff-d94c-44a6-9e87-354c3d525021)

Brief summary of each proc is as follows

**1. `atom/MouseDrop()`**
- It is now non overridable. No subtype should ever touch this proc
because it performs 2 basic checks
  
a) Measures the time between mouse down & mouse release. If its less
than `LENIENCY_TIME`(0.1 seconds) then the operation is not considered a
drag but a simple click

b) Measures the distance squared between the drag start & end point. If
its less than `LENIENCY_DISTANCE`(16 pixels screen space) then the drag
is considered too small and is discarded

- These 2 sanity checks for drag & drop are applied across all
operations without fail
  
**2. `atom/base_mouse_drop_handler()`**
- This is where atoms handle mouse drag & drop inside the world. Ideally
it is non overridable in most cases because it also performs 2 checks
- Is the dragged object & the drop target adjacent to the player?.
Screen elements always return true for this case
  
- Additional checks can be enforced by `can_perform_action()` done only
on the dragged object. It uses the combined flags of
`interaction_flags_mouse_drop` for both the dragged object & drop target
to determine if the operation is feasible.
     
We do this only on the dragged object because if both the dragged object
& drop target are adjacent to the player then `can_perform_action()`
will return the same results when done on either object so it makes no
difference.

Checks can be bypassed via the `IGNORE_MOUSE_DROP_CHECKS` which is used
by huds & screen elements or in case you want to implement your own
unique checks

**3. `atom/mouse_drop_dragged()`**
- Called on the object that is being dragged, drop target passed here as
well, subtypes do their stuff here
- `COMSIG_MOUSEDROP_ONTO` is sent afterwards. It does not require
subtypes to call their parent proc

**4. `atom/mouse_drop_receive()`**
- Called on the drop target that is receiving the dragged object,
subtypes do their stuff here
- `COMSIG_MOUSEDROPPED_ONTO` is sent afterwards. It does not require
subtypes to call their parent proc

## Why It's Good For The Game
Implements basic sanity checks across all drag & drop operations. Allows
us to reduce code like this


https://github.com/tgstation/tgstation/blob/8c8311e624271a6f6decba8cd643b33b9904534a/code/game/machinery/dna_scanner.dm#L144-L145

Into this

```
if(!iscarbon(target))
	return
```

I'm tired of seeing this code pattern `!Adjacent(user) ||
!user.Adjacent(target)` copy pasted all over the place. Let's just write
that at the atom level & be done with it

## Changelog
🆑
refactor: Mouse drag & drop attack chain has been refactored. Report any
bugs on GitHub
fix: You cannot close the cryo tube on yourself with Alt click like
before
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2024-06-13 13:28:41 -07:00
larentounandGitHub 580dac31cd Tail Regained checks for owner and species + deleted unused mood_event datums (#83741)
## About The Pull Request

Changed how tail regaining works.

* If it's your tail, an infinite debuff is replaced with a timed one
(new, on live there is no debuff)
* If it's not your tail but of same species, I guess it works, but we
are more sad (new)
* If it's not your tail AND of different species, we are horrified
(live)

Also a little clearing up of unused mood datums

## Why It's Good For The Game

Refactors good? Having your tail back good?
2024-06-13 13:11:18 -05:00
17d39f7af0 Upgrades bot voice lines (#83847)
<!-- 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! -->
As the title says. Upgrades the menu and allows you to create action
button shortcuts.


![image](https://github.com/tgstation/tgstation/assets/37270891/902d5e2b-de50-463e-a566-062ee24cc138)

![image](https://github.com/tgstation/tgstation/assets/37270891/0ce025e3-2f38-4013-8cde-00af12584086)

![image](https://github.com/tgstation/tgstation/assets/37270891/88ad4a30-dd65-4275-912c-b341264d77fd)

Additionally, bots can now select the radio channel if they have one.

Lowers the cooldown for voice lines.

## 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. -->
Being able to more conveniently send a voice line by pressing a button
without needing to open up an interface and navigate to the correct line
will make using these a lot easier in relevant situations.

Voice line cooldowns are lowered a bit just to make voice lines easier
to use in relevant situations.
I.e. 'Extinguishing fire' -> 5 seconds later -> 'Fire extinguished'

Abuse should generally just be punished by the admins, the cooldown
doesn't need to be too lengthy.

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

🆑
qol: Bots can now bind voice lines to an action slot. Lowers cooldown
for all bot voicelines to 5 seconds.
/🆑

<!-- 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: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2024-06-13 13:06:49 +00:00
5574262fb5 Changes up carbon EMP handling (#83857)
## About The Pull Request

The organ refactor 6 months ago changed up organs, making them be
actually inside bodyparts and the mob. This introduced the bug of all
emp effects being called twice on everything thanks to how /mob/living
handles it (Fixed in this PR), but also some new stuff:

Made bodyparts handle organ EMPs. This also means we can now have
support for bodyparts with EMP_PROTECT_CONTENTS protecting the organs
inside.
Made a new proc for bodyparts once they are successfully hit by an emp.
Makes it much easier to add overrides for the behaviour.
Fixed emps hitting bodyparts twice

## Why It's Good For The Game

It lays a groundwork for some interesting limb concepts, and makes organ
emps make a bit more sense.

Fixes a bug that laid unnoticed for 6 months.

## Changelog

🆑
fix: EMPs on carbons no longer happen twice
code: Moves organ emps under bodyparts, changes how bodyparts handle emp
effects
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2024-06-11 22:10:24 -07:00
Joshua KidderandGitHub df0e0811c2 Significantly increases stamina recovery on most effects that provide it (#83556)
## About The Pull Request

Currently, stamina healing is a niche side effect on many drugs, besides
a few effects (mostly heretic powers, an obscure side effect of some
drinks) that actually contribute to a significant shift in gameplay
style when you use them. In this PR I significantly increased the
stamina recovery on almost every drug and some effects that provide it.

Points of interest (not completely inclusive):
Syndicate stimulants heal 12 instead of 5 stamina damage. This will
bring you out of stam crit in two cycles, and let you heal out of the
slowdown from the stamina damage from a baton strike. The current rate
of 5 takes 5 seconds to heal out of stam crit, and the stamina reset
takes place before you heal out of stamina damage slowdown.
Bath salts heal stamina at the rate stimulants used to. Meth heals
stamina slightly slower.
Changeling adrenaline will instantly bring you out of stam crit if
you're in it; otherwise, it will heal 10 stamina damage.
Ephedrine heals 4 stamina per life, instead of 1.
Being so drunk that you black out and give up your body to ghost control
will make you heal stamina more quickly than an ascended rust heretic.
You will also likely be dying of liver damage.
## Why It's Good For The Game

At the levels they are set, most of these stamina healing effects have
almost no effect on gameplay whatsoever except in the case of tanking a
couple of extra disabler shots (only in the case of the high end drugs),
or being able to do stamina consuming tasks slightly longer (breaking
boulders, grinding with pestle and mortar, working out, ???).

Adjusting these numbers would make these drugs an actual factor in
combat situations that rely on stamina crit (stun batons, ebows, stamina
damaging poisons and diseases). Most of the drugs already have side
effects such as brain and organ damage, which in the current state
hugely outweighs any reason to use most of them besides a few that give
a movespeed buff or prevent baton knockdown (ephedrine, stimulants).

This only affects stamina healing. There has been no change to any other
interactions with things that knock down or cause any other kind of
stun.

These changes are in consideration of the fact that taking stamina
damage puts you in a cooldown before you can recover your stamina
naturally. Effects that cause steady stamina damage will bottom out your
stamina the way they do now, unless you use something to heal it.
## Changelog
🆑
balance: Stamina healing has been significantly increased for most
reagents and passive effects.
/🆑
2024-06-11 22:03:50 -07:00
MrMelbertandGitHub 4b8127a777 Incoming stamina damage while in stamcrit has diminishing returns applied (#83445)
## About The Pull Request

After being put in stamcrit, future incoming stamina damage has
"diminishing returns" applied*.

The formula looks like `ceil(sqrt(amount of stamina damage) / 2) - times
you have taken stamina damage in stamcrit`.

This means eventually stamina based damage will do less than zero
damage, and thus, not contribute to keeping stamcrit active.

Very, very low amounts of stamina damage (such as from chems) contribute
to DR 1/20th the amount.

*_Note, this is not real diminishing returns because making it real
diminishing returns would be pointless, you are capped to 120 stamina
damage so 99.99% of the time you take stam damage while in stam crit
you're already capped. This is just faking the effect._

In its current stat this means that a stun baton will stop being able to
keep someone in stamcrit after the 5th hit, and a stock disabler will
stop being able to keep someone in stamcrit after the 4th hit.

## Why It's Good For The Game

Mostly just an experiment. I don't imagine it will shake up much about
the baton situation in its current state.

There's also no grace period after getting UP - so like you can just be
stamcritted right after anyways. Maybe there should be one? Food for
thought.

And yes of course you can just space out your hits, you're not clever
for thinking about that

## Changelog

🆑 Melbert
balance: Taking stamina damage in stamcrit has diminishing returns
associated, meaning you cannot be infinitely stamcrit.
/🆑
2024-06-11 22:02:24 -07:00
MrMelbertandGitHub ff6b41aa07 Afterattack is dead, long live Afterattack (#83818)
## About The Pull Request

- Afterattack is a very simple proc now: All it does is this, and all
it's used for is for having a convenient place to put effects an item
does after a successful attack (IE, the attack was not blocked)


![image](https://github.com/tgstation/tgstation/assets/51863163/1e70f7be-0990-4827-a60a-0c9dd0e0ee49)

- An overwhelming majority of afterattack implementations have been
moved to `interact_with_atom` or the new `ranged_interact_with_atom`

I have manually tested many of the refactored procs but there was 200+
so it's kinda hard

## Why It's Good For The Game

Afterattack is one of the worst parts of the attack chain, as it
simultaneously serves as a way of doing random interactions NOT AT ALL
related to attacks (despite the name) while ALSO serving as the defacto
way to do a ranged interaction with an item

This means careless coders (most of them) may throw stuff in afterattack
without realizing how wide reaching it is, which causes bugs. By making
two well defined, separate procs for handing adjacent vs ranged
interactions, it becomes WAY WAY WAY more easy to develop for.

If you want to do something when you click on something else and you're
adjacent, use `interact_with_atom`
If you want to do something when you click on something else and you're
not adjacent, use 'ranged_interact_with_atom`

This does result in some instances of boilerplate as shown here:


![image](https://github.com/tgstation/tgstation/assets/51863163/a7e469dd-115e-4e5b-88e0-0c664619c878)

But I think it's acceptable, feel free to oppose if you don't I'm sure
we can think of another solution

~~Additionally it makes it easier to implement swing combat. That's a
bonus I guess~~

## Changelog

🆑 Melbert
refactor: Over 200 item interactions have been refactored to use a
newer, easier-to-use system. Report any oddities with using items on
other objects you may see (such as surgery, reagent containers like cups
and spray bottles, or construction devices), especially using something
at range (such as guns or chisels)
refactor: Item-On-Modsuit interactions have changed slightly. While on
combat mode, you will attempt to "use" the item on the suit instead of
inserting it into the suit's storage. This means being on combat mode
while the suit's panel is open will block you from inserting items
entirely via click (but other methods such as hotkey, clicking on the
storage boxes, and mousedrop will still work).
refactor: The detective's scanner will now be inserted into storage
items if clicked normally, and will scan the storage item if on combat
mode
/🆑
2024-06-11 21:58:09 -07:00
MrMelbertandGitHub d244c86ce6 Adds Character Loadout Tab to preferences (with just a small handful of items to start) (#83521)
## About The Pull Request

Adds a Character Loadout Tab to the preference menu

This tab lets you pick items to start the round with


![image](https://private-user-images.githubusercontent.com/51863163/336254447-c5f7eefa-c44c-418d-b48e-0409bb5bb982.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTgwNDAxMjMsIm5iZiI6MTcxODAzOTgyMywicGF0aCI6Ii81MTg2MzE2My8zMzYyNTQ0NDctYzVmN2VlZmEtYzQ0Yy00MThkLWI0OGUtMDQwOWJiNWJiOTgyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjEwVDE3MTcwM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWYxYWFmYjI2NDU0YjUyODg3NjBmM2VjZDg4YWQ1YjlhMThmODU3MDYyMzYwOGVmYTcxYmY2MDhjZWVmYjQ5ZTcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Y0_19Gisfp4yyUmLgW2atfKyneL7POWFRKNVgNWTbEs)

This also has some additional mechanics, such as being able to recolor
colorable items, rename certain items (such as plushies), set item skins
(such as the pride pin)


![image](https://github.com/tgstation/tgstation/assets/51863163/8a085d6c-a294-4538-95d2-ada902ab69b4)

## Why It's Good For The Game

This has been headcoder sanctioned for some time, just no one did it. So
here we are.

Allows players to add some additional customization to their characters.
Keeps us from cluttering the quirks list with quirks that do nothing but
grants items.

## Changelog

🆑 Melbert
add: Character Loadouts
del: Pride Pin quirk (it's in the Loadout menu now)
/🆑
2024-06-11 17:50:12 -07:00
GoatandGitHub 0f646e64e4 Gets rid of BDM's islava check (#83828)
## About The Pull Request
Removes `islava(newloc)` from BDM's move atom.

## Why It's Good For The Game
Megafauna have lava immunity and so won't take any damage from pathing
over lava. BDM would get stuck on his lava tile spawn due to this as
well.
fix #83615 

## Changelog
🆑 Goat
fix: blood drunk miner can now path over lava
/🆑
2024-06-10 23:37:05 -04:00
orangesandGitHub 9d06ad8103 Revert "Changeling Rebalance: Kill It With Fire, feat. Armblade Rework" (#83842)
Closes #83841
Closes #83843
2024-06-11 10:28:18 +12:00
f6281d4184 Changeling Rebalance: Kill It With Fire, feat. Armblade Rework (#83616)
## About The Pull Request


https://github.com/tgstation/tgstation/assets/4081722/684da396-fb28-4022-9f46-0fc4feb34b7a

Changelings now do not like fire, as is tradition.
If they are on fire, they no longer generate chemicals until they put
the fire out.
If they are on fire, they no longer can use any changeling powers until
they put the fire out.
All changeling equippable items like armblades, shields, armor,
spacesuits, etc. are now flammable and super-duper vulnerable to flames.
The Armblade now costs 30 chemicals to equip, and has a DNA cost of 3,
compared to the previous 20 chemicals and 2 DNA cost.
The Armblade now shatters after enough uses in exactly the same way as
the Shield; extract genomes with Absorb to maximize your Armblade's
efficiency. for its' chemical cost.
Fixes items you're holding not catching on fire alongside the rest of
you when you light on fire.
Fixes the Changeling Shield having one more hit than it was supposed to.

## Why It's Good For The Game

Changeling has been in a relatively incredibly rough state ever since
someone walked up to this predominatly stealth and intrigue based
antagonist and went "lets turn it into a carbon copy of an early 2000s
action game I just played".

![image - 2024-05-31T180546
466](https://github.com/tgstation/tgstation/assets/4081722/31f6b1bf-4c1d-4e38-be4a-d931c806a689)

Since then, just about every changeling has been a loud changeling. The
stats speak for themselves; Changelings are no longer a stealth antag
and they're defined by having an undroppable e-sword, armor, and HP
regen they can use mid-fight. They're just loud beatsticks now instead
of the scary stealth antagonist they were years ago.

I'm expecting a lot of pushback from the adrenaline addicts who dislike
the concept of stealth, to which I say: too bad.

Giving Changelings a weak point in the form of fire is not only
thematically appropriate for the original inspiration for Changeling,
but also provides the crew a way to actually scare off changelings back
into hiding, and encourages more usage of fire-causing weapons. This is
going to shake up changelings, and

Nerfing the hell out of the Armblade is going to encourage changelings
to take stealthier approaches to combat, and utilize the rest of their
power assortment that isn't just focused around being a gigantic
unstoppable beatstick.

## Changelog
🆑
balance: Changelings now do not like fire, as is tradition.
balance: If they are on fire, they no longer generate chemicals until
they put the fire out.
balance: If they are on fire, they no longer can use any changeling
powers until they put the fire out.
balance: All changeling equippable items like armblades, shields, armor,
spacesuits, etc. are now flammable and super-duper vulnerable to flames.
balance: The Armblade now costs 30 chemicals to equip, and has a DNA
cost of 3, compared to the previous 20 chemicals and 2 DNA cost.
add: The Armblade now shatters after enough uses in exactly the same way
as the Shield; extract genomes with Absorb to maximize your Armblade's
efficiency. for its' chemical cost.
fix: Fixes items you're holding not catching on fire alongside the rest
of you when you light on fire.
fix: Fixes the Changeling Shield having one more hit than it was
supposed to.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-06-09 15:00:53 +01:00
fde2eb3177 NEW BEPIS: Positronic sphere (#83688)
## About The Pull Request

Adds a new positronic brain variant to bepis tech
To save materials we took the corners off but now they can roll
It can roll around, knock items over and push other posibrains away
You can also kick it across the room and it's a lot cheaper because you
cut the corners off


https://github.com/tgstation/tgstation/assets/7501474/e4f913e8-cf2f-455a-b2eb-1654468df708

## Why It's Good For The Game
A chorus of whining posibrains is like heroine to the ears, now they can
aggresively shit around the robotics lab while whining for their DURAND
or cyborg shell, but the robo can also punt them into the disposal bin

## Changelog
🆑
add: Adds a positronic sphere to bepis tech and roboticist mail goodies.
It can now wreack havoc across the robotics lab while whining for a
DURAND body, but you can also punt it!
/🆑

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
2024-06-09 14:52:00 +01:00
AfevisandGitHub 295a1b28ab Fixes basic bots being targeted by turrets (#83777)
turret faction got removed by accident.

fixes #83747

🆑 ShizCalev
fix: Basic bots are now in the proper faction and will no longer be
targeted by turrets.
/🆑
2024-06-08 19:23:37 -04:00
DustanHacheandGitHub 82b3de721a lobstrosity's meat is RAW! (#83786)
## About The Pull Request

A simple fix to meat drops on lobstrosities, so that they aren't
pre-cooked.
## Why It's Good For The Game

Chefs have a limited access to crab meat unless miners are generous
enough to bring it back, but because it is cooked it can't be used in
crab rangoon or other recipes that call for the meat raw.. miners on the
other hand usually aren't pressured for food anyways, due to how
lavaland and icebox are. Furthermore, this is a sanity check of sorts:
Why are lobstrosities, especially Arctic lobstrosities, dropping cooked
meat? If they're able to survive in lava, it should probably come out
raw.

## Changelog
🆑
fix: Lobstrosities are no longer pre-cooked through bluespace
shenanigans.
/🆑
2024-06-08 19:22:04 -04:00
krookodilehunterandGitHub aa7c0666d3 Fixes some Raptor grammar (#83794)
## About The Pull Request

Corrects some grammar in the raptor code. (This time it should be
correct!)

## Why It's Good For The Game

Good grammar is best grammar

## Changelog

🆑
spellcheck: fixes bad raptor grammar
/🆑
2024-06-08 19:20:58 -04:00
_0StevenandGitHub 1e60447ada Fix crew records not accounting for quirks for latejoiners (#83740)
## About The Pull Request

So crew records weren't actually showing the right quirks for
latejoiners, and in at least one instance (heterochromatic eyes) even
the fingerprint was wrong. The latter seemed to be caused by a recent
fix pr making the quirk actually update your dna, for the sake of
paradox clones/changelings.
Looking into it, this seemed to be because we assign quirks to
latejoiners _after_ injecting them into the manifest:

https://github.com/tgstation/tgstation/blob/b7225d8486476fc4971ef32ed3c83fd778e7e46d/code/modules/mob/dead/new_player/new_player.dm#L218-L244
See line 219 and 244.

So we move manifest injection to be _after_ quirk assignment:
```dm
(line 242-246)
	if((job.job_flags & JOB_ASSIGN_QUIRKS) && humanc && CONFIG_GET(flag/roundstart_traits))
		SSquirks.AssignQuirks(humanc, humanc.client)

	if(humanc) // Quirks may change manifest datapoints, so inject only after assigning quirks
		GLOB.manifest.inject(humanc)
```
This fixes it.
## Why It's Good For The Game

Makes quirks actually show in the medical records for latejoiners.
Makes latejoiners with heterochromatic eyes not have the wrong
fingerprint in the security records.
_Probably_ fixes #83681.
Fixes #56469.
## Changelog
🆑
fix: Latejoiners with heterochromatic eyes no longer have the wrong
fingerprint in the security records.
fix: Latejoiners actually have their quirks visible in the medical
records.
/🆑
2024-06-07 22:07:55 -04:00
zxaberandGitHub fe629442af Fixes borg chargers constantly (abet slowly) draining borg cells. (#83743)
## About The Pull Request
- Adds in checks for the borg consumables resupplying to stop drawing
power once supplies are full. Specifically, the `respawn_consumables()`
proc will run attempting to stock everything it can, and will return
TRUE if any item required stocking.
## Why It's Good For The Game
Certain borg tools are still supplied by the borg chargers directly at a
power cost because material costs just don't make sense. These did not
have a check in place for if the various resources were full, meaning
every process cycle a bit of the borg's cell would be used attempting to
restock things. Since it's a percentage of the cell's current charge, a
filled bluespace cell could have a surprising power leak.

Now that borg chargers pull directly from the SMES units, borgs don't
recharge if the powernet is empty (regardless of local APC charge). But
borg consumables restocking carries on, which causes borgs to slowly
drain. So I have added some checks to stop the drain if nothing was
actually done.
## Changelog
🆑
fix: Fixed borg chargers (especially unpowered ones) constantly draining
a borg's cell.
/🆑
2024-06-07 15:30:39 -04:00
108880a1e6 Sneeze Rework: Projectile Combat Edition (#83361)
## About The Pull Request
Reworks sneezing. Instead of a range check that checks if you're facing
someone, it is now a skill check


https://github.com/tgstation/tgstation/assets/7501474/c11ffa16-9bd2-4ed1-8022-2094360657bc

All sneezes shoot projectiles, but depends on the virus if they're
infectious. Using the sneeze emote is the only method that doesn't shoot
a sneeze

## Why It's Good For The Game
I think the invisible infection mechanics are unfun. A lot of station
dangers challenge your knowledge and mechanical skill, while viruses are
gotten by being around people in a roleplay game. You can get a round
seriously ruined if you walk past someone with a sneezing virus and
don't immediately rush spaceillin or chemistry, which I don't think is
mechanically interesting.

Now if you get infected, it's a skill issue. Get good and dodge the
sneeze

Note that this is just one method of infection. I didn't touch coughing
and airborne viruses, which do constant area checks and infect everyone
around. I plan to, but not now. I'll probably make coughing do a cone or
something, and ignore the airborne viruses since they can't be modified
and are generally less broken

## Changelog
🆑
balance: You can now dodge sneezes
balance: Infectious simple diseases that use sneezes now infect with
sneezes and have lowered airborn transmission
balance: Damageless attacks, projectiles, hugs etc no longer drain
shields
/🆑

- [x] Make sneezes shoot to your cursor so you can either intentionally
sneeze on people or sneeze away from people if you react fast

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-06-07 13:40:05 -04:00
8925d03775 Fix borg emag modules stuck in inventory/screen after losing emag status (#83734)
## About The Pull Request
Checks that held modules exist in new module list after rebuilding
modules before putting them back in held modules.
Fixes emag modules stuck in inventory/screen after losing emag status
Also fixes jank fail to install piercing hypospray upgrade
## Why It's Good For The Game
Fixes buges
## Changelog
🆑
fix: Borg emag module jank when no longer emagged
fix: Borg piercing hypospray fail message
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2024-06-07 00:09:47 -07:00
Erol509andGitHub f6569b4a14 Little QOL change for AI cyborg display power (#83625)
## About The Pull Request

Slightly changes the formating from ugly 1e777 numbers to neat Jules
format.
## FROM 

![image](https://github.com/tgstation/tgstation/assets/81807356/755d4e2f-feed-4aa5-afed-e3f6f410910c)
## TO 

![image](https://github.com/tgstation/tgstation/assets/81807356/1e276476-afa7-46f2-a5a2-ef2a245a4fa2)

## Why It's Good For The Game

Much prettier stat panel and easier to read

## Changelog
🆑
qol: Cyborgs on AI statpanel now have jules energy format. 
/🆑
2024-06-06 10:17:34 +01:00
Pickle-CodingandGitHub 35216f127c Paradox clones copy the voice. (#83729)
## About The Pull Request
I have no idea if this works because I didn't setup TTS to test, but
it's simple. Makes paradox clones use the victim's voice.
## Why It's Good For The Game
Closes #81450

Because it doesn't make sense for a clone to have a different voice.
## Changelog
🆑
fix: Fixes paradox clones using a different voice from the owner.
/🆑
2024-06-05 23:54:29 -04:00
JacquerelandGitHub 4339c0ba49 Mutadone restores your original monkey status (#83720)
## About The Pull Request

Before PR:
Giving mutadone to a monkey turns it into a human
Giving mutadone to a human does nothing about its human status

After PR:
Giving mutadone to a monkey created from a monkey cube does nothing
about its monkey status
Giving mutadone to a monkey which was originally a human restores it to
being a human
Giving mutadone to a human who has never been a monkey does nothing
about its human status
Giving mutadone to a human who was originally a monkey returns it to
being a monkey

I couldn't think of any better way to achieve this than putting a trait
on the monkey typepath but if anyone has one, I'd love to hear it
(actually, maybe I could just typecheck the mob... but that seems
equally gross)

## Why It's Good For The Game

Treating "being a monkey" as a mutation makes sense from the perspective
of the DNA console but not from the perspective of certain other game
mechanics.
A chemical which "removes all mutations" should _intuitively_ restore
people to the state they were in at the start of the round (so monkeys
turned into humans should return to monkey, and vice versa) rather than
unilaterally enact rapid evolution upon monkeys.
At least, I don't _think_ it's meant to be a lore implication that all
test apes on the station are transformed humans...

This has a couple of side effects, both of which I think are desirable.

Firstly- some mechanics work on humans but not monkeys (see #83698), and
can be circumvented by spraying mutadone gas into a monkey pen. This
will now only be achievable by individually mutating each monkey, which
requires more effort for whatever your desired result is.
Secondly- this adds a downside to the common "cure-all" surgical method
of turning a monkey into a human and transplanting a brain into it. This
new body will still genetically remember being a monkey, adding some
element of risk to this otherwise undramatic means of curing basically
any ailment in the game.
Thirdly- Some people have admitted to using mutadoned monkeys to create
a large number of humans to kill for Heretic and Changeling progression,
which I also don't want them to do, so making this take longer is a
positive.

## Changelog

🆑
balance: Mutadone restores your originally monkey status, rather than
always turning monkeys into humans
/🆑
2024-06-06 11:13:38 +12:00
Ben10OmintrixandGitHub 55c41fb9ad basic honkbots (#81920)
## About The Pull Request
this refactors honkbots into basic mobs. its mostly a faithful 1:1
refactor but i couldnt keep my hands to myselves so i gave them some new
behaviors.

honkbots now love playing with clowns, they will go seek out for clowns
and celebrate around them. also, if the honkbot finds a banana peel or a
slippery item near it, it will actively drag people onto them

honkbots will now go out of theirway to mess with secbots and annoy them

## Why It's Good For The Game
refactors hinkbots into basic bots and also undoes some of the silliness
i did in the previous basic bot prs. i also added lazylist support to
remove_thing_from_list.

## Changelog
🆑
refactor: honkbots are now basic mobs, please report any bugs
add: honkbots will try to slip people on banana peels
/🆑
2024-06-05 10:17:34 -04:00
JacquerelandGitHub 167c55bed2 Sentient mobs can slowly subtract slime stacks by shaking (#83471)
## About The Pull Request

Closes #82746
PR #77569 replaced the clone damage inflicted by slimes with a lingering
damage over time effect which can be removed with water.
This is all well and good for humans who can spray themselves with fire
extinguishers, showers, or sinks... but most other mobs are not actually
capable of opearating any form of equipment which can make them wet.

This PR allows you to click on the debuff icon to shake the slime off
slowly over time (15 seconds to fully remove the debuff).
This is slower than the recovery time when wet.

Dogs, Cats, and by extension, Felinids are better at removing slime
because of their self-cleaning prowess (they're always licking weird
stuff off themselves). This is rarely helpful if you're not a Felinid,
because almost all cats and dogs have so little health that they will
hit the minimum health threshold and lose the debuff anyway by the time
they would be done.
In the very niche circumstance that a sentient wolf is attacked by a
slime they will appreciate this bonus.

## Why It's Good For The Game

This was a replacement for slimes inflicting clone damage (I am not sure
this even did anything for most simple mobs?) but essentially turned
slimes into an automatic death sentence for most forms of mob without
hands.
Technically the slime debuff cannot kill you and stops if you are under
10 HP, but this is small consolation for most of these mobs which cannot
heal themselves either.

You are still probably going to take between 30-60 damage during the 15
seconds of removing slime from your body.

## Changelog

🆑
balance: Corrosive slime left behind after a slime fails to eat you can
be scraped off with your hands, or shaken off in some other way, by
clicking on the debuff. This is slower and less effective than washing
it off using water.
/🆑
2024-06-05 14:47:02 +02:00
JacquerelandGitHub 7ea65a30fd Legioned Monkeys create different mobs (#83698)
## About The Pull Request


![image](https://github.com/tgstation/tgstation/assets/7483112/e25b360a-3cb2-4150-998c-c1293e917b68)

A Monkey infested by a Legion will spawn a "Rabble" instead of a
"Legion".
This is a somewhat slow 40 HP mob which tries to melee attack nearby
people.
Its only real claim to excitement is that it can and will ventcrawl if
it has nobody to attack.

## Why It's Good For The Game

Apparently people are creating large amounts of monkeys using monkey
cubes and then using the Legion's infestation mechanic to transform them
into large groups of much more dangerous mobs.
This is funny and creative but probably shouldn't be as effective as it
is.
Replacing Legion Monkeys with this mob will still create a mob of...
mobs, but they won't self-perpetuate in the same way.

## Changelog

🆑
add: A unique kind of mob is created when a Monkey is infested by a
Legion.
/🆑
2024-06-05 14:28:43 +02:00
DrAmazing343andGitHub 707b5ef744 Minor Spider Rebalance (#83554)
## About The Pull Request
Breacher and Viper player-controlled Spiders have swapped castes; Vipers
now come from Abnormal Eggs, while Breachers will now come from Enriched
Eggs. This means that Vipers may be seen more, while Breachers require
the Nest to acquire at least a single kill to wrap and create an
Enriched Egg from. Nurse Spiders also perform their heal action much
faster, at the cost of a bit less healing. It was very difficult to heal
others due to the long do_after and thus we saw very few Nurse Spiders.

Breacher Spiders also are now NOT immune to cold, and will die if they
try to space a room or go into space.

## Why It's Good For The Game
Breacher Spiders are in kind of a difficult spot, both in theming and
balance; their space resistance made them able to vent the station in
multiple places by breaking key walls, and they had no need to commit to
their sieges because they could escape into space at all times. It also
broke part of the dynamic of Spiders wanting to keep the atmosphere in
the station, and disincentivizing Breachers from venting the station
also makes them more coherently a part of the Nest because they won't
reduce the Nest's habitable area.

Viper Spiders were seen quite little instead of the other options in the
Enriched Egg; now, hopefully we'll see more. Likewise, the Breacher is
quite powerful for being an Abnormal Egg, so perhaps now we'll see more
focus on cocooning to unlock the powerful Breachers, or just overall
less of them, which will help even the odds.

Nurse Spiders were VERY underutilized despite their power— the do_after
for their healing just felt obnoxiously long, and especially in tense
situations, you'd have shuffle and Spiders yelling at one another
because two of them have to Space Hulk the hallway for a semi-extended
period of time. Now, Nurses will be able to heal and move on a bit
faster. I don't believe this will create too many issues, balance-wise,
as the time-to-kill on Spiders is still quite low for all but the
tankiest against lasers and even welders.
## Changelog
🆑 Jane
balance: Spider Breachers and Vipers have swapped castes. Breachers come
from Enriched Eggs while Vipers come from Abnormals! Breachers can no
longer survive in spaced rooms/temperatures. The Nurse wraps wounds
faster, but with less damage healed per wrap.
/🆑
2024-06-03 19:46:32 +01:00
5e9f1f6582 Cuffed people can sign (to a limited degree), signing tone emotes improvement (#83501)
## About The Pull Request

Currently, if you handcuff someone and they only have sign language
available to speak in (mute, no tongue, nearby people are deaf, you have
bronchitis(?)), they are rendered totally unable to communicate with
anything but emotes. This is stifling to trying to roleplay with nearby
people who want to keep you cuffed for whatever reason (security,
antagonists, weirdos who keep hugging you, etc).

So instead, I've made it so that if you use sign language while
handcuffed, you are still able to sign, but to a much more limited
degree (3 - 5 words per message).

If you're put in a straightjacket, you're still totally unable to use
sign language.

Additionally, I spruced up the messages that sign language uses to
signify tone (?, !) and added one for EXCLAIMED QUESTIONS?! I also made
the emotes work as emotes, rather than the small (easily missable)
messages in the chat box. These emotes will not fire if you sign with
tone while cuffed, to avoid you becoming a spam machine.
## Why It's Good For The Game

It lets cuffed sign language users communicate, which is usually a
pretty good thing when it comes to improving a scene for both them and
the people they're playing with.

It improves the descriptiveness of the inquisitive and exclamatory tone
messaging for sign language users, and also adds one for a combination
of the two tones.
## Changelog
🆑
qol: Sign language users can now sign in cuffs, but to a very limited
degree. They also have more descriptive emotes for questions,
exclamations, and a combination of the two.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2024-06-01 16:01:03 -06:00