This requires a 508 beta version to use. If Travis fails this he's a bitch
Exceptions will generate a stack trace, which is way easier to see and more helpful in actually solving this kind of crap. Also logs all the arguments, src, line, and file automatically.
Removed any dubiously helpful information in the exception names so the runtime condenser won't see each one as a different runtime. If the information is critical to solve these bugs (camera one maybe?), then I'll just make these warnings.
Thrown exceptions crash the currently running proc. Yes that means there's useless returns in a bunch of these, sue me. spawn()'s are to let the proc continue.
Almost all of these are difficult to trigger, but I did test playsound. And frankly even if they do cause bugs by crashing procs, big whoop
Simplifies the code for goliath hide application on ripley mech.(adding hides var to ripley)
Fixes some mech equipment's Destroy not calling return ..()
Fixes mech sleeper not reset its patient var when ejecting the patient.
Removed unnedded update_equip_info( in sleeper/detach()
Fixes an oversight in syringe_gun/process().
This should fix shuttle walls not rotating back to their old state correctly when the shuttle docks elsewhere.
Also uses built in procs and caches the calculated rotation angle to improve shuttle docking speed by not calculating it again for every object.
This should also ensure that diagonal objects rotate correctly, rather then snapping back to a cardinal direction.
Under carn shuttles, When shuttles dock at a docking port that is not the same direction as them, they rotate their bounding box, and they do magic i don't understand to rotate where the turfs get placed.
But it doesn't rotate the items or smoothwall or handle pixel_xy or any of that.
This fixes that.
Shuttle rotation will call /atom/proc/shuttleRotate(degrees)
Default behavior handles most cases, and overrides handle edge cases.
Shuttle walls don't smooth wall or obey directions, so I just rotate their icon using matrix transform, its dirty but it works.
See: https://tgstation13.org/msoshit/powrightinthekisser.png or https://tgstation13.org/msoshit/fuckingshuttles.png
Fixes throw_at() to look nicely for xeno leap by adding the diagonals_first argument.
Removes useless gateway/Crossed and gateway/Bumped().
Changes throw_at() to use diagonal directions.
I replaced the atom variable "throwpass" with the LETPASSTHROW pass_flags
I readded hit_check proc to catch things getting on the thrown thing's tile during its sleep(1) (especially needed for mobs running towards the thing), the only other possibility would've been to add throwing checks in atom/movable/Crossed() (called after every move) and I don't think it'd be worth it.
I added the item var "thrownby" to be able to continue to log the thrower of the item when it hits a mob. It removes the need for a thrower argument in throw_impact() and hitby().
Fixes the liberty station spawning an SMG without a firing pin by
creating an unrestricted variant of it. Added unrestricted L6 and
unrestricted bulldog object types for admin spawn since I was already
there.
Fixes aliens being able to whisper to ghosts.
Adds logging to shooting plasma statues.
- Now supports Shadowling's Veil ability.
- Fixed lamp button not updating properly when forcibly disabled.
- (Poorly) fixed cyborg eyes not glowing after recovering from a stun.
Fixes slaughter demon icon upon being admin healed/revived.
Add the limit var to datum/spellbook_entry to limit the amount of times it can be bought by the wizard. It's currently only used to limit wizard from summoning more than 3 slaughter demons.
Remove eye stat damage from flashbang's bang() proc (eye damage is already handled in carbon/flash_eyes())
Changed many flash producing effect to affect all carbons instead of only humans.
The experimental weldingtool now produces less light than regular welding tool and can be used safely with only sunglasses.