Commit Graph

90 Commits

Author SHA1 Message Date
shayoki f601a6ddaf Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026 2026-06-03 01:23:54 -05:00
Alexis 21b4095dfd [MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026

fixes https://github.com/Bubberstation/Bubberstation/issues/5549

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: loganuk <fakeemail123@aol.com>
Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com>
Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com>
Co-authored-by: Isratosh <Isratosh@hotmail.com>
Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com>
Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com>
Co-authored-by: Alexander V. <volas@ya.ru>
Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com>
Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com>
Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com>
Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com>
Co-authored-by: Josh <josh.adam.powell@gmail.com>
Co-authored-by: Josh Powell <josh.powell@softwire.com>
Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com>
Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com>
Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2026-05-16 00:56:00 +02:00
MrMelbert 3450f8ba1e Lizard frills are hidden by HIDEHAIR rather than HIDEEARS / Lizard frills are masked like hair by hats (#95986) 2026-05-09 13:23:48 +02:00
MrMelbert 442ad835bc Reverts inertia based space movement (#95536)
## About The Pull Request

Reverts space movement being affected by inertia 

What is kept:

- Items have a varying force on your drift speed, ie heavier items will
move you faster through space, and smaller items, slower.
- Jetpacks can have varying force of impulse - the effect is applied
directly to the mob's `inertia_move_multiplier`
- Tethers are unreverted - they still stop you from drifting too far
from the tether point, however you can no longer 'swing' with them.

What is removed:

- Multiple impulses in the same angle/direction no longer speeds you up.
Only the fastest impulse in 1 direction is accounted for.
- An impulse in a different angle/direction will completely override any
existing impulses, even if they are faster.
- Jetpack stabilizers are once again perfectly capable of immediately
stopping any active impulses.

TL;DR

If you point yourself in a direction you will now go that direction

## Why It's Good For The Game

The concept was fun and had potential but the fight between impulses vs
tiles was very, very clunky and janky.
Multiple fixes were attempted to reduce the jank but it ultimately
nograv still acts very cumbersome and jetpacks are still very
unappealing to use.
Smartkar gave the go-ahead to revert this a while back so, o7. 

## Changelog

🆑 Melbert
del: Zero-gravity drifting is no longer affected by inertia, ie it has
been reverted to what it once was.
/🆑
2026-04-03 15:06:38 +01:00
Bloop 38a086093e create_and_destroy will no longer spawn abstract types (#95071)
## About The Pull Request

What it says on the tin-- with having a nice abstract types system now,
we can utilize that in create_and_destroy.

## Why It's Good For The Game

Removes a lot of the need for snowflake item exclusions, and makes this
test likely a lot more stable (and a little faster even).

## Changelog

Not player-facing
2026-03-08 00:34:47 -08:00
SmArtKar 2b24732b9d Husked mobs now keep some of their bodypart overlays (#95155)
## About The Pull Request

(Some) tails, snouts, horns and other "solid" bodypart overlays are now
preserved on husked mobs, meaning that lizards or fishpeople will no
longer suddenly lose a chunk of their body when husked. Cybernetic
implants, being inorganic, are not colored and preserver their visuals
in full.

<img width="70" height="97" alt="dreamseeker_8CYayvB8ck"
src="https://github.com/user-attachments/assets/32df4ef4-4d20-4d46-8bf8-ccf043cab3ec"
/>

<img width="95" height="104" alt="image"
src="https://github.com/user-attachments/assets/47171a11-2228-4ef8-9d60-e169794fa6fd"
/>

## Why It's Good For The Game

Husking hasn't been an effective method of anonymizing corpses for a
very long while, and I think that visual consistency here doesn't hurt
it much more while making the game feel more immersive and cohesive.

## Changelog
🆑
balance: Husked mobs now keep some of their bodypart overlays, such as
snouts, tails and horns
/🆑
2026-02-23 17:50:53 -05:00
nevimer 00ccf0c6b5 Merge remote-tracking branch 'tgstation/master' into upstream-feb12-2026
# Conflicts:
#	.github/CODEOWNERS
#	.github/workflows/compile_changelogs.yml
#	.github/workflows/stale.yml
#	SQL/database_changelog.md
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	code/__DEFINES/atom_hud.dm
#	code/__DEFINES/inventory.dm
#	code/__DEFINES/mobs.dm
#	code/__DEFINES/species_clothing_paths.dm
#	code/__DEFINES/subsystems.dm
#	code/__DEFINES/surgery.dm
#	code/__HELPERS/global_lists.dm
#	code/_globalvars/lists/maintenance_loot.dm
#	code/_globalvars/traits/_traits.dm
#	code/controllers/subsystem/minor_mapping.dm
#	code/controllers/subsystem/processing/quirks.dm
#	code/controllers/subsystem/shuttle.dm
#	code/datums/components/palette.dm
#	code/datums/components/surgery_initiator.dm
#	code/datums/diseases/advance/advance.dm
#	code/datums/hud.dm
#	code/datums/mood.dm
#	code/datums/mutations/chameleon.dm
#	code/datums/quirks/negative_quirks/nyctophobia.dm
#	code/datums/status_effects/debuffs/debuffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/slime/slime_leech.dm
#	code/datums/weather/weather.dm
#	code/game/data_huds.dm
#	code/game/objects/items.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/frog_statue.dm
#	code/game/objects/items/rcd/RLD.dm
#	code/game/objects/items/robot/items/hypo.dm
#	code/game/objects/items/stacks/medical.dm
#	code/game/objects/items/stacks/wrap.dm
#	code/game/objects/items/storage/garment.dm
#	code/game/objects/items/tools/medical/defib.dm
#	code/game/objects/items/weaponry.dm
#	code/game/objects/items/weaponry/melee/misc.dm
#	code/game/objects/structures/crates_lockers/closets/secure/security.dm
#	code/game/objects/structures/curtains.dm
#	code/game/objects/structures/dresser.dm
#	code/game/objects/structures/girders.dm
#	code/game/objects/structures/maintenance.dm
#	code/game/objects/structures/mirror.dm
#	code/modules/admin/greyscale_modify_menu.dm
#	code/modules/admin/verbs/light_debug.dm
#	code/modules/antagonists/ashwalker/ashwalker.dm
#	code/modules/antagonists/heretic/knowledge/starting_lore.dm
#	code/modules/antagonists/ninja/ninjaDrainAct.dm
#	code/modules/art/paintings.dm
#	code/modules/client/preferences.dm
#	code/modules/client/verbs/ooc.dm
#	code/modules/clothing/head/wig.dm
#	code/modules/events/disease_outbreak.dm
#	code/modules/holodeck/holo_effect.dm
#	code/modules/jobs/job_types/head_of_security.dm
#	code/modules/jobs/job_types/security_officer.dm
#	code/modules/library/skill_learning/generic_skillchips/point.dm
#	code/modules/mining/lavaland/ash_flora.dm
#	code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/basic/guardian/guardian.dm
#	code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm
#	code/modules/mob/living/carbon/carbon.dm
#	code/modules/mob/living/carbon/human/human.dm
#	code/modules/mob/living/carbon/human/human_defines.dm
#	code/modules/mob/living/carbon/life.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob/living/living_defines.dm
#	code/modules/mob/mob.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mod/mod_control.dm
#	code/modules/mod/modules/modules_general.dm
#	code/modules/modular_computers/computers/item/computer_ui.dm
#	code/modules/paperwork/paper.dm
#	code/modules/paperwork/paperbin.dm
#	code/modules/power/lighting/light.dm
#	code/modules/projectiles/guns/energy/kinetic_accelerator.dm
#	code/modules/projectiles/projectile.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/food_reagents.dm
#	code/modules/reagents/chemistry/reagents/other_reagents.dm
#	code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
#	code/modules/research/xenobiology/crossbreeding/_clothing.dm
#	code/modules/research/xenobiology/crossbreeding/prismatic.dm
#	code/modules/surgery/advanced/brainwashing.dm
#	code/modules/surgery/advanced/lobotomy.dm
#	code/modules/surgery/amputation.dm
#	code/modules/surgery/blood_filter.dm
#	code/modules/surgery/bodyparts/_bodyparts.dm
#	code/modules/surgery/brain_surgery.dm
#	code/modules/surgery/cavity_implant.dm
#	code/modules/surgery/coronary_bypass.dm
#	code/modules/surgery/gastrectomy.dm
#	code/modules/surgery/healing.dm
#	code/modules/surgery/limb_augmentation.dm
#	code/modules/surgery/organ_manipulation.dm
#	code/modules/surgery/revival.dm
#	code/modules/surgery/sleeper_protocol.dm
#	code/modules/surgery/surgery_helpers.dm
#	code/modules/surgery/surgery_step.dm
#	code/modules/unit_tests/_unit_tests.dm
#	code/modules/unit_tests/designs.dm
#	code/modules/unit_tests/icon_state_worn.dm
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_cultist.png
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_headrevolutionary.png
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_provocateur.png
#	code/modules/unit_tests/screenshots/screenshot_husk_body.png
#	code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png
#	icons/map_icons/clothing/head/_head.dmi
#	icons/map_icons/clothing/shoes.dmi
#	icons/map_icons/items/_item.dmi
#	icons/mob/huds/hud.dmi
#	icons/mob/inhands/64x64_lefthand.dmi
#	icons/mob/inhands/64x64_righthand.dmi
#	icons/obj/machines/computer.dmi
#	tgui/packages/tgui/interfaces/OperatingComputer.jsx
#	tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx
#	tgui/packages/tgui/interfaces/PreferencesMenu/types.ts
#	tgui/packages/tgui/interfaces/SurgeryInitiator.tsx
#	tools/icon_cutter/check.py
2026-02-12 23:50:09 -05:00
SyncIt21 7c5ef1cfb8 Removes unused parameter times_fired from mob procs (#94590)
## About The Pull Request
What it says on the tin. `times_fired` is the most unused parameter in
all mob procs. I say most because there were just 2 cases where it was
used
- handling breathing
- handling heartbeat

Besides these 2 cases this parameter did nothing in every proc. Removing
it does 2 things
- Makes those procs more readable as it now has 1 less parameter that
was documented poorly and did nothing
- Makes those procs slightly faster as we are passing 1 less variable to
its parameter call stack

It can easily be substituted with `SSmobs.times_fired` which was its
original value anyways

## Changelog
🆑
code: removes an unused parameter `times_fired` from mob life procs.
Making them function slightly faster
/🆑
2025-12-26 09:51:33 -05:00
SyncIt21 468b351b86 Axes grind & juice vars into procs (#94592)
## About The Pull Request
Inspired by #94233. `grind_results`(list) & `juice_typepath`(typepath)
are only used when grinding & juicing after which the atom is deleted.
This means if that object is not processed these vars occupy memory &
don't do anything.

Now these values are only generated on demand by calling their
respective procs. Considering how these vars are on the obj level the
memory savings are quite significant

## Changelog
🆑
refactor: grinding & juicing have been refactored to occupy low memory.
Report bugs on github
code: improved grinding & juicing code
/🆑
2025-12-25 20:40:35 +01:00
Roxy eb6d02fdb0 Fixes for 585b02c325 2025-11-06 00:18:59 -05:00
Roxy d0ca474789 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-2025-11-05 2025-11-05 19:43:07 -05:00
MrMelbert 585b02c325 Reduces species feature boilerplate (#93570)
## About The Pull Request

Rather than having 100 separate list variables on `SSaccessories`, have
1 list for all feature keys that are associated with sprite accessories

This way you can get a feature by doing
`SSaccessories.feature_list[key]`, instead of necessitating
`SSaccessories.ears_list`, `SSaccessories.tail_list`, etc.

This lets us cut back on a lot of boilerplate in prefs, dna, and organs

## Why It's Good For The Game

We can see the benefit in this example: This is all the code for horn
DNA, bodypart overlay, and preference
```dm
/datum/dna_block/feature/accessory/horn
	feature_key = FEATURE_HORNS
```
```dm
/datum/bodypart_overlay/mutant/horns
	layers = EXTERNAL_ADJACENT
	feature_key = FEATURE_HORNS
	dyable = TRUE

/datum/bodypart_overlay/mutant/horns/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner)
	return !(bodypart_owner.owner?.obscured_slots & HIDEHAIR)
```
```dm
/datum/preference/choiced/species_feature/lizard_horns
	savefile_key = "feature_lizard_horns"
	savefile_identifier = PREFERENCE_CHARACTER
	category = PREFERENCE_CATEGORY_FEATURES
	main_feature_name = "Horns"
	should_generate_icons = TRUE
	relevant_organ = /obj/item/organ/horns

/datum/preference/choiced/species_feature/lizard_horns/icon_for(value)
	return generate_lizard_side_shot(get_accessory_for_value(value), "horns")
```

## Changelog

🆑 Melbert
refactor: Refactored species unique organs slightly, particularly how
they are set up at game start. Report any oddities, like invisible tails
or wings
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-10-30 03:46:32 +01:00
Roxy d14e538393 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-15-10-2025 2025-10-15 19:34:41 -04:00
MrMelbert 6ba755cb44 Felinid ears are randomized properly (#93297)
## About The Pull Request

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

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

Sooo let's do that shall we? 

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

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

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

## Changelog

🆑 Melbert
fix: Felinids will randomize their ear type properly
/🆑
2025-10-05 16:21:42 -06:00
xPokee 939f2fc9ac Merge branch 'master' of https://github.com/tgstation/tgstation into xpokee-test-upstream-sync 2025-09-10 14:12:16 -04:00
MrMelbert 135a09182b Refactors obscured (#92779)
## About The Pull Request

Fixes #85028

Obscured flags and covered flags are tracked on carbons, updated as
items are equipped and unequipped. It's that shrimple.

Closes #92760

Just removes the species exception checks for not making sense

Also refactors handcuffs / legcuffs removal. In all of these situations
they were hardcoded when they could easily just use an inventory proc to
work.

## Why It's Good For The Game

Stops a million excessive calls to `check_obscured_slots`

Makes obscured behavior more consistent

Makes obscured behavior easier to use

Cleans up human rendering (There was some cursed stuff before with
render item -> updated obscured -> update body -> cause side effects)

## Changelog

🆑 Melbert
del: Golems which somehow manage to grow wings and somehow manage to
equip something that covers their jumpsuit can no longer fly.
(Seriously, this will not affect anyone)
refactor: Refactored clothing obscurity entirely. Items should be a
loooot more consistent and what covers what, and should update a lot
snappier. As always, report any oddities, like mysteriously disappearing
articles of clothing, hair, or species parts
refactored: Refactored handcuffs and legcuffs a bit, report any odd
situations with cuffs like getting stuck restrained
/🆑
2025-09-07 09:24:34 +02:00
nevimer 81313b27a5 Merge remote-tracking branch 'origin/pupstream-25-08-08' 2025-08-15 17:36:16 -04:00
Roxy aa624df43b Apply suggestions from code review
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2025-08-12 18:09:12 -04:00
Waterpig 55504da79d Datumizes DNA blocks, makes DNA cleaner in general (#92061)
Moves all the dna block handling onto singleton datums initialized
inside global lists, to make the handling dna less of a copy-paste mess
and make adding new blocks significantly easier. There is still some
work to be done in the copypaste department but ultimately that falls
under its own PR scope after the core refactor goes through. (Ill
probably do those but it will also be easier for everyone else as the
code is now significantly less of an eyesore)

Both features and identities have been tested through and through, and
seem to be working fine.

Also removed the reliance on weird hardcoded lookup tables for length,
and other similar things that just didn't make sense when I was passing
through DNA code. There's a lot more that fall out of scope for this
exact PR's goal however

I've been told the maintainers will love me for doing this

🆑
code: feature keys are no longer magical strings floating around the
codebase and use proper defines
refactor: DNA blocks are now handled with singleton datums.
/🆑
2025-08-12 13:48:00 -04:00
StaringGasMask 2da590e93d Makes angel wings more maneuverable (#92377)
## About The Pull Request

Increases wing stabilization force for the wings from the flight potion,
allowing much quicker halting.
As a comparison, a single key press used to displace you roughly 5
tiles, after these changes, it will only displace you two.

## Why It's Good For The Game

Newtonian movement made wings hard to maneuver and annoying to use, this
aims to make them more usable.
I'm not sure about how well they'll do in combat, since after this
change you still keep a substantial speed bonus, but to my knowledge it
was like that before and not many people complained. If it becomes a
problem, the speed can be adjusted as well.

## Changelog

🆑
qol: Made angel wings more maneuverable
/🆑

(cherry picked from commit 8222f59f61)
2025-08-08 15:31:12 -04:00
StaringGasMask 8222f59f61 Makes angel wings more maneuverable (#92377)
## About The Pull Request

Increases wing stabilization force for the wings from the flight potion,
allowing much quicker halting.
As a comparison, a single key press used to displace you roughly 5
tiles, after these changes, it will only displace you two.

## Why It's Good For The Game

Newtonian movement made wings hard to maneuver and annoying to use, this
aims to make them more usable.
I'm not sure about how well they'll do in combat, since after this
change you still keep a substantial speed bonus, but to my knowledge it
was like that before and not many people complained. If it becomes a
problem, the speed can be adjusted as well.

## Changelog

🆑
qol: Made angel wings more maneuverable
/🆑
2025-08-06 22:23:12 +10:00
Waterpig b01756b97c Datumizes DNA blocks, makes DNA cleaner in general (#92061)
## About The Pull Request

Moves all the dna block handling onto singleton datums initialized
inside global lists, to make the handling dna less of a copy-paste mess
and make adding new blocks significantly easier. There is still some
work to be done in the copypaste department but ultimately that falls
under its own PR scope after the core refactor goes through. (Ill
probably do those but it will also be easier for everyone else as the
code is now significantly less of an eyesore)

Both features and identities have been tested through and through, and
seem to be working fine.

Also removed the reliance on weird hardcoded lookup tables for length,
and other similar things that just didn't make sense when I was passing
through DNA code. There's a lot more that fall out of scope for this
exact PR's goal however

## Why It's Good For The Game

I've been told the maintainers will love me for doing this

## Changelog

🆑
code: feature keys are no longer magical strings floating around the
codebase and use proper defines
refactor: DNA blocks are now handled with singleton datums.
/🆑
2025-07-14 16:51:45 -06:00
Roxy 24a6836a05 Fix being unable to hide moth antennae or wings (#3820)
## About The Pull Request

tg changed mutant part hiding logic some upstreams back and our override
hiding logic stopped getting called

## Why It's Good For The Game

Fixes #2790 

## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>


![image](https://github.com/user-attachments/assets/bd7506f4-5560-4134-afa4-6721a59279a9)
I have hiding antennae and wings enabled in this pic

</details>

## Changelog
🆑
fix: fixed moth antennae and wings not hiding properly
/🆑
2025-05-14 20:57:08 -04:00
Waterpig 753d8e5ba4 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-04a 2025-04-08 18:58:45 +02:00
MrMelbert 1406210b6e Improves the "Check mood" printout, reworks the "Check self" printout, minor embed changes (#89854)
## About The Pull Request

1. Reformats "Check Mood" 

Basically just cleaning it up.
- Moodlets are bullet pointed.
- Hunter is displayed here now.
- Quirks are displayed here now.
- It now tells you how drunk you feel.

Sample


![image](https://github.com/user-attachments/assets/1aac1180-1eed-45f7-9615-005eeecef8c8)

2. Reworks "Check self"

Big reworks done here.
- Organs now don't outright say "Your hear is hurty" "Your lugs are
hurty". Now they'll say something like, "Your chest feels tight" -
Unless you're self aware, then it will say "Your heart is hurty".
- Check self no longer reports wounds with 100% accuracy. You get an
approximate of what the wound is like - "Your chest has an open cut".
More severe wounds will still be bolded, though.

Sample 


![image](https://github.com/user-attachments/assets/3da6336c-63db-4298-9fcb-76748608c848)


![image](https://github.com/user-attachments/assets/6e797ef3-cb04-46cd-aa3c-520c9240953d)

3. Embed tweaks

Embeds can be hidden, and thus will only show up on health analyzers.
This means you can't rip them out by hand.
Right now only bullet shrapnel and explosion shrapnel is hidden.

## Why It's Good For The Game

1. Just some cleanup, largely. Stuff like quirks and hunger make more
sense when checking your mental rather than checking your body. Though
this might be weird for if mood is config-disabled, I might have to
revisit htat.

2. I always found that clicking on yourself and just getting a print out
of "Your liver's non-functional, your chest has a weeping avulsion, etc"
is pretty lame... it kind of diminishes diagnosis / doctor's job.
Ultimately, the goal of this is to open up a little more doctor gameplay
- primarily I think it'll allow for some fully roleplay moments, like
"Doc my chest hurts a lil" "You have 7 bullets and broken ribs bro"

3. Adds more punch to some embeds. Mostly for larp though.

## Changelog

🆑 Melbert
add: Your mood printout (clicking on the mood face) has been
reformatted, and should generally be cleaner.
add: Self examining was reworked, and overall gives you a lot less
perfect information, unless you are self-aware.
add: Bullet and grenade shrapnel is now hidden from examining - it's
skin deep. You can't rip them out with your hands, but hemostats /
wirecutters still suffice if you know they're there. Health analyzers
still pick them up too.
qol: Ghosts aren't notified about NPCs getting appendicitis 
/🆑
2025-03-15 05:51:06 +00:00
SmArtKar 76a69d627d Cleans up duplicate calls in bodypart overlays, implements a texture priority system (#89783)
Implemented a bodypart texture overlay priority system - ensures that
derez suicide always goes ontop of carp infusions, and voidwalker curse
goes ontop of both - currently the last one applied is the one that
sticks with you. Also cleaned up duplicate update_body calls, either
removing them or adding ``update = FALSE`` to overlay code.

Having whichever overlay was applied the latest be displayed is just too
inconsistent. And duplicate calls eat perf, bad.
2025-03-12 17:31:03 -04:00
Time-Green 053c2f86d7 Flesh Reshaper | New Genetics Visual Organ Restyler (#89314)
## About The Pull Request
Adds the flesh reshaper! 

https://github.com/user-attachments/assets/ccb79944-5e61-425c-9c9e-b1463ce56013

(The TGUI doesn't render but it's just a dropdown with valid features)

It let's you right click any human mob with visual features to change
them into a different cosmetic variant (within the same pool).

One spawns roundstart in the genetics lab

![image](https://github.com/user-attachments/assets/a578a914-0100-4a97-9ef6-7f3b82bcd115)

More can be made by researching gene engineering, including a medical
variant

![image](https://github.com/user-attachments/assets/74409f04-3162-419c-b8a9-26aa15f84b5f)
2025-03-12 16:00:07 -04:00
SmArtKar fc71aa3977 Cleans up duplicate calls in bodypart overlays, implements a texture priority system (#89783)
## About The Pull Request

Implemented a bodypart texture overlay priority system - ensures that
derez suicide always goes ontop of carp infusions, and voidwalker curse
goes ontop of both - currently the last one applied is the one that
sticks with you. Also cleaned up duplicate update_body calls, either
removing them or adding ``update = FALSE`` to overlay code.

## Why It's Good For The Game

Having whichever overlay was applied the latest be displayed is just too
inconsistent. And duplicate calls eat perf, bad.
2025-03-11 13:28:34 -05:00
Majkl-J b6b8306fda Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-02a 2025-02-20 00:00:19 -08:00
Time-Green 9d69f97267 Flesh Reshaper | New Genetics Visual Organ Restyler (#89314)
## About The Pull Request
Adds the flesh reshaper! 

https://github.com/user-attachments/assets/ccb79944-5e61-425c-9c9e-b1463ce56013

(The TGUI doesn't render but it's just a dropdown with valid features)

It let's you right click any human mob with visual features to change
them into a different cosmetic variant (within the same pool).

One spawns roundstart in the genetics lab

![image](https://github.com/user-attachments/assets/a578a914-0100-4a97-9ef6-7f3b82bcd115)

More can be made by researching gene engineering, including a medical
variant

![image](https://github.com/user-attachments/assets/74409f04-3162-419c-b8a9-26aa15f84b5f)
2025-02-13 02:46:03 -06:00
Penelope Haze 4c2a76ede3 Fix a large number of typos (#89254)
Fixes a very large number of typos. A few of these fixes also extend to
variable names, but only the really egregious ones like "concious".
2025-01-28 22:16:16 +01:00
Bloop 6df77ad80d [MIRROR] Death of mutant bodyparts AND external organs (#85137) (#4335)
* Death of mutant bodyparts AND external organs (#85137)

Removes mutant bodyparts and external organs from the game completely
Digitgrade behaviour was mutant bodypart for no reason

Cat ears now work with the bodyparts overlay system, same as all the
other external organs (since all their behaviour is now just on /organ

It doesn't remove all the /external types, but moves all behaviour to
/organ. I'll follow up with a PR wiping all the /external organ types,
but it's just conflict heaven so not this PR

I've also streamlined a lot of duplicate/weird species regeneration code

Melbert did the same PR as well but due to a lack of time (?) I have
absorbed his PR to double nuke mutant bodyparts

Frees us from the chain of unmodular code, and kills my greatest nemesis
(after the shuttle meteor murder bug)

🆑 Time-Green and MrMelbert
Refactor: External organ behaviour has been moved to /organ, ears now
use the same system as the other organs
Refactor: Mutant bodyparts are dead! This likely does not mean much to
the average person but it's very dear to me
code: Improves digitgrade handling in preference code
/🆑

I have absorbed #85126, using Melberts code to improve and add some
missing changes. Mainly improving the functioning of preferences and
digitgrade legs. I didn't take over the hairstyle improvements.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>

* Fixes missing felinid ear preference (#86553)

Closes #86452

🆑
fix: Fixed missing felinid ear preference
/🆑

* Spelling Fixes (#86056)

Fixes several errors to spelling, grammar, and punctuation.
Improves readability and user experience.
🆑
spellcheck: fixed a few typos
/🆑

* Fix plasmamen having all feature preferences (#86682)

Fixes #86622

Plasmamen relevant_external_organ is null, and it then checks if
relevant_external_organ is in a list containing nulls
I cleared the nulls from get_mut_organs to fix it

🆑
fix: Fixes plasmamen having all external organ species preferences
/🆑

* Fixes cat ear layering, makes getFlatIcon account for RESET_COLOR on under/overlays (#86757)

After the external organ removal pr, cat ears stopped being as weirdly
specialcased, and instead just used a `/datum/bodypart_overlay/mutant`
subtype. However, this was set up in a way where the inner ears were put
on a different layer from the outer ears, leading to wonky layering.

In this pr, we revert their layers and instead apply the inner ears as
an overlay onto the base ears, fixing this.

Thank you Melbert for the idea. o7

Additionally, as this pr tripped the screenshot tests, makes the
`getFlatIcon(...)` proc account for `RESET_COLOR` on under/overlays.

We do this by making it stop applying the colour after merging all the
under/overlays, and instead apply it and the parent color _before_
merging any under/overlays, while proxying the parent color as a new
parameter `parentcolor` to any new `getFlatIcon(...)` calls.

This coincidentally also fixes usage of `getFlatIcon(...)` on husked
bodies, as those also used `RESET_COLOR` for their blood overlay. The
screenshot tests had to be updated for this.

Fixes #86453.

🆑
fix: Fixed cat ears not layering properly.
fix: Husked bodies show their blood with the right colours in
photographs.
/🆑

* Automatic changelog for PR #86757 [ci skip]

* Fish infusion (#87030)

I'm adding a new infusion ~~(actually four, but two of them are just
holders for specific organs tied to a couple fish traits)~~ to the game.
As the title says, it's about fish.

The infusion is composed of three primary organs, plus another few that
can be gotten from fish with specific traits.

The primary organs are:
- Gills (lungs): Instead of breathing oxygen, you now need to stay wet
or breathe water vapor.
- fish-DNA infused stomach: Can safely eat raw fish.
- fish tail: On its own, it only speeds you up on water turfs, but it
has another effect once past the organ set threshold. It also makes you
waddle and flop like a fish while crawling (I still gotta finish sprites
on this one)

Other organs are:
- semi-aquatic lungs: A subtype of gills from fish with the 'amphibious'
trait, falls back on oxygen if there's no water. Can also be gotten from
frogs, axolotl and crabs.
- fish-DNA infused liver: From fish with the 'toxic' trait. Uses
tetrodotoxin as a healing chem instead of a toxin. Also better tolerance
to alcohol if you want to drink like a fish (ba dum tsh).
- inky tongue: From fish with the 'ink production' trait. Gives mobs the
ability to spit ink on a cooldown, blinding and confusion foes
temporarily.

The main gimmick of this infusion revolves around being drenched in
water to benefit from it, In the case you get the gills organ, this also
becomes a necessity, to not suffocate to death (alternatively, you can
breathe water vapor, without any benefit). To enable the bonus of the
organs set, three organs need to be infused. They can be gills, stomach,
tail and/or liver, while the inky tongue doesn't count towards it.

Once the threshold is reached, the following bonus are enabled:
- Wetness decays a lot slower and resists fire a bit more.
- Ink spit becomes stronger, allowing it to very briefly knock down
foes.
- Fishing bonuses and experience
- Resistance to high pressures
- Slightly expanded FOV
- drinking water and showers mildly heal you over time.
- for felinids: You won't hate getting sprayed by water or taking a
shower.
- While wet:
- - If the fish tail is implanted, crawling speed is boosted.
- - You no longer slip on wet tiles.
- - You also become slippery when lying on the floor.
- - You get a very mild damage resistance and passive stamina
regeneration, and cool down faster.
- - You resist grabs better.
- - get a very weak positive moodlet.
- However, being dry will make you quite squisher, especially against
fire damage, slower and give you a modest negative moodlet.

While working on it, I've also noticed a few things that explained why
tetrodotoxin (TTX) did jackshit at low doses, because livers have a set
toxin tolerance value, below which, any amount of toxin does nothing.
Also I've felt like reagents like multiver & co were a bit too strong
against a reagent that's supposed to work at very low doses, with slow
metabolization, so I've added a couple variables to buff TTX a bit,
making it harder to purge and resistant to liver toxin tolerance (also
added a bit of lungs damage).

I wanted to take a shot at coding a DNA infusion and see how chock-full
I could make it. DNA infusions are like a middle point between "aha,
small visual trinket" and organs with generally ok effects. I seek to
make something a bit more complex ~~(also tied to fishing ofc because
that's more or less the recurrent gag of my recent features)~~ primaly
focused around the unique theme of being strong when wet and weaker when
dry.

EDIT: The PR is now ready, have a set of screenshots of the (fairly mid)
fish tails (and gills, barely visible) on randomly generated spessman
and one consistent joe:

![immagine](https://github.com/user-attachments/assets/a4965508-22e2-4d3a-8523-29fec6bce91e)

🆑
add: Added a new infusion to the game: Fish. Its main gimmick revolves
around being stronger and slippery when wet while weaker when dry.
balance: Buffed tetrodotoxin a little against liver tolerance and
purging reagents.
/🆑

* Eye wounds, scars and a new ~Pirate~ RP quirk (#87209)

Upon getting stabbed in your eyes or having a bullet fly through your
head there's a chance (minor for stabbing, extremely low for headshots)
you'll receive a new "Eye Puncture" wound which causes profuse bleeding
out of your now-empty eye hole. Once healed you'll have to deal with a
scar on your eye which cannot be cured and requires surgical
replacement. Eye scarring will reduce your eyes' max health by 15, give
you a minor screen tint and a fancy visual on your character sprite.
Getting scarring on both eyes will turn you completely blind.

![image](https://github.com/user-attachments/assets/c1ae4ff3-6844-405d-819b-9c390511e321)

This PR also introduces a new quirk which gives you eye scarring on the
eye of your choice and an eyepatch to go alongside it, just make sure
that it sits on the right eye.

Also added medical(white) subtype of eyepatches to loadout for those who
want that version instead. Credits to AnturK on discord for the idea.

Its a neat lil' feature that makes the game more immersive, and unlocks
more roleplay opportunities for players. New quirk gives access to this
feature for players who want to make it a part of their character's
backstory (or maybe as a part of permanent scar roleplaying).

🆑
add: Getting stabbed or shot in the eyes has a chance of giving you a
new wound and a semi-permanent scar, blinding you on one side
add: Added new "Scarred Eye" quirk which blinds you on one eye but gives
you a fancy eyepatch
add: Medical eyepatches have been added to loadout
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>

* Resprited tails from fish infusion. (#87298)

Back when I made #87030 I got a bit lazy when it came to spriting the
fish tails and just ported a few ones from furry servers and made them
inherit the hair color. Let me tell you, those sprites kinda look bad,
and the fact that they've the same colors of hair is kinda... fuzzy, and
doesn't sit well with me, like some hairball stuck in a cat's throat.

So I took upon myself to actually make them better (and also give gill
overlays a couple extra pixels), at the cost of some of my free time and
their wagginess, because fuuuuuck wagging animations for anything that
isn't a somewhat amorphous fluffy tail. Fish don't wag their tail.

They also get one of several blue/grey tints if the owner of the part
doesn't have a peculiar skin tone like lizards or ethereals or moffs.

Anyway, comparison time:

OLD:

![immagine](https://github.com/user-attachments/assets/a4965508-22e2-4d3a-8523-29fec6bce91e)

NEW:

![immagine](https://github.com/user-attachments/assets/0f8e80cd-d11f-4fd4-a919-acb7237fa927)

Both from byond screenshots but I cut and pasted them in paint instead
of asesprite because old habits die hard.

Better sprites. Perhaps the selection of blues could be improved a bit
idk.

🆑
image: resprited fish tails from fish infusion.
/🆑

* Makes the game compile, first.

* Removes a duplicate loadout entry added by /tg/ (to avoid people's loadouts getting messed up)

* Fixed an issue with on_mob_insert() for /datum/bodypart_overlay/mutant

* Fixed an issue with the burn datum of the moth wings bodypart_overlay

* Fixing digitigrade legs not behaving as they should be

* A bunch of Insert->mob_insert and Remove->mob_remove

* Okay, now stuff gets colored properly

Also ears work properly too!

Only thing is that mutant organs on the preferences dummy don't seem to change between character, at least for most of them, which is really annoying.

* Properly returns ears to being internal organs

* Makes it so preferences can use relevant_mutant_bodyparts again!

* Makes organs properly update when changing species

* Markings now get removed when they don't need to be there on a limb

* Fully renives update_mutant_bodyparts(), as it was basically just update_body_parts() anyway at this point

* fix charging implant

* Restores the usage of simple bodypart_overlay for the sensory_enhancer and the hackerman_deck, as that was otherwise causing a bunch of runtimes

* Returns legs to being a sprite accessory, just for simplicity's sake (I don't want to have to refactor it on our end again)

* Fixes xenos not getting their mutant organs because I accidentally nulled the list for no reason 💀

* Makes it so certain organs (in this case, ears) can't be replaced when changing visual preferences, meaning Tesharis/Synths/Slimepeople will get their respective ears, regardless of what visuals they choose for them

* Fixes a small mistake with spines in the code

* Adds some mutant_bodyparts for the results of the infuser unit test. This might be a hack, but we'll cross that bridge when we get to it in the future.

* Adds a "None" option to tail_spines

* Allows ears to not constantly runtime because they don't have an accessory_name sometimes, which is a sad consequence of many species not setting their ear sprite sometimes

* Should fix CI, hopefully should be the last thing needed for this to work flawlessly from now on (crossing fingers)

* This ACTUALLY fixes the changeling transform and transform sting! Hurray!

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: klorpa <30924131+klorpa@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: Fluffles <piecopresident@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2025-01-12 21:42:00 -05:00
SmArtKar c1129369c7 [NO GBP] Fixes moths only being able to fly if they spawn in zero gravity (#88450)
## About The Pull Request
Moth wings prevent you from flying in gravity -> same check is used for
activation -> they're activated upon implanting -> unless you spawn or
get wings in zero-g you're screwed
Closes #88460
Closes #88457

## Changelog
🆑
fix: Fixed moths only being able to fly if they spawn in zero gravity
/🆑
2024-12-12 19:33:08 +01:00
SmArtKar f58ebf1a6e Third Time's the Spessman: Solves jetpack struggles once and for all (#88317)
## About The Pull Request

This PR improves our jetpacks in 2 major ways: partially decoupling them
and intentional space movement from SSnewphys, and implementing
consistent pushoff speeds.

Currently jetpacks work by applying constant newtonian force whenever an
input key is held down by a client and stabilizing the movement every
time they get processed by SSnewphys which is an SS_TICKER subsystem,
which means that it attempts to fire prior to everything else and has a
wait of a single tick. This would be fine if we could guarantee that
there isn't another SS_TICKER subsystem with a higher priority that
constantly overtimes... oh right, that'd be the most important subsystem
of SSinput.

Newtonian impulses, both when starting a drift and when applying
continious force rely on SSnewphys to fire the loop, which can end up
not happening due to overtime in input (and is a frequent issue on
highpop). To circumvent this, newtonian impulses now forcefully fire
their drift loop regardless of SSnewphys, thus ensuring that the
movement always happens in the tick it was called (If you ask something
to move with an ``instant`` flag you'd expect it to move the same tick).

Second issue stems from the fact that jetpacks try to move you at your
movement speed, except when pushing you off objects they hijack normal
movement code that would've ran, resulting in a single tile of slow,
janky movement (Or, when moving along walls, making the controls feel
"sticky" and worse than what you'd have without a jetpack in the first
place). By forcefully applying enough force to make players move at
expected speeds, we can solve that issue.

Third issue stems from a minor mistake in SSnewphys processing order -
process() on jetpacks ran **after** moveloops have fired, so all
stabilization only applied next tick. I swapped fire orders around which
solves this problem too, although it won't be triggering much as
stabilization would now forcefully fire the related loop by itself.


https://github.com/user-attachments/assets/1068f68b-2cd1-49b0-bff0-1f79ed0aed5a

Also I've refactored wings to be jetpacks since they behave exactly the
same, which is a bit cursed if you think about it.

## Why It's Good For The Game

Jetpack movement is highly inconsistent in speed/smoothness, janky and
gets ruined by even a slightest amount of overtime in subsystems above
it - this should solve all of those issues.

## Changelog
🆑
qol: Jetpacks are significantly smoother and nicer to use now - and not
affected by lag anymore!
code: Cleaned up spacemove/jetpack code a bit and moved some common code
to helpers.
refactor: Wings are now... jetpacks. They behave exactly the same and
this should reduce the amount of copypaste code in spacemove
significantly.
/🆑
2024-12-07 00:15:36 +01:00
Ghom 6272b3680c You can use a fishing rod to snatch organs during organ manipulation surgery (feat organs sanity fix) (#87774)
## About The Pull Request
This allows you to use a fishing rod during the "manipulate organs" step
of the aforementioned surgery to snatch organs from a target.

Unlike other fish sources, this one has a negative fishing difficulty of
-20, which when summed with the default minigame difficulty should still
result in a negative difficulty. In layman terms, this means the
minigame is skipped here (unless you're wearing some clunky stuff like
insulated or boxing gloves). It also has a wait time of 8 to 13 seconds
versus the more random standard 3 to 25 seconds.

A small side-effect of this is that explosions during the "manipulate
organs" step will basically disembowel you, but it kinda fits anyway.

By the by, because of this, there is a tiny chance bluespace fishing
rods can yield you random organs. Worry not, they're newly generated, so
you won't be snatching it from another player by accident (at least for
now).

## Why It's Good For The Game
It adds more possible weird and rare shenanigans involving surgery.

## Changelog

🆑
Add: You can use a fishing rod to snatch organs during organ
manipulation surgery
/🆑
2024-11-20 22:13:18 +00:00
SmArtKar 7038297aeb [NO GBP] Makes jetpack movement much smoother and prevents pushing off objects while using one (#87020)
## About The Pull Request
Jetpacks will now prevent you from attempting to interact with objects
near you in zero G, preventing you from pushing lockers and people
around. This also makes jetpack movement ***much*** more smooth, as they
will activate at your first move, preventing jerky movement when pushing
off walls. Same applies to all wings which should help moth players with
new spacemove.

Thanks to iusedtoplayxbox on discord for providing details regarding the
issue.

## Why It's Good For The Game

Less jank = happier players

## Changelog
🆑
qol: Jetpack movement is now much smoother
/🆑
2024-11-11 00:43:36 -08:00
SmArtKar 4cede34a49 [NO GBP] Fixes wings and jetpacks sometimes preventing you from opening doors (#87741)
## About The Pull Request
I hate this timeline. What title says, makes jetpacks and wings allow
you to bump into things you're moving into.

## Why It's Good For The Game
This feels awful and requires you to stop pressing movement keys for a
moment before resuming movement to get out of the "stuck" state

## Changelog
🆑
fix: Fixed wings and jetpacks sometimes preventing you from opening
doors
/🆑
2024-11-09 11:08:51 +01:00
Ghom 778ed9f1ab The death or internal/external organ pathing (ft. fixed fox ears and recoloring bodypart overlays with dye sprays) (#87434)
## About The Pull Request
This PR kills the abstract internal and external typepaths for organs,
now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds.

This PR also fixes fox ears (from #87162, no tail is added) and
mushpeople's caps (they should be red, the screenshot is a tad
outdated).

And yes, you can now use a hair dye spray to recolor body parts like
most tails, podpeople hair, mushpeople caps and cat ears. The process
can be reversed by using the spray again.

## Why It's Good For The Game
Time-Green put some effort during the last few months to untie functions
and mechanics from external/internal organ pathing. Now, all that this
pathing is good for are a few typechecks, easily replaceable with
bitflags.

Also podpeople and mushpeople need a way to recolor their "hair". This
kind of applies to fish tails from the fish infusion, which colors can't
be selected right now. The rest is just there if you ever want to
recolor your lizard tail for some reason.

Proof of testing btw (screenshot taken before mushpeople cap fix, right
side has dyed body parts, moth can't be dyed, they're already fabolous):

![immagine](https://github.com/user-attachments/assets/2bb625c9-9233-42eb-b9b8-e0bd6909ce89)

## Changelog

🆑
code: Removed internal/external pathing from organs in favor of a bit
flag. Hopefully this shouldn't break anything about organs.
fix: Fixed invisible fox ears.
fix: Fixed mushpeople caps not being colored red by default.
add: You can now dye most tails, podpeople hair, mushpeople caps etc.
with a hair dye spray.
/🆑
2024-10-30 08:03:02 +01:00
Majkl-J e59d8ba64b Merge commit '179a607a90ad7ec62bdaff4e6fe72af60ee56442' of https://github.com/tgstation/tgstation into upstream-24-10b 2024-10-23 23:27:16 -07:00
SmArtKar 6ea10333c8 [NO GBP] Makes jetpack movement much smoother and prevents pushing off objects while using one (#87020)
## About The Pull Request
Jetpacks will now prevent you from attempting to interact with objects
near you in zero G, preventing you from pushing lockers and people
around. This also makes jetpack movement ***much*** more smooth, as they
will activate at your first move, preventing jerky movement when pushing
off walls. Same applies to all wings which should help moth players with
new spacemove.

Thanks to iusedtoplayxbox on discord for providing details regarding the
issue.

## Why It's Good For The Game

Less jank = happier players

## Changelog
🆑
qol: Jetpack movement is now much smoother
/🆑
2024-10-05 02:03:39 +02:00
SmArtKar ad111f4950 Spacemove refactor - Newtonian physics (#84869)
## About The Pull Request

This PR significantly enhances how zero-g movement works. Its no longer
locked to one of 8 directions, everything now has inertia and is
affected by weight. This means that throwing a piece of wire will no
longer completely reverse your movement direction, and that being thrown
out of mass driver no longer will slow you down to a halt at some point.

This leads to following gameplay changes:
* Guns now accelerate you. Ballistics have higher acceleration than
lasers, and higher calibers have higher acceleration than smaller ones.
This means that firing full-auto weapons in zero-g will make you drift
and accelerate significantly. While this can be a hilarious way to
travel in space, it makes using them trickier.
* Impacting a wall or an object while moving at high speeds will cause
you to violently crash into it as if you were thrown. Careful when
exploring!
* Jetpacks now have inertia. Changes introduced in #84712 have been
mostly reverted, although speed buff has been reduced to 0.3 instead of
0.5 (although this is compensated by new movement mechanics, so overall
speed should be roughly equal). All MODsuit jetpacks now possess the
speed boost. Advanced MODsuit jets (which has also been added back) and
captain's jetpack instead have higher acceleration and stabilization
power, providing much more precise control over your movement.
* Firing guns while moving on a jetpack will partially negate your
pack's acceleration, slowing you down. Non-advanced jetpacks'
stabilization is not enough to compensate for heavy caliber weaponry as
sniper rifles, shotguns or rocket launchers.
* You no longer instantly decelerate upon sliding along a wall. Instead,
it may take a few tiles if you are moving at extreme speeds. Passing
over lattices still allows you to grab onto them!

As space movement is angle-based instead of dir-based now, its much more
smooth than before due to using new movement logic.

Example of jetpack stabilization in action:

https://github.com/tgstation/tgstation/assets/44720187/6761a4fd-b7de-4523-97ea-38144b8aab41

And, of course, you can do this now.

![jetpack_500](https://github.com/tgstation/tgstation/assets/44720187/37b11cd8-2bd1-4640-ae0c-5e0cc505bf52)

**This pull request requires extensive gameplay testing before
merging**, as a large amount of numbers have been picked arbitrarily in
an attempt to keep consistency with previous behavior (guns and
normal-sized items applying 1 drift force, which is equal to what
everything applied before this PR). Jetpacks and impacts may also
require adjustments as to not be frustrating to use.

Closes #85165

## Why It's Good For The Game

Zero-G refactor - currently our zero-g movement is rather ugly and can
be uncomfortable to work with. A piece of cable being able to accelerate
you the same as a duffelbag full of items when thrown makes no sense,
and so does instantly changing directions. Inertia-based version is
smoother and more intuitive. This also makes being thrown into space
more of a hazard (possibly opening the door for explosive
decompressions?)
Jetpack inertia and gun changes - this is mostly a consequence of
inertia-based movement. However, zero-g combat being preferred during
modes like warops was an issue due to it negatively affecting everyone
without jetpacks which are in limited supply onboard. This reverts the
mobility changes which severely impacted space exploration, while making
zero-g combat more dangerous and having it require more skill to be a
viable option.

## What's left

- [x] Refactor moth wings to use jetpack code
- [x] Refactor functional wings to use jetpack code
- [x] Locate and fix a recursion runtime that sometimes occurs upon
splattering against a wall
- [x] Add craftable tethers and modify engineering MOD tethers to use
the same system

## Changelog
🆑
add: You can now craft tether anchors, which can be secured with a
wrench and attached to with right click. They won't let you drift into
space and you can adjust tether length/cut it via lmb/rmb/ctrl click on
the wire.
add: MOD tethers now remotely place and connect to tether anchors
instead of throwing you at where they landed.
balance: MOD tethers can now be used in gravity
balance: Jetpacks are now inertia-based. 
balance: Guns can accelerate you significantly in zero-g.
balance: All jetpacks now give you equal speed buff, however advanced
MOD ion jets and captain's jetpack have higher acceleration/deceleration
values.
refactor: Refactored zero-g movement to be inertia-based and utilize
angles instead of directions.
/🆑
2024-09-26 02:49:54 -07:00
grungussuss 58501dce77 Reorganizes the sound folder (#86726)
## About The Pull Request

<details>

- renamed ai folder to announcer

-- announcer --
- moved vox_fem to announcer
- moved approachingTG to announcer

- separated the ambience folder into ambience and instrumental
-- ambience --

- created holy folder moved all related sounds there
- created engineering folder and moved all related sounds there
- created security folder and moved ambidet there
- created general folder and moved ambigen there
- created icemoon folder and moved all icebox-related ambience there
- created medical folder and moved all medbay-related ambi there
- created ruin folder and moves all ruins ambi there
- created beach folder and moved seag and shore there
- created lavaland folder and moved related ambi there
- created aurora_caelus folder and placed its ambi there
- created misc folder and moved the rest of the files that don't have a
specific category into it

-- instrumental --

- moved traitor folder here
- created lobby_music folder and placed our songs there (title0 not used
anywhere? - server-side modification?)

-- items --

- moved secdeath to hailer
- moved surgery to handling

-- effects --

- moved chemistry into effects
- moved hallucinations into effects
- moved health into effects
- moved magic into effects

-- vehicles --

- moved mecha into vehicles


created mobs folder

-- mobs --

- moved creatures folder into mobs
- moved voice into mobs

renamed creatures to non-humanoids
renamed voice to humanoids

-- non-humanoids--

created cyborg folder
created hiss folder
moved harmalarm.ogg to cyborg

-- humanoids --




-- misc --

moved ghostwhisper to misc
moved insane_low_laugh to misc

I give up trying to document this.

</details>

- [X] ambience
- [x] announcer
- [x] effects
- [X] instrumental
- [x] items
- [x] machines
- [x] misc 
- [X] mobs
- [X] runtime
- [X] vehicles

- [ ] attributions

## Why It's Good For The Game

This folder is so disorganized that it's vomit inducing, will make it
easier to find and add new sounds, providng a minor structure to the
sound folder.

## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
2024-09-23 22:24:50 -07:00
Xander3359 f9d0d5f5ec Infiltrator suit now hides wings, antennae and obfuscates your voice (#86546)
## About The Pull Request
Infiltrator suit now hides wings, antennae and obfuscates your voice

Hidden moth wings are no longer capable of flight
## Why It's Good For The Game
Further helps the infiltrator suit hide your identity by hiding
wings/antenna and makes it where you no longer have species-specific
"say" verbs or lisps.
## Changelog
🆑
qol: Infiltrator mod hides your voice
fix: Infiltrator suit now hides moth wings/antenna
fix: hidden moth wings are no longer capable of flight
/🆑
2024-09-12 17:50:11 +02:00
Time-Green 095f7e3b70 Death of mutant bodyparts AND external organs (#85137)
## About The Pull Request

Removes mutant bodyparts and external organs from the game completely
Digitgrade behaviour was mutant bodypart for no reason

Cat ears now work with the bodyparts overlay system, same as all the
other external organs (since all their behaviour is now just on /organ

It doesn't remove all the /external types, but moves all behaviour to
/organ. I'll follow up with a PR wiping all the /external organ types,
but it's just conflict heaven so not this PR

I've also streamlined a lot of duplicate/weird species regeneration code

Melbert did the same PR as well but due to a lack of time (?) I have
absorbed his PR to double nuke mutant bodyparts

## Why It's Good For The Game
Frees us from the chain of unmodular code, and kills my greatest nemesis
(after the shuttle meteor murder bug)

## Changelog
🆑 Time-Green and MrMelbert
Refactor: External organ behaviour has been moved to /organ, ears now
use the same system as the other organs
Refactor: Mutant bodyparts are dead! This likely does not mean much to
the average person but it's very dear to me
code: Improves digitgrade handling in preference code
/🆑

I have absorbed #85126, using Melberts code to improve and add some
missing changes. Mainly improving the functioning of preferences and
digitgrade legs. I didn't take over the hairstyle improvements.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-08-20 16:33:34 +02:00
SkyratBot 6f4684076c [MIRROR] Adds 9 wizard perks (#28875)
* Adds 9 wizard perks (#83262)

## About The Pull Request

Add new spells category for wizards: Perks. perks are not really spells,
but useful (and not so useful) improvements for your wizard which
provide more variety for builds.
https://youtu.be/eeVvUkVE3xQ
All perks cost 2 points, they work without wizard’s uniform, cannot
refund, effect start only at the station (perks will not work at the
wizard’s base). Perk can only be purchased once.

9 added perks:
1. Four Hands - gives you 2 extra hands.
2. Worm Born - on death, wizard turns into a large worm and can no
longer return to his previous form.
![Снимок экрана 2024-06-02
223645](https://github.com/tgstation/tgstation/assets/120736708/2dfac647-4c3c-4824-8320-73fc98cc61fd)
3. Dejavu - every 60 seconds returns wizard to where he was 60 seconds
ago and restores his health to the amount he had 60 seconds ago.
4. Sale Off - When buying something from a book of spells, wizard has a
chance not to spend points for the purchase, depending on the purchase
price. 1/2/3/4 price chance 50/25/15/10%. You can no longer refund
purchases.
5. Gamble - Give wizard 2 random perks.
6. Heart Eater - By eating someone's heart, the wizard has a chance to
either increase his maximum HP and stamina by 25 or lose 10 percent of
his maximum HP but get a random mutation.
7. Slime Friends - Slimes is your friends now. Every 20 Seconds you
spend 50 nutriments to spawn random big angry slime.
8. Transparence - wizard becomes half transparent, any projectiles pass
through, but you loses 25% of max HP and you get a stalker who will
follow you to the station to kill you.
9. Magnetism - Wizard gain gravitational anomaly that orbit around him,
which attracts objects and people.
https://youtu.be/gp6ZtTrZu7I

## Why It's Good For The Game

Gives the wizard more options to create a fun and interesting builds

## Changelog

🆑
add: new wizard spells category - perks.
add: adds 9 wizard perks.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@ gmail.com>

* Adds 9 wizard perks

---------

Co-authored-by: Xackii <120736708+Xackii@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
2024-07-16 10:49:29 +05:30
Xackii 2165300a01 Adds 9 wizard perks (#83262)
## About The Pull Request

Add new spells category for wizards: Perks. perks are not really spells,
but useful (and not so useful) improvements for your wizard which
provide more variety for builds.
https://youtu.be/eeVvUkVE3xQ
All perks cost 2 points, they work without wizard’s uniform, cannot
refund, effect start only at the station (perks will not work at the
wizard’s base). Perk can only be purchased once.

9 added perks:
1. Four Hands - gives you 2 extra hands.
2. Worm Born - on death, wizard turns into a large worm and can no
longer return to his previous form.
![Снимок экрана 2024-06-02
223645](https://github.com/tgstation/tgstation/assets/120736708/2dfac647-4c3c-4824-8320-73fc98cc61fd)
3. Dejavu - every 60 seconds returns wizard to where he was 60 seconds
ago and restores his health to the amount he had 60 seconds ago.
4. Sale Off - When buying something from a book of spells, wizard has a
chance not to spend points for the purchase, depending on the purchase
price. 1/2/3/4 price chance 50/25/15/10%. You can no longer refund
purchases.
5. Gamble - Give wizard 2 random perks.
6. Heart Eater - By eating someone's heart, the wizard has a chance to
either increase his maximum HP and stamina by 25 or lose 10 percent of
his maximum HP but get a random mutation.
7. Slime Friends - Slimes is your friends now. Every 20 Seconds you
spend 50 nutriments to spawn random big angry slime.
8. Transparence - wizard becomes half transparent, any projectiles pass
through, but you loses 25% of max HP and you get a stalker who will
follow you to the station to kill you.
9. Magnetism - Wizard gain gravitational anomaly that orbit around him,
which attracts objects and people.
https://youtu.be/gp6ZtTrZu7I

## Why It's Good For The Game

Gives the wizard more options to create a fun and interesting builds

## Changelog

🆑
add: new wizard spells category - perks.
add: adds 9 wizard perks.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2024-07-15 16:28:41 +01:00
SpaceLoveSs13 16dc3418ea Redoing Sprite Accessory (#28497)
* [MIRROR] Moves "sprite accessories" (e.g. Hair, Undergarments, Mutant Bits) from `GLOB` to a datasystem (#2278)

* Moves "sprite accessories" (e.g. Hair, Undergarments, Mutant Bits) from `GLOB` to a datasystem

* Ugh

* .

* Continuing merging 82847 to Novas codebase (#3136)

done, i hope??

* Taur update

* lowercase a in accessories

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mal <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Iajret <8430839+Iajret@users.noreply.github.com>

* fix

* Let's see if this cuts it.

* Guess we missed a thing long ago.

---------

Co-authored-by: NovaBot <154629622+NovaBot13@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mal <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Iajret <8430839+Iajret@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-06-30 21:06:48 +05:30
SkyratBot 24151d1228 [MIRROR] Moves "sprite accessories" (e.g. Hair, Undergarments, Mutant Bits) from GLOB to a datasystem (#27561)
* Moves "sprite accessories" (e.g. Hair, Undergarments, Mutant Bits) from `GLOB` to a datasystem

* Merge branch 'master' of https://github.com/tgstation/tgstation

* Moves everything I can think of to the subsystem

* Seems to be working fine now

* makes it compile

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Waterpig <wtryoutube@seznam.cz>
2024-06-08 09:35:22 +05:30
SkyratBot 82c7cb5103 [MIRROR] Makes transferring functional wings to new bodies actually work (#28019)
* Makes transferring functional wings to new bodies actually work (#83705)

## About The Pull Request

Fixes the bug where, if you surgically remove functional wings and then
re-implant them (even into yourself), the new owner won't get the toggle
wings button. This fixes that.

Also cleaned up some of the code.

## Why It's Good For The Game

i assume this is a bug, as it's just kinda weird that the wings that
work with one body won't work if you take them out and put them back in.

## Changelog
🆑
fix: When implanting functional wings into a new body, they will
actually be able to use said wings now.
/🆑

* Makes transferring functional wings to new bodies actually work

---------

Co-authored-by: Lucy <lucy@absolucy.moe>
2024-06-06 18:24:03 +05:30
Lucy 7204db1269 Makes transferring functional wings to new bodies actually work (#83705)
## About The Pull Request

Fixes the bug where, if you surgically remove functional wings and then
re-implant them (even into yourself), the new owner won't get the toggle
wings button. This fixes that.

Also cleaned up some of the code.

## Why It's Good For The Game

i assume this is a bug, as it's just kinda weird that the wings that
work with one body won't work if you take them out and put them back in.

## Changelog
🆑
fix: When implanting functional wings into a new body, they will
actually be able to use said wings now.
/🆑
2024-06-06 00:48:09 -04:00