Commit Graph

73 Commits

Author SHA1 Message Date
John Willard
b5975bd915 Unit tests now catch decals in walls/space (#75189)
## About The Pull Request

Unit tests will now fail if there's a decal in a wall or open space
turf. Open space turf could be limiting to mappers but I don't think it
makes sense for decals (like dirt, glass shards, etc) to be floating
around in space in the exact same spot.

If there's a decal you want to put in space, decals have a
``turf_loc_check`` var that will bypass this.

**Important note: This is not changing existing behavior. Decals already
delete themselves when they spawn in these incorrect locations, we're
just avoiding them from spawning in the first place.**

### Changes I made

- Ash flora are now lava immune, rivers spawn after flora does, so I
decided that it would be easiest (and more flavorful) to have them be
lava-immune rather than to not have them spawn at all.
- Decals can now be spawned in non-turf locations. This is currently
done by mail, which can give you bones as part of the mail. Currently it
will just delete itself instead.
- Trading Card button is now on the same tile as their display, which
now uses an offset. Before it would spawn it on the tile next to it,
which could be a wall in some instances.
- Mirrors now have floating movement type. They ARE floating since
they're attached to the wall, and it prevents them from burning up due
to lava in the Pride ruin.
- I also added a broken mirror subtype because I thought the icon_state
check was terrible.
- Bubblegum called ``DestroySurroundings`` several times on the same
thing, I hopefully fixed some of that. Their charge ability also
registered ``COMSIG_MOB_STATCHANGE`` despite ``/datum/action`` doing it
by default, so I fixed that too.

## Why It's Good For The Game

Decals in walls is already a bad idea, but currently all it does is
delete it on Initialize. It would be better if we ensured they wouldn't
spawn in the first place.

## Changelog

🆑
fix: Lava will no longer burn 6 of the mirrors in pride ruin
fix: Lava will no longer burn plants that spawn in them.
/🆑
2023-06-15 16:39:22 -07:00
Ghom
2bb4dfe76c Expanding the Experimental MODsuit Bepis Node with three new modules. (#75801)
## About The Pull Request
So, I've had this idea to make a contribution to the Bepis feature with
some modsuit stuff. The gimmicky stuff is ok and a good way to even out
the better content since it has game of chance design it has (you can
find those disks in space anyway so...). However, the Experimental
MODsuit node feels very underwhelming right now, compared to how big
that feature is.

This PR adds three MOD modules to the Experimental MODsuit node, plus
two more:
- Magneto Charger: While the Modsuit is activated, each step the user
takes will charge the installed power cell by a tiny bit, enough to
sustain a standard modsuit of generic slow speed with only a few, easy
modules installed. It won't work in zero G, while flying, pulled by
someone else, on a conveyor belt, riding a vehicle or crawling on the
floor, though.
- Recycler: It collects (most) garbage and casings off the ground and
recycles them into material sheets that can be dispensed on an adjacent
location or storage with with Middle Mouse Button. Doesn't clean debris,
and scuffed because most trash doesn't yield material anyway.
- - It also has two subtypes, unbound from the node: one that dispenses
riot foam darts and can be found on the black market, and another that
dispenses the more innocuous foam darts, rarely found in maints.
- Shooting Assistant: A configurable module. On Stormtrooper mode, it
will give the user a faster fire rate (the double tap trait) at the cost
of accuracy. On Sharpshooter mode, it will improve the user accuracy and
make their shots ricochet against walls at least once (if the hit atom
allows that, that is, e.g. lasers don't ricochet against iron walls), at
the cost of movement speed. Both modes also prevent the user from dual
wielding guns.

To make the Stormtrooper mode stackable with the poor aim quirk and
refrain from making a new trait for the sharpshooter mode, the gun
spread code in gun.dm has also received a little refactor and cleanup.
Also, it's been tested.

## Why It's Good For The Game
The Experimental MODsuit node is quite shabby and could use something
extra to make it more appealing to MODsuit enjoyers.

Also doubles down as a small addition to the black market and maint
loot, and code cleanup, since gun code gives off some garbled vibes.

## Changelog

🆑
add: Expanded the Experimental MODsuit Bepis node with three new
modules: Magneto Charger, Recycler and Shooting Assistant.
add: Added a Riot Foam Recycler module to the black market, as well a
more innocuous version as maint loot.
/🆑
2023-06-14 23:00:05 -04:00
Sealed101
1c60848edb Removes poseur tag graffiti (it's been dead for ~6 years Edition) (#75689)
## About The Pull Request
The _poseur tag_ graffiti option was not removed in the gang gamemode
removal back in #30056. Back then it would have chosen one of the gangs'
tags to mimic. Now, if selected, it will create an empty graffiti. This
will also apply to any mapped/generated graffiti. This sucks and this
derailed me from my other thing I was doing in the crayons.dm vicinity.

## Why It's Good For The Game
Removes a 6-year-old non-functioning graffiti option.

## Changelog
🆑
fix: exorcised a ghost of the gang gamemode from graffiti
/🆑
2023-05-28 12:31:05 -06:00
KingkumaArt
b7fb33ab00 Adds Ethereal Drinks (#75487)
## About The Pull Request
Adds 3 new electric-themed drinks for ethereals. They count as food for
etherials, (not much, one glass is about equivelant to a plasma burger),
but humans can drink them as well, among other effects.
## Why It's Good For The Game
As an ethereal player, I do feel while our food is convenient, that we
miss out on the RP other species get from going to the bar. This allows
for etherials to order drinks from the bartender. All effects work on
all races, with the hunger satiation as the exception.
## Changelog
🆑
add: Voltaic Yellow Wine - New "base" drink, found in booze-o-mat. No
special effects besides acting as a weak ethereal food. Not very potent
in terms of alcohol.

add: Telepole - New mixed drink themed after thunderstorms, gives the
same shock-resist grey bull does. Made from 1 part Voltaic Wine, 1 Part
Sake, and 2 parts Dark & Stormy. Moderately potent.

add: Pod Tesla - New mixed drink, themed after the old removed tesla
engine (the singulo gets a cocktail, it should too!) Grants a brave -
bull phobia resist, and a stronger grey bull shock resist allowing you
to (temporarily) resist tesla arcs from reactive armor and the SM's
tesla coils. Gives a pleasant thought to whoever drank it, because this
thing is a pain to make. Made from 5 parts admiralty, 5 parts telepole,
and 3 parts brave bull. Highly potent.

qol: Unsure if this counts as QOL or balance, but the fact sol dry is in
3 different cocktails but the bartender has to buy 30u cans of it made
me feel it deserved being added to the soda dispenser.

image: Added graphics for the above drinks, shown below, from left to
right: Pod tesla, Voltaic Yellow wine, Telepole, Voltaic Wine (bottle)
<img width="171" alt="image"
src="https://github.com/tgstation/tgstation/assets/69398298/901b2f64-1723-44b6-8f78-ef21bd477d96">


/🆑

---------

Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com>
2023-05-27 19:00:55 -04:00
Thunder12345
75537b97a5 GAGSifies Plushies (#75442)
image: Space lizard, carp, slime and snake plushies have been resprited and set up to support GAGS.
2023-05-20 04:16:45 -04:00
Helg2
bf880f553a Makes industrial gold and regenerative gold spawn random coins. Also adds chococoin to coin spawner. (#75199)
<!-- 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
So they just had list from 6 coins and not random picking of coins, so
now its random.
It will also spawn chococoin because it's a coin too.
But won't spawn `coin/gold/debug` because it's debug and eldritch coin
because comxy asked about it.

Added chococoin to `/obj/effect/spawner/random/entertainment/coin` and
holdables list of wallet.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

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

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and 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. -->

🆑
add: Indusrial Gold and Regenerative Gold extracts now spawn random
coins and not just list of 6 coins. But no mythril as it has miserable
chance to have summoning effect which have even more miserable chance to
spawn something dangerous and not just mice.
add: Chococoin now has a chance to spawn wherever the coins are used to
spawn (wallets, greed ruins, deltastation bar)
/🆑

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

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-05-08 17:40:13 -07:00
SyncIt21
2068ea9ab5 Crate, Closet Refactors & Access Secured Stuff (#74754)
## About The Pull Request
This PR is actually 2 parts, one that fixes runtimes with crates & the
other that allows secured closets to be crafted
along with a secured suit storage unit

**Crate Fixes**

Fixes #74708

The problem starts here

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L31-L34)
Not only does this if condition look ugly but it's highly error prone
because one single call to `update_appearance()` can cause this to fail,
and sure enough if you look at the parent `Initialize()` proc it calls
just that

f117834208/code/game/objects/structures/crates_lockers/closets.dm (L81-L88)
Since we know the appearance is guaranteed to be changed in some way
before the if condition gets executed let's check what the final state
of the crate would be before this if check

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L54-L56)
We see that the final icon state depends on the variable `opened` so if
we want to place/spawn a crate that is opened at round start we have to
ensure that `opened = TRUE` so the `if(icon_state ==
"[initial(icon_state)]open")` succeeds and does its job correctly.
Sadly we did dum shit like this
```
/obj/structure/closet/crate{
	icon_state = "crateopen"
}
```
throughout the entire code base, we thought backwards and were only
concerned in making the closet look open rather than setting its correct
variables to actually say that it is opened. because none of these
crates actually set `opened = TRUE` the final icon state becomes just
"crate" NOT "crateopen" therefore the if condition fails and we add the
component

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L36-L37)
with the wrong parameters, so when closing the closet after_close()
removes the component with the wrong arguments

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L81-L84)
that is does not unregister the signals and readds the component i.e.
re-registers the signals causing runtime.

The solution just do this
```
/obj/structure/closet/crate/open[mapping helper]
```
To clearly state that you want the closet to be open, that way you don't
have to memorize the icon_state for each different type of crate, it's
consistent across all crates & you don't get runtimes.

And that's exactly what i did everywhere

Another issue that is fixed is "Houdini crates" i.e. crates which are
open & appear empty but when you close & reopen them magical loot
appears, Go ahead walk upto to cargo and find any empty crate that is
open and do this

Fixes #69779


https://user-images.githubusercontent.com/110812394/232234489-0193acde-22c8-4c19-af89-e897f3c23d53.mp4

You will be surprised, This is seriously harmful to players because they
can just walk by a crate that appears to be open & empty only to realize
later that it had some awesome loot. Just mean

The reason this happens is because of the Late Initialization inside
closets

f117834208/code/game/objects/structures/crates_lockers/closets.dm (L85-L86)

What late initialization does is suck up all stuff on its turf

f117834208/code/game/objects/structures/crates_lockers/closets.dm (L97-L100)

In theory this is supposed to work perfectly, if the closet is closed
move everything on the turf into the closet and so when the player opens
it, they all pop back out.
But what happens if the closet is opened before ` LateInitialize()` is
called? This breaking behaviour is caused by object spawners

f117834208/code/game/objects/effects/spawners/random/structure.dm (L94-L100)
And maint crates

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L141-L143)
These 2 spawners open up the crate based on random probability before `
LateInitialize()` is called on the crate and so what happens is the
crate is first opened and then stuff on the turf is sucked in causing an
open but empty crate to appear.

The solution is simple just check again in ` LateInitialize()` if our
crate is still closed before we proceed.That's fixed now too

**Code Refactors**
1. Introduced 2 new signals COMSIG_CLOSET_PRE/POST CLOSE which are the
counter parts for the open signals. hook into them if you ever need to
do stuff before & after closing the closet while return BLOCK_CLOSE for
COMSIG_CLOSET_PRE_CLOSE if you want to block closing the closet for some
reason
2. 2 new procs `before_open()` & `before_close()` which are the counter
parts for `after_open()` & `after_close()`. If you need to write checks
and do actions before opening the closet or before closing the closet
override these procs & not the `open()` & `close()` procs directly

**Secured Craftables** 
This is just a reopened version of #74115 after i accidently merged
another branch without resolving the conflicts first so i'll just
repaste everything here, since crates & closets are related might as
well do all in one

1. **Access secured closets**
   
   - **What about them?**
          **1. Existing System**
If you wanted to create a access secured closet with the existing system
its an 4 step process
            - First construct a normal closet
            - Weld it shut so you can install the airlock electronics
            - Install the electronics [4 seconds]
            - Unweld
This is a 4 step process which takes time & requires a welding tool
         **2. New system**
Combine the 4 steps into 1 by crafting the secure closet directly
                    
![Screenshot
(184)](https://user-images.githubusercontent.com/110812394/235904926-c2ea231c-eba7-45d0-a5af-e0456fdd40bc.png)

    - **Bonus Features**
              **1. Card reader**
The card reader acts as an interface between the airlock electronics &
the player. Usually if you want to change access on a locker you have to
                  - Weld the closet shut
                  - Screw driver out the electronics
                  - Change the settings
                  - Install it back
                  - Unweld
With a card reader there is no need of a welder & screwdriver. You can
change the access of the locker while its operational

        **How do i install the card reader?**
             1. Weld the closet shut
             3. Insert card reader with hand
4. To remove the card reader use crowbar or just deconstruct the whole
closet with a welding tool
             5. Unweld closet

         **How to change its access?**
This will overwrite the settings on your airlock electronics. To do this
1. make sure the closet is first unlocked. This is important so that no
random person who doesn't have access to the closet can change its
access while its locked. It would be like giving the privilege of
changing your current password without first confirming if you know the
old password
2. attack/swipe the closet with your PDA. Make sure your ID card is
inside the PDA for this to work. You can also just use your ID card
directly without a PDA
         3. You will get 3 options to decide the new access levels
           
![Screenshot
(174)](https://user-images.githubusercontent.com/110812394/233454364-d99a2fb6-9f26-4db3-9fac-a10689955484.png)


        They work as follows
- **Personal**: As the name implies only you can access this locker and
no one else. Make sure to have your ID on you at all times cause if you
loose it then no one can open it
- **Departmental**: This copies the access levels of your ID and will
allow people having those exact same access levels. Say you want to
create a closet accessible to only miners. Then have an miner choose
this option and now only miners can open this closet. If the Hop sets
custom access on your ID then only people with those specific access
levels can open this closet
         - **None**: No access, free for all just like a normal closet

**Security:** After you have set the access level it is important to
lock the access panel with a "multi-tool", so no one else can change it.
Unlock the panel again with the "multi-tool" to set the new access type

       **2. Give your own name & description**
To rename the closet or change its description you must first make the
closet access type as personel i.e. make it yours, then use an pen to
complete the job. You cannot change names of departmental or no access
closets because that's vandelism

       **3. Custom Paint Job**
    Use airlock painter. Not intuitive but does the job. 
   
![Screenshot
(181)](https://user-images.githubusercontent.com/110812394/234202905-00946b88-2513-489d-b0a2-d618a72f3e49.png)

      **4. Personal closets**
Round start personal closets can have their access overridden by a new
ID when in it's unlocked state. This is useful if the last person has no
use for the closet & someone else wants to use it.


    - **Why its good for the game?**      
1. Having your own personal closet with your own name & description
gives you more privacy & security for your belongings so people don't
steal your stuff. Personal access is more secure because it requires you
to have the physical ID card you used to set this access and not an ID
which has the same access levels as your previous ID
2. Make secure closets faster without an welding tool & screw driver
3. Bug fix where electronics could be screwed out from round start
secured closets countless times spawning a new airlock electronic each
time
      
2. **Access secured freezers**

    - **What about them?**
The craftable freezer from #73942 has been modified to support secure
access. These can be deconstructed with welders just as before

![Screenshot
(185)](https://user-images.githubusercontent.com/110812394/235905000-ba165feb-4384-4759-b46b-dba77c9e6ba3.png)


    - **How does it work?**
The access stuff works exactly the same as secure closets described
above. You can rename & change description with pen just like the above
described secure closets. No paint job for this. Install card reader
with the same steps described above.

    - **Why it's good for the game?**
1. Make access secured freezers faster without a welder and screwdriver
2. Your own personally named & locked freezer for storing dead bodies is
always a good thing

4. **Access secured suit storage unit**
   - **What about them?**
Suit storage units now require airlock electronics for construction. The
access levels you set on it will be used to decide
       1. If a player can unlock the unit
       2. If the player can open the unit after unlocking
       3. If the player can disinfect whatever is inside
       
      By default all round start suit storage units have free access

   - **Install card reader**
Provides the same functionality as secured closets described above. To
install it
     1. Open its panel with a screw driver
     2. Add a card reader to it with hand
     3. Close the panel
     
     When you deconstruct the machine the card reader pops back out

   - **Why it's good for the game?**
1. Having your own access protected and named suit storage unit so
random people don't steal your mod suits? Who wouldn't want that.?
Provides security for department storage units.
2. If you have the unit locked then you cannot deconstruct the machine
with a crowbar providing additional security
3. Fixes #70552 , random people can't open/unlock the suit storage unit
without access. You can set personal access to make sure only you can
access the unit

## Changelog
🆑
add: Access secured closets. Personal closets can have their access
overwritten by an new id in it's unlocked state
add: Access secured freezers.
add: Access secured suit storage units.
fix: Suit storage unit not having access restrictions.
fix: airlock electronics not properly getting removed after screwing
them out from round start lockers
fix: round spawned open crates run timing when closed
fix: open crates hiding stuff in plain sight
fix: open closets/crates sucking up contents during late initialize
causing them appear empty & open
/🆑

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
2023-05-08 10:42:54 -07:00
Cheshify
b1716732b0 The North Star Expeditionary Vessel - A Second Wind (#74371)
## About The Pull Request
A new map for TGstation, in the works! It has 4 fucking Z levels, a
massive expansive maintenance with unique designs, and some unique code
features in the works.

To Do:
- [x] Update the Map to Modern TG
- [x] Local Tests
- [x] Work on Map Optimizations
- [x] Run Live Tests

Fikou has greatly helped with creating an important flavour aspect of
this map, Trek Uniforms on anyone who joins! See the forum thread for
more. This includes the framework for innate station traits, station
traits loaded as long as it's in a map's json

Here's the forum dev thread there are screenshots there.
https://tgstation13.org/phpBB/viewtopic.php?p=657252#p657252

### Mapping March
Ckey to receive rewards: Cheshify

## Why It's Good For The Game
So, this is the North Star. An effort taking multiple mappers and of 9~
months of hard work. This map was not initially designed for TGstation,
but always designed for TGstation code. The process of retooling the map
for TGstation was an absolute joy and I feel like the map definitely has
it's niche as a massive and unique experience for it's players.

I adore this map, it's gorgeous, has a unique aesthetic, and a number of
very funny interactions with multi-Z. The PR comes packed with unique
mechanics for future mappers (innate station traits!), a number of
map-fitting shuttles, and a fun spacefaring uniform gimmick for the
crew.

**This is my second attempt at bringing this map into rotation. It was
initially closed due to concerns about maptick and performance, as I
wasn't willing to push for a map to be added to the repository if it
didn't function to my own standards. I've been informed by a number of
coders far better than I that optimizations are arriving and enroute, so
I think it's time to dust her off and set sail for another journey.**

**Quick Disclaimer: Due to some design decisions disagreed upon by the
headcoder team and myself, the map will not be featuring unique
roundstart uniforms, and despite my design intentions, the innate
station trait features will be shelved for now.**

## Changelog
🆑 Cheshify, Fikou, Blue-Berry, Zytolg, InfiniteGalaxies, Striders,
Sylphet, Riggle, Soal, Andry, Crit, Deranging, and Pumpkin0.
add: Nanotrasen's Newest Exploratory Vessel is now available! Meet the
North Star!
add: More landmines, and a landmine random spawner.
add: energy barriers now have a regenerative subtype, fit for permanent
installations.
code: Raised the number of possible level render to 4, check your
preferences if needed to be reduced.
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-04-14 06:59:00 +12:00
MrMelbert
6085e3b5ee Reagent soup / Soup rework / Stoves - A kitchen expansion (#74205)
## About The Pull Request


![image](https://user-images.githubusercontent.com/51863163/227391708-8de28b68-149f-4e02-a2d3-22f6e3067784.png)

**This PR:** 

- Reworks most* existing soup into reagents. 

- Adds Stoves and Ranges. Ranges replace most* existing ovens. 

- Adds soup pots, to cook soup

**How does it work?** 

In the kitchen you will find a stove now.

Stoves act as a "reagent container heater", essentially a chem heater.
You can set a pot onto the stove.

To make soup, visit the cooking recipe book for a guide. Most recipes
are the same as before, just tweaked slightly - Add water to the pot (50
units for 1 batch generally), then add all the corresponding ingredients
to the pot. Set the pot out on the stove and right click it to turn it
on. If the recipe's correct, shortly it will start to mix and give you
soup!

One soup recipe will give you roughly 3 servings of soup. You can pour
our the soup into a bowl using a ladle or just by pouring it manually.

Of note: **All of the reagent contents of the ingredient are transferred
into the soup.** Better, more nutrient rich ingredients produces more
soup, and poisoned produce will pass it on.

If you place the soup into a chem master, you will notice it's roughly
half "soup reagent" and half a variety of reagents, including nutriments
/ proteins. This is your soup! It is recommended you serve your soup
with the reagents included, as they make up more nutrition for the
customer, however you can separate it out if you're picky.

**Todo:** 

- [x] Fill out the PR body a bit more 
- [x] Mapping (wait for big merge conflict pr to go past)
- [x] Soup colors
- [x] Balance pass over for soup recipes
- [x] TODOs
- [ ] Unit tests
- [x] Cullen Skink's recipe is invalid
- [x] Try to see if there's an easy way to prevent soup from fattening
you up too easy.

## Why it's good for the game

Adds some more depth to the kitchen and moves chef away from the
click-button-get-food style that exists.

Allows for inherently custom soups by the way of making it reagents, so
no need to support custom soup food items.

## Changelog

🆑 Melbert, stove and pot sprites by Kryson, ladle sprite by Kinneb
add: Kitchens are now stocked with Ranges. 
add: You can now print (and create) Stoves. 
add: The dinnerware vendor now dispenses ladles. 
add: Spoons can now actually spoon... things.
add: Soup has been reworked entirely. Soups are now reagents, cooked via
a soup pot on a Stove or Range. Simply add water and your required
items, then apply heat. Be careful not to boil over!
add: Stoves, Ranges, and Griddles will now heat up their surroundings -
don't turn them on around plasma!
fix: Fixes being able to cook in an Oven while the room is depowered
qol: Hitting a customer bot with an incorrect recipe no longer counts as
a hostile attack leading to your demise shortly after
refactor: Customer bots that request a reagent now use custom orders
code: Cut down a lot of code in the crafting menu code, and removes some
ugly ispaths
del: Soup is no longer food items, so can't appear in random food pools
(at least not yet).
balance: Virus Food recipe now requires you cool it to 200k.
/🆑
2023-04-07 19:42:49 -06:00
Helg2
af81a87446 Adds bacteria rich moldy food to random trash spawners. (#74276)
## About The Pull Request
So, as bacteria bread from perma vendor was nerfed, the only way to
obtain mold for cytology is from the mini-fridges. And they won't even
spawn when needed. Correct me if i'm wrong.

And so this adds moldy breadslices and pizzaslices to
`random/trash/garbage` spawner which appears in trashcarts and in
trashbagsfrom the trashcarts. Also added it to `grille_or_waste` spawner
so it can just randomly spawn on the floor.

About the damp rag. Just thought that there should be at least some
piece of cloth at pile of garbage, as there is none at the moment. And
it's quite usefull also, you can clean yourself or your fingerprints
with it. Can cut it out if needed, not a big deal.
## Why It's Good For The Game
More chances to find what you want to do cytology.
Cytology slightly more practical.
Damp rag is usefull.
## Changelog
🆑
add: Bacteria rich moldy food (like breadslices and pizzaslices) now
spawn in trashcarts, trashbags and randomly on the floor.
add: Damp rag now spawns in the trashcarts and etc.
/🆑
2023-03-27 19:49:17 +02:00
John Willard
302060acda Removes bepis Techweb and reworks tech disks in general (#74147)
## About The Pull Request

Did you know that there's 2 types of disks Science can print?
One of them creates a whole new techweb and is used to transfer data to
and from techwebs (which used to be for Theft objective, but nowadays
all it's used for is Admin techweb).
The other one is these disks you can find from Lavaland & for the
Limbgrower which holds nodes on them directly, they don't need anything
else.

These are both printable and have very similar names which could easily
confuse people, especially since they are both printed and used at the
same place, being the R&D room and R&D console.

This will hopefully simplify it, by removing the base Tech disks from
being printable. The only one that can be printed now is for
Limbgrowers, which can't be easily mixed with the other type of Disk.
Outside of that, Lavaland disks are staying the same, but I've moved
Bepis disks to use this, which allows us to remove Bepis techwebs being
made every single time a new bepis disk is created.

Examples of it in-game

![image](https://user-images.githubusercontent.com/53777086/226496444-28b17134-526d-4fc8-969b-952f7afdc36f.png)

![image](https://user-images.githubusercontent.com/53777086/226496483-86969bf9-56db-4824-a495-594afd9f3912.png)

![image](https://user-images.githubusercontent.com/53777086/226496498-7c10f636-5588-4622-934c-11f019079d2e.png)

## Why It's Good For The Game

There's no reason why every single Bepis node should be making a whole
new techweb set with experiments to complete, roundstart nodes
researched, being constantly checked if it should gain research points,
have a list of papers to publish, and everything else that techwebs do.

Can you guess which disk does what in this screenshot?

![image](https://user-images.githubusercontent.com/53777086/226496856-10cf71b0-7469-4568-818f-ecadcf03e677.png)

## Changelog

🆑
balance: You can no longer print Technology data disks. You can still
print Tech disks, which hold techweb information on it, just not the one
that holds up to 5 nodes.
balance: ^ Because of this, there's no way to download nodes from an RD
console and upload them to an Autolathe to bypass departmental
restrictions, you have to go through a Techfab/Circuit imprinter for
your needs.
balance: Ones that are found cannot have anything uploaded/deleted off
of them either, you can only upload them to the Web.
code: Every individual Bepis disk no longer create an entire techweb
/🆑
2023-03-26 18:23:03 -04:00
NamelessFairy
8b2aed0342 New Station Trait, Employee Birthday! (#73751)
<!-- 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

Adds a new neutral station trait the announces to the crew its a member
of staff's birthday, spreads some confetti/balloons around and gives out
some birthday themed items including hats, new toys and cake ingredients
for the chef.

The mechanical impact of the trait is quite minimal only giving out some
fluff items and giving the janitor some extra work. However the event
has a lot of potential roleplay impact by singling out a crewmember and
informing everyone about their birthday, I can foresee players using
this as an opportunity to run birthday themed gimmicks or give one
specific player preferential treatment for the shift which should allow
for some interesting stories to be produced.

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

## Why It's Good For The Game

Partially explained in my about section but in short I think a lot of
the station traits we have at the moment are very mechanically driven
and we could use a more open ended roleplay prompt themed one which this
one provides. The idea of one player getting put in the spotlight while
not being an antagonist is also something I can see potentially great
stories come from.

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

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and 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. -->

🆑
add: New Neutral Station Trait, "Employee Birthday", its someone on the
crews birthday, make sure to wish them a happy birthday and perhaps get
them a gift.
add: Two new party themed items have been added to the arcade prize
pool, the party horn and a box of party poppers.
/🆑

<!-- 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. -->
2023-03-06 12:52:00 +00:00
tralezab
64de1617b2 Refactors lizard fake canned food into real canned food (#73469)
## About The Pull Request

/obj/item/food/canned_jellyfish, /obj/item/food/desert_snails, and
/obj/item/food/larvae are now all /canned subtypes. All this means is
that to eat them, you use them once, and now they drop an empty tin
rubbish item.

## Why It's Good For The Game

Making fake false versions of real types that exist is such a pet peeve
of mine, we recently had a bug from it where the snails would go bad.
But even with that fixed you're just chomping the container of snails
and it's not the same behavior as all the other cans
grumgrugmrg I FIXED IT.

## Changelog
🆑
refactor: Lizard related canned food now acts like canned food
/🆑
2023-02-17 15:43:03 -07:00
Tim
7d47fbef42 Refactor lighting items that use fuel (#72146)
## About The Pull Request
Fixes #71826

This does the following:
- Makes candles a subtype of flare
- Fixes candles having lighting inconsistencies
- Fixes burning items (welder, candles, flares, etc.) not causing
ignition effects when held in hand
- Adds burnt flares and melted candles to maint loot and trash spawners
- Add match lighting sound when candles are lit
- Add time defines for fuel amounts and rounded them (ex. instead of
32.3333 minutes, it's now 35 minutes)
- Light sources that burn will now spawn a trash item once fuel is spent
- Light sources that burn now have a welder hitsound
- Light sources that burn can now be extinguished by a fire extinguisher
(except flares)
- Light sources that burn can now be used to ignite another object on
fire (ex. a lit candle can be used to light a cigarette)
- Light sources that burn and are lit now do `BURN` damage while
attacking

## Why It's Good For The Game
Code is more cleaner and consistent.  Also fixes some bugs.

## Changelog
🆑
soundadd: Candles will now use the match lighting sound when lit
soundadd: Light sources that burn will now have a welding hitsound
fix: Fix candle light behaving erratically
fix: Fix burning items that are held in hand will now have an ignition
effect on the turf. (ex. lit welders in hand will now ignite plasma in
the air)
balance: Light sources that burn and are lit now do `BURN` damage while
attacking
balance: Light sources fuel amounts were rounded to exact numbers (ex.
instead of 32.3333 minutes, it's now 35 minutes)
qol: Light items that burn can now be extinguished by a fire
extinguisher (except flares), used to ignite another object on fire, and
will now leave a trash item once fuel is used
qol: Add burnt flares and melted candles to trash spawners
refactor: Refactor lighting items that use fuel to be more robust
/🆑

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2023-01-06 12:19:33 -08:00
Comxy
e7d788348f Frog Basic Mob Refactor (#72044)
## About The Pull Request
Refactors the frog into a basic mob. The frog now does the same as the
old frog and can now properly be commanded by the regal rats.
## Why It's Good For The Game
## Changelog
🆑
refactor: Refractors the frog into a basic mob
/🆑
2022-12-27 21:06:57 -08:00
Rhials
47ec8ecd38 Adds the Sandstorm random event, directional meteor functionality, space sand. (#71802)
<!-- 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


![sandstorm](https://user-images.githubusercontent.com/28870487/206070641-80d37afc-a365-4f5e-ad48-e8cdf0153ac9.png)

Hey guys, it's your boy. Back at it again with another meteor-adjacent
event PR.

Adds the Sandstorm random event, inspired by the long-unused admin only
one. It picks a direction to approach from, alerts the crew of its
imminent arrival, and after a little over a minute of preparatory time,
sends waves of sand and dust to grind down everything in that direction.

To accomplish this, some minor adjustments had to be made to meteor
generation code. They can now be passed an optional arg for a direction
to be thrown from, and will pick a random one if no direction is given.

Also introduces the newest addition to our cast of meteors -- space
sand! It's even weaker than space dust, and shows up exclusively in this
event. Space sand is **ineffective against rwalls**, and will not damage
the arrivals area's high-tech sand-resistant glass. This is to prevent
this event from venting one of the most dust-vulnerable areas on the
station, and to make sure new players aren't shafted into firelock hell
when the right angle is picked.

I did a lot of testing and tweaking of numbers to get the damage to
average at about the level I'm comfortable with. This is meant to be a
high-impact event that isn't as destructive (or unavoidable) as a meteor
wave. Speaking of avoidance, let's talk about mitigation:

You get an early warning and a direction the sand will come from. You
have time to grab repair supplies, move to safety, get a MODsuit. You
can make worthwhile repairs as the sand comes in from inside (or
outside, if you're brave enough) with nothing more than a welder and
iron sheets. If you're feeling particularly spicy, you can leverage your
prep time setting up shield generators, which spawn in engineering and
have been added to the maintenance machines loot pool. Anyone can
contribute, so do your part as a good crewmate and help out!

All that being said, the event can't be prevented entirely. Shit's going
to get shredded, especially on the outside of the station. Damage will
vary heavily based on the station and direction, ranging from
inconsequential to threatening. It should happen late enough into the
round that, at the bare minimum, the crew shouldn't be caught
unprepared.

For those of you who are worried, the ORIGINAL sandstorm admin event is
still with us too. It's been moved from the space dust file into the
Sandstorm event file. This PR also makes a very minor change to the
naming of the space _dust_ events, for better menuing.

So, to sum it all up: Sand hits grinds down one side of the station, you
get a minute of warning, shield generators now spawn in maintenance. Be
a good crewmate and help where you can.

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

## Why It's Good For The Game

More event variety is good, and events that give the players agency on
how bad the impact will be is even better.

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

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and 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. -->

🆑 Rhials
add: Sandstorm random event! A random side of the station is pummeled by
an onslaught of sand and dust. If you hear that one is approaching, grab
a welder and some iron to help with repairs!
add: Space sand! It's weak and doesn't hurt reinforced walls, but
shouldn't be underestimated in high quantities.
code: You can now pass a start direction to the
spawn_meteors/spawn_meteor global procs.
/🆑

<!-- 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. -->
2022-12-25 12:47:27 -08:00
kawoppi
b4615f9f40 turns axolotls into basic mobs (#71778)
## About The Pull Request
Changes axolotls from simple mobs to basic mobs. I'm not well versed on
the differences between simple and basic mobs but it looks like axolotls
are still working as before. Their idle movement may be slightly
different compared to before and now they don't move away while you're
pulling them.
## Why It's Good For The Game
Basic mobs are better for AI and probably some other stuff as well and
there's the freeze thing also.
## Changelog
🆑
code: turned axolotls into basic mobs, their idle movement may be
slightly different and they won't move while you're pulling them anymore
/🆑
2022-12-07 13:54:32 -08:00
John Willard
2425531eb2 Removes tablets (not PDAs) entirely. (#71507)
## About The Pull Request

**Comes with an UpdatePaths!**

Removes the tablet subtype, PDAs now replaces them entirely.

Nukie and Silicon tablets are now subtypes of the PDA instead, while
contractor ones were removed entirely as they didn't do anything and
were unused (though it wouldn't be hard to re-add).

Nukie PDAs are now the only type of PDA that uses modular_tablets.dmi,
which is just larger icons of modular_pda. Each application requires an
icon state in both of these, for 2 different sizes, which makes it
annoying to make new applications, especially if it can also run on
computers/laptops.

### Icons

Because Silicon tablets are now a subtype of PDA, they use PDA icons
instead of tablet ones. Luckily for us, they already exist in code.

![image](https://user-images.githubusercontent.com/53777086/203876575-56eb1593-774c-47c6-8e7d-491a7805f28c.png)

AI's don't use a tablet icon though, so they aren't affected.

## Why It's Good For The Game

There's very little difference between tablets and PDAs, PDAs overshadow
them in every single way, so at this point I don't see why we should
have both of these, and if you compare the two in usefulness and actual
in-game use by players, it's a no-brainer than the item all players get
roundstart and comes with a messenger should be the one we go with.

Also as said in the about section, when making an app you would need to
make icon states for the program running for all hardware it can run on,
which is Computer, Laptop, PDA, and Tablet.

Laptop is just a smaller computer icon
PDA is just a smaller tablet icon

However, you can't simply shrink the size of the icon, instead you have
to completely resprite the same app icon FOUR TIMES for it to not
bluescreen on all these different devices.

<details>
<summary>
Here's examples of it
</summary>
Computer (NOTE: *They share the same icon file as regular computers*)
<img
src="https://user-images.githubusercontent.com/53777086/203876801-486a8054-489a-4983-bdad-a2599b4dc379.png"/>
Laptop
<img
src="https://user-images.githubusercontent.com/53777086/203876333-58e5d135-f4c6-4a02-8948-1df771e294a4.png"/>
Tablet
<img
src="https://user-images.githubusercontent.com/53777086/203876352-816c7fb1-c681-40b9-99e0-052f49632c7f.png"/>
PDA
<img
src="https://user-images.githubusercontent.com/53777086/203876358-1cf7253d-3c6a-456a-8133-ebf7f0351637.png"/>
</details>

If we wish to help in simplifying this, we should remove tablet icons
entirely, which means 1 less icon to worry about. To do this, we'd need
to resprite nukie PDAs, however I am very much not a spriter and never
tried GAGS, so I'll leave it to someone else to do.

## Changelog

🆑
del: Tablets are now removed, PDAs are now the base 'tablet'. Silicon
and nukie tablets are now PDAs.
/🆑
2022-12-02 00:15:14 -08:00
John Willard
fd19f6d5a0 The Mining vendor now works like the Chef produce console (has to go through Cargo) (#71023)
## About The Pull Request

Now comes with a Hackmd: https://hackmd.io/ImTe5FLeTgmI7spTWKBaFQ?view

In-game screenshots:


![image](https://user-images.githubusercontent.com/53777086/199602671-a604c6da-fec0-487d-b67e-eb0e4380e4d6.png)

![image](https://user-images.githubusercontent.com/53777086/199602695-8d7afb20-3b6c-467f-ac78-37de03dc20d2.png)


![image](https://user-images.githubusercontent.com/53777086/199725350-b01c4ddd-3fec-4288-a698-02daf91f787b.png)

Removes the old Mining vendor console and all its bad code. Instead, the
chef produce console was generalized and a NEW mining vendor is a
subtype of it. If they try to Express this console, it will be 1.5x the
mining points (compared to 2x for the Chef produce console atm), so it
is technically possible, but it is still better to order it through
Cargo.
Different to the Kitchen crate, this one is a private order by the Shaft
Miner, using mining points instead of Credits. Cargo CAN emitter it
open, but I think that's an acceptable risk with all crates. As shown in
the screenshot, Cargo will immediately know who ordered the items so
knows who to call to pick it up when needed.

This also means Shaft Miner's vendor is now categorized somewhat. I
tried my best to make sense out of it but some items really don't make
sense (laser pointer, soap...)

I split the different sections of orderable items into different files
for better management, and de-hardcoded it and its TGUI to make it
easier for anyone who wants to add more to it.
I also made the produce console use paths and added ways 'categories' to
produce consoles, which indicates which sections you should and
shouldn't be allowed to see.
https://github.com/tgstation/tgstation/pull/71007 already did part of
this but it isn't merged yet so :/

Free golems are mostly unaffected by this. Their console only works in
express mode and doesn't increase the prices for it. The only downside
is the cooldown.

I still have some things to finish on this PR so it'll be left as draft
until at least tomorrow.

## Why It's Good For The Game

https://hackmd.io/ImTe5FLeTgmI7spTWKBaFQ?view

1. A large problem currently with Miners is that they don't interact
with the station, this will at least help integrate them more into their
own department, by making the cost of their equipment cheaper if they
bother to actually go through Cargo for their gear.

2. It also means that a non functional Cargo would affect Shaft Miners
too, and as they have access to the shuttle, maybe we can expect some
Miners to pick up the slack if needed.

3. The old mining vendor was the ONLY vendor in the game that had
infinite stock. It doesn't need a refill or anything like any other
vendor, and every other vendor uses credits, mining points is just shaft
miner credits. Why are they an exception? At least being ordered through
the shuttle makes sense.

4. It opens the QM being able to see easier what Miners are doing, and
prevents miners from hiding on Lavaland to do nothing but hunt fauna if
they were meant to be demoted or something by the QM. Basically, gives
the QM more control over the people working in their department.

## Changelog

🆑
add: Shaft Miner's equipment vendor now orders their equipment through
the Cargo shuttle, though you can spend 1.5x the points to express it,
making it a Mining version of the Chef's produce console, with a
weakened express tax.
/🆑
2022-11-30 19:29:28 -08:00
Tim
333dcef6ad Refactor janicart to be subtype of mop bucket (#71094)
## About The Pull Request
Fixes #41123

This gives mop buckets the same behavior as janicarts. This means it
inherits the same hotkeys, context screentips, etc.

Other niche changes:

- Fix reagent containers playing attack animation when transferring
reagents to mob bucket
- Fix syringes and droppers not updating the appearance of target when
used
- Regular mop bucket has the same RMB hotkey as janicart for wetting mop


## Why It's Good For The Game
One less bug off tracker.  Better consistency with code.

## Changelog
🆑
fix: Fix reagent containers playing attack animation when transferring
reagents to mob bucket
fix: Fix syringes and droppers not updating the appearance of target
when used
qol: Regular mop bucket has the same RMB hotkey as janicart for wetting
mop
refactor: Refactor janicart to be subtype of mop bucket
/🆑

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-21 19:29:56 -08:00
OrionTheFox
bbb956d2a6 Removes Bowls from garbage spawners because they don't fit in trash bags and I'm SICK of not being able to clean! (#71152)
## About The Pull Request
Let me give you a scenario.

---

THIS, is you. Say hi!

![image](https://user-images.githubusercontent.com/76465278/200268480-9dcf1f45-3bc5-402d-b743-b0649deefb08.png)

You're a loyal janitor aboard NT-SS13. You love your job; despite the
dangers, it's generally not too busy or tedious. Just a spray, a sweep,
and put it all in a bag.

---

This. This is your enemy.

![image](https://user-images.githubusercontent.com/76465278/200269058-957ca433-4666-44b5-9c10-ae0da75219cb.png)

Some crewmembers continuously leave them in maintenance, tossing them
into garbage bins as they pass.
This bowl, you cannot spray it. You can sweep it as far as you want, but
in the end, cannot put it into the bag.

![image](https://user-images.githubusercontent.com/76465278/200269156-bbc7758b-9cbe-4a3b-8d17-9aa53254b4b2.png)

---

It exists to torment you.
Nothing more, nothing less.

You hate the bowl. And it hates you.
Wake up.

![image](https://user-images.githubusercontent.com/76465278/200269456-a7fda598-3556-4069-bd2a-44a8793c198f.png)
## Why It's Good For The Game
Usually when you pass a trash pile you expect it to have trash, and
entire bowls aren't technically trash code-wise, nor can you clean them.
Yes, this PR has a modicum of salt. It was salt left behind in THE DAMN
BOWLS.
## Changelog
🆑
del: NT has decided to begin a Recycling initiative, asking crew to
please stop throwing their bowls away in maintenance. You should only
find trash and grime from now on!
/🆑
2022-11-20 23:15:08 -08:00
Dani Glore
be1edab621 Sign Language Refactor & Bugfixes (#71265)
## About The Pull Request
This PR contains an intermediate refactor and a bug-fix for sign
language, which was originally from the Tongue Tied quirk/tongue. With
helpful advice from @MrMelbert and @LemonInTheDark, I have successfully
decoupled sign language from the tongue and ported it into a highly
modular DCS component, and then added an Action for toggling it. Big
thanks to @Wallemations, the original creator of Tongue Tied, for
creating the new Action sprite and helping me to complete this project!

The new sign language component is added to all new Carbon mobs, and
incrementally overrides several critical functions, variables, and
argument lists relevant to a mob's speech; the component primarily
listens for the addition/removal of trait `TRAIT_SIGN_LANG` in order to
function.

Additionally, fixed a bug in the original implementation of sign
language that caused its say verbs such as "emphatically signs" to stop
working. The bug was caused by an unsafe early removal of exclamation
points from the input string, causing a conflict with the `say_mod` proc
which requires such punctuation points to be present.

Here's a granular list of changes:
- Added a ubiquitous signal to extend the behavior of
`/atom/movable/proc/say_quote`.
- Added a ubiquitous signal to extend the behavior of
`/atom/movable/proc/lang_treat`.
- Fixed a bug in the original implementation of sign language that
caused its `verb_yell` to stop working.
- Refactored sign language into a Carbon-only DCS component.
- Refactored the Tongue Tied tongue to use `TRAIT_SIGN_LANG` and
`TRAIT_MUTE`.
- Removed the Tongue Tied quirk, in favor of two separate quirks.
- Added the Signer quirk for sign language, good, costs 4 points.
- Added the Mute quirk, negative, gives 4 points.
- Added a rare sign language Action granter book to maint and space
loot, "Galactic Standard Sign Language".

## Why It's Good For The Game
This PR tactfully re-implements Tongue Tied, re-introducing it as two
new quirks: For sign language itself, I added the Signer quirk, which is
a good quirk which allows you to use sign language for 4 quirk points. I
also added the Mute quirk, which grants 4 quirk points in exchange for
your audible voice. There is also a marked improvement in the code
health as a result of my changes.

Here's a preview of the sign language Action. If you're also mute, it
becomes invisible to reduce clutter:

![image](https://cdn.discordapp.com/attachments/326831214667235328/1041669853741858816/GIF_11-13-2022.gif)

In regard to how useful sign language is, it can be used as:
1. A way to communicate across a vacuum without a radio.
2. An easy way to communicate with deaf people.
3. An easy way to communicate as a Mute person.

## Changelog

🆑 A.C.M.O.
del: Removed the Tongue Tied quirk. The tongue can still be found and
used in-game.
refactor: Refactored Tongue Tied's tongue to use the Sign Language and
Mute traits.
add: Added Sign Language innate action. Granted by book or quirk.
add: Added the Galactic Common Sign Language book as rare maint and
space loot.
add: Added the Signer quirk, which teaches you sign language in exchange
for 4 quirk points.
add: Added the Mute quirk, which grants you 4 quirk points in exchange
for your voice.
fix: Fixed sign language say_yell verb, which allows you to emphatically
sign.
/🆑

Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
2022-11-20 06:22:10 +00:00
skylord-a52
53433bfbd2 Allows languages to weight the likelihood of certain syllables, refactors certain code related to pick_weight() (#71275)
## About The Pull Request

This PR does the following:
- Defines a new proc in __HELPERS/_lists.dm called
`pick_weight_recursive()`. This is the code from
`/obj/effect/spawner/random/` that allows for nested weighted lists,
moved to its own proc.
- Replaces explicit code in spawners/random.dm with calls to
`pick_weight_recursive()` where appropriate
- Deletes the redundant (and barely used) proc
`/obj/item/loot_table_maker/proc/pick_loot`, as this was equivalent to
`pick_weight_recursive()`
- Moves the global proc `fill_with_ones()` from spawners/random.dm to
__HELPERS/_lists.dm
- Replaces `pick()` in language syllable selection with
`pick_weight_recursive()`, allowing languages to define syllable weights
or use nested lists of syllables.
- Reformats Galactic Common to use nested lists of syllables, allowing
English and Chinese syllables to occur at equal frequency despite having
different numbers of each.

## Why It's Good For The Game

Allowing languages to define syllable weights and nested groups of
syllables is a relatively small change that greatly expands what you can
do with them. In addition to making Galactic Common look nicer in code,
this change also allows for the easy creation of languages with highly
uneven syllable distributions (including ultra-rare secret syllables,
perhaps) or the quick creation of pidgin languages that combine multiple
syllable sets.

Using a new proc simplifies spawner code by reducing repetition. Making
it global allows for other code to easily implement the same flexible
and elegant system of nested lists that spawners already use.

## Changelog
🆑
refactor: defines a new global proc, pick_weight_recursive()
code: languages can weight syllables, and galactic common's definition
is easier to look at
/🆑

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-16 08:50:47 +00:00
Jacquerel
83c75cac2c Brimdemons & Lobstrosities drop (slightly) useful organs (#70546)
Goliaths, Legions, Watchers, and (as of recently) Bileworms all drop
something vaguely useful when they die.
Brimdemons and Lobstrosities do not. This PR aims to fix that, so that
there's at least some vague benefit to hunting them.

In this case it takes the form of organs you get when you butcher them,
similar to the regenerative core from Legions.
As they're similar to the regenerative core, I modified the regenerative
core to extend from a new common "monster core" typepath which these two
new organs also extend.
Like the regenerative core, both of these items do something when used
and something slightly different if you go to the effort of having
someone implant them into your body. They also decay over time, and you
can use stabilising serum to prevent this from happening.


https://user-images.githubusercontent.com/7483112/195967746-55a7d04d-224e-412d-aedc-3a0ec754db3d.mp4

The Rush Gland from the Lobstrosity lets you do a little impression of
their charging attack, making you run very fast for a handful of seconds
and ignoring slowdown effects. Unlike a lobstrosity you aren't actually
built to do this so if you run into a mob you will fall over, and if you
are doing this on the space station running into any dense object will
also make you fall over (it shouldn't make you _too_ much of a pain for
security to catch).
The idea here is that you use this to save time running back and forth
from the mining base.

The Brimdust Sac from the Brimdemon covers you in exploding dust. The
next three times you take Brute damage some of the dust will explode,
dealing damage equal to an unupgraded PKA shot to anything near you (but
not you).
If you do this in a space station not only is the damage proportionally
lower (still matching the PKA), but it _does_ effect you and also it
sets you on fire. You can remove the buff by showering it off.
The idea here is that you use this for minor revenge damage on enemies
whose attacks you don't manage to dodge.


https://user-images.githubusercontent.com/7483112/195967811-0b362ba9-2da0-42ac-bd55-3809473cbc74.mp4

If you implant the Rush Gland then you can use it once every 3 minutes
without consuming it, and the buff lasts very slightly longer. It will
automatically trigger itself if your health gets low, which might be
good (helps you escape a rough situation) or bad (didn't want to use it
yet).


https://user-images.githubusercontent.com/7483112/195967888-f63f7cbd-60cd-4309-8004-203afc5b2153.mp4

If you implant the Brimdust Sac then you can use it once every 3 minutes
to shake off cloud of dust which gives the buff to everyone nearby, if
you want to kit out your miner squad. The dust cloud also makes you
cough if you stand in it, and it's opaque. If you catch fire with this
organ inside you and aren't in mining atmosphere then it will explode
inside of your abdomen, which should probably be avoided, resultingly it
is very risky to use this on the space station.
2022-11-01 00:28:17 +01:00
ArcaneMusic
a4446ff754 Adds a QM statue, as all other heads have one. (#70744)
* Adds a QM statue, bringing it on par with every other head of staff.
2022-10-30 07:54:27 -04:00
LemonInTheDark
85b2d5043d Optimizes qdel related things (slight init time savings) (#70729)
* Moves spawners and decals to a different init/delete scheme

Rather then fully creating and then immediately deleting these things,
we instead do the bare minimum.

This is faster, if in theory more fragile. We should be safe since any
errors should be caught in compile since this is very close to a
"static" action. It does mean these atoms cannot use signals, etc.

* Potentially saves init time, mostly cleans up a silly pattern

We use sleeps and INVOKE_ASYNC to ensure that handing back turfs doesn't
block a space reservation, but this by nature consumes up to the
threshold and a bit more of whatever working block we were in.

This is silly. Should just be a subsystem, so I made it one, with
support for awaiting its finish if you want to

* Optimizes garbage/proc/Queue slightly

Queue takes about 1.6 seconds to process 26k items right now.
The MASSIVE majority of this time is spent on using \ref
This is because \ref returns a string, and that string requires being
inserted into the global cache of strings we store

What I'm doing is caching the result of ANY \ref on the datum it's
applied to. This ensures previous uses will never decay from the string
tree.

This saves about 0.2 seconds of init
2022-10-30 00:09:15 -07:00
Twaticus
c7dde06668 [MDB Ignore]Hats DMI split (#70060)
Splits head dmi into separate files for both mob and obj icons. Kept similar to suit split categorization + some more. New files include beanie, bio, chaplain, costume, cowboy, default, hats(softcaps, fedoras, head caps, generic hats), helmet(helmets and other armored headgear/hoods), spacehelm, utility(hardhats, mostly work related hats), wizard.
Moves animal/pet head sitting icons to 1 folder, pets_head.dmi
Renames PAI head sitting icon file to pai_head.dmi
2022-10-06 21:37:06 -07:00
Tim
29227aab52 Mail Quirk Goodies DLC - Package Bonanza (#70091)
* Add mail goodies for neutral quirks

* todo later... hur hur hur

* Add mail goodies for quirks

* Move money goodie to random spawner effect

* Add more goodies to positive quirks

* Add more mail goodies for negative quirks

* Add pajama clothing to heavy sleeper mail goodies

* Ad fedora to mail goodies for gamer quirk

* Add trenchcoat to monochromatic quirk mail goodies

* Add mail goodies to all remaining quirks

* Fix linter error

* Add candle box to spirtual quirk mail

* Clean up code for mail goodies

* Rebalance generic goodies mail weight

* Add mail goodies quirk code comments

* Add more noir items for monochromatic

* Add 3 new random spawners icons

* Add nightcaps to heavy sleeper mail goodies

* Fix plushies random spawner to work correctly

* Add code comment explaining quirk weight value
2022-10-04 01:02:38 -04:00
Tastyfish
c373959506 Fixes invalid path in the garbage spawner (#70127) 2022-09-26 11:15:03 -07:00
kawoppi
28597066d3 adds axolotls (#69973)
Axolotls have a chance of spawning roundstart at each moisture trap, just like their fellow amphibians. Their spawn chance is half that of a frog.
2022-09-19 10:02:45 -07:00
Mothblocks
73d471637b Closets now initialize their contents on demand (more than 1.6 seconds of init time saved) (#69587)
About The Pull Request

Closets now initialize their contents once in dump_contents(). This saves more than 1.6 seconds of init time (all /obj/structure/closet now initialize in 84ms).

Not sure what assumptions this will break, there's a lot of closets, so separate PR.

cl
del: You can no longer see maint spawners before the round starts (but your rounds start faster now :) )
/cl
2022-09-04 09:34:56 +12:00
Yaroslav Nurkov
670aa7c4a0 Cucumber Fever (#69639)
About The Pull Request

Not without the help of my friend spriter, I added cucumbers, their seeds, the cultivation itself, so that they could be pickled and washed with a brine jar. I also added a Danish hot dog because it required cucumbers (perhaps that was the end goal), changed a couple of recipes to include cucumbers or pickles. Cucumbers have been added to both cargo orders and bounty cubes, as well as for the food order console

I think the Cucumber Update deserves its plush toy.

gg18b4b2cab0
Why It's Good For The Game

I think more food and drink... would add quite a nice role playing experience, and additional gameplay for hydroponics.
Changelog

cl Vishenka0704 and Ying-The-Pando
add: Cucumbers and pickles
add: Danish hot dog
balance: add cucumbers in dishes where they need
qol: add to bounty cubes, orders - new vegetables
/cl
2022-09-04 09:10:48 +12:00
MrMelbert
835ad42d75 Random statue mapping spawner spawns its statues anchored (#69305)
About The Pull Request

    The /obj/effect/spawner/random/decoration/statue spawner will spawn it's statues anchored, assuming they are structures.
    Also refactored graffiti spawner since I was adding support in this area and saw it

Why It's Good For The Game

If you wanna use the spawner to place a statue in a public area, people will shove it around and stuff, which is lame.
So, by anchoring it when it spawns, mappers don't have to worry about people bumping their pre-placed statues around.
2022-08-29 20:40:26 -07:00
MidoriWroth
7354466b42 Food Expansion 4! The great salad update and more (#69355)
About The Pull Request

This is my fourth food expansion PR, adding and changing quite a few things.
This PR will:

    Add 7 different types of salads
    Add a new ingredient supply beacon box called 'Salads', which includes ingredients used for the salad recipes
    Give cherry jelly its own container, and allow jelly to be ordered from the produce console
    Make cherry jelly actually nourish you when consumed
    Add paçoca, a Brazilian peanut candy requested by @GuillaumePrata
    Add mashed potatoes
    Add shepherds pie
    Add Cullen skink
2022-08-24 21:16:12 -07:00
John Willard
4a274a6e4b [MDB IGNORE] Refactors drinks and fixes a lot of food problems (#69081)
* Makes condiments their own subtype, fixes geese, prepares for merging

* Fixes geese checking drink type instead of edible foodtype to eat gross food.
* Renames foodtype var on drinks to drink_types to prevent above from happening again because it KEEPS HAPPENING. DRINKS AREN'T FOOD!
* Makes Condiments their own subtype of reagent_containers because they don't make any use of being a subtype of food, at all.
* Starts moving things from food to /food/drink subtype in preparation for merging /food/drink with /drink

* fully removes Food subtype

* /reagent_containers/drinks are now /reagent_containers/cup - This is so it's no longer confused with eachother.
* /food/drinks is now /reagent_containers/cup/drinks, so we can keep their special abilities.
* Fixes a LOT of errors with food, which are STILL checking the reagent_containers, despite ACTUAL food being refactored away from it a long time ago.

This doesn't compile yet, but I do want to make sure my progress is well tracked.

* remove copypaste code, changes soda cans

* Removes most copy paste code between the two drinks, moving most stuff to parent whenever needed.
* Made soda cans their own subtype since they didn't share anything with glass bottles anyways.
* Fixes more problems with food/drinks, especially with geese. Geese really were just broken this whole time and no one said a word...
* Removes a snowflake signal, now that both drink types share a common one.
* Adds everything to the .dme

Currently my goal is to get this all compiling, then remove isGlass var by making glass be all glass ones only.

* Moves all icons into a single drinks dmi

I'm not that great at icon stuff, hopefully I didn't forget/break anything.

* Turns juices into their own subtype

This allows us to let them check for type in molotov, to both get rid of a use of isGlass, and so non-glass non-cartons don't show up as 'carton'.

* fixes compile issues, adds updatepaths

* a better updatepaths

* updates the damn maps now

* properly names the updatepath

* how did that get there

* i suck at handling merge conflicts

* how am i this bad

* code improvement and soda fix

* more fixes

* Don't be a timer

Ports from old food bottles to trans the reagents, rather than add a timer to.

* Merge conflicts and fixes bottle smashing

* Bottle smashing is now consistently functional regardless of how much liquid they have in them, when before it would spill first, then smash on the second hit.

* runs updatepaths again
2022-08-12 15:24:14 -04:00
Tim
43480ede67 Add chance for maintenance crate and closet spawners to be open (#68851)
* Add randomized open state for crate spawners

* Add chance for empty closets to spawn open
2022-08-02 20:58:54 -04:00
MidoriWroth
37db4a3e85 Peanuts! + Other various foods/changes (#68390) 2022-07-17 19:04:38 -07:00
Coffee
8a72cd9997 Piano broken sprite, helper, and hit sound (#68003)
* Does the PR

* fixes playsound locations
2022-06-26 20:47:35 -04:00
Coffee
940f8348f8 Fixes regenerative core implants not functioning (#67961)
* Repaths regen_core

* updates var names

* updates var name
2022-06-26 20:20:53 -04:00
Son-of-Space
ac768af647 Re-adds freeform/purge boards to all AI uploads, removes from spawners (#67915)
Re-adds the freeform boards to an open table in all the AI uploads, re-adds the purge boards to the harmful table in all uploads, and removes them from their associated spawners so that all stations have them as roundstart guaranteed spawns.
2022-06-24 13:35:58 -07:00
Tim
f06d735a52 All AI Lawsets are rebalanced, can be researched, appear in config, and random spawners for AI upload. (#66854)
This formally adds the new AI lawsets from #66636 into the game. Every lawset can
be researched, appears in config, and random spawners.
2022-06-06 22:54:29 -07:00
ArcaneMusic
c24ff68629 Adds steam vents to maintenance, adds some flavor to maintenance. (#66915)
* Steam Vent Challenge (Do not meme)

* Fixes icebox, I think

* Changes to how smoke behaves appears to have removed the need for the opacity setting on the vent. Sounds.

* Mapmerge sama please

* Adds signal system, crafting recipe, and some basic crafting organization.

* Potential fix

* Apply suggestions from code review

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>

* makes changes thanks anturk

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
2022-06-01 23:07:50 +02:00
Kapu1178
6d470992cb This tail refactor turned into an organ refactor. Funny how that works. (#67017)
* Fuck you (refactors ur tails)

* Errors

* Wow. Pain.

* Fixes up probably everything

* finish up here

* Fixes hard del maybe

* original owner hard del

* garbage collection runtime

* suck my peen byond

* Mapped tails

* motherfucker.

* motherrfucker. again.

* Whooopppppsie

* yeah bad idea

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

* So anyways I repathed all organs

* Fixes

* really.

* unit test... test

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

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

* Hopefully fixes hard del?

* meh

* Update code/datums/dna.dm

* things n stuff

* repath from master pull
2022-05-30 21:18:34 -07:00
Cheshify
9aeeb24838 Massively Nerfs Snowdin Gamer Loot (#66997) 2022-05-16 16:45:09 -07:00
MrMelbert
3d5a36308e Reduces the chance of spawning a pants altar (#66904)
* reduces the chance of spawning a pants altar
2022-05-13 04:15:51 -04:00
Comxy
b525e9162a Titanium and plastitanium shards and weapons + missing textures. (#66544)
Ever been bothered by why titanium glass and plastitanium glass do not drop their own shard types? Well this is the perfect PR for you! Titanium and plastitanium glass shards never existed, and it is probably because the person who made glass way back in the day didn't have time to add these shards. Luckily I decided to add them after all this time. Every piece of code created has been carefully considered and copied form other code, so then you know it is good code. Also I added more tags, I looked at the guidelines and found that adding the fix and qol tags probably boosts my pr score so it will get merged.
2022-05-08 14:11:08 -07:00
Fikou
a5de76df72 Adds an ancient altar to maintenance. (#66666)
Adds an ancient cult altar to the depths of maintenance.
It can create products woven by the ancient cultists.
2022-05-08 10:36:22 -07:00
Tim
22aa3566ab Card Shark DLC - GIMMIE MY MONEY OR I BREAK YOUR KNEECAPS (#64200)
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2022-05-02 16:56:30 -07:00
sergeirocks100
3f15c6359c Replaces the weed sprites, and removes the /goon folder. (#66136)
Replaces weed sprites, and removes the goon folder
2022-04-27 16:36:58 -03:00
Tim
7ae7322348 AI Lawset DLC - Ten Commandments (#66134)
* Add 10 commandments AI lawset

* Add silicon bible quote

* Remove backslash syntax bloat

* Change 10 commandment lawset to be explicit

* Add ten commandments lawset to config
2022-04-21 17:15:19 -07:00