* no return moment (#56384)
mind magnification helmets no longer work when admins have it disabled.
* Fixes mind magnification helmets working even when disabled
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Prevents the most common case of fire settling with an excited group (#56317)
Basically when a group with a breakdown timer one tick away from settling merges with a group with hotspots in
it, and the one with a high breakdown timer is larger, the group would settle without respecting the timer of
the hotspot group, causing fwoosh levels of flame.
There's two other ways to achieve this, if you had one group of tiles that are close to the same gasmix as
another
group, and they became inactive, we'd have the same issue. I've solved this by moving the hotspot subprocess to
after active turfs and before excited groups, just for safety ya feel me?
It's still in theory possible, but much much harder. The hard solution to this would be to integrate heat with
how we reset excited group timers, and split excited groups into smaller portions, but I'm not sure I like that
idea.
I need to mull it over.
* Prevents the most common case of fire settling with an excited group
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Rework AI status displays with emote and radials (#56255)
🆑 coiax
tweak: AI status displays are now controlled either by emotes (like
`*happy`), or by clicking on the status display as an AI.
/🆑
The code that deals with AI status displays is very old, and was hooked
into events like Login() and Logout(). This reworks the code to
something resembling modern standards.
AIs can control their AI status boards in the same way that slimes can
do with things like `*slimesneak`, and can also use the radial menu to
preview what emotion they will be sending to the world.
By removing the Login()/Logout() code as well, the final BSOD of the AI
will now no longer disappear the instant that the AI leaves their corpse
(calling a Logout()).
* Rework AI status displays with emote and radials
Co-authored-by: coiax <yellowbounder@gmail.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>
* Admins transforming a humanoid into an AI can now choose to not move them to the satellite. (#56075)
Adds a Yes/No/Cancel button to the AI transform proc that admins use on whether the new AI should be moved to the satellite or not.
Sometimes admins want to make an AI somewhere off-station for whatever reason. Also makes testing things with AIs less of a hassle.
* Admins transforming a humanoid into an AI can now choose to not move them to the satellite.
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* 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>