* Makes burning items actually hot (#74874)
## About The Pull Request
Simply put, unless overriden, items with the ON_FIRE flag will always be
at least 150º C (491,15 kelvin).
I didn't want to pack this change with
https://github.com/tgstation/tgstation/pull/74803 because I feel this
might have some weird unintended consequences, maybe.
## Why It's Good For The Game
Emergent gameplay like lighting a cigarette with a burning piece of
paper, I guess.
## Changelog
🆑
add: Burning items are now actually considered to be at a minimum, 150
degrees celsius by the game.
/🆑
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Makes burning items actually hot
---------
Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* fixes all the issues with gondola mutants + small rat spell check (#74837)
## About The Pull Request
list of fixes:
- dna infusers got a random check for the dna infuser to be open when
adding what you're infusing from. i made it intentional that they don't
require this for the infusion items, and it just seems to confuse people
so i'm reverting
- gondola martial art works again, the martial arts help proc literally
never worked GUHHHH
- gondola now correctly can't pick up items they're not able to hold
- adds a missing period to a rat organ examine
- small code cleanup in the species grab proc
## Why It's Good For The Game
feeexes
## Changelog
🆑
qol: made dna infusers less confusing to use by removing the "must be
opened" check
fix: fixed up gondola mutants and how to obtain them
/🆑
* fixes all the issues with gondola mutants + small rat spell check
---------
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Reworks burning objects to be a component (#74688)
## About The Pull Request
Title.
## Why It's Good For The Game
Simply put, allows for atoms which are not /obj but use atom_integrity
to burn up too, which is nice and good.
But also, it allows for neat behavior like burning particle effects
(only structures use that right now to spawn smoke)

## Changelog
🆑
add: Burning structures spawn smoke particles. Sick.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Reworks burning objects to be a component
* modular
---------
Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Monkeys no longer drop items taken from storage onto the ground. (#74689)
Fixes#74313.
## About The Pull Request
During a refactor to storage in #73761 , they forgot to add a check to
loc.atom_storage in attack_paw to mirror the check made in attack_hand.
This meant that monkeys and other mobs that used attack_paw always
dropped items taken from storage onto the ground. Now, the code to check
if they should go into your hand instead is properly checked.
## Why It's Good For The Game
Bugs are bad mkay
## Changelog
🆑
fix: Monkeys and some other mobs no longer drop items they've grabbed
from storage onto the ground.
/🆑
* Monkeys no longer drop items taken from storage onto the ground.
---------
Co-authored-by: Sneeker134 <53362182+Sneeker134@users.noreply.github.com>
* Two small throw impact things (#74386)
## About The Pull Request
- No use of weight class define in item throw impact
- No parent call in plate throw impact, despite checking `.`
## Changelog
🆑 Melbert
fix: Plates are no longer ephemeral when throwing at people.
/🆑
* Two small throw impact things
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Adds non-clothing item equipping others feedback messages (#73982)
## About The Pull Request
Things like pens weren't giving any feedback messages when you put them
on someone else, and I ran into this while working on another PR so I've
dealt with that
Renames `worn_dangerous` to `show_visible_message` as it was only used
to confirm if there would be visible messages or not
The `DANGEROUS_OBJECT` clothing flag is a trait now, so it can be put on
non-clothing items too
Removing non-clothing items from someone has been unchanged.
## Why It's Good For The Game
People should be able to identify that someone is putting something on
them, and recognize what that is if they pay attention.
This means that a player cannot reverse pickpocket a grenade onto
someone else without giving any indication of doing so
## Changelog
🆑
balance: Putting a non-clothing item onto someone else creates a visible
message the same way a clothing item would.
/🆑
* Adds non-clothing item equipping others feedback messages
---------
Co-authored-by: ArcaneDefence <51932756+ArcaneDefence@users.noreply.github.com>
* Forcing an embed means that it will always happen (Effects trapped posters, accidental consumption, and bullet shrapnel) (#73729)
## About The Pull Request
Addresses #73105
I confidently asserted in the issue that the current behaviour was not a
bug, but lo and behold when I went to investigate this on March 1st what
did I find... a bug! Force embed actually never worked in the first
place because the passed arguments were in the wrong order. Now they are
named, so the order doesn't matter any more.
Also there was an argument called "silent" which did literally nothing,
I just deleted it.
Sending the force flag will now mean that the forced embed _always_
embeds unless it is literally impossible. The only other place this
effects is when you accidentally eat glass, so a similar case to this
one.
While I was in there, I made posters _very slightly_ more discerning
about what gloves block glass. Unfortunately there's no widely applied
and useful trait like `THICK_MATERIAL` for gloves so I mostly just
exluded latex and fingerless gloves... but that's better than nothing.
Anyway now if you bother to place a glass shard inside a poster and
someone tries to pull it down and they're not wearing thin or fingerless
gloves it will _always_ embed in their hand.
Oh and I put some balloon alerts in there.
**Unrelatedly to this change** fixing this seems to also fix an ancient
bug where bullet shrapnel would roll its embed chance twice in a row,
meaning that it had an (x/100)^2% chance of applying rather than an
(x/100)% chance, significantly less than written.
It is weird for that to go in this PR, but seems to be an effect of
fixing this bug? Not sure there's a way of not fixing both at the same
time.
## Why It's Good For The Game
You go to the effort of putting a glass shard behind a poster (the only
way to associate your own fingerprints with the deed) and are lucky
enough that the person who pulls it down isn't wearing gloves (almost
everyone does) and it _still_ only has a 50% chance to embed the glass?
The trap should work at least _some_ of the time.
## Changelog
🆑
fix: Something which is "forced" to embed will now always actually
embed. Resultingly, accidentally swallowing glass or encountering it
behind a poster without adequate protection will now always cause it to
embed into your body.
balance: Thin and fingerless gloves may no longer protect you from
having glass in your hand after pulling down a poster
fix: Bullets containing shrapnel now use their correct chance to embed,
which may cause bullet wounds to contain shrapnel more frequently.
/🆑
* Forcing an embed means that it will always happen (Effects trapped posters, accidental consumption, and bullet shrapnel)
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* A worn item which has its color changed (such as by a slime potion) with now have its color change reflected on mobs. (#73627)
## About The Pull Request
If I'm wearing an outfit and use a slime fireproof potion on it at
present it wont become blue until taking it off and putting it back on
again, this PR makes it so it changes immediately. Also means if an
admin VVs the color value of a worn item its icon worn color will update
to reflect this change immediately.
## Why It's Good For The Game
Bugfix!
## Changelog
🆑
fix: Any worn item that has its color changed will now have its color
change reflected on the item's worn icon immediately.
/🆑
* A worn item which has its color changed (such as by a slime potion) with now have its color change reflected on mobs.
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
Implements functionality for variable weapon attack and secondary weapon attack speeds. (#72959)
## About The Pull Request
The click cooldown after attacking with a weapon can now be controlled
with a var. A var can also be set for secondary attack cooldown, if
unset it is the same as the weapon's normal attack speed.
The two weapons who already had hardcoded mechanics to achieve this
effect (see: The Stinger, Hyper Frequency Blade) have been converted to
this system.
## Why It's Good For The Game
Future varying of weapon qualities and admin shenanigans.
## Changelog
🆑
code: Greater support for variability in weapon attack speed
admin: Admins are now able to grief you by hitting you with a toolbox 10
times in one second.
/🆑
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
* Refactor lighting items that use fuel (#72146)
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
Code is more cleaner and consistent. Also fixes some bugs.
🆑
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>
* Modular!
* Toggle Light
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Changes the missing food icon test to cover ALL /obj's
* Update implant.dm
* Hopefully fixes all the failing integration tests!
* Fixes more missing icons
* Even more icon fixes
* Hopefully that was all of them
* Okay now SURELY that's all of them
* I'm tired of this shit man
* Hopefully that's all, for real this time!
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* *hand, or That /One/ Emote You Always Felt Was Missing (#71600)
## About The Pull Request
It's happened to me _repeatedly_ that I'd see someone down on the floor,
and wanted to just, give them a hand, so they could take it and get up
that way, without just, directly clicking on them, since that's a little
bland. I've also wanted to just, offer my hand to someone so they could
grab it, so that I could pull them alongside me, rather than just
targeting one of their arms and ctrl-clicking them.
I've had this idea for a _long_ time, and only just decided to do this
today.
Now, I know what you might say. "Golden, that's a lot of code for
something this simple!" You're not wrong. _However_. I decided to go
along and to give some more love to the `/datum/status_effect/offering`
status effect and the offering-related alerts, to make them a lot more
versatile and a lot less hardcoded. Hence the whole "refactoring" part
of this.
Of course, when I add something, I don't do it half-way. So, the way the
emote works is much like the `*slap` emote, except that:
- When you click on someone, it does the exact same as if you were
offering the item to them, except that it's targeted (much like
ctrl-shift-click).
- If there's nobody directly adjacent to you, it won't do anything.
- If there's at least one person lying down around you, you will offer
them your help to get up. Should they take your hand and let you help
them up, you will both receive a simple memory about being helped up (or
helping up), as well as a 45-seconds-long small mood buff, because it
feels nice to be on either end of such a friendly gesture. If they get
up, they automatically get disqualified from being offered some help
standing up, and likewise, if you lie down, that offer goes away as
well.
- If there's at least one person around you, you will instead extend
your hand in their direction, for them to grab onto it. Should they do
so, you will then grab them by their arms and pull them.
I reworked the offering status effect to no longer have a hardcoded
`can_hold_items()` check, so that kisses and the hand offering would no
longer need you to have free hands to complete. The logic here is that
you can still pull someone even with both hands filled, so I figured I'd
leave it this way.
Note: If anyone would like to give the item a better sprite, by all
means, go ahead, that'd be amazing. I'm just not really a great spriter
and couldn't be bothered to waste hours making a very _meh_ hand.
## Why It's Good For The Game
It's fluff, and nice fluff at that. It makes it easier for people to be
nice to one-another without having to necessarily spend so long writing
up an emote that the person on the floor will already have gotten back
up. I'm sure the MRP folks will like it, and I'm certain the HRP
downstreams will love it too ;)
## Changelog
🆑
add: Added the *hand emote, which you can offer to someone standing up
in order to give them the possibility to grab onto your hand and let you
drag them away, or to someone lying down to help them back up, which
always makes everyone involved a little happier!
refactor: De-hardcoded and genericized a lot of the offering status
effect and alert code, to make it require a lot less copy-paste to
handle new cases.
fix: Offering a kiss no longer requires the receiver to have free hands
to accept said kiss!
/🆑
* *hand, or That /One/ Emote You Always Felt Was Missing
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Moves flick_overlay to atom instead of being global (#71045)
## About The Pull Request
Moves flick_overlay and flick_overlay_view to atom instead of being a
global proc
## Why It's Good For The Game
General performance and syntaxical improvements, makes it easier to
retrieve iconstates
## Changelog
🆑
fix: flick_overlay is an atom proc
/🆑
Co-authored-by: etherware-novice <candy@ notarealaddr.com>
Co-authored-by: Candycaneannihalator <candycane@ thisisnotarealaddr.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Moves flick_overlay to atom instead of being global
* modular flick
Co-authored-by: texan-down-under <73374039+etherware-novice@users.noreply.github.com>
Co-authored-by: etherware-novice <candy@ notarealaddr.com>
Co-authored-by: Candycaneannihalator <candycane@ thisisnotarealaddr.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Adds unit test for items that can be equipped to suit storage slots that are missing sprites (#70643)
* Adds unit test for items that can be equipped to suit storage slots that are missing sprites
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Cleans up the fallout from plane cube (#70235)
* Cleans up the fallout from plane cube
Alright.
Makes cleaning bubbles respect planes
Adds support for updating overlays on move, fixing an issue with pointing at items
Adds better error messages for failing to provide args for mutable_appearance()
Fixes a bug where string overlays were not respecting insertion order
* Adds documentation for offset spokesman and offset_const
* Better stack trace
* Removes some redundant uses of cached MAs
At this scale, attempting to cache MAs like this has 0 impact on anything
And just makes things more messy then they need to be
* ensures fullscreen objects START offset, so things are always proper
* ensures chatmessages always have the right offset
* fixes compile
* whoops, the above lighting plane should actually be ABOVE the lighting plane
* fixes compile, also cleans up the fire overlay a tad
* Adds a unit test for plane masters that are shrunk by multiz being double shrunk
This is slightly hacky because of how I'm handing the plane master
group, but it's not THAT bad, and gives me some real good coverage
* Properly targets the seethrough plane at the game world plate. This fixes unit tests, and also just makes more sense
* whoops
* oh
* adds datum support for allocate(), cleans up a harddel from testing
* Makes camera chunks index at 1, and also makes them support non powers of two sizes, since that was unneeded
* fixes runtime in allocate
* Cleans up the fallout from plane cube
* liquid tweaks
* oop
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Put clothing on people by clicking on them with clothing inhand + targeting correct area. (#69560)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Put clothing on people by clicking on them with clothing inhand + targeting correct area.
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
This took a long time to review, but at long last, it's done.
* HUD clutter, good bye, you will not be missed.
* Oh my god so much pain
* No commented code. Bad.
* Uwaaaa
* Add a couple of warning messages for common scenarios, use defines
* AAAAA
* AAAAAAAAAAA
* UWAAAA
* UUUUWAAAA, DOCUMENTED SNOWFLAKE CODE
* FUCK
* Apply suggestions!
* Apply suggestions part one!
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Apply suggestions part two!
* Static list
I think this is how it works, it compiles, sooo
* Split the giga monolith that's known as technical_stuff_for_lewd into two parts, human_helpers, and whatever else isn't a human helper. Also add a helper proc for mass update_inv on organic interface slots.
* I can't believe you did this
* Did you know that organic interface code didn't clean up it's defines? Neither did I!
* Less ifs
* Apply last suggestion that I know how to
* That was a lie
* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
I HAVEN'T EVEN TOUCHED THE WORST CODE
* Oops
* Pain
* No copypaste
* Proc is 🦀
* No, bad, no commenting code.
* List prittification for chems, reduces the sheer amount of update_body calls
* Allow non-lewd empath users to not have to suffer raunchy inspect messages
* Oop
* DEEEEEEEEEEEEFINES
* Oh yea, that review. Definitely remembered.
* Formatting
* Breast defines
* MUCH cleaner and MUCH MUCH EASIER to expand incubus draft code
* Credit myself if I'm gonna spend days of my time combing through this
* Oops
* Chems cleanup
* Whyyyyyyy
* Climax rework, suffering.
* Wtf is this name
* Oh yea, arousal clamping.
* Haha, oops
* Bad, this is stupid easy to modularize
* Why is body_size in here
* List formatting, grammar stuff, and also breast size is now letters
* This took too long for me to figure out and I'm not proud
* Even I can make shitcode!
* Oops, typo
* You know, this makes more sense.
* Mhhh, this shouldn't be named like this
* Wrong file
* Rename `adjustPain`
* Dead code go yeet
* Y U NO READ DOCS
* Doc proc, minor optimisation
* Reviews part 1
* Whoever made this should read good coding practices. For any language.
* DEEEEFINNNEEEEESSSS
* SUFFER
* No more fluids
* EEEEEEEEEEE
* AAAAAAAAAAAAAAA
* MOB IS 🦀
* AAAAAAAAAAAAAAAAAA
* AAAAAA
* UWA
* And also solve tastfish's reviews!
* Partial revert, cause DM hates that
* I am very smart
* EEE
* AAAAAA
* Haha keyboard go click clack
* CODE
* FUCK
* FUUUUUCK
* PERFORMANCE
* Reset horny to 0 if erp disabled
* Arousal minimum is now 0, cause negatives are dumb and I hate them
Also cuts out some code that isn't needed as far as I can tell.
* Apply suggestions!
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* AAAAA
* AAAAAAAAAA I CAN'T CODE
* Aaaaa
* WHY GIT
* I am very smart part... uh, four?
* Minor formatting changes
* Oops, fix potential cause of multiple climax attempts
* WAIT, WHY AREN'T YOU USING THE DEFINE?!
* Magic number slightly less magicky, sorta.
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Removes ComponentInitialize()
* Fixes a leftover merge conflict marker
* Fixes the oversight that came from the upstream merge skew
* Fixes all of the instances where we used ComponentInitialize() when we shouldn't've been
* Fixes CI being broken because of the HEV suits
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* [MDB Ignore][Bounty][Complete Refactor] Papercode Redux: Too Many Damn Files <Map Conflict Edition>
* Fixes merge conflicts and compilation errors, alongside fixing the joker card to make it fully functional again
* Fixed a bunch of info variables in map files
* Alright this is why I wanted this merged yesterday
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Replaces GetComponent in Mining items with Signalers (#68575)
* Replaces many instances of GetComponents in mining items with signals and better uses overall of Components, in drills and the GPS handcuffs.
* To do this, also added 3 new signals to mechs when you are adding/removing mech equipment onto one.
* Replaces GetComponent in Mining items with Signalers
Co-authored-by: Salex08 <33989683+Salex08@users.noreply.github.com>
* Pointing at something on yourself now shows the item (#68642)
Why It's Good For The Game
Further reducing reliance on reading the chat box. Previously it wasn't obvious someone pointing at themselves was pointing at something on them, and not just, them.
Changelog
cl
qol: Pointing at something on yourself now shows the item.
/cl
* Pointing at something on yourself now shows the item
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Fixes runtime when mousing over items in nullspace (#68507)
* Fixes runtime when mousing over items in nullspace
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Tsu's Brand Spanking New Storage: or, How I Learned To Pass Github Copilot As My Own Code
* Delete storage.dm
* yippee
* shit
* holy shit i am stupid
* more fixes
* fuck
* woops
* Makes silver spawned food actually disgusting (#68319)
Fixes silver spawned food not tasting disgusting by sending a signal to the Edible component to make it disgusting.
* Makes silver spawned food actually disgusting
Co-authored-by: Salex08 <33989683+Salex08@users.noreply.github.com>
* Completely removes `proc_holders` from existence. Refactors all wizard, xeno, spider, and genetics powers to be actions. Also refactors and sorts ton of accompanying code.
* our changes
* yes
* 0
* Update blackmesa.dmm
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>