Commit Graph

10702 Commits

Author SHA1 Message Date
Ghom 4e1eb514b5 Flash and flasher refactor/rework (simple mobs no longer immune edition) (#93076)
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
2025-10-15 13:49:11 +11:00
FalloutFalcon dc7ee9076a skips abstract station traits from admin menu (#93439)
## About The Pull Request
before
<img width="514" height="325" alt="image"
src="https://github.com/user-attachments/assets/e33b48b5-b1ad-4589-be35-fa192081ef78"
/>
fixed
<img width="527" height="515" alt="image"
src="https://github.com/user-attachments/assets/eed5f454-ee52-4b40-98a1-1279a346b894"
/>
## Why It's Good For The Game
By design most of these wont work, i think they cant even be run due to
the subsystem still doing sanity before starting
## Changelog
🆑
admin: abstract types dont show up in admin selection menu for station
traits
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-10-15 02:09:17 +00:00
Roxy f3848f1ef2 Renames flatten_list proc to assoc_to_values (#93453)
## About The Pull Request

`/proc/flatten_list()` -> `/proc/assoc_to_values()`, also changes the
code doc to mirror the language of `assoc_to_keys()`'s code doc

## Why It's Good For The Game

Having a proc called `assoc_to_keys` that takes an associative list and
returns a list of the keys, and also having a proc that takes an
associative list and returns a list of the values, and the latter not
being called `assoc_to_values` is very funny

## Changelog
🆑
code: renamed flatten_list proc to assoc_to_values
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-10-14 21:01:09 +00:00
SmArtKar 39de5b2b9d Items no longer randomly fall out of bags when changing their size (#93448)
## About The Pull Request
Not sure what this code was meant to achieve, but just checking total
weight is enough. Also added a safeguard to not drop the item if the
storage container was already overloaded just in case we're in a premade
box (this should never happen in-game otherwise)

Fixes #85658

## Changelog
🆑
fix: Items no longer randomly fall out of bags when changing their size
/🆑
2025-10-14 20:17:52 +02:00
ArchBTW ce433c9698 Adds Stunsword (#93270)
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
2025-10-14 16:39:47 +11:00
necromanceranne e4bc6faf80 Increases the experience earned by Hunter Boxing (#93435)
## About The Pull Request

Hunter boxing now uses the full quantity of damage inflicted by your
punches, rather than half. We also multiply our experience based on the
max health of the creature we're punching.

You do not get the exercised status effect for punching mobs with Hunter
Boxing.

You do not earn experience for punching dead things.

Hunter Boxing can now brutalized Crustaceans and Reptiles. This does not
include lizardpeople, as they're humanoid. No, you can't Hunter Boxing
the ashwalkers. Or your lizard QM boss.

## Why It's Good For The Game

It takes a really, really, really long time to level up using Hunter
Boxing. Normal athletics progression is largely kept in line by the fact
that you need to go sleep every time you do a workout session.

Hunter boxing, however, does not allow you to do that because you're
currently trying to punch xenofauna and demons to death while in the
middle of a hell planet and trying not to die.

The fact that fauna fight back when punched means leveling up with
hunter boxing has its own internal complications for preventing
athletics progression from being a walk in the part. Obviously, the
threat of death is its own punishment mechanic.

It's maybe a bit much of an ask miners to be weightlifting when they
should be mining after all.

## Changelog
🆑
balance: Hunter boxing now grants a reasonable amount of experience in
Athletics for punching the absolute shit out of the local wildlife.
balance: Includes crustaceans and reptiles to the list of mob types that
Hunter Boxing is allowed to mangle with their bare hands. You still
can't use Hunter Boxing on lizardpeople. Or crabpeople when they are
added in 2030.
/🆑
2025-10-14 00:12:07 +02:00
MrMelbert e85674d366 Unified CMO blues slightly, updates garment bags slightly, updates CMO locker contents slightly (#93321)
## About The Pull Request

### CMO palette update

Before - after

<img width="533" height="324" alt="image"
src="https://github.com/user-attachments/assets/c8a843a6-875d-4796-8c62-d24dd509147b"
/>

Logical follow up to #93313 and #91902

CMO now has a backpack which matches their teal palette rather than
re-using the medical doctor's blue backpack

CMO now starts with white sneakers instead of blue sneakers

### Garment bag update

Garment bags can hold backpacks, duffels, etc. 

However they CANNOT store backpacks which have ANY contents, so no risk
of storage nesting memes here.

### Misc

Removed the defib mount from the CMO's closet

Minor bugfix for being unable to swap storage positions of items which
were instantiated in a storage

## Why It's Good For The Game

- Much like the Paramedic, the CMO has had many cooks which have not
always been on the same page, so this makes their sprite a bit more
coherent.

- Heads with unique packs just tossed them in their closet which is
pretty spammy given we have four variants now. Putting them in the
garment back makes sense.

- Defib mount in CMO's locker hasn't been necessary for a while now that
all treatment centers spawn with defib mounts.

- Bugfix.

## Changelog

🆑 Melbert
image: CMO now has unique backpack/satchel/etc. sprites which matches
their teal palette.
image: CMO spawns with white sneakers instead of blue sneakers.
qol: Garment bags can hold empty backpacks/satchels/etc.
del: Defib mount removed from CMO's locker.
fix: Items stocked in a storage item by default can be
mouse-drag-swapped like any other item.
/🆑
2025-10-13 00:16:49 +02:00
Roxy 1379ae0bf0 Fix theoretical hard delete with redirect_attack_hand_from_turf component (#93412)
## About The Pull Request

- Nulls the ref to the interact callback in
`/datum/component/redirect_attack_hand_from_turf/Destroy()`
- Move parent signal registration from `Initialize()` to
`RegisterWithParent()`
- Add parent signal un-registration in `UnregisterFromParent()`

## Why It's Good For The Game

Moving signal registration was just a "while I'm here" type thing
because it should go in those procs, the ref null is because it's
causing flaky hard deletes [but only on a
downstream](https://github.com/effigy-se/effigy/actions/runs/18415754211/attempts/1)
for some reason, I have no idea why I haven't seen it here but it should
be nulled regardless so

## Changelog

N/A
2025-10-12 23:57:43 +02:00
Bloop b7402b77c2 Changes cat tail define from FEATURE_TAIL to FEATURE_TAIL_CAT so it matches the rest (#93426)
## About The Pull Request

Just a simple find + replace PR. All the other tail defines match their
text strings, but for some reason cat tails are just `FEATURE_TAIL`
which is inconsistent.

## Why It's Good For The Game

Consistency, + a lot of downstreams have a generic "tail" feature key
which is distinct from cat tails, so not taking up that define is
better.

## Changelog

Nothing any players would notice
2025-10-12 23:51:54 +02:00
MrMelbert d1cee0d780 Cuffsnapping doesn't spam runtimes in context (#93411)
## About The Pull Request

Asserts that target is a mob when target is definitely not always a mob

<img width="673" height="200" alt="image"
src="https://github.com/user-attachments/assets/f47c2464-0eb1-4bdf-b39f-a35ec53fff2b"
/>
2025-10-12 23:48:53 +02:00
SmArtKar dd47de7f3d [NO GBP] Fixes raptors going at mach speeds (#93418)
## About The Pull Request

I'm pretty sure I tacked on this bit ***after*** testing the PR and
forgot to check if it actually returned the value I needed. Oops.
Closes #93389

## Changelog
🆑
fix: Fixed raptors going at mach speeds
/🆑
2025-10-12 10:45:55 +02:00
Gaxeer 7468a0fbcf refactor detective scan categories, fix some categories not being shown at all, remove Syndicate scan category (#93138)
## About The Pull Request

Refactor detective scan categories.
Fix some categories not being shown at all.
Remove Syndicate scan category.

<details>
<summary>TGUI</summary>
<img width="514" height="545" alt="image"
src="https://github.com/user-attachments/assets/754ce576-545e-40e5-9fad-86f19d8d2606"
/>
</details>

<details>
<summary>Paper report</summary>
<img width="460" height="609" alt="image"
src="https://github.com/user-attachments/assets/e37e1965-e90a-4e0c-8109-f4384d6a4a79"
/>
</details>


## Why It's Good For The Game

DETSCAN_CATEGORY_SETTINGS, DETSCAN_CATEGORY_HOLY,
DETSCAN_CATEGORY_ILLEGAL and DETSCAN_CATEGORY_NOTES are now shown in
detective scanner ui and printed report.

Cleaner code

## Changelog

🆑
fix: energy dagger pen report will be now shown in detective scanner and
also all items that transform will have additional note about it
/🆑

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
2025-10-12 05:44:56 +02:00
MrMelbert da10322dc1 Fix modsuits and defibs (#93373)
## About The Pull Request

Fixes #93359

Caused by #93165

Inventory screen elements were no longer considered reachable, which
broke mousedrop handing on objects that check "is dragging into
inventory slot"

I don't know the best way to fix this yet but I figured the next best
thing would be to make all of these use the `drag_pickup` element, which
skips this reach-ability check

Thus I refactored it slightly to accommodate for items which should
contextually not be drag-pick-up-abble and bam, works like a charm

## Changelog

🆑 Melbert
fix: Dragging defibs and modsuits off your back works again
/🆑

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
2025-10-11 18:17:23 -04:00
paganiy 33ea581933 Changeling's last resort breaks near obstacles (#93109)
## About The Pull Request

- **fixes** a runtime error that occurred when removing antag info
button from the ling's old body (which became null) after transforming
into a worm.
- **fixes** a bug that caused a worm to appear in the debug room when
spamming the "yes" button in the TGUI alert window
- **changes** the blind range of last resort from 2 to 4, because it has
a short animation now

**Added** the ability for the changeling's "Last Resort" to break
through walls and other objects accompanied by blood, gore, and
disgusting sounds😊


https://github.com/user-attachments/assets/a2f263ec-a809-404f-a001-8d3643ba887b
## Why It's Good For The Game
currently, the explosion from "last resort" feels generic, similar to a
grenade or bomb. As a bioweapon, the changeling's ability should reflect
its biological nature — as if the ling is rapidly expanding its cells,
bursting its own body to rupture the surrounding environment and
explode.

regarding the ability to break walls: the current design allows for a
counter-play strategy of quickly building walls around a ling (it takes
like 10 seconds or less) who is in stasis or accumulating reagents for
last resort. While containing a ling in proper cell is valid roleplay
(like for science), this "fortnite-style" walling tactic feels cheap.
The intended design of the ability is to force the destruction of the
ling's body, not to allow them to be permanently walled in with no
option other than ghosting.

Yeah, i know that players will just build a cell that's 2 walls thick or
even bigger, but i think that's fiiine.
## Changelog
🆑
add: changeling's last resort ability now can rupture surrounding them
walls and other objects
add: last resort now has a short animation
balance: increased last resort's blind range from 2 to 4 tiles
fix: fixed several runtimes related to changeling's last resort ability
sound: added a gore sound effect to last resort explosion
/🆑
2025-10-11 14:56:34 -07:00
Leland Kemble 8f8bfb22ef Allows head-equippable items that are not /obj/item/clothing to be attached to /datum/component/hat_stabilizer (#93345)
<!-- 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

the `/datum/component/hat_stabilizer` component, which is the thing on
the magnate MODsuit(and apparently on other spacesuits(and wigs)) that
allows you to attach an additional piece of headwear on top of the helm,
was `istype()`ed to only allowing `/obj/item/clothing`. This prevented
many non- `/clothing` items from being attached, despite being
equippable to the head, the only one of which I care about being
flowers.

This pr changes the `istype()` check to checking for the head slot flag,
and modifies surrounding logic to account for this. The only items I can
think of that are non-clothing and are equippable to the head are
various flowers and `mob_holder`s for various animals.

Also fixes an unrelated bug where updating the appearance of the holding
item would change the offset of any loose-hat holders over and over
again, causing it to move around over your head if you, for example,
toggled a MOD flashlight on and off repeatedly.

Also fixes an unrelated bug where the hat taken off would never be put
in your hands when it was seemingly intended to, due to always returning
the hat rather than `put_in_active_hand()` (unless the parent isn't
clothing, but there's no non-clothing items with the component attached)

## Why It's Good For The Game

I want to put flowers on my helmet, and I don't see any possible
negative ramifications.

## Changelog

🆑

qol: Flowers can now be attached to space helmets.
qol: Taking hats off of helmets will now put them in your hand.
fix: MOD flashlights won't move hats on them when toggling.

/🆑

<!-- 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. -->
2025-10-11 00:16:35 +02:00
MrMelbert 0800c75540 Artifically spawned mobs have a vastly reduced penalty for death moodlet (#93348)
## About The Pull Request

Closes #93285

Mood event from the death of a mob spawned "artificially" is 75% weaker,
lasts 80% the duration, and don't compound

An artificial monkey's death will now result 
- -8 * 0.25 * 0.5 = floor(1) = 1 strength moodlet for the average crew
member
   - ...Lasting 30 seconds (unless refreshed)
- -8 * 0.25 * 1.5 = floor(3) = 3 strength moodlet for animal friends
   - ...Lasting 1.5 minutes (unless refreshed)
- -8 * 0.25 = floor(2) = 2 strength moodlet for compassionate crew
members
   - ...Lasting 1 minute (unless refreshed)

Artifical spawning includes
- Moneky Cube
- Xenobiology Console
- "Life" reaction
- Summoned rats
- Spawner grenades
- Cult ghosts

Lemmie know if I'm missing any obvious spawns 

## Why It's Good For The Game

While funny it was not my intention to have Xenobiology / Genetics /
Virology nuke your mood.

## Changelog

🆑 Melbert
balance: Death of artifical mobs (such as monkey cube monkeys) result in
a 75% weaker, 80% shorter moodlet that does not compound with more
deaths.
/🆑
2025-10-11 00:14:54 +02:00
necromanceranne 86c499ebc3 Adds the Jaws of Recovery, a specialized form of Jaws of Life for paramedics with heavier limitations. (#93021)
## About The Pull Request

Adds the Jaws of Recovery, a form of Jaws of Life. These spawn in
cabinets in medical, similar to the fireaxe and mech removal tool.

Jaws of Recovery have two heads; prying, like a standard set of jaws of
life, and bonesetting.

Jaws of Recovery cannot be used to open windoors, and cannot be used to
open certain restricted doors. These doors include command staff private
offices, any command specific areas, AI upload areas and security areas
that aren't the brig entrance.

Jaws of Recovery also send out an alarm whenever used to open a door
that is of meaningful significance, like a departmental area. This does
not happen when opening maintenance airlocks, public accessible doors,
external airlocks and the auxiliary base.

The standard Jaws of Life and Syndicate Jaws of Death are entirely
untouched and function as expected.

<img width="240" height="177" alt="image"
src="https://github.com/user-attachments/assets/4e661720-25c7-42b5-963d-707b77d3683f"
/>


## Why It's Good For The Game

In my last PR I removed the broad access available to paramedics.
https://github.com/tgstation/tgstation/pull/92751
I have already explained my reasoning as to why this broad access is a
mistake. This is not anywhere close to that broad access being returned.
This is a slow, deliberate interaction meant to create friction when
someone is moving around using this tool.

Now, obviously, the change was something of a kick in the teeth for
paramedics (which I won't apologize for doing). I hadn't received any
moderate alternatives that sounded like a good idea for months. That is,
until the PR was merged and someone told me about how paramedics over on
Baystation have jaws of life, but they alert people over the radio when
they are used. Seemingly they were as much worried about paramedic
tiders as we are, and they're a high roleplay environment. We clearly
invited a problem on our end that they had sought to resolve because
they too realized that it was a mistake to just give the role this
access.

Now, obviously, [RETA exists to get medical staff into an
area](https://github.com/tgstation/tgstation/pull/92753). That's all
well and good and I like that system. This does not detract from that PR
whatsoever either. This is meant to serve as an extra emergency measure
in the event a paramedic REALLY needs to get into an area while trying
to create some kind of accountability for their actions by telling sec
when they start being used to pry open airlocks. If sec doesn't like how
much the paramedic is invading areas without reason, they at least know
where and when they've been going into locations and might be
incentivized to go investigate.

## Changelog
🆑
add: Adds the Jaws of Recovery. One can be found in a locked glass
cabinet in medical. These jaws of life are restricted on what they can
force open, and alert security and medical whenever they are utilized to
pry open departmental doors. They can't be used to open high security
doors whatsoever. And they come with a bonesetter attachment instead of
wirecutters. You know, for power-relocating your arm.
/🆑
2025-10-10 16:44:57 -04:00
Iamgoofball 01e07daec0 Fixes the clown/mime honorifics (#93354)
## About The Pull Request

Fixes the clown/mime honorifics

## Why It's Good For The Game

bugfix

## Changelog

🆑
fix: Fixes the clown/mime honorifics
/🆑
2025-10-09 23:54:06 -04:00
SmArtKar 157d88d39d Visual and balance changes to brimdust sacks and rush glands (#93323) 2025-10-10 13:43:22 +11:00
Ghom aa4cf2b136 The nullrod refactor (the carp-sie plushie is now actually a plushie) (#93311) 2025-10-10 13:42:33 +11:00
Bloop b77cdda8a4 Fix hard del/race condition in reflections (#93328)
## About The Pull Request

Tin, the proc that's managing references should remove the thing from
the list before calling qdel on it. Also, it should not be calling qdel
on something that's already being qdeleted (which could happen before if
`nuke_reflection()` was reached via the `COMSIG_QDELING` signal).

<img width="1675" height="480" alt="firefox_xIIRCIbgdU"
src="https://github.com/user-attachments/assets/246be9de-6ff0-46a5-bf5e-1d0895fd9f55"
/>


## Why It's Good For The Game

Less hard deletes

## Changelog

Not player facing/should get the hard deletes tag
2025-10-10 03:59:59 +02:00
SmArtKar 7830eb6e6e Fixes the alert overlay persisting on dead goldgrubs (#93325)
## About The Pull Request

It updated overlays upon death, but didn't actually check whever the
owner was dead or alive.

## Changelog
🆑
fix: Fixed the alert overlay persisting on dead goldgrubs
/🆑

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2025-10-09 20:18:44 +02:00
Hatterhat cae0e53145 spawner legion corpses disappear in storms (#93276)
## About The Pull Request

About what it says on the tin. Corpses from spawner legions (e.g. vent
legions, tendril legions) have the storm-hating component, which means
that when a storm starts the body is deleted.

Also makes it so that the `storm_hating` component clears itself when
the atom it's attached to is logged into, so skeletons you do decide to
brainswap into/bodyjack/etc. won't Thanos snap and turn into dust if you
get stormed on.

## Why It's Good For The Game

Ashes to ashes, dust to dust. Prevents corpses from piling up that
badly. I swear this was a feature but I don't know whatever happened to
it.

## Changelog

🆑
qol: The skeletal corpses left from spawner legions (e.g. from ore vent
defenses and legion necropolis tendrils) now disappear during ash
storms. This does not apply if the body gets brainswapped into.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2025-10-09 04:25:52 +02:00
MrMelbert e83fd2603f Fix buckling and probably a lot more mousedrop interactions (#93352) 2025-10-08 11:47:52 +02:00
MrMelbert a431f9b6dc Fix master (#93342)
## About The Pull Request

#93165 skewed with #93305
2025-10-07 22:13:28 +02:00
die 0204ab8fdd Canreach refactor (#93165)
## About The Pull Request
ports https://github.com/DaedalusDock/daedalusdock/pull/1144
ports https://github.com/DaedalusDock/daedalusdock/pull/1147

full credit to @Kapu1178 for the juice

instead of `reacher.CanReach(target)` we now do
`target.CanBeReachedBy(reacher)`, this allows us to give special
behavior to atoms which we want to reach, which is exactly what I need
for a feature I'm working on.
## Why It's Good For The Game
allows us to be more flexible with reachability
## Changelog
🆑
refactor: refactored how reaching items works, report any oddities with
being unable to reach something you should be able to!
/🆑
2025-10-07 20:28:59 +02:00
MrMelbert d3c806c070 Fix strip menu (#93336) 2025-10-07 17:23:59 +00:00
SmArtKar 975d3d47ae Fixes certain broken icons in the outfit editor, stripping menu and multiple others (#93319)
## About The Pull Request

``icon2base64`` does not like animated icons and will display an atlas
in TGUI when one is passed into it

<img width="239" height="220" alt="JKneqDL9NH"
src="https://github.com/user-attachments/assets/47e0ffdf-c155-4c84-94ce-c23203281012"
/>

Additionally added some padding between the icon and the slot name in
the outfit editor because it annoyed me

## Changelog
🆑
fix: Fixed certain broken icons in the outfit editor, stripping menu and
multiple others
/🆑
2025-10-07 18:42:17 +02:00
Ghom f72eb75a6f Handcuffs can now be used to bind certain items (briefcases, toolboxes, etc.) to your hand. (#93305)
## About The Pull Request
Technically, this PR introduces the cuffable_item element and the
cuffed_item status effect and their relative code.

In more player-friendly terms, this allows the ability to use handcuffs
to bind certain items to your hands by right-clicking it with a pair of
handcuffs in your active hand. This makes the item unable to be dropped,
for better or worse, until you or someone else remove said cuffs. And
no, this doesn't conflict with the ability to be handcuffed if you're
silly enough to think that.

There are more than one way to remove the cuffs. For the player with the
item cuffed to their hand, to remove the cuffs they can either click the
status alert, or examine the item and click the relative hyperlink. The
second option is good to have if for some reason the status alert
doesn't show up (too many alerts etc.).

For other people, they can remove the cuffs by opening the strip
inventory menu (the one you open by click-dragging the sprite of person
with the item onto yours). It's an alternative action specific to this
status effect (therefore only held items). Until the cuffs are removed,
trying to remove the item **directly** will bring you nowhere **because
the item is stuck to their hands**, duh. Alternatively you can just chop
their arm off. You do what you do.

For a list of items that can be bound with cuffs (suggestions welcome):
- briefcases
- toolboxes
- lockboxes
- first aid kits
- shields (they generally have handles and all. gameplay-wise they
already take away one hand slot to use. Using cuffs seals the deal: no
swapping items on the go, so no two-handed weapons, but you won't drop
the shield until it's broken)
- jerrycans (Kryson's suggestion)
- soup pots (ditto, kinda weird)
- coffee mugs, and the mauna mug (ditto)
- buckets
- plushes (silly stuff, if you ever want to arrest a plush or test the
feature)
- pet carriers
- mining drills
- swords with closed guards (ERT chainsaw-sword, cap's sabre, parsnip
sabre, cutlass, e-cutlass...)
- crutches and the white cane
- baskets
- flashlights and lamps (not subtypes like flares, glowsticks and
torches)
- TTVs
- chairs

## Why It's Good For The Game
This opens up for some emergent use for handcuffs beside people (or
prisoner shoes). Inspired by a scene of some 1998 action movie, where
one of the bad guys had the mc guffin briefcase latched to his wrist
with a pair of handcuffs.

Codewise, it was also a reason to refactor bits of code like handcuffs
and screen alerts slightly. On a sidenote, actual sprites for
cult/heretic shackles.

## Changelog

🆑
add: You can now bind certain items like briefcases, toolboxes, medkits,
shields, jerrycans etc. to your hand with a pair of handcuffs,
preventing them from being dropped. You can remove said binds at any
time unless incapacitated, and so can others through the strip inventory
menu.
qol: The appearance of a screen alert now updates if the object it
represents (like, an item offered by another player) changes appearance.
imageadd: The shadow shackles item (from cult magic and heretic
sacrifices) now has its own icon.
/🆑
2025-10-07 05:24:20 -06:00
Tim cfbae07813 Fix admin debug gps to be toggable and reset the affected turfs (#93226)
## About The Pull Request
This fixes the admin debug gps tool so that it must be turned on to
activate. (it spawns off now) Also when it is toggled on/off, it resets
the colored turfs to their initial state.

## Why It's Good For The Game
When someone would equip the admin outfit, the debug gps would start
processing immediately, despite it not being in your hand, or even
turned on. This adds some restrictions so that you have to manually
activate it and allows the turfs to reset.

## Changelog
🆑
fix: The admin debug gps is now turned off by default and toggling it
will reset the affected turfs.
admin: Equipping the admin outfit will no longer automatically trigger
the debug gps effect.
/🆑
2025-10-06 21:43:25 -06:00
SmArtKar b99bea96a8 Mining style hotswapping now respects item interactions (#93277)
## About The Pull Request

Hotswapping now hijacks the attack chain in pre_attack rather than doing
so before item_interaction, which now allows players to interact with
items in their inventories (such as stabilizing cores with serums)
without hotswapping the two items.
Also added a unit test to ensure that it works as intended.

## Changelog
🆑
fix: Mining style hotswapping now respects item interactions
/🆑
2025-10-07 02:43:07 +02:00
Ghom 935cc715b9 anti, low and high, gravity fields no longer have the same particles effect (#93101) 2025-10-06 13:25:55 +02:00
MrMelbert 601f6faea5 Chainsaw nullrod fix (#93283)
## About The Pull Request

Fixes #93280

It would give you the null rod arm, then equip the null rod, then try to
give you the null rod arm again, which removed your null rod arm and
caused... problems

## Changelog

🆑 Melbert
fix: Fixed chainsaw nullrod
/🆑
2025-10-05 16:24:35 -06:00
SmArtKar a121bd4093 Fixes orbiters like ghosts and wisps detaching when using a shuttle (#93300)
## About The Pull Request

One of the shuttle move refactors/changes broke orbiters, making them
detach on shuttle move and detach improperly, retaining the animation.
This fixes the issue by dropping all of the orbiters before the move,
and reattaching them afterwards.
Our orbiting code is a nightmare and is long due a refactor, but this
should work for now. (I hate bandaid fixes too, sorry)
- Closes #93070

## Changelog
🆑
fix: Fixed orbiters like ghosts and wisps detaching when using a shuttle
/🆑
2025-10-05 16:23:11 -06:00
MrMelbert 6ba755cb44 Felinid ears are randomized properly (#93297)
## About The Pull Request

When more Felinid ear styles were added, no one updated the jank old
randomization code

When Felinid ears were refactored, no one updated the jank old
randomization code

Sooo let's do that shall we? 

1. Species `get_mut_organs` -> `get_organs`, it gets gets all organs the
mob has anyways

2. Prefs `relevant_external_organ` -> `relevant_organ`, it applies to
any organ type

3. Del organ `preference`, the preference itself handles it via
`relevant_organ`

## Changelog

🆑 Melbert
fix: Felinids will randomize their ear type properly
/🆑
2025-10-05 16:21:42 -06:00
Hatterhat 99c25d0ca5 lore component and lore component usage for the br38, iaito, sc/fisher, ansem/sc (#93135)
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2025-10-05 20:50:06 +11:00
SmArtKar dd7cef8cae [NO GBP] Fixes a gamebreaking filter bug (#93289)
## About The Pull Request

I have no idea why this broke specifically and only on planemaster
controllers and not elsewhere, but here we are
Fixes #93279

## Changelog
🆑
fix: Colorblindness and eye blur from welding should no longer be
permanent
/🆑
2025-10-04 12:46:28 +00:00
MrMelbert d664be4c78 Ensures personalities are loaded before prefs are loaded (#93265)
## About The Pull Request

Aaaaa if you load fast personalities aren't instantiated so personality
loading wipes everything out.

I don't know the best way to ensure personalities are loaded before
anyone could load in unfortunately, so I just threw it in. Will need to
ask around.

## Changelog

🆑 Melbert
fix: Fixed personality wiping
/🆑
2025-10-04 04:40:16 +02:00
ArcaneMusic b617fb3877 Fix for stacks transforming into other stacks when removed from the Protolathe/Techfab. (#93260)
## About The Pull Request

I *think* this should be all that's required to fix this, it looks like
it's just the variable that iterates over all available stacks on the
dropturf needed to compare against the iterator's type as opposed to the
stack we're about to create otherwise.

Fixes #93256 

## Why It's Good For The Game

Prevents a tiiiiny little material transformation/duplication bug.

## Changelog

🆑
fix: Sheets removed from the protolathe/techfab will properly remove the
correct quantity and merge into the right material.
/🆑
2025-10-04 04:39:00 +02:00
MrMelbert 2b72fce561 Lazy people can be extroverted (#93263)
## About The Pull Request

Last minute error with these keys.

## Changelog

🆑 Melbert
fix: Lazy/Diligent is not incompatible with Introvert/lazy
/🆑
2025-10-04 04:37:47 +02:00
MrMelbert 178a8c12d2 Avoid adding dupe emote bodypart overlays (#93262)
## About The Pull Request

You can hit the overlay cap by spamming emotes

## Changelog

🆑 Melbert
fix: Emotes with visuals can no longer cause errors if spammed to an
extreme degree
/🆑
2025-10-04 04:35:08 +02:00
MrMelbert ce50179f7c Mind readers can read what people are typing (#93059)
## About The Pull Request

When a Mind Reader examines someone who is typing, it will show them
what they are actively typing

<img width="518" height="97" alt="image"
src="https://github.com/user-attachments/assets/8d54aa56-85fc-4e03-b0a3-bfb8e475beff"
/>

No, it won't read OOC messages.

## Why It's Good For The Game

Your next line is, "This sounds really funny for gimmicks like security
interrogations or fortune telling, or for getting the jump on someone as
they try to get the jump on you, or just to be a badass by finishing
people sentences"

## Changelog

🆑 Melbert
add: When a mind reader examines a mob, they'll get a glimpse into what
that mob is currently typing, before they even send the message.
qol: Mind Reader now groups up all the information it gives you in a box
admin: Mind Reader now logs everything the reader gleamed from the
read-ee
/🆑
2025-10-04 01:29:31 +02:00
Y0SH1M4S73R f4b3715f73 [NO GBP] Fixes USB cables infinitely recursing when snapped. (#93240) 2025-10-03 18:08:14 +02:00
SmArtKar 11c3300aa0 Cleans up/optimizes wounding code (#93113)
## About The Pull Request

So turns out that wounding is actually one of the main time consumers in
``apply_damage()``, as it has a lot of unused or unnecessary code which
it runs all the time, be it storing a lot of info in lists despite never
passing more than a single value, or running checks multiple times. I've
cut out or simplified unnecessary/overly complex logic, and tried to
pull out some of the more expensive checks to make it run faster.
There's probably tons more stuff to improve here because this code is so
convoluted, but this is the best I've got for now.

## Why It's Good For The Game

Cleaner code, runs faster too.

## Changelog
🆑
code: Cleaned up wound code, should hopefully run a bit faster now.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-10-02 22:23:55 +02:00
SmArtKar 6844db8e19 Fixes harddels and UI-breaking runtimes from open_containers (#93230)
## About The Pull Request

Closes #93221 as it incorporates a better version of the fix in said PR.
hud_used could exist without a client (such as if the player logged out
temporarily) and the elements in the list were not removed when an item
was taken out of storage. This could result in harddels, which would
fill the list with nulls and lead to the following runtime which would
prevent all further UI updates on the mob, including planemaster
rebuilds

```js
The following runtime has occurred 161 time(s).
runtime error: wrong type of value for list
proc name: show hud (/datum/hud/proc/show_hud)
  source file: code/_onclick/hud/hud.dm,347
  usr: Doctors-The-Smiles (/mob/living/carbon/human)
  src: /datum/hud/human (/datum/hud/human)
```

Fixes #93212

~~This is ***not*** a solution to #93212 (or at least I think so, there
is a separate filter issue), but it could also break planemasters on a
mob.~~

## Changelog
🆑
fix: Fixed harddels and UI-breaking runtimes from open_containers
/🆑
2025-10-02 12:42:58 -07:00
SmArtKar cd5b2c2b82 [NO GBP] Fixes some filterrific functions not working (#93232)
## About The Pull Request

Non-smooth modification and renaming didn't work, and mass application
broke a lot of things (always, did actually)

## Changelog
🆑
fix: Fixed some Filterrific functions not working
/🆑
2025-10-02 12:37:17 -07:00
MrMelbert 44acefa73f More things use trait huds over raw hud management (#93084) 2025-10-02 21:36:40 +02:00
MrMelbert 3ea7b03369 Accentuate the positive with **Personality**: A (soft) mood rework (#92941)
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2025-10-02 19:00:13 +00:00
Ghom 006c3ba210 Things that are edible now count as golem food if their materials allow it. (#92582)
## About The Pull Request
This PR allows golems or anyone with the genetic mutation to benefit
from the effects of golem food if what they're eating is made of a
material tied to ore or sheets with golem food effects.

In layman terms, this means you can deepfry a chair and get golem buffs
that way. The duration also scales with the amount of material consumed,
which also depends on the bite size of the food. Smaller doses translate
to a shorter duration of the effect, while the viceversa is also true
(however with diminishing returns).

Also, you won't take immediate damage from biting, food with items made
of metals and glass stuffed into it if you've the rock eater trait (come
on dude, you eat literal raw diamonds). This has nothing to do with
golem food, but it's one less peeve off the list as I slowly and
occasionally work on material datums and their presence in the game.

## Why It's Good For The Game
Adding some depth to materials and food, albeit not much.
2025-10-02 13:18:04 -05:00
Archemagus 6f834fb418 AAS code cleanup (#93158)
## About The Pull Request

- Added full support for RETA system
- Categorized all configs for search purposes
- Added channel check for most usages of get_announcement_system() calls
## Why It's Good For The Game
## Changelog
🆑
code: Little AAS code cleanup. Added full RETA support. Grouped configs
for search purposes.
/🆑
2025-10-02 18:17:38 +00:00