Commit Graph

1385 Commits

Author SHA1 Message Date
SkyratBot
b291faa368 [MIRROR] Replaces /obj:: -> parent_type:: (#26284)
* Replaces `/obj::` -> `parent_type::` (#81146)

## About The Pull Request

This just seemed like a minor error with the new syntax that popped up:

The intent of these seem to be "take our obj flags and add
`NO_DECONSTRUCTION` to it", which was perfectly serviceable in a
majority of places, as the parent type had the same obj flags as `/obj`.
But in a small handfull of places (such as any table subtypes) this was
not the case, and it caused some objects to have missing flags that they
were otherwise intended(?) to inherit.

So I replaced `/obj::` with `parent_type::` meaning rather than using
the base obj flags and then adding `NO_DECONSTRUCTION`, they use their
parent type's obj flags and then add `NO_DECONSTRUCTION`.

## Changelog

🆑 Melbert
fix: You can build on some niche tables again, such as the Wabbajack
Altar.
/🆑

* Replaces `/obj::` -> `parent_type::`

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-01-29 19:51:55 +01:00
SkyratBot
9a3fb5c5c1 [MIRROR] FOV is Dead (Long Live FOV) [MDB IGNORE] (#25600)
* FOV is Dead (Long Live FOV)

* Update _megafauna.dm

* Update _vehicle.dm

* FOV Hotfix: Actually offsets gameplane render relays

* removes redundant visual_shadow

* removes GAME_PLANE_UPPER references

* Update mob_movement.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-23 17:47:07 +00:00
SkyratBot
7c0d50e65d [MIRROR] Alien nests and some other stuf can be hit again. [MDB IGNORE] (#25736)
* Alien nests and some other stuf can be hit again. (#80418)

## About The Pull Request
Another small issue fixed. Thanks Melbert for telling us what's wrong
with it.

EDIT: other objects were rendered unhittable by that flags refactor PR.

## Why It's Good For The Game
Fixes #80311. I made the xmas tree indestructible because the comment to
the `NO_DECONSTRUCTION` flag didn't make a load of sense since that
doesn't stop it from getting destroyed anyway.

## Changelog

🆑 MrMelbert, Ghommie
fix: Alien nests, and some other stuff, can be physically attacked
again.
balance: x-mas trees (the ones with presents), are indestructibles.
Truly protected by a yuletide spirit.
/🆑

* Alien nests and some other stuf can be hit again.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-12-19 18:35:19 -05:00
SkyratBot
3658c80e57 [MIRROR] Explodes device.dmi [MDB IGNORE] (#25523)
* Explodes device.dmi

* Demodularize these

* Update traitordevices.dm

* Update traitordevices.dm

* Modularizes hypnotic flash

* Modular dmi repath

* Modular dmi repath

---------

Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-12-09 09:48:43 -05:00
SkyratBot
b15b16976a [MIRROR] Attack chain refactoring: Broadening tool_act into item_interact, moving some item interactions to... atom/item_interact / item/interact_with_atom [MDB IGNORE] (#25516)
* Attack chain refactoring: Broadening `tool_act` into `item_interact`, moving some item interactions to... `atom/item_interact` / `item/interact_with_atom`

* Patches up merge skew (#80197)

## About The Pull Request

Yeah #79968 (1e76fd70b4) was not
compatible with master but no one said anything on the PR so i got
jebaited into merging it. The code should be up to the same standards
per the documentation I read (preventing thwacking the target in certain
situations while not returning anything in other situations)

master will definitely compile now though

* Patches up merge skew

* Merge conflicts

* Modular adjustments

* Removes this entirely duplicated proc...

* Update tool_override.dm

* Update weldingtool.dm

* Update tool_override.dm

* Update tool_override.dm

* Nope. Copy paste begone.

A skyrat edit is so much easier to deal with here

* Update brand_intelligence.dm

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-12-09 08:22:19 -05:00
SkyratBot
41ea46d5f2 [MIRROR] Scopes NODECONSTRUCT_1 from flags_1 to obj_flags [MDB IGNORE] (#25496)
* Scopes `NODECONSTRUCT_1` from `flags_1` to `obj_flags`

* Update bitfields.dm

* Modular

* Update rack.dm

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-12-08 23:24:46 -05:00
SkyratBot
454814e05b [MIRROR] Deletes unused hydroponics code [MDB IGNORE] (#25480)
* Deletes unused hydroponics code (#80156)

## About The Pull Request

`/obj/item/seeds/sample` was completely unused, ever since it's
inception in #16082
(d513f52244)
as far as I can tell

(Me when "adds plant samples for future use" never makes use of them in
the future)

All this does is complicate hydro code so it dies.
Anything it is doing should be handled by genes probably

While I was here I made sure nothing in `can_add` will break and touched
up the code a tiny tiny bit. I kept it as `SHOULD_CALL_PARENT` even
though it doesn't make use of it at the moment because every trait
currently calls parent / respects return value, so sure, why not

## Changelog

Not necessary

* Deletes unused hydroponics code

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-12-07 03:35:56 +00:00
SkyratBot
4c01e3f805 [MIRROR] Demotes the "electrical conductivity" flag from flags_1 to obj_flags [MDB IGNORE] (#25381)
* Demotes the "electrical conductivity" flag from `flags_1` to `obj_flags` (#80033)

## About The Pull Request

Code to handle this flag only ever existed on the `/obj` sublevel, so
there's no need for it to be on the `/atom` level `flags_1`. There was
probably a point in time in which mobs or turfs conducted electricity
but there's zero code for it anymore so we truly just live in a society
now.
## Why It's Good For The Game

Frees up a slot on `flags_1` (which is really nice actually), proper
scoping of certain bitflag stuff, etc.
## Changelog
Not relevant to players.

I may have screwed something up, will be doing a few passes on this
myself to ensure all the search and replaces went alright but we should
be good™️

* Demotes the "electrical conductivity" flag from `flags_1` to `obj_flags`

* Modular

* Update misc.dm

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-12-03 07:58:26 +00:00
SkyratBot
6c11df99a4 [MIRROR] Retools renamedByPlayer into TRAIT_WAS_RENAMED [MDB IGNORE] (#25355)
* Retools `renamedByPlayer` into TRAIT_WAS_RENAMED (#80013)

## About The Pull Request

On the tin, this lived on the `/obj` level and polluted a lot of stuff
even though only a very small fraction of stuff actually leveraged it.
Let's make it a trait for that boolean-like behavior so I can be happier
scrolling through view-variables with less non-necessary things.

I wish we could tie it to unique sources but that whole drinking glass
thing makes me suspicious of weirder things so I think the way we do it
(source being a `REF()` to the thing itself) is probably fine enough for
the time being.
## Why It's Good For The Game

Same behavior one can expect but just a bit cleaner on the backend.
## Changelog
Nothing that particularly concerns players.

* Retools `renamedByPlayer` into TRAIT_WAS_RENAMED

* Update Blueshift.dmm

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-12-03 01:07:02 -05:00
SkyratBot
c34cd6fd3d [MIRROR] More code compression for reagent holder [MDB IGNORE] (#25121)
* More code compression for reagent holder (#79796)

## About The Pull Request
Part 2 of #79686 where we trim down the size of `holder.dm` even further
and in the process give some procs more advanced features as they get
merged with their counterparts.

**1. Removes & merges `get_multiple_reagent_amounts()` proc with
`get_reagent_amount()`**
The proc `get_multiple_reagent_amounts()` was only used by bio generator
and 1 other item with its only use being finding the sum of all reagents
present in the list returned by
`typesof(datum/reagent/consumable/nutrient)`. Currently the approach is
very inefficient because.
- `typesof()` is an expensive call which returns a long list of reagents
- `get_multiple_reagent_amounts()` would then use 2 nested for loops.
One to loop over every reagent in this holder & another inner for loop
to loop over every reagent returned by `typesof()` operator so the time
complexity of this proc is overall multiplicative which in lamen terms
means "Bad"

We can replicate the same behaviour of `typesof()` by using the
`type2parent()` proc and 1 more direct type check to get the exact same
behaviour but with much faster results, therefore reducing overall code

**2. Removes & merges `get_reagent()` proc with `has_reagent()`**
The proc `has_reagent()` is way more advanced than `get_reagent()` with
arguments requesting for a specific amount, metabolization and now even
has a new argument i.e. `chemical flag`. `has_reagent()` has always
returned the reagent reference directly and not a simple TRUE/FALSE so
it is a perfect replacement for `get_reagent()`, therefore reducing
overall code

**3. Removes & merges `has_chemical_flag()` proc with `has_reagent()`**
The proc `has_reagent()` can now look for a specific reagent with a
specific chemical flag as well as mentioned above thus it can replace
`has_chemical_flag()` therefore reducing overall code

## Changelog
🆑
code: Removes & merges `get_multiple_reagent_amounts()` proc with
`get_reagent_amount()` inside reagent holder
code: Removes & merges `get_reagent()` proc with `has_reagent()` inside
reagent holder
code: Removes & merges `has_chemical_flag()` proc with `has_reagent()`
inside reagent holder
refactor: Reagent holder code has been further compressed. Report bugs
on github
/🆑

* More code compression for reagent holder

* Update hemophage_organs.dm

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-11-19 16:05:16 -05:00
SkyratBot
3a5088a2ef [MIRROR] Hydrotray consumes nutrients disregarding the mixture contents [MDB IGNORE] (#25101)
* Hydrotray consumes nutrients disregarding the mixture contents (#79794)

## About The Pull Request

Hydrotrays were using `remove_any` which led to weird behaviour when you
mix fertilizers.

It could randomly select which reagents to consume from the hydrotray,
and which reagents should stay unotuched.

With `remove_all`, the plant now simply consumes a unit of the mixture,
disregarding the contents.

## Why It's Good For The Game

This simple fix unlocks an entire new level of gameplay for botany, as
you can make mixtures that work consistently.

## Changelog

🆑
fix: Hydrotrays consume nutrients according to their proportion in the
mix, instead of randomly picking reagents to consume every cycle.
/🆑

* Hydrotray consumes nutrients disregarding the mixture contents

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
2023-11-19 00:37:29 -05:00
SkyratBot
020d2ad13e [MIRROR] Code compression for reagent holder. Lowers plumbing reaction chamber tick usage [MDB IGNORE] (#25050)
* Code compression for reagent holder. Lowers plumbing reaction chamber tick usage (#79686)

## About The Pull Request
More code improvements for reagent holder. As you can see it removes a
lot more code than it adds so code savings are significant. This does
not touch on any floating point arithmetic, all that is behind us, this
focuses on removing redundant procs and merging existing procs to
achieve the same functionality so if you do see any changes in reagent
related behaviour it's not intentional and should be reported as a bug
here.

The following code changes can be summarized into points.

**1. Removes procs `get_master_reagent_id()` &
`get_master_reagent_name()`**
Both of these procs have the exact same functionality as
`get_master_reagent()` with the only exception of returning a different
value. Instead we can just call `get_master_reagent()` directly and
infer the name & type of it ourselves rather than creating a wrapper
proc to do it for us, therefore reducing overall code

**2. Removes & Merges `remove_all_type()` proc into `remove_reagent()`**
The proc `remove_all_type()` is highly inefficient, it first uses a for
loop to look for the reagent to remove & then it again calls
`remove_reagent()` on the reagent once it has found it. We can just
embed this functionality directly into `remove_reagent()` by simply
adding an additional parameter `include_subtypes`. This way the
operation is faster, and we reduce the code to get the job done. Also
now `remove_reagent()` will return the total volume of reagents removed
rather that a simple TRUE/FALSE

**3. Removes & Merges `trans_id_to()` proc into `trans_to()`**
Both these procs have the same job of transferring either a single
reagent or all reagents. `trans_id_to()` is a scaled down version of
`trans_to()` because
- It does not have any `method` var. This means if you want to transfer
a single reagent to a mob/organ or any other object it does not have the
functionality to expose the target to that transferred reagent.
- It does not have a `multiplier` var to scale reagent volumes
- It does not have code to deal with organs or stop reactions i.e. it
does not have the `no_react` var.

We can overcome all these short comings by simply adding an extra var
`target_id` to specify what specific reagent to transfer therefore
attaining the same functionality while keeping the benefits of
`trans_to()` proc therefore reducing overall code

**4. Lowers plumbing reaction chamber tick usage for balancing ph.**
Rather than invoking a while loop to balance ph it's much easier for the
player to simply make the reaction chamber wait for e.g. add a reagent
that will never come. This will make the chamber wait therefore giving
the reaction chamber ample time to correctly balance the ph and then
remove that reagent from the list therefore getting correct ph levels.
No need to create code hacks when the player can do it themselves  so
the while loop has been removed

## Changelog
🆑
code: removed redundant procs `get_master_reagent_id()` &
`get_master_reagent_name()`
code: merged `remove_all_type()` proc with `remove_reagent()` now this
proc can perform both functions. `remove_reagent()` now returns the
total volume of reagents removed rather than a simple TRUE/FALSE.
code: merged `trans_id_to()` proc with `trans_to()` now this proc can
perform both functions
refactor: plumbing reaction chamber will now use only a single tick to
balance ph of a solution making it less efficient but more faster. Just
make the reaction chamber wait for longer periods of time to accurately
balance ph
refactor: reagent holder code has been condensed. Report any bugs on
GitHub
/🆑

* Code compression for reagent holder. Lowers plumbing reaction chamber tick usage

* Modular update

* Update alcohol_reagents.dm

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-11-16 18:27:20 -05:00
SkyratBot
c79e6f2e4d [MIRROR] Big enough carrots get a chance to be turned into full-sized carrot swords instead of shivs [MDB IGNORE] (#25044)
* Big enough carrots get a chance to be turned into full-sized carrot swords instead of shivs (#79718)

## About The Pull Request

A funny little interaction I came up with while sitting in a toilet.
Since high potency carrots can be quite big, you could definetly cut
more than a shiv out of them. A sword, for example. A bit of reward for
making such a high-potency carrot in the first place.

![image](https://github.com/tgstation/tgstation/assets/122572637/8076e714-0b74-4ac1-8ed2-66f39e42b0e2)

## Why It's Good For The Game

Comedic purpose, and who knows, maybe someone will be a gimmick
botany-knight based on these?

## Changelog

🆑
add: Adds a chance that, when sharpened, a sufficiently potent carrot
will turn into a sword instead of a shiv.
/🆑

---------

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

* Big enough carrots get a chance to be turned into full-sized carrot swords instead of shivs

---------

Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
Co-authored-by: carlarctg <53100513+carlarctg@ users.noreply.github.com>
2023-11-16 11:04:50 -05:00
SkyratBot
3719aff308 [MIRROR] Fix holodeck items from being juiced or grinded with a biogenerator or pestle and mortar [MDB IGNORE] (#24872)
* Fix holodeck items from being juiced or grinded with a biogenerator or pestle and mortar (#79397)

Hologram food from the holodeck could still be processed into reagents
via these methods. This has now been fixed.

* Fix holodeck items from being juiced or grinded with a biogenerator or pestle and mortar

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
2023-11-09 03:34:45 -05:00
SkyratBot
6f1238226c [MIRROR] Plonts takke2 [MDB IGNORE] (#24861)
* Plonts takke2 (#79484)

## About The Pull Request

Okay; Take two at this ~~because I totally didn't delete my sprites and
set myself back when all I had to do was fix a few merge issues and
instead decided to entangle myself in adding another plant.~~
This PR aims to add THREE new plants; Pepper-Corn, Saltcane and
Butterbeans.
Peppercorn can be ground for black pepper.
Saltcane can be ground for salt or dried into a seaweed sheet
replacement.
Butterbeans can be pressed into a small slice of butter, or ground for a
small amount of milk/cream and fermented for yoghurt.
I have also added fermentation of Soybeans to produce soysauce... since
that's literally how authentic soysauce is made.

## Why It's Good For The Game

I personally feel this will be good for the game as it means the kitchen
can rely on their botanists to produce higher quality ingredients and
don't have to harass other places or hemorraghe money to make good food
for the crew. Easier access to condiments allows for easier production
of a varied amount of food.

* Plonts takke2

---------

Co-authored-by: xXPawnStarrXx <53197594+xXPawnStarrXx@users.noreply.github.com>
2023-11-08 22:36:02 -05:00
SkyratBot
6240c48600 [MIRROR] You can fish out of hydroponics trays [MDB IGNORE] (#24811)
* You can fish out of hydroponics trays (#79443)

## About The Pull Request

Adds a fishing spot to hydroponics trays.

Chances

- 33% nothing
- 33% grass
- 20% random seed (discludes rarer seeds, such as gatfruit and most
mutations)
- 10% grass seeds
- 1% strange seed
- 1% axolotl
- 1% frog

Lightly inspired by something (I think) is possible on Goon, but
obviously entirely new code.

## Why It's Good For The Game

Mostly just for laughs, they're basins of water so surely you can get
something out of it.

## Changelog

🆑 Melbert
add: Fishers can now try their luck at fishing out of hydroponics
basins.
/🆑

* You can fish out of hydroponics trays

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-11-06 01:11:07 -05:00
SkyratBot
b5b7463a53 [MIRROR] New botany plant - Lanternfruit [MDB IGNORE] (#24659)
* New botany plant - Lanternfruit (#79204)

## About The Pull Request

So I noticed the code references an Ethereal plant called
"Lanternfruit," a sour pear-like fruit used as flavoring for a few foods
and drinks. However, this plant doesn't actually appear in the game,
this pr hopes to remedy this while also bringing some new hybrid
potential to the table for botany.

In essence, the plant contains sugar, liquid electricity, and sulfur;
making it the easiest way to obtain the latter two chems, allowing
botanists to experiment more with potential chemical recipes, and in
theme with the plant itself, make flash powder. The justification for
containing sulfur being that grapefruit gets its signature smell from a
sulfur compound.

The plant can also be fermented into voltaic wine, which has some
gimmick potential for particularly snobby Ethereals.

* New botany plant - Lanternfruit

---------

Co-authored-by: Toastgoats <63932673+Toastgoats@users.noreply.github.com>
2023-10-31 01:35:21 -04:00
SkyratBot
f0dba681b8 [MIRROR] Adds back in corn oil to fix Glycerol's recipe. [MDB IGNORE] (#24660)
* Adds back in corn oil to fix Glycerol's recipe. (#79285)

## About The Pull Request

fixes #78087

This PR adds back in corn oil and changes the vegetable oil reagent in
corn to become corn oil, and glycerol's recipe has been changed back to
using corn oil.

Corn also produces corn oil when grinded now, where it previously would
only produce cornmeal.

## Why It's Good For The Game

The foodening accidentally changed corn oil to vegetable oil when it was
actually a crafting ingredient for a chemical. This PR makes it still a
consumable oil so that there's the best of both worlds.

Having glycerol being able to be made by vegetable oil changed a rare
chemical into something you could get by just going to the cook's
cooking oil vat. Considering this is the chemical used to make the
instant death shotgun shell, that's pretty bad.

* Adds back in corn oil to fix Glycerol's recipe.

---------

Co-authored-by: CRITAWAKETS <sebastienracicot@hotmail.com>
2023-10-30 15:01:02 -07:00
SkyratBot
0e3b7d842b [MIRROR] Adds a Syndicate Monkey Agent beacon uplink item [MDB IGNORE] (#24550)
* Adds a Syndicate Monkey Agent beacon uplink item (#79012)

## About The Pull Request

Adds a Syndicate Monkey Agent beacon uplink item. It spawns a dapper
monkey that must follow your orders.

Added a monkey gun case to the uplink, which contains monkey guns!
Though they aren't very powerful.

Added a more modularlike subtype for antagonist spawners to reduce
future hardcoding.

Gave the syndicate turtleneck a monkey sprite, from SS14!

## Why It's Good For The Game

I want to see the clown driving security insane with 2-3 monkeys and an
incredible amount of pranking. Or an assistant killing everyone with his
monkey friends while wearing a monkey suit. Or a geneticist sending out
mutated monkeys to kill people. Or a scientist equipping his monkeys
with bombs or xenobiology equipment and sending them out to wreak havoc.

6 TC is only enough for two monkeys, but you can get a third if you
finish any kind of objective.

> Added a monkey gun case to the uplink, which contains monkey guns!
Though they aren't very powerful.

We can't have the monkey mafia without guns, come on. The guns are weak
and only usable by monkeys. Additionally, they're restricted to
entertainment only.

Credit to SS14 for the monky turtleneck sprite.

## Changelog

🆑
add: Adds a Syndicate Monkey Agent beacon uplink item. It spawns a
dapper monkey that must follow your orders.
add: Added a monkey gun case to the uplink, which contains monkey guns!
Though they aren't very powerful.
refactor: Added a more modularlike subtype for antagonist spawners to
reduce future hardcoding.
sprite: Gave the syndicate turtleneck a monkey sprite, from SS14!
/🆑

---------

Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>

* Adds a Syndicate Monkey Agent beacon uplink item

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
2023-10-24 10:11:25 -07:00
SkyratBot
fdbcaba8d3 [MIRROR] Fixes some items produced by using plants not inheriting reagent purity [MDB IGNORE] (#24486)
* Fixes some items produced by using plants not inheriting reagent purity (#79123)

## About The Pull Request

In #78322 I removed the reagent purity initialize argument from grown
items, thinking it was only used by butter. It was actually used in two
other places which I missed, in which I have implemented the same
functionality.
Rather than passing the desired purity on creation we instead just set
the purity of contents reagents after initialising the atom. This
broadly replicates what the edible component was doing, as these items
only get reagents from being edible.

## Changelog

🆑
fix: Meatwheat Clumps, Bungo Pits, and Eggplant Eggs should once again
inherit reagent purity from the grown item which produces them.
/🆑

* Fixes some items produced by using plants not inheriting reagent purity

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-10-21 14:26:26 -04:00
SkyratBot
cffff937f6 [MIRROR] new syndicate item - bee smoker [MDB IGNORE] (#24450)
* new syndicate item - bee smoker (#78988)

## About The Pull Request
this adds a new item for traitor botanists they can buy for 4 tc. it
releases smoke which hypnotizes bees to follow ur every command, it can
be used on a single bee or it can be used on a hive to hypnotize all the
bees who live there. u can command the bees to enter or exit their
beehive, and u can also command them to spiral around u where they will
follow u and swirl around u to confuse whichever opponent u are
fighting, and u can also command them to attack people. the bee smoker
comes with some fuel but u can recharge it by putting cannabis into it.
the stronger the weed the more fuel it will provide

https://github.com/tgstation/tgstation/assets/138636438/18c9a350-8e24-4c49-abfa-dffb7622502f

## Why It's Good For The Game
adds a traitor item which gives a new gameplay alternative for botanist
and pacifist players. also i noticed the pet targetting datum was using
some copy paste code so i made it a subtpye of the basic targetting
datum

## Changelog
🆑
add: added a new syndicate item - the bee smoker
/🆑

---------

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

* new syndicate item - bee smoker

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2023-10-20 00:29:10 -04:00
SkyratBot
b6da56408e [MIRROR] A comprehensive refactor / cleanup of bullet_hit and on_hit to cut out a single bad species / mob proc [MDB IGNORE] (#24430)
* A comprehensive refactor / cleanup of `bullet_hit` and `on_hit` to cut out a single bad species / mob proc (#79024)

## About The Pull Request

- Refactored `bullet_act`. Adds `should_call_parent` and refactors
associated children to support that.
   - Fixes silicons sparking off when hit by disabler fire.
- Desnowflakes firing range target integrity and cleans up its
bullet-hole code a bit.
- Cleans up changeling tentacle code a fair bit and fixes it not taking
off throw mode if you fail to catch something.
   - The Sleeping Carp deflection is now signalized
- Nightmare projectile dodging is now signalized and sourced from the
Nightmare's brain rather than species
- Refactored how cardboard cutouts get knocked over to be less
snowflaked / use integrity
- Also adds projectile `on_hit` `should_call_parent` and cleans up a bit
of that, particularly their arguments.
- On hit arguments were passed wrong this entire time, it's a good thing
nothing relied on that.

## Why It's Good For The Game

This is cringe.

1863eb2cd8/code/modules/mob/living/carbon/human/_species.dm (L1430-L1442)

Bullets should overall act more consistent across mob types and objects.

## Changelog

🆑 Melbert
fix: Silicons don't spark when shot by disablers
fix: Changelings who fail to catch something with a tencacle will have
throw mode disabled automatically
fix: Fixes occasions where you can reflect with Sleeping Carp when you
shouldn't be able to
fix: Fixes some projectiles causing like 20x less eye blur than they
should be
refactor: Refactored bullet-mob interactions
refactor: Nightmare "shadow dodge" projectile ability is now sourced
from their brain
/🆑

* A comprehensive refactor / cleanup of `bullet_hit` and `on_hit` to cut out a single bad species / mob proc

* Modular changes

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-10-19 22:18:41 -04:00
SkyratBot
8b99727a69 [MIRROR] Distillation fixed [MDB IGNORE] (#24409)
* Distillation fixed (#79045)

## About The Pull Request

The recent changes to the food defines have broken the quality scaling
for the fruit wine. This PR fixes the regression.

## Why It's Good For The Game

Bug fix

## Changelog

🆑
fix: Distilled drink quality is fixed - can't give a mood debuff anymore
/🆑

* Distillation fixed

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
2023-10-17 16:33:35 -07:00
SkyratBot
9ac0a534b9 [MIRROR] Add appy slices [MDB IGNORE] (#24310)
* Add appy slices (#78944)

## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/66640614/d0e80b4c-68c3-4ed2-af3c-4d078de4724f)

Delicious snacktime

## Why It's Good For The Game
Healthy snack good for kids

## Changelog
🆑
qol: apples can now be sliced
/🆑

---------

Co-authored-by: tattle <article.disaster@ gmail.com>

* Add appy slices

---------

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@ gmail.com>
2023-10-13 00:30:44 -07:00
SkyratBot
e7f7122b6f [MIRROR] [NO GBP] Some more code maintenance for reagents [MDB IGNORE] (#24280)
* [NO GBP] Some more code maintenance for reagents (#78884)

* [NO GBP] Some more code maintenance for reagents

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-10-11 16:04:59 -04:00
SkyratBot
0c9149bf35 [MIRROR] Refactor gib code to use bitflags and have documentation [MDB IGNORE] (#24143)
* Refactor gib code to use bitflags and have documentation

* Modular updates

* Modular updates

* Modular updates

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-10-09 15:00:17 -04:00
SkyratBot
cba230cd8a [MIRROR] Fixes a runtime in seed extractor when seeds do not have a product [MDB IGNORE] (#23954)
* Fixes a runtime in seed extractor when seeds do not have a product

* Fixing diffs

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-27 08:38:19 -04:00
SkyratBot
053b13da9b [MIRROR] Fixed several Foodening taste issues. [MDB IGNORE] (#23858)
* Fixed several Foodening taste issues. (#78481)

## About The Pull Request

Fixes a number of issues with taste that arose from the Foodening:
- Foods with special `check_liked` callbacks were having these thrown
out without effect. This made food with special "liked" conditions get
ignored - for example, security lizards didn't like donuts anymore.
- Ageusia was completely ignored when determining taste reactions (the
entire point of the quirk!).
- Foods with a toxic ingredient still gave the normal toxic reaction,
but would not always show up as inedible on examine if they were very
complex or had several liked foodtypes.

These issues have been fixed through a rewrite of the
`get_perceived_food_quality()` proc - all relevant checks are now made
within this proc rather than some coming before (and being partly
discarded).

Food quality checks take on the following hierarchy:
`silver slime toxicity > check_liked > toxic foodtypes > ageusia > liked
+ disliked foodtypes`

- **Silver slime toxicity** is about the same as before, except it will
return a toxic result early if the eater is not a jellyperson, or
increase the perceived quality by 2 if they are.
- **check_liked** will return early with a value based on the result of
the callback: -8 (toxic) if toxic, -2 (disliked) if disliked, and 2 (a
nice meal) if liked. As before, these ignore all further foodtype
calculations.
- **Toxic foodtypes** will return the toxic threshold if present.
- **Ageusia** will always return 0 - you can't taste anything, so if it
doesn't poison you it tastes completely neutral.
- **Liked + disliked foodtypes** are how things already work - save for
toxic foodtypes no longer being needlessly factored into the math.

As part of unifying two disparate sets of checks, perceived food quality
of -8 or lower now gives the toxic reaction rather than the disliked
one. This threshold would be incredibly difficult to reach via disliked
food alone, requiring four different disliked foodtypes at once in a
non-handcrafted food. This could potentially be set to a less extreme
value, like -4, if you wanted disliked-enough food to act as toxic -
but, as this would be a minor balance change, I haven't done that here.

Finally, as a miscellaneous change, a vestigial "fraction" field has
been removed from the invocation of check_liked - this was not used, and
was inconvenient for the rewritten code.
## Why It's Good For The Game

Restores several features that were lost or muddled in the Foodening,
and should not have been.

Note that, while this change generally preserves old behavior, it
diverges somewhat from the _intended_ design of the Foodening. Namely,
toxic foodtypes will _always_ give the toxic disgust/moodlet (unless
superseded by the above hierarchy), rather than being weighed against
the other foodtypes. I personally think this is fine, as I disagree with
the notion that wrapping poison in nice ingredients will make them
edible.
## Changelog
🆑
fix: Foods that have special conditions for liking/disliking them (such
as donuts for sec officers) have these conditions again.
fix: Characters with ageusia properly ignore non-toxic food types that
they eat.
fix: If you examine toxic food, it can no longer appear to you as
edible.
/🆑

* Fixed several Foodening taste issues.

---------

Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
2023-09-22 15:15:39 -04:00
SkyratBot
b5f951d9c6 [MIRROR] seedling basic mobs [MDB IGNORE] (#23857)
* seedling basic mobs (#78224)

## About The Pull Request
this is a mob that was removed from the game since years ago. this pr
refactors them and readds them to the game. seedlings now can have
different colored petals!

![petalcolors](https://github.com/tgstation/tgstation/assets/138636438/7c657c49-9186-4563-a93f-eba35e335ce9)

to obtain this monster, botany can now grow them out of 'seedling' seeds
that they can find in the exotic seeds crate. this mob loves to help all
plants and when its grown out of the seed, it will help the botanists
look after their plants. it can water plants (if it finds a bucket),
remove weeds and remove dead plants. they will also use their solarbeam
ability to provide small healing to damaged plants. it will try to
refill its bucket with water if there is a water source near by. it will
also follow the orders of whoever harvested it.

![plantbotany](https://github.com/tgstation/tgstation/assets/138636438/4cde0613-0869-4fea-8851-2e6f4680d9d7)

traitors can buy a seed from the uplink that grows an evil version of
the seedlings, they can command them to attack people and use abilities
and to cause chaos on the station.

## Why It's Good For The Game
refacotrs the seedlings into basic mobs

## Changelog
🆑
refactor: seedlings have been refactored into basic mobs please report
any bugs
add: seedlings now can have different colored petals and can look after
botanys plants
add: seedlings are re-added to the game! they grow out of seedling seeds
obtainable from exotic seed crates or traitor uplink
/🆑

* seedling basic mobs

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
2023-09-22 11:09:30 -07:00
SkyratBot
35a229469c [MIRROR] Fixes lingering bugs with inedible grown food items [MDB IGNORE] (#23806)
* Fixes lingering bugs with inedible grown food items (#78414)

## About The Pull Request

Fixes https://github.com/tgstation/tgstation/issues/78375
Fixes  #78402
Fixes #78389

This is a followup to https://github.com/tgstation/tgstation/pull/78322

I am not really a fan of the solution in the above PR being overridding
the `New()` for `obj/item/food/grown`--I was told we should not be doing
that for atoms, hence my removing them, and now they're back! lol.

If we are going to do this (which please let's just do it, I'm tired of
being pinged for this and I'm sure Jacquerel is too) then we need to do
the same for the constructor of `/obj/item/grown`

This is because `to_prod` gets cast as `obj/item/food/grown` (shown
below) and the args must match the constructor for both types if we are
using a keyword there.

b44fcdedfb/code/modules/hydroponics/seeds.dm (L226)

Why do we have to do this? because keyword args in constructors do not
work unless you explicitly override the New() proc with those kwargs.
Just doing it in Initialize() is not going to work. And once again,
because `t_prod` can be either `obj/item/food/grown` or `obj/item/grown`
we have to override `New()` for both types if we want that keyword
constructor arg above to work.

## Why It's Good For The Game

Bugfix

![phnEOuTK0U](https://github.com/tgstation/tgstation/assets/13398309/c9a65403-db77-49b3-ada4-8081aac5b81c)

## Changelog

🆑
fix: fixes inedible grown items (such as tower caps) becoming
unclickable when harvested, fixes their seeds disappearing when inserted
into the seed machine
/🆑

---------

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

* Fixes lingering bugs with inedible grown food items

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2023-09-19 13:12:41 -04:00
SkyratBot
3863238ccd [MIRROR] Removes some food initialize arguments [MDB IGNORE] (#23712)
* Removes some food initialize arguments (#78322)

## About The Pull Request

A prior PR added some new initialize arguments to the food subtype which
did not strictly need to be there, this caused a large number of bugs as
a result of places which already had extra initialize arguments not
correctly accounting for these new ones.
As a result I have removed these again in favour of performing the
required operations in a different way (one of these arguments was
seemingly used for butter purity and literally nothing else), for this
food and also some of its subtypes.

In some other cases where it _did_ make sense to have arguments in
`initialize` I also added them to `new` so they can be passed by name.

This will hopefully make the food more maintainable if in the future if
someone does something similar, and solve any remaining bugs related to
"not passing the arguments properly".

## Changelog

Hopefully not player facing

* Removes some food initialize arguments

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-09-15 12:30:43 -04:00
SkyratBot
133689846a [MIRROR] Fixes a fruit wine runtime and fixes runtime when trying to add inedible plant seeds to the seed extractor [MDB IGNORE] (#23707)
* Fixes a fruit wine runtime and fixes runtime when trying to add inedible plant seeds to the seed extractor (#78319)

Fixes https://github.com/tgstation/tgstation/issues/78315
Fixes https://github.com/tgstation/tgstation/issues/69282 (same issue)
Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23586 (same issue)

## About The Pull Request

@ Jacquerel end me please.

This fixes the linked issue and the other issue that was mentioned in
the comments. They are unrelated, but this is a two for one.

First bug is caused by fruit wine trying to blend `filling_color`, which
is actually unset for the majority of plants. As such it will runtime
when trying to make wine from just about every plant in the game. It
could be a nice project for someone to set those for all the plants so
they have more accurate colors when smashed or made into fruit wine...

But for now the bug is fixed by just having it use the reagent's `color`
for the blending when the `filling_color` var is unset.

---

~~As for the other issue mentioned in the comments of #78315, this is
because it turns out the code in hydroponics.dm treats `/obj/item/grown`
and `/obj/item/food/grown` the same, so we need to make sure that their
constructors match (even if we aren't using the args).~~

~~It's an issue born ultimately of bad OOP design. Both should be
basetype of obj/item/grown really but the way that food code works it
has to be this way.~~

As per @ Jacquerel 's request I am going to remove this portion of the
fix. I've fixed the runtime that occurs when adding the seeds to the
extractor but as for the fix for the mutation traits I will leave that
in their capable hands.

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

🆑
fix: fixes a bug that would cause grown inedible plant seeds (like tower
cap) to vanish from existence upon being added to the seed extractor
fix: fixes a issue that would cause fruit wine to bug out when trying to
blend its reagent color

/🆑

* Fixes a fruit wine runtime and fixes runtime when trying to add inedible plant seeds to the seed extractor

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-15 11:28:39 -04:00
SkyratBot
0aee7a6aa7 [MIRROR] Fixes improper args for grown food items constructor [MDB IGNORE] (#23652)
* Fixes improper args for grown food items constructor (#78201)

## About The Pull Request

Fixes https://github.com/tgstation/tgstation/issues/78076
Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23579
Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23579

## Why It's Good For The Game

Found another one you missed in
https://github.com/tgstation/tgstation/pull/78190 @ Jacquerel

I really, really hate how annoying these are to track down. : (

## Changelog

🆑
fix: fixed grown food items not getting the right seed type passed to
them upon creation
/🆑

---------

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

* Fixes improper args for grown food items constructor

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
2023-09-12 10:19:59 -07:00
SkyratBot
4d9bed607f [MIRROR] Fixing this dead mouse related harddel [MDB IGNORE] (#23569)
* Fixing this dead mouse related harddel (#78150)

## About The Pull Request

Fixes https://github.com/tgstation/tgstation/issues/78085

Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23510
Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23506

![image](https://github.com/tgstation/tgstation/assets/13398309/fab09657-12e8-4fb8-9e84-05ef48c9d55e)

When the foodening added some args to the constructor of
`/obj/item/food` some instances of the constructor being passed stuff
got overlooked and were not updated.

This resulted in a mob ref potentially being passed in to
`starting_reagent_purity` in some cases, ultimately resulting in this
harddel.

@ SyncIt21 this is exactly the reason I was being so paranoid with #77946
the other day. Tracking constructor uses down can be such a pain when
they aren't prefaced with a type, and are almost guaranteed to get
overlooked during refactors if the compiler does not say anything about
it.

I hate DM.

edit: and I just tested this only to find a second bug with the ice
cream. I can confirm that it is in fact working now after fixing that
one too.

<details><summary>evil ice cream</summary>

![image](https://github.com/tgstation/tgstation/assets/13398309/46cd85cd-1051-46d9-9642-0275af098dbe)

</details>

## Why It's Good For The Game

Fixing a harddel that was causing many CI failures

## Changelog

🆑
fix: fixes creamatorium not producing any suspicious ice cream, and
fixes a dead mouse related harrdel
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>

* Fixing this dead mouse related harddel

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
2023-09-07 18:39:21 -04:00
SkyratBot
87bfa7a61a [MIRROR] Fixes typo 'transfered', olive oil reaction repath [MDB IGNORE] (#23469)
* Fixes typo 'transfered', olive oil reaction repath

* Modular

* Update condiment.dm

* Update recipes_guide.dm

* Update _cup.dm

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-04 08:49:33 -04:00
SkyratBot
f0b265b6bb [MIRROR] Foodening [MDB IGNORE] (#23440)
* Foodening

* Update chem_dispenser.dm

* Juicening?

* Update big_mortar.dm

* Adds crafting complexities to modular foods

* Olive oil repath

* Cooking oil repath

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-03 20:47:17 -04:00
SkyratBot
a8994478cd [MIRROR] Watering hydroponic trays can no longer add more water than the container has. [MDB IGNORE] (#23436)
* Watering hydroponic trays can no longer add more water than the container has. (#78005)

## About The Pull Request

What it says on the tin. Previously it would not check whether the
amount set to transfer was greater than the amount contained, and so you
could have a gardening can with 10u of water fill the tray with 100u if
you set it to that.

Also, I removed a (seemingly) pointless part of the check in line 885.
All it achieves as far as I can tell is that if you have decimal (less
than 1) amounts of water in a container, it will be incorrectly added to
the nutrient count rather than the water count.
## Why It's Good For The Game
## Changelog
🆑
fix: containers can no longer add more water to hydroponic trays than
they actually contain.
fix: watering a hydroponic tray with amounts of water lesser than 1 will
no longer be added to nutrients rather than water
/🆑

* Watering hydroponic trays can no longer add more water than the container has.

---------

Co-authored-by: A miscellaneous Fern <80640114+FernandoJ8@users.noreply.github.com>
2023-08-31 14:26:08 -07:00
SkyratBot
061770c032 [MIRROR] Ports poppy and geranium sprites from beestation (plus flower crowns!!) [MDB IGNORE] (#23432)
* Ports poppy and geranium sprites from beestation (plus flower crowns!!) (#78022)

## About The Pull Request
Ported from
[here](https://github.com/BeeStation/BeeStation-Hornet/pull/5397).
I have for the longest time hated how geraniums and lilies are just a
resprite of poppies, so, with the permission of the original PR author

![image](https://github.com/tgstation/tgstation/assets/20053168/19480651-8924-40c7-b57d-ad4e6f06c6e2)
I present you, plants.

![image](https://github.com/tgstation/tgstation/assets/20053168/fa13cc16-929e-44ec-b4cf-065e06772c21)

![image](https://github.com/tgstation/tgstation/assets/20053168/318cc7c2-8f40-47b7-a6df-562255173027)
## Why It's Good For The Game
No more recoloured poppies, plants have soul now. Also flower crowns are
pretty.
## Changelog
🆑 xPokee, Pirill
add: Added flower crowns, craftable via the clothing menu.
image: Resprited geraniums, poppies, and lilys, along with changing
their worn icon.
/🆑

---------

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

* Ports poppy and geranium sprites from beestation (plus flower crowns!!)

---------

Co-authored-by: Alexis <catmc8565@gmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2023-08-31 12:23:57 -07:00
SkyratBot
45a76cdd0e [MIRROR] Makes corncobs produce seeds [MDB IGNORE] (#23369)
* Makes corncobs produce seeds (#77944)

## About The Pull Request
This adds a new type of corncob for snapcorn and makes both types
produce their respective seeds when used in a seed extractor or portable
seed extractor.
## Why It's Good For The Game
No more using corncobs on the extractor for the message but not getting
any seeds.

![image](https://github.com/tgstation/tgstation/assets/53197594/15fc4949-37ab-47a6-9195-e3e2a6dcf010)

![image](https://github.com/tgstation/tgstation/assets/53197594/134fe504-9e9c-4ac9-8a67-22e2a097c785)
## Changelog
🆑
fix: fixed corn cobs not making seeds and lying to you in the text box.
/🆑

---------

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

* Makes corncobs produce seeds

---------

Co-authored-by: xXPawnStarrXx <53197594+xXPawnStarrXx@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2023-08-27 10:46:35 -07:00
SkyratBot
d21e06104f [MIRROR] Dunking handle_atom_del() in the trash bin. [MDB IGNORE] (#23183)
* Dunking handle_atom_del() in the trash bin.

* Update _box_magazine.dm

* Modular paths

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-18 12:17:04 -04:00
SkyratBot
e7fb9b8465 [MIRROR] Harvesting podpeople seeds now requires explicit approval [MDB IGNORE] (#23041)
* Harvesting podpeople seeds now requires explicit approval (#77526)

## About The Pull Request

Podpeople seeds have a popup saying "This tray has no soul, are you sure
you want to harvest right now?", but it will still harvest if you x out
of the tab instead of clicking cancel. This flips it so you have to
explicitely say yes for it to go through.

## Why It's Good For The Game

When you X out of a tab, you did not mean to say yes.

## Changelog

🆑
fix: X'ing out of the podpeople no soul prompt will no longer harvest
the seeds.
/🆑

* Harvesting podpeople seeds now requires explicit approval

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2023-08-12 17:51:31 -04:00
SkyratBot
d2b4b475cb [MIRROR] Spiders don't automatically grant an antag datum [MDB IGNORE] (#23029)
* Spiders don't automatically grant an antag datum (#77523)

## About The Pull Request

Fixes #77501

Spider egg ghost role spawners grant the spider antag datum, rather than
the act of being a spider.
This means that gold core, mapstart, polymorph belt, and other spiders
will not have an antagonist datum.

While doing this I also made a new abstract `mob/living/basic/spider`
type which all three kinds of spider life stage (`spiderling`, `young`,
`giant`) extend from, because there was a gross amount of copied code.
Now there isn't.

Also the Flesh Spider and Event Midwife eggs now simply hatch adult
spiders instead of child ones.
This is because there is no reason for either of these to have a two
minute wait time before they get going. Midwife spiders spawned by the
event should just start spidering immediately, and Flesh Spiders are
made by changelings and shouldn't be effected by measures introduced to
balance the spider gamemode.
Eggs which are laid during a round and _can_ hatch into midwife spiders
still hatch baby spiders.

Also I swapped some white pixels on the animation of the ambush
spiderling for a different colour because they looked bad.

## Why It's Good For The Game

While the policy is always "if you turn yourself into something, you're
not an antagonist" the presence of the antag datum still confuses
people. Plus that code was gross and I didn't like it.

## Changelog

🆑
fix: Giant Spiders only have an antag datum if created by the round
event.
balance: Flesh spider eggs hatch into adult spiders instead of baby
spiders.
balance: The eggs spawned by the start of the spider infestation event
hatch into adult Midwife spiders instead of baby ones.
/🆑

* Spiders don't automatically grant an antag datum

* Modular paths

* Modular paths

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-12 00:17:56 -04:00
SkyratBot
d8ed857b3e [MIRROR] Biogenerators can be unwrenched [MDB IGNORE] (#22971)
* Biogenerators can be unwrenched (#77366)

## About The Pull Request

Biogenerators can be unwrenched

## Why It's Good For The Game

If significantly more round impacting things like smoke machines and
hydro trays that drop plants that turn into meth bath salts krokodil
smoke can be unwrenched i dont see why this cant

## Changelog

🆑
qol: Biogenerators can be unwrenched
/🆑

---------

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

* Biogenerators can be unwrenched

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
2023-08-09 17:04:19 -04:00
Bloop
7fe39be6a0 [MISSED MIRROR] make the mushroom a basic monster (#76570) (#22760)
make the mushroom a basic monster (#76570)

## About The Pull Request
i maked the mushrom from the simple monster to a basic monster so he is
dont a simple anymore but now he is a basic.i followe the instrucions in
the guide learn-ai.md to maked this pr. i also give the mushrom a extra
feture he will go and hunt food mushroms on the floor to ate them and
when he ate them he will heal small his hp

## Why It's Good For The Game
he is now a basic monster so he is not simple anymore. it is good
because he is a more advance ai and he will stil go and do the same stuf
he did when he is simple but he is now a basic

## Changelog
🆑
refactor: Mushrooms have been refactors, please report any
bugs/unintended behavior
add: the mushroom basic mob can eat the mushroom plant to heal itself
/🆑

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
2023-07-28 22:19:15 -07:00
SkyratBot
888801fd05 [MIRROR] Adds a unit test to stop elements from using identical lists for their arguments. [MDB IGNORE] (#22732)
* Adds a unit test to stop elements from using identical lists for their arguments. (#76322)

## About The Pull Request
Ok, so a few days ago I made an issue report about multiple instances of
identical elements being generated because of uncached lists.
ninjanomnom (the mind being the element datums) cleared it up and said
an implementation of GetIdFromArguments() that also checks the list
contents wouldn't be worth the performance cost, while adding that a
unit test should be written to check that it doesn't happen at least
during init, which should catch a good chunk of cases.

Also, i'm stopping RemoveElement() from initializing new elements
whenever a cached element is not found. Ideally, there should be a focus
only unit test for that too, but that's something we should tackle on a
different PR.

Some of the code comments may be a tad inaccurate, as much as I'd like
to blame drowsiness for it. Regardless, the unit test takes less than
0.2 seconds to complete on my potato so it's fairly lite.

## Why It's Good For The Game
This will close #76279.

## Changelog
No player-facing change to be logged.

* Adds a unit test to stop elements from using identical lists for their arguments.

* Fixes unit test

* seeing double

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-27 20:08:55 -04:00
SkyratBot
46ee262598 [MIRROR] made the bee a basic insect [MDB IGNORE] (#22652)
* made the bee a basic insect (#76971)

## About The Pull Request
the bee now a baisc insect he will now go to find his home and he will
go and pollinated the plants and helped the queen make children by
polliniting the plants and he will. the queen will leve the hive more
rarely than the normal bees so she can stay in the hive to make kids

## Why It's Good For The Game
the bee now is a basic insect so it means he have a better ai

## Changelog
🆑
balance: the bee now can fly over the machines so its easy for him to go
to the hydroponics machine
fix: player bees now will not be stuck inside the hive if he entered it,
they can now leave it
fix: fixed a har deleted when the hive is deleted all the bees still
have a refence to the hive now its fixed
fix: now when a player interacted with the bee hive the bees will now
leave the hive to defend the hive (it was glitched)
refactor: the bees now are a basic insect.
/🆑

* made the bee a basic insect

* Merge conflict

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-24 01:21:59 -04:00
SkyratBot
8782f19258 [MIRROR] Stabilizes code that flicks overlays to view/all clients [MDB IGNORE] (#22601)
* Stabilizes code that flicks overlays to view/all clients (#76937)

## About The Pull Request

Rather then using images and displaying them with client.images, we can
instead simply make an object, give it the passed in image/MA's
appearance, and then vis_contents it where we want.

If you want to animate things, you can just use the atom we return from
the proc call.

This ends up costing about 25% of the best case scenario (one guy
online)
It will save more time with more users, but it also allows us to avoid
the hypersuffering that is passing GLOB.clients into the flick proc. So
I think I'm happy enough with this.

For context, here's average per call cost for flick_overlay_view() right
now.
It winds between 5e-5 and 1e-4. With these changes we should pretty
consistently hit the low end of this, because none of our work really
varies all that much.

![flick_avg](https://github.com/tgstation/tgstation/assets/58055496/3483e022-9cc5-490a-be5e-eb79f4e2110b)

(I was using sswardrobe for this, but it ends up being a lot slower so
like, why yaknow)
```
/atom/movable/flick_visual
        New: 3.65625ms
        Provide: 7.4375ms
        Qdel: 9.4375ms
        Stash: 9.46875ms
```

## Why It's Good For The Game

Using our tools should not make your code eat cpu time for no reason.
Hearers is expensive, iterating clients is expensive, let's not be
expensive.

* Stabilizes code that flicks overlays to view/all clients

* Not every client needs to see this

* and these could be using SECONDS

* grr DM

* Convert these modular files to seconds too

* Update dance_machine.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-20 18:59:09 -04:00
SkyratBot
2f552919c1 [MIRROR] Icons folder cleaning wave two [MDB IGNORE] (#22454)
* Icons folder cleaning wave two

* Merge conflict resolution

* Modular path hell

* hmm

* Update 2022-10.yml

* Another modular thing

---------

Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-16 00:41:18 -04:00
SkyratBot
2f5c7f8389 [MIRROR] Icon folder cleaning wave one [MDB IGNORE] (#22374)
* Icon folder cleaning wave one

* Fixe a merge conflict

* Fixes some more merge conflicts

* Fixes some modular icon paths

* Fixes even more modular icon paths...

Hopefully that's the last of them

* Fixes some merge discrepencies

* More merge issues

* ok

* not ok

---------

Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-13 16:24:33 -04:00
Zergspower
68a899f5bd [Manual Mirror Fix] Coroner additions and tweaks (#76534) (#22380)
* Coroner additions and tweaks (#76534)

## About The Pull Request

Serrated bone shovels can be created with any kind of shovel now, not
just a spade (???)

Serrated bone shovels can be used in place of circular saw in most
surgeries.

Added a duller (still deadly) variant of the serrated bone shovel as
coroner mail.

Autopsy scanners now act as advanced health analyzers on dead and
seemingly-dead people.

Increased the force, throwforce, and wound bonus of inert ritual knives
and scythes.

Coroner gloves can quickly apply medicine like nitrile gloves.
## Why It's Good For The Game

> Serrated bone shovels can be created with any kind of shovel now, not
just a spade (???)

Weird ass bug.

> Serrated bone shovels can be used in place of circular saw in most
surgeries.

It's serrated, it's cool, it's rare, it has a fast toolspeed.

> Added a duller (still deadly) variant of the serrated bone shovel as
coroner mail.

Very thematic for the coroner, should probably also be a heirloom item
but whatevs. Weaker so there's still a reason to seek out the OG.

> Autopsy scanners now act as advanced health analyzers on dead and
seemingly-dead people.

Scanning corpses is pretty important during surgery - it tells you how
much blood they have, organ damage, diseases... these things don't
appear in the surgical computer readout, which means the coroner has to
go out of his cave to pick up a boring light blue meatbag wound scanner.
This also incentivizes coroners to do their job by giving them something
cool that only works on dead bodies.

> Increased the force, throwforce, and wound bonus of inert ritual
knives and scythes.

These two options in the MortiDrobe are pretty frickin' badass,
especially with how SICK the Coroner looks with them, double especially
in combat.


![image](https://github.com/tgstation/tgstation/assets/53100513/98c6f8a5-3e5a-41a9-8a9c-cb6b82ecc0b8)

However, there's the large issue that as actual weapons they're really,
really weak. Not enough damage, when I use them in combat I both feel
badass but also get a nagging feeling in the back of my mind that I'm
intentionally gimping myself, and with only 10 damage I can *really*
feel it. I find it unfair that these are objectively worse than a
welding tool or even a Butcher's Cleaver when they're a lot more
involved to find, and scarce besides. These arguments apply equally to
the Wizard's ritual knife, and the scythe.

Additionally on the scythe, the crew really needs more good ghetto
weaponry that isn't the boring same ol' of baseball bats, spears,
cleavers... and making scythes useful is a great way to help bridge that
gap. They deal a satisfying amount of damage now, with the clear
downside, of course, being that they're bulky and hard to lug around.

> Coroner gloves can quickly apply medicine like nitrile gloves.

'Fast medicine' doesn't just cover sutures, it also covers medical gel.
Specifically, sterilizer gel. I find it annoying that the Coroner is
encouraged to give up his drip for the boring life-saver nitrile gloves,
because the difference in applying time really does make a difference -
it makes gel applying go from annoying to smooth, which is important
considering the whole purpose of sterilizer gel is to make surgeries go
faster. The Coroner has surgery and thus medical locker access to begin
with, so this isn't a balance problem, (and nitrile gloves are found by
the dozen anyways) especially with how rare the coroner gloves are.
## Changelog
🆑
fix: Serrated bone shovels can be created with any kind of shovel now,
not just a spade (???)
add: Serrated bone shovels can be used in place of circular saw in most
surgeries.
add: Added a duller (still deadly) variant of the serrated bone shovel
as coroner mail.
add: Autopsy scanners now act as advanced health analyzers on dead and
seemingly-dead people.
add: Increased the force, throwforce, and wound bonus of inert ritual
knives and scythes.
add: Coroner gloves can quickly apply medicine like nitrile gloves.
/🆑

* Modular Scythes

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
2023-07-11 22:07:31 -07:00