302 Commits
Author SHA1 Message Date
xPokee 37d18f10cc Screenshot tests 2026-04-12 16:32:35 -04:00
nevimer 85d2594bd0 Merge remote-tracking branch 'origin/master' into upstream-feb12-2026
# Conflicts:
#	_maps/map_files/moonstation/moonstation.dmm
#	tgstation.dme
2026-03-10 17:10:57 -04:00
dfa292188f Makes moth eyes colourable and fixes HUD implants on moths visually because I was eyeless to it once. (#5307)
## About The Pull Request

Literally title. Tested with multitool on robotic moth eyes too, works.
Also closes https://github.com/Bubberstation/Bubberstation/issues/5229/.
## Why It's Good For The Game

Customisation good. Bugfix good. Both combined is good.
## Proof Of Testing

<img width="191" height="131" alt="image"
src="https://github.com/user-attachments/assets/3993d1db-0047-42d5-a623-34f5240ce27b"
/>


<img width="764" height="654" alt="image"
src="https://github.com/user-attachments/assets/27872b7f-45d7-478c-89a1-e022eb1090c8"
/>
<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog
🆑
add: Recolouring for moth eyes. You will have to set new colours in
character preferences.
fix: HUD implants not displaying on moth eyes
fix: De-spookified moths that have had their eyes replaced. (Fixed moth
eyes disappearing when replaced with anything else, rendering your
sprite eyeless until your original eyes were put back in).
/🆑

---------

Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
2026-03-07 13:54:48 +01:00
Alexis 5c5a636485 Merge branch 'master' into upstream-feb12-2026 2026-03-02 07:42:16 -05:00
AlexisandGitHub e458eaee4a GAS: Giant Armored Serpentids (Snake Bugs) (#5139)
## About The Pull Request
**The majority of the work was done by Ozzo in #1471.**

GAS are snake bugs hailing from Baystation 12. 

- They hate the heat, but are durable against low-pressure environments
and the cold.
- They cannot wear suits and most clothes, but have built in armor (it's
in their name).
- It is harder to grab GAS.
- They are taller than the average spaceman.


https://github.com/user-attachments/assets/f9ac1078-0d41-4a26-850f-26a2cd7bbf01

They currently have no lore or species description, but plans are in the
works for both to be made.
## Why It's Good For The Game
It's a new species that was well-recieved when it was tested the first
time around, before being lost due to a lack of work on it. I am here to
continue work on it and add new features to it if they are requested by
the person that wanted them.
## Proof Of Testing
It compiled and ran, hence me being able to take the video. There were
no runtimes. I attached an image of a stylish GAS as further proof of
testing.
<details>
<summary>Screenshots/Videos</summary>
<img width="137" height="111" alt="image"
src="https://github.com/user-attachments/assets/4b2ddd78-9312-4f0e-bbac-37bd51290490"
/>
</details>

## Changelog
🆑
add: Added a new species: Giant Armored Serpentids (GAS)!
/🆑
2026-02-26 17:31:43 +01:00
AlexisandGitHub 5b8d5b8626 [Nova Port] Seperates Teshari hair from their ears and gives them three new emotes (#5232)
## About The Pull Request
This is a port of https://github.com/NovaSector/NovaSector/pull/6659.
The PR does as the title suggests, it adds three new emotes:

- tchirp (teshari chirp)
- tsqueak (teshari sqeak)
- ttrill (teshari trill)

It also separates the mohawks from the ears, allowing for more
customization and less clipping on teshari body types.
## Why It's Good For The Game
It allows for more customization and future additions to teshari, and
more emotes for teshari are always nice.
## Proof Of Testing
See the attached video below.
<details>
<summary>Screenshots/Videos</summary>


https://github.com/user-attachments/assets/4e5bd73f-16ef-4acb-b105-f84e7474b232

</details>

## Changelog
🆑 intense-skies, xPokee
add: Added new three new teshari emotes: ttrill, tsqueak, and tchirp.
These emotes are also in the emote panel.
add: Added two new mohawk hair selections for teshari.
del: Removed one of the old mohawk ears options from teshari, as it is
now deprecated.
/🆑
2026-02-17 18:46:31 +01:00
88d7efe291 Fleshmind - Attempt 3 (#4914)
## About This Pull Request
Brought back based off of
https://github.com/Bubberstation/Bubberstation/pull/2007, made
functional again by myself.
Original Code: https://github.com/Skyrat-SS13/Skyrat-tg/pull/14023

Fleshmind is a PVE event that incorporates some PVP elements in the
later stages of its growth. You defeat it by destroying all its
processors. It has six stages of growth with each stage expanding on its
abilities and the structures and mobs it can deploy. It will announce to
the entire station each time it gains a level or loses a level. Each
level means it has a new processor.

- **Level 1:** The start when it spawns in. It will spawn some basic
structures.
- **Level 2:** It will begin to spawn screamers and whisperers
- **Level 3:** The wireweed is much more situated, and this is the point
where it spawns a very dangerous mech. This is the point where it
becomes very critical. It also starts to spawn Babblers (structures that
spew propaganda into comms) and Modulators. (Gives you hallucinations)
- **Level 4** No new special abilities.
- **Level 5** No new special abilities
- **Level 6** It automatically calls the emergency shuttle to hijack and
spawns a deathsquad on Centcomm. This ends the round.

**Counters:**
- Fight in groups. Carry a melee weapon. (You can still melee the
mechivers and try to kill them before they convert you)
- Wirecutters cut wireweed.
- Ion Weaponry is extremely useful. It also stuns all the mobs.
- Target the processors. If you can pick them off in space, it has
practically zero EVA abilities.
- If someone gets assimilated, should get them to medical if you kill
them.

To run it requires 35 active players and a minimum of an hour to have
passed.
## Why It's Good For The Game
With mold being disabled, there is a missing PVE element in the game,
this fills that niche while also playing around with the idea of
temporary conversion antags in a way that I think works really well.

Wireweed/fleshmind also distracts the crew and security enough to
provide clever antagonists with an opening to commit crimes and get away
with them while the crew has their hands full.

## Proof of Testing
It's been test merged for two months now, it works.
## Changelog
🆑 xPokee, StrangeWeirdKitten, Gandalf2k15
add: New midround event: Fleshmind
/🆑

---------

Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Artur Lang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
2026-02-17 15:38:34 +01: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
SmArtKarandGitHub 74b00bac99 Husk visuals now inherit their mob's blood color (#95106)
## About The Pull Request

Makes lizard husks swampy green and ethereal husks bright neon green

<img width="187" height="99" alt="image"
src="https://github.com/user-attachments/assets/a9182969-8dc7-4fb5-a55b-8bf30acac730"
/>

Also futureproofed the blood-colored limb overlay element that skeleton
limbs use to work fine if the limb didn't get assigned blood dna (while
its still attached to the owner without being added by butchering)

## Why It's Good For The Game

Preserves visual consistency

## Changelog
🆑
image: Husk visuals now inherit their mob's blood color
/🆑
2026-02-08 18:47:28 -05:00
[ERRORNAME]andGitHub dfe2733b16 New sprites for Nightmare and Shadow people + unique sprites for Light Eater and heart of darkness (#94912)
## About The Pull Request

Exactly what the title says. Nightmare/shadowlings and nightmare organs
have new sprites
<img width="412" height="408" alt="image"
src="https://github.com/user-attachments/assets/ea5cdeea-157e-4e2a-943d-61bca08ce7cd"
/>



## Why It's Good For The Game

Shadow people sprite is ancient and not really that good. Now they
actually look scary. Light Eater just using same sprite as changeling's
armblade was kinda boring, same goes for heart of darkness just being
black demon heart

## Changelog
🆑 ERRORNAME
image: Shadow people and Nightmare resprite 
image: Unique sprites for light eater and heart of darkness
/🆑
2026-01-29 15:10:05 +01:00
NickandGitHub 12fabce357 Katanas now have their own respective sheaths, adds leather crafting recipes for katana sheaths (#94939) 2026-01-28 13:09:44 +02:00
RoxyandGitHub 0d4938228f Fix CI Failures [IDB IGNORE] [MDB IGNORE] (#5126)
## About The Pull Request

- null all GAGS vars for brass wirecutters as it doesn't use GAGS
- Repath `mothbomb.dmi` so it actually gets deployed with the server
- Generate map icons
- Fix 150+ crafting material parity failures
- Fix airlock lights not working
- Fix certain species missing eyes

## Why It's Good For The Game

Don't like red X

## Proof Of Testing

If this PR is green check then you Know
2026-01-15 00:59:34 -05:00
RikuTheKillerandGitHub c7e4e90004 Adds a new antag, the Blood Worm (#93787)
## LTS Document

Check this document before making any significant future changes to
blood worms, please.

https://hackmd.io/@RikuTheKiller/H1AHQSKNZx

## About The Pull Request

THIS PR SHOULD ABSOLUTELY BE TM'D FIRST

Blood worms are a new progression antag. When the event runs, 2
candidates are picked from ghosts and spawned in as blood worm
hatchlings, which then have to grow up, do a couple objectives and take
over the station.

Hatchlings are weak outside of a host, while juveniles can stand their
own reasonably well. Adults have high offensive power and can only be
dealt with using the right gear or a lot of luck and robustness. They're
meant to be a moment of glory for achieving maximum progression and they
can bootstrap the next hatchlings by gathering corpses before cocooning.

Each growth stage requires 30 seconds in a cocoon, which can only be
created after consuming a lot of blood. There's a falloff curve on a
per-blood-type basis, meaning you can't drain the same person over and
over again to reach adulthood. The medbay freezer is a priority target
for the blood worms and can get one of them to the juvenile stage if
fully ransacked.

It takes 500 blood to mature from hatchling to juvenile, and 1500 blood
to mature from juvenile to adult. You can only get up to 1000 blood from
synthetic sources like monkeys, and consuming synthetic blood is 30%
less efficient. Blood worms can also examine living targets to see how
much blood a target has, and how much growth the blood worm would gain
for consuming that blood.

Blood worms spawn in vents and have night vision for maneuvering in
maintenance. Hatchlings can ventcrawl, while juveniles can move around
by breaking things. Optionally, you can take over a host with a lot of
access like the Captain to go basically anywhere, especially if nobody
knows you killed the captain.

Behind the scenes, host-taking kicks the host's original mind to a
backseat mob. This needs the most testing in practice, but it's
confirmed that it returns the host's mind back to their body, at least
in testing.

All mob, ability and action sprites are made by INFRARED_BARON. Legal
rights were transferred to me after I paid for the commission.

Note, I've been working on this massive PR for quite a while, so
documenting every small change is really hard! Apologies for anything
I've missed. There's a lot.

Final note, admins can spawn these by either:
A. Trigger the midround event via the dynamic-panel verb, under the
Rulesets tab.
B. Giving someone the Blood Worm antag datum via the Traitor Panel in
the Player Panel for the target player. This will transform their mob
into a valid Blood Worm, with all of the associated objectives and such.

### Active Abilities
1. Leech Blood (No Host) - Lets the blood worm drain blood from living
targets and reagent containers. Uses an aggressive grab to restrain
living targets until leeching is over, which takes around a second to
initiate. Causes oxyloss during the leeching. NPC monkeys can't escape
from this and it floors targets as well.
2. Spit Blood (Both) - Multi-function ability, lets the blood worm fire
ranged corrosive blood spit at targets, melt restraints on their hosts
by right-clicking, and as an adult, shoot a burst of blood spit at a
target by right-clicking. Note of the right-click abilities, shooting
bursts can't be done while in a host. (to avoid unfair stealth kills)
Shooting a burst has a much longer cooldown than shooting normally. All
spit types cost blood to use.
3. Invade Corpse (No Host) - Lets the blood worm take a host for
themselves, consuming all of the host's blood and in essence, "becoming"
the host. Any bloodloss inflicted on the host is taken as damage to the
blood worm, and the blood worm retains its weakness to fire even in this
state. Burn damage itself no longer has any extra damage, though.
4. Leave Host (Host) - Title, literally just leaves the host after a
delay. Notably works even while the host is moving, dead, incapacitated
or otherwise fucked up in any way, shape or form.
5. Inject Blood (Host) - Lets the blood worm heal its host. The potency
of this increases as the worm grows up, but so does the cooldown and
blood consumption. This works on organ damage, injuries, etc.
6. Mature (No Host) - Makes the blood worm enter a cocoon for 30
seconds, emerging as the next growth stage. Requires an increasing
amount of consumed blood / growth as the blood worm uses it.
7. Reproduce (No Host, Adult Only) - Makes the blood worm enter a cocoon
for 30 seconds, with 4 hatchlings emerging out of it, including the
original blood worm, now reverted back into a hatchling as well.
8. Revive Host (Host) - If the host is in a viable state to be revived,
revives them after an animation sequence plays out.

### Passive Abilities
1. Space Immunity - Blood worms are immune to the cold, low pressures
and a lack of oxygen. Only the immunity to a lack of oxygen carries on
to hosts from this.
2. Organ Insertion - Blood worms can insert organs into their hosts by
right-clicking on them with the organ in-hand. This mainly exists to
deal with hosts that lack organs, and avoids the gotcha where an adult
blood worm ends up gutting their host by hitting them too hard, as they
can simply fix it on the spot.
3. Life Support - Blood worm hosts don't need a heart, lungs or a liver
to survive. Lungs are useful for speaking, and a liver is necessary to
process reagents.
4. Regeneration - Blood worms slowly heal over time. This is nowhere
near enough to overcome bleeding or heat damage, since it's 0.3 hp/s for
a hatchling, 0.4 hp/s for a juvenile and 0.5 hp/s for an adult.
5. Night Vision - Blood worms can see in the dark. This doesn't extend
to hosts.
6. Ventcrawling - Hatchling blood worms can ventcrawl.
7. Doorcrawling - Hatchling and juvenile blood worms can slide under
doors. Doing so takes 3 seconds for a hatchling and 5 seconds for a
juvenile.
8. HUD - Blood worms can tell how much blood targets have at a glance,
via a blood HUD bar exclusive to them. They can also tell apart other
blood worm hosts from normal people via an antag HUD. There's also an
examine message they can use on living targets for even more info.

### Weaknesses
1. Heat and Fire - Blood worms quickly die to heat, their bodies are
flammable and their blood will burn up if their host's core temperature
is too high. The main counter to this is getting a host with
flame-resistant gear.
2. Bleeding - While in a host, bleeding wounds will directly damage the
blood worm itself. How much a host needs to bleed before the worm dies
depends on their growth stage. Blood worm hosts keep bleeding even while
dead, so just keep hitting them and they'll die. Blood worms
automatically leave their hosts when they hit 10% health or lower, and
their hosts bleed 50% faster than normal people.
3. Stuns - Blood worms have no way of dealing with a stunned host other
than getting out. They can deal with any restraints by melting them,
though.
4. Testing - Security can order a blood worm testing crate from cargo,
either for a 20 minute cooldown via the security cargo interface
console, or for 10000 credits via the supply console. It contains 4
single-use testers that hurt a bit when applied, but are instant to use
and 100% accurate. The stopgap is that they're really fucking expensive
and only work once per item.

### Screenshot
<img width="280" height="132" alt="image"
src="https://github.com/user-attachments/assets/00d22361-997e-4347-a0bf-aa240de40727"
/>

## Why It's Good For The Game

Antagonist variety, mainly. This is basically Cortical Borers 2:
Electric Boogaloo.

Currently, we lack any antagonists with mind control abilities. That
really sucks!

I've also gotten a lot of positive feedback about the antagonist while
working on it.

This antagonist also has great potential for roleplay, as they can take
over hosts, surprise attack people by getting out of a dead corpse, talk
to each other using Wormspeak, etc.

I think we're also itching for variety on "pest" antagonists. Right now
we just have spiders and xenos. Everybody knows these two, so why not
mix it up a bit?

And as for balance? Blood worms are relatively easy to dispatch when you
know their weaknesses, which are extremely clear. Bleeding for hosts,
fire for either one, lasers for the worms themselves. As long as you get
the host in crit and keep hitting, you've pretty much won, and they
can't keep spamming Inject Blood forever since they'll quickly run out
of blood to use.
## Changelog
🆑
add: Added a new heavy roundstart/midround antagonist, the Blood Worm.
Credit to INFRARED_BARON for the sprites!
fix: Removing traits based on a source no longer causes issues with
trait signals.
fix: High-priority effects no longer double-trigger due to subsystem
issues.
fix: Weighted averaging in reagent merging code has been band-aid fixed.
It's not the best, but it works.
/🆑
2026-01-14 23:30:35 -06:00
L0pzandGitHub 08981814e3 Polishes some old swords (#94343)
## About The Pull Request

I resprited claymores and some of their subtypes
<img width="771" height="579" alt="image"
src="https://github.com/user-attachments/assets/85926919-b5c5-4c8a-a58d-dcb70f859dca"
/>


![kult_sword_animated](https://github.com/user-attachments/assets/da95db51-04de-406b-9dec-b7db4b16a5d8)

## Why It's Good For The Game

<img width="524" height="444" alt="hatesoul"
src="https://github.com/user-attachments/assets/fe561ce0-cd2e-4b53-852e-db97a48741db"
/>

## Changelog
🆑

image: Resprited a bunch of swords

/🆑
2025-12-25 10:05:32 +01:00
MaoandGitHub 1cd0702938 Ushanka Hat, more fur! (#94468) 2025-12-16 17:49:33 -05:00
nevimer 6e9f2ccfc0 Merge remote-tracking branch 'tgstation/master' into upstream-12-15
# Conflicts:
#	.github/workflows/compile_all_maps.yml
#	.github/workflows/run_integration_tests.yml
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	code/_onclick/hud/credits.dm
#	code/controllers/subsystem/networks/id_access.dm
#	code/datums/diseases/advance/advance.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/game/machinery/doors/door.dm
#	code/game/objects/structures/crates_lockers/closets/secure/medical.dm
#	code/game/objects/structures/crates_lockers/closets/secure/security.dm
#	code/modules/antagonists/malf_ai/malf_ai_modules.dm
#	code/modules/jobs/job_types/_job.dm
#	code/modules/loadout/categories/accessories.dm
#	code/modules/loadout/loadout_helpers.dm
#	code/modules/loadout/loadout_items.dm
#	code/modules/loadout/loadout_preference.dm
#	code/modules/mob/living/silicon/robot/robot_defense.dm
#	code/modules/mod/mod_theme.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/reagents/reagent_containers/cups/drinks.dm
#	code/modules/shuttle/mobile_port/variants/supply.dm
#	code/modules/surgery/organs/internal/eyes/_eyes.dm
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_heretic.png
#	icons/hud/screen_full.dmi
2025-12-15 18:12:29 -05:00
Thunder12345andGitHub 1d270f5f27 Converts pre-rework generic heretic gear into chaplain clothing and a null rod (#94363)
## About The Pull Request

Reused the old pre-rework heretic robe and blade assets as a new set of
chaplain gear and null rod option.

Replaced the last few existing uses of the now spriteless generic robe:
- Deathmatch, changed heretic warrior to use blade robes
- Deathmatch, changed ripper to use the new chaplain armour
- Tribal mothman legion corpse, changed to use new chaplain armour
- Heretic preview and hallucination, changed to use rust robes
- Heretic virtual domain, changed to use rust robes

<img width="127" height="131" alt="image"
src="https://github.com/user-attachments/assets/690e848e-5191-44d4-bd58-5e338fa2aa4e"
/>

## Why It's Good For The Game

Chaplains are the playground of old magic content assets, where they
find a second life as cosplay outfits. Chaplains can already cosplay
cultists, it's only fair that they can pretend to be a heretic as well.

## Changelog
🆑
add: Added a new set of chaplain armour based on the generic heretic
robes unavailable since the path rework.
/🆑
2025-12-07 19:50:19 +00:00
JinsheeandGitHub 5b39a57e97 Update insect parts (#4898)
## About The Pull Request

Updates the insect_parts_greyscale.dmi file to remove the darker hands
and feet from the basesprite. These can still be implemented via
markings.

## Why It's Good For The Game

Due to request, people would like more ease of customization when
customizing their insects

## Proof Of Testing

<img width="267" height="280" alt="image"
src="https://github.com/user-attachments/assets/78879f6c-54f7-4c6c-911a-55009365024e"
/>


## Changelog

🆑
qol: Removed dark hands and feet from Anthropomorphic Insect sprite.
/🆑
2025-11-12 11:32:00 -05:00
Roxy 058503ed0d Update screenshot tests 2025-11-06 02:06:27 -05:00
Roxy 3e3fa72cdf Fixes for ca2cc70322 2025-10-25 15:51:03 -04:00
Roxy e28e9fbdba Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-23-10-2025 2025-10-23 17:38:23 -04:00
RoxyandGitHub 37c6e18a11 Normalizes Shadekin Eyes (#4839)
## About The Pull Request
shadekin eyes had different offsets based on the direction before but
now they wont be different

## Why It's Good For The Game
fix bug

## Proof Of Testing
i am not opening my localhost again just to show proof but this is what
they looked like before
<img width="560" height="259" alt="afbeelding"
src="https://github.com/user-attachments/assets/58115cc5-d879-42f9-8730-5517c057663d"
/>


They are now fine after I fixed them I moved the right one 1 pixel more
into the face
<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog

🆑
fix: fixes shadekin eyes being offset wrong
/🆑
2025-10-22 09:21:56 -04:00
GhomandGitHub ca2cc70322 Organ damage refactor/cleanup (#93436)
## About The Pull Request
So, my original goal was just a refactor for the emissive overlays of
eyes, as a way to implement the specular emissive introduced by smartkar
some time ago, but somehow I found myself dragged into a bigger refactor
or cleanup of organ damage, thresholds, failures. One of the main
problem was that there were no procs called when a organ suffered enough
damage to fail or when recovering from failure. It'd just enable or
disable a bitflag, leaving it up to subtypes to decide how to tackle
organ failure their own ways: diverse, funky and sometimes incompatible.
More often than not relying on their very own "update_thingamajig" kinda
procs that run whenever the organ takes damage, rather than just when
the threshold is reached (low, high, failure. There are however a couple
organs with their own quirky thresholds, I let those slide).

There's also a bit of old code, especially for ears, with the
`AdjustEarDamage` and temporary deafness both predating the framework
for organ damage as far as I know. It really needed a coat of fresh
paint.

Oh, there were also more than a handful of organs that still heavily
relied on some ORGAN_TRAIT source instead of the `organ_traits` list and
the two add/remove procs `add_organ_trait` or `remove_organ_trait`. This
include organs that lose or gain specific traits when failing et
viceversa.

~~Lastly, felinids (and the halloween ghost species) having reflective
eyes. It's just a nod to the tapetum lucidum that animals with night
vision often have (including cats), which is why their eyes are a bit
brighter in the dark. Felinids however, do not have night vision (nor do
ghosts). This is merely cosmetic.~~ Cut out for the time being due to
issues with the specular emissive...

## Why It's Good For The Game
Refactoring / cleaning up old organ code.

## Changelog

🆑
refactor: Refactored organ damage code a little. Hopefully there won't
be issues (otherwise report them).
/🆑
2025-10-21 16:52:28 -05: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
MrMelbertandGitHub e85674d366 Unified CMO blues slightly, updates garment bags slightly, updates CMO locker contents slightly (#93321)
## About The Pull Request

### CMO palette update

Before - after

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

Logical follow up to #93313 and #91902

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

CMO now starts with white sneakers instead of blue sneakers

### Garment bag update

Garment bags can hold backpacks, duffels, etc. 

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

### Misc

Removed the defib mount from the CMO's closet

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

## Why It's Good For The Game

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

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

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

- Bugfix.

## Changelog

🆑 Melbert
image: CMO now has unique backpack/satchel/etc. sprites which matches
their teal palette.
image: CMO spawns with white sneakers instead of blue sneakers.
qol: Garment bags can hold empty backpacks/satchels/etc.
del: Defib mount removed from CMO's locker.
fix: Items stocked in a storage item by default can be
mouse-drag-swapped like any other item.
/🆑
2025-10-13 00:16:49 +02:00
xPokee 9b282a850e Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync 2025-09-17 11:45:44 -04:00
John WillardandGitHub 3cb0b239b7 Merges ghosts into spirits & a rework (#92879)
## About The Pull Request

Having 2 different species with similar names, looks, attributes etc.
seemed like it would be confusing so I thought we should probably trim
it down to 1, however since I'm doing that I thought of other changes to
go along with it:

- The passthrough ability was replaced, now while you're passing through
things you no longer drop stuff, but you put a tombstone where you start
phasing, and are pulled back to it while done. You still can't interact
with anything in this form. Having the tombstone dug out will be raiding
your grave, so you'll be pulled out as a dead skeleton.

- Removes holy water interactions

- Ghosts now have organic limbs & are a Humanoid, so they can have
surgery and other forms of healing used on them.


https://github.com/user-attachments/assets/5db0c204-0070-466b-8b6c-1702ff0fd94e

## Why It's Good For The Game

Ghosts being available to Wizards is okayish but is a rather big buff
for one you get free, yes you can still be caught up to if you're in
hallways and such but it's way easier to get away with than like, your
default teleport scroll even. Being available to Miners though was a big
mistake because it opened them to be quite an annoyance with it. The
only counter was the fact no healing worked on them, which I don't think
is how it should be balanced.
I thought I could trust players with such tools but apparently I had too
high hopes.

Anyway this makes it more bearable for it to be given out at the low
cost it currently is at, it's still good as flavor, to spook people or
ghost around, and I think while it doesn't make 100% sense why you lose
access to your hands, inventory, and UI when you supposedly "drop" your
tombstone, I think it's still a good advantage for "scouting", sorta
like a lesser spirit realm rune.

Closes https://github.com/tgstation/tgstation/issues/91849

## Changelog

🆑
del: Merged ghosts and spirits into one species.
balance: Spirit's passthrough ability is now tied down 7 tiles from a
tombstone, but is no longer affected by holy water nor does it make them
drop their equipped gear.
balance: Ghosts can now be healed.
/🆑
2025-09-12 16:55:47 +02:00
xPokee 75e5f43f5a Update screenshot_digi_leg_test.png 2025-09-11 08:07:17 -04: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
MrMelbertandGitHub 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
34566c051f (READY FOR MERGE) Adds a new species: Lycans (and cursekin) (#4331)
## About The Pull Request
Adds a new species, lycans. They start as a cursekin, but can transform
between lycan form and cursekin form at will via an action button, with
a three-minute cooldown between swapping forms. **You need to select
ears/tail as a cursekin or your lycan form won't have them. (You can
toggle them off in-game via the show/hide mutant parts verb)** The
secondary mutant color for body color also changes the lycan form body
color.

### Cursekin Form

In cursekin form, you are pretty much comparable to a baseline human,
albeit with far more customization due to opting for mutant colors over
skin tone. At this time, the one notable difference is that your body
will reject any inorganic organs/implants that may be attempted to be
inserted.

### Lycan Form

In lycan form is where you really start to see the differences from a
human, some key differences are:
- You now have built in armor, but, are unable to wear clothes, armour,
or any gear.
- Your punches do damage equivalent to a butcher cleaver (minus AP), but
you cannot use guns.
- You are oversized
- You have night vision and better hearing, but this comes at a cost as
you will take extra damage from flash bangs, on both the eyes and ears
fronts.
- You have chunky fingers and are illiterate.
- You get the hunger increase of vulps.

### To Do:

- [x] Code in all the features outlined by the bounty issuer.

- [x] Polish the code.

- [x] Fix any remaining bugs.

- [x] Have the PR test-merged.

- [x] Fix any new bugs that come up.

- [ ] Full merge.
## Why It's Good For The Game
It's a whole new species with mostly unique mechanics not seen by other
species. The transformation aspect is not seen in any other species
unless you count slimes, and the cybernetic rejection is not used by
other species in this exact way to my knowledge. This lets players play
as a species capable of transforming between two species, which makes
for some interesting possibilities.
## Proof Of Testing
Everything seemed to work on my end.
## Changelog
🆑
add: added a new species, werewolves (and werehumans)
image: added icons for the werewolves from Monkestation
/🆑

---------

Co-authored-by: Artur Lang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2025-09-05 13:54:58 -04:00
b95174d2da Reflavors the Lone Infiltrator to prevent confusion with Lone Operative (#4495)
## About The Pull Request
We've had many cases of new players mistaking Lone Infiltrator for Lone
Operative. This PR renames the antagonist to "Syndicate Boarder," and
changes their preview to instead use the Infiltrator MOD (even if they
don't actually get an infiltrator MOD, yet)

## Why It's Good For The Game
Prevents confusion with the murderbone punishment antagonist type and
more clearly explains what the Syndicate Boarder (former Lone
Infiltrator) is.

## Proof Of Testing
<img width="340" height="309" alt="image"
src="https://github.com/user-attachments/assets/c26ca7fb-5655-424e-b2f7-209790738e69"
/>

## Changelog

🆑 ReturnToZender
qol: Lone Infiltrators have been renamed to Syndicate Boarders for
clarity.
/🆑

---------

Co-authored-by: Artur Lang <24881678+Arturlang@users.noreply.github.com>
2025-08-20 23:06:38 -06:00
Roxy 4c62a21b1a Fixes for #92061 2025-08-12 13:50:57 -04:00
ReturnandGitHub c5f1e43ca4 Reworks species previews in the creator (#4415)
## About The Pull Request
This PR makes it so all the species previews and more visually
interesting and more closely resemble what the species you're about to
become should look like.

See proof of testing for before vs after comparison. This has no effect
on characters of this species, only what people see when browsing
species for what to pick.

## Why It's Good For The Game
This PR will give a better idea of what the vibe of a species is, and
therefore allow you to make a better choice as to what your character
will look like

## Proof Of Testing
Before
<img width="70" height="599" alt="image"
src="https://github.com/user-attachments/assets/0785366f-44d7-4fab-b160-ea2525671695"
/>
After
<img width="85" height="596" alt="image"
src="https://github.com/user-attachments/assets/3f6a8939-c25e-43cf-9810-a2242bc42659"
/>

<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog

🆑 ReturnToZender
qol: Character previews in the species menu got a visual glow-up!
add: Akula (Generic) has been renamed to the Aquatic template species
add: Primitive Demihumans have been renamed to Hearthkin in the species
list, so they're not confused with a template species.
add: Anthromorphic Insects have been renamed to "Insectoids,"
simplifying their name and preventing confusion with Anthromorphs.
/🆑
2025-08-12 13:34:27 -04:00
d738cbb296 Several balance changes to Combat MODsuits (#91944)
## About The Pull Request

atomization of https://github.com/tgstation/tgstation/pull/91702 with a
few changes.

- armor booster module has been removed, nukie suits are now always
fully armored and EVA proof.

- Jetpack modules have had their power drain reduced considerably.

- Cap,Hos and Sec MODs armor values have been bumped up (similar to the
old hardsuit values).

- Sec armor plates are now a cargo import.

The nf suit now comes with the Shock absorber pre-installed.

- Fixes Nukie suits not having T4 flash protection.


- All combat modsuits now have ear protection by default when the suit
active (Cap,Sec,Hos,Syndie,ERT, Death Squad, Ninja and RD.)

- Night visor module now comes preinstalled in the syndie mods and
doesn't conflict with other vision modules, nor it costs complexity,
power drain reduced, the module itself has been removed from the uplink.

- Increases the complexity on the nukie suits by 2 points.

- all traitor modules now cost 1 less TC.

## Why It's Good For The Game

**armor booster removal**

I really dislike how this module works, it's a constant hassle having to
manually swap mode depending on the pressure, it's just an annoyng
memory check that punishes you with chip damage when not respected.

The choice of wheter wearing a mod or not doesn't really apply to
nuclear operatives since they wear these things all the time and losing
half of your armor in space never really made a ton of sense to begin
with.

**Jetpack power drain buff**

The drain on this thing is absolute fucking nuts, it eats high capacity
cells in a matter of minutes, power should be a limiting factor to using
these things but it shouldn't tank your battery health this quickly.

**Cap,Sec,Hos MODs buffs**

Back when Fikou introduced MODsuits, one point he clarified in the
design doc is that "Combat stuff usually leads to uninteresting design,
it makes the suits do everything for everyone"

I don't want to diss on the dude (Love you bud), but I don't think his
point makes a ton of sense.

Combat stuff, on this case Combat mods should be built with Combat in
mind.

In all fairness he then has a paragraph addressing why the crew based
combat suits should have low armor, but it still rings hollow to me.

Armored or not, being slower than your average spessman is enough to
make you an easy target or to never be able to chase anyone on foot,
even with their armor increased I don't see players having them
constantly on all the time, the slowdown is a hard enough disincentive.

The Magnate and HoS mods specifically are unique pieces of gear, and
they are usually assigned to 2 of the most important (and prone to
assassination) roles on the station.

There's also a weird paradox with some of the modules they come equipped
with the sec MODs, the pepper spray and the projectile dampener are
built around getting hit, which is a hard sell when your armor is so low
you might as well just die straight up.

Out of respect to Fikou's will of not wanting to grant the crew the
ability to mass produce combat MODs, I removed the sec modplates from
the techweb and moved em as a cargo import.

**Uplink MODules Price reduction**

These were originally priced with progression in mind, traitor
specifically has become considerably weaker since they lost access to
avenues to generate extra TCs.

It's hard to justify getting a suit when most weapons in the uplink cost
more than half of your budget, let alone the modules.

**Shock absorption into the inf suit**

This module is pretty much already mandatory if you don't want to lose
fights in one hit, wearing a syndie modsuit makes you giga valid to
everyone on station and any traitor worth their salt will buy this
module regardless anyway; it just punishes new players who don't know
better.


**Night Visor MOD changes**

This module is completely useless, nobody ever uses it, because it
conflicts with other vision modules, and it's completely redundant since
Thermal vision already comes packed with NV on their own.

**Complexity increase on the Nukie suits + T4 flashing protection
added**

The nukie suits have honestly quite limited complexity for the role they
are supposed to fill , the T4 flash protection missing from the suit is
unintended as we made any other MODsuit have T4 protection already, Moth
Nukies rejoice.

**Ear Protection on combat MODs (oh boy)**

Listen, as of right now we have a total of 2 counters for flashbangs, a
Bowman or being deaf.

A sealed, airtight suit shouldn't offer less protection against loud
noises than a mere headset.
baddies that usually pack these suits usually have a Bowman anyway,
Nukies have it, ninja can easily teleport into a sec outpost and get it,
it's a bit more tricky for traitor since they usually have to invest in
an emag to quickly take the set or kill a security officer.

At least now if you see a baddie roll up in a suit you no longer have to
play hypotheticals wheter your flashbang will work properly or not.

I also gave the ear protection to the RD mod despite it not being a
combat MOD, because frankly it made sense, it's a bomb proof armor, It
should also protect you from loud noises.

## Changelog

🆑
removal: Armor booster module has been removed.
balance: Jetpack module energy drain has been massively reduced.
balance: armor on the Magnate,Safegaurd and sec modsuits has been
considerably increased.
balance: Sec MOD plates have been transferred from RnD to Cargo.
balance The Infiltrator MOD now comes with the shock absorption module
pre-installed.
balance: Nukie MODsuits hav a bit more complexity.
fix: Nukie MODs now have the same flash protection as the other suits
with welding protection.
balance: night visor module comes pre-installed in the syndie mods, no
longer consumes complexity,drains less power and doesn't conflict with
the other visor MODules.
removal: Nightvision MODule removed from the uplink.
balance: Combat MODs and RDs now grant earing protection when the suit
is active.
/🆑

---------

Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
2025-07-19 20:29:31 -04:00
ec0a685866 Several balance changes to Combat MODsuits (#91944)
## About The Pull Request

atomization of https://github.com/tgstation/tgstation/pull/91702 with a
few changes.

- armor booster module has been removed, nukie suits are now always
fully armored and EVA proof.

- Jetpack modules have had their power drain reduced considerably.

- Cap,Hos and Sec MODs armor values have been bumped up (similar to the
old hardsuit values).

- Sec armor plates are now a cargo import.

The nf suit now comes with the Shock absorber pre-installed.

- Fixes Nukie suits not having T4 flash protection.


- All combat modsuits now have ear protection by default when the suit
active (Cap,Sec,Hos,Syndie,ERT, Death Squad, Ninja and RD.)

- Night visor module now comes preinstalled in the syndie mods and
doesn't conflict with other vision modules, nor it costs complexity,
power drain reduced, the module itself has been removed from the uplink.

- Increases the complexity on the nukie suits by 2 points.

- all traitor modules now cost 1 less TC.

## Why It's Good For The Game

**armor booster removal**

I really dislike how this module works, it's a constant hassle having to
manually swap mode depending on the pressure, it's just an annoyng
memory check that punishes you with chip damage when not respected.

The choice of wheter wearing a mod or not doesn't really apply to
nuclear operatives since they wear these things all the time and losing
half of your armor in space never really made a ton of sense to begin
with.

**Jetpack power drain buff**

The drain on this thing is absolute fucking nuts, it eats high capacity
cells in a matter of minutes, power should be a limiting factor to using
these things but it shouldn't tank your battery health this quickly.

**Cap,Sec,Hos MODs buffs**

Back when Fikou introduced MODsuits, one point he clarified in the
design doc is that "Combat stuff usually leads to uninteresting design,
it makes the suits do everything for everyone"

I don't want to diss on the dude (Love you bud), but I don't think his
point makes a ton of sense.

Combat stuff, on this case Combat mods should be built with Combat in
mind.

In all fairness he then has a paragraph addressing why the crew based
combat suits should have low armor, but it still rings hollow to me.

Armored or not, being slower than your average spessman is enough to
make you an easy target or to never be able to chase anyone on foot,
even with their armor increased I don't see players having them
constantly on all the time, the slowdown is a hard enough disincentive.

The Magnate and HoS mods specifically are unique pieces of gear, and
they are usually assigned to 2 of the most important (and prone to
assassination) roles on the station.

There's also a weird paradox with some of the modules they come equipped
with the sec MODs, the pepper spray and the projectile dampener are
built around getting hit, which is a hard sell when your armor is so low
you might as well just die straight up.

Out of respect to Fikou's will of not wanting to grant the crew the
ability to mass produce combat MODs, I removed the sec modplates from
the techweb and moved em as a cargo import.

**Uplink MODules Price reduction**

These were originally priced with progression in mind, traitor
specifically has become considerably weaker since they lost access to
avenues to generate extra TCs.

It's hard to justify getting a suit when most weapons in the uplink cost
more than half of your budget, let alone the modules.

**Shock absorption into the inf suit**

This module is pretty much already mandatory if you don't want to lose
fights in one hit, wearing a syndie modsuit makes you giga valid to
everyone on station and any traitor worth their salt will buy this
module regardless anyway; it just punishes new players who don't know
better.


**Night Visor MOD changes**

This module is completely useless, nobody ever uses it, because it
conflicts with other vision modules, and it's completely redundant since
Thermal vision already comes packed with NV on their own.

**Complexity increase on the Nukie suits + T4 flashing protection
added**

The nukie suits have honestly quite limited complexity for the role they
are supposed to fill , the T4 flash protection missing from the suit is
unintended as we made any other MODsuit have T4 protection already, Moth
Nukies rejoice.

**Ear Protection on combat MODs (oh boy)**

Listen, as of right now we have a total of 2 counters for flashbangs, a
Bowman or being deaf.

A sealed, airtight suit shouldn't offer less protection against loud
noises than a mere headset.
baddies that usually pack these suits usually have a Bowman anyway,
Nukies have it, ninja can easily teleport into a sec outpost and get it,
it's a bit more tricky for traitor since they usually have to invest in
an emag to quickly take the set or kill a security officer.

At least now if you see a baddie roll up in a suit you no longer have to
play hypotheticals wheter your flashbang will work properly or not.

I also gave the ear protection to the RD mod despite it not being a
combat MOD, because frankly it made sense, it's a bomb proof armor, It
should also protect you from loud noises.

## Changelog

🆑
removal: Armor booster module has been removed.
balance: Jetpack module energy drain has been massively reduced.
balance: armor on the Magnate,Safegaurd and sec modsuits has been
considerably increased.
balance: Sec MOD plates have been transferred from RnD to Cargo.
balance The Infiltrator MOD now comes with the shock absorption module
pre-installed.
balance: Nukie MODsuits hav a bit more complexity.
fix: Nukie MODs now have the same flash protection as the other suits
with welding protection.
balance: night visor module comes pre-installed in the syndie mods, no
longer consumes complexity,drains less power and doesn't conflict with
the other visor MODules.
removal: Nightvision MODule removed from the uplink.
balance: Combat MODs and RDs now grant earing protection when the suit
is active.
/🆑

---------

Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
2025-07-19 14:14:58 +10:00
Roxy 4420ed30ec Update screenshot tests 2025-07-04 20:47:46 -04:00
Time-GreenandRoxy 2dbbe4f41d Voidwalker Rework | Basic Mob Edition + Bonus Antag (#91646)
Reworks the Voidwalker into a basic mob, including a lot of the balance
and mechanics!

Old (left), new (right)

![image](https://github.com/user-attachments/assets/5583db66-6025-4874-95dd-938aa828634c)![image](https://github.com/user-attachments/assets/2785c5cc-ccda-4ffd-bc1c-5bb278873d9b)

https://github.com/user-attachments/assets/22d6138f-11aa-4f7a-8600-2565e6578bcf

(little outdated)
https://youtu.be/cp1E3qPJGX4 (high res mirror)

**🟨Voidwalker mob changes🟨**
No longer a human species and no more void eater. Instead deals damage
by simple unarmed attacks.
Instead of dealing brute, the voidwalker does oxygen damage (4-5 hits to
knock out) with left-click, and slight brute on right click. Non-human
mobs automatically take brute damage instead of oxygen damage.

150 HP
33% burn armor

Yes it has hands, but it can only pick up and drop stuff

**🟨Window phase🟨**

![image](https://github.com/user-attachments/assets/82a330ee-16f8-46e4-a325-c894fc8931d6)
Instead of needing to smash a window with the void eater, moving through
windows simply leaves them passable for 5 seconds. Makes kidnapping a
lot easier, but also makes it easier for people to chase you

People who used the voided skull also leave windows passable for a short
bit.

**🟩Cosmic Charge🟩**
Standard charge ability, but only lets you charge towards space and
works while dragging people

**🟩The Vomitwalker🟩**
People you kidnapped now occasionally do the nebula vomit, which
voidwalkers can use to dive from and into

![image](https://github.com/user-attachments/assets/e483a0d2-a418-479e-89e5-1dcd71165140)
Diving into it is very fast but also removes the nebula vomit. You can
also kidnap people into the vomit (this doesn't remove the vomit).

There is also a little UI for tracking this. Clicking it while in space
dive teleports you to the next nebula vomit, if there are any.

![image](https://github.com/user-attachments/assets/8907f261-6395-44fb-86ea-0ed548aca3ab)

**🟨Voided people changes🟨**
Kidnapped people and people that used the cosmic skull are no longer
muted, but take 10% extra brute and occasionally leave behind glass
shards when taking a lot of damage.

Are no longer obliterated on a second encounter with voidwalkers.
Voidwalkers can't hurt people they've already voided (unless they really
want to), but instead just knock them out for 30s

Also the kidnapped do space vomit as I said earlier.

**🟩Sunwalker🟩**
Voidwalker variant made for pure murderbone. Has no camo and kindap
mechanics, but has a fiery charge, loads of damage and area igniting and
people ignition. It's admin, but I might change this later once I've had
some more time to think about it.

![image](https://github.com/user-attachments/assets/2383dc6e-2173-4449-b71b-367e81c55f88)

Other changes:
- Voidwindows no longer need to be space adjacent
- Unsettle works faster but can't be used in combat anymore
- Space camo now grants complete space invisibility
- Makes a lot of aspects easily moddable, so we can easily mod it into a
moistwalker in-game
- Taking a cosmic skull when you already used one gives you the old
voidwalker void eater arm. Additional uses just gives you more void
eater arms until you run out of hands
- I definitely forgot a lot more
- I made a cool voidwalker hud! It even has a unique space camo toggle

<details>
  <summary>Lot of text</summary>

Voidwalker was basically a snowflaked toghether human species because I
didn't know how to sprite, but I was able to work with species and
visual effects. Then I realized I can just commission sprites!

This also let me just cut out a lot of the snowflake code, because it's
no longer a human so half the things I didn't want them to be able to
do, they just literally cannot do.

Voidwalkers were in a bit of strange spot with kidnapping? There was
essentially no incentive, other than "smash spaceman = funny". They also
had issues doing, anything? There's surprisingly little space on a space
station, especially maps such as tram. Making the voided victims have
nebula vomit gives the voidwalker a reason to WANT to kidnap, by giving
them a way to appear basically anywhere on the station. I don't think
it's too overpowered. Voided people don't vomit that much, it's easily
cleanable and diving into it removes them, so they're limited usability.

Replacing the brute damage with oxygen damage also kinda... just makes
sense? I seriously contemplated letting them do stamina damage for the
first iteration, but opted not to do it because stamina damage has so
many hooks attached. Oxygen damage doesn't! It's also just incredibly
thematic, let's them bypass most armor and makes them more suited to
non-letha kidnappings.

Space camo making them completely invisible was also long overdue. It
was literally just urging people to turn up their gamma and turn down
their parallax settings. I thought it was an interesting mechanic, but
it's just straight up unfair and doesn't belong in a multiplayer game.
They now more frequently leave behind little glass shards, leave
particles from nebula vomit they leave from and have more unique sound
effects, so attentive (and lucky) people can still deduce if an area is
safe-ish.

I removed being able to shatter voided people because the mechanic was
deeply misunderstood. It was intended to give them a means of removing
people if they kept incessently bothering the voidwalker, but people
went out of their way to use this to roundremove people they had already
voided. The 30s sleep conveys my intention a lot better, and fits better
now that the voidwalker benefits from having as many voided people
vomitting all over the place.

The cosmic charge gives them some much needed survivability. My
experiences (in observing voidwalkers, I can never get the roll ;_;) is
that they're constantly one mistake away from complete obliteration. The
cosmic charge let's them get out quick despite their slow movement speed
in gravity. It also makes them stronger when fighting in space.

They got 33% burn armor so it's a tiny bit harder to wipe them away in a
single laser salvo, while still giving people ample opportunity to fight
them off . Also they're like glass or something so it fits thematically.

I gave them hands because I thought it was cool, might be a mistake idk

</details>

🆑 Time-Green, INFRARED_BACON
add: Voidwalker has been throughly reworked! Now you are even less safe!
admin: Adds admin-only Sunwalker mob
fix: Unsettle doesnt work on yourself anymore
fix: Space camo doesnt stop bobbing anymore
fix: Voidwalker windows now recharge on kidnap
runtime: Fixes healthanalyzers runtiming when scanning mobs without
reagent holders
/🆑
2025-07-04 16:41:45 -04:00
KrysonismandGitHub c5f1b7f8c3 Da blobmob update! Indepedent strains, new sprites, egglike spores, fixes, sounds and buffs! #Cytology2025 (#91368)
## About The Pull Request

This PR makes a number of changes focusing on improving the blob
minions, spores, nauts, zombies and their associated component.

## New sprites

The blob spore, blob zombie and blobbernaut has been resprited. 

The spore and zombie have been lightly touched to preserve the most of
the original characteristics while given a cleaner look.

The spore and zombie have a partially desaturated version used to let
more of the strain colour through instead of them all ending up dark
brown.

The blobbernaut has been reshaded and the side sprite has been made
coherent with the front state, I made decided how the front state was
shaded should be the "canon" one (this might be a bit controversial but
the wild inconsistency was bugging me.)

The blobbernaut is a bit less veiny, but the veins look more natural and
use the strain complementary colour. Many combinations are cool, some
are a bit lacking due to the weird choices of complementary colour.


![image](https://github.com/user-attachments/assets/aee01fb1-5d3a-47ad-abd6-85096f8b8751)

![image](https://github.com/user-attachments/assets/732a4157-c7f6-4a43-ad46-62a505a97088)

## New Cytology Related Features

Blob mobs can now have strains independently of an overmind. 

The 15% mutation chance of vat grown creatures causes a spore or
blobbernaut to get a random strain.

When I first added the blob spore cell line, ghosts could click on cyto
blob spores to posses them, they would then presumably(?) but not
explicitly be free antags. This ability was lost when the blob spore
code was modernised.

Very few people knew about this, and no one grew blob spores anyway.
 
This feature is coming back in a big way, vat grown blob spores present
a new unique job hazard, they are automatically offered to ghost as an
extremely shitty, but free antag.

I have tested spawning like 15 antag pre-buff blob spores in a live
round and they failed completely to antagonise the crew effectively,
hopefully these buffed spores won't present too much of an issue to our
great administration team, if that ends up being the case, there are
many levers to pull to tone them down.

## Blob Spore Buffs 

Blob spores prior to this PR were almost completely useless.

The main cause of this was the extremely dilute reagent smoke reaction;
10u divided over 20 seconds.

This resulted the smoke clouds dealing 0.15 - 0.6 DPS, a completely
negligible and useless amount.

The smoke reagent concentration has been massively increased(10u -> 40u)
and the smoke duration has been reduced(20s -> 8s).
The result of this is that blob spore clouds are something you want to
avoid standing in, but they provide less smoke cover for the blob and
nauts.

Blob spores have also gained the ability to vent crawl. Simple mobs that
can't either open doors or vent crawl feel super bad to play.

They also deal a little more melee damage, but this is still
pathetically low on account of their low attack speed.

I have adjusted their supplementary reagents and reduced the amounts of
spores produced per cycle(2 -> 1) to make them a bit harder to mass
produce.

## Blob Strain Buffs

I have not made this PR with the goal of buffing any particular strain,
but some changes have affected blob strain balance:

### Debris Devourer 

This was the only strain that was strongly mechanically tied to the
core.
In order to allow for independent debris devourer mobs, they can now eat
trash(or any item really), they are independent, they store these items
inside their mob, and use these for the debris devourer reactions.

If they have an overmind, the item gets sent to the core.

This should result in a nice buff to the strain, which I've been told is
one of the bad ones.

### Regenerative Materia & Cryogenic Poison

5 years back another contributor removed the ability of blobs and
blobbernauts to transfer reagents with their attacks(as their expose
method is vapour).

This was a completely undocumented change and possibly unintentional, so
I am reverting it by giving blob reagents penetrates_skin = VAPOR again.

This only really affects these two strains. It makes regenerative
materia much stronger, while barely having any effect on cryogenic
poison, because temperature normalisation changes has made it completely
ineffective even with much more reagent applied.

### Electromagnetic Web

The spore reagent cloud buff might also give a boost to some strains
with good expose effects, like electromagnetic web.

## Blob Cooking

Blob spores now drop spore sacks, they can be ground for spore toxin, or
cracked on a griddle to create an egg-like treat!

I also added a detoxification reaction to reduce the amount of toxin
when cooked, might not work yet because I think griddles may not
actually heat the food?

## Sound Effects

Blob spores bursting and blobbernauts dying have sound effects. 

## Why It's Good For The Game

level 5 biohazard

## Changelog
🆑
image: blob mobs have been respectfully resprited. 
add: vat grown blob mobs can sometimes get born with a blob strain.
add: blob spores drop spore sacks, crack them on the griddle. 
add: debris devourer mobs can now eat trash, sending it to the core, if
there is one.
add: vat grown blob spores are now sentient and evil.
balance: blob spores now have much more concentrated smoke.
balance: blob spores can ventcrawl.
fix: regenerative materia and cryogenic poison strain blob tiles & nauts
now inject chems again.
sound: blob spores & blobbernaut now have death sound effects.
/🆑
2025-07-02 16:03:47 +00:00
Time-GreenandGitHub 39a2434c06 Voidwalker Rework | Basic Mob Edition + Bonus Antag (#91646)
## About The Pull Request

Reworks the Voidwalker into a basic mob, including a lot of the balance
and mechanics!

Old (left), new (right)

![image](https://github.com/user-attachments/assets/5583db66-6025-4874-95dd-938aa828634c)![image](https://github.com/user-attachments/assets/2785c5cc-ccda-4ffd-bc1c-5bb278873d9b)


https://github.com/user-attachments/assets/22d6138f-11aa-4f7a-8600-2565e6578bcf

(little outdated)
https://youtu.be/cp1E3qPJGX4 (high res mirror)

**🟨Voidwalker mob changes🟨**
No longer a human species and no more void eater. Instead deals damage
by simple unarmed attacks.
Instead of dealing brute, the voidwalker does oxygen damage (4-5 hits to
knock out) with left-click, and slight brute on right click. Non-human
mobs automatically take brute damage instead of oxygen damage.

150 HP
33% burn armor

Yes it has hands, but it can only pick up and drop stuff

**🟨Window phase🟨**

![image](https://github.com/user-attachments/assets/82a330ee-16f8-46e4-a325-c894fc8931d6)
Instead of needing to smash a window with the void eater, moving through
windows simply leaves them passable for 5 seconds. Makes kidnapping a
lot easier, but also makes it easier for people to chase you

People who used the voided skull also leave windows passable for a short
bit.

**🟩Cosmic Charge🟩**
Standard charge ability, but only lets you charge towards space and
works while dragging people

**🟩The Vomitwalker🟩**
People you kidnapped now occasionally do the nebula vomit, which
voidwalkers can use to dive from and into

![image](https://github.com/user-attachments/assets/e483a0d2-a418-479e-89e5-1dcd71165140)
Diving into it is very fast but also removes the nebula vomit. You can
also kidnap people into the vomit (this doesn't remove the vomit).

There is also a little UI for tracking this. Clicking it while in space
dive teleports you to the next nebula vomit, if there are any.


![image](https://github.com/user-attachments/assets/8907f261-6395-44fb-86ea-0ed548aca3ab)

**🟨Voided people changes🟨**
Kidnapped people and people that used the cosmic skull are no longer
muted, but take 10% extra brute and occasionally leave behind glass
shards when taking a lot of damage.

Are no longer obliterated on a second encounter with voidwalkers.
Voidwalkers can't hurt people they've already voided (unless they really
want to), but instead just knock them out for 30s

Also the kidnapped do space vomit as I said earlier.

**🟩Sunwalker🟩**
Voidwalker variant made for pure murderbone. Has no camo and kindap
mechanics, but has a fiery charge, loads of damage and area igniting and
people ignition. It's admin, but I might change this later once I've had
some more time to think about it.

![image](https://github.com/user-attachments/assets/2383dc6e-2173-4449-b71b-367e81c55f88)

Other changes: 
- Voidwindows no longer need to be space adjacent
- Unsettle works faster but can't be used in combat anymore
- Space camo now grants complete space invisibility
- Makes a lot of aspects easily moddable, so we can easily mod it into a
moistwalker in-game
- Taking a cosmic skull when you already used one gives you the old
voidwalker void eater arm. Additional uses just gives you more void
eater arms until you run out of hands
- I definitely forgot a lot more
- I made a cool voidwalker hud! It even has a unique space camo toggle
## Why It's Good For The Game

<details>
  <summary>Lot of text</summary>
  
Voidwalker was basically a snowflaked toghether human species because I
didn't know how to sprite, but I was able to work with species and
visual effects. Then I realized I can just commission sprites!

This also let me just cut out a lot of the snowflake code, because it's
no longer a human so half the things I didn't want them to be able to
do, they just literally cannot do.

Voidwalkers were in a bit of strange spot with kidnapping? There was
essentially no incentive, other than "smash spaceman = funny". They also
had issues doing, anything? There's surprisingly little space on a space
station, especially maps such as tram. Making the voided victims have
nebula vomit gives the voidwalker a reason to WANT to kidnap, by giving
them a way to appear basically anywhere on the station. I don't think
it's too overpowered. Voided people don't vomit that much, it's easily
cleanable and diving into it removes them, so they're limited usability.

Replacing the brute damage with oxygen damage also kinda... just makes
sense? I seriously contemplated letting them do stamina damage for the
first iteration, but opted not to do it because stamina damage has so
many hooks attached. Oxygen damage doesn't! It's also just incredibly
thematic, let's them bypass most armor and makes them more suited to
non-letha kidnappings.

Space camo making them completely invisible was also long overdue. It
was literally just urging people to turn up their gamma and turn down
their parallax settings. I thought it was an interesting mechanic, but
it's just straight up unfair and doesn't belong in a multiplayer game.
They now more frequently leave behind little glass shards, leave
particles from nebula vomit they leave from and have more unique sound
effects, so attentive (and lucky) people can still deduce if an area is
safe-ish.

I removed being able to shatter voided people because the mechanic was
deeply misunderstood. It was intended to give them a means of removing
people if they kept incessently bothering the voidwalker, but people
went out of their way to use this to roundremove people they had already
voided. The 30s sleep conveys my intention a lot better, and fits better
now that the voidwalker benefits from having as many voided people
vomitting all over the place.

The cosmic charge gives them some much needed survivability. My
experiences (in observing voidwalkers, I can never get the roll ;_;) is
that they're constantly one mistake away from complete obliteration. The
cosmic charge let's them get out quick despite their slow movement speed
in gravity. It also makes them stronger when fighting in space.

They got 33% burn armor so it's a tiny bit harder to wipe them away in a
single laser salvo, while still giving people ample opportunity to fight
them off . Also they're like glass or something so it fits thematically.

I gave them hands because I thought it was cool, might be a mistake idk
  
</details>

## Changelog

🆑 Time-Green, INFRARED_BACON
add: Voidwalker has been throughly reworked! Now you are even less safe!
admin: Adds admin-only Sunwalker mob
fix: Unsettle doesnt work on yourself anymore
fix: Space camo doesnt stop bobbing anymore
fix: Voidwalker windows now recharge on kidnap 
runtime: Fixes healthanalyzers runtiming when scanning mobs without
reagent holders
/🆑
2025-07-01 12:55:31 +01:00
MrMelbertandRoxy e0bdfc3f5f Dynamic Rework (#91290)
Implements https://hackmd.io/@tgstation/SkeUS7lSp , rewriting Dynamic
from the ground-up

- Dynamic configuration is now vastly streamlined, making it far far far
easier to understand and edit

- Threat is gone entirely; round chaos is now determined by dynamic
tiers
   - There's 5 dynamic tiers, 0 to 4.
      - 0 is a pure greenshift.
- Tiers are just picked via weight - "16% chance of getting a high chaos
round".
- Tiers have min pop ranges. "Tier 4 (high chaos) requires 25 pop to be
selected".
- Tier determines how much of every ruleset is picked. "Tier 4 (High
Chaos) will pick 3-4 roundstart[1], 1-2 light, 1-2 heavy, and 2-3
latejoins".
- The number of rulesets picked depends on how many people are in the
server - this is also configurable[2]. As an example, a tier that
demands "1-3" rulesets will not spawn 3 rulesets if population <= 40 and
will not spawn 2 rulesets if population <= 25.
- Tiers also determine time before light, heavy, and latejoin rulesets
are picked, as well as the cooldown range between spawns. More chaotic
tiers may send midrounds sooner or wait less time between sending them.

- On the ruleset side of things, "requirements", "scaling", and
"enemies" is gone.
- You can configure a ruleset's min pop and weight flat, or per tier.
- For example a ruleset like Obsession is weighted higher for tiers 1-2
and lower for tiers 3-4.
- Rather than scaling up, roundstart rulesets can just be selected
multiple times.
- Rulesets also have `min_antag_cap` and `max_antag_cap`.
`min_antag_cap` determines how many candidates are needed for it to run,
and `max_antag_cap` determines how many candidates are selected.

- Rulesets attempt to run every 2.5 minutes. [3]

- Light rulesets will ALWAYS be picked before heavy rulesets. [4]

- Light injection chance is no longer 100%, heavy injection chance
formula has been simplified.
- Chance simply scales based on number of dead players / total number
off players, with a flag 50% chance if no antags exist. [5]

[1] This does not guarantee you will actually GET 3-4 roundstart
rulesets. If a roundstart ruleset is picked, and it ends up being unable
to execute (such as "not enough candidates", that slot is effectively a
wash.) This might be revisited.

[2] Currently, this is a hard limit - below X pop, you WILL get a
quarter or a half of the rulesets. This might be revisited to just be
weighted - you are just MORE LIKELY to get a quarter or a half.

[3] Little worried about accidentally frontloading everything so we'll
see about this

[4] This may be revisited but in most contexts it seems sensible.

[5] This may also be revisited, I'm not 100% sure what the best / most
simple way to tackle midround chances is.

Other implementation details

- The process of making rulesets has been streamlined as well. Many
rulesets only amount to a definition and `assign_role`.

- Dynamic.json -> Dynamic.toml

- Dynamic event hijacked was ripped out entirely.
- Most midround antag random events are now dynamic rulesets. Fugitives,
Morphs, Slaughter Demons, etc.
      - The 1 weight slaughter demon event is gone. RIP in peace.
- There is now a hidden midround event that simply adds +1 latejoin, +1
light, or +1 heavy ruleset.

- `mind.special_role` is dead. Minds have a lazylist of special roles
now but it's essentially only used for traitor panel.

- Revs refactored almost entirely. Revs can now exist without a dynamic
ruleset.

- Cult refactored a tiny bit.

- Antag datums cleaned up.

- Pre round setup is less centralized on Dynamic.

- Admins have a whole panel for interfacing with dynamic. It's pretty
slapdash I'm sure someone could make a nicer looking one.

![image](https://github.com/user-attachments/assets/e99ca607-20b0-4d30-ab4a-f602babe7ac7)

![image](https://github.com/user-attachments/assets/470c3c20-c354-4ee6-b63b-a8f36dda4b5c)

- Maybe some other things.

See readme for more info.

Will you see a massive change in how rounds play out? My hunch says
rounds will spawn less rulesets on average, but it's ultimately to how
it's configured

🆑 Melbert
refactor: Dynamic rewritten entirely, report any strange rounds
config: Dynamic config reworked, it's now a TOML file
refactor: Refactored antag roles somewhat, report any oddities
refactor: Refactored Revolution entirely, report any oddities
del: Deleted most midround events that spawn antags - they use dynamic
rulesets now
add: Dynamic rulesets can now be false alarms
add: Adds a random event that gives dynamic the ability to run another
ruleset later
admin: Adds a panel for messing around with dynamic
admin: Adds a panel for chance for every dynamic ruleset to be selected
admin: You can spawn revs without using dynamic now
fix: Nuke team leaders get their fun title back
/🆑

(cherry picked from commit 4c277dc572)
2025-06-26 20:12:17 -04:00
John WillardandRoxy 78cffc2101 Adds a new halloween species: Spirits (#90711)
Adds 2 new species: Spirits and Ghosts

Spirits are available roundstart during Halloween, Wabbajack and
Xenobio's black slime extract
Ghosts are available through Magic mirrors

They fly around, and don't have legs and instead float around. They also
can't get legs implanted onto themselves.

They also do have organs, so they are affected by flashbangs, they do
get hungry, they do need oxygen to survive (they don't take damage in
space but they do suffocate & get slowdown), and can process chems.
Gibbing a ghost gives ectoplasm, an ingredient for ghost burgers.

Chaplains also got a buff here, null rod-type weapons' bane is now
against Spirit mobs, rather than hardcoded revenants. This means it now
includes Spirits/Ghosts, but also Soulscythes & Cult shades.

Also re-adds https://github.com/tgstation/tgstation/pull/81630 which was
reverted in https://github.com/tgstation/tgstation/pull/86506 which I
assume was accidental.

Ghosts have an innate ability to become incorporeal, which allows them
to phase through walls and stuff. Using this will immediately make them
drop any non-ghost limb/organ (not implants cause I thought it would be
funny). This ability is not available if they have holy water in their
system, and like revenants they also can't walk over blessed tiles with
it. They are also invisible to cameras while using this (not the obscura
though).

Sprites taken from observers directly, if anyone wants to make custom
sprites for them feel free. If anyone wants to make this obtainable
somehow in-game as well I wouldn't be opposed, halloween is just where I
thought it would fit most.

This also adds a lot of fixes that I encountered trying to add this,
from systems that have been neglected throughout the years.

https://github.com/user-attachments/assets/e368d710-80a0-4c63-b271-1abe3dd41a5e

We haven't gotten a new halloween species in a long time and thought it
would be fun if you can play as an actual ghost, the soul that remains
after a person passes, so Halloween feels more haunted. It's overall
made in just good fun, with a bonus that Ghosts are a cool species to
play with as well for Wizards & maybe Chaplains in the future (Dead sect
when?)

🆑
add: Added a new halloween species: Spirits, a species without legs and
instead floats.
add: Added a new magic mirror species: Ghosts, like spirits but with the
ability to become incorporeal, traversing through solid wall.
fix: Mobs unable to use storage items now can't use storage items.
fix: Mobs unable to use items can now not open airlocks & closets
fix: Mobs unable to pick items up can no longer pick items up and
immediately drop, moving one tile at a time.
fix: Mobs with intentional missing limbs (Alien larva) no longer show
their limbs as missing on examine (again)
fix: Golems' pref page had a missing icon, it now has one.
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
(cherry picked from commit 096c032402)
2025-06-26 19:54:02 -04:00
MrMelbertandGitHub 4c277dc572 Dynamic Rework (#91290)
## About The Pull Request

Implements https://hackmd.io/@tgstation/SkeUS7lSp , rewriting Dynamic
from the ground-up

- Dynamic configuration is now vastly streamlined, making it far far far
easier to understand and edit

- Threat is gone entirely; round chaos is now determined by dynamic
tiers
   - There's 5 dynamic tiers, 0 to 4.
      - 0 is a pure greenshift.
- Tiers are just picked via weight - "16% chance of getting a high chaos
round".
- Tiers have min pop ranges. "Tier 4 (high chaos) requires 25 pop to be
selected".
- Tier determines how much of every ruleset is picked. "Tier 4 (High
Chaos) will pick 3-4 roundstart[1], 1-2 light, 1-2 heavy, and 2-3
latejoins".
- The number of rulesets picked depends on how many people are in the
server - this is also configurable[2]. As an example, a tier that
demands "1-3" rulesets will not spawn 3 rulesets if population <= 40 and
will not spawn 2 rulesets if population <= 25.
- Tiers also determine time before light, heavy, and latejoin rulesets
are picked, as well as the cooldown range between spawns. More chaotic
tiers may send midrounds sooner or wait less time between sending them.

- On the ruleset side of things, "requirements", "scaling", and
"enemies" is gone.
- You can configure a ruleset's min pop and weight flat, or per tier.
- For example a ruleset like Obsession is weighted higher for tiers 1-2
and lower for tiers 3-4.
- Rather than scaling up, roundstart rulesets can just be selected
multiple times.
- Rulesets also have `min_antag_cap` and `max_antag_cap`.
`min_antag_cap` determines how many candidates are needed for it to run,
and `max_antag_cap` determines how many candidates are selected.

- Rulesets attempt to run every 2.5 minutes. [3]

- Light rulesets will ALWAYS be picked before heavy rulesets. [4]

- Light injection chance is no longer 100%, heavy injection chance
formula has been simplified.
- Chance simply scales based on number of dead players / total number
off players, with a flag 50% chance if no antags exist. [5]

[1] This does not guarantee you will actually GET 3-4 roundstart
rulesets. If a roundstart ruleset is picked, and it ends up being unable
to execute (such as "not enough candidates", that slot is effectively a
wash.) This might be revisited.

[2] Currently, this is a hard limit - below X pop, you WILL get a
quarter or a half of the rulesets. This might be revisited to just be
weighted - you are just MORE LIKELY to get a quarter or a half.

[3] Little worried about accidentally frontloading everything so we'll
see about this

[4] This may be revisited but in most contexts it seems sensible. 

[5] This may also be revisited, I'm not 100% sure what the best / most
simple way to tackle midround chances is.

Other implementation details

- The process of making rulesets has been streamlined as well. Many
rulesets only amount to a definition and `assign_role`.

- Dynamic.json -> Dynamic.toml

- Dynamic event hijacked was ripped out entirely.
- Most midround antag random events are now dynamic rulesets. Fugitives,
Morphs, Slaughter Demons, etc.
      - The 1 weight slaughter demon event is gone. RIP in peace. 
- There is now a hidden midround event that simply adds +1 latejoin, +1
light, or +1 heavy ruleset.

- `mind.special_role` is dead. Minds have a lazylist of special roles
now but it's essentially only used for traitor panel.

- Revs refactored almost entirely. Revs can now exist without a dynamic
ruleset.

- Cult refactored a tiny bit. 

- Antag datums cleaned up.

- Pre round setup is less centralized on Dynamic.

- Admins have a whole panel for interfacing with dynamic. It's pretty
slapdash I'm sure someone could make a nicer looking one.


![image](https://github.com/user-attachments/assets/e99ca607-20b0-4d30-ab4a-f602babe7ac7)


![image](https://github.com/user-attachments/assets/470c3c20-c354-4ee6-b63b-a8f36dda4b5c)

- Maybe some other things.

## Why It's Good For The Game

See readme for more info.

Will you see a massive change in how rounds play out? My hunch says
rounds will spawn less rulesets on average, but it's ultimately to how
it's configured

## Changelog

🆑 Melbert
refactor: Dynamic rewritten entirely, report any strange rounds
config: Dynamic config reworked, it's now a TOML file
refactor: Refactored antag roles somewhat, report any oddities
refactor: Refactored Revolution entirely, report any oddities
del: Deleted most midround events that spawn antags - they use dynamic
rulesets now
add: Dynamic rulesets can now be false alarms
add: Adds a random event that gives dynamic the ability to run another
ruleset later
admin: Adds a panel for messing around with dynamic
admin: Adds a panel for chance for every dynamic ruleset to be selected
admin: You can spawn revs without using dynamic now
fix: Nuke team leaders get their fun title back
/🆑
2025-06-25 17:36:10 -07:00
096c032402 Adds a new halloween species: Spirits (#90711)
## About The Pull Request

Adds 2 new species: Spirits and Ghosts

Spirits are available roundstart during Halloween, Wabbajack and
Xenobio's black slime extract
Ghosts are available through Magic mirrors

They fly around, and don't have legs and instead float around. They also
can't get legs implanted onto themselves.

They also do have organs, so they are affected by flashbangs, they do
get hungry, they do need oxygen to survive (they don't take damage in
space but they do suffocate & get slowdown), and can process chems.
Gibbing a ghost gives ectoplasm, an ingredient for ghost burgers.

Chaplains also got a buff here, null rod-type weapons' bane is now
against Spirit mobs, rather than hardcoded revenants. This means it now
includes Spirits/Ghosts, but also Soulscythes & Cult shades.

Also re-adds https://github.com/tgstation/tgstation/pull/81630 which was
reverted in https://github.com/tgstation/tgstation/pull/86506 which I
assume was accidental.

### The difference between Spirits and Ghosts

Ghosts have an innate ability to become incorporeal, which allows them
to phase through walls and stuff. Using this will immediately make them
drop any non-ghost limb/organ (not implants cause I thought it would be
funny). This ability is not available if they have holy water in their
system, and like revenants they also can't walk over blessed tiles with
it. They are also invisible to cameras while using this (not the obscura
though).

Sprites taken from observers directly, if anyone wants to make custom
sprites for them feel free. If anyone wants to make this obtainable
somehow in-game as well I wouldn't be opposed, halloween is just where I
thought it would fit most.

This also adds a lot of fixes that I encountered trying to add this,
from systems that have been neglected throughout the years.


https://github.com/user-attachments/assets/e368d710-80a0-4c63-b271-1abe3dd41a5e

## Why It's Good For The Game

We haven't gotten a new halloween species in a long time and thought it
would be fun if you can play as an actual ghost, the soul that remains
after a person passes, so Halloween feels more haunted. It's overall
made in just good fun, with a bonus that Ghosts are a cool species to
play with as well for Wizards & maybe Chaplains in the future (Dead sect
when?)

## Changelog

🆑
add: Added a new halloween species: Spirits, a species without legs and
instead floats.
add: Added a new magic mirror species: Ghosts, like spirits but with the
ability to become incorporeal, traversing through solid wall.
fix: Mobs unable to use storage items now can't use storage items.
fix: Mobs unable to use items can now not open airlocks & closets
fix: Mobs unable to pick items up can no longer pick items up and
immediately drop, moving one tile at a time.
fix: Mobs with intentional missing limbs (Alien larva) no longer show
their limbs as missing on examine (again)
fix: Golems' pref page had a missing icon, it now has one.
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2025-06-22 10:02:06 +02:00
SapphoQueerandGitHub 98c097e157 Fixes Vox Legs Becoming Regular Digi Legs Whenever You Change Anything At All (#4103)
## About The Pull Request
Title
## Why It's Good For The Game
Bug is bad
## Proof Of Testing


https://github.com/user-attachments/assets/be82bcb9-bd64-41ad-af32-bd1288f5f1c0
<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog
🆑
fix: Vox legs no longer change to regular digitigrade legs when you
change anything at all
/🆑
2025-06-22 03:11:48 -04:00
SapphoQueerandGitHub 7fd63f89fd Luminescent eyes respect eye colors in preferences (#4060)
## About The Pull Request
You dont have to set the hex code manually anymore based on your eye
colors
## Why It's Good For The Game
Fixes #3466
## Proof Of Testing



https://github.com/user-attachments/assets/a058fe6f-b0c4-4cbb-af09-968fa26f25b8



</details>

## Changelog
🆑
Fix: Luminescent eyes respect eye colors in preferences once more
/🆑
2025-06-16 20:37:22 -04:00
Roxy 7ee563027c Update screenshot tests 2025-06-06 01:01:15 -04:00
SmArtKarandGitHub b4061f1800 [MDB IGNORE] Blood Refactor Chapter 2: Collector's Edition (#91054)
## About The Pull Request

Refactors most of blood handling code untouched by #90593 and completely
rewrites all blood decals, components and reagents.

- Blood types now have behavioral flags which allow them to control
where they leave decals/DNA/viruses. Oil no longer transfers DNA and
viruses with it, while podpeople water-blood doesn't leave visible
decals on turfs and items, but still can be picked up by DNA scanners.
- Multiple blood types have received unique handling - liquid
electricity blood now glows in the dark, oil trails are flammable and
lube ones are slippery. Oil blood can be restored with fuel, lube with
silicon and slime with stable plasma (as normal plasma already passively
regenerates their blood), instead of everything using iron. Saline
solution only supplements on iron-based blood and won't do anything to
help with bloodloss for species who rely on different blood types.
(Roundstart this applies only to Ethereals)
- All blood logic has been moved away from the blood reagent itself into
a blood element that is assigned to the blood reagent by default, and to
any reagent that's drawn from a mob as their "blood" (in
``transfer_blood_to``). This means that blood you draw from lizards will
be green and have lizard's blood description instead of mentioning red
blood cells, Ethereal "blood" will actually contain their DNA and genes,
etc.
- Refactored all blood decals. Blood states are no more, everything is
now handled via blood DNA. Credits to MrMelbert and Maplestation, as a
significant amount of code has been taken from
https://github.com/MrMelbert/MapleStationCode/pull/436 and many of his
followup PRs. Oil and xenomorph splatters are now subtypes of blood,
blood drying is now animated, blood trails now curve and can be
diagonal.
- Rewrote bloodysoles and bloody_spreader components, credits to Melbert
again for the former, while latter now makes more sense with its
interactions. Bloody soles no longer share blood DNA with your hands.
- Ported Melbert's bloody footprint sprites and bot-blood-spreading
functionality.
- Removed all species-side reagent interactions, instead they're handled
by said species' livers. (This previously included exotic blood
handling, thus the removal)
- Slightly optimized human rendering by removing inbetween overlay
holders for clothing when they're not needed.
- Blood-transmitted diseases will now get added to many more decals than
before.
- Cleaned up and partially refactored replica pods, fixed an issue where
monkeys/manipulators were unable to harvest mindless pods.
- Exotic bloodtype on species now automatically assigns their blood
reagent, without the need to assign them separately.
- Clown mobs now bleed (with colorful reagent instead of blood during
april fools), and so do vatbeasts (lizard blood)
- Implemented generic procs for handling bleeding checks, all sorts of
scanners now also correctly call your blood for what it is.
- Podpeople's guts are now lime-green like their organs, instead of
being weirdly greyish like their water-blood. (Their bleeding overlays
are still grey, as they're bleeding water)
- Slimepeople now can bleed. Their jelly is pale purple in color, but
their wound overlays copy their body color.
- Injecting/spraying/splashing/etc mob with a reagent preserves its
data, so you could theoretically recycle fine wines from someone's
bloodstream
- Fixed burdened chaplain's sect never actually giving a blessing when
applying effects, and giving a blessing when nothing can be healed.
Inverted check strikes again.

- Closes #91039 

#### Examples

A lot of blood here has dried, visually the blood colors are almost
exactly the same as before either of the blood refactors.


![dreamseeker_BSP7FE9pRB](https://github.com/user-attachments/assets/45711fa0-ae65-4ec2-9e89-753fa7dd876f)

![dreamseeker_zyv9ssh5VN](https://github.com/user-attachments/assets/7b112854-b7e3-4bfe-b78b-199a55b5b051)
2025-05-31 19:38:07 -05:00
655b66bdd0 Adds automatic GAGS icon generation for mapping and the loadout menu (#90940)
Revival of https://github.com/tgstation/tgstation/pull/86482, which is
even more doable now that we have rustg iconforge generation.

What this PR does:

- Sets up every single GAGS icon in the game to have their own preview
icon autogenerated during compile. This is configurable to not run
during live. The icons are created in `icons/map_icons/..`
- This also has the side effect of providing accurate GAGS icons for
things like the loadout menu. No more having to create your own
previews.

![FOuGL6ofxC](https://github.com/user-attachments/assets/e5414971-7f13-4883-9f7f-a8a212b46fe8)

<details><summary>Mappers rejoice!</summary>

![StrongDMM_1oeMSoRHXT](https://github.com/user-attachments/assets/83dcfe4c-31be-4953-98f3-dff90268bbc4)

![StrongDMM_uyqu3CggPn](https://github.com/user-attachments/assets/7896f99e-2656-40e1-a9da-3a513882365a)

</details>

<details><summary>Uses iconforge so it does not take up much time during
init</summary>

![dreamdaemon_u4Md3Dqwge](https://github.com/user-attachments/assets/17baaff8-5d5e-4a4d-ba8f-9dd548024155)

</details>

---

this still applies:

Note for Spriters:

After you've assigned the correct values to vars, you must run the game
through init on your local machine and commit the changes to the map
icon dmi files. Unit tests should catch all cases of forgetting to
assign the correct vars, or not running through init.

Note for Server Operators:

In order to not generate these icons on live I've added a new config
entry which should be disabled on live called GENERATE_ASSETS_IN_INIT in
the config.txt

No more error icons in SDMM and loadout.

🆑
refactor: preview icons for greyscale items are now automatically
generated, meaning you can see GAGS as they actually appear ingame while
mapping or viewing the loadout menu.
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2025-05-29 16:14:43 -04:00
cb51a652a9 Adds automatic GAGS icon generation for mapping and the loadout menu (#90940)
## About The Pull Request

Revival of https://github.com/tgstation/tgstation/pull/86482, which is
even more doable now that we have rustg iconforge generation.

What this PR does:

- Sets up every single GAGS icon in the game to have their own preview
icon autogenerated during compile. This is configurable to not run
during live. The icons are created in `icons/map_icons/..`
- This also has the side effect of providing accurate GAGS icons for
things like the loadout menu. No more having to create your own
previews.


![FOuGL6ofxC](https://github.com/user-attachments/assets/e5414971-7f13-4883-9f7f-a8a212b46fe8)

<details><summary>Mappers rejoice!</summary>


![StrongDMM_1oeMSoRHXT](https://github.com/user-attachments/assets/83dcfe4c-31be-4953-98f3-dff90268bbc4)


![StrongDMM_uyqu3CggPn](https://github.com/user-attachments/assets/7896f99e-2656-40e1-a9da-3a513882365a)

</details>

<details><summary>Uses iconforge so it does not take up much time during
init</summary>


![dreamdaemon_u4Md3Dqwge](https://github.com/user-attachments/assets/17baaff8-5d5e-4a4d-ba8f-9dd548024155)

</details>

---

### Copied from https://github.com/tgstation/tgstation/pull/86482 as
this still applies:

Note for Spriters:

After you've assigned the correct values to vars, you must run the game
through init on your local machine and commit the changes to the map
icon dmi files. Unit tests should catch all cases of forgetting to
assign the correct vars, or not running through init.

Note for Server Operators:

In order to not generate these icons on live I've added a new config
entry which should be disabled on live called GENERATE_ASSETS_IN_INIT in
the config.txt


## Why It's Good For The Game

No more error icons in SDMM and loadout.

## Changelog

🆑
refactor: preview icons for greyscale items are now automatically
generated, meaning you can see GAGS as they actually appear ingame while
mapping or viewing the loadout menu.
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2025-05-24 15:21:02 -07:00