* Dead code removal, redundant text macros, drying rack now applies TRAIT_FOOD_CHEF_MADE. (#80677)
I've been coding a PR these couple days, and I've noticed a few
oversights, all related to food, while working on it.
This PR removes an unused, 12 years old datum, and some redundant text
macros in a text string, for processable items, that already uses the
bold spans. It also makes it so food made with a drying rack gets the
chef made trait, similarly to other methods (though not as foolproof).
* Dead code removal, redundant text macros, drying rack now applies TRAIT_FOOD_CHEF_MADE.
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* [s]Fix exploit that allows players to close every single tgui window for all players (#80768)
Fixes#80767
* [s]Fix exploit that allows players to close every single tgui window for all players
---------
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Fix Fugu applying wall tearer element to the wrong thing (#80739)
## About The Pull Request
Don't put the element on the item itself, put it on the thing it's being
applied to
## Changelog
🆑 Melbert
fix: Fixed Fugu Gland applying to mobs incorrectly
/🆑
* Fix Fugu applying wall tearer element to the wrong thing
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fix duplicate proc arguments (#80709)
this is important for getting /tg/station to compile in opendream,
because they raise an error on duplicate arguments
* Fix duplicate proc arguments
---------
Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
* Map export admin verb/buildmode (#80326)
## About The Pull Request
The base for the PR was taken from
https://github.com/shiptest-ss13/Shiptest/pull/206 and thank them for
that.
The point of this verb is to save pieces of the map to your computer for
further use. It's not that necessary, but rarely, it can be useful.
[Video](https://i.imgur.com/M6mdDTC.mp4)
## Why It's Good For The Game
Transferring buildings from one round to another, preserving the decor
made in the game.
## Changelog
🆑 Vishenka0704
admin: The ability to export a part(or z-level) of the map has been
added.
/🆑
* Map export admin verb/buildmode
---------
Co-authored-by: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
* Removes the attack_slime proc, and other slime refactors (#80487)
## About The Pull Request
- **Removed attack_slime**. Most of the attack_slime content has been
moved to a proc that signs up for COMSIG_LIVING_UNARMED_ATTACK. Its
ugly, but will make converting slimes to a basic mob easier. They now
use attack_animal for now, which might cause some unexpected
interactions. Hopefully when they are converted to basic mobs, these can
be cleared up properly.
- This caused some issues with cyborgs, who used to get only half damage
dealt to them. As refactoring this would have been too much of a
difficult task without much real gain, after much pondering, I have
decided that since slimes can always flash cyborgs with each of their
strikes, maybe cyborgs should only fear slimes that have electric
charges in them. In addition, slimes electric charges decrease now after
they successfully zap an cyborg, making them more consistent with the
zaps that affect carbons. AIs are still fully immune to slimes.
- The slime.dm and slime.life files were extremely bloated, and
unorganized. I have created two new files, defense.dm and ai.dm. I have
moved the various attack_by/attack_hand/etc procs to defense.dm. Ai.dm
now contains every single proc the slime's "AI" uses; this should help
getting a clearer picture of the current functionality, which should aid
with basic mob conversion and decision tree creation. The remaining
files have been slightly organized, with overrides in front, and new
procs at the back.
- Created a proc for swapping out Adult and Baby states of a slime.
Previously, attack_slime was in many cases ignoring fields like
melee_damage_lower and melee_damage_upper, replacing it with magic
numbers based on the slime's lifestate. Now these values are hard set by
these procs. This has caused slimes to be more consistent, though baby
slimes might do a bit less damage on the low end. I am tempted to turn
these in datums in the future, or as part of this PR.
- Removed baby slime's chance to accidentally attack a window/grille by
bumping into it, they had 0 object damage anyways, unlike adult slimes,
so there was no reason not to early return.
- The proc of `handle_feeding` assumed adjustBruteLoss and adjustToxLoss
return positive values when damage has been done, when in reality, it
returns the total health change along with its direction. This meant
slimes would fell off simple or basic mobs after a single bite. This has
been fixed.
- Also updated the warning before the slime type defines, as they were
out of date.
- I have removed the bespoke spacewalk override for slimes, which should
allow them to drift, should gravity go out.
- The nutrition stats are assigned only once, when the slime grows up,
instead of compared to being an adult every life tick
## Why It's Good For The Game
Less duplicated code.
This refactor should help in the basic mob conversion process.
Cyborgs have an easier time wrangling slimes, who could previously kill
them in three hits, if charged. They are mostly encased in metal, they
should feel fine when not hit with electric attacks.
Lets slimes feast on delicious corgis.
* Removes the attack_slime proc, and other slime refactors
---------
Co-authored-by: Profakos <profakos@gmail.com>
* Fixes integrated circuit speech logging (#80706)
## About The Pull Request
get_creator() returns a printable string rather than a mob, so it
doesn't need key_name() here
## Why It's Good For The Game
Bugfixes
## Changelog
🆑
fix: Fixed integrated circuit speech logging
/🆑
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
* Fixes integrated circuit speech logging
---------
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
* Turbine code cleanup (#80637)
## About The Pull Request
1. Removed unused vars `our_turf_thermal_conductivity`. It did nothing
2. Removed redundant vars such as
- `mapped` : It can be replaced with `maploaded` var inside
`Initialize()` proc as it simply checks if the turbine was created
during round start or not. This does mean that admin spawned turbine
parts won't come pre installed with parts but that's not a big deal
since they can spawn the parts anyway
- `has_gas_mix` : All turbine parts set's this var to `TRUE` so might as
well make that the default case
- `gas_theoretical_volume` : This can be passed as an param inside
`Initialize()` directly rather than storing it in a var which gets used
only once
3. Autodoc for procs, fixed return values of some tool acts &
`attackby`(we want to return TRUE to end the attack chain early).
Removes balloon alert when opening/closing panel. The visual overlay
makes that obvious
4. The turbine now shuts itself off when the room has no power/the
turbine is sufficiently damaged. The turbine uses a small amount of
power for operation (for that green light, internal electronics & stuff)
cause it makes sense
5. Fixes runtime when opening turbine computer and one of the turbine
parts is disconnected
6. Adds Screen tips & fixes examines (they weren't using the
`span_notice()` proc) and adds even more examines
## Changelog
🆑
fix: turbine now shuts itself off when the room apc loses power or if it
gets damaged. Also uses a small amount of power for operation of
internal electronics, the green light & other stuff
fix: No more runtime in turbine computer when parts are not fully
connected
qol: adds screentips & examines for turbine
code: removed unused vars, auto doc procs and cleans up some code in
turbine
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Turbine code cleanup
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Fixes list formatting in vox_sounds.dm (#80678)
## About The Pull Request
The list formatting for these sounds got all messed up somehow. This
just puts it in line with the code standards.
## Why It's Good For The Game
I can look at this code without feeling mild despair
## Changelog
N/A
* Fixes list formatting in vox_sounds.dm
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Having a robot chest/legs no longer makes you drop all items upon losing your jumpsuit (#80673)
## About The Pull Request
See name, losing your jumpsuit with a robot chest/legs no longer spills
your stuff over the floor
## Why It's Good For The Game
Having a robot chest allows you to use the belt and ID inventory slots,
with legs adding pockets respectively, even when you don't have a
jumpsuit. Losing it probably shouldn't drop all your stuff when the
slots for it are still valid.
## Changelog
No idea if this is a qol, fix, add, or balance change. Feel free to edit
this to whichever one it's supposed to be
🆑
fix: Having an inorganic chest/legs no longer makes you drop your ID,
belt or pocketed stuff upon losing your jumpsuit
/🆑
* Having a robot chest/legs no longer makes you drop all items upon losing your jumpsuit
---------
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
* QOLs balloon alerts to the armour booster module (#80680)
## About The Pull Request
Adds balloon alerts for the armour booster module on toggle

## Why It's Good For The Game
The simple clarity is helpful and it works if you somehow get the module
on a suit that doesn't normally get it (where there's no helmet icon
differences)
Also makes it extra clear for newer players who probably don't
understand how it works (like fluke ops)
## Changelog
🆑
qol: Toggling an armour booster module on a MODsuit now gives a balloon
alert making the tradeoffs more clear.
/🆑
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* QOLs balloon alerts to the armour booster module
---------
Co-authored-by: YakumoChen <king_yoshi42@yahoo.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* fix a hard delete in basic statues (#80696)
## About The Pull Request
if the creator of the statue got deleted, it might cause a hard delete.
also i noticed this variable wasnt being used so i removed it and
instead directly added the ref of the creator to the mob's faction list.
also i noticed the proc that was setting it had alot of nested
typechecks so i split it into child procs
## Why It's Good For The Game
fixes a hard delete
## Changelog
not player facing
* fix a hard delete in basic statues
---------
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
* saves 90 seconds of cpu time in every 60 hour round. (#80682)
/datum/proc/process() does nothing and having it in the top 100 called
because of this one line is silly.
* saves 90 seconds of cpu time in every 60 hour round.
---------
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Some Processing improvements (#80693)
## About The Pull Request
Got the idea from #80682. A lot of parent procs don't do anything, some
are just formatted in a bad way, and others early return and do no ops,
it's bad in general but this should give us a head start.
Some good overhead saved here
* Some Processing improvements
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* [NO GBP] Even more reaction & chamber fixes (#80690)
## About The Pull Request
1. Fixes#80683
Used `isnull(target)` instead of `if(!target)` since the later condition
would fail for numbers
2. Fixes#80684
Chem heater now applies heating per reaction step and not just during
machine processing. It also uses `ui.send_update()` just like before &
not `SStgui.update_uis()`.
3. Fixes#80685
Completely unrelated to reaction chamber but is instead a problem with
`datum/equilibrium`. it now rounds the reaction rate back to
`CHEMICAL_VOLUME_ROUNDING`, Thus yielding higher volumes.
## Changelog
🆑
fix: you can set the chemical reaction chamber temps to 0k again
fix: used higher rounding value for reactions thus you get full volumes
especially for endothermic reactions(no more 99.99 but 100 units).
fix: chem heater now applies heat per reaction step and sends updates to
UI more frequently
/🆑
* [NO GBP] Even more reaction & chamber fixes
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Lizard food: adds burger variants and a few extras (#80424)
## About The Pull Request
This PR is inspired by [SS13
TV](https://youtu.be/gVXki-1uBLY?si=l9QZyVFW1CyzIEL_&t=73) [The best
show on air.](https://youtu.be/gVXki-1uBLY?si=hrQ8NADTu0WwmH7n&t=223)
I wanted to help port the great human cuisine over to be something
lizards could comprehend.
I'm intending to add: 7 Burger variants (Rat, Plain, Chicken, Fish,
Sssloppy Moe, Rib and RootGuffin)

I also am adding two extra foods: Korta Wellington and
[Meatsicles.](https://media.tenor.com/CGDqgg8bb9AAAAAC/meat-popsicle-5th-element.gif)

I'm not done yet! For human chefs, rejoice! I'm adding a way to make
vinegar from grape juice and enzyme (removing the wine recipe because
that just becomes grappa instantly.) and the ability to 'fold' your
pickle jars back into beakers to let you recycle the jar to make more
pickles without having to trek to the nearby lathe or autolathe.
Updated meatsicles.

## Why It's Good For The Game
More food for lizards means a chef doesn't need to harass botany for
more and more plants just to satisfy the growing lizard population. You
can feed humans the same burgers they love without aggression from the
~~subhumans~~ lizardfolk who are hungry too.
Vinegar is now craftable, which means if your grapes and enzyme is of
high enough quality, it'll not impact your food quality. However, that
requires a competant botanist and more work. You can choose between
cargo or saving like 20cr for your work.
Not being able to just refill an empty jar didn't make any sense to me,
I've made pickles IRL and have never encountered that.
## Changelog
🆑
add: Added new lizard variants of existing foods for equality of
edibility.
qol: made pickle jars reusable and vinegar craftable.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Lizard food: adds burger variants and a few extras
---------
Co-authored-by: xXPawnStarrXx <53197594+xXPawnStarrXx@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Heretic DLC: Path of Moon (#79536)
## About The Pull Request
This pull request adds a new path.
The cross path is between ash and lock.
Credit to Fury McFlurry for the following sprites:
ring_leader_effect
The path goes as follows:
Moonlight Troupe
Grasp of Lunacy
Smile of the moon
> Sidepaths:
Mind Gate
Ashen Eyes
Mark of Moon
Ritual of Knowledge
Lunar Parade
Moonlight Amulette
> Sidepaths:
Curse of Paralasys
Unfathomable Curio
Unsealed Arts
Moonlight blade
Ringleaders Rise
> Sidepaths:
Ashen Ritual
Last Act
Moonlight Troupe:
The first knowledge of path of moon, lets you make Lunar Blades with 2
iron and a knife
Grasp of Lunacy:
The grasp of this path hides your name for 15 seconds after use, but
more importantly it causes the person hit with the grasp
to hallucinate everyone as indistinct human like figures.
Smile of the Moon:
A pointed spell that causes temporary blinding, muting, deafening and
confusing on the person its targeted at, these effects
last longer the less sanity your victim has.
https://github.com/tgstation/tgstation/assets/120136161/db7cfaaa-8fe2-4f20-aa78-c17c17be4d63
Mindgate:
Lock-Moon. This spell causes you and your victim brain damage, the
victim also suffers a short amount of hallucinations
and also 20 oxyloss.
https://github.com/tgstation/tgstation/assets/120136161/11d15acd-11d0-4e7d-a180-6481b18e9fd9
Mark of Moon:
When applied this paths mark pacifies the victim and they remain
pacifist until attacked or until the mark is detonated, when
detonated the victim is left confused.
https://github.com/tgstation/tgstation/assets/120136161/41e601b5-76d4-4765-8b49-ada7de09feb7
Lunar Parade:
A spell that sends out a projectile that causes people hit by it to
follow the projectile whilst being unable to move. The
projectile also bounces around and is really useful to get people off
your back during chases.
https://github.com/tgstation/tgstation/assets/120136161/cddc8390-e8aa-4d68-b1a5-ab181e941a9b
Unfathomable Curio:
Transmute 3 rods, a brain and a belt into an Unfathomable Curio a belt
that can hold blades and items for rituals. Whilst worn
will also veil the heretic, allowing them to take 1 hit without
suffering damage, this veil will recharge quickly outside of
combat. If examined the examiner suffers brain damage and temporary
brain damage, and if a non-heretic uses it once the shield is damaged
the non-heretic user suffers massive brain damage and a permanent
uncurbable brain trauma. Lock-moon
Unsealed Arts:
Allows you to transmute a canvas and an additional item to create a
piece of art, these paintings have different effects depending on the
additional item added. Lock-moon
Possible paintings:
The sister and He Who Wept:
Additional atoms: Eyes.
When a non-heretic looks at the painting they will begin to hallucinate
everyone as heretics.
The First Desire:
Additional atoms: Any bodypart.
Increases the hunger of non-heretics, when examined drops an organ or
body part at the painting.
Great chaparral over rolling hills:
Additional atoms: Any grown food.
Spreads kudzu when placed, when examined grants a flower to the heretic.
Lady out of gates:
Additional atoms: Gloves.
Causes non-heretics to scratch themselves until they remove their
jumpsuit, when examined removes all your mutations.
Climb over the rusted mountain:
Additional atoms: Trash.
Causes non-heretics to rust the floor they walk on and when examined
gives you a cool moodlet
These effects are mitigated for a few minutes when a non-heretic
suffering an effect examines the painting that caused the
effect. Except for great chapparal which spawns kudzu at their feet, and
Lady out of gates which gives them a random negative mutation.
https://github.com/tgstation/tgstation/assets/120136161/1d1bdd2f-cda5-4430-b3af-4742f98a59a8https://github.com/tgstation/tgstation/assets/120136161/4e843ae4-9786-4e9b-8681-582713f4c789
Moonlight Amulette:
Allows the heretic to transmute 2 sheets of glass, a pair of eyes, a
brain and a tie. If the amulette is used on someone with low
sanity they go berserk attacking everyone if their sanity isnt low
enough it decreases their mood. Optionally you can add a
poppy in the ritual to further decrease their mood on hit.
https://github.com/tgstation/tgstation/assets/120136161/ab820b3f-e7e6-407a-9a1a-93d49c0d7387
Moonlight Blade:
Causes the heretics blades to do brain and sanity damage whilst causing
hallucinations. The blades also cause giggling and
laughter on hit.
Ringleaders Rise:
An AoE spell that deals more brain damage the lower the sanity of the
victim, also causes hallucinations that last longer the
lower the sanity of the victim. If the victims sanity is low enoughit
causes them to go insane, the spell then halves their sanity.
This spell is on a longer cooldown and is more meant to be used as a
payoff or an instigator for a fight. The AoE area is 7 tiles
https://github.com/tgstation/tgstation/assets/120136161/4de85ba2-448a-485c-b739-77fcce86c0cb
Last Act:
The ascension lowers the cooldown of all the heretics spells by 33% and
increases the AoE range of Ringleaders Rise. The main
effect of this ascension is a passive sanity drain and hallucination
aura, if you have low sanity in the aura you will start to suffer
brain damage and if you reach the bottom you gain an aura of
hallucinations thus spreading the moon heretics influence
further. Not only that but roughly 1/5th of the crew will rise in
support of you becoming mini-heretics called acolytes that will attempt
to obey your commands!
I had videos showing off everything but they were too big for github
sadly so I will have to think of some other way to showcase all this
stuff.
This pr also adds a new optional atoms system which means that you can
have rituals that can be improved by adding additional atoms, like for
example moonlight amulette.
Feel free to give some suggestions for further ascension effects.
## Why It's Good For The Game
I feel like heretic is really missing a playstyle around insanity and
this slots neatly in to feel that gap. For being an eldritch antag of
horrors there is surprisingly little interaction with the sanity system
and I feel like this makes up for it, heretic is also missing some
distractions which is where the paintings can really shine and the
hallucinations which breed paranoia.
## Changelog
🆑
add: A new heretic path opens up! Gaze up at the great sky for the path
of the moon opens and the lie shall be slain in pursuit of ultimate
truth!
fix: Fixes the syndicate delusion not working
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Heretic DLC: Path of Moon
---------
Co-authored-by: Rex9001 <120136161+Rex9001@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Automatic TGS DMAPI Update (#80664)
This pull request updates the TGS DMAPI to the latest version. Please
note any changes that may be breaking or unimplemented in your codebase
by checking what changes are in the definitions file:
code/__DEFINES/tgs.dm before merging.
Co-authored-by: tgstation-server <tgstation-server@ users.noreply.github.com>
* Automatic TGS DMAPI Update
---------
Co-authored-by: orange man <61334995+comfyorange@users.noreply.github.com>
Co-authored-by: tgstation-server <tgstation-server@ users.noreply.github.com>
* Refactors Crystal Warp Theme datum to use Dimensional Theme datum (#80661)
## About The Pull Request
`/datum/crystal_warp_theme` and `/datum/dimension_theme` both do very
similar, if not identical behaviors, so we can combine them pretty
painlessly.
## Why It's Good For The Game
This gives the crystal more options for themes to pick from, and the
dimensional anomaly more wacky themes to pick from.
## Changelog
🆑 Melbert
refactor: Refactored the area transformation colossus crystal effect to
use the same system dimensional anomalies use. That means the colossus
crystal now has access to some dimensional themes (bamboo, plasma,
glass) and the dimensional anomaly now has access to some colossus
themes (jungle, alien).
/🆑
* Refactors Crystal Warp Theme datum to use Dimensional Theme datum
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* adds screentips to the janicart (pimpin' ride) (#80665)
## About The Pull Request
Adds screentips the janicart (pimpin' ride) for dismounting, adding and
removing trash bags/upgrades/keys and inserting into the connected trash
bag.
The dismounting and key insertion/removal screentips could maybe be used
in the base vehicle. But right now I can't figure out how to move those
there without needing to do the same checks on the janicart (pimpin'
ride) again.
## Why It's Good For The Game
The janicart (pimpin' ride) has a lot of things you can do with it that
are not immediately obvious. It took me a while to figure out that you
can grab the trash bag from it without having to get off of it first.
## Changelog
🆑
qol: added screentips to the janicart (pimpin' ride)
/🆑
* adds screentips to the janicart (pimpin' ride)
---------
Co-authored-by: kawoppi <94711066+kawoppi@users.noreply.github.com>
* borgs dont dgasp twice when dying (#80671)
## About The Pull Request
fixes#80552
removes a single if statement that makes borgs dgasp when dying to _not_
gibbing, which they already did
from what i checked mob/living/silicon/death(gibbed) didnt do much, but
idk if its something important
## Why It's Good For The Game
Cyborgs couldnt play dead since a single dgasp meant the cyborg wasnt
dead
## Changelog
🆑
fix: Cyborgs do not deathgasp twice when dying anymore
/🆑
* borgs dont dgasp twice when dying
---------
Co-authored-by: uaioy <114047053+uaioy@users.noreply.github.com>
* Fixes perma sustenance vendor not selling to people (#80666)
## About The Pull Request
Fixes#80568
Makes the whole asking for labour points only apply to the labour camp
sustenance vendor instead of all sustenance vendors
Changes the text you get for trying to buy from the sustenance vendor
without prisoner ID to clarify it only sells to prisoners
## Why It's Good For The Game
Billions of prisoners must eat moldy tofu
## Changelog
🆑
fix: The sustenance vendor in perma actually serves food now
/🆑
* Fixes perma sustenance vendor not selling to people
---------
Co-authored-by: uaioy <114047053+uaioy@users.noreply.github.com>
* Fixes confetti shotgun shells (#174)
* initial
* fix confetti shell
* donkpocket sprites and more
* this is for a different PR
* forgot these
* ..()
* reviews
* // instead of /// for overrides
---------
Co-Authored-By: Bloop <13398309+vinylspiders@users.noreply.github.com>
* New Quirk: Appendicitis Survivor (#77)
## About The Pull Request
Title.
## How This Contributes To The Nova Sector Roleplay Experience
Spontaneous appendicitis is.. an event!
This adds the Appendicitis Survivor quirk from my server,
[TaleStation](https://github.com/TaleStation/TaleStation).
Its a positive (-2) quirk, while low impact, some people may appreciate.
Its also another low cost quirk, so people could pick it up if so
desired.
## Proof of Testing
<details>
<summary>Screenshots/Videos</summary>

</details>
## Changelog
🆑 Jolly
add: New quirk for those who hate their appendix: Appendicitis Survivor!
A positive (-2) quirk.
/🆑
* Improves the names, descriptions, and extended descriptions of nearly all my firearms (#90)
<!-- 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. -->
Three steps
1. Guns no longer list their company in their name, this made some gun
names too long to refer to or just look weird.
2. Every gun now tells you what it fires in its examine if it didn't
before.
3. Every gun's examine text now hints that you can double examine for
more info on the weapon.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
Makes a lot of information about these weapons more convenient or more
apparent than they were before, and removes some unneeded information
(like we didnt really have to have the guys that made the gun displayed
straight in the name, you can see the company that makes them in the
examine text already).
<!-- Please add a short description of why you think these changes would
benefit the game and the roleplay atmosphere of the server. If you can't
justify it in words, it might not be worth adding. -->
<!-- Include any screenshots/videos/debugging steps of the code
functioning successfully, between the </summary> and </details> code
blocks. -->
<!-- To our mappers and spriters: Posting screenshots of content INSIDE
EDITORS (aseprite, PDN, SDMM, ect) is NOT valid proof of testing. Please
make sure that you COMPILE the game and provide PROOF you tested your
edits. -->
<details>
<summary>Screenshots/Videos</summary>


</details>
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
qol: The names and descriptions of every paxilmaniac weapon have been
improved to be shorter (names) and mention at least what bullet the
weapon fires (description)
qol: Every weapon with an extended description has a hint in its normal
examine telling you that you can look further to get more info on the
weapon
code: Two instances of now-deleted weapons paths (which i found out
about through someone getting one in a christmas tree) existing due to
manufacturer examines of all things have been cleaned up, players wont
notice this one i think
/🆑
<!-- 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. -->
* Re-adding Cat Scream (Normalized) (#123)
* Re-adding Cat Scream (Normalized)
* Update modular_nova/modules/emotes/code/scream_datums.dm
Renamed the file from cat.ogg to cat_scream.ogg
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Renamed cat.ogg to cat_scream.ogg
* removed cat.ogg and replaced with cat_scream.ogg
* Removes old scream sounds, renames it properly
---------
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* [MODULAR] Fixes clockcult slab ui, some runtimes (#122)
Fixes slab ui, some runtimes
* [MODULAR] Fixes colonial cloaks not being able to hold any suit storage items (#129)
* Fixes imperial police cloak not being able to hold any suit storage items
* Moves this to the NRI police cloak
* Moves this to the NRI police cloak
* Update clothing.dm
* Update modular_nova/modules/novaya_ert/code/police_outfit.dm
---------
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Resprited Vox Clothing (Nova Station Edition) (#97)
* Resprited Vox Clothing
* Update screenshot_humanoids__datum_species_vox_primalis.png
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Chitter emote is the TG chitter sound unless you're a moth (#111)
<!-- 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. -->
Changes the *chitter emote to play the standard TG chitter sfx, unless
you're a moth, then it plays the moth chitter.
TG chitter is cute.
<!-- Include any screenshots/videos/debugging steps of the code
functioning successfully, between the </summary> and </details> code
blocks. -->
<!-- To our mappers and spriters: Posting screenshots of content INSIDE
EDITORS (aseprite, PDN, SDMM, ect) is NOT valid proof of testing. Please
make sure that you COMPILE the game and provide PROOF you tested your
edits. -->
<details>
<summary>Screenshots/Videos</summary>
https://github.com/NovaSector/NovaSector/assets/77534246/eae4fc45-d104-4588-8537-394da9304151
</details>
<!-- 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. -->
🆑
add: Chitter emote has a different sound effect, unless you're a moth
/🆑
* Adds fancy masquerade masks (#180)
* Adds masquerade masks, making them available in the AutoDrobe
Thanks to Crumpaloo for the sprites!
* Early mirror of https://github.com/tgstation/tgstation/pull/80663
They're not properly usable otherwise
* Updates the sprites so they've got transparent eyes
* Adds the masks to the loadout
* Fixes variation flags and muzzled GAGS config, makes it act as internals
* Adjust some of the sprites a bit more, making snouted ones have smaller eyeholes, and vox ones looking more like masquerade masks
* Updates the sprites for the Vox Primalis!
---------
* Update greyscale_configs.dm
* Fixes Niftsoft Settings Panel (#208)
Fixes Niftsoft Settings
* 0
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Kyogon <30851775+Kyogon@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: HalcyonicWolf <mmeade362@gmail.com>
Co-authored-by: SomeRandomOwl <2568378+SomeRandomOwl@users.noreply.github.com>
* hygeienbots basic bots (#80435)
## About The Pull Request
turns hygenic bots into basic bots. also now PAIs and people can play as
hygeinebots. and they can wear hats
## Why It's Good For The Game
transforms hyginebots into basic bots. their old AI used to handle all
the logic. i moved some of the logic to the mob itself so players can
also clean (or burn) things. also this pr will add pathing limits to
bots, in the case the jps movement thinks it can reach something, but
actually cant, in which case the bot will give up the chase
## Changelog
🆑
refactor: hygeinebots are now basic bots. please report all the bugs
fix: fixes hygenebots not being able to patrol
add: hygeinebots can now be controlled by Players
/🆑
* hygeienbots basic bots
---------
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
* Fixes holodeck monkeys gibbing (#80660)
Holodeck takes apart all hologram atoms, blindly. This breaks a lot, but
most notably people.
I've also went and given monkeys organs again, which were removed in
#79068. This broke incredibly hard, because monkeys can't live without
DNA or organs (who would've thought)
Fixes#80369, #79184🆑
fix: Holodeck monkeys are properly cleaned up now
fix: Holodeck monkeys have organs now
/🆑
Look they're so happy and wont gib on deload

---------
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Fixes holodeck monkeys gibbing
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Update zlevel movement verbs to check if remotely controlling something else (like adv camera console) (#80649)
## About The Pull Request
The zlevel movement verbs Up and Down didn't check for if you were
remotely controlling something else before issuing its movement. This
was perceivable when trying to use an advanced camera console like the
Xenobiology consoles and attempting to use the hotkeys for those verbs,
for instance in a station like Tramstation where Xenobiology and
Cytology span two z-levels.
## Why It's Good For The Game
This behavior is similar to the way the AI eye moves, and it works there
- so I have to assume this check was left out by accident. By fixing it,
it'll make some xenobiologist lives easier, and prevents confusion from
there being a HUD action for something without a hotkey in that case.
## Changelog
:cl:Echomori
fix: trying to move up or down while controlling an advanced camera
console now properly moves the camera up or down, not your body
/🆑
* Update zlevel movement verbs to check if remotely controlling something else (like adv camera console)
---------
Co-authored-by: qkjrmid <qkjr@qkjr.xyz>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
* Updating handle_disease (#80605)
## About The Pull Request
The loop variable was from before we started applying the `as anything`
key and single-letter. Also there was a small runtime which comes from
calling `stage_act` on a cured/deleted disease.
## Why It's Good For The Game
Runtimes bad, updated code good.
## Changelog
N/A
* Updating handle_disease
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Fixes borg polymorph (#80652)
Fixes#80640
I got a heart attack when I saw the issue report, but it was borg only.
The bugs between drones and borgs were completely unrelated
Borg polymorph would tear your brain out and kill you instead of putting
your brain in the MMI and your identity in the borg
🆑
fix: Fixes borg polymorph
/🆑
* Fixes borg polymorph
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
* [NO GBP] Fixes return values of some chem UI actions. (#80648)
## About The Pull Request
- The chem heater now returns `TRUE` when its buffer dispense volume is
changed thus showing the new value immediately without a 1 second delay
- The debug chem synthesizer also now returns `TRUE` when its amount &
purity values are changed thus showing their new values immediately
without a 1 second delay
## Changelog
🆑
fix: chem heater now shows the new value of its buffer dispense volume
immediately when it gets changed.
fix: debug chem synthesizer now shows the new values of amount & purity
immediately when it gets changed.
/🆑
* [NO GBP] Fixes return values of some chem UI actions.
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Fixes being able to fish up qdeleted spawners (#80646)
## About The Pull Request
Fixes https://github.com/NovaSector/NovaSector/issues/152
This is mostly a downstream issue, I think, but should a spawner ever
get added to the fish tables here this bug will be present.
Basically spawners, when created, do their item spawning behavior on the
src loc and then immediately qdel themselves.
If you try to forceMove() the spawners out of nullspace, like what was
happening with fishing, you'd end up with an unmovable broken item that
cannot be easily admin deleted.
This PR also adds a stack_trace when you forceMove() a qdeleted spawner,
because this is not the first time I've seen this issue come up. It
doesn't stop it from happening, though, because it's easier to visually
see the bug that way. This just provides some useful feedback as to why
the bug is happening should you check the debug logs.
## Why It's Good For The Game
Fixes a bug
## Changelog
🆑
fix: fishing up a spawner will now give you the spawned item instead of
a broken, undeletable spawner object
code: adds a warning to the stack trace when something tries to
forceMove() a qdeleted spawner
/🆑
* Fixes being able to fish up qdeleted spawners
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Unholy water double parent call fix (#80641)
## About The Pull Request
Unholy water now only calls parent in on_mob_life() once, instead of
twice.
The parent call would give you a small shot of toxin damage. Now you'll
only get hit by it once, instead of twice. Neat!
The linked issue mentions the double parent call on holy water too, but
that seems to have been removed at some point.
## Why It's Good For The Game
Closes#80511.
## Changelog
🆑 Rhials
code: Unholy water no longer calls parent twice in on_mob_life().
/🆑
* Unholy water double parent call fix
---------
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
* Fix ashwalker copypaste error for magic mirror (#80626)
## About The Pull Request
Copy pasted bad for this
## Changelog
🆑 Melbert
fix: Lizards now show a proper description in the magic mirror
/🆑
* Fix ashwalker copypaste error for magic mirror
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixed atmospherics components air relocation and unsafe pressure release (#80244)
## About The Pull Request
At present
- If user deconstructs/unwrenches something from
[/obj/machinery/atmospherics/components](https://github.com/tgstation/tgstation/blob/master/code/modules/atmospherics/machinery/components/components_base.dm)
- all air inside it disappear. (only unary, binary, trinary devices).
-
[/obj/machinery/atmospherics/components/unsafe_pressure_release()](f9a5502f78/code/modules/atmospherics/machinery/components/components_base.dm (L175))
doesn't work at all.
- HFR UI has the problem of [activation request
message](f9a5502f78/code/modules/atmospherics/machinery/components/fusion/hfr_parts.dm (L209C3-L209C3))
constantly repeating if the user forcefully switches off the machine
(e.g. unscrewed one of the components).
- Thermomachine and Bluespace sender do not connect to pipes when panel
is open.
- Crystallizer does not move air from node after rotation.
Now
- Each
[/obj/machinery/atmospherics/components](https://github.com/tgstation/tgstation/blob/master/code/modules/atmospherics/machinery/components/components_base.dm)
deconstruction will move air into connected pipeline if any, otherwise
it will be released from open nodes, HFR internals or if there is
portable connector that has no device connected will also release air
outside. The user will also be notified of deconstruction and if
pressure inside is safe for action.
- The
[/obj/machinery/atmospherics/components/unsafe_pressure_release()](f9a5502f78/code/modules/atmospherics/machinery/components/components_base.dm (L175))
will act like a normal pipe
[unsafe_pressure_release()](f9a5502f78/code/modules/atmospherics/machinery/atmosmachinery.dm (L447C1-L447C1))
if there is an empty node with air.
- When HFR interface is turned off - UI will be closed.
- Thermomachine and Bluespace sender will always try to connect to pipe
if they are anchored.
- Air inside of nodes will move to connected pipenet after the machinery
is rotated.
## Why It's Good For The Game
This fixes things that essentially had to exist at the same time adding
new possibilities for realization. Even though these aren't critical
bugs, it's still unpleasant enough to lose air.
## Changelog
🆑 mogeoko
fix: Atmospherics components will now move air into connected pipeline
on deconstruction if possible. Otherwise, air will be released to the
outside from open nodes.
fix: Unsafe pressure release on atmos components will now work the same
way it does in the normal pipes if there is an empty node with air.
fix: The HFR user interface would close when the machine is shut down.
fix: Atmospherics machinery will now share air from nodes after being
rotated and reconnected to pipenet.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Fixed atmospherics components air relocation and unsafe pressure release
---------
Co-authored-by: mogeoko <109075486+mogeoko@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Emergency DMAPI fix for downstreams still on TGS5 (#80653)
There was a double version bump on two branches that got merged, this
feature flag should be in 8
* Emergency DMAPI fix for downstreams still on TGS5
---------
Co-authored-by: Jordan Dominion <Cyberboss@users.noreply.github.com>
* Automatic TGS DMAPI Update (#80555)
This pull request updates the TGS DMAPI to the latest version. Please
note any changes that may be breaking or unimplemented in your codebase
by checking what changes are in the definitions file:
code/__DEFINES/tgs.dm before merging.
Co-authored-by: tgstation-server <tgstation-server@ users.noreply.github.com>
Co-authored-by: Jordan Dominion <Cyberboss@ users.noreply.github.com>
* Automatic TGS DMAPI Update
---------
Co-authored-by: orange man <61334995+comfyorange@users.noreply.github.com>
Co-authored-by: tgstation-server <tgstation-server@ users.noreply.github.com>
Co-authored-by: Jordan Dominion <Cyberboss@ users.noreply.github.com>
* Micro-optimize qdel by only permitting one parameter (#80628)
Productionizes #80615.
The core optimization is this:
```patch
- var/hint = to_delete.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up.
+ var/hint = to_delete.Destroy(force) // Let our friend know they're about to get fucked up.
```
We avoid a heap allocation in the form of copying the args over to a new
list. A/B testing shows this results in 33% better overtime, and in a
real round shaving off a full second of self time and 0.4 seconds of
overtime--both of these would be doubled in the event this is merged as
the new proc was only being run 50% of the time.
* Micro-optimize qdel by only permitting one parameter
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Add system for safely manipulating JSON databases and apply it to photo albums and photo frames (#80519)
We frequently have issues with data loss in our long storage .json files
for various reasons, such as the file being completely blanked out on
write etc.
This introduces a system that tries to safely handle that by saving the
known working json file into a backup that will be loaded in the case a
write fails.
This system queues updates in order to send through to the next tick.
This is an improvement over the existing implementation of photo albums
and photo frames (I think all persistence, even) which do not save until
the end of a properly rebooted round, but not during a server crash.
Also saves the jsons in pretty prints, which make them easier to read
but especially make them easier to diff in a git repository, which MSO
wants to setup (and hopefully make public so I can make a dashboard on
bus.moth.fans for looking at photo albums and their history, which is
something I've wanted to do for a very long time).
## Changelog
🆑
refactor: Photo albums and photo frames are now more resilient to data
loss, especially when a server crashes.
/🆑
* Add system for safely manipulating JSON databases and apply it to photo albums and photo frames
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Fixes for mat container & ORM (#80573)
## About The Pull Request
- Fixes#80559
1) The ORM now hooks onto the local container only if off station. The
ui act if statement was also messed up but that's fixed now too.
2) Creates a dedicated signal for items inserted into the silo for
clarity & uses the helper proc defined inside remote materials for
inserting items so we don't have to specify the `context` manually.
3) Properly updates the auto Doc for the container signal defines
## Changelog
🆑
fix: Off station ORM's can redeem points again.
/🆑
* Fixes for mat container & ORM
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Optimize find_potential_targets self cost (#80602)

`find_potential_targets/perform` currently has a pretty bad self cost in
part due to it running a second "loop over everything in range" check to
find turrets and mechs. This doesn't drop it down by as much as I'd like
because it still needs `hearers`, it still shows up pretty high, but
this at least cuts out some unnecessary work.
Best case is likely to minimize work AIs need to do when there are no
players on their z-level, as there are a lot of calls from Lavaland.
* Optimize find_potential_targets self cost
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* [NO GBP] Some reaction & chamber fixes (#80600)
## About The Pull Request
- Fixes#80596
The UI opens when you remove/add a beaker to it
- Fixes#80597
Calls `handle_reactions()` per step and updates UI thus reporting
changes more often
- Fixes
https://github.com/tgstation/tgstation/issues/80597#issuecomment-1869693182.
For instant reactions such as plastic we want to call
`handle_reactions()` wherever possible (in this case whenever new
reagent is added per equilibrium step) so that we can maximise product
formed and start new reactions whenever possible
- Fixes#80632
Same explanation as above since it now triggers all reactions more often
## Changelog
🆑
fix: reaction chamber open its UI when inserting/removing beakers from
it
fix: reaction chamber triggers new reactions & updates UI more often
during heating
fix: instant and normal reactions now get triggered more often so for
e.g. more plastic sheets from polymer reactions or more reactions occur
when there are multiple reagents present
/🆑
* [NO GBP] Some reaction & chamber fixes
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>