image
Flash + Emp = Flash with no user = Runtime.
Additional logic has been put in place to handle this.
I've also robustified the calculate_deviation proc to have explicit returns in every code path and simplified it to only care about the direction the victim is facing compared to the attacker's position.
* Magic numbers are bad because wizards are bad
* Rohesie feex
Return on place shuttle rotating.
No more shuttle crashing on rotating. and one tile shifting.
Shuttles no more able move stationary docking ports.
Reverts #53133
Shuttle hulk fix.
fixes#47764fixes#45853
Add destroying of custom dock on shuttle_docker Destroy.
There exists a specific state where ui.open() can be called yet the
result would be a null window and such behaviour would be intentional.
The following CRASH in ui.send_asset() would thus be misleading,
because send_asset() was called after open().
This PR adds more information to the CRASH about when the failure state
can occur, makes open() return a value based on whether it actually
opened a new pooled window or not, and makes sure modular computer apps
don't send_assets unless a new pooled window was created.
If you're doing emotes in full darkness right next to someone, then the person won't see them, despite seeing your mob, which is counter-intuitive. This fixes that issue
Adds the condition of !eavesdrop_range to the logic for determining weather or not a non-whispered speech message should be displayed based on our CHAT_GHOSTEARS preference. Making it so that the Ghost Ears setting is no longer checked if the message is whispered and therefore long distance whispers will no longer be suppressed if both preferences are not set to TRUE.
/obj/item/gun/ballistic/revolver/russian/proc/shoot_self starts a transfer_soul chain with a null user, because it's the target who inflicted it on themselves. There is no user.
Later on in when we init the shade, we attempt to copy the "master"/user's language to the shade too.
No user, classic runtime.
Moving the user language transfer behind a conditional check addresses this oversight.
When transforming back to a human, /obj/effect/proc_holder/spell/targeted/shapeshift/slimeform/Restore called the parent but didn't return it, instead returning nothing (always null).
It's used in /obj/effect/proc_holder/spell/targeted/shapeshift/cast when transforming back to human via the Burning Black crossbreed which expect Restore() to return a mob. The code would then go on to immediately runtime.
With the appropriate return, this runtime no longer happens as the value is no longer null.
Not a new outfit, mind you. But this gives plasmamen psychologists a more fitting outfit, until one specifically for them gets sprited.
I think giving them a medical plasmaman helmet, enviroslacks (as given to the bartender, lawyer, detective), and white envirogloves is better than them looking mostly like plasma assistants.
#53316 either created or exposed a new runtime.
Microwaved snaccs expected snacc results. New caks are not snaccs but are caks.
Added branching code paths to handle both food typepaths while @Qustinnus finishes up his rework.
fix: Microwaved cake batter and similar snack foods that create non-snack foods will no longer cause runtimes, meaning cakes now get filled with reagenty-goodness and are both delicious and nutritious.
qdel'd objects could still process in SSair because SSair utilises a cache whenever it has to resume processing runs from a partially completed state from running out of processing time.
Of all the things that processed on SSair, only one thing actually took care to remove itself from the cache as well on deletion.
This is an important subsystem and the processing lists should not be public. Objects don't need to know how SSair works, they just call the proc to add when they start processing and call the proc to remove when they finish.
Thanks to @LemonInTheDark and @willox for spending a lot of time helping me track down a proper fix to this issue.
🆑 Qustinnus
code: Moves spaghetti to new food
fix: Fixes some more size problems on food
fix: Fixes organs having wrong params
/🆑fixes#53482fixes#53572
/datum/gas_mixture/proc/remove(amount) has a code path that can return null.
All the code following the runtimes assume some bit of gas_mixture was actually removed at all. No need to trigger this code if there's no gas_mixture removed, can early return instead.
Following the cyborg inventory refactor, code changed a bit.
Cyborg inventory screens are inited in the HUD, however AI Shells don't generate a HUD until an AI assumes direct control.
Damaging an AI shell before the AI created a HUD in it would cause runtimes as modules disabled and enabled.
To remedy this, we now initialize the core inventory slots on the robit Init() and then update them as necessary in the HUD code later on if an AI ever deigns to grace your shell with their exalted presence instead of asking for it and then never using it.
Flashes now deal stamina damage and micro-stun, they deal higher damage than batons BUT they have a severe disadavntage in form of directionality. Stamina damage and the duration of the micro stun is determined by direction your enemy is facing.
Previously, if you tried to put in a light tube at any point before fully finishing the fixture, it would break the light tube. This is no longer the case, and it will now simply prevent you from putting it in.
Optimizes stat panel code for better performance, including icon caching and removing some unnecessary processing
Also fixes#53432fix#53381fix#53724
Changelog
add: icons are back on alt clicks
fix: horrible performance from alt clicking turfs with multiple objects
tweak:browser should notify the SS when it's ready to receive data
* Update statbrowser.html
* Apply suggestions from code review
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* hidden = TRUE
* almost ready
* Browser should notify when ready to receive data
* Apply MSO's suggestions
* reset cache if something in it gets deleted
* Fix runtime
* fix my stupid code
* send href_token when adding admin tabs
* fix an issue with cyborg suit topic
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
Adds door seals to the game, inspired by the ones used in Alien Isolation and SOMA. Trivially easy for a human to remove, but makes it a nightmare to try and smash through if you're an alien, an evil robot, or don't have hands. I also slightly changed how airlock reinforcement works, as now there are two ways to increase the integrity, the previous way of just resetting the max_integrity after the removal of the plating wouldn't work.
Changes the name of the recipe for the gloves to make them more clear
Adds a note in the tongue file to make sure it's clear you SHOULDN'T SEE THAT TONGUE.
Adds a unique chat message for mimes who use sign language, to make it clearer you can't cheese as a mime
Adds a unique slurring verb for drunkards
Removes the ability for sign languagers to use megaphones, which I forgot existed in the game.
Punctuation removal now replaces all punctuation used with periods rather than with blank space, to reduce run-on sentences.
This PR makes Guides to Dank Mimery use a radial menu as a method for choosing mime spells, instead of using an outdated html browser menu. Old book text was moved to the item description instead, to make it clear what it does.
Fixes these issues with mechs:
Mechs aren't using power to move (broken in #52902)
Gygax leg actuator button is opposite of what it should be (off when it should be on) (broken in #52902)
Mechpads don't actually send mechs
None of the error messages for failing to move work