Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

01-12 Merge #5267

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open

01-12 Merge #5267

wants to merge 7 commits into from

Conversation

Iajret
Copy link
Collaborator

@Iajret Iajret commented Dec 28, 2024

О Pull Request

NovaSector/NovaSector#4635 - был пропущен ранее
NovaSector/NovaSector#4682

Как это может улучшить/повлиять на игровой процесс/ролевую игру

Доказательства тестирования

Скриншоты/Видео

Changelog

Всё включено

FlufflesTheDog and others added 3 commits December 28, 2024 01:05
…6049) (#4635)

* Adds a score for all species of fish that you've caught. (#86049)

I'm adding a score that tracks which types of fish you've caught across
multiple rounds. To do so, I had to add a new score subtype that manages
the score value not being a number. Thankfully the achievement code is
fairly flexible so not a whole lot had to be done, although I've to add
a new column to the achievements table in the DB, because the 'value' is
for integers, while we need one for text strings ~~(the contents of the
list are converted to text with a delimiter before being saved cuz I'm
not sure if and how our DM slash SQL integration handles using lists
directly and I don't want to waste time finding it out)~~.

EDIT: It's mostly done beside the reviews that are going to point out
things that need to be changed. The UI changes are done. It's time for
reviews.

Here are screenshots of the UI with all fish still uncatched beside one
(I've since then the typo on its name and removed an extra zero from the
index number, as well as a nit with the spacing between cells):

![immagine](https://github.com/user-attachments/assets/a1dcfeb6-6d26-461e-aaa1-97c619f5cbfa)

![immagine](https://github.com/user-attachments/assets/768f6621-c992-4932-9bca-979dd1e43d6f)

We have about dozens over dozens of different fish in the game now, many
of which are just fluff anyway. It's getting to the point it's perhaps
doable to add a score or something to be a braggard about.

:cl:
add: Added a new score that keeps track of all different fish that
you've caught between shifts.
server: Added a new schema table to store the aforementioned entries and
the ckeys associated to them, with an additional timestamp column.
/:cl:

* Automatic changelog for PR #86049 [ci skip]

* Realignes changelog header (#87695)

looks wrong

* Fishing bluespace capsules (#87639)

With this PR, I'm introducing fishing bluespace capsules to the game.
They can be found on the black market, but I'll get a couple more ways
to get them before it's ready.

Anyway, they're special bluespace capsules that spawn a fishing spot of
your choice. The fishing spot can be changed by alt-clicking the
capsule, and so far it has 5 choices, plus 2 locked behind emagging for
obvious reasons:
- Freshwater: pretty basic, you get freshwater fish from this.
- Saltwater: mainly saltwater fish.
- Tiziran: You get tiziran fish here, like the gunner jellyfish,
armorfish, needlefish, dwarves moonfish and the new, bigger zagoskian
moonfish. By the by, moonfish now periodically lay moonfish eggs, a
staple of lizardfolk cuisine.
- Ice fishing spot: A small ice turf with a hole dug in it; salmon,
arctic char, arctic chrabs and the bonemass (skeleton fish).
- Hot Spring: Somehow the new home to the ought-to-be-extinct
sacabambaspis. It also doubles as a better shower overall, with mild
healing on top of stamina recovery. Felinids still hate it though, and
won't benefit from the healing.
- Lava: A 2x2 square of pure lava. Requires an emag for obvious reasons.
- Plasma: Ditto, but it's plasma instead of lava.

As a sidenote, unlike standard shelter capsules, these require their
area to be clear of pipes and cables on top of the other requirements,
unless emagged. Obviously, I've done some changes to allow pipes and
cables to not be hidden by water turfs, though I'm still keeping these
reqs because I don't think these fishing spots would look great if
riddled with cables and pipes. I may remove this extra req later if it
proves to be a tad too tedious.

Also they don't knock you back when expanding.

Screenshot from a recent test (fixed the misplaced decal and tweaked a
few things since then):

![immagine](https://github.com/user-attachments/assets/6bbcddfb-ff1c-4e96-834a-2129cadbb31f)

The idea stems from how not all fishing spots aren't designed to be
accessible every round, which is fine, because we have the fish-porter
for that. However, even the fish-porter should have its limits in terms
of what it can provide by itself (linking is all fair and game), so I've
thought having something of a middle point would been neat, also as a
way to mess around with the station layout a bit, to empower the player
with a little extra "terraforming".

:cl:
add: Added fishing bluespace capsules to the game, which can be used to
spawn a variety of fishing spots, from freshwater to tiziran sea to hot
springs, and also lava and plasma if emagged.
add: Added two new fish: the zagoskian moonfish and the sacabambaspis.
Moonfish will now periodically lay moonfish eggs.
map: The 'crashed pod' lavaland ruin now has a hot spring, and the
cursed hotspring on icemoon now has a plastic chair and a fishing
toolbox.
/:cl:

* Automatic changelog for PR #87639 [ci skip]

* Some path & hotspring updates

TG added their own hotspring so that kinda messes with things

---------

Co-authored-by: Ghom <[email protected]>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: LemonInTheDark <[email protected]>
* Automatic changelog for PR #88079 [ci skip]

* [NO GBP] Armor now decreases the chances of getting your eye blown out by a rogue bullet (#88082)

Chance of getting an eye wound from being hit by a projectile now scales
inversely with your head armor. Meant to do this originally but forgot,
so here we go.

You'd expect that a bulletproof helmet will prevent your eyes from being
popped like balloons, especially if you don't take any damage from the
hit.

:cl:
balance: Armor now decreases the chances of getting your eye blown out
by a rogue bullet
/:cl:

* Automatic changelog for PR #88082 [ci skip]

* changes default prefs to deadmin you as antagonist/head/sec/silicon, stops auto deadmin on localhost (#88028)

* Implements final type filtering for spawn commands (#88070)

Putting ``*`` at the end of a spawn type string will tell the command to
not offer subtypes of that string. For example, running ``laser/cap``
offers you two types: ``GUN_LASER/captain`` and
``GUN_LASER/captain/scattershot``. Adding a start to the end like
``laser/cap*`` would only offer ``GUN_LASER/captain`` without the
scattershot subtype, and instantly spawn it without an input window
because its the only fitting type.

Easier to spawn certain types without having subtypes offered to you

* Automatic changelog for PR #88028 [ci skip]

* Automatic changelog for PR #88070 [ci skip]

* Fixes parsnip sabre not receiving a jousting component (#88104)

Copypaste oopsie

:cl:
fix: Fixed parsnip sabre not receiving a jousting component
/:cl:

* Organ manipulation can be completed/GCd once again (#88099)

This causes a ton of runtimes, attack chain issues and uncompleteable
surgeries.
Also yeah please don't override BYOND procs with var names, OD pragmas
where were you when we re-used step...

:cl:
fix: Organ manipulation can be completed once again and doesn't cause
you to be un-melee-able in some cases.
/:cl:

* Fixes full augmentation scan experiment being uncompletable (#88100)

someone cooked too hard

:cl:
fix: Fixed full augmentation scan experiment being uncompletable
/:cl:

* Automatic changelog for PR #88104 [ci skip]

* Automatic changelog for PR #88099 [ci skip]

* Automatic changelog for PR #88100 [ci skip]

* Fix chewable bubblegum not metabolizing due to microdose (#88102)

- Fixes #87873

Bubblegum with the chewable element was not triggering due to a
microdose that would get deleted as soon as it was inserted into the
mob.

Also added a crash message so if anyone in the future tries to microdose
the chewable element it gets caught by our CI/CD checks.

![chrome_MUuaIxcpTI](https://github.com/user-attachments/assets/5d473499-0c42-4677-9a13-598078e512f1)

Special thanks to @SmArtKar for digging around in the code and finding
the problem.

Bubblegum now makes you happy.

:cl: timothymtorres, SmArtKar
fix: Fix chewable bubblegum not metabolizing due to microdose
/:cl:

* [NO GBP] Fixes a rare runtime in jetpack component code (#88097)

shrug

:cl:
fix: Fixed a rare runtime in jetpack component code
/:cl:

* Automatic changelog for PR #88097 [ci skip]

* Automatic changelog for PR #88102 [ci skip]

* fixes synthmeat having 0% purity on reaction (#88090)

read the title doofus

theoretical meat is bad for the economy

ok so basically the guy who did this whole thing only had it check for
reagent/consumable in the entire beaker, which is goofy as hell for a
lot of reasons, but it also has the side effect of not including
non/consumable reagents like blood, cryoxadone, and carpotoxin.

there's probably a bug in there where adding pure salt or other reagent
to the beaker can make highly pure food items with highly impure
ingredients, but if youre bothering to do that you couldve made pure
ingredients to begin with, and that wouldve existed before i touched it
and i dont wanna bother

:cl:
fix: synthmeat is no longer an nft
/:cl:

---------

Co-authored-by: SyncIt21 <[email protected]>

* Automatic changelog for PR #88090 [ci skip]

* fixes a few issues with the chipped quirk (#87764)

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

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! --> the text displayed when this quirk's gained would
include the skillchip's typepath rather than its name. this fixes that.
also fixes an issue with how the callback timer was being handled, which
would lead to a runtime whenever the quirk was removed (since addtimer
returns the id and not the callback itself). also fixes the scratch
effect never actually working because an organ slot was being provided
to `get_organ_by_type` rather than the type. also fixes the itchy effect
not going away after the skillchip is removed (it gets added again if
the skillchip is reimplanted).

<!-- 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. --> fixes a few
issues with the chipped quirk

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

:cl:
fix: fixes the chipped quirk displaying the skill chip's typepath rather
than its name
fix: fixes chipped quirk's itchy effect not working
fix: the chipped quirk's itchy effect now goes away when the skillchip
is removed
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: 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: MrMelbert <[email protected]>

* Automatic changelog for PR #87764 [ci skip]

* Guncode Agony 4: The Great Projectile Purge (#87740)

~~Kept you waitin huh!~~
The projectile refactor is finally here, 4 years later. This PR (almost)
completely rewrites projectile logic to be more maintainable and
performant.

* Instead of moving by a fixed amount of pixels, potentially skipping
tile corners and being performance-heavy, projectiles now use
raymarching in order to teleport through tiles and only visually animate
themselves. This allows us to do custom per-projectile animations and
makes the code much more reliable, sane and maintainable. You (did not)
serve us well, pixel_move.
* Speed variable now measures how many tiles (if SSprojectiles has
default values) a projectile passes in a tick instead of being a magical
Kevinz Unit:tm: coefficient. pixel_speed_multiplier has been retired
because it never had a right to exist in the first place. __This means
that downstreams will need to set all of their custom projectiles' speed
values to ``pixel_speed_multiplier / speed``__ in order to prevent
projectiles from inverting their speed.
* Hitscans no longer operate with spartial vectors and instead only
store key points in which the projectile impacted something or changed
its angle. This should similarly make the code much easier to work with,
as well as fixing some visual jank due to incorrect calculations.
* Projectiles only delete themselves the ***next*** tick after impacting
something or reaching their maximum range. Doing so allows them to
finish their impact animation and hide themselves between ticks via
animation chains. This means that projectiles no longer disappear ~a
tile before hitting their target, and that we can finally make impact
markers be consistent with where the projectile actually landed instead
of being entirely random.

<details>

<summary>Here is an example of how this affects our slowest-moving
projectile: Magic Missiles.</summary>

Before:

https://github.com/user-attachments/assets/06b3a980-4701-4aeb-aa3e-e21cd056020e

After:

https://github.com/user-attachments/assets/abe8ed5c-4b81-4120-8d2f-cf16ff5be915

</details>

<details>

<summary>And here is a much faster, and currently jankier, disabler
SMG.</summary>

Before:

https://github.com/user-attachments/assets/2d84aef1-0c83-44ef-a698-8ec716587348

After:

https://github.com/user-attachments/assets/2e7c1336-f611-404f-b3ff-87433398d238

</details>

Beyond improved visuals, smoother movement and a few minor bugfixes,
this should not have a major gameplay impact. If something changed its
behavior in an unexpected way or started looking odd, please make an
issue report.
Projectile impacts should now be consistent with their visual position,
so hitting and dodging shots should be slightly easier and more
intuitive.

This PR should be testmerged extensively due to the amount of changes it
brings and considerable difficulty in reviewing them. Please contact me
to ensure its good to merge.

Closes #71822
Closes #78547
Closes #78871
Closes #83901
Closes #87802
Closes #88073

Our core projectile code is an ungodly abomination that nobody except
me, Kapu and Potato dared to poke in the past months (potentially
longer). It is laggy, overcomplicated and absolutely unmaintaineable -
while a lot of decisions made sense 4 years ago when we were attempting
to introduce pixel movement, nowadays they are only acting as major
roadblocks for any contributor who is attempting to make projectile
behavior that differs from normal in any way.

Huge thanks to Kapu and Potato (Lemon) on the discord for providing
insights, ideas and advice throughout the past months regarding
potential improvements to projectile code, almost all of which made it
in.

:cl:
qol: Projectiles now visually impact their targets instead of
disappearing about a tile short of it.
fix: Fixed multiple minor issues with projectile behavior
refactor: Completely rewrote almost all of our projectile code - if
anything broke or started looking/behaving oddly, make an issue report!
/:cl:

* Automatic changelog for PR #87740 [ci skip]

* Fixes a potential harddel in Ripley code (#88101)

Ejector didn't clean its ref in parent ripley before deleting itself
which could cause harddels if it didn't delete fast enough (as seen
during round 243009)

:cl:
fix: Fixed a potential harddel in Ripley code
/:cl:

* Fix coffee maker smoke particles not deleting (#88111)

Caused by:

- #88048

The coffee maker smoke particles stayed on forever after brewing
something. This is now fixed.

Coffee brewing is no longer a fire hazard.

:cl:
fix: Fix coffee maker smoke particles not deleting
/:cl:

* Fix fireplace particles runtimes (#88114)

Caused by:

- https://github.com/tgstation/tgstation/pull/88048

Trying to use the fireplace would result in runtimes and the smoke
particles not triggering.

Even though the runtime is fixed, the new particle changes in #88048
broke the pixel offsets. While I was testing, anytime I tried switching
a pixel offset it would update all fireplaces. I tried to limit it to
add the shared particle id to `"fireplace_[dir]"` so that it would only
apply to the objects in that direction but I couldn't get it to work. I
would guess this also affects a lot of other objects that have particle
pixel offsets.

Runtime is fixed. Particle offsets are still broken.

Fireplaces no more runtime.

:cl:
fix: Fix fireplace particles runtimes.
/:cl:

* Automatic changelog for PR #88114 [ci skip]

* Automatic changelog for PR #88111 [ci skip]

* Refactors projectile dampeners and adds some new visuals (#87913)

Co-authored-by: Ghom <[email protected]>

* Automatic changelog for PR #87913 [ci skip]

* turfs now handle fishing more internally to save time on world initialization (#88092)

* [NO GBP] Fixes watery turfs not keeping you wet over time (#88086)

* Automatic changelog for PR #88086 [ci skip]

* [no gbp] fixes monkey disarming leading to runtimes (#88128)

* [no gbp] actually gives entertainment screens mute button (#88036)

closes https://github.com/tgstation/tgstation/issues/88035
my bad

* Automatic changelog for PR #88036 [ci skip]

* Guncode Agony 4.2: Firing Effect Intervallo (#88072)

Firing effects now attach themselves to the firer, meaning you don't run
over or back from your own muzzle flash if you fire while running.

Look better, both when moving into and away from the effect.

:cl:
image: Muzzle flash now is attached to your sprite, meaning you won't
run over it if you fire while moving
/:cl:

* Automatic changelog for PR #88072 [ci skip]

* Changing clipboard skins now changes the inhands sprite as well (#88123)

Closes #88122

:cl:
image: Changing clipboard skins now changes the inhands sprite as well
/:cl:

* Automatic changelog for PR #88123 [ci skip]

* Stops atrocinator module footstep spam when you're moving on a tram (#88129)

Closes #87981
Also respects silent footsteps and lagswitch now

:cl:
fix: Fixed atrocinator module footstep spam when you're moving on a tram
/:cl:

* Automatic changelog for PR #88129 [ci skip]

* Blind people no longer can make eye contact when touching someone (with their eyeballs?). Eye contact requires you to not have covered eyes. (#88142)

Blind people making eye contact with their (hopefully) hands is a bit...
weird, to say the least. Eye contact is also prevented by various sorts
of eye coverage, on both sides, instead of only being affected by items
that hide your face (So you no longer make eye contact if you're
blindfolded either)

![image](https://github.com/user-attachments/assets/49d6d697-f908-4320-8196-be3e4f390fa6)

:cl:
fix: Blind people no longer make eye contact with their hands
fix: Blindfolds and other sorts of opaque eye coverage now prevent eye
contact from occuring
/:cl:

* Automatic changelog for PR #88142 [ci skip]

* Fixes a random zero in nuke ops uplink UI (#88147)

![u3plza5](https://github.com/user-attachments/assets/a88d079a-2a29-4be7-ac1c-9d3433fa34ff)

:cl:
fix: Fixed a random zero in nuke ops uplink UI
/:cl:

* Automatic changelog for PR #88147 [ci skip]

* New moth customization set (#88058)

![image](https://github.com/user-attachments/assets/38259134-46a9-4dcf-a4db-52ca4e3e5587)

![image](https://github.com/user-attachments/assets/2ee7dc6a-e241-481c-9309-4571b3af7939)

Added new mothwings, markings and antennae as seen above.

Everyone loves more moth variety!

:cl:
add: Added new moth customizations available in the character creation
under the name "Dipped"
image: added icons for the moth wings, antennae and markings
:cl:

---------

Co-authored-by: Ghom <[email protected]>

* Automatic changelog for PR #88058 [ci skip]

* Resprites The Heretic's Moon Blade (#88148)

* Automatic changelog for PR #88148 [ci skip]

* Zippo inhand sprite fix (#88120)

* Automatic changelog for PR #88120 [ci skip]

* Fixes fishing turfs not lazyloading (#88174)

We null-ed fish_source before actually creating the component using that
value. Happens to all of us.

:cl:
fix: Fixed fishing turfs not lazyloading
/:cl:

* Automatic changelog for PR #88174 [ci skip]

* Fixed advanced camera consoles runtiming on eye init (#87993)

Currently when the camera eye of an advanced camera console is
initialized, it tries to send COMSIG_HUD_Z_CHANGED while the eye is
still in nullspace. Added an if to make sure the eye has a valid
location.

* Nerfs fish infusion slipperiness and make them slightly more susceptible to fire and heat. (#88065)

* Automatic changelog for PR #88065 [ci skip]

* Fixes invisible atmos fires (#88155)

* Fixes Kobain-style suicides (#88151)

FUCK

:cl:
fix: Fixed Kobain-style suicides
/:cl:

* Automatic changelog for PR #88155 [ci skip]

* Refactor heretic ascension announcements (+ trait source consistency) (#88149)

I kinda did a small refactor of heretic ascension announcement code,
based on what I did in
https://github.com/BeeStation/BeeStation-Hornet/pull/11925

instead of each heretic ascension individually doing `priority_announce`
in `on_finished_recipe`, there's just `announcement_text` and
`announcement_sound` vars now, and a `announce_ascension` proc is called
in the shared `on_finished_recipe` of all final rituals.

The only reason the `announce_ascension` proc is needed is because lock
path uses a different format from all the other announcements, so the
final lock ritual needs to override the announcement so it can stay the
same.

Also made all heretic ascensions which apply traits use the type as the
trait source - before, they were inconsistently either using the type,
name, `REF(src)`, or `MAGIC_TRAIT` as the trait source.

also ash ascension did not need a `if(length(traits_to_apply))` check
before adding traits, bc it's adding traits from a *static, populated
list*.

ascension doesn't feel like a real word anymore with how much I've typed
and read it in the past 20 mins or so lol

cleaner code = good

:cl:
refactor: Cleaned up code relating to heretic ascension announcements
and traits.
/:cl:

* [no gbp] fixes solars cabling + additional pipes for sci (#88139)

added some missing cable to solars and 1 smes, and science is connected
to distro from 2 directions now so it doesnt immediately stop receiving
air if a pipe breaks

fixes #88138
most departments have more than 1 connection to distro ( on this map )

:cl:
fix: fixed some wiring on wawastation, added an additional
distro/scrubbers connection to sciences network
/:cl:

* Fix coffee maker items teleporting to AI/Cyborg locations (#88140)

- Fixes #88136

Both AIs and cyborgs would have coffee maker interactions that result in
an item (sugar packets, coffee cups, coffee pots, etc.) teleporting to
their location. This was due to the `ALLOW_SILICON_REACH` being used
which doesn't enforce a radius distance check for silicons.

Those pesky silicons can no longer steal coffee from humans.

:cl:
fix: Fix coffee maker items teleporting to AI/Cyborg locations
/:cl:

* Changeling absorb sound (#88133)

- it doesn't ignore walls

https://github.com/user-attachments/assets/fa4d010b-cee4-455a-a3c8-43e6839ab596
I think it's very atmospheric and helps hammer in the idea that
changelings are horrific monsters
:cl: grungussuss
sound: changelings now have a sound for absorbing
/:cl:

* Fixes meteors freezing in place if they continiously miss the station on a looping z level (#88130)

Closes #88004
How has this not been caught before? They have a moveloop timeout (sane)
but don't delete themselves once it expires (insane)

:cl:
fix: Fixed meteors freezing in place if they continiously miss the
station on a looping z level
/:cl:

* Runechat messages no longer hang in SS queue with invalid callbacks if the client logs out before they've finished building themselves (#88127)

Super niche, unnoticeable in-game, found when runtime diving. Don't
leave callbacks to qdeleted datums and clients in queue please.

:cl:
fix: Fixed a runtime caused by logging out while your runechat message
was appearing.
/:cl:

* Automatic changelog for PR #88149 [ci skip]

* Automatic changelog for PR #88139 [ci skip]

* damage done by thrown objects to /obj is multiplied by the demolition modifier (#88141)

damage done by thrown objects to /obj is multiplied by the demolition
modifier

i think its supposed to respect the demolition mod i mean uhh that seems
like an oversight??

:cl:
fix: damage done by thrown objects to objects respects their demolition
modifier
/:cl:

* Automatic changelog for PR #88140 [ci skip]

* Automatic changelog for PR #88133 [ci skip]

* Automatic changelog for PR #88130 [ci skip]

* Fix weather effects not applying to areas like space (#88119)

Weather effects were ignoring certain areas like space. This was due to
checking the area's `z` position. Some areas like `area/space` are in
many different z-levels and the `z` position defaults to Centcomm `z=1`.

The solution is to loop through `area.turfs_by_zlevel` and check if it
has any turfs in that z-level.

CC @LemonInTheDark the mutable overlay for weather effects is not
applying to space.

https://github.com/tgstation/tgstation/blob/7e27663517731fe8f3d955477b1a97ace5a6ff83/code/datums/weather/weather.dm#L253-L271

I'm assuming this is due to plane master shengians. I could just add the
effects like the radiation nebula:

https://github.com/tgstation/tgstation/blob/7e27663517731fe8f3d955477b1a97ace5a6ff83/code/datums/station_traits/negative_traits.dm#L486-L493

But this doesn't appear reversible. I'm open to suggestions.

Rad storms now affect space outside the station. Other weather effects
should also be consistent and not be ignored by certain misc. areas
types.

:cl:
fix: Fix weather effects ignoring certain areas like space.
/:cl:

---------

Co-authored-by: MrMelbert <[email protected]>

* Automatic changelog for PR #88127 [ci skip]

* Automatic changelog for PR #88141 [ci skip]

* Automatic changelog for PR #88119 [ci skip]

* The pulse rifle should spawn from the arcade machine now. (#88146)

Tested on a private server with edited odds that the pulse rifle doesn't
spawn when won and only the message pops.
After code edit it spawned accordingly but the low odds remain.

Beating one in a million odds and not getting a pulse rifle is
disappointing, it should spawn now.

:cl:
fix: fixed the pulse rifle not spawning when won
code: added get_turf to the pulserifle  when the odds are beat.
:cl:

* Automatic changelog for PR #88146 [ci skip]

* Make Baklava Pie retain its quality after slicing (#88118)

Adds the crafting complexity to the slices of baklava, so it doesn't go
from very good to nice after you slice it.
Was asked to put the fix to upstream.

If I have one more food suddenly degrade in quality after slicing it
into multiple portions I am going to explode the fucking kitchen,
especially after having to bother Hydroponics to mutate a plant
specifically for it

![image](https://github.com/user-attachments/assets/b4cd692e-10f8-4701-a772-45aad97e8c43)

</details>

:cl:
fix: Makes a sliced baklava pie keep its complexity after slicing
/:cl:

* Automatic changelog for PR #88118 [ci skip]

* Internal organ purge: Override Edition (#88132)

Deletes _internal_organ.dm and moves all override procs from it into the
main organ file, since its unused now. Fixes wrong qdel check in
identity code.

:cl:
code: Cleaned up organ code
/:cl:

* Automatic changelog for PR #88132 [ci skip]

* Fixes duplicate signal registation from defib paddles (#88163)

You do realize in most cases the player must be ***wearing*** the damn
thing to use it, right? Also I am truely clueless as to why we were
registering to defib.loc since check_range checks for turfs anyways.

:cl:
fix: Fixed some issues with defib paddle retraction.
/:cl:

* Reagent grinders display number of material sheets they hold instead of defaulting to 1 (#88154)

Currently grinders just increase the amount of items by 1 when
displaying them, which works fine for everything except stacks. This PR
makes grinders take into account the amount of sheets in a stack so they
properly display how many materials you put into them.

You'd expect 50 sheets of silver you put in a grinder to display as 50
sheets instead of 1.

:cl:
qol: Reagent grinders display number of material sheets they hold
instead of defaulting to 1
/:cl:

* Automatic changelog for PR #88163 [ci skip]

* Automatic changelog for PR #88154 [ci skip]

* carpenter hammer fits on belt slot (#88109)

bro its a hammer

(speaking of, i feel like it should fit on the toolbelt & be a crowbar.
but that's basically 1:1 the preexisting claw hammer, idk)

bro it's a hammer.

:cl:
qol: carpenter hammer fits on belt slot
code: renames belt_icon_state to inside_belt_icon_state for
intelligibiility
/:cl:

* Automatic changelog for PR #88109 [ci skip]

* Replace `caller` args in pathfinding code with `requester` (#88084)

Somewhat of a port of
https://github.com/ParadiseSS13/Paradise/pull/26401, albeit re-done from
scratch (with the power of find and replace)

Caller is a protected/reserved var in 516. We use it a lot. It's used in
more places than this, but I'm a perfectionist and can't think of better
names for most of the other uses (mostly mob AI, holocall, and
`InterceptClickOn` related), so I'm just doing pathfinding for now.

Prep for compiling on 516

No user-facing changes - this is merely renaming vars.

* Fixes a runtime in cranial fissure remove code (#88081)

This can be called after victim gets qdeleted from bodypart cleanup,
runtimes here prevent wound from cleaning itself up which in return
prevents the bodypart from deleting properly.

:cl:
fix: Fixed a runtime in cranial fissure remove code
/:cl:

* Automatic changelog for PR #88081 [ci skip]

* Change some status effects adjustments to use `SECONDS` (#88098)

Some of the status effect adjustments were missing `SECONDS` to their
proc calls.

N/A

* Automatic changelog for PR #88098 [ci skip]

* Adds a disease that makes you reject gravity. (#87666)

This PR adds a small, pre-canned virus to the game, the "Localized
Weightloss Malfunction" virus, or weightlessness virus. Weightlessness
is a weak contact virus that can only spawn due to randomized virus
spreading virus.

The virus itself applies weightlessness via having the mob produce their
own internal supply of gravitium, resulting in a lack of control from
gravity. This is a bit of a patch job, and if we'd like to make this
apply a more specific status debuff that can be managed, but this works
well enough for proof of concept anyway.

![image](https://github.com/user-attachments/assets/fb1783b2-db7c-49b6-b973-1b7ee35565b7)

The disease is cured via liquid dark matter, but has a reasonable chance
to self-cure as well similar to most diseases do nowadays.

Seemed like an interesting mechanical intersection, and while it can be
frustrating, it is by no means a round removal virus. It is debilitating
enough that it would necessitate a medbay visit. Liquid dark matter also
serves as a occasional grenade chemical, but giving it a medical use
provides another inch of plausible deniability.

I made this PR a little bit ago on a whim, and it's been sitting on my
repo for a hot second here, so I thought I'd get this moving if there's
no major issues.

* Automatic changelog for PR #87666 [ci skip]

* Guncode Agony 4.4: Armor as an argument (#88143)

Lil cleanup/tweak I couldn't do in the main PR because it conflicted
before and i forgot after. Yes this works with overrides that don't have
the arg, yes I tested it.

Don't run armor code thrice please thank you

:cl:
code: Projectile impacts no longer fetch mobs' armor values thrice
/:cl:

* Automatic changelog for PR #88143 [ci skip]

* Fixes ghosts being able to make analyzing sounds (#88177)

Prevents ghost from emitting analyzing sounds when using the gas scan
verb
Fixes a little bug

:cl: Hardly
fix: Ghosts can no longer emit spooky analyzing sounds when scanning
/:cl:

* Automatic changelog for PR #88177 [ci skip]

* Adds a fuel examine to lighters (#88170)

Didn't even know they had this until it stopped lighting.
While it has fuel, it says it has x fuel out of its maximum.
When empty, it says what to refuel it with (welder fuel)

![image](https://github.com/user-attachments/assets/4096e68f-c2e5-4b50-abd4-f904059a23ee)

<details><summary>(For reference, Welders have something similar)
</summary>

![image](https://github.com/user-attachments/assets/afbf675c-85ee-49c8-8956-0e77352544d6)
</details>

I do not know how to set up math to make this number more useful; it
tends to burn .25 units ever few seconds but beyond that it's just
numbers and I'm not the best with numbers.
At the least you can see if it's full or empty.
This mechanic is not shown to players in any way besides the lighter not
lighting.
:cl:
qol: added an examine note to lighters showing their fuel
/:cl:

---------

Co-authored-by: Fikou <[email protected]>

* Automatic changelog for PR #88170 [ci skip]

* [NO GBP] Fixes a non-player facing runtime I accidentally left in organ manipulation (#88164)

Thankfully this runtime didn't actually do anything whatsoever but it
still messed in the logs. I'll test my stuff better I guess?

:cl:
fix: Fixed a (non-player facing) runtime in organ manipulation surgery
/:cl:

* Automatic changelog for PR #88164 [ci skip]

* fixes raptors breaking their troughs, removes troublesome raptors and you can now rename ur raptors (#88153)

after my PR removing most self-registering attack signals, raptors would
sometimes break their troughs after interacting with it, this fixes
that. Also, removes the troublesome trait from raptors. raptors with
this trait would go out and harm other raptors everyonce in a while, but
ive discovered that this can be annoying to deal with when you have many
of them, so ive removed it and im going to replace it with something
less annoying in the future. Also you can now give your raptors pet
collars, effectively allowing u to rename them

fixes raptors breaking their trough and provides some QOL to raptor
ranching

:cl:
fix: raptors no longer break their trough upon interacting with it
balance: removed the troublesome trait from raptors, they now wont go
out to attack their colleagues.
add: you can now give pet collars to ur raptors to rename them
/:cl:

* Automatic changelog for PR #88153 [ci skip]

* [NO GBP] Ensures that if your brain is removed you die (#88194)

Closes #88193

:cl:
fix: Ensures that if your brain is removed you die
/:cl:

* Automatic changelog for PR #88194 [ci skip]

* Fixes a non-player facing runtime in portable atmos machinery code (#88175)

transferItemToLoc doesn't check if item exists, and tries to call
animation code on a non-existent item if you're only removing the
canister. No clue how I haven't caught it during #86734, or how anyone
hasn't caught it in the past 5 months to be honest. This doesn't
actually do anything from player's perspective since it doesn't abort
the main proc.

:cl:
fix: Fixed a non-player facing runtime in portable atmos machinery code.
/:cl:

* RCD deconstruction is not cancelled by UI changes (#88117)

- Fixes #88108

:cl:
fix: rcd deconstruction is not cancelled by UI changes
/:cl:

* removes the northstar arcship from the codebase (#87937)

![image](https://github.com/user-attachments/assets/95e7545e-713c-4877-adeb-853f1f0d9646)

closes https://github.com/tgstation/tgstation/issues/87888
The gods have spoken
:cl: grungussuss
del: The northstar arcship has been removed. :(
/:cl:

* Automatic changelog for PR #88175 [ci skip]

* Automatic changelog for PR #87937 [ci skip]

* [NO GBP] Fixes pixel position of fish overlays for aquariums (#88165)

* Automatic changelog for PR #88165 [ci skip]

* Revert "replaces reputation locks with instead being prohibitively expensive based on rep" (#88184)

Reverts tgstation/tgstation#87382

huge noob trap with unclear UI

bypasses the utility of side objectives granting reputation

the time lock is no longer a time lock

@Watermelon914

:cl:
balance: Time-gated traitor uplink gear is returned to being hard
reputation locked with a static price.
/:cl:

* Automatic changelog for PR #88184 [ci skip]

* Fixing aquarium ui showing the user contents rather than those of the aquarium itself (#88160)

* Automatic changelog for PR #88160 [ci skip]

* Converts pills and patches into interact_with_atom (#88157)

Title. Code maintenance, code sanity and because overriding attack()
like this is bad

:cl:
code: Converted pills and patches into interact_with_atom
/:cl:

* Automatic changelog for PR #88157 [ci skip]

* Fixes a typo in legionnaire abilities (#88188)

Fixes a typo in legionnaire abilities

typos bad

:cl:
spellcheck: Fixes a typo in legionnaire abilities
/:cl:

* Automatic changelog for PR #88188 [ci skip]

* Reduces volume of fire sounds (#88192)

Reduces volume of #84280's fire sounds by 40%

Its very loud at 50% and I don't like having my eardrums continiously
blown out when I spectate a plasmafire

:cl:
sound: Reduced volume of fire sounds
/:cl:

* Automatic changelog for PR #88192 [ci skip]

* Buffs Morphine by nerfing its sedative power (#88182)

* Automatic changelog for PR #88182 [ci skip]

* [NO GBP] FIsh flops again (#88202)

This will fix #88112.

This will fix #88112.

:cl:
fix: FIsh flops again.
/:cl:

* Automatic changelog for PR #88202 [ci skip]

* Fixes brain transplants (#88198)

* Allows Atmospherics MODsuits store extinguishers on their suit storage slot (#88208)

* Automatic changelog for PR #88198 [ci skip]

* Automatic changelog for PR #88208 [ci skip]

* Fixes "is blacking out" message (#88200)

* Automatic changelog for PR #88200 [ci skip]

* Mulebot wires no longer references typepaths (#88220)

Classic case of `[src]` in a datum

Fixes #88206

:cl: Melbert
fix: Mulebot wire hacking is less fourth wall breaking
/:cl:

* Automatic changelog for PR #88220 [ci skip]

* `/datum/surgery/organ_manipulation/Destroy()` calls parent (#88218)

* Automatic changelog for PR #88218 [ci skip]

* [NO GBP] ACTUALLY allow dot radio prefixes to also work with the tgui-say radio prefix display (#88207)

imagine fucking up a port of _your own code_

(i plead "silly")

things working is good

:cl:
fix: ACTUALLY allow dot radio prefixes to also work with the tgui-say
radio prefix display.
/:cl:

* Automatic changelog for PR #88207 [ci skip]

* Felinid Meowing and Purring Emotes pt.2 (#88212)

Adds emotes for meowing and purring. Only players with felinid tongues
can use these emotes and they mirror the new cat emotes exactly. If a
player does not have a felinid tongue, then a text warning will tell the
player they can't make the sound.

This revision from the original pr makes it possible to surgically
implant the ability to meow and purr into someone.

Head Coder approval granted by @Mothblocks

[2024-10-10
19-30-04.webm](https://github.com/user-attachments/assets/0d0c40e2-2299-4cce-ba96-6427ecae15b1)
There is currently a popular demand from felinid players to use these
emote noises for silly cat sounds. Recently a PR allowed all mobs to
meow, but it was patched to only cats from now on. Emulating the noises
a cat makes as a felinid has given a lot of enjoyment to those playing
from my own observations in-game. Cats are awesome!
:cl:
add: New purr and meow emotes for players with felinid tongues
/:cl:

* Automatic changelog for PR #88212 [ci skip]

* Fixes some chainsaw issues (#88225)

- Fixes #88105. No default sound & balloon alert when the chainsaw is
turned on & it's not invisible in hand when it's turned off
- Fixes
https://github.com/tgstation/tgstation/issues/88105#issuecomment-2493592188.
The mounted chainsaw has a new animated sprite when turned on instead of
going invisible

:cl:
fix: chainsaw is not invisible when turned off in hand
fix: chainsaw won't play ping sound when turned on
fix: mounted chainsaw has a new animated sprite when turned on & won't
go invisible in hand
/:cl:

* Automatic changelog for PR #88225 [ci skip]

* Addresses Edge-Case For SM Delamination Safety Message in Disposals (#71970)

Hey there,

Before it would say that "you hold onto disposalsholder" tightly, but
since disposalsholder is an abstract object (lol), it just didn't make
sense to players. So, I just addressed that edgecase in the portion when
we send messages to player regarding their safety in relation to being
in a metal tube preventing them from going insane.

Fixes #71949

![image](https://user-images.githubusercontent.com/34697715/207222647-4617e702-65c9-4439-9f5a-5620ec2ed0ae.png)
:cl:
fix: The message you get when attempting to escape an SM delamination by
hiding in a disposals pipe should now make more sense.
/:cl:

* Automatic changelog for PR #71970 [ci skip]

* Fixes random stuff spilling into ooc tab (#88221)

`boldannounce` is NOT for use ICly it's only for OOC stuff. `bolddanger`
is identical it just doesn't carry the same baggage

:cl: Melbert
fix: Stuff like the SM exploding will no longer output to your OOC tab
/:cl:

* [NO GBP] Fixes colossus committing suicide on a regular basis (#88223)

I can guess why this is here to prevent lying down cheese but
nonetheless, this is stupid since this proc is also what's preventing
firer from hitting themselves.
Closes #88209

:cl:
fix: Fixed colossus committing suicide on a regular basis
/:cl:

* Automatic changelog for PR #88221 [ci skip]

* Automatic changelog for PR #88223 [ci skip]

* [no gbp] few repairbot fixes and some beacon pathing improvements. (#88144)

this fixes some few sentient repairbot-related issues that were reported
a few days ago. ive also given sentient repairbots a new simple UI to
manage their materials.

![image](https://github.com/user-attachments/assets/bc269769-439e-4aa8-82ca-e433c031fbec)

while I was at it, i also fixed bots continuously trying to path to
unreachable beacons, which can be quite costly since they're regularly
very far away.

closes #88067

:cl:
fix: repairbots no longer get flashed by their own welder
fix: repairbots no longer break glass tables they step on
fix: repairbots can no longer flush their own welders
fix: fixes some runtimes when emagged repairbots try to deconstruct
things
fix: fixes sentient repairbots not being able to see or remove their
material counts
/:cl:

* Automatic changelog for PR #88144 [ci skip]

* IV drips now pull you closer and create a beam to you (#88217)

https://github.com/user-attachments/assets/173c1753-3da4-4180-80ea-eb49d19e7b2f

Purely visual. Pulling someone from an IV drip is dangerous so it's nice
to make it more clear than the current very small appearance change that
doesn't give you any more information than that *someone* is connected.

If you review tell me on Discord bc I don't check GitHub

:cl:
qol: IV drips now create a beam from their spout to your body, and will
visually pull you closer.
/:cl:

* Automatic changelog for PR #88217 [ci skip]

* Prevent slimes from feeding while immobilized (#88219)

So there's a few ways to tackle this

- Freezing should stop people from taking actions in general?
- Being immobilized should stop you from buckling in general?

But I went for the least offensive option, of simply blocking feeding if
you can't move

Fixes #88185 (partially)

:cl: Melbert
fix: Frozen slimes can't latch on to you (but they can still attack you
technically)
/:cl:

* Automatic changelog for PR #88219 [ci skip]

* Adds a bunch of interaction related unit tests (#88210)

I made these a year ago and meant to PR them but never got around to it

Basically just adds a bunch of unit tests for a bunch of specific attack
chain interactions that are prone to breaking due to snowflake

Increasing coverage of attack chain is good so people who are working on
it don't have to worry about the 1000 edge cases breaking

- Blocking (both unarmed and armed)
- Cuffs
- Eyestab
- Flashes (combat mode, non combat mode, with flash protection)
- Help intent
- Pistol whip
- Butchering with a bayonet
- Damp rag smothering
- Droppers
- EMP flashlights
- Holofans
- Door attack hand redirector
- Tool usage on Cyborgs
- Punching Cyborgs
- Ability to bash tables
- Ability to bash any structure
- Ability to use tools on machinery
- Kinetic Crusher projectile
- Spraycans (capping, making graffiti)
- Loading a syringe gun

* Teleporting while leaning now makes you fall on your face (#88215)

Co-authored-by: MrMelbert <[email protected]>

* Automatic changelog for PR #88215 [ci skip]

* Fix missing returns in limb dislocation treatment code (#88234)

* Automatic changelog for PR #88234 [ci skip]

* Prevents bounty pads from sending holographic and abstract items. Tidies the code a bit. (#88242)

Co-authored-by: MrMelbert <[email protected]>

* Automatic changelog for PR #88242 [ci skip]

* Adds a new item to the chef traitor's uplink: Molt'Obeso sauce. (#87103)

A new item for 2 TC has been added to the chef's traitor uplink –
Molt'Obeso sauce!
Buying it, you get a bottle for 50 units, filled with this sauce. After
eating Molt'Obese, you'll think you're still hungry. It also removes the
limit on how much food you can eat, so you can just keep going and
going, but you never get full. Plus, Molt'Obeso helps your body absorb
more nutrients from food, so the food is even more nourishing with it.
The Syndicate sabotages the NT station by making everyone fat?
:cl:
add: Add a new item to the chef traitor's uplink: Molt'Obeso sauce. A
sauce that makes people want to eat too much.
/:cl:

* Automatic changelog for PR #87103 [ci skip]

* [NO GBP] Fixing the profound fisher component. (#88204)

* Automatic changelog for PR #88204 [ci skip]

* Fixing/reworking explosive interactions with organ manip and fishing (#88232)

I have grown to dislike the previous implement of explosive fishing. It
was particurly broken around fish sources that checked if the fishing
spot was of a specific type, and the FISH_SOURCE_FLAG_EXPLOSIVE_MALUS
flag only really worked around turfs because of the gap between pooling
the spawn locations and spawning the loot, which would have made trying
it on movables quite unsafe since they're moved to nullspace when
deleted.

This has lead me to rework how explosive fishing malus/exhaustion
accumulates in a simplier and more effiient way. Fish are now spawned
immediately, and the counter for the malus goes up by one each call, and
decays over time at a rate of 1 every 5.5 seconds.

This also fixes #88227.

Easier implementation of explosive fishing and bugfix.

:cl:
fix: Bombing someone during organ manipulation no longer summons new
organs.
/:cl:

---------

Co-authored-by: Time-Green <[email protected]>

* Automatic changelog for PR #88232 [ci skip]

* Adds some Fish Content (#88213)

Adds a new biotype, MOB_AQUATIC, indicating the mob is water-themed
somehow. Given to carp, lobstrosities, frogs, axolotls, penguins, fire
sharks.

Aquatic mobs can be hooked by fishing rods, even without a jawed fishing
hook installed.

The carp and fish infusion sets now give the infusee the aquatic
biotype. Added support for infusions adding a biotype.

You can check for a fish's pulse with a stethoscope, which will tell you
its status even without fishing skill.

Refined fish health status checks to be more precise.

Added 'Fishy' Reagent, a version of strange reagent that only works for
fish or aquatic biotype mobs. It's made with omnizine, saltwater, and
carpotoxin or tetrodotoxin.

Added a lifish chemical reaction that creates fish.

Fish content fish content fish content

> Adds a new biotype, MOB_AQUATIC, indicating the mob is water-themed
somehow. Given to carp, lobstrosities, frogs, axolotls, penguins, fire
sharks.

We were really missing this one by now.

> Aquatic mobs can be hooked by fishing rods, even without a jawed
fishing hook installed.

> The carp and fish infusion sets now give the infusee the aquatic
biotype. Added support for infusions adding a biotype.

I want to reel in fish people. This is going to be hilarious.

> You can check for a fish's pulse with a stethoscope, which will tell
you its status even without fishing skill.

Fish doctor content - also lets you see the exact status of a fish's
health even if you haven't interacted w/ fishing that shift.

> Added 'Fishy' Reagent, a version of strange reagent that only works
for fish or aquatic biotype mobs. It's made with omnizine, saltwater,
and carpotoxin or tetrodotoxin.

A somewhat easier to get version of strange reagent, purely for fish, as
they die very easily and the road to making SR is a large diversion. I
might add this to cargo, maybe?

> Added a lifish chemical reaction that creates fish.

Fish. fish fish fish fish fish.

@Ghommie
:cl:
add: Adds a new biotype, MOB_AQUATIC, indicating the mob is water-themed
somehow. Given to carp, lobstrosities, frogs, axolotls, penguins, fire
sharks.
add: Aquatic mobs can be hooked by fishing rods, even without a jawed
fishing hook installed.
add: The carp and fish infusion sets now give the infusee the aquatic
biotype. Added support for infusions adding a biotype.
add: You can check for a fish's pulse with a stethoscope, which will
tell you its status even without fishing skill.
qol: Refined fish health status checks to be more precise.
add: Added 'Fishy' Reagent, a version of strange reagent that only works
for fish or aquatic biotype mobs. It's made with omnizine, saltwater,
and carpotoxin or tetrodotoxin.
add: Added a lifish chemical reaction that creates fish.
/:cl:

---------

Co-authored-by: _0Steven <[email protected]>
Co-authored-by: Ghom <[email protected]>

* Automatic changelog for PR #88213 [ci skip]

* Adds some tips for most of my changes to the game (#88186)

Adds some tips for most of my changes to the game.

Player visibility is important to see what cool features there are and
tips are kind of, well, poorly mantained, honestly. Like, the last one
was about bitrunning.

:cl:
qol: Added some tips of the round.
/:cl:

---------

Co-authored-by: MrMelbert <[email protected]>
Co-authored-by: Jacquerel <[email protected]>
Co-authored-by: norsvenska <[email protected]>

* Automatic changelog for PR #88186 [ci skip]

* Replaces scarves station trait with scryers (#88167)

Removed the scarves station trait and replaced it with modlink scryers.

If you're confused, they're those things on the robotics mod crate whose
sprite annoyingly and opaquely covers up the actual cores.

The scryers allow you to start a semi-private conversation with any
other modlink _ignoring the status of comms_. This doesn't make them as
useful for shouting out threats but lets you discuss things with
essential personnel, or report crime, even after comms is blown up.

![260621454-062983ee-6058-4e78-a3aa-bccda1a3e224](https://github.com/user-attachments/assets/9a6aa38b-e10a-4e23-8691-12538fd3348c)

![image](https://github.com/user-attachments/assets/5464d1a4-5b5b-47c6-9074-080ae3b3592d)

https://github.com/tgstation/tgstation/pull/77639

This PR doesn't actually give the modlinks names, so they'll all show up
as modlink (394) and be unusable. Something should be done there I'm
just not quite sure how to handle it and the inevitable deluge of
dropped modlinks that would recieve tons of unheeded calls. ~~Maybe we
can make them undroppable for the first 30 minutes.~~

Scryers are a cool and underused aspect of the game. Their ability to
function off comms is balanced out by their _in_ability to speak to more
than one person at once. Having this as a trait helps showcase them and
will likely allow for some enjoyable moments. I'm imagining spam calls,
death threats, _actual_ death threats, prank calls, etc.

![image](https://github.com/user-attachments/assets/c505dab5-cd08-4485-b6cb-2d7390630e2a)
:cl:
add: Centcom's janitorial department has gotten tired of scooping up
discarded scarves from the floor and has instead assigned MODlink
scryers to some stations' crew in an attempt to spice up the disposal
team's jobs.
/:cl:

---------

Co-authored-by: Ghom <[email protected]>

* Automatic changelog for PR #88167 [ci skip]

* Added 'loose hat' functionality to the hat stabilizing component, used in modsuist (#88030)

You can now wear a hat on any modsuit, even w/o the stabilizing module.

However:
- It will always sit slightly askew, at an angle.
- Involuntarily falling to the ground for any reason will cause the hat
to fall to the ground.
- Being thrown, slapped, or slipped will send it flying off.

Added the Atrocinator, Hat Stabilizer, and Tanning modules to the black
market.

Added the loose hat component to bio/bomb/rad hoods and space helmets.

> You can now wear a hat on any modsuit, even w/o the stabilizing
module.

I think the notion of, say, the Head of Security putting his cap on his
modsuit and then being slipped by the clown, who then steals the cap, is
really funny.

https://github.com/user-attachments/assets/3ad8a74d-0cb8-4118-8beb-d2ce9c76b358

The module is fairly rare and sometimes I just want to wear a silly hat
alongside the modsuit without badgering the captain for his hat module.
The downsides are rather plentiful so it's not like the hat module is
made irrelevant - if anything it makes it more notable.

This will add a bunch of enjoyable silliness to rounds, so I think it's
worth it.

> Added the Atrocinator, Hat Stabilizer, and Tanning modules to the
black market.

> Added the loose hat component to bio/bomb/rad hoods and space helmets.

It sucks losing your iconic drip when you need to venture out to space
for whichever reason - this lets you keep it without taking up space in
your bag, while having the throw downside.

They just feel perfect for the vibes of the black market. More
miscellaneous completely useless fancy stuff that has exorbitant prices
please!

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

:cl:
add: You can now wear a hat on any modsuit, even w/o the stabilizing
module. But it may easily fall off...
add: Added the Atrocinator, Hat Stabilizer, and Tanning modules to the
black market.
add: Added the loose hat component to bio/bomb/rad hoods and space
helmets.
/:cl:

~~I'm having a bit of an issue. Somewhere I fugged up and now the worn
overlay on the mod helmet sprite doesn't work properly...~~ Turns out
that code was never used and nonfunctional to begin with so I removed it
entirely yay

* Automatic changelog for PR #88030 [ci skip]

* [NO GBP] Various CvH tweaks & fixes (#88168)

Increased Rusted Harvester health from 35 to 45.

Increased haunted longsword's demolition mod by 20%.

Rusted harvesters won't get narsie telling them to bring her their
victims.

Heretic summons aren't affected by void chill anymore.

Add no gbp tag if you want

> Increased Rusted Harvester health from 35 to 45.

I want these to be frail, but being one-tapped by a sharpened sword is a
tad too much I think. I balanced that health amount when they delimbed
cultists instantly, but that's now a delayed action on crit so it's
moot.

> Increased haunted longsword's demolition mod by 50%.

To some degree I want people to throw these away deep into maintenance,
but there's a binding button now, perfectly serviceable, and I've _seen_
how miserable it is to be stuck alone deep in maintenance waiting for a
just-too-long cooldown to break down 6 airlocks in a row. Seal them away
the right way or suffer the consequences of your actions.

> Rusted harvesters won't get narsie telling them to bring her their
victims.

They ain't yours, dummy.

> Heretic summons & rusted harvesters aren't affected by void chill
anymore.

Why my friends freezing too? :(

This fix also causes 'mansus touched' things to be unaffected by the
chill. It includes the crimson medallion, which is obtainable by
cultists. In my mind that's not a bad thing but it's not my path rework
so I'll tag the author of it

:cl:
balance: Increased Rusted Harvester health from 35 to 45.
balance: Increased haunted longsword's demolition mod by 20%.
fix: Rusted harvesters won't get narsie telling them to bring her their
victims.
fix: Heretic summons aren't affected by void chill anymore.
/:cl:

* Automatic changelog for PR #88168 [ci skip]

* Adds in the modulo operator to the circuit arithmetic component. (#88253)

![image](https://github.com/user-attachments/assets/17a5d230-c10f-4fda-b782-0d59c2797bff)
This PR just adds in modulo to the circuit arithmetic component.

You _can_ calculate it yourself, but then it ends up extremely unoptimal
and you're usually better off not doing it. It also ends up really hard
to read.
I want to see more clever circuits and computing things.

:cl:
add: Added in the modulo operator to the circuit arithmetic component.
/:cl:

* Automatic changelog for PR #88253 [ci skip]

* Fix double-encode in AI shuttle call reasons (#88245)

This fixes double html encoding with AI shuttle calls, due to
`tgui_input_text` being called without setting `encode = FALSE` -
`SSshuttle.requestEvac` expects unencoded text.

I added documentation to `SSshuttle.requestEvac`, including clarifying
that it expects non-html-encoded text.

&​#​39;​ is annoying

:cl:
fix: Fixed double-encoded messages with AI shuttle call reasons.
/:cl:

* Automatic changelog for PR #88245 [ci skip]

* Fixes Nebula's robotics fabricators being obstructed roundstart (#88236)

Closes #88230

:cl:
fix: Fixed Nebula's robotics fabricators being obstructed roundstart
/:cl:

* Automatic changelog for PR #88236 [ci skip]

* Aquariums are now potential fishing spots. (#88243)

You can now fish from aquariums if you wish to. This includes some
backend changes to make it possible for the fish table from
get_fish_table() to contain instances, and all that it entails up to
spawn_reward(), which is a requirement for the gimmick to respect the
various traits and other variables of the already instantiated fish
rather than read from cached properties.

The fish progress score/index had only little nasty flaw that has been
nagging me since day one: Not all fish species can be caught. Skipping
McGill, which is a peculiar case that for cheevo purposes should be
considered a standard goldfish, there is the one, unsignificant yet rare
purple sludgefish which can only be gotten as a rare evolution of the
generic sludgefish. Talk about petty, but this may be a long-term nit I
prefer to handle right now.

Also why not? The 'unmarine mastodon' is near impossible to get unless
you somehow find a oil well which is locked behind a specific ruin.

:cl:
fix: Aquariums are now potential fishing spots.
/:cl:

* Automatic changelog for PR #88243 [ci skip]

* Fix hands/clothes still getting covered in blood with light step (#88247)

* Automatic changelog for PR #88247 [ci skip]

* Moves damage overlay disabling into a separate trait for the numb quirk (#88281)

Detemination gives you TRAIT_ANALGESIA, so if you take ***too much***
damage you'll be unable to see it as well. Plus linking blunt overlay
hiding to reagents isn't very good practice as it can cause flickering
if you microdose.
(Also fixed incorrect trait sources on the quirk and kept it for the
nocrit deathmatch modifier)

Closes #88278

:cl:
fix: Fixed damage overlays hiding themselves or flickering when you get
wounded.
/:cl:

* Automatic changelog for PR #88281 [ci skip]

* Fix itchy skillchip status effect "Curse of Mundanity", adds unit test for effects set to "Curse of Mundanity" (and missing IDs) (#88240)

Fixes a lot of status effects having the default alert, adds a unit test
to check that status effects don't forget to change it

I chose a test rather than just making the default "no alert" because I
think people making status effects should think about whether it should
have an alert

Also I added a test for effects which did not set an ID because that's
kind of important, I applied the same mindset here to account for
abstract types but admittedly less sold on this one.

:cl: Melbert
fix: You should be afflicted by the "Curse of Mundanity" far, far less
/:cl:

* Automatic changelog for PR #88240 [ci skip]

* [NO GBP] Fixes projectile parrying (#88269)

I have... questions, to previous self. Yeah.

:cl:
fix: Fixed projectile parrying
/:cl:

* Automatic changelog for PR #88269 [ci skip]

* Fix admin local sound (#88214)

* Automatic changelog for PR #88214 [ci skip]

* [no gbp] attribution mishaps (#88246)

* Aquarium kits can now be printed + other tweaks. (#88068)

Aquarium kits can now be printed from service, cargo, science
protolathes and the autolathe too, from half a sheet of metal. You still
need the other materials to set it up but it should be fairy simple if
you can access a proto/autolathe.

The 'Growth/Reproduction' setting for aquariums has been renamed to
"Safe Mode", which, on top of disabling features such as growth,
reproduction, evolution, power generation etc etc, will also disable the
water, temperature and food requirements for keeping the fish alive.
Useful if you want a purely ornamental aquarium or you have to skidaddle
somewhere else for a while.
The lawyer, as well as prefilled aquariums start with 'Safe Mode'
enabled.

The 'Aggressive' fish trait has been replaced with 'Territorial', which
is exactly the same but the fish won't lash out unless the aquarium is
populated by five fishes or more. No more angelfish viciously attacking
the guppy and goldfish in prefilled aquariums.

Tweaked a couple values around hunger and fish health loss when starving
or in a bad environment to cause slightly less damage.

Lastly, added screentips to the aquarium component, which is something
I've forgot to do in the PR that brought it.

Aquariums may be a complex feature, but as far as I can tell, I had been
neglecting the possibility of aquariums as simple room decoration for a
while (outside of the beauty-related mechanics), and the constant
maintenance (and perhaps a bit of knowhow) they require makes them awful
at that. Also, the "growth/reproduction" setting really didn't have a
reason to be before, since it didn't offer any tangible benifit to turn
it off, so I had to revamped it.
Also it's been proven by now that keeping aquariums as cargo-orderable
stuff is just bad.

As for the fish trait change, it just sucks to see the angelfish shank
the goldfish with no way to solve it other than removing the
hyper-aggressive killer fish from san diego fella.

:cl:
balance: Aquarium kits can now be printed from cargo, service, science
protolathes as well as the autolathe. They no longer have to be ordered
from cargo.
balance: Revamped the "Growth/Reproduction" setting for aquarium to
"Safe Mode", which also disables the food, temperature and water
requiremenets of aquariums, making it useful for purely decorative
aquariums.
balance: Replaced the "Aggressive" fish trait with "Territorial". No
more angelfish shanking the goldfish and guppy in prefilled aquariums
with less than 5 fishes.
qol: Added screentips to aquariums.
/:cl:

* Automatic changelog for PR #88068 [ci skip]

* Icemoon lavaloops now look different. (#88235)

Co-authored-by: SmArtKar <[email protected]>

* Automatic changelog for PR #88235 [ci skip]

* Resprites all the Fannypack worn sprites to match their object sprites (#88267)

* Automatic changelog for PR #88267 [ci skip]

* fix cyber eyes names (#88271)

Fixes some eyes to have standartized naming

Bugfix good

:cl:
fix: Printed Moth X-Ray eyes are now correctly named, instead of being
just "robotic eyes"
/:cl:

* Automatic changelog for PR #88271 [ci skip]

* [NO GBP] Fixes plasmamen envirosuits being unrepairable (#88263)

Closes #88255
It ***was*** the refactor's fault

:cl:
fix: Fixed plasmamen envirosuits being unrepairable
/:cl:

* Automatic changelog for PR #88263 [ci skip]

* Fixes cargo ticket and pet adventure drone loot pools not working (#88270)

Closes #88268

:cl:
fix: Fixed cargo ticket and pet adventure drone loot pools not working
/:cl:

* Automatic changelog for PR #88270 [ci skip]

* Improved shower/blood effects (#87747)

Last night I was experimenting with hooking up different chemicals to a
shower and discovered that blood didn't really do anything other than
have red mist and particles. Your characters clothes were still cleaned.
The mood boost was still happy. So I reworked it a bit.

Blood now:
- Gives a negative mood, disgust, and status effect when showering with
it (unless you are morbid, evil, or undead, then it's considered
positive)
- Has an icon alert for bloody showers
- Covers a mob's clothing with blood when showering (or any objects on
the tile)
- Tossing or spraying a container full of blood now covers objects/mobs
in blood
- The revenant defile spell now affects showers by removing all water
recyclers and reagents that gets replaced with blood

Showers now:
- Require 70% of water to clean and get mood/status effects
- Require 70% of blood to get mood/status effects
- Require 20% of radioactive reagents to stop radiation removal effects

So it's possible to have a clean water shower that is secretly
radioactive. Since radioactive reagents do nothing on `TOUCH`, all this
achieves is preventing the water from washing off the radiation.

I did have to refactor some of the reagent code to support method types
for objects since I was experiencing hazmat issues when I was testing.
Whenever I would inject blood from a syringe into a beaker, it would
cover the beaker in blood on the outside. This would have been extremely
hazardous for viruses. So I needed to make sure we are only applying it
to the methods for `VAPOR|TOUCH`

Also improved the mood typecasting for owner to allow checking of mob
biotypes. (so we can check `UNDEAD` for mood)

Blood effects and interactions are now more consistent. The code for
objects is refactored to support method interactions with reagents.
Evil/Morbid people now get some unique interactions that fit their
theme. Last we get a cool new ability to let revenant's make their
defiled areas something out of a horror movie.

:cl:
add: The revenant defile spell now affects showers by removing all water
recyclers and reagents that gets replaced with blood.
add: Showering in clean water (+70%) results in positive
mood/regen/stamina effects. It will wash off the mob.
add: Showering in dirty water results in negative mood effects and
disgust. It will NOT wash off the mob.
add: Showering with radioactive reagents (+20%) results in the
preventing the shower from washing off the radiation.
add: Showering in blood (+70%) results in severe negative mood effects
and disgust. (unless you are morbid, evil, or undead then it's
considered positive) It will cover the mob in blood.
add: Water effects that interact with a mob from touch or vapor
(showering/spray bottles/etc.) will now heal sleep, unconsciousness,
confusion, drowsiness, jitters, dizziness, and drunkenness.
fix: Fix bloody showers not covering objects in blood.
fix: Tossing or spraying a container full of blood now covers
objects/mobs in blood
fix: Fix wrong status effect for watery tile
image: Add new alert icons for bloody/dirty showers
code: Refactored some expose_obj reagent code to support method types.
code: Improved mood typecasting for owner to allow checking of mob
biotypes.
/:cl:

---------

Co-authored-by: MrMelbert <[email protected]>
Co-authored-by: Ghom <[email protected]>

* Prevents atmos tanks from fetching icons every atmos tick (#88264)

According to Kapu, RscFile() is a hash operation and thus is relatively
slow. Having dozens of them ran every tick by atmos tanks is not ideal.
There's more uncached icons in filters to tackle but the only one
relatively impactful is status display init mask - however our filter
code is mildly fucked to say the least, as icon() is ran ***regardless
of whenever a filter is cached or not*** because we pass them as lists,
not actual filter objects - and filter() seems to call one internally
regardless of what its passed, so every update_filters fetches an icon
for anything with an alpha/displacement filter. This doesn't actually do
much on its own, but is nice to have so that future contributors don't
make the same mistake by copypasting code.

:cl: SmArtKar, Kapu
fix: Atmospheric tanks no longer fetch icons every tick
/:cl:

* Fix advanced leg name (#88273)

Fixes printed advanced robotic right leg name, instead of it being
"heavy"

Bugfix good

:cl:
fix: Printed advanced robotic right leg now has correct name, instead of
being "heavy"
/:cl:

* Automatic changelog for PR #87747 [ci skip]

* Automatic changelog for PR #88264 [ci skip]

* Automatic changelog for PR #88273 [ci skip]

* [FIX] Makes etherials no longer lose overcharge really slowly (#88286)

So, as you might know, megacells made it that etherials gained charge
really slowly. I changed this to be proportional again, but forgot to
make it that said charge decreases the same, leading to an overcharge
lasting 30+ minutes and the toxin damage killing you before said
overcharge wore off.

Also I realized I screwed up a value on the charge gain from booze when
i took one sip of a telepole and instantly spewed lightning everywhere,
so thats been decreased.

Because…
Copy link
Contributor

github-actions bot commented Jan 5, 2025

This PR has been inactive for long enough to be automatically marked as stale. This means it is at risk of being auto closed in ~ 7 days, please address any outstanding review items and ensure your PR is finished, if these are all true and you are auto-staled anyway, you need to actively ask maintainers if your PR will be merged. Once you have done any of the previous actions then you should request a maintainer remove the stale label on your PR, to reset the stale timer. If you feel no maintainer will respond in that time, you may wish to close this PR youself, while you seek maintainer comment, as you will then be able to reopen the PR yourself.

@github-actions github-actions bot added the Stale label Jan 5, 2025
@Iajret Iajret removed the Stale label Jan 5, 2025
@Iajret Iajret enabled auto-merge (squash) January 5, 2025 15:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants