Commit Graph

79 Commits

Author SHA1 Message Date
Alexis 21b4095dfd [MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026

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

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: loganuk <fakeemail123@aol.com>
Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com>
Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com>
Co-authored-by: Isratosh <Isratosh@hotmail.com>
Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com>
Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com>
Co-authored-by: Alexander V. <volas@ya.ru>
Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com>
Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com>
Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com>
Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com>
Co-authored-by: Josh <josh.adam.powell@gmail.com>
Co-authored-by: Josh Powell <josh.powell@softwire.com>
Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com>
Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com>
Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2026-05-16 00:56:00 +02:00
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
RikuTheKiller 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
MrMelbert 45b23412f8 [MDB Ignore] Medical larp: Adds the SDSM-35 (an in game brain trauma reference) (#94761)
## About The Pull Request

Medbay, the CMO, the Psychologist, (possibly) the Library, and some
maint rooms across all maps now have multiple copies of the SDSM-35

This exists as an in game ability to reference what brain traumas do. No
special bells or whistles, not even a search bar - it's a book after
all.

<img width="819" height="589" alt="image"
src="https://github.com/user-attachments/assets/ace867b9-a0f0-4302-99f9-46ed4d6fe377"
/>

<img width="802" height="546" alt="image"
src="https://github.com/user-attachments/assets/c96941d3-8da8-48f7-859b-93953fe01473"
/>

## Why It's Good For The Game

De-wikification: Rather than needing to pull up the wiki to figure out
what the brain trauma is doing, you can refer to the in game book and
cross reference the patient's behavior.

Medial larp: It's a reference to the DSM-5. If that wasn't obvious. 

## Changelog

🆑 Melbert
add: You can now find the SDMS-35 in Medbay, the CMO's office, the
Psychologist's office, and possibly the Library. Quite simply, it's a
reference book for all the brain trauma's you may experience.
/🆑
2026-01-08 19:47:04 -07:00
SyncIt21 7c5ef1cfb8 Removes unused parameter times_fired from mob procs (#94590)
## About The Pull Request
What it says on the tin. `times_fired` is the most unused parameter in
all mob procs. I say most because there were just 2 cases where it was
used
- handling breathing
- handling heartbeat

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

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

## Changelog
🆑
code: removes an unused parameter `times_fired` from mob life procs.
Making them function slightly faster
/🆑
2025-12-26 09:51:33 -05:00
MGOOOOOO 82bef2b7cd The Inversenning : Narcotics + Other Reagents (Part 1) (#91430)
## About The Pull Request

Please read the contents of my HackMD to see what my PR does, as well as
further elaboration on the reagents and why it's good for the game
overall.

https://hackmd.io/@MGO/B1YX80nMT

## Contents
Introducing new inverse reagents for existing narcotics and other
reagents! This push includes...

**Naloxone** : New medicine! Requires equal parts Morphine, Hydrogen
Peroxide, Bromine and Ethanol to be made. Opioid antagonist that purges
drowsiness and narcotics from the patient, restores breath loss and
accelerates addiction recovery. Consumption Rate at 0.2u.


![spess1](https://github.com/user-attachments/assets/65dd8e1e-4e52-4263-8d1f-9fb40c416435)

**Permonid** : Inverse of Krokodil. Highly potent sedative that provides
the best painkilling effects, but is also extremely addictive. Speeds up
surgery times by 30%. Consumption Rate at 0.1u.


![spess2](https://github.com/user-attachments/assets/9a07f6db-8ae6-4d0c-bed4-5ca3f96a8d01)

**Monkey Dust** : Inverse of Bath Salts. Oop aak chee aak eek chee. Eek
aak oop chee oop aak aak!! (Consumption Rate at 0.2u.)


https://github.com/user-attachments/assets/cbd5ea48-9c0f-49ca-ba59-59cd65599641

(You can also combine 50u Monkey Powder with 10u Monkey Dust to make an
angry monkey!)

![spess3](https://github.com/user-attachments/assets/f55c4af5-a058-4ec8-9119-7da5352e9c3a)

**Epoetin Alfa** : Inverse of Aranesp. Synthetic medication that induces
blood regeneration, heals liver damage and synthesizes Sanguirite when
the patient is bleeding. Causes several side effects if taken for too
long. Consumption Rate at 0.25u.


![spess5](https://github.com/user-attachments/assets/f7d73a6a-4218-4ca0-a718-76b333f9d3b5)

(Overdose in action.)


https://github.com/user-attachments/assets/27a51a11-0e42-4000-9c96-ba10cbd9e18b

**Sadness** : Inverse of Happiness. Causes severe depressive behavior in
users, and actively purges other antidepressants. Being hugged by a
friendly person that gives good hugs will purge all Sadness unless the
user has the Bad Touch trait. Consumption Rate at 0.1u.


https://github.com/user-attachments/assets/874b0549-1d96-4f4f-ad95-65f780a68436


![spess4](https://github.com/user-attachments/assets/b971f8ef-e318-4129-80bf-d45cfab2cf57)

**Maldium** : Inverse of Baldium. Potent psychotropic that causes
intense anger within users. On end consumption, user will experience a
burst of burn damage that scales with the amount of time the user was
enraged. Consumption Rate at 0.4u.


https://github.com/user-attachments/assets/31a4700e-32b5-4855-a266-45bfde62f718

**Dulling Reagent** : Inverse of Colorful Reagent. Extremely drab
coloring pigment that is favored by corporations who wish to maximize
suffering. Forces Colorblindness trauma in consumers. Consumption Rate
at 0.4u, lowered to 0.04u if overdosing.


https://github.com/user-attachments/assets/3db461d1-26aa-4c77-ad3d-44794230b391

**Newtonium** : Inverse of Gravitum. Experimental reagent that induces
heavy gravokinetic effects on users. Consumption Rate at 1u.


https://github.com/user-attachments/assets/b20e5200-9beb-40a2-8d37-c0d44f0fb4ef

## Why It's Good For The Game

This is an effort to add more variety to the existing inverse reagent
system within chemistry. Not only should this variety serve to provide
additional options for a Chemist to experiment with, they should also
broaden the possibilities for already existing strategies.

## Changelog

:cl:MGO
add: Introduces new inverse reagents for Krokodil, Bath Salts, Aranesp,
Happiness, Baldium, Colorful Reagent and Gravitum!
add: An alternate reaction output has been added for Monkey Powder.
Instead of 1u Water, add 10u Monkey Dust to make an angry monkey!
add: Adds a medicine: Naloxone! Requires equal parts Morphine, Hydrogen
Peroxide, Bromine and Ethanol to be made. Purges opioid-class reagents,
can also help with mitigating drowsiness and breath loss. Also purges
good moodlets associated with opiates and replaces them with negative
moodlets, so don't expect your patient to be happy about losing their
high!
/🆑
2025-06-21 22:21:49 -04:00
MGOOOOOO 109bf9d6c6 The Inversenning : Narcotics + Other Reagents (Part 1) (#91430)
## About The Pull Request

Please read the contents of my HackMD to see what my PR does, as well as
further elaboration on the reagents and why it's good for the game
overall.

https://hackmd.io/@MGO/B1YX80nMT

## Contents
Introducing new inverse reagents for existing narcotics and other
reagents! This push includes...

**Naloxone** : New medicine! Requires equal parts Morphine, Hydrogen
Peroxide, Bromine and Ethanol to be made. Opioid antagonist that purges
drowsiness and narcotics from the patient, restores breath loss and
accelerates addiction recovery. Consumption Rate at 0.2u.


![spess1](https://github.com/user-attachments/assets/65dd8e1e-4e52-4263-8d1f-9fb40c416435)

**Permonid** : Inverse of Krokodil. Highly potent sedative that provides
the best painkilling effects, but is also extremely addictive. Speeds up
surgery times by 30%. Consumption Rate at 0.1u.


![spess2](https://github.com/user-attachments/assets/9a07f6db-8ae6-4d0c-bed4-5ca3f96a8d01)

**Monkey Dust** : Inverse of Bath Salts. Oop aak chee aak eek chee. Eek
aak oop chee oop aak aak!! (Consumption Rate at 0.2u.)


https://github.com/user-attachments/assets/cbd5ea48-9c0f-49ca-ba59-59cd65599641

(You can also combine 50u Monkey Powder with 10u Monkey Dust to make an
angry monkey!)

![spess3](https://github.com/user-attachments/assets/f55c4af5-a058-4ec8-9119-7da5352e9c3a)

**Epoetin Alfa** : Inverse of Aranesp. Synthetic medication that induces
blood regeneration, heals liver damage and synthesizes Sanguirite when
the patient is bleeding. Causes several side effects if taken for too
long. Consumption Rate at 0.25u.


![spess5](https://github.com/user-attachments/assets/f7d73a6a-4218-4ca0-a718-76b333f9d3b5)

(Overdose in action.)


https://github.com/user-attachments/assets/27a51a11-0e42-4000-9c96-ba10cbd9e18b

**Sadness** : Inverse of Happiness. Causes severe depressive behavior in
users, and actively purges other antidepressants. Being hugged by a
friendly person that gives good hugs will purge all Sadness unless the
user has the Bad Touch trait. Consumption Rate at 0.1u.


https://github.com/user-attachments/assets/874b0549-1d96-4f4f-ad95-65f780a68436


![spess4](https://github.com/user-attachments/assets/b971f8ef-e318-4129-80bf-d45cfab2cf57)

**Maldium** : Inverse of Baldium. Potent psychotropic that causes
intense anger within users. On end consumption, user will experience a
burst of burn damage that scales with the amount of time the user was
enraged. Consumption Rate at 0.4u.


https://github.com/user-attachments/assets/31a4700e-32b5-4855-a266-45bfde62f718

**Dulling Reagent** : Inverse of Colorful Reagent. Extremely drab
coloring pigment that is favored by corporations who wish to maximize
suffering. Forces Colorblindness trauma in consumers. Consumption Rate
at 0.4u, lowered to 0.04u if overdosing.


https://github.com/user-attachments/assets/3db461d1-26aa-4c77-ad3d-44794230b391

**Newtonium** : Inverse of Gravitum. Experimental reagent that induces
heavy gravokinetic effects on users. Consumption Rate at 1u.


https://github.com/user-attachments/assets/b20e5200-9beb-40a2-8d37-c0d44f0fb4ef

## Why It's Good For The Game

This is an effort to add more variety to the existing inverse reagent
system within chemistry. Not only should this variety serve to provide
additional options for a Chemist to experiment with, they should also
broaden the possibilities for already existing strategies.

## Changelog

:cl:MGO
add: Introduces new inverse reagents for Krokodil, Bath Salts, Aranesp,
Happiness, Baldium, Colorful Reagent and Gravitum!
add: An alternate reaction output has been added for Monkey Powder.
Instead of 1u Water, add 10u Monkey Dust to make an angry monkey!
add: Adds a medicine: Naloxone! Requires equal parts Morphine, Hydrogen
Peroxide, Bromine and Ethanol to be made. Purges opioid-class reagents,
can also help with mitigating drowsiness and breath loss. Also purges
good moodlets associated with opiates and replaces them with negative
moodlets, so don't expect your patient to be happy about losing their
high!
/🆑
2025-06-16 23:36:32 +00:00
Majkl-J b6b8306fda Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-02a 2025-02-20 00:00:19 -08:00
Ghom 778ed9f1ab The death or internal/external organ pathing (ft. fixed fox ears and recoloring bodypart overlays with dye sprays) (#87434)
## About The Pull Request
This PR kills the abstract internal and external typepaths for organs,
now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds.

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

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

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

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

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

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

## Changelog

🆑
code: Removed internal/external pathing from organs in favor of a bit
flag. Hopefully this shouldn't break anything about organs.
fix: Fixed invisible fox ears.
fix: Fixed mushpeople caps not being colored red by default.
add: You can now dye most tails, podpeople hair, mushpeople caps etc.
with a hair dye spray.
/🆑
2024-10-30 08:03:02 +01:00
vinylspiders ae3a8acb8e * Turns mush cap into an extorgan
* Trimming the fat

* Trimming the fat

* Update mushpeople.dm

* Adds colorblindness as a mild brain trauma (#76527)

What the title says.
The brain trauma makes the whole screen monochrome until cured.

![image](https://github.com/tgstation/tgstation/assets/82850673/442d24a8-6625-454c-bc28-64b786b03f49)

I feel like the current pool for mild brain traumas is quite lame, this
helps spice it up a bit with something that is quite annoying and
distracting but not game breaking (as mild brain traumas should
generally be).

🆑
add: Added colorblindness as a mild brain trauma.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>

* Fix species `var/hair_color` not being used for, well, hair color (#82168)

`var/hair_color` for species was intended to be used as a "this species
uses this type of hair color thing"

But at some point that got completely lost and now it's only used for
sprite accessories

This fixes that. That means Slimepeople now have properly slimey hair.
And Ethereals are less snowflake once more.

🆑 Melbert
fix: Fixed Slimepeople's hair not matching their slimey colors.
/🆑

* Revert "Fix species `var/hair_color` not being used for, well, hair color (#82168)"

This reverts commit c4cb756.

* Revert "Adds colorblindness as a mild brain trauma (#76527)"

This reverts commit eb815f5.

* Update _species.dm

* unused var

* Caps list..

* Update mushpeople.dm

* Update mushpeople.dm

* Update mushpeople.dm

* Update mushpeople.dm

* Update mushpeople.dm

* Attempts to fix CI errors

* Update cap.dm

* Update _external_organ.dm

* Update monkey.dm

* Revert "Update monkey.dm"

This reverts commit 29f54c8.

* Revert "Update _external_organ.dm"

This reverts commit 8de5ea7.

* Update _external_organ.dm

* Revert "Update _external_organ.dm"

This reverts commit 644cc56.

* Fix CI maybe?

* Update cap.dm

* Update DNA.dm

* Some cleanup/updating to upstream

* Update global_lists.dm

* Mush

* Update mushpeople.dm

* Hopefully the last fix

* Doing this differently

* Update organ.dm

* Update organ.dm

* Update organ.dm

* Update organ.dm

* Update organ.dm

* OK

* Update organ.dm

* Update podpeople.dm

* maybe

* Hm

* Hm

* Will this break things?

* Revert "Will this break things?"

This reverts commit bd288c6.

* Test

* Update organ.dm

* Update organ.dm

* Revert "Update organ.dm"

This reverts commit ca77ff9.

* Update organ.dm

* .

* .

* .

* Update snail.dm

* Monkeys now use height offset (and monkey tail works) (#81598)

This PR adds the ability for monkeys to wear any jumpsuit in the game,
and adds support for them to wear things like coats, gloves, and shoes
(though this cannot be obtained in-game and is solely achieved through
admins, which I also improved a bit upon by adding a defined bitfield
for no equip flags).

This reverts a lot of changes from
tgstation/tgstation#73325 - We no longer check
height from limbs and such to bring sprites down, instead monkeys now
work more similarly to humans, so the entire PR was made irrelevant, and
I didn't really want to leave around dead code for the sake of having a
human with longer legs.

I've now also added support for Dwarfism, which makes monkeys look even
smaller. Very minor change but at least now the mutation doesn't feel
like it does literally nothing to monkeys (since they can already walk
over tables).

Here's a few examples of how it can appear in game (purely for
demonstration, as it is currently intentionally made impossible to
obtain in-game, though if someone wants to change that post-this PR now
that support is added, feel free):

Tails have been broken for a while now, the only reason you see them
in-game is because they are baked into the monkey sprites. This fixes
that, which means humans can now get monkey tails implanted into them
(hell yeah) and monkeys can have their tails removed (also hell yeah)

* Removes unneeded files

* Revert "Removes unneeded files"

This reverts commit 6469d37.

* .

* ok

* Update tails.dm

* Update monkey.dm

* Fix monkey screenshot test

* Update species.dm

* Update reinf_walls.dm

* Maintenance

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Mal <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: vinylspiders <13398309+vinylspiders@users.noreply.github.com>
2024-05-23 02:37:43 +02:00
SkyratBot 7de8048537 [MIRROR] Tuberculosis makes you cough more, Nicotine Withdrawal makes you cough less (#27449)
* Tuberculosis makes you cough more, Nicotine Withdrawal makes you cough less (#82827)

## About The Pull Request

- Tuberculosis makes you cough more, and is no longer restricted to
stage two
- Nicotine Addiction Withdrawal makes you cough less often
- Medicine Addiction Withdrawal makes you cough less often but now
carries across all stages

## Why It's Good For The Game

Nicotine Addiction currently makes you cough 10x more often than
Tuberculosis, the lung disease. Kinda nonsensical right?

This makes smoking a single cigar (which instantly makes you addicted
because lol) pretty insufferable to be around, and while this makes
sense OOC it's a roleplaying game and being actively avoided in a
roleplaying game is not fun

So tweaking the values should make it a bit more sensible

Initial values looked like `TB: 1% chance per second` vs `Nicotine: 10%
chance per second` 🥴

## Changelog

🆑 Melbert
qol: Tuberculosis makes you cough more
qol: Nicotine Addiciton makes you cough less
qol: Medicine Addiction maybe makes you cough more, maybe makes you
cough less
/🆑

* Tuberculosis makes you cough more, Nicotine Withdrawal makes you cough less

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-04-26 20:41:09 -04:00
MrMelbert aab7771cd7 Tuberculosis makes you cough more, Nicotine Withdrawal makes you cough less (#82827)
## About The Pull Request

- Tuberculosis makes you cough more, and is no longer restricted to
stage two
- Nicotine Addiction Withdrawal makes you cough less often
- Medicine Addiction Withdrawal makes you cough less often but now
carries across all stages

## Why It's Good For The Game

Nicotine Addiction currently makes you cough 10x more often than
Tuberculosis, the lung disease. Kinda nonsensical right?

This makes smoking a single cigar (which instantly makes you addicted
because lol) pretty insufferable to be around, and while this makes
sense OOC it's a roleplaying game and being actively avoided in a
roleplaying game is not fun

So tweaking the values should make it a bit more sensible

Initial values looked like `TB: 1% chance per second` vs `Nicotine: 10%
chance per second` 🥴

## Changelog

🆑 Melbert
qol: Tuberculosis makes you cough more
qol: Nicotine Addiciton makes you cough less
qol: Medicine Addiction maybe makes you cough more, maybe makes you
cough less
/🆑
2024-04-23 16:06:42 -06:00
SkyratBot c6e0c90cbb [MIRROR] The addiction withdrawal blur effect is now properly centered (#26227)
* The addiction withdrawal blur effect is now properly centered (#81069)

## About The Pull Request

What it says on the tin. It also affects the psychic projection ability,
since it seemed to suffer from the same problem.
It's an odd interaction, and seems to be the fault of the wave filter.
If the blur filter is applied after it, it seems to try and center
itself at a certain point of the wave which may not be aligned with the
center of the screen.
(Adding an initial offset to the wave filter makes the blur be
misalligned both horizontally *and* vertically, so it seems to try and
place itself at the initial position of the wave?)
<details>
<summary> Pictured here with 0.5 offset</summary>

![image](https://github.com/tgstation/tgstation/assets/80640114/60a850bd-8893-4054-8f1f-f389187e37a2)

</details>

One way or another, applying the blur filter before the wave filter
keeps it nice and centered.

![image](https://github.com/tgstation/tgstation/assets/80640114/2760b9f2-11a3-484d-9a61-36f8defd43b9)
## Why It's Good For The Game

Closes #81004
## Changelog
🆑
fix: the blur effects for hallucinogenic withdrawal and psychic
projection are now properly centered on the screen
/🆑

* The addiction withdrawal blur effect is now properly centered

---------

Co-authored-by: A miscellaneous Fern <80640114+FernandoJ8@users.noreply.github.com>
2024-01-25 09:33:16 -05:00
A miscellaneous Fern 8230069702 The addiction withdrawal blur effect is now properly centered (#81069)
## About The Pull Request

What it says on the tin. It also affects the psychic projection ability,
since it seemed to suffer from the same problem.
It's an odd interaction, and seems to be the fault of the wave filter.
If the blur filter is applied after it, it seems to try and center
itself at a certain point of the wave which may not be aligned with the
center of the screen.
(Adding an initial offset to the wave filter makes the blur be
misalligned both horizontally *and* vertically, so it seems to try and
place itself at the initial position of the wave?)
<details>
<summary> Pictured here with 0.5 offset</summary>


![image](https://github.com/tgstation/tgstation/assets/80640114/60a850bd-8893-4054-8f1f-f389187e37a2)

</details>

One way or another, applying the blur filter before the wave filter
keeps it nice and centered.

![image](https://github.com/tgstation/tgstation/assets/80640114/2760b9f2-11a3-484d-9a61-36f8defd43b9)
## Why It's Good For The Game

Closes #81004
## Changelog
🆑
fix: the blur effects for hallucinogenic withdrawal and psychic
projection are now properly centered on the screen
/🆑
2024-01-24 15:01:47 +01:00
Gandalf 3f55068ac7 CI Fix (#26177)
Removes timeout_mod arg from add_mood_effect (#80964)

## About The Pull Request

Partial Revert of https://github.com/tgstation/tgstation/pull/80800

Assuming every num passed in the parameters of `add_mood_effect` is a
`timeout_mod` is incorrect, because there can be mood events that take a
numeric arg which is not meant to be multiplied against the timeout.

This leads to the same issue as multiplying it with strings essentially
(in one case, shown below, this results in a negative duration of a
timer).


![image](https://github.com/tgstation/tgstation/assets/13398309/f8af858f-04ef-4144-9a0b-2fae60b71272)


![Code_ZN176cpMqA](https://github.com/tgstation/tgstation/assets/13398309/a6ec7689-0171-4909-91cb-a17b56454eb6)

Plus having a keyword arg that may or may not actually be what the
keyword arg claims to be is really confusing and bad.

Instead here's what I propose: passing in an instantiated mood datum
itself, which has been modified, and copying the timeout from it before
discarding it.

It is not as clean as I'd prefer either, but at least it's logically
sound and the intent is clear, and it's the best I can think of short of
a major refactor of the entire system for this one small thing which is
only being used by food quality.


![image](https://github.com/tgstation/tgstation/assets/13398309/8560c066-bb0b-4066-af94-372d5ea62679)

## Why It's Good For The Game

Clearer, less smelly code.

## Changelog

🆑
code: removed the timeout_mod arg from add_mood_event, which was only
used for one thing and causes more issues than it's worth
/🆑

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2024-01-19 14:02:59 +00:00
SkyratBot 536e1e48cd [MIRROR] fixes a bunch of moodlets potentially lasting forever (less band-aidy) [MDB IGNORE] (#26124)
* fixes a bunch of moodlets potentially lasting forever (less band-aidy) (#80800)

## About The Pull Request
In a previous PR (https://github.com/tgstation/tgstation/pull/79661), I
noted that a lot of moodlets tended to have their timeouts break because
it was passing their names and whatnot as a parameter, that gets fed
into the timeout modifier parameter, causing the timeout multiplier to
break, because BYOND type-agnosticism means that it can multiply a
number (timeout_mod) by text (a name or some other object), resulting in
0 - which makes a moodlet permanent. This is probably not intended.

This fixes that in two ways:
- Adding a `1` to potentially applicable moodlets (searched for with a
regex of `.add_mood_event(.*, .*,)`) just to make sure the timeout
doesn't get multiplied out weirdly.
- Making the add_mood_event thing CRASH() if the timeout_mod is bad.

If someone else wants to come up with a solution better than this,
please do.

## Why It's Good For The Game
Maybe having your arm permanently fall asleep after getting it
reattached sucks, moodlet-wise. (Being stuck with permanent
positive/negative moodlets is probably not intended.)

## Changelog

🆑
fix: Moodlets with parameters/effects e.g. limb reattachment moodlets
should probably disappear more appropriately.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>

* fixes a bunch of moodlets potentially lasting forever (less band-aidy)

* wew

---------

Co-authored-by: Hatterhat <31829017+Hatterhat@users.noreply.github.com>
Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2024-01-18 16:28:41 +00:00
Bloop fc0a1f4068 Removes timeout_mod arg from add_mood_effect (#80964)
## About The Pull Request

Partial Revert of https://github.com/tgstation/tgstation/pull/80800

Assuming every num passed in the parameters of `add_mood_effect` is a
`timeout_mod` is incorrect, because there can be mood events that take a
numeric arg which is not meant to be multiplied against the timeout.

This leads to the same issue as multiplying it with strings essentially
(in one case, shown below, this results in a negative duration of a
timer).


![image](https://github.com/tgstation/tgstation/assets/13398309/f8af858f-04ef-4144-9a0b-2fae60b71272)


![Code_ZN176cpMqA](https://github.com/tgstation/tgstation/assets/13398309/a6ec7689-0171-4909-91cb-a17b56454eb6)

Plus having a keyword arg that may or may not actually be what the
keyword arg claims to be is really confusing and bad.

Instead here's what I propose: passing in an instantiated mood datum
itself, which has been modified, and copying the timeout from it before
discarding it.

It is not as clean as I'd prefer either, but at least it's logically
sound and the intent is clear, and it's the best I can think of short of
a major refactor of the entire system for this one small thing which is
only being used by food quality.


![image](https://github.com/tgstation/tgstation/assets/13398309/8560c066-bb0b-4066-af94-372d5ea62679)

## Why It's Good For The Game

Clearer, less smelly code.

## Changelog

🆑
code: removed the timeout_mod arg from add_mood_event, which was only
used for one thing and causes more issues than it's worth
/🆑
2024-01-16 20:57:42 +01:00
Hatterhat 27386bffe8 fixes a bunch of moodlets potentially lasting forever (less band-aidy) (#80800)
## About The Pull Request
In a previous PR (https://github.com/tgstation/tgstation/pull/79661), I
noted that a lot of moodlets tended to have their timeouts break because
it was passing their names and whatnot as a parameter, that gets fed
into the timeout modifier parameter, causing the timeout multiplier to
break, because BYOND type-agnosticism means that it can multiply a
number (timeout_mod) by text (a name or some other object), resulting in
0 - which makes a moodlet permanent. This is probably not intended.

This fixes that in two ways:
- Adding a `1` to potentially applicable moodlets (searched for with a
regex of `.add_mood_event(.*, .*,)`) just to make sure the timeout
doesn't get multiplied out weirdly.
- Making the add_mood_event thing CRASH() if the timeout_mod is bad.

If someone else wants to come up with a solution better than this,
please do.

## Why It's Good For The Game
Maybe having your arm permanently fall asleep after getting it
reattached sucks, moodlet-wise. (Being stuck with permanent
positive/negative moodlets is probably not intended.)

## Changelog

🆑
fix: Moodlets with parameters/effects e.g. limb reattachment moodlets
should probably disappear more appropriately.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2024-01-15 07:08:01 +01:00
GoldenAlpharex db83be17da [MANUAL MIRROR] SPECIES NUKING 2023: Head flags 2: Electric Boogaloo (#76298) [MDB IGNORE] (#22506)
SPECIES NUKING 2023: Head flags 2: Electric Boogaloo (#76298)

Continues the work I started on
https://github.com/tgstation/tgstation/pull/76074
Fixes https://github.com/tgstation/tgstation/issues/73782

Implements a bunch of wrapper procs for hair style, facial hair style,
etc etc the whole nine yards.
Fixes many issues, especially with gradients because I did sloppy tired
code that didn't work there.
Makes head/get_limb_icon() not a disgusting mess (well, at least makes
it less of a disgusting mess).

Actually makes hair and lips depend entirely on the bodypart.

🆑
refactor: Head rendering code has been updated significantly... Again.
Please report any issues with hair, facial hair, lipstick and such.
/🆑

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
2023-07-16 18:16:12 -04:00
SkyratBot b6f130d011 [MIRROR] SPECIES NUKING 2023: Makes tongues handle liked/disliked food instead of species datum [MDB IGNORE] (#22066)
* SPECIES NUKING 2023: Makes tongues handle liked/disliked food instead of species datum

* Fixes all of the left-over issues

* https://github.com/Skyrat-SS13/Skyrat-tg/pull/22137

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

* Applies https://github.com/Skyrat-SS13/Skyrat-tg/pull/22251

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

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-07-14 16:54:10 -04:00
ChungusGamer666 614fab11b2 SPECIES NUKING 2023: Head flags 2: Electric Boogaloo (#76298)
## About The Pull Request

Continues the work I started on
https://github.com/tgstation/tgstation/pull/76074
Fixes https://github.com/tgstation/tgstation/issues/73782

Implements a bunch of wrapper procs for hair style, facial hair style,
etc etc the whole nine yards.
Fixes many issues, especially with gradients because I did sloppy tired
code that didn't work there.
Makes head/get_limb_icon() not a disgusting mess (well, at least makes
it less of a disgusting mess).

## Why It's Good For The Game

Actually makes hair and lips depend entirely on the bodypart.

## Changelog

🆑
refactor: Head rendering code has been updated significantly... Again.
Please report any issues with hair, facial hair, lipstick and such.
/🆑
2023-06-29 13:53:31 +00:00
ChungusGamer666 62ccbff0df SPECIES NUKING 2023: Makes tongues handle liked/disliked food instead of species datum (#76204)
## About The Pull Request

Alright, let's get real, handling food tastes with the species datum is
hacky at best - This is a continuation of my nuking of the species
datum, which currently handles way too much of human mobs' behaviors.

While moving that to the tongue isn't exactly a perfect solution, it
allows for more interesting behavior than the species datum, especially
now that I added getter procs to get foodtypes liked/disliked by the mob
and such.

## Why It's Good For The Game

Makes tongue transplants more appealing and emergent, since they fully
control tastes and not just taste sensitivity which is pretty much
cosmetic.

## Changelog

🆑
refactor: Liking/disliking food is now handled by the tongue organ, not
the species. Also, having a failing tongue means you can't taste food
properly!
add: You can read peoples' tongues now, if you have the entrail reading
skillchip.
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2023-06-26 08:17:54 +02:00
SkyratBot 9a594755f3 [MIRROR] Renames delta time to be a more obvious name [MDB IGNORE] (#20507)
* Renames delta time to be a more obvious name

* updates to our code

---------

Co-authored-by: oranges <email@oranges.net.nz>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-12 20:45:43 +01:00
oranges 4c48966ff8 Renames delta time to be a more obvious name (#74654)
This tracks the seconds per tick of a subsystem, however note that it is
not completely accurate, as subsystems can be delayed, however it's
useful to have this number as a multiplier or ratio, so that if in
future someone changes the subsystem wait time code correctly adjusts
how fast it applies effects

regexes used

git grep --files-with-matches --name-only 'DT_PROB' | xargs -l sed -i
's/DT_PROB/SPT_PROB/g'
git grep --files-with-matches --name-only 'delta_time' | xargs -l sed -i
's/delta_time/seconds_per_tick/g'
2023-04-11 21:31:07 -07:00
SkyratBot 3464b6bfb2 [MIRROR] Refactors Regenerate Organs, and a few organ helpers [MDB IGNORE] (#20094)
* Refactors Regenerate Organs, and a few organ helpers

* MERGE CONFLICTS

* GETORGANSLOT > GET_ORGAN_SLOT

* GETORGAN > get_organ_by_type

* lint repairs

* more lint

* Update tgstation.dme

* Update surgery_step.dm

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-01 02:51:06 +01:00
Zephyr ecbcef778d Refactors Regenerate Organs, and a few organ helpers (#74219)
## About The Pull Request

Refactors regenerate organs to be slightly more intelligent in handling
organ changes and replacements.
Noteably:
- We don't remove organs that were modified by the owner; such as
changing out your heart for a cybernetic
- We early break out of the for loop if they aren't supposed to have an
organ there and remove it
- We check for the organ already being correct, and just healing it and
continuing if it is

Also changes the names of some of the organ helpers into snake_case
### Mapping March
Ckey to receive rewards: N/A

## Why It's Good For The Game
## Changelog

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-03-26 17:54:36 +01:00
SkyratBot 0d2ba72250 [MIRROR] Replaces internal_organs with organs [MDB IGNORE] (#19871)
* Replaces internal_organs with organs

* Makes all of the necessary internal_organs -> organs in our files to compile

And it seems to work too!

---------

Co-authored-by: Time-Green <timkoster1@hotmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-03-24 13:27:48 -04:00
Time-Green 9843c23657 Replaces internal_organs with organs (#73918)
Internal_organs now also contains external organs, so the naming was
incorrect

Requested by @tralezab in #72734

Also removed some now incorrect 'as anythings' that assumed everything
in the internal_organs list was an internal_organ (which is a lie since
I put extorgans in there which means runtimes and unintentionakl
behaviour

🆑
fix: fixes deadly harvesting just taking harmless extorgans
code: renames internal_organs to organs now that it can also contain
external_organs
/🆑
2023-03-14 18:33:35 -06:00
SkyratBot eefbd40ce6 [MIRROR] Adds macros to help with common set_- and adjust_timed_status_effect uses [MDB IGNORE] (#16410)
* Adds macros to help with common `set_`- and `adjust_timed_status_effect` uses

* merge conflicts

* modular skyrat and missed changes

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-09-26 17:56:24 -04:00
SkyratBot 8f033ead91 [MIRROR] Completely refactors hallucinations, and also adds a few [MDB IGNORE] (#16348)
* Completely refactors hallucinations, and also adds a few

* delete 5 old hallucination types that should have been removed

* Fixed old leftover tips conflicts

* Fixes all the leftover conflicts and otherwise broken code

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-09-25 19:43:45 -04:00
MrMelbert 45516f4741 Adds macros to help with common set_- and adjust_timed_status_effect uses (#69951)
* Adds helpers for status effect application
2022-09-24 11:04:26 -04:00
MrMelbert 6baebf47a1 Completely refactors hallucinations, and also adds a few (#69706)
* Refactors hallucinations slightly, organizes them

* Refactors hallucination into a status effect

* Further hallucination proper refactoring

* Refactors battle hallucinations

* Refactors "fake item other" hallucination

* Gets it a bit closer to working state

* Refactors screwydoll and fake alerts

* Refactors fake inhand items

* Refactors a few more.
- Fake death
- Fake messages
- Fake sounds
- Projectiles

* Refactoring delusions, hallucination effects

* Furthering the hallucination status effect
- removes copypaste of hallucination pulses

* Almost finalizes the changeover to status effect

* Last staus effect stuff

* Delusion business

* Airlocks, fire, and more delusion stuff

* Finishes screwyhud. It compiles now!

* Swaps screwyhud over to a grouped status effect

* Removes hal_screwyhud

* Comment

* Bugfixing

* image cleaning

* Get rid of this it came back

* What if I finished this branch?

* Oops

* Messing with the randomness

* Mass hallucination tweaks

* +

* Some more mass tweaks

* Review

* Updates

* Unit tests hallucination icons

* More tweaks

* Move folder

* Another re-name

* Minor tweaks

* Anomaly unity

* Mass hallucination buffs

* t

* Sig

* Merge

* Lints

* Unit test already coming in clutch

* Another failure

* Use named args for cause_hallucination via some define trickery

* Some cleanup

* This is better

* adds some hallucinations

* Oops

* More sounds

* Tweaks

* Some additional documentation

* Flash

* Fixes mass hallucination

* Json changes

* Updates documentation

* Json conflicts

* Makes it work

* Missed that one too

* Helpers

* More signalization (WIP)

* Fixes bump

* Missed a helper use

* Dumb
2022-09-21 01:30:04 -04:00
SkyratBot 694f5eedda [MIRROR] It's 2 am and im having a manic episode so i fixed hair [MDB IGNORE] (#15687)
* It's 2 am and im having a manic episode so i fixed hair

* It's 2 am and im having a manic episode so i fixed hair

* removes `uses_mutcolor`

* Fixed the last bits that made this not compile.

Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-08-19 23:41:36 -07:00
Kapu1178 dcd84e1bdc It's 2 am and im having a manic episode so i fixed hair (#69092)
* 2 am coding

* lazylists like this are stupid

* reviews
2022-08-17 17:20:04 -07:00
SkyratBot 48685b4356 [MIRROR] Replaces the mood component with a mood datum [MDB IGNORE] (#15549)
* Replaces the mood component with a mood datum

* Fixes merge conflicts and updates all of our mood events to use the new mood datums

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-08-12 14:58:14 -04:00
Seth Scherer 34b4034777 Replaces the mood component with a mood datum (#68592)
About The Pull Request

Mood was abusing signals and get component pretty badly, so I redid it as a datum to stop this.
Why It's Good For The CODEBASE

Better code pratices, also gives admins easier tools to manage mood
Changelog

cl
admin: Added two new procs into the VV dropdown menu to add and remove mood events from living mobs.
/cl
2022-08-12 08:59:20 +12:00
SkyratBot ac31a4639e [MIRROR] Concentrated barbers aid can give hairless species hair + fixes hair updating once and for all (probably) [MDB IGNORE] (#15182)
* Concentrated barbers aid can give hairless species hair + fixes hair updating once and for all (probably)

* Update code/modules/antagonists/thief/thief.dm

* Update code/modules/mob/living/carbon/human/species_types/felinid.dm

* Concentrated barbers aid can give hairless species hair + fixes hair updating once and for all (probably)

* yes

* Update _compile_options.dm

Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-08-08 02:45:30 +01:00
SkyratBot 6016cf97b4 [MIRROR] individual LOG_GAME [MDB IGNORE] (#15401)
* individual LOG_GAME

* e

* Update teleporter.dm

Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-08-08 01:11:55 +01:00
Mooshimi b09f3868f8 individual LOG_GAME (#68683)
About The Pull Request

    replaces a ton of log_game with user.log_message so the log is added to individual and global logs.
    adds a few logs for individual LOG_VICTIM, LOG_ATTACK etc logging.
    adds logging for bluespace launchpad's tele coords being changed.
    took the word "has" out of log_combat, as it's extra and just lengthens the log.

Why It's Good For The Admins

It's extremely laggy to open game.txt so an alternative is individual game logs
Changelog

cl
admin: A lot of game logs will now also be in individual game logs, for convenience in log diving.
admin: Added logging for bluespace launchpad x and y offset changes, which go to individual game logs.
admin: Attack logs will now be slightly shorter, one useless word was removed.
/cl
2022-08-05 09:32:02 +12:00
Y0SH1M4S73R 196250c8f7 Concentrated barbers aid can give hairless species hair + fixes hair updating once and for all (probably) (#68580)
Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
2022-07-25 03:21:23 -07:00
SkyratBot 0a1f06a2d1 [MIRROR] This tail refactor turned into an organ refactor. Funny how that works. [MDB IGNORE] (#14017)
* This tail refactor turned into an organ refactor. Funny how that works.

* Firstly, fixing all the conflicts.

* Fixes all our maps (hopefully)

* Actually, this should fix pod people hair :)

* Almost everything is working, just two major things to fix

* Fixed a certain kind of external organ

* Cleaning up some more stuff

* Turned tail_cat into tail because why the fuck are they separate?

* Moved all the tails into tails.dmi because that was just dumb to have like 3 in a different file

* Adds relevant_layers to organs to help with rendering

* Makes stored_feature_id also check mutant_bodyparts

* Fixes the icon_state names of ALL the tails (pain)

* Fixes wagging, gotta refactor most mutant bodyparts later on

* I Love Added Failures

* Fixed some organs that slipped through my searches

* This could possibly fix the CI for this?

* It doesn't look like it did fix it

* This will make it pass, even if it's ugly as sin.

* Fixed Felinids having a weird ghost tail

* Fixes instances of snouts and tails not being properly colored

Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-06-11 23:20:16 -04:00
Kapu1178 6d470992cb This tail refactor turned into an organ refactor. Funny how that works. (#67017)
* Fuck you (refactors ur tails)

* Errors

* Wow. Pain.

* Fixes up probably everything

* finish up here

* Fixes hard del maybe

* original owner hard del

* garbage collection runtime

* suck my peen byond

* Mapped tails

* motherfucker.

* motherrfucker. again.

* Whooopppppsie

* yeah bad idea

* Turns out external organs literally just sat in nullspace forever if their parent was deleted, and didnt Remove() themselves, causing harddels.

* So anyways I repathed all organs

* Fixes

* really.

* unit test... test

* unit test-test but it passes linters this time because im a moh-ron

* I've lost track of what im doing at this point

* Hopefully fixes hard del?

* meh

* Update code/datums/dna.dm

* things n stuff

* repath from master pull
2022-05-30 21:18:34 -07:00
SkyratBot 133b753507 [MIRROR] Converts jittering to status effect, striking yet another mob level status value [MDB IGNORE] (#13534)
* Converts jittering to status effect, striking yet another mob level status value

* mmkay

* weh

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-05-11 21:59:42 +01:00
SkyratBot 4bc9446f21 [MIRROR] Fixes "high blood pressure" status effect, and corrects the spelling of "opioid" (fixing another bug) [MDB IGNORE] (#13532)
* Fixes "high blood pressure" status effect, and corrects the spelling of "opioid" (fixing another bug) (#66849)

Status effects that are intended to be added, are actually added.
Opioid is now spelled correctly, consistently.

This actually caused a bug: Opioid end_withdrawal was never called because it's path was spelled correctly and the others weren't.

* Fixes "high blood pressure" status effect, and corrects the spelling of "opioid" (fixing another bug)

* wew

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-05-11 21:52:11 +01:00
MrMelbert 86f11d96a7 Fixes "high blood pressure" status effect, and corrects the spelling of "opioid" (fixing another bug) (#66849)
Status effects that are intended to be added, are actually added.
Opioid is now spelled correctly, consistently.

This actually caused a bug: Opioid end_withdrawal was never called because it's path was spelled correctly and the others weren't.
2022-05-11 00:57:15 -04:00
MrMelbert 29bfa42779 Converts jittering to status effect, striking yet another mob level status value (#66852)
Converts jittering to status effect, striking yet another mob level status value
2022-05-11 00:56:29 -04:00
SkyratBot 3e4bad8694 [MIRROR] Confusion status effect is now duration based instead of magic number based [MDB IGNORE] (#13496)
* Confusion status effect is now duration based instead of magic number based

* e

* Update tgstation.dme

* Update contract.dm

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-05-11 01:52:39 +01:00
MrMelbert e63d556d83 Confusion status effect is now duration based instead of magic number based (#66801)
Refactors the confusion status effect. Removes "confusion strength" and replaces it with duration, which is measured in seconds.
This also allows them to use the adjust_timed_status_effect procs instead of their own.

Fun fact! 2 years ago when confusion was refactored into status effects, all confusion effects in the game were halved in duration. They were changed to status effects, which tick every 1 second by default, from life, which tick every 2 seconds by default, without any values changing.
2022-05-09 18:59:33 -07:00
Useroth 4d07f3a620 Missed mirror (#13460)
* Converts drunkness and dizziness to status effects. Refactors status effect examine text (and, subsequently, stabilized black extracts).  (#66340)

* Refactors dizziness into a status effect

* Refactors the dizziness setter to use the new kind

* Drunkness.
- Should drunk continue to work off of a magic value or be swapped to duration? I've not yet decided: For understandability it's preferabale for "drunk" to use a timer (they are drunk for 3 more minutes), but both adding drunk and decreasing drunk currently use weird calculations which would be difficult to carry over.
- Ballmer is a liver trait

* Dizzy was a setter, not an adjuster

* Does all the drunk effects over
- refactors examine text fully
- refactors stabilized blacks because of this

* Removed

* repaths, fixes some issues

* Minor fixes

* Some erroneous changes

* Fixes some dizziness errors

* Consistency thing

* Warning

* Undoes this change, I dont like its implementation

* max_duration

* Max amount

* Should be a negative

* max duration

* drunk doesn't tick on death

* Rework dizziness strength

* Erroneous dizzy change

* Fixes return type

* this should do it?

* well, one more

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-05-09 15:05:42 +01:00
MrMelbert 074da65fc7 Converts drunkness and dizziness to status effects. Refactors status effect examine text (and, subsequently, stabilized black extracts). (#66340)
* Refactors dizziness into a status effect

* Refactors the dizziness setter to use the new kind

* Drunkness.
- Should drunk continue to work off of a magic value or be swapped to duration? I've not yet decided: For understandability it's preferabale for "drunk" to use a timer (they are drunk for 3 more minutes), but both adding drunk and decreasing drunk currently use weird calculations which would be difficult to carry over.
- Ballmer is a liver trait

* Dizzy was a setter, not an adjuster

* Does all the drunk effects over
- refactors examine text fully
- refactors stabilized blacks because of this

* Removed

* repaths, fixes some issues

* Minor fixes

* Some erroneous changes

* Fixes some dizziness errors

* Consistency thing

* Warning

* Undoes this change, I dont like its implementation

* max_duration

* Max amount

* Should be a negative

* max duration

* drunk doesn't tick on death

* Rework dizziness strength

* Erroneous dizzy change

* Fixes return type
2022-05-04 23:33:59 -04:00