* New TGUI component: the round gauge + initial uses of it
* aaa
Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Sets default food size to small. (#55210)
## About The Pull Request
Fixes an oversight done during the food refactor that makes all food items normal sized instead of small.
Instead of adding weight class to a bunch of individual items [(like this PR)](https://github.com/tgstation/tgstation/pull/55174) it just makes all food default to small unless tagged to be bigger.
## Why It's Good For The Game
Being able to put 7 items on a tray instead of 4 is good, and if a food item is "too powerful", that individual item (or subtype, such as soups) can be given a larger weight class.
Fixes#54818
* Sets default food size to small.
Co-authored-by: Winter Flare <7543955+Owai-Seek@users.noreply.github.com>
* Small refactor for medical stack items (#55213)
Someone DM'd me asking a question about what the 'heal' var was for on aloe, I looked into it and realized it was an unnecessary variable that just replicated what heal_brute and heal_burn do. I then realized there was quite a lot of unnecessary copypasta in medical stack code, so I made some changes to make it neater and added some documentation in to boot
* Small refactor for medical stack items
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* More HFR fixes (#55203)
- Refractor HFR core from binary device to unary device to fix issue with cooling not properly connecting, that was deleting gases when tryed to use (only one port cooling now similar to a Thermomachine)
- Small fix of GUI data where two vars were inverted
* More HFR fixes
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* Fixing robot upgrades sometimes not being removed from lists. (#54842)
* Fixing robot upgrades not being removed from lists all times.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Remove duplicate definitions of /obj/effect/ex_act, explicitly noop it (#55076)
/obj/effect/ex_act had several different re-definitions to make it a noop. The original definition would randomly delete it, which is bad news when a lot of /obj/effects are just that--effects, that shouldn't be blown up.
The ones that actually do want to be blown up (like decals) already have their own implementations. The one in place was never ran, and nobody had problems with it.
* Remove duplicate definitions of /obj/effect/ex_act, explicitly noop it
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Changes grenade proc names to be more clear (#55181)
Grenades have, for the longest time, used the proc name preprime() to refer to arming a timed grenade so that it will boom in a few seconds, and prime() to refer to the grenade actually going boom (or releasing foam or anything else grenades do when they go off). This was very confusing, so now these two procs are called arm_grenade() and detonate().
* Changes grenade proc names to be more clear
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Fixes improvised jetpacks working as infinite one tick boosters (#55202)
Fixes improvised jetpacks working as infinite one tick boosters
allow_thrust is used as a check when the jetpack is toggled on to see if it should be allowed to turn on. This line needs to return the parent call instead of presuming it passes.
* Fixes improvised jetpacks working as infinite one tick boosters
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixes Improvised Jetpack (+New custom icons) (#55177)
This fixes the improvised jetpack, which currently cannot be activated.
Fixed [#50396](https://github.com/tgstation/tgstation/issues/50396)
The code change was very minor and everything seems to work properly now.
Bonus: New custom icons for this item, better representing what it most likely would look like
* Fixes Improvised Jetpack (+New custom icons)
Co-authored-by: LordVollkorn <66637090+LordVollkorn@users.noreply.github.com>
* Fixes cyborgs in general replenishing stack modules from external sources (#54935)
* Cyborg stack fix
- Makes cyborgs capable of recycling floor tiles again
* Touches up module code
- Makes module code slightly more OOP-compliant
- Speeds up module creation by an imperceptable amount
- Reworks how borg modules handle stacks
* Fixes cyborgs in general replenishing stack modules from external sources
* Update robot_modules.dm
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Fixes chem and addiction scans, null checks for addiction_list (#55105)
So #54797 changed addiction_list to instantiate as a null instead of a list. Turns out a few things relied on the list existing!
Things like health analyser/medical kiosk chem and addiction scans broke, and smokers would no longer get addicted!
Made a few places check if addiction_list is null before continuing.
(Lemon's note, refactored some code to make it cleaner/removed some unneeded loop typechecks)
* Fixes chem and addiction scans, null checks for addiction_list
Co-authored-by: prodirus <44090982+prodirus@users.noreply.github.com>
* Humans have more complicated body temperatures (#54550)
This changes how carbon/humans stabilize body temperature, and changes how damage and wounds are applied based on temperature.
Humans now have a core body temperature along with body temperature. The core temperature is used for natural stabilization and what viruses like fever and shivers target by raising or lowing the core temperature of the mob.
The standard body temperature still exists and acts exactly the same for most items at this time but is now treated as surface temperature in humans.
Damage from body temperature for humans is now based on the core temperature instead of body temperature now.
Humans will now receive burn wounds when the body (surface) temperature is to high for to long.
This causes you to see alerts for the area temperature before you take damage in most cases improving visibility of dangerous situations.
* Humans have more complicated body temperatures
Co-authored-by: NightRed <nightred@gmail.com>
* Fixes PDA bombing have equal chances to work on PDAs without manifest access vs PDAs with it (#55036)
* Makes extra difficulty actually work
0
* Actually fixes it as of what Fikou suggested
* no space, sorry
Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
* Fixes PDA bombing have equal chances to work on PDAs without manifest access vs PDAs with it
Co-authored-by: Bond <58570888+TheBonded@users.noreply.github.com>
Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
* Foam darts and other unembeddable bullets will no longer leave ghost shrapnel (#54994)
Projectiles are assigned the ability to try embedding by the presence of a shrapnel_type variable being set on them, whether or not they actually have a set of embedding stats in their embedding var. By default, children of /obj/projectile/bullet have a shrapnel type set to a generic embedded bullet item, including things like foam darts and lollypop projectiles which shouldn't be able to embed (and certainly not embed as a bullet). While they had their embedding vars set to null, they still had their shrapnel_type set to the embedded bullet type, meaning shooting a person with a dart gun or whatever would leave a failed shrapnel item on the ground where they weren't supposed to.
This fixes that by requiring both a defined shrapnel_type AND a defined embedding var for the embedding stats. Any projectiles without both won't be able to try embedding. I also manually put 'shrapnel_type = null' on any bullet subtypes with embedding = null just to be safe and for consistency.
* Foam darts and other unembeddable bullets will no longer leave ghost shrapnel
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Moves grown food to newfood (#55040)
Moves grown food to newfood
Gives trash element support for callbacks for item creation override
* Moves grown food to newfood
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Properly differentiates the nanodrug and nanomed vending machines. (#55069)
This repaths the nanodrug and nanomed vending machines, as well as visually tweaks the nanodrug vending machine from the nanomed vending machine, in order to
A) Fix the correct vending refills working on the correct vending machines.
B) Not make 2 different vending machines with different contents sell look identical.
Allows for visual clarity between 2 distinct, different vending machines. I got lazy and didn't do it the first time, and now they've been confusing players, apparently.
Additionally, makes them actually deconstruct able and constructible as a result of the fix to the circuit board.
* Properly differentiates the nanodrug and nanomed vending machines.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* moves misc food to newfood code (#54788)
misc food is now using newfood code
* moves misc food to newfood code
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Scalpel can now cut pizza. (#55012)
Enables scalpel tools to cut pizza. Consolidated a bunch of pizza-specific `MakeProcessable` proc defines that were just copy+pastes of each other.
* Scalpel can now cut pizza.
Co-authored-by: Josh <josh@jaw.sh>
* Spraycans now consume charges in the right order when spraying graffiti. (#54929)
Spraycans now check the cost of placing down a new spray before performing the do_after countdown, then uses the charge immediately after the do_after is completed.
Spraycans should check and only use a charge AFTER their cooldown timer is complete.
* Spraycans now consume charges in the right order when spraying graffiti.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Fixes disabled limbs from compound fractures, only robotic limbs can be disabled by pure damage now (#54922)
* Fixes disabled limbs from compound fractures, only robotic limbs can be disabled by pure damage now
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Reverts metabolism on stomachs, keep them as important to eating (#54632)
* [ready] Reverts metabolism on stomachs, keep them as important to eating
* Merge branch 'master' into upstream-merge-54632
* Update food_reagents.dm
* Update alcohol_reagents.dm
Co-authored-by: NightRed <nightred@gmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* Re-assesses 99% of vending prices through Arconomics to match player resources and round-length. (#54715)
* The Re-pricening
* Rewritten and adjusted for paycheck defines.
* I made the map changes finally.
* And the refills too.
* "OH YEAH REPLACING IT ALL WITH DEFINES AND SCALING IT THE EXCEL DOCUMENT WILL BE EASY, ARCANE!!!"
* And the premium ones too.
* Accidently spoiled a future pr due to dme bleedover
* Re-assesses 99% of vending prices through Arconomics to match player resources and round-length.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Pies are now refactored for new foods. (#54751)
Moves over pies to the newfood typepaths, as well as the few select pie slices.
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Pies are now refactored for new foods.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Refactored 'IsAdvancedToolUser' into a macro plus relative trait. Tweaked 'can_hold_items'. (#54665)
The PR aims to allow advanced tool users to be defined by traits rather than a hardcoded proc.
Also necessary for the CanUseTopic refactor I'm working on, which will be PRed separately for atomization purposes.
This PR also fixes an inconsistency with can_hold_items (since monkeys can actually hold items).
* Refactored 'IsAdvancedToolUser' into a macro plus relative trait. Tweaked 'can_hold_items'.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Beauty component improvements. Two new fantasy component prefixes (#54622)
Title. Changed the component backend code slightly to allow a single component to hold the total score instead of spawning new components. This should fix cases, such as material stacks without the MATERIAL_NO_EFFECTS flag, where multiple set_costum_materials calls can be made and new beauty components spawned.
* Beauty component improvements. Two new fantasy component prefixes
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Fixes a few bugs with greyscale stacks. (#54858)
Fixes greyscale floor tiles merging regardless of their materials.
Fixes greyscale floor tiles voiding materials when splitting the stack.
Fixes greyscale floor tile stacks being created with no mats_per_unit and only enough custom materials for a single unit.
Fixes greyscale tile flooring being created with the wrong amount of materials.
Fixes greyscale tile flooring not producing floor tiles/producing floor tiles with 0 units.
* Fixes a few bugs with greyscale stacks.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Fixed inconsistencies with the extradimensional blade nullrod. (#54868)
* Fixed inconsistencies with the extradimensional blade nullrod.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* The clown PDA now has in-built comedy detection for when something happens to the clown and plays a fitting sound. (#54695)
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* The clown PDA now has in-built comedy detection for when something happens to the clown and plays a fitting sound.
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Easier Medipen Identification, Medipen Box (#54698)
* Medipen Differences
Adds a box for medipens, and gives each of the "common" pens a new look.
* Adds medipen box to craftables.
* Lighter first aid pen.
* Easier Medipen Identification, Medipen Box
Co-authored-by: Winter Flare <7543955+Owai-Seek@users.noreply.github.com>
* Speargun: Now actually a gun! Again! (#54289)
Turns the speargun from the syndikit bundle into a bolt action rifle instead of a pnuematic cannon.
The spears the rifle fires embeds using the new bullet embedding system by Ryll. The spears do a lot of fucking damage.
The new bundle includes:
The Ballistic Harpoon Gun
The weapon is a single shot rifle that can be loaded with harpoons. The rifle, being bolt action, requires pulling back the bolt, loading the new harpoon, then locking the bolt every time you wish to fire the weapon. This is more busy work than the pnuematic cannon version, but more reliable in functionality without any messy business with throwing.
The harpoons do 60 force, have a high wound chance against unarmored targets and very high embed chance, with a 100% against unarmored targets. They also have considerable armor piercing at 50, letting you nearly entirely shoot through a ballistic vest.
The weapon is essentially a powered-up single shot mosin or a significantly more powerful improvised shotgun filled with slugs.
The Quiver
Now a bag that goes on your belt. It holds up to 40 harpoons for your harpoon gun. This change was done because the harpoons cannot be retrieved, unlike the magspears, which were simply hacky ninja stars and could be pulled out with surgical tools/wirecutters. Previously you had 20 magspears, which because of their retrievable nature lasted a little longer than you would expect.
Sprites
New back sprites for the harpoon gun, ensuring nobody is missing it when you have it. Additionally, the Mosin Nagant now has it's back sprite as a suit storage sprite.
New sprite for the quiver.
* Speargun: Now actually a gun! Again!
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Fix runtime with RPD unwrenching. (#54773)
[01:44:12] Runtime in RPD.dm, line 392: Cannot read 1.type
/obj/machinery/atmospherics/wrench_act can return a boolean instead of an object under the following scenarios:
You cannot unwrench the machine.
You can unwrench the machine, but use_tool later returns FALSE instead of TRUE.
use_tool can fail when you stack wrench_acts ontop of eachother. The first wrench_act will work as expected and return the deconstructed version of the pipe, all other stacked wrench_acts will have use_tool fail and will instead just return TRUE.
This PR prevents stacking of wrench_act-based do_afters and guards against unexpected runtimes by CRASHing when wrench_act returns something unexpected.
* Fix runtime with RPD unwrenching.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Non-human mobs can now benefit from held id cards and economy. (#54647)
* Non-human mobs can now benefit from held id cards and economy.
* Moved these getters toward the upper end.
* oui?
...
dump eet.
* .tee pump
...
?iuo
* Non-human mobs can now benefit from held id cards and economy.
Co-authored-by: Rohesie <rohesie@gmail.com>
* Fixes being able to commit suicide with an UNREAL SORD (#54831)
The UNREAL SORD null rod form's suicide_act() now closely matches the suicide_act of an actual SORD.
For reference, an actual SORD's suicide_act() is:
```
/obj/item/sord/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so shitty.</span>", \
"<span class='suicide'>You try to impale yourself with [src], but it's USELESS...</span>")
return SHAME
```
And the UNREAL SORD null rod form's new suicide_act() is:
```
/obj/item/nullrod/sord/suicide_act(mob/user) //a near-exact copy+paste of the actual sord suicide_act()
user.visible_message("<span class='suicide'>[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so HOLY.</span>", \
"<span class='suicide'>You try to impale yourself with [src], but it's TOO HOLY...</span>")
return SHAME
```
* Fixes being able to commit suicide with an UNREAL SORD
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>