* Painting Exhibit tweaks (#56349)
* Painting Exhibit tweaks
- Replaces use of C variable with named variables (e.g. crayon, canvas, current_canvas) in artstuff.dm for readability
- Simplifies painting structure's descriptions and moves wirecutting and persistence tutoring to a notice shown on Examine()
- Adds autodoc for two painting structure vars
- Adds a new desc_with_canvas var to painting structure that's used to set its description when it has a canvas
- Adds a new update_name_and_desc() proc to painting structure called when a canvas is added or removed
- Makes it so painting structures are named based off the painting rather than keeping their generic name
* Changes default names to refer to the "exhibits" as exhibit mountings
- Changes "Secure Painting Exhibit" to "Curated Painting Exhibit" as it's more intuitive
* Painting Exhibit tweaks
Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com>
* Frame stacking fix and unit test addition. (#56287)
* Reverts #56205
* Allow things without density to bypass checks
* The rest of the owl
* The rest of the owl
* Doc and tweak
* More feex
* RCD machine frame unit test
* I suck
* AAAAA
* Bad at unit tests
* Revert unit tests (for including in another PR)
* Fix windoor_assembly return logic
* Comment /mob/living/proc/PushAM logic
* Windoor assembley logic tweak
* Fix frame stacking
* Unit test
* Better wording from macros?
* Frame stacking fix and unit test addition.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Refactor card scaling into an element for general item scaling (#56102)
The current TCG code had some code for scaling its cards down when they're on the ground and then scaling them back in hand/inventory. This element aims to preserve this functionality and to allow it work for other items.
While the TCG makes the cards smaller on the ground, this element allows for items to be scaled up OR down when on the floor or in inventory.
While this particular element has to do with scaling, I am looking at ways to expand this sort of icon change functionality to icon_state as well, but there are additional issues with blood decals needing to be redrawn and possibly vis_contents.
* Refactor card scaling into an element for general item scaling
Co-authored-by: Koshenko <53068134+Koshenko@users.noreply.github.com>
* Add deathrattle implant for nuclear operatives (#55903)
Deathrattle implant, comes in box of 8, implant yourself and others, and
you'll get a little notification when they die.
Intended for nuke ops, price around the same as the codebook, since it's
a utility communication item, that actually "plans to fail", so it can't
be too expensive, because it doesn't help them win, just lets them know
how much they are losing by.
* Add deathrattle implant for nuclear operatives
Co-authored-by: coiax <yellowbounder@gmail.com>
* Monkey Martial Arts (#55583)
Moves martial arts to mob/living and lets monkeys use them.
Monkeys have got arms so they should be able to do cool martial arts.
* MMA
Co-authored-by: Jack LeCroy <3073035+jacklecroy@users.noreply.github.com>
* Replacing magic numbers with defines in robot code (#56241)
While scouring robot code for some (hopefully upcoming) fixes, I found a bunch of gross numbers. These numbers are now letters.
* Replacing magic numbers with defines in robot code
Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>
* Moonlight Greatsword var cleanup (#56224)
## About The Pull Request
Currently, there are 2 "Moonlight Greatsword" variants placed on a station maps - Delta and Kilo. Delta has varedited nullrod variant, and Kilo has varedited baseball bat variant. Neither of these are ideal - Delta variant is getting rushed every other round for it's antimagic properties, and Kilo variant is quite odd choice for a sharp greatsword. Additionally, them being directly varedited in the map does not help their case either.
Thats why I have replaced both with a new item to solve all these issues - a new sharp weapon with no antimagic and stats of a slightly stronger knife.
## Why It's Good For The Game
Less direct map varedits and no more cheap antimagic.
* Moonlight Greatsword map unification and balance
Co-authored-by: Arkatos1 <43862960+Arkatos1@users.noreply.github.com>
* Adds wrench able on top of function to grinders (#56205)
Grinders and the like could not be secured on to of a table.
This adds the ability to provide a list of type that the object can be secured on top of.
* Adds wrench able on top of function to grinders
Co-authored-by: NightRed <nightred@gmail.com>
* Stops encrypted report spam (#56165)
Adds a do_after() to the in-spect scanner, and moves its examine_more() into examine(). Removes an unneeded second way to print a report using attack()
* Stops encrypted report spam
Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
* Food Cart remade as a mini-kitchen you can set up in the hallways (AND DO ANYTHING) (ARMFLOYDENKITCHENEZAB) (#55625)
About The Pull Request
The food cart no longer... Does whatever garbage it did before. What, like, store condiments? Terrible. Now you drag it around and set it up, creating a tent with a griddle, smartfridge, and a table. You can pack up anytime. Breaking parts of the tent will pack up the machine and subsequently break it, so careful!
Why It's Good For The Game
The food cart has been an entirely outdated, out classed, completely dead machine to use. We just can do a lot better in 2020. Now it once again has a nice unique function and lets chefs do a new gimmick of being a travelling seller of food. Employs the "steal the janicart" meta from the janitor in the new and equally infuriating "steal the entire damn tent lmao"
Changelog
🆑
add: Food Cart has been completely remade to work as a mobile kitchen
/🆑
* Food Cart remade as a mini-kitchen you can set up in the hallways (AND DO ANYTHING) (ARMFLOYDENKITCHENEZAB)
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Adds database tracking to maintenance pills (#56179)
I originally added maintenance pills, and while already perfect, I felt like polishing them a bit. I didn't do much, just:
- Maintenance pills now track a players score. Gotta eat em all to get that leaderboard highscore!
- More names and decriptions for maintenance pills, most of them suggestions from the old PR
- Renamed floorpill to pill/maintenance in code because that's what they are, no idea why I didn't originally do it
I've also polished the sprite a little bit, because it always looked a bit _too_ shady

(Below is old sprite, above is new sprite)
* Adds database tracking to maintenance pills
Co-authored-by: Time-Green <timkoster1@hotmail.com>
* Add weakref support to qdel (#56171)
qdel() should allow usage of weakrefs to avoid harddels on long duration qdel_in usage
* Add weakref support to qdel
Co-authored-by: spookydonut <github@spooksoftware.com>
* Adds toggling shower's refills (#55895)
Adds the ability to toggle showers water reclaimers with a multitool
Adds some delta_time handling to showers.
* Adds toggling shower's refills
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Makes wayfinding great again (#56055)
Interacting with the wayfinding pinpointer dispenser recently after leaving it untouched basically since I added it I realised it has a bunch of bad design decisions that make it unpleasant to interact with so while this can never solve the lack of desirability of the pinpointers themselves hopefully it prevents the machine from contributing to the problem.
* Makes wayfinding great again
Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com>
* Wooden tables now obey The Law of Conservation of Mass (#56156)
## About The Pull Request
Fixes Issue https://github.com/tgstation/tgstation/issues/56152 making wood tables deconstruct at they should be.
Bug vivisection:
Okay, see here? This is the proc for creating a table, we can introduce three arguments. One of them is _buildstack. _buildstack overrides Buildstack on initialize, a variable used for storing the type of raw "ore" that the table is supposed to drop in deconstruction. Here is supposed to be null unless we want to override the buildstack with another ore.
```DM
/obj/structure/table_frame/proc/make_new_table(table_type, custom_materials, _buildstack)
var/obj/structure/table/T = new table_type(loc, _buildstack)
T.frame = type
T.framestack = framestack
T.framestackamount = framestackamount
if(custom_materials)
T.set_custom_materials(custom_materials)
qdel(src)
```
What happened? The proc for building a wood table from a wooden frame, shown below, passed the "type" variable, used for storing the type of table_frame, as a _buildstack argument to the make_new_table proc. This overrides the buildstack variable of the final wooden table, causing it to drop a wooden frame as it was an ore on deconstruction.
```DM
/obj/structure/table_frame/wood/attackby(obj/item/I, mob/user, params)
[...]
if (toConstruct)
if(material.get_amount() < 1)
to_chat(user, "<span class='warning'>You need one [material.name] sheet to do this!</span>")
return
to_chat(user, "<span class='notice'>You start adding [material] to [src]...</span>")
if(do_after(user, 20, target = src) && material.use(1))
make_new_table(toConstruct, null, type)
```
This is funnier (not very much, to be honest) when we consider that deconstructing with a screwdriver would drop a frame normally, causing it to drop two frames. We could repeat this ad nauseam, essentially cloning wood frames in place as we pleased.
So TL;DR: this is another of those simple but hard to hunt bugs that would be prevented with testing and a null on its right place.
* Wooden tables now obey The Law of Conservation of Mass
Co-authored-by: Manybones <miguelbasket1@gmail.com>
* Explosive lance icons update properly (#56164)
Fixes#56154. Spears were missing an update_icon on initialize, this adds one. Now, spears will show their grenade upon construction. Works just fine in testing.
* Explosive lance icons update properly
Co-authored-by: Coffee <CoffeeDragon16@gmail.com>
* var/hacked now actually does something in vendor spawners (#56144)
Oversight made by @ TiviPlus when making #55147
var/hacked wasn't actually used in code and instead, all spawner vendors were instantly hacked.
fixes#56101
* var/hacked now actually does something in vendor spawners
Co-authored-by: EgorDinamit <53223414+EgorDinamit@users.noreply.github.com>
* Fix briochecake icon, add tastes and foodtypes (#56125)
- Adds a missing `icon_state` to the full brioche cake
- Adds `SUGAR` to the brioche cake's and slice's `foodtypes`, as they're glazed (according to the description)
- Adds butter and cream to the `tastes` as well
* Fix briochecake icon, add tastes and foodtypes
Co-authored-by: Alex 'Avunia' Takiya <git@takiya.cloud>
* Fixes null-named painting issue (#56113)
There was an issue where you could name paintings nothing, which would cause issues with persistency. This was because the stripped_input didn't actually check that you put something in, so the PR adds that check. It now ensures, both when saved and loaded, that there is a title. If not, it sets them to the default 'Untitled Artwork'
* Fixes null-named painting issue
Co-authored-by: Coffee <CoffeeDragon16@gmail.com>
* Makes jaunting work properly again (#56028)
Fixes an if check that was checking the area flags of a turf. Prevents a runtime in phased_check, and makes the area noteleport flag work properly. These were introduced by #55973
* Makes jaunting work properly again
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixing bugs about the worst simple_animal coded in and material tiles. (#54885)
Fixed floorbots applying floor tiles onto already tiled turfs.
Fixed floorbot issues with material tiles.
Fixed emagged floorbots spawning lattice when deconstructing floor into plating.
* Fixing bugs about the worst simple_animal coded in and material tiles.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Makes it possible to create an /obj/item/sharpener with multiple uses (#55958)
Whetstones will now become worn when at 0 uses instead of being either used or not used. All currently existing whetstones start at 1 use.
* Makes it possible to create an /obj/item/sharpener with multiple uses
Co-authored-by: interestingusernam3 <51925758+interestingusernam3@users.noreply.github.com>
* Rework job food/alchohol benefits into livers (#55721)
By moving the "special behaviour" of something like security officers
eating donuts, or engineers losing radiation by drinking Screwdrivers,
into traits on the liver, this makes the "origin" of that behaviour more
clearly defined, rather than something that's attached to the mind of
the person. (For example, now if a wizard mindswaps into a Security
Officer, they too can now digest donuts good.)
Having this behaviour be partially visible to the more medically
inclined members of the station (like doctors, and the chaplain for
"entrails reading mystic" themes), means that a dismembered liver tells
a story to those who know how to read it.
Some jobs have more "benefits" than others, for example the only thing
that the liver of a Quartermaster gives them is a sense of inadequacy
when consuming royal carpet.
Clowns having livers that honk make them easier to identify, and plays
into the retconned "bike horns are clown livers lore"? Also, why not cut
out a clown's liver then honk them with it? You monster.
* Rework job food/alchohol benefits into livers
Co-authored-by: coiax <jack@billbuddy.co.uk>
* Adds forgotten kit to armament beacon (#56016)
Adds the forgotten kit to the armament beacon, holding the same stats as knight armor and stone sentinel, But with the sprites for the old clockwork armor and helmet, as they are very nice looking sprites. Moves said sprites to the suit and hat file respectively. as-well as adding forgotten helmet/armour to the game, which are said armors.
Makes it easier to do any clockcult themed gimmick as the chaplain without wearing the god awful craftable armor, uses sprites that really shoulden't die on the same hill as clockcult. a few others have also told me they'd love to see the old clockcult armor and helmet sprites used for something, as they look nice.
* Adds forgotten kit to armament beacon
Co-authored-by: Coastfront <50342376+Coastfront@users.noreply.github.com>
* Flesh to stone no longer makes you immune to bleeding, refactors bleedsuppress into a trait (#56078)
Being hit by the Flesh to Stone makes you bleed immune to prevent you from getting petrified while bleeding, and bleeding out while turned into stone. However, it doesn't make you vulnerable when you get unpetrified. This is a bug. This also makes bleedsuppress into a trait, as both is broken and should be a trait.
* Flesh to stone no longer makes you immune to bleeding, refactors bleedsuppress into a trait
Co-authored-by: Coffee <CoffeeDragon16@gmail.com>
* Telekinesis can throw non items (vending machines, lockers) only 1 tile far (#56063)
Telekinesis users can now only throw items 10 tiles, everything else can only be thrown 1 tile
* Telekinesis can throw non items (vending machines, lockers) only 1 tile far
Co-authored-by: Gamer025 <33846895+Gamer025@users.noreply.github.com>
* Sticky syndicate access (#56032)
Adds sticky access. Sticky access will be readded if removed in the identification console. Currently only used to fix#54429. Also converts some comments in card_ids.dm to DMdoc comments and adds some new ones.
* Sticky syndicate access
Co-authored-by: interestingusernam3 <51925758+interestingusernam3@users.noreply.github.com>
* what did he mean by this (#56042)
Potato goofed 7 months ago so here's a fix (Fridges were defaulting to a force of true, which was... jank)
* Fridges don't open through sheer willpower anymore
Co-authored-by: spessbro <51048066+spessbro@users.noreply.github.com>
* improves cardboard box and supplypod code (#56043)
Doesn't let force default to TRUE just in case someone tries to open when they're not supposed to.
* removes cardboard box and supplypod shitcode
Co-authored-by: spessbro <51048066+spessbro@users.noreply.github.com>
* Vend-a-trays can sell anything! (#56018)
Vend-a-trays can now accept any item, not just food and drinks.
* Vend-a-trays can sell anything!
Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com>
* fixes some baton bugs (#55868)
You can now turn on stun batons that have exactly enough charge left in them to stun someone.
Thrown stun baton impacts can now apply baton_effect() to most of the creatures that melee baton strikes can apply baton_effect() to.
* fixes some baton bugs
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Applies the pluox formation code portable atmos devices and tanks (#55923)
Makes irradiating tanks and portable atmospherics devices (canisters, pumps, scrubber) induce pluoxium and tritium formation if they contain the correct gases.
Does NOT affect atmos components or pipes because I don't think Lemon would let me do that to pipecode. (He's right)
* Makes pluox formation slightly more consistent
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* NOTELEPORT errywhere (#55973)
These prevent some cheats or really low effort ways to get to where you really shouldn't be.
Mappers seriously fucking hate jaunting and phasing mechs, as they let you bypass their custom crafted ruins and the like. But it'll also stop more general "you shouldn't be here" stuff.
* NOTELEPORT checks that were atomized out of the medieval shuttle
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Yellow slime core and Cakehats not directional light now (#55987)
Yellow slime core when turn on is 360deg as at should be and not directional light and slightly brighter.
Cakehats also get there 360deg light.
* Yellow slime core and Cakehats not directional light now
Co-authored-by: kopoba <kopoba.webmaster@gmail.com>