Commit Graph

3881 Commits

Author SHA1 Message Date
Meiler
62914d3d1d non-modular code comments 2023-03-06 02:49:25 +01:00
Meiler
52bd80b998 initial 2023-03-05 01:59:24 +01:00
Zonespace
8fabd54ad6 Mirrors #72354 (#18654)
* [no gbp] removes all duplicate armor datums (#72354)

closes #72348
Title

My bad

Heres the script I used this time if you want to
```cs
var baseDir = Environment.CurrentDirectory;

var allFiles = Directory.EnumerateFiles($@"{baseDir}\code", "*.dm", SearchOption.AllDirectories).ToList();
var known = new Dictionary<string, List<KeyValuePair<string, int>>>();

foreach (var file in allFiles)
{
	var fileLines = File.ReadAllLines(file);
	for (var i = 0; i < fileLines.Length; i++)
	{
		var line = fileLines[i];
		if (line.StartsWith("/datum/armor/"))
		{
			var armorName = line.Replace("/datum/armor/", "").Trim();
			if (!known.ContainsKey(armorName))
				known[armorName] = new List<KeyValuePair<string, int>>();
			var knownList = known[armorName];
			knownList.Add(new KeyValuePair<string, int>(file, i));
		}
	}
}

Console.WriteLine($"There are {known.Sum(d => d.Value.Count)} duplicate armor datums.");

var duplicates = new Dictionary<string, List<int>>();
foreach (var (_, entries) in known)
{
	var actuals = entries.Skip(1).ToList();
	foreach (var actual in actuals)
	{
		if (!duplicates.ContainsKey(actual.Key))
			duplicates[actual.Key] = new List<int>();
		duplicates[actual.Key].Add(actual.Value);
	}
}

Console.WriteLine($"There are {duplicates.Count} files to update.");

foreach (var (file, idxes) in duplicates)
{
	var fileContents = File.ReadAllLines(file).ToList();
	foreach (var idx in idxes.OrderByDescending(i => i))
	{
		string line;
		do
		{
			line = fileContents[idx];
			fileContents.RemoveAt(idx);
		}
		while (!String.IsNullOrWhiteSpace(line));
	}
	File.WriteAllLines(file, fileContents);
}
```

* modular

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2023-01-13 18:05:12 -05:00
SkyratBot
8e8002b555 [MIRROR] Converts drowsy and eye blur to status effects, striking yet another two carbon level status vars [MDB IGNORE] (#18348)
* Converts drowsy and eye blur to status effects, striking yet another two carbon level status vars

* merge conflicts

* adjust_eye_blur and set_eye_blur_if_lower

* adjust drowsiness overdoses

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2023-01-09 13:14:47 -05:00
SkyratBot
ee8226b8a8 [MIRROR] Fixes prefilled drinking glasses, and small carton icon [MDB IGNORE] (#18606)
* Fixes prefilled drinking glasses, and small carton icon (#72527)

Fixes a few drink container issues:
- The `/obj/item/reagent_containers/cup/glass/drinkingglass/filled`
subtypes runtimed whenever their reagents changed because of the strict
way that `/datum/component/takes_reagent_appearance` compares container
types.
- `/datum/component/takes_reagent_appearance` now allows for an
alternate type to check against `glass_style.required_container_type`
via a var called `base_container_type`. The filled glasses now set this
var to the main drinking glass type.
- As well, filled glasses didn't have their appearance set up to match
the corresponding glass style. Thus, the
`/obj/item/reagent_containers/cup/glass/drinkingglass/filled` type now
updates its appearance on initialization.

- Seperately, the small carton's appearance broke if you put a reagent
in that doesn't match a glass style, reverting to the "water_cup" icon
state which doesn't exist in the boxes.dmi file. This is because it was
a subtype of sillycup, but there is nothing gained as far as I can see
from that type relationship, so the small carton was repathed to
`/obj/item/reagent_containers/cup/glass/smallcarton`.

* Fixes prefilled drinking glasses, and small carton icon

Co-authored-by: Tastyfish <crazychris32@gmail.com>
2023-01-08 22:49:52 -08:00
SkyratBot
ae713bf18a [MIRROR] Crafting/Cooking menu update [MDB IGNORE] (#18334)
* Crafting/Cooking menu update

* Yeeted away all of the merge conflicts, time to fix the code

* Okay, now it compiles, and after testing, it seems to work just fine

* Actually, early addition of an upstream fix, so those that don't have hunger can still open the cooking menu

* Fixes the units tests by removing the extra comma in the Stuffed Muli Pod recipe

Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-01-08 15:02:18 -05:00
SkyratBot
011fefdd81 [MIRROR] Refactors armor into dedicated subtypes [MDB IGNORE] (#18291)
* Refactors armor into dedicated subtypes

* start

* most tg things

* pain (#18584)

* shit

* non-mod changes

* compile

Co-authored-by: John Doe <gamingskeleton3@gmail.com>

* #18291

* compile fix

* ???

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-01-07 20:06:16 -08:00
SkyratBot
39b8cd6bcb [MIRROR] Minor detectives spawn with a candy cigarette and apple juice filled flask [MDB IGNORE] (#18564)
* Minor detectives spawn with a candy cigarette and apple juice filled flask (#72422)

If a detective joins who is 20 or younger their cigarette is changed for
a candy one and their flask is filled with apple juice. Also adds candy
cigarettes' to the detective vendor.

Minor crew members are unable to use cigarette vendors or acquire
alcohol in game without effectively committing a crime, it doesn't make
sense for minor detectives to spawn with them. I also think that minor
characters trying to obtain narcotics can be a pretty entertaining RP
starter as a overall harmless crime and something that requires
interaction with other members of the crew.

* Minor detectives spawn with a candy cigarette and apple juice filled flask

Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
2023-01-07 08:28:50 -08:00
SkyratBot
80d1906bd1 [MIRROR] Basic Mobs can run away [MDB IGNORE] (#18196)
* Basic Mobs can run away (#71963)

## About The Pull Request

That's right I'm still atomising #71421, some day I might even post
something related to carp.
This PR adds various behaviours to basic mobs allowing them to run away,
in a couple of variations.

Mice will flee from anyone who doesn't share their factions, at all
times (so they will scatter from most humans, but not regal rats).
Rabbits and Sheep will flee from anyone who has attacked them.
Pigs will run away from people who have attacked them, but only if
they're below half health.

https://user-images.githubusercontent.com/7483112/207127135-d1737f91-d3f7-468a-ac60-7c7ae5d6623d.mp4

Mice are still plenty catchable because they don't run _very far_ (or
very fast) but I think the chase will be good enrichment.

To achieve this I had to change the signal COMSIG_CARBON_HEALTH_UPDATE
into COMSIG_LIVING_HEALTH_UPDATE but frankly the latter seems more
sensible anyway.

## Why It's Good For The Game

More behaviours to use later when designing mobs, gradually gives mobs
more things to do rather than just sort of moving aimlessly around the
area you left them in.
It'll give people hunting rats in maintenance some exercise.

## Changelog

🆑
add: Mice will now run away from you, you have to catch them if you want
to eat them. Use those traps!
add: Rabbits, Sheep, and Pigs likewise won't just sit there and let you
pulverise them if they can see an escape route.
/🆑

* Basic Mobs can run away

* Modular!

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
2023-01-07 23:51:47 +13:00
SkyratBot
650d64f6d4 [MIRROR] afterattack now returns a flag if it's reasonable to suspect the user intends to act on an item [MDB IGNORE] (#18519)
* afterattack now returns a flag if it's reasonable to suspect the user intends to act on an item

* Update _neck.dm

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-01-07 06:55:38 +00:00
SkyratBot
54db2b52d3 [MIRROR] Stranger Reagent can no longer be a componet in Metalgen [MDB IGNORE] (#18459)
* Stranger Reagent can no longer be a componet in Metalgen (#72396)

## About The Pull Request

What is says on the tin.
Closes #72393.
## Why It's Good For The Game

Bugfix
## Changelog
🆑
fix: Stranger Reagent can no longer be a componet in Metalgen
/🆑

* Stranger Reagent can no longer be a componet in Metalgen

Co-authored-by: A miscellaneous Fern <80640114+FernandoJ8@users.noreply.github.com>
2023-01-06 12:37:35 -05:00
SkyratBot
ca4fedbd8b [MIRROR] adds reagents splashing animation [MDB IGNORE] (#18501)
* adds reagents splashing animation (#72231)

## About The Pull Request
Adds animations for splashing reagents on stuff. Both when combat mode +
right clicking something, and when throwing the reagent container at
something. The slosh sound now also plays in both these cases, because
it seemed weird that these were lacking sounds. There's also an
animation for splashing reagents into hydroponics trays.

default splash animation:
![default](https://user-images.githubusercontent.com/94711066/209586106-1c64bef2-ce1c-40e0-af12-8b17e40efd4c.gif)
splash animation when targeting turfs:
![floor](https://user-images.githubusercontent.com/94711066/209586125-c9eee1b0-96fc-4dd2-9b7b-4715f87d8842.gif)
animation for pouring reagents into hydroponics trays:
![hydroponics](https://user-images.githubusercontent.com/94711066/209586127-669be1d0-5fb8-4ae3-a611-7bde9876dcdc.gif)
(they all get recolored by the reagents)

[new demo video!](https://youtu.be/PuoOmbc3-Nc)

~~[old demo video](https://youtu.be/SfHrINpIidk)
[old extra demo because i forgot to record it the first
time](https://youtu.be/CscgltRpE64)~~
## Why It's Good For The Game
Visual and auditory feedback for splashing things and getting splashed
(with potentially dangerous chemicals). Also looks neat when watering
your plants.
## Changelog
🆑
add: added reagent splashing animation for spilling reagents on things
add: added reagent splashing animation for spilling reagents onto floors
add: added reagent splashing animation for pouring reagents into
hydroponics trays
soundadd: slosh sound now plays when spilling reagents on things, both
directly and by throwing
/🆑

* adds reagents splashing animation

Co-authored-by: kawoppi <94711066+kawoppi@users.noreply.github.com>
2023-01-06 08:30:03 -08:00
SkyratBot
625b66bd0c [MIRROR] Refactors bar drink icons into datum singletons / unit tests them [MDB IGNORE] (#18140)
* Refactors bar drink icons into datum singletons / unit tests them (#71810)

- Refactors bar drink icons.
- Juice boxes no longer have a hard-coded list of a bunch of reagent
types in their update state, and use a system similar to bar drinks.
- Glass and shot glass icon information are no longer stored on the
drink. Instead, they are now stored in glass style datums. These datums
store name, description, icon, and icon state of a certain container +
reagent type.
- Glass styles are applied via the `takes_reagent_appearance` component.
Glasses, shot glasses, and juice boxes have this component.
- This comes with support for being able to have drink icons from
different files, rather than requiring the drinks DMI.
- The britmug is now a subtype of mug.
   -  1 new icon: britmug filled.
- Various small code clean-up around drink reagents.
- Unit tests icon state setups for glass styles as well as all `/drink`
reagent container subtypes.
- Splits up the massive `drinks.dmi` into separate files.

*Disclaimer: Much of the drinking glass datums were written via script
automatically, so there may be errors present.*

- Much easier to add new drink styles, much more modular.
- It is no longer necessary for new drinks to be added to the massive
`drinks.dmi`. People working with drinks in the future can simply add
their glass style datum and point it to their file wherever it may be.
- Expandable system. Adding a new type of reagent container that works
similarly to bar drinks but for different types of icons is a breeze.
- Ensures going forward no bar drinks have invisible sprites.

🆑 Melbert
refactor: Refactored how bar drinks set their icons. Juice boxes now use
the same system.
/🆑

* Well that's all of them, unit tests prove me wrong

* now its a mapping pr lmao

* SHUT THE FUCK UP

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
2023-01-04 09:10:12 -08:00
SkyratBot
79abd48f84 [MIRROR] Make chem dispenser reagent search better [MDB IGNORE] (#18453)
* Make chem dispenser reagent search better (#72358)

Improving the chem dispenser reagent search by using a List.

This is my first Pull Request for tgstation. I would like to know how to
add Test for this change.

Make the Input more fun to Use by letting the player search in a reagent
list. Helps for typing complicated chemical names.

* Make chem dispenser reagent search better

Co-authored-by: Gorock <daniel-morady@web.de>
2023-01-01 09:13:45 -08:00
SkyratBot
de9a68f140 [MIRROR] Makes meth actually blue because Goofball is useless and won't do it [MDB IGNORE] (#18423)
* Makes meth actually blue because Goofball is useless and won't do it (#72253)

## About The Pull Request

actually finishes the shitpost
https://github.com/tgstation/tgstation/pull/71926

Meth becomes bluer depending on purity.
100% purity meth is rgb(135, 200, 250)
50% purity (lowest meth can EVER go) meth is rgb(250, 250, 250)

## Why It's Good For The Game

[chemist.webm](https://user-images.githubusercontent.com/82850673/209492369-bd89d780-83d9-41c9-ba53-32ad5416cdab.webm)

## Changelog

🆑
add: Meth becomes bluer the higher the purity
/🆑

* Makes meth actually blue because Goofball is useless and won't do it

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
2022-12-31 08:18:15 -08:00
SkyratBot
e0417073de [MIRROR] Botany fix and clean up [MDB IGNORE] (#18394)
* Botany fix and clean up (#72234)

## About The Pull Request

On local server I found out that hydroponic trays had weird behaviours.
Forexample:
If you use radium on trays, the subtype of radium which is uranium would
also get in effect meaning:
You add radium to the tray and get radium AND uranium effect on it.
Radium wasnt the only reagent others would show the same effect.
So I fixed them

I also cleaned up some code bits, there were some inconsistency with the
on_hydroponics_apply proc, I made them all consistent. There was also
for some reason a duplicate on_hydroponics_apply proc for blood reagent
one of them was unfinshed

## Why It's Good For The Game

Botany will behave correctly and the code is more cleaned up

## Changelog

🆑
fix: using chemicals on botany wont have unrelated side effects
/🆑

* Botany fix and clean up

Co-authored-by: Salex08 <33989683+Salex08@users.noreply.github.com>
2022-12-28 23:18:47 -08:00
SkyratBot
494935c2c0 [MIRROR] Fixes some bad AddElements, Fixes incompatible element runtime error text [MDB IGNORE] (#18355)
* Fixes some bad AddElements, Fixes incompatible element runtime error text (#72188)

## About The Pull Request

- `/datum/element/squish` cannot be applied to non-carbons, and the
falling hazard element works on all livings.
- It seems like squish could easily be changed to apply to all livings,
but out of scope.
- `/datum/element/fried_item` and `/datum/element/griled_item` weren't
being applied to the new item correctly
   - This one's my bad
- Changes "Incompatible element" `CRASH` to print the element type
rather than the mob's name mistakenly
- I think this was intended, but always used the wrong arguments, and no
one noticed?

## Why It's Good For The Game

Less runtimes, features work as expected, and a more clearer runtime for
element errors

## Changelog

🆑 Melbert
fix: Silver foods correctly spawn things grilled and fried
/🆑

* Fixes some bad AddElements, Fixes incompatible element runtime error text

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-12-28 07:44:36 -08:00
SkyratBot
366b3a96e2 [MIRROR] Fixes Tinacusiate being impossible to make [MDB IGNORE] (#18309)
* Fixes Tinacusiate being impossible to make (#72171)

## About The Pull Request
Since failchems were removed, tinacusiate has been impossible to make.
While it's also the inverse of inacusiate, the values that determine
chem purity that inacusiate has makes it practically impossible to push
the purity much below the low 40s, let alone below 30% to make
tinacusiate. This changes those values slightly so it's possible to make
when purposefully doing so, but hard to get on accident.

## Why It's Good For The Game
Makes a chem that's basically a goof actually possible to synthesise.

## Changelog

🆑
fix: Tinacusiate is now possible to make again.
/🆑

Co-authored-by: Unit2E <ccupbestcup@ protonmail.com>

* Fixes Tinacusiate being impossible to make

Co-authored-by: Unit2E <41054578+Unit2E@users.noreply.github.com>
Co-authored-by: Unit2E <ccupbestcup@ protonmail.com>
2022-12-24 10:05:18 -08:00
SkyratBot
cf1416ed79 [MIRROR] Fix: Robotic Damage / Reagents Refactor [MDB IGNORE] (#18132)
* Fix: Robotic Damage / Reagents Refactor (#71937)

This PR is a continuing refactor of and fixes bugs introduced by my
prior PR #71864

![when-you-finish-fixing-something-and-it-no-longer-works](https://cdn.discordapp.com/attachments/752427120365404172/1052037482771906640/Attachment.jpg)

Due to many functions in reagents having been implemented on top of
prior buggy code, their new behaviors are not as expected in-game, and
as a result reagents damage/heal robotic/cybernetic bodyparts/organs
when not appropriate; bugs like healing robotic arms with Libital is
currently possible.

To fix the errant behaviors in the newly debugged code, I have added
three variables to `datum/reagent` which are used throughout reagent
code, mainly inside of `on_mob_life` etc:

- `affected_bodytype = BODYTYPE_ORGANIC` - Used if the reagent
damages/heals bodyparts (Brute/Fire) of an affected mob.
- `affected_biotype = MOB_ORGANIC` - Used if the reagent damages/heals
generic damage (Toxin/Oxygen) of an affected mob.
- `affected_organtype = ORGAN_ORGANIC` - Used if the reagent
damages/heals organ damage of an affected mob.

The diff is large, and I have refactored the readability/maintainability
around the sections of code I was modifying. At one point I chose to
perform a quality pass on reagents because I found it quite hard to
maintain reagents code in its current state. This PR also replaces many
single-letter variables with more descriptive and readable variable
names. I also found and fixed a stray tab which was located in the
flavortext of `proc/item_heal_robotic`

Due to an old bug being fixed recently by PR #71864 a lot of
healing/damaging reagents now have an effect on robotic bodyparts. This
PR corrects the issue and changes reagents to explicitly define the body
type, bio type, and organ type which they can affect with
helaing/damage. This PR replaces a lot of single-letter variable names
with more descriptive names. I also fixed a small typo in
`item_heal_robotic` which was inserting an extra tab.

🆑
fix: Fixed a stray-tab typo in "item_heal_robotic"
fix: Fixed reagents and other effects which were inappropriately
affecting robotic limbs.
code: Refactored all of reagents code to be more readable and
maintainable.
/🆑

Co-authored-by: Time-Green <timkoster1@hotmail.com>

* Modular!

* More Modular!

Co-authored-by: Dani Glore <fantasticdragons@gmail.com>
Co-authored-by: Time-Green <timkoster1@hotmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
2022-12-19 22:04:01 +13:00
SkyratBot
15faaa54f5 [MIRROR] Rewrites how action buttons icons are generated, makes them layer nicer. Allows observers to see a mob's action buttons. [MDB IGNORE] (#17907)
* Rewrites how action buttons icons are generated, makes them layer nicer. Allows observers to see a mob's action buttons.

* conflicts

* Modular!

* update modular

* icon icon icon icon icon

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
2022-12-16 16:01:41 +00:00
SkyratBot
da0a127243 [MIRROR] Delimbs Stamina [MDB IGNORE] (#17981)
* Delimbs Stamina

* SR skews

* out of band upstream hotfix

Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
2022-12-15 17:50:49 -05:00
SkyratBot
a388d294a6 [MIRROR] Saycode refactor, unit tests, and fixes [MDB IGNORE] (#18032)
* Saycode refactor, unit tests, and fixes

* parrot

* SR tweaks

* say tests from pstream/71873

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-12-15 15:00:29 -05:00
SkyratBot
ab207b5dc7 [MIRROR] Makes the shadowperson legion corpse pill have enough mutation toxin to turn you [MDB IGNORE] (#18150)
* Makes the shadowperson legion corpse pill have enough mutation toxin to turn you (#71945)

## About The Pull Request
title
## Why It's Good For The Game
the corpse is a rare enough, getting 2 to drop for its intended effect
is basically impossible odds on lavaland
## Changelog
🆑
fix: the pill dropped by the shadowperson legion corpse now has enough
mutation toxin to work
/🆑

* Makes the shadowperson legion corpse pill have enough mutation toxin to turn you

Co-authored-by: 1393F <59183821+1393F@users.noreply.github.com>
2022-12-14 22:43:25 -08:00
SkyratBot
7b658b3c0d [MIRROR] Drinking singulo ignores supermatter hallucinations and pulls nearby objects [MDB IGNORE] (#18157)
* Drinking singulo ignores supermatter hallucinations and pulls nearby objects (#71927)

## About The Pull Request
Drinking a singulo will now:

- Give immunity to supermatter hallucinations
- Pulls objects to you based on the total volume in your system (20u =
1x1, 45u = 2x2, 80u = 3x3)
- Makes a burp and supermatter rays/sound when objects are pulled

The new ingredient is:

- Vokda 5u
- Wine 5u
- Liquid Dark Matter 1u (replaces Radium)

## Why It's Good For The Game
More cool effects for drinks. Singularity is all about gravity and the
drink should have a theme around that.

![dreamseeker_2q21YXS698](https://user-images.githubusercontent.com/5195984/207297517-90d26395-dd30-4106-bdd4-b30b1ba3e20b.gif)

## Changelog
🆑
add: Drinking singulo will now ignore supermatter hallucinations and
pull objects to you
balance: Change singulo drink recipe to require liquid dark matter
instead of radium.
/🆑

* Drinking singulo ignores supermatter hallucinations and pulls nearby objects

Co-authored-by: Tim <timothymtorres@gmail.com>
2022-12-14 22:36:10 -08:00
SkyratBot
565af6876b [MIRROR] Makes dog a basic mob [MDB IGNORE] [MDB IGNORE] (#17930)
* Makes dog a basic mob [MDB IGNORE]

* conflict

* map updatepaths

* minor banana spider improvement

* unnecessary SR edit, minor path stuff

* chadian, borgi

* tram conflict

* fixes after testing

Co-authored-by: Tastyfish <crazychris32@gmail.com>
2022-12-12 16:45:23 -05:00
SkyratBot
62b65a72de [MIRROR] Natural booze [MDB IGNORE] (#18094)
* Natural booze (#71842)

## About The Pull Request

Makes fermented booze take quality and power from the endurance and
lifespan stats of the fruit.
These are the most neglected plant stats, and usually plants that have
these high by default, do not have much nutriments.

This change makes fermented drinks a bit more desirable because your
effort is reflected in their stats. And you get better mood buff by
making them higher.

Fruit wine and other reagents get a "Natural" prefix when made through
fermentation.

![image](https://user-images.githubusercontent.com/3625094/206508903-c3ff85d2-c904-4a12-ae23-422604d87edf.png)

I consider turning it into a more general solution so that dispensed
drinks will also have purity and if the barman wants to aim for an
absolute quality cocktail, he may want to cooperate with botany like
chef does.

## Why It's Good For The Game

Fermented drinks are now a bit special compared to the free booze
dispenser variants.

## Changelog

🆑
add: Fermented drinks give mood buffs according to the stats of
fermented fruit
/🆑

* Natural booze

Co-authored-by: Andrew <mt.forspam@gmail.com>
2022-12-11 16:54:30 +00:00
SkyratBot
cc9fc3bd4a [MIRROR] Makes palladium synthate catalyst easier to create [MDB IGNORE] (#18004)
* Makes palladium synthate catalyst easier to create (#71797)

## About The Pull Request

As it stands, Palladium synthate catalyst is extremely hard to make
efficiently. The minimum temperature required for this reagent is set to
320K, but the issue is that Plasma, one of its ingredients, turns into
gas around 323-324K. Not only that, but the optimal temperature is set
to 600K, meaning even when its being made, it goes at a painfully slow
rate. As a result, there is an extremely slim temperature margin in
which this can be made without accidentally making plasma gas.

This PR serves to fix that issue by lowering the minimal temperature
threshold to 200K, and lowering the optimal temperature to 500K. While
you still have to pay attention while making it, at least the margin for
error is improved.

## Why It's Good For The Game

By making Palladium synthate catalyst easier to make, it expands more
options for chemists to utilize this reagent, such as in plumbing loops
or individual reactions.

## Changelog
🆑
balance: Tweaks the minimal temperature threshold and optimal
temperature for Palladium synthate catalyst.
/🆑

* Makes palladium synthate catalyst easier to create

Co-authored-by: MGOOOOOO <97645027+MGOOOOOO@users.noreply.github.com>
2022-12-09 03:42:15 +00:00
SkyratBot
cf67304574 [MIRROR] Refactors Pirates into Pirate Gangs, Adds the Psyker-gang as new pirates [MDB IGNORE] (#17920)
* Refactors Pirates into Pirate Gangs, Adds the Psyker-gang as new pirates

* [PR to PR] NRI raider de-conflicting (#17921)

* sosig

Update revolver.dm

* Update nri_raiders.dm

* Apply suggestions from code review

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>

* Update nri_raiders.dm

* uhuh

* Update nri_raiders.dm

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Stalkeros2 <42087567+Stalkeros2@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2022-12-08 09:43:43 -08:00
SkyratBot
5fcebd8f18 [MIRROR] Biomass generation fixed (watermelons gave 4 biomass instead of 24) [MDB IGNORE] (#17986)
* Biomass generation fixed (watermelons gave 4 biomass instead of 24) (#71824)

## About The Pull Request

In the previous attempt to buff biogenerator in
https://github.com/tgstation/tgstation/pull/71563 it started using
`get_multiple_reagent_amounts()` proc which returned only the volume of
the first found reagent.

100 potency watermelons have 4 vitamins and 20 nutriments, so this proc
found 4 vitamins and returned only those.

Essentially, all this time biogen have been giving biomass for vitamins
only, and for nutrments when the plant didn't have vitamins.

## Why It's Good For The Game

They have been suffering this whole time. And cursing me for nerfing
biomass to abyss.

## Changelog

🆑
fix: biogenerator converts all plant nutriments into biomass, not just
the first found one.
/🆑

* Biomass generation fixed (watermelons gave 4 biomass instead of 24)

Co-authored-by: Andrew <mt.forspam@gmail.com>
2022-12-07 23:05:49 -05:00
SkyratBot
b0f5c3901e [MIRROR] Removes weird saline drip code [MDB IGNORE] (#17917)
* Removes weird saline drip code (#71543)

Ran into this while reviewing #71217

Saline drips had an invisible cup filled with 5000u of saline and
overwrote a bunch of procs to make it unremovable, instead of just using
the internal storage????? It was so weird people started using istypes
because the saline drip behaviour was just too fucking weird

No changelog, just code clean-up

* Removes weird saline drip code

Co-authored-by: Time-Green <timkoster1@hotmail.com>
2022-12-06 22:27:14 +00:00
SkyratBot
f76337d9ac [MIRROR] Ephedrine no longer punishes you for making it pure [MDB IGNORE] (#17948)
* Ephedrine no longer punishes you for making it pure (#71631)

## About The Pull Request

According to the wiki, ephedrine's side effects are reduced by higher
purity.

Well, I was looking into the code to see how that worked and while I was
doing so I saw that the overdose side effects are instead increased by
higher purity. This is, as far as I know, the only case of purity doing
something negative. Purity is by design meant to make the effects of a
reagent better for it's intended purpose, not worse.

Ephedrine no longer multiplies the chances for overdose effects by it's
purity (1.33x at 100%) and instead has more severe side effects at low
purity and less severe ones at high purity. (0.66x at 100%)
## Why It's Good For The Game

Well, it makes the wiki state correct information while simultaneously
making a reagent adhere by the standards of how purity works. I don't
see any reason as for why this wouldn't be good for the game.
## Changelog
🆑
fix: Ephedrine now rewards you instead of punishing you for making it
pure.
/🆑

* Ephedrine no longer punishes you for making it pure

Co-authored-by: RikuTheKiller <88713943+RikuTheKiller@users.noreply.github.com>
2022-12-06 22:24:32 +00:00
SkyratBot
ab85bf9432 [MIRROR] Change liver to not purge toxins rapidly [MDB IGNORE] (#17928)
* Change liver to not purge toxins rapidly (#70764)

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

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

Fixes #70762

The liver was purging toxins rapidly and it didn't matter how much
poison you would inject a food / drink / cigarette with, since it would
get purged before it could buildup to toxic levels.

My changes fix this by doing the following:

- Skips toxin `on_mob_life` effects and toxin damage if it is lower than
the 3u threshold
- Metabolizes the toxin at normal rate instead of purging when under the
3u threshold (this allows toxins to buildup while
eating/drinking/smoking)
- New formula to calculate liver damage `liver_damage +=
((toxin_units/15) * toxin.toxpwr) / liver_resistance`
- Liver is damaged based on the units of toxin present and their
lethality. Liver damage **IS NOT** skipped if toxin is lower than the 3u
threshold
- Change alien liver toxin resistance value to be -33% (from -40%) and
cybernetic liver toxin resistance value to be +50% (from +20%)

---

<details>
<summary>Liver damage per second from toxins</summary>

There is a hard cap of 2 dmg per second that all the combined damage
can't go over. This should give someone suffering max liver damage about
a minute before it gets destroyed.

| Toxin | Power | 1u | 3u | 5u | 15u |
| ------------- | ------------- | ------------- | ------------- |
------------- | ------------- |
| Coffepowder | 0.5 |  0.03 dmg | 0.1 dmg | 0.16 dmg | 0.5 dmg |
| Plantbgone  | 1 |  0.06 dmg | 0.2 dmg | 0.33 dmg | 1 dmg |
| Amatoxin | 2.5 |  0.15 dmg | 0.5 dmg | 0.825 dmg | 2 dmg |

</details>

## Why It's Good For The Game

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

Fixes broken toxin system for liver.

## 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 it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

🆑
balance: Change liver to not purge toxins instantly for low amounts.
Instead the toxin effect gets skipped while it is metabolized normally,
however it still does liver damage. This fixes bite increments for food,
cigarettes, and drinks where the toxins would purge without building up
to harmful levels.
balance: Change the formula for how toxins effect livers. Livers will be
damaged based on the units of toxin present and their lethality.
balance: Change alien liver toxin resistance value to be -33% and
cybernetic liver toxin resistance value to be +50%
/🆑

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

* Change liver to not purge toxins rapidly

* Update skrell.dm

* Update code/modules/surgery/organs/liver.dm

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-12-06 20:37:58 +00:00
SkyratBot
de000c422a [MIRROR] IV drip injects only to injectable things [MDB IGNORE] (#17922)
* IV drip injects only to injectable things (#71709)

## About The Pull Request

Previous PR https://github.com/tgstation/tgstation/pull/71217 made IV
drip work with any containers which, after a while led to some undesired
cases.

People could add reagents to medipens, making them free hypospray.
Refilling extinguishers with things other than water. And just
sabotaging pills, patches, etc.

Now IV drips inject only into injectable containers.

I added INJECTABLE flag to a few other things that were not originally
injectable - hydroponic trays, smoke machine, chem separator. May later
whitelist some other items that may be injectable by logic, but don't
lead to undesired accidents.

![image](https://user-images.githubusercontent.com/3625094/205488795-c2482b44-6296-4514-81de-36a69b0dffad.png)

## Why It's Good For The Game

Free sleepy pens are not OK.

## Changelog

🆑
fix: IV drip now injects only into injectable things
/🆑

* IV drip injects only to injectable things

Co-authored-by: Andrew <mt.forspam@gmail.com>
2022-12-05 13:17:04 +00:00
SkyratBot
5fd48ab40a [MIRROR] Brave bull now makes you brave [MDB IGNORE] (#17900)
* Brave bull now makes you brave (#71652)

## About The Pull Request
This gives people `TRAIT_FEARLESS` when they have brave bull in their
system. It will allow people to overcome their phobias and give them
liquid courage.

## Why It's Good For The Game
Brave bull is LITERAL!

## Changelog
🆑
add: Add brave bull now makes you fearless and you can ignore phobias
while it's in your system.
/🆑

* Brave bull now makes you brave

Co-authored-by: Tim <timothymtorres@gmail.com>
2022-12-04 07:26:34 -08:00
SkyratBot
fcdf5d850c [MIRROR] Psykers [MDB IGNORE] (#17825)
* Psykers (#71566)

## About The Pull Request
Finishes #66471
At burden level nine (or through a deadly genetic breakdown), you now
turn into a psyker.
This splits your skull in half and transforms it into a weird fleshy
mass. You become blind, but your skull is perfectly suited for sending
out psychic waves. You get potent psy abilities.
First one is brainwave echolocation, inspired by Gehennites (but not as
laggy).
Secondly, you get the ability of Psychic Walls, which act similarly to
wizard ones, but last shorter, and cause projectiles to ricochet off
them.
Thirdly, you get a projectile boost ability, this temporarily lets you
fire guns twice as fast and gives them homing to the target you clicked.
Lastly, you get the ability of psychic projection. This terrifies the
victim, fucking their screen up and causing them to rapidfire any gun
they have in their general direction (they'll probably miss you)
With most of the abilities being based around guns, a burden level nine
chaplain now gets a new rite, Transmogrify. This lets them turn their
null rod into a 5-shot 18 damage .77 revolver. The revolver possesses a
weaker version of antimagic (protects against mind and unholy spells,
but not wizard/cult ones). It is reloaded by a prayer action (can also
only be performed by a max burdened person).
General Video: https://streamable.com/w3kkrk
Psychic Projection Video: https://streamable.com/4ibu7o

![image](https://user-images.githubusercontent.com/23585223/204150279-a6cf8e2f-c678-476e-b72c-6088cd8b684b.png)

## Why It's Good For The Game
Rewards the burdened chaplain with some pretty cool stuff for going
through hell like losing half his limbs, cause the current psychics dont
cut it as much as probably necessary, adds echolocation which can be
used for neat stuff in the future (bat organs for DNA infuser for
example).

## Changelog
🆑 Fikou, sprites from Halcyon, some old code from Basilman and
Armhulen.
refactor: Honorbound and Burdened mutations are brain traumas now.
add: Psykers. Become a psyker through the path of the burdened, or a
genetic breakdown.
add: Echolocation Component.
/🆑

Co-authored-by: tralezab <spamqetuo2@ gmail.com>
Co-authored-by: tralezab <40974010+tralezab@ users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>

* Psykers

* commented out stuff is now in

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: tralezab <spamqetuo2@ gmail.com>
Co-authored-by: tralezab <40974010+tralezab@ users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
2022-12-03 19:45:18 -08:00
Tastyfish
6aa4662e1e [MODULAR] Fixes mops double acting when cleaning up liquids (#17872)
* Fixes mops double acting when cleaning up liquids

* suggestions

* better doc comment
2022-12-03 14:45:30 -08:00
SkyratBot
ef426cd709 [MIRROR] Chemical separator [MDB IGNORE] (#17888)
* Chemical separator (#71403)

## About The Pull Request

Adds a chemical separator structure, which is a worse version of
chem/condimaster that can be crafter with simple materials.

![image](https://user-images.githubusercontent.com/3625094/202938033-1502e4a6-ecf9-4fc7-9bdd-d96a20ec0f21.png)

You can fill it with reagents and separate one (in alphabetical order by
name) by heating them up to the boiling temperature and condensing in
the output beaker.

https://user-images.githubusercontent.com/3625094/202938195-187ab5d6-8bf8-4b6d-a1ff-64782bfa16ac.mp4

Warning, open flame. It can set plasma on fire, can be lit with a match,
or a flame thrower, and extinguished by regular means.

## Why It's Good For The Game

Chem separation is needed for many things, yet easiest way to do it is
to raid the kitchen, risking to experience some CQC.

## Changelog

🆑
add: Craftable chemical separator
/🆑

* Chemical separator

Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2022-12-03 14:29:19 -08:00
SkyratBot
810fef5fde [MIRROR] This kills the deep fried foods holder. Refactors deep frying to just make the thing edible but still functional. [MDB IGNORE] (#17848)
* This kills the deep fried foods holder. Refactors deep frying to just make the thing edible but still functional. (#71551)

## About The Pull Request

Refactors deepfrying, removing the gross Deep Fried Foods Holder Object
and replacing it with the edible component.

Now, deep frying a food will simply make the item edible directly. This
means it's still functional and doesn't become a dead item.

This follows the same method that grilling uses when applying its
effects. Tweaks grilling a bit so they line up better. Also, silver
foods can make grilled items.

![image](https://user-images.githubusercontent.com/51863163/204105022-ee66889b-f843-4dc2-b0dc-5f1eb5ba19c3.png)

I swear this is unrelated to the other 2 fried foods related PRs. I
started this a few weeks ago.

## Why It's Good For The Game

Tangibly better code (doesn't have to copy a million vars! Less
abusable!) at the price of removing a soulful piece of code. Also means
that deep frying an item doesn't irreversibly make it unusable / dead.
This is sad, but... damn the holder object sucks.

Unfortunate side effect is that anything that overrides `attack` to not
send signal will *not* be edible when deepfried. Maybe this encourages
better signal use?

Either that or fried foods can override `pre_attack` to hook directly
into eating. I can do that as well.

## Changelog

🆑 Melbert
refactor: Refactored deep fried foods. Deep fried foods are still
""usable"" as their normal item, but are just edible.
qol: Silver Slime stuff can spawn grilled as well as fried.
/🆑

* This kills the deep fried foods holder. Refactors deep frying to just make the thing edible but still functional.

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-12-01 01:11:20 +00:00
SkyratBot
cc18e66d52 [MIRROR] fixes full mugs appearing empty in the map editor [MDB IGNORE] (#17838)
* fixes full mugs appearing empty in the map editor (#71599)

#71530 tried to fix them in a bit of a roundabout way of overriding the
parent's `update_icon_state()` instead of using `base_icon_state` from
the start. This fixes them properly.

🆑 ShizCalev
fix: Full mugs no longer appear empty in the map editor.
/🆑

* fixes full mugs appearing empty in the map editor

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2022-12-01 01:03:43 +00:00
SkyratBot
852a5af6f7 [MIRROR] Saves 0.1 seconds of init by not reacting reagents if something is created during MC init [MDB IGNORE] (#17836) 2022-11-29 19:07:47 -08:00
SkyratBot
a70a6a8055 [MIRROR] Save 0.6-0.7s of init time by splitting registering lists of signals into its own proc, and optimizing QDELETED [MDB IGNORE] (#17670)
* Save 0.6-0.7s of init time by splitting registering lists of signals into its own proc, and optimizing QDELETED

* modular RegisterSignals

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-11-28 14:51:08 -05:00
SkyratBot
3f5f271988 [MIRROR] Strange Reagent correctly revives station pets, (and humans), correctly again. [MDB IGNORE] (#17723)
* Strange Reagent correctly revives station pets, (and humans), correctly again.

* Update code/modules/mob/living/carbon/carbon_update_icons.dm

* centaur shitcode

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-11-28 12:24:54 -05:00
SkyratBot
a101d66658 [MIRROR] Allows Fully Heal to be passed a series of flags, fixes Adminordrazine being horrible [MDB IGNORE] (#17535)
* Allows Fully Heal to be passed a series of flags, fixes Adminordrazine being horrible

* Apply suggestions from code review

* few more flag bits

* our shit

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
2022-11-28 00:09:31 +00:00
SkyratBot
150e3450d1 [MIRROR] Hardcrit immunity grants hearing while under the hardcrit threshold and nooartrium doesn't blind you anymore [MDB IGNORE] (#17783)
* Hardcrit immunity grants hearing while under the hardcrit threshold and nooartrium doesn't blind you anymore (#71525)

## About The Pull Request

Adds TRAIT_NOCRITOVERLAY to nooartrium which stops the normal critical
overlay from appearing. Damage type overlays still appear as usual.

Makes TRAIT_NOHARDCRIT give you immunity to the deafness caused by being
in hardcrit. (Which also leads into being able to hear while using
nooartrium.)

Makes nooartrium give you immunity to oxyloss knockouts. (The reason
should be obvious.)
## Why It's Good For The Game

Bugfix good.
## Changelog
🆑
fix: Nooartrium doesn't blind you anymore and keeps you conscious
regardless of oxyloss.
fix: Being immune to hardcrit makes you able to hear while you should be
in hardcrit.
/🆑

* Hardcrit immunity grants hearing while under the hardcrit threshold and nooartrium doesn't blind you anymore

Co-authored-by: RikuTheKiller <88713943+RikuTheKiller@users.noreply.github.com>
2022-11-27 18:49:39 -05:00
SkyratBot
04102bcdd7 [MIRROR] Nukies Update 6: Interdyne is here for you! Medical Supplies and Atropine! [MDB IGNORE] (#17785)
* Nukies Update 6: Interdyne is here for you! Medical Supplies and Atropine!

* Update medkit.dm

* our uses

* adds it to opfor, too

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
2022-11-27 15:17:31 -08:00
SkyratBot
257feb1be7 [MIRROR] More horrible 515 proc compatibility. [MDB IGNORE] (#17671)
* More horrible 515 proc compatibility.

* Feex

* Hopefully we're done now

Co-authored-by: AnturK <AnturK@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2022-11-27 14:46:36 -08:00
SkyratBot
10f91f3094 [MIRROR] mugs now default to spawning empty [MDB IGNORE] (#17771)
* mugs now default to spawning empty (#71530)

## About The Pull Request

![image](https://user-images.githubusercontent.com/116288367/204053022-1344cfce-8b55-4907-83b1-30e4eeab137d.png)

## Why It's Good For The Game

the sprites wrong!!!!!!!!!!!!!! also the code comment says that the
parent /glass_mug exists to have an empty sprite but the sprite doesn't
start empty!

## Changelog

🆑
fix: roundstart empty mugs now appear to be empty
fix: nanotrasen mug no longer becomes normal mug after you drink from it
/🆑

* mugs now default to spawning empty

Co-authored-by: Sol N <116288367+flowercuco@users.noreply.github.com>
2022-11-27 07:57:26 -08:00
SkyratBot
f31ab6f6c0 [MIRROR] Surgery code improvements [MDB IGNORE] (#17614)
* Surgery code improvements

* missed flag

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-11-25 02:00:09 +00:00
Zonespace
8db803e724 [MIRROR] Changes check_grep to use ripgrep and reformats/cleans up the check_grep file (#17631)
Changes check_grep to use ripgrep and reformats/cleans up the check_grep file (#71324)

## About The Pull Request

I fucked up the check_grep entry for docking ports.
default grep doesn't support newlines and so I need to use `pcregrep -M`

## Why It's Good For The Game

linters working good
## Changelog

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
2022-11-23 13:08:20 -05:00
SkyratBot
83e68c28ec [MIRROR] Fixes liver failure metabolization, TRAIT_STABLELIVER and herignis. [MDB IGNORE] (#17674)
* Fixes liver failure metabolization, TRAIT_STABLELIVER and herignis. (#71367)

## About The Pull Request

fixes #71012

This PR makes it so that a failing liver can still process reagents that
don't need you to have a liver. You can now also overdose on liverless
reagents while not having a liver. (Who coded this? I just want to
talk.)

TRAIT_STABLELIVER and TRAIT_NOMETABOLISM work while you have a failing
liver.

TRAIT_STABLELIVER prevents liver failure as it should.

It also fixes herignis not working and changes it's effects. (More
potent.)

## Why It's Good For The Game

Major bugfix good.

## Changelog
🆑
fix: Metabolization works for reagents that are meant to metabolize
while your liver is failing.
fix: Higadrite, cordiolis hepatico and herignis work properly.
balance: Herignis is more potent and has an overdose threshold of 25u.
/🆑

* Fixes liver failure metabolization, TRAIT_STABLELIVER and herignis.

Co-authored-by: RikuTheKiller <88713943+RikuTheKiller@users.noreply.github.com>
2022-11-22 15:13:37 -08:00