* Attempts to fix addictions being utterly broken and almost impossible to obtain. (#56302)
* Attempts to fix addictions being utterly broken and almost impossible to obtain.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Fixes for the invasive spreading trait (#56300)
Fixes invasive spreading overtaking same type plants (It was checking for dead plants instead of alive ones)
Fixes invasive spreading going through glass (It only checked plants one step away, regardless of adjacency)
Better var names (HY -> spread_tray, H -> our_tray)
Slight visual feedback when plants are destroyed
TRUE / FALSE instead of 1 / 0
* Fixes for the invasive spreading trait
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Patches gene shears click stack exploit (#56301)
Fixes#55390 by checking the plant's heath again after the input is done and before the gene is removed. I'm not sure if it's the cleanest way to get around stacking inputs to exploit the health, but it works?
* Patches gene shears click stack exploit
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes Codex Cicatrix having infinite charges - Maintainer edition (#56307)
Gets rid of pointless text2num.
EK is a path and not an object. Fixes it being used as if it was an object through using initial.
* Fixes Codex Cicatrix having infinite charges - Maintainer edition
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Reinforcing the mining hardsuit now upgrades its sprites (#56288)
* Reinforcing the mining hardsuit now upgrades its sprites
Co-authored-by: Fikou <piotrbryla@onet.pl>
* 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>
* Refactors step_action to pure signals (#56238)
For historical purposes, there was a `step_action()` proc on shoes,
which were called on every step. It normally triggers a signal, which
some components, like squeaky clown shoes use to hook on behaviour. But
there were a few remaining procs that still used the old format; they
now use signals.
This thus saves a proc call on nearly all Move() calls by humans, unless
their shoes have special behaviour, and also enables non-shoes being
able to hook into stepping behaviour.
* Refactors step_action to pure signals
Co-authored-by: coiax <yellowbounder@gmail.com>
* [s] fixes damage multiplicative exploit with foam darts (#56250)
## About The Pull Request
fixes a pretty bad exploit with foam darts
## Why It's Good For The Game
- Modify a dart with a pen, giving it 5 damage
- Target someone's mouth (or a monkeyman)
- Fire
- Firing sequence for handle_suicide multiplies damage by 5 on the projectile instance
- Dropped projectile has 25
- Repeat 1 more time for 125 instacrit dart, or another time after that for 600 instakill dart
all discovery credits go to @ necromanceranne, this was brought to my attention
* [s] fixes damage multiplicative exploit with foam darts
Co-authored-by: silicons <2003111+silicons@users.noreply.github.com>
* buffs the surgical toolset implant (#56253)
## About The Pull Request
The surgical toolset implant's circular saw and surgical drill now both have a force of 15 (as is normal for surgical tools of their respective types), instead of 10.
## Why It's Good For The Game
I don't really see any reason why these tools should be "dulled" for the surgical toolset implant, especially seeing how the integrated toolset implant (which contains much more generally-usefull tools than what the surgical toolset implant has) contains a 40u welder that has a force of 15, and that's not causing any balance problems. For combat purposes, both of these implants are outclassed by replacing your arm with a chainsaw (which has a force of 24).
Whirring saws and spinning drills that you can extend from your arm like wolverine and shank a guy with are fucking badass, and if a doctor wants to defend themselves with their integrated tools instead of carrying around an extra "normal" saw/drill in their backpack just for combat purposes, then by god, we shouldn't arbitrarily penalize them for doing that.
* buffs the surgical toolset implant
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Puts a short cooldown on the Die of Fate (#56174)
There's a short 1 second delay between rolling the Die of Fate and it actually taking effect, meaning you can spam it in your hand multiple times in order to queue up multiple effects that the user may not actually survive to see if one of the first rolls kills or dusts them. This puts a 2.5 seconds cooldown on being able to roll the Die of Fate to prevent stacking
* Puts a short cooldown on the Die of Fate
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Refactors a common pattern, clothing traits (#56233)
A common pattern is clothing that gives a certain trait when equipped in
the correct slot, for example, mesons making you immune to supermatter
madness, or the bartender's beer goggles giving them the ability to
"booze slide".
Now, instead of implementing essentially the same logic on equip and
dropped, it is now supported at the clothing level with the
`clothing_traits` lazylist.
* Refactors a common pattern, clothing traits
Co-authored-by: coiax <yellowbounder@gmail.com>
* HFR: Fix activation after deconstruction (#56249)
core/var/corners is assumed to be a list at all times.
Previously, deconstructing then reconstructing the HFR would get one
stuck where:
- "Activate the machine first by using a multitool on the interface." when attempting to use the interface
- "You already activated the machine" when attempting to use a multitool on the interface
All components, except the core, would show as correctly inactive.
This situation can be worked around by deconstructing and reconstructing
the core, or varediting the core to have active = 0 and corners = list().
This fixes runtimes of the form:
> [21:03:06] Runtime in hypertorus.dm,368: type mismatch: 0 |= HFR corner (/obj/machinery/hypertorus/corner)
> proc name: check part connectivity (/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/check_part_connectivity)
* HFR: Fix activation after deconstruction
Co-authored-by: esainane <esainane+github@gmail.com>
* HFR: Respect moderator heat_output effects (#56248)
The additional heat users were supposed to deal with when producing
higher tier gases with Proto-Nitrate, and the reduced heat output that
came from managing to run a mix with enough Freon without also killing
the reaction, was being silently discarded because the temperature
adjustment was applied before heat_output was modified.
The changed value would still show up in the UI, but would have no effect
since the application used the pre-modification value.
While internal_fusion has gases added and removed directly as part of
the gas consumption and producion process, no reference to temperature
is made, so it's safe to just move the application of internal_fusion's
temperature change to immediately after the gas consumption and production
process, instead of immediately before it.
* HFR: Respect moderator heat_output effects
Co-authored-by: esainane <esainane+github@gmail.com>
* Tweaked insulated spray-on gloves (#56232)
Some tweaking and code smoothing of the spray-on gloves. The only
mechanical change is in also letting them be washed off (although it
takes a while under a shower or using a sink).
A visible message also provides better feedback.
* Make /wash a SHOULD_CALL_PARENT proc
A number of things depend on that signal being called.
* Makes suggested changes
- Adds SIGNAL_HANDLER to signal handler
- Changes name of turf variable for readability
- Reenables lighting object override of parent
* Tweaked insulated spray-on gloves
Co-authored-by: coiax <yellowbounder@gmail.com>
* edits clockwork helmet sprite, makes clockwork boots unable to be tied (#56148)
* edits clockwork helmet sprite, makes clockwork boots unable to be tied
Co-authored-by: Fikou <piotrbryla@onet.pl>
* once again but better this time
* Makes it so that equipping them has no sound
* Update code/modules/mob/mob.dm
Co-authored-by: Azarak <azarak10@gmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* Refactors how floors turfs set broken/burnt states + fixes glass plating turning invisible when damaged (#56200)
adds sprites for both normal and reinforced glass plating (i reduced it to 2, from 5, from when the image was taken), the sprites arent the absolute best but arent terrible imho,
refactor to floor code to not dumbly hardcode an initialization for broken_state list sprites, as well as moves burnt and broken states to procs, and has an override to all floor turfs which have both a broken and/or burnt icons unique to it
also changed how certain tiles react when broken, now, instead of magically turning into iron plating when stuff like dirt, lavaland basalt, sand, water, wasteland tiles, you name it. when they break, they will just use their basic icon (typically, wont change), rather than turn into iron plating magically. when asteroid turfs (lavaland basalt, icebox snow, asteroid sand etc..) which have a dug icon break, they change to their dug version instead
* Refactors how floors turfs set broken/burnt states + fixes glass plating turning invisible when damaged
Co-authored-by: 小月猫 <alina.r.starkova@gmail.com>
* Laughter demons now eject spontaneous revivals (#56095)
Very occasionally, a laughter demon will eat a changeling, or someone
with very strong nanites, and then are rendered helpless as someone
punches their way out.
Instead, now they will be confusingly ejected from the laughter demon's
internal hammerspace pocket, where they can than then attempt to make
their escape.
* Laughter demons now eject spontaneous revivals
Co-authored-by: coiax <yellowbounder@gmail.com>
* Xenomorph balancing, take one.
Changes the speed of xenomorphs, especially the Queen, to be much faster. Hunters now have half the speed.
All Xenomorphs have a health buff, some more than others. Damage has increased for xenomorphs to make them more deadly, as melee armour makes xenomorphs laughably ineffective.
Hunters and sentinels hit faster, making hit and run less effective. Praetorians and Queens are now much more intimidating, but attack slower.
* Update xenomorph_balance.dm
* Praetorian & Queen health nealth. Alien Infestation now spawns 2-3 Larva.
* Fixes reacted wine instantly turning into grappa (#56218)
Presumably some people want wine, since it seems to have a trait associated with it! So I changed grappa's enzyme requirement to 10.
* Fixes reacted wine instantly turning into grappa
Co-authored-by: Thalpy <33956696+Thalpy@users.noreply.github.com>
* [runtime] Fixes a runtime caused by the sickly blade. (#56226)
Prevents a runtime if the mind of the user is somehow null.
* [runtime] Fixes a runtime caused by the sickly blade.
Co-authored-by: Cimika/Lessie/KathyRyals <65850818+KathyRyals@users.noreply.github.com>
* Adds in the comet hairstyle. (#56217)
## About The Pull Request
This PR adds in the new "Comet" hairstyle. A bit anime-ish.
[Example](https://i.imgur.com/e5Xg9It.png)
## Why It's Good For The Game
New hairstyles are good, and so far i've recieved positive feedback on this one.
* Adds in the comet hairstyle.
Co-authored-by: CRITAWAKETS <sebastienracicot@hotmail.com>
* Fixes early removals of beakers (#56230)
Presently you can early remove a beaker/reagent_holder from a grinder by using alt click on it. This makes it so that grinders have to finish grinding before you can do that.
* Fixes early removals of beakers from reagent grinders
Co-authored-by: Thalpy <33956696+Thalpy@users.noreply.github.com>
* Fixes exosuit console EMP logging and a mech runtime on EMPing. (#56196)
Occupants is a list. Mech EMP logging now correctly outputs the occupants instead of just outputting "/list"
Also when EMPing a mech in testing this PR, I noticed a runtime happening that I've fixed. Untyped for loop where the casting var was never assigned to and thus was always null.
* Fixes exosuit console EMP logging and a mech runtime on EMPing.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* 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>
* Applies #55457 (#56202)
A Pipeline that should've died when its last atmos component got deleted hasn't died, because of SSair.networks. Now they die. Its non-existence grants a lilliputian performance improvement to SSAIR_PIPENETS. airs[i] qdel is mostly about being thorough; every component has a gas mixture for each node all the time by default.
* Re-PR of #55457 ([Port] Atmos components now nullifies node properly)
Co-authored-by: Xenomedes <park246824@gmail.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>
* Revert "separates malf ai from traitor dynamic ruleset (#56090)" (#56197)
Reverts #56090
It literally does not do the one thing its supposed to #56192
* Revert "separates malf ai from traitor dynamic ruleset"
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
* Removes ambiguity in holiday name. (#56162)
About The Pull Request
"Independence Day" is now "US Independence Day"
Why It's Good For The Game
There are dozens of independence days around the world, the current name is too ambiguous.
Changelog
🆑
tweak: The holiday observed on every 4th of July is now called "US Independence Day" instead of just "Independence Day".
/🆑
* Changes name of "usa" holiday to remove ambiguity.
Co-authored-by: interestingusernam3 <51925758+interestingusernam3@users.noreply.github.com>
* Adds custom icon mapping helper. (#56183)
Allows embedding icon edits in your maps by fetching them from external host.
This is intended for use with live-loaded away/event maps not standard ones.
Also updates rustg defines to expose the additional options arguments. (https://github.com/tgstation/rust-g/pull/59)
* Adds custom icon mapping helper.
Co-authored-by: AnturK <AnturK@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>
* tweaks lrtbbq blackmarket thing cooldown timers (#56176)
when i asked chosen a while back why is this thing so slow he said he did math wrong as proof on comment in line 54: tier 4 was 120 instead of 20 processing ticks aka 60s instead of 10s
he probably forgot about it so i ll pr it myself
* tweaks lrtbbq blackmarket thing cooldown timers
Co-authored-by: Tlaltecuhtli <33834933+Tlaltecuhtli@users.noreply.github.com>
* Infinite Gun Culling: Gun Kit Edition (#56133)
Every prototype firearm in the game now utilizes crafting to construct it, usually sacrificing a standard version of that firearm in order to produce the new one. The guns are made using gun part kits you print from the security protolathe (or buy, in the case of hellfire lasers).
* Infinite Gun Culling: Gun Kit Edition
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Makes the rest of large guns bulky (sans traitor objectives and a few others) (#56132)
## About The Pull Request
What it says on the tin.
Practically everything but pistols, SMGs, and traitor weapons can no longer be stashed into bags.
I had considered making some large guns that traitors can order (like the blast cannon) also bulky, but concealment is important for some of those things.
However, the bulldog shotgun and sniper rifle have been made bulky, because they're shotguns and sniper rifles!
Traitor objectives are still normal size and can fit in backpacks.
## Why It's Good For The Game
Makes previous changes to weapons and thus balance consistent across our full list of guns. Players can clearly understand what can fit in the bag based on the size of the weapon.
* Makes the rest of large guns bulky (sans traitor objectives and a few others)
* Update special.dm
Co-authored-by: Cartographer-D <63861499+Cartographer-D@users.noreply.github.com>
Co-authored-by: Azarak <azarak10@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>
* Prevents everything except carbons, PAIs and cats from resting to fix Ian paralysis (this time with bitflags). (#56089)
There is now a mobility flag that determines a mob's ability to rest. Only works with living mobs. Most living mobs shouldn't be able to rest, so it's only true for carbons, cats and PAIs. Fixes#56034. Fixes#55975 by making borgs unable to rest.
* Prevents everything except carbons, PAIs and cats from resting to fix Ian paralysis (this time with bitflags).
Co-authored-by: interestingusernam3 <51925758+interestingusernam3@users.noreply.github.com>