Commit Graph
909 Commits
Author SHA1 Message Date
Roxy e28e9fbdba Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-23-10-2025 2025-10-23 17:38:23 -04:00
_0StevenandGitHub a8e7a5113c Fix top 1000 most common words list not being associative, shuffle files around (#93515)
## About The Pull Request

So a pr a few months ago (#92438) shuffled around a bunch of our global
lists away from the misc file- and, in the process, broke some one with
special handling.
This just re-introduces the special handling for the top 1000 most
common words list, so it's once again associative, and moves it and the
other language lists into its own file so they're all nice and together.

This fixes our issues.

However, the file itself is still *alphabetized* rather than ranked by
commonness, despite us treating it as if it is.
...I'm leaving untangling that mess to a separate pr 
## Why It's Good For The Game

Fix jank 👍
## Changelog
🆑
fix: Partial language understanding once again knows which words are
common.
fix: Expressive Aphasia is no longer so aphasic you don't know any
words.
/🆑
2025-10-23 00:38:52 +02:00
e5be2d0f91 Sensors can now be printed, removed and installed on jumpsuits. HANDCRAFTED jumpsuits no longer have sensors by default (also mild crafting refactor) (#93121)
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2025-10-18 11:43:38 +02:00
749643cddb Reworks cargo market elasticity (#93235)
## About The Pull Request
What it says on the tin. Cargo now has new math for market elasticity,
each parameter and what it does is explained below

**1. Refactor**
1. **k_elasticity**: This is the elasticity as before applied on all
exports except now this is a floating-point value that swings from
`0->1` instead of 10e-10 like is the current case. This in laymen terms
is the percentile of an items actual cost that is sold on cargo [0 means
you get no credits, 0.5 means you get 50% of the items cost, 1 means you
get 100% of the items cost]. Whenever an item is sold on cargo this
value decreases by an amount that is determined by the next variable

2. **k_hit_percentile(default 5%)**: This is the value by which an
export `k_elasticity` decreases whenever an export is successful for
every unit of an item sold. The real formulae by which the exports
elasticity decreases is dependent on the total amount sold and is as
follows
<pre>k_elasticity -= amount sold (1 for most cases except stacks) *
k_hit_percentile</pre>
So subsequent exports yield lesser profits cause the elasticity
decreases. Now the rate at which the elasticity recovers is as follows

3. **k_recovery_time(default 10 minutes)**: This is the time (minimum
unit should be seconds) it takes for the elasticity to rebound back to
100% after it has reached full 0 but recovery process starts immediately
if it decreases at any point. So if elasticity becomes say 50% it means
it would take 5 minutes to reach 100% again

**2. Some Balance changes**
1. Profits earned from exporting gas is linear per mole sold so the more
gas you put in the more profits you get HOWEVER the max number of
credits you can make per canister is 15000 cr
2. Selling fish yields higher prices because it's no longer subject to
the old elasticity formula
3. Selling 50 sheets of anything will decrease future sale price by 10%
and will take 8 minutes to rebound back to 100% if it reaches 0

**3. Improvements:**
- `SSProcessing` subsystem no longer processes more than 180+ export
datums from round start itself but now starts out empty. It instead
processes only those exports whose elasticity has been impacted and
later cancels it after elasticity has reached 100% so performance of
this subsystem has been drastically improved
- export datums now respect `abstract_type` meaning they won't be
created and can be used as a skeleton body for subtypes. So datums like
`datum/material` & `datum/material/market` are not created anymore but
only their subtypes are so we save processing power & memory
 - Shaved of a lot of dead exports that went unused

## Changelog
🆑
balance: cargo exports now have different prices with applied elasticity
code: Improved performance of export code
qol: stock blocks can be recycled for materials & show up as stock
blocks in order console sold items
refactor: refactored cargo export code in whole. Report bugs on GitHub
/🆑

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2025-10-18 04:36:09 -04:00
xPokee 8aa39b75f0 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync 2025-10-04 05:28:09 -04:00
ArcaneMusicandGitHub f74b725961 Ore vent sizes are now divided up based on their distance to the mining base (#92943) 2025-10-03 18:07:52 +02:00
xPokee 5e629dff04 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync 2025-10-03 07:05:54 -04:00
KrysonismandGitHub 075de00420 Chekov's Canister! Adds missing resupply canisters, makes them constructable & spawn in maint,. (#93028)
## About The Pull Request

This is was created because I found several rare and exciting canisters
in game and then finding out there is no way to actually construct the
vendor they belong to!...

<img width="768" height="385" alt="image"
src="https://github.com/user-attachments/assets/70261cea-daaf-41df-a212-21cef6d6bd0c"
/>

### This PR:

* Makes all noteable vendors constructable, if you have the canister. 
* Adds canisters to syndismokes, syndiechem, liberation station,
magivend, shambler's juice and bombuddy
* Replaces the old tptally random canisters spawner, with a variety of
spawners weighted for power and split according to different themes.
* Adds the new main canister spawner to maint. 

### Spawner weights

The random canister spawner from maintenance has a:

* **93,5%** chance to spawn a common station vendor refill(with weights
for wardrobes being somewhat reduced.)
* **6%** chance to spawn a rare and special vendor refill.
* **0.5%** chance to spawn a oddity level., super powerful vendor
refill.

## Why It's Good For The Game

One must never place a filled canister in maint if it isn't going to be
constructed It's wrong to make promises you don't mean to keep.

## Changelog

🆑
add: Nearly all notable vendors are now constructable if you have the
canister.
add Added refill canisters for syndiesmokes, liberation station,
magivend, bombuddy 3000, shambler's juice and syndichem.
add: Random vending refill canisters now have a chance to spawn in
maint.
image: Robco Toolmaker and Centdrobe canisters have new sprites.
/🆑
2025-10-02 20:12:46 +02:00
xPokee b308ee9d78 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync 2025-09-24 10:13:01 -04:00
MrMelbertandGitHub 750ca9d2ec Two as anything greps (and some other cleanup) (#92974) 2025-09-20 13:44:28 -04:00
xPokee 9b282a850e Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync 2025-09-17 11:45:44 -04:00
FalloutFalconandGitHub d2f34e33be moves abstract_type up to datum, spawners wont spawn them (#92909)
## About The Pull Request
moves all implementations (im aware of) for "Im a parent type dont spawn
me please" to the datum layer to standardized behavior
adds a standerized proc for filtering out "bad" items that we dont want
spawning. applies to it the subtype vendor, gifts, and a new spawner and
mystery box for a random gun (neither playerfacing)
"port" of https://github.com/shiptest-ss13/Shiptest/pull/4621



https://github.com/user-attachments/assets/22f6f0b2-b44e-411a-b3dc-6b97dc0287aa

small warning: I dont have EVERY abstract type defined right now but,
ive done a good enough job for now. Im tired of data entry rn
## Why It's Good For The Game
standardizing behavior. Might be a micro hit to performance however

having this lets us not rely on icon state to determine whether
something is a parent type and makes it much easier to tell something is
a parent type (could be applied further to things like admin spawning
menus and things like that).

need feedback on if this is actually good for the game.
## Changelog
🆑
add: Soda cans show up in the silver slime drink table.
add: Examine tag for items that are not mean to show up ingame.
refactor: Standardizes how gifts rule out abstract types.
fix: gifts no longer check if something has an inhand, massively
expanding the list of potential items.
/🆑
2025-09-13 00:36:15 +02:00
nevimer 6fdc957dea Merge branch 'pr/xPokee/4654' 2025-09-12 17:55:53 -04:00
SonarchyyandGitHub 6d5b549b86 The Gardening Expansion DLC (#4595)
## About The Pull Request

Adds a new category to the crafting menu allowing anyone to create
previously uncraftable flora objects to decorate their
bar/chapel/maintroom creations such as flowers, bushes, ferns and tall
grass.
## Why It's Good For The Game

Several times have the admins been asked to spawn such decorations in
the past, as it stands the only way to be able to get these objects for
you builds is for them to be pre-existing in the map and for you to
painstakingly dig them up one by one, move them and replant them where
you need them.

This PR aims to make these great decorations available to everyone,
letting them create beautiful lush gardens anywhere with only some
minimal botany tools and plants required. It will also incentivize
interacting with hydroponics more, as there will be people asking for
grass and wood. (also adds a use to tower cap longs before you turn them
into sheet wood)
## Proof Of Testing

I compiled the code and the crafting tab shows up as it should and
everything within is craftable.
![Gardening
tab](https://github.com/user-attachments/assets/9f01a713-1b2d-4575-97b5-e54be548caa1)

## Changelog
🆑
add: Added new Gardening Tab in the Crafting Menu
add: New recipes for various existing Flowers/Bushes

/🆑
2025-09-12 09:35:24 -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
TimandGitHub 37a34b4cd3 The Grinch Who Patched Christmas: Preventing Trashy Presents (#92734)
## About The Pull Request
- Fixes #88595

Cargo's gift giving was so bad it landed them on Santa's _very_ naughty
list. The ~cargo techs~ elves in charge were handing out game breaking
equipment.

This closes a loophole that allowed players to spam dumpsters during the
Christmas event for gifts that could contain admin tools and other debug
loot. I've removed Christmas presents (and holiday items) from the
dumpster spawns to put a stop to this.

## Why It's Good For The Game
![The Grinch Vintage GIF by The Good
Films](https://github.com/user-attachments/assets/dcc1e49b-ba9f-479c-a793-f743baf5e9f1)

Players were using the cargo system to purchase and dumpster dive
endlessly for OP shit. During the Christmas event, these dumpsters had a
high chance of spawning the special `/anything` gifts, which can contain
literally any item in the game, including admin tools and debug
equipment. This exploit bypassed the intended rarity of these items,
which were meant to be one-time, limited gifts from Santa's bag or the
Christmas tree.

## Changelog
🆑
fix: Santa has put cargo in his very naughty list for spam producing his
presents by dumpster diving. This fixes Christmas presents (and other
holiday items) from spawning inside dumpsters.
/🆑
2025-09-09 10:23:40 -07:00
nevimer 77e8278ce2 move frontier stuff over to new files 2025-09-03 21:02:54 -04:00
Thunder12345andnevimer 6618c9d694 Misc File Purge: The Return (#92438)
## About The Pull Request

Purged several files inthe theme of misc.dm and broken the contents out
into better organised files.

Incidentally done some minor cleanup by removing an unused global list
referring to a string file that no-longer exists, and removing a useless
proc that replicated the behaviour of file2list().

## Why It's Good For The Game

See #60358 and all its successors

## Changelog
🆑
code: Reduced the number of files named misc.dm or similar by 14%.
/🆑
# Conflicts:
#	code/_globalvars/lists/flavor_misc.dm
2025-08-19 22:35:47 -04:00
Time-Greenandnevimer 147df9ec59 Organ Growing Kit | Coroner Cytology Cargo Content (1/2) (#92108)
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>

# Conflicts:
#	code/modules/clothing/head/tinfoilhat.dm
2025-08-19 22:29:26 -04:00
Thunder12345andGitHub 7c6e6422cc Misc File Purge: The Return (#92438)
## About The Pull Request

Purged several files inthe theme of misc.dm and broken the contents out
into better organised files.

Incidentally done some minor cleanup by removing an unused global list
referring to a string file that no-longer exists, and removing a useless
proc that replicated the behaviour of file2list().

## Why It's Good For The Game

See #60358 and all its successors

## Changelog
🆑
code: Reduced the number of files named misc.dm or similar by 14%.
/🆑
2025-08-12 21:18:24 +02:00
Roxy 4c62a21b1a Fixes for #92061 2025-08-12 13:50:57 -04:00
WaterpigandRoxy 55504da79d Datumizes DNA blocks, makes DNA cleaner in general (#92061)
Moves all the dna block handling onto singleton datums initialized
inside global lists, to make the handling dna less of a copy-paste mess
and make adding new blocks significantly easier. There is still some
work to be done in the copypaste department but ultimately that falls
under its own PR scope after the core refactor goes through. (Ill
probably do those but it will also be easier for everyone else as the
code is now significantly less of an eyesore)

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

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

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

🆑
code: feature keys are no longer magical strings floating around the
codebase and use proper defines
refactor: DNA blocks are now handled with singleton datums.
/🆑
2025-08-12 13:48:00 -04:00
43fc75facb Organ Growing Kit | Coroner Cytology Cargo Content (1/2) (#92108)
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2025-08-11 18:36:50 +02:00
itsmeowandRoxy 8a7e6d059f Bumps rust_g to 4.0.0 / IconForge Improvements (#92333) 2025-08-04 20:53:34 -04:00
itsmeowandGitHub 23816b8ef2 Bumps rust_g to 4.0.0 / IconForge Improvements (#92333) 2025-07-30 22:51:23 -06:00
MrMelbertandRoxy b5a53845d9 Decal Painter refactor + merge with tile sprayer + more decals to paint (#91915)
1. Decal painter has been refactored. Decals to paint are now datums.

2. Tile sprayer has been deleted, and merged with the decal painter.

3. A bunch of map decals previously un-paintable are now paintable.

4. Some preset map colors are now available for selection

Including:

- All sidings (Colored, Plating, Wood)
- Missing tile decals (Full tile, checkered tile)
   - And the missing tile decal colors (Dark colors)
- Missing warning decals (Loading area)

![image](https://github.com/user-attachments/assets/dc67f913-1e3e-42a4-8bec-1cf65381b5fb)

1. Makes it drastically easier to add more decals in the future.

2. The split always felt needless to me. I always printed one, ran to my
construction site, opened up the UI - only to realize I printed the
wrong one.

3. Allows for much greater potential while building

4. Makes it easier to match mapped in decals

(This code is commissioned, but I also wanted it, soooo)

🆑 Melbert
refactor: Refactored the decal painter, report any missing decals or
ones that come out weird.
del: Tile sprayer is dead. Its functionality has been merged with the
decal painter.
qol: A bunch of decals have been added to the decal painter. Style to
your heart's content.
/🆑
2025-07-19 20:29:22 -04:00
WaterpigandGitHub b01756b97c Datumizes DNA blocks, makes DNA cleaner in general (#92061)
## About The Pull Request

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

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

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

## Why It's Good For The Game

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

## Changelog

🆑
code: feature keys are no longer magical strings floating around the
codebase and use proper defines
refactor: DNA blocks are now handled with singleton datums.
/🆑
2025-07-14 16:51:45 -06:00
MrMelbertandGitHub d291e45e30 Decal Painter refactor + merge with tile sprayer + more decals to paint (#91915)
## About The Pull Request

1. Decal painter has been refactored. Decals to paint are now datums.

2. Tile sprayer has been deleted, and merged with the decal painter. 

3. A bunch of map decals previously un-paintable are now paintable.

4. Some preset map colors are now available for selection

Including:

- All sidings (Colored, Plating, Wood)
- Missing tile decals (Full tile, checkered tile)
   - And the missing tile decal colors (Dark colors)
- Missing warning decals (Loading area)


![image](https://github.com/user-attachments/assets/dc67f913-1e3e-42a4-8bec-1cf65381b5fb)

## Why It's Good For The Game

1. Makes it drastically easier to add more decals in the future.

2. The split always felt needless to me. I always printed one, ran to my
construction site, opened up the UI - only to realize I printed the
wrong one.

3. Allows for much greater potential while building

4. Makes it easier to match mapped in decals

(This code is commissioned, but I also wanted it, soooo)

## Changelog

🆑 Melbert
refactor: Refactored the decal painter, report any missing decals or
ones that come out weird.
del: Tile sprayer is dead. Its functionality has been merged with the
decal painter.
qol: A bunch of decals have been added to the decal painter. Style to
your heart's content.
/🆑
2025-07-12 22:58:56 +02:00
KrysonismandRoxy 26527f85e7 Da blobmob update! Indepedent strains, new sprites, egglike spores, fixes, sounds and buffs! #Cytology2025 (#91368)
This PR makes a number of changes focusing on improving the blob
minions, spores, nauts, zombies and their associated component.

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)

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

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

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.

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.

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

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?

Blob spores bursting and blobbernauts dying have sound effects.

level 5 biohazard

🆑
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-04 16:42:02 -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
san7890andRoxy 1fc53f679b Soulscythe Refactor to Basic Mob (#91667)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

I was planning on doing this a few years ago but didn't to let other
people do it; no one did it so I just did it since it's still on the
docket. Even easier in a post #90578 world

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

Lot more lightweight as it were. This mob also doesn't really need to
"live" either, so we can bypass the whole life chain as well to
alleviate any struggles. The item does 95% of the work anyways lol.

also damn you guys laxed up on the alphabetization requirements. touched
all that up while in the areas i was fixing. soulscythes are in their
own file now too instead of the bubblegum one or whatever

<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and its effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

🆑
refactor: Soulscythes have undergone a mild refactor, but everything
should work as it should. Report any issues.
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

(cherry picked from commit f74c9d7aac)
2025-06-28 20:38:32 -04:00
san7890andGitHub f74c9d7aac Soulscythe Refactor to Basic Mob (#91667)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

I was planning on doing this a few years ago but didn't to let other
people do it; no one did it so I just did it since it's still on the
docket. Even easier in a post #90578 world

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game

Lot more lightweight as it were. This mob also doesn't really need to
"live" either, so we can bypass the whole life chain as well to
alleviate any struggles. The item does 95% of the work anyways lol.

also damn you guys laxed up on the alphabetization requirements. touched
all that up while in the areas i was fixing. soulscythes are in their
own file now too instead of the bubblegum one or whatever

<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and its effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

🆑
refactor: Soulscythes have undergone a mild refactor, but everything
should work as it should. Report any issues.
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
2025-06-28 15:29:45 +12:00
SsaltyandRoxy 882fcd810a Fixes the text of the Rust Walker in the ghost poll notifications menu (#91731)
Changes the name of the Rust Walker in the ghost poll for selecting
notifications. Currently it's Rust Spirit, that is not a mob, we have a
Rust Walker and an Ash Spirit. It cleary was meant to be the Rust
Walker.
2025-06-21 22:36:05 -04:00
SsaltyandGitHub 4f85964c82 Fixes the text of the Rust Walker in the ghost poll notifications menu (#91731)
Changes the name of the Rust Walker in the ghost poll for selecting
notifications. Currently it's Rust Spirit, that is not a mob, we have a
Rust Walker and an Ash Spirit. It cleary was meant to be the Rust
Walker.
2025-06-21 09:28:13 -04:00
SmArtKarandRoxy d841c9df40 [MDB IGNORE] Blood Refactor Chapter 2: Collector's Edition (#91054)
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

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-06-05 19:47:01 -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
Ben10OmintrixandRoxy 170f4c8af3 adds snail swabbing (#91197)
## About The Pull Request
a player requested i add this, i think its harmless enough to add, but u
can now swab snails, or mapped in watering cans in botany for snail
samples

## Why It's Good For The Game
adds a few more beneficial creatures to the cytology pool, these ones
specifically being helpful for botanists.

## Changelog
🆑
add: snails are now growable from cytology. u can swab snails or
watering cans for samples
/🆑
2025-05-29 16:15:20 -04:00
Ben10OmintrixandGitHub b639a4d6e5 adds snail swabbing (#91197)
## About The Pull Request
a player requested i add this, i think its harmless enough to add, but u
can now swab snails, or mapped in watering cans in botany for snail
samples

## Why It's Good For The Game
adds a few more beneficial creatures to the cytology pool, these ones
specifically being helpful for botanists.

## Changelog
🆑
add: snails are now growable from cytology. u can swab snails or
watering cans for samples
/🆑
2025-05-24 20:36:14 -04:00
878041f587 Clown Abomination Rebalance! #Cytology2025 (#91000)
## About The Pull Request

This PR includes a number of fixes, buffs and improvements to the clown
mobs to make them more playable and worthwhile.

### Atmos tolerance buffs
This PR removes the insane unsuitable atmos and temperature damage clown
mobs used to take and bring it in line with other mobs.

In addition, clownanas can tolerate lower oxygen levels and are immune
to carbon dioxide due to their half plant biology.

### Movement speed changes

A lot of these mobs were previously unviable due to their slow speed,
one of the most important stats.

This problem will only get worse for basic mobs if the proposed basic
mob stamina changes get implemented.

Most of them are still slower than humans but now have some chance to
corner a human in some circumstances.

(I plan to add more ways to modify basic mob run speed in the future to
help with this.)

The flesh clown and honkling are now fast again, I remember the original
speed nerf of fleshclown upset the very few fleshclown enjoyers once i
PR'd in the initial balance pass years back.

### Glutton buffs

The banana glutton is now given a mechanical incentive to eat lots of
foods to nudge them into good RP.

They heal for every item and gain max health every 5 items eaten!

The banana glutton can now smash doors.

They can now prank the crew with ink sacs should they find them.

### Biotype update

Clownana has gained the plant biotype.

Living lube has gained the slime biotype.

### cell lines & samples

clownana and longface; the two other clown cell lines now have samples
associated with them and can be biopsied to create pure samples of each
cell line.

The clownana banana bunch can also be swabbed for the pure clownana cell
line!

### death drop changes

The death drop element now spreads the items out slightly instead of
stacking lots of drops in the center of the tile.

Clown mobs now drop less soap and more peels, with some of the rarer
ones dropping mimana, bluespace or gros michel peels.

The clownana now has a chance to drop full bananas or even a full banana
bunch.

The banana glutton has a chance to drop a heart of freedom. 

The flesh clown now drops a meatclown instead of soap, and a piece of
human skin instead of a bloated human suit.


### other stat changes

living lube is now highly resistant to brute damage

longface can now acutally fight a little bit, still kinda terrible
though.

## Why It's Good For The Game

These mobs are quite beloved but their level of playability is low due
to poor balance.

The main problem is atmos.

Even a whiff of bad atmos would gib these mobs before they could get to
safety.

Many of them had their speed set way too high or way too low when they
were first added, even after i adjusted their speeds years ago I was
being too conservative.

Their loot tables were too similar, this helps with that a little bit. A
couple of them might even be worthwhile farming for their drops in
certain niche situations!

The banana glutton has such a cool sprite but has been neglected
mechanically, this helps make him a little more worthwhile and the extra
obj damage helps him not be in that sucky place where he is too large to
vent crawl and not powerful enough to break down doors.

Ideally in the future we should probably be more restrictive with
allowing mobs to smash airlocks and give them another way of opening
doors via armblade -like prying or ID implants.

## Changelog

🆑
add: banana gluttons gain max health and heal by eating foods! And they
can smash doors.
balance: clown mobs no longer get nuked by bad atmos.
balance: blown mobs have new death drops.
balance: most clown more are now faster!
balance: clownanas are now plants and are immune to carbon dioxide.
balance: living lube is now a slime and highly brute resistant.
balance: longfaces now hit decently hard.
fix: clownanas and longfaces can now be biopsied.
/🆑

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-05-22 21:17:46 -04:00
MrMelbertandRoxy ec3f5acec0 [MDB Ignore] Damp Rag can now get dirty / Repaths damp rag (it's no longer a cup) (#90700)
- Damp rag is now no longer god's perfect cleaning tool. After blood,
the damp rag will collect it, and after cleaning a lot of blood, you can
no longer clean with the rag until you wash it in a sink (or with
cleaner or however you want)
- This means the rag will collect DNA in it as you clean, which gives
detectives an opportunity to investigate.
- It also means the DNA it collects will occasionally spread onto you,
meaning you will have to clean your gloves or hands.
- Cleaning vomit and such is (currently) unaffected (and does not dirty
the rag).
- Diseases are not currently transferred to the rag (but this would be
fun to add)

- Gauze now gets dirty when using it to wrap bleeding wounds. This is
just visual, though blood DNA gets transferred. It can be washed in a
sink.

- Removed gauze on sink / cloth on sink interaction.
   - Can't really wash gauze with it, plus it's redundant.

- Damp rag is no longer a cup.

Damp rag is just "soap without any downsides", which is kinda lame.
I thought about going a step further and making it require you wet it
first but then it just becomes "mop but small" which is also lame.

Instead, you're required to clean it, which gives janitors / crewmembers
an alternate cleaning method:
- Soap: Small, finite, limited. Can't be replenished.
- Cleaner: Small, finite, even more limited, ranged. Can be refilled
with chemistry's help.
- Mop: Large, infinite, limited. Needs a water bucket.
- Damp Rag: Small, infinite, limited. Need to clean it after a few goes.

🆑 Melbert
balance: Damp Rags can now get dirty when using them to clean blood,
passing blood DNA along.
add: Gauze now gets dirty when apply it to actively bleeding wounds.
Doesn't spread disease or anything, just passes blood DNA. It can be
cleaned in a sink.
del: Removed cloth on sink / gauze on sink interaction to make rags.
Just use the crafting menu
/🆑
2025-05-22 21:14:47 -04:00
sippykotandGitHub aa2214d566 Printable medipens & other chemistry product changes (#3840)
## About The Pull Request

Adds printable injectors to chemmaster and chemfactory, re-adds bottles
to chemmaster, fixes chemfactory being unable to print 100u bottles that
broke because of upstream changes - see changelog

## Why It's Good For The Game

bugs are bad, there's no real reason why you shouldnt be able to factory
1u pills
and, well... - printable injectors have been a very much requested
feature - we already have hyposprays, but they arent the kind of
disposable slop you can just throw out to crew and have their own issues
- having a 25u 1.5 sec injection is a good alternative to patches and
pills
having them be non-instant limits the potential to use them for murder
(piercing hypospray is still a much better option for that since you can
pump 50u of death slop into people...)

## Proof Of Testing

there would be some if github didnt refuse to load images for some
reason
i did test it a bunch of localhost though, i swear :3

## Changelog
🆑
add: printable 25u injectors, 1.5 sec injection time to other, instant
self inject, AP
add: you can print bottles and large bottles in the chemmaster, no more
pharmacy condimasters
qol: chemfactory can print items with less than 5u reagents now, down to
1u
fix: chemfactory can print 100u bottles properly again
fix: chemfactory doesn't call vials "bottles" anymore
image: added new injector sprites
/🆑
2025-05-21 12:12:20 -07:00
b3580b8a8d Clown Abomination Rebalance! #Cytology2025 (#91000)
## About The Pull Request

This PR includes a number of fixes, buffs and improvements to the clown
mobs to make them more playable and worthwhile.

### Atmos tolerance buffs
This PR removes the insane unsuitable atmos and temperature damage clown
mobs used to take and bring it in line with other mobs.

In addition, clownanas can tolerate lower oxygen levels and are immune
to carbon dioxide due to their half plant biology.

### Movement speed changes

A lot of these mobs were previously unviable due to their slow speed,
one of the most important stats.

This problem will only get worse for basic mobs if the proposed basic
mob stamina changes get implemented.

Most of them are still slower than humans but now have some chance to
corner a human in some circumstances.

(I plan to add more ways to modify basic mob run speed in the future to
help with this.)

The flesh clown and honkling are now fast again, I remember the original
speed nerf of fleshclown upset the very few fleshclown enjoyers once i
PR'd in the initial balance pass years back.

### Glutton buffs

The banana glutton is now given a mechanical incentive to eat lots of
foods to nudge them into good RP.

They heal for every item and gain max health every 5 items eaten!

The banana glutton can now smash doors.

They can now prank the crew with ink sacs should they find them.

### Biotype update

Clownana has gained the plant biotype.

Living lube has gained the slime biotype.

### cell lines & samples

clownana and longface; the two other clown cell lines now have samples
associated with them and can be biopsied to create pure samples of each
cell line.

The clownana banana bunch can also be swabbed for the pure clownana cell
line!

### death drop changes

The death drop element now spreads the items out slightly instead of
stacking lots of drops in the center of the tile.

Clown mobs now drop less soap and more peels, with some of the rarer
ones dropping mimana, bluespace or gros michel peels.

The clownana now has a chance to drop full bananas or even a full banana
bunch.

The banana glutton has a chance to drop a heart of freedom. 

The flesh clown now drops a meatclown instead of soap, and a piece of
human skin instead of a bloated human suit.


### other stat changes

living lube is now highly resistant to brute damage

longface can now acutally fight a little bit, still kinda terrible
though.

## Why It's Good For The Game

These mobs are quite beloved but their level of playability is low due
to poor balance.

The main problem is atmos.

Even a whiff of bad atmos would gib these mobs before they could get to
safety.

Many of them had their speed set way too high or way too low when they
were first added, even after i adjusted their speeds years ago I was
being too conservative.

Their loot tables were too similar, this helps with that a little bit. A
couple of them might even be worthwhile farming for their drops in
certain niche situations!

The banana glutton has such a cool sprite but has been neglected
mechanically, this helps make him a little more worthwhile and the extra
obj damage helps him not be in that sucky place where he is too large to
vent crawl and not powerful enough to break down doors.

Ideally in the future we should probably be more restrictive with
allowing mobs to smash airlocks and give them another way of opening
doors via armblade -like prying or ID implants.

## Changelog

🆑
add: banana gluttons gain max health and heal by eating foods! And they
can smash doors.
balance: clown mobs no longer get nuked by bad atmos.
balance: blown mobs have new death drops.
balance: most clown more are now faster!
balance: clownanas are now plants and are immune to carbon dioxide.
balance: living lube is now a slime and highly brute resistant.
balance: longfaces now hit decently hard.
fix: clownanas and longfaces can now be biopsied.
/🆑

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-05-17 16:36:04 +00:00
MrMelbertandGitHub 685ca9db69 [MDB Ignore] Damp Rag can now get dirty / Repaths damp rag (it's no longer a cup) (#90700)
## About The Pull Request

- Damp rag is now no longer god's perfect cleaning tool. After blood,
the damp rag will collect it, and after cleaning a lot of blood, you can
no longer clean with the rag until you wash it in a sink (or with
cleaner or however you want)
- This means the rag will collect DNA in it as you clean, which gives
detectives an opportunity to investigate.
- It also means the DNA it collects will occasionally spread onto you,
meaning you will have to clean your gloves or hands.
- Cleaning vomit and such is (currently) unaffected (and does not dirty
the rag).
- Diseases are not currently transferred to the rag (but this would be
fun to add)

- Gauze now gets dirty when using it to wrap bleeding wounds. This is
just visual, though blood DNA gets transferred. It can be washed in a
sink.

- Removed gauze on sink / cloth on sink interaction.
   - Can't really wash gauze with it, plus it's redundant.

- Damp rag is no longer a cup.

## Why It's Good For The Game

Damp rag is just "soap without any downsides", which is kinda lame. 
I thought about going a step further and making it require you wet it
first but then it just becomes "mop but small" which is also lame.

Instead, you're required to clean it, which gives janitors / crewmembers
an alternate cleaning method:
- Soap: Small, finite, limited. Can't be replenished.
- Cleaner: Small, finite, even more limited, ranged. Can be refilled
with chemistry's help.
- Mop: Large, infinite, limited. Needs a water bucket.
- Damp Rag: Small, infinite, limited. Need to clean it after a few goes.

## Changelog

🆑 Melbert
balance: Damp Rags can now get dirty when using them to clean blood,
passing blood DNA along.
add: Gauze now gets dirty when apply it to actively bleeding wounds.
Doesn't spread disease or anything, just passes blood DNA. It can be
cleaned in a sink.
del: Removed cloth on sink / gauze on sink interaction to make rags.
Just use the crafting menu
/🆑
2025-05-16 13:49:27 -07:00
5f3930ba05 Da huge stonking cans update! 2025 edition. (#90318)
## About The Pull Request


![bild](https://github.com/user-attachments/assets/d3643592-4907-4d01-8fc6-3d613aa3e772)

![bild](https://github.com/user-attachments/assets/d859e878-72e3-4200-8c1c-8521e5c499d2)

## This PR:

*  Adds a new type of reagent container; the jerrycan!

* Replaces the nutrient bottles in the nutrimax with cans.

* Adds some prefilled cans to the maint loot table.

### Can knowledge

* Jerrycans can hold a hold an incredible 200u.
* They can be printed roundstart at the auto and protolathes for 2
sheets of plastic.
* They are balanced by being bulky.
* They can be thrown around by without spilling their contents.
* They are not beakers and cannot be used to make grenades.

The upfront cost associated with buying nutrients will be greater, but
it will be cheaper per unit.
I would actually like to charge more but this is not really feasible
right now due to the heavy department discount.

#### Maint loot additions
The new maint loot cans have a low weight so far, collectively appearing
half as often as basic healing items.

The cans that have been added to maint loot are as follows:

* space cleaner ( weight: 2)
* oil (weight: 2)
* diethylamine (weight : 1)
* phlogiston (weight: 1)

#### Reagent overlay code

I have added an option to have reagent containers use a colour matrix to
lighten and increase the contrast of the reagent filling overlay in an
attempt to prevent dark coloured reagents from completely obliterating
all contrast.
The math may need to be tweaked but it should offer some improvement
provided the filling overlay has some contrast to begin with.

## Why It's Good For The Game

The jerrycan is not only a flavourful & setting appropriate way to store
reagents, it also offers several design benefits due to its unique
combination of high roundstart capacity and bulky size.

* It prevents one coworker from hogging a shared reagent container.
* The high volume eases grinding and mixing.
* It allows reagents to be stolen or borrowed due to being stored
outside the safety of an inventory.
* The highly visible inhand sprite allows you to see who is holding or
transporting reagents.
* The smart cap flag increases quality of life by allowing you to throw
the container without spilling.
* It reduces the tedium associated with dispensing and throwing away
botany nutrient bottles, encouraging refilling.
* Bulky size prevent players from looting the can unless it is something
they really want.
* Comes with a large number of visual customisation options for coders
who with to add new variants.

## Throwing away the little nutrient bottles when doing botany sucks!

## Changelog

🆑
add: Added a new type of reagent container; the jerrycan.
add: Added some prefilled jerrycans to maint loot.
balance: Botany nutrients now come in bulk packaging.
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2025-05-08 19:21:10 -04:00
2a30c6da70 Da huge stonking cans update! 2025 edition. (#90318)
## About The Pull Request


![bild](https://github.com/user-attachments/assets/d3643592-4907-4d01-8fc6-3d613aa3e772)

![bild](https://github.com/user-attachments/assets/d859e878-72e3-4200-8c1c-8521e5c499d2)

## This PR:

*  Adds a new type of reagent container; the jerrycan!

* Replaces the nutrient bottles in the nutrimax with cans.

* Adds some prefilled cans to the maint loot table.

### Can knowledge

* Jerrycans can hold a hold an incredible 200u.
* They can be printed roundstart at the auto and protolathes for 2
sheets of plastic.
* They are balanced by being bulky.
* They can be thrown around by without spilling their contents.
* They are not beakers and cannot be used to make grenades.

The upfront cost associated with buying nutrients will be greater, but
it will be cheaper per unit.
I would actually like to charge more but this is not really feasible
right now due to the heavy department discount.

#### Maint loot additions
The new maint loot cans have a low weight so far, collectively appearing
half as often as basic healing items.

The cans that have been added to maint loot are as follows:

* space cleaner ( weight: 2)
* oil (weight: 2)
* diethylamine (weight : 1)
* phlogiston (weight: 1)

#### Reagent overlay code

I have added an option to have reagent containers use a colour matrix to
lighten and increase the contrast of the reagent filling overlay in an
attempt to prevent dark coloured reagents from completely obliterating
all contrast.
The math may need to be tweaked but it should offer some improvement
provided the filling overlay has some contrast to begin with.

## Why It's Good For The Game

The jerrycan is not only a flavourful & setting appropriate way to store
reagents, it also offers several design benefits due to its unique
combination of high roundstart capacity and bulky size.

* It prevents one coworker from hogging a shared reagent container.
* The high volume eases grinding and mixing.
* It allows reagents to be stolen or borrowed due to being stored
outside the safety of an inventory.
* The highly visible inhand sprite allows you to see who is holding or
transporting reagents.
* The smart cap flag increases quality of life by allowing you to throw
the container without spilling.
* It reduces the tedium associated with dispensing and throwing away
botany nutrient bottles, encouraging refilling.
* Bulky size prevent players from looting the can unless it is something
they really want.
* Comes with a large number of visual customisation options for coders
who with to add new variants.

## Throwing away the little nutrient bottles when doing botany sucks!

## Changelog

🆑
add: Added a new type of reagent container; the jerrycan.
add: Added some prefilled jerrycans to maint loot.
balance: Botany nutrients now come in bulk packaging.
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2025-05-08 07:17:09 +00:00
JacquerelandShadow-Quill d315286ec3 Readds Cloning (#90754) 2025-04-29 18:33:35 -06:00
BloopandShadow-Quill 4ba1520df8 There will be (colorful) blood: datumizes bloodtypes, greyscales blood sprites, and fixes a lot of inconsistencies with gibs and forensic data (#90593)
## About The Pull Request


This PR:

- Converts all of the blood types into their own datums, which can be
set up to have their own colors, descriptions, and other fun unique
properties. For example, the clown blood that is constantly randomizing
itself.

- Converts all the blood decals into greyscale, which in turn eliminates
the need for separate xeno sprites. They both use the same ones now.

- Audit of blood splatters/gibs/bodyparts/organs to make sure that they
are getting the correct forensic data applied to them.

- For the admins: Adds a clown blood smite.

My primary goal with was to make the appearance of the new sprites look
almost indistinguishable to the original ones.

I consider this a "first pass", as in there are still some further
refactors I would like to do on the backend side, but am satisfied with
it enough to push it forward as a first step towards a better blood
system! I didn't want to do too much at once because of A) fatigue and
B) easier to test things to make sure I'm not breaking something
important this way.

This has been test-merged on Nova for over a week now and has been going
great, so I finally got around to upstreaming the bones to TG. Although
I did test it a bit you may want to TM it just in case I missed some
things when copying it over.
2025-04-29 18:33:34 -06:00
MrMelbertandShadow-Quill 8a44bf25fc Reworks language translations. Add partial language understanding. Bilingual update. (#90252)
Fixes #89445 (well, technically. It fixes the bug associated but these
`say`s should really be emotes.)

Three things:

1. Reworks how language translation works.

Rather than scrambling a sentence into a language entirely, sentences
are now scrambled on a per-word basis.

Additionally, the 1000 most common words of a language are *never*
re-scrambled across the duration of a round. Once it's set it's set in
stone.

Example: (Sample / Old / New)

![image](https://github.com/user-attachments/assets/69be41fa-bc40-45f0-bd80-e24e799c9f38)

This allows for a number of things:

- More consistent translations, making it (more) viable to actually
"teach" someone words for something
- Maintaining emphasis such as caps (but not `||`, `++`, or `__` - at
least not yet)
- The following:

2. Adds partial language understanding

Some languages can understand portions of other languages.

![image](https://github.com/user-attachments/assets/b6eee2c7-f564-437b-8c7a-bd1d88a9b680)

This pr adds the following:
- Those who understand Beachtongue can understand 50% of Common and 33%
of Uncommon words.
- Those who understand Common can understand 33% of Beachtongue and 20%
of Uncommon words.
- Those who understand Uncommon can understand 20% of Common and 20% of
Beachtongue words.

3. Bilingual quirk has been expanded to accomodate these changes.

There are now two more preferences:
- Language Speakable
- You can toggle this, so you only understand the language, rather than
understand AND speak.
- Language Skill
- If you choose to be unable to speak the language, you can set how much
of the language you can understand, down to 10%.

Playing around languages is fun, but due to the way our translation
works, ALL context is immediately lost for what the other person may be
saying.

If the other person is shouting in all caps? Output language is normal
chatting. This is lame!

Even if someone is unable to understand you, there's a LOT you can
convey just by how you speak, and getting that across in game is quite
difficult when all translations get mauled so badly.

So this changes that.

- Emphasis like caps lock is maintained, so you see someone shouting in
caps in a foreign language you can probably intuit something is wrong
(but not what is wrong!)
- Some languages can gleam bits of other languages, so you MIGHT be able
to pick out context if you pay close attention
- "Brother" languages will now feel more like "brothers" and not
completely divergent
- You can even "teach" someone words in your language - at least the
most common words! (Until next round)

🆑 Melbert
add: Languages can now have partial understanding of other languages.
More common English words are more likely to be mutually understood.
add: Those who understand Beachtongue can understand 50% of Common and
33% of Uncommon words.
add: Those who understand Common can understand 33% of Beachtongue and
20% of Uncommon words.
add: Those who understand Uncommon can understand 20% of Common and 20%
of Beachtongue words.
add: Bilingual quirk: You can now choose between being able to speak or
not speak the language
add: Bilingual quirk: You can now choose to have partial understanding
of your language, rather than full.
qol: If you speak in ALL CAPS in a foreign language, the translated
words will also be ALL CAPS.
qol: Many more forms of punctuation are now conveyed across
translations.
qol: The 1000 most common English words will now never be scrambled when
translating into other languages for the duration of the round. This
means you can actually "learn" some words if you are especially
attentive! (Until the next round at least)
refactor: Refactored language translations. Report if you see any super
odd looking translations.
fix: Force-says forcing you to speak common (such as cult invocations)
will now correctly force you to speak common (even if you don't know
common)
/🆑
2025-04-29 17:52:31 -06:00
WallemandShadow-Quill 753d8a2440 Implements some of the helpers I made for #90354 (#90436)
## About The Pull Request
Adds a couple helpers from #90354

1. `/proc/pick_recursive()` > able to take in nested lists and pick one
object from them. Works the same way `pick_weight_recursive()` does,
just without all the extra `_weight` stuff
2. `span_tinynicegreen()` > we had span_tiny for danger and notice but
not nicegreen, just filling that gap
3. `/matrix/proc/get_angle()` > Tells us the angle a matrix is currently
in
4. `GLOB.all_tool_behaviours` > in case you wanted an easy list for all
tool behaviors
5. `transition_filter_chain()` > a more complicated one, this is used if
you want to make an animation chain for a filter. (Thank you
LemonInTheDark for the help on this one.)
## Why It's Good For The Game

Helpful stuff for future coders is good
## Changelog
🆑 Wallem, LemonInTheDark 
code: Added a couple helpers & procs for coders
/🆑
2025-04-29 17:44:07 -06:00
KrysonismandShadow-Quill 8a94c8f464 Punishable by death in 7 sectors! Kronkaine buff package. (#90192)
## About The Pull Request

![kronkus_complete_ultimate](https://github.com/user-attachments/assets/c3288739-bf8d-47c7-8b61-65cf2c5bdded)

### Kronkus vine buffs:

Kronkus seeds are now three times as common.

The Kronkus vine has a greatly increased endurance stat(10->40) so it
does not die on you while you run around gathering ingredients and
matures quicker (8->6)

### Kronkaine buffs:

* The instant stamina boost restores **double stamina**(12 per u) when
injected or smoked.

* Now also restores stamina over time based on volume: **0.08 stamina
per unit each cycle**.

* Heart damage from kronkaine is now also dose dependant, overdose
damage has been adjusted to account for this.

* Reaction requires less ammonia(5->3u) and welding fuel(10->5u). 

* Added an alternate reaction that uses lye instead of ammonia, also
takes 3u.

* Added some new drug messages for when using these optimized methods of
administration.

* Reworked how the anti-purging mechanic works, now it only punishes you
with adrenal fatigue while you take >30 stamina damage while trying to
purge. This makes life saving OD treatment less annoying, but still
prevents abuse mid combat in a more elegant way.

The amount of heart damage inflicted is much lower if used at low doses,
the same as before at 20u and greater if more than 20u is administered.

The heart damage formula is : **0.1 + 0.04 * volume (+0.5 if overdosed)
damage per cycle**.

It should work out to something like a 27.5u lethal dose with a pristine
heart.



### Kronkus extract buffs:

Lasts twice as long.

More heart damage per cycle 0.1 -> 0.2. This value is still pretty
modest.

UPDATE: I had previously buffed the stamina regen of this reagent, but
now kronkaine itself has stamina regen per cycle.

#### Technical changes:

proc/copy_to can now trigger on_transfer and pass exposure methoid if
the new copy_method parameter is set.

This enables sources that use copy_to like smoke clouds to trigger
INHALE dependent effects like the new kronkaine enhancement.
Infinite hyposprays now also have the inject method like normal
hyposprays.

These two were the only two cases where reagents where reagents were
added to a mob using copy_to.

#### Fixes:
kronkus extracts heart damage now uses seconds_per_tick.

## Why It's Good For The Game

After surveying the available discussion on the subject, the kronkaine
drug itself seems to be generally well received.

However the rarity of the seed and the arcane preparation method has
limited player engagement with the mechanic.
There is confusion regarding both the preparation and, especially
regarding how the stamina restoring effect works.

This PR seeks to make things a little smoother and more pleasant without
making a rare thing into a trivial thing,.

Players seems to mostly use the action speed part of kronkaine so I have
massively buffed the stamina restoration part in a flavourful way to
encourage more types of players to plant the seeds should they find
them.

Over time more and more stuff have been added to the maintenance loot
spawn lists which have diluted the spawn chance of the seed packet which
contributes to the problem.

This PR increases the weight from 1 -> 3.

## Changelog

🆑
balance: kronkaine now restores double stamina when smoked or injected.
balance: kronkaine now restores stamina each cycle, the effect is dose
dependant.
balance: kronkaine now causes heart damage in a dose dependant manner,
instead of a flat value.
balance: kronkus seed packs are now three times as common.
balance: the kronkaine anti-purging disease now only triggers if you
take stamina damage while using purging chems.
balance: the kronkaine reaction uses less ammonia and welding fuel.
add: added an alternative kronkaine reaction that uses lye instead of
ammonia.
balance: kronkus extract now lasts twice as long but deals a bit more
heart damage(0.1->0.2)
balance: the kronkus vine plant is now a lot hardier(endurance: 10 ->
40) and matures a bit quicker.
tweak: kronkaine now warns the user more if it is about to kill your
heart.
fix: kronkus extract now inflicts heart damage correctly. 
/🆑
2025-04-29 17:15:52 -06:00