`reset_perspective` from tgstation.
Also adds various support for remote viewing lenses - like cameras not
transmitting xray vision, among other things
Recommit because we're using different compiler versions
Start of porting the /tg/station mecha update.
This commit only cleans up the code and adds the proper dependencies for
the mecha.
- Removes relative pathing from /datum/events
- Updated Process_Spacemove() to use
atom/movable/proc/get_spacemove_backup()
- Basically just makes launching off of unanchored objects in space an
OOP behaviour
- Removed styling atrocities and relative pathing from most of the mecha files.
- Notable exceptions:
- code/game/mecha/mech_bay.dm
- code/game/mecha/mech_fabricator.dm
- code/game/mecha/mecha_construction_paths.dm
- code/game/mecha/mecha_parts.dm
- code/game/mecha/mecha_wreckage.dm
- code/game/mecha/paintkits.dm
- Removed dyndomove/dyndoattackby/dyndobulletact. No more icky dynamic
calls. Replaced by specific code for the 3 modules that used it.
- Refactored module cooldown. It now uses addtimer, and power usage is
hooked directly into the cooldown calls.
- Added atom/movable/proc/has_buckled_mobs(). Currently not that useful,
but, necessary for porting the multi-buckling system from /tg/.
- Split code/game/mecha/equipment/tools/tools.dm into multiple files.
- Removed snowflake behaviour from exosuit drill. It now calls
turf.drill_act(src).
- Different from /tg/: Allows you to drill any wall/floor normally.
- Drill no longer gibs mobs. It deals 80 organ damage instead.
- Drill can be used to harvest dead mobs.
- Removed all global_iterator systems from mecha and mecha equipment.
Everything now uses object processing.
- Mecha now have a turn sound variable and step sound variable. Updated
all subtypes to use these instead of snowflake domove procs.
- Removed mecha_do_after, mecha now uses the normal do_after.
- Removed enter_after, same as above.
- /obj/mecha/Process_Spacemove no longer strangely calls the user's
spacemove.
- /obj/mecha/return_pressure now uses return_air instead of copypasted
cabin air detection.
- Same for /obj/mecha/return_temperature
- Added /obj/mecha/Exited. Basically, properly clears occupant refs,
even if they teleport out/otherwise exit improperly.
- Added hooks for mecha action buttons; Didn't implement them yet.
- Moved mecha UI to code/game/mecha/mecha_topic.dm
- Fixed turfs not updating atmos when ChangeTurf(/turf/space) is used.
- Updated visible_message and audible_message. Both now use
get_mobs_in_view() to ensure that mobs inside containers can see
messages.
- Removed /obj/item/mecha_parts/mecha_equipment/tool subtype. It had no
use. Any subtypes are now just subtypes of
/obj/item/mecha_parts/mecha_equipment.
A lot has changed.
Major points:
- All mobs now use the -tg- thrown alerts system. This is a system where
a maximum of 5 "alerts" (which take the apperance of HUD icons like the
inventory and modular action buttons) on their HUD.
- Alerts are defined as a subtype of /obj/screen/alert.
- Alerts are "thrown", or activated on the mob with the proc
`mob.throw_alert("alert_id", /obj/screen/alert/path, severity
(optional), new_master (optional, overlays the referenced "obj" on the
button))`
- Alerts are cleared by calling `mob.clear_alert("alert_id")` or by the
/obj/screen/alert containing a `timeout` setting, which will
automatically clear itself after that period of deciseconds.
- Alerts may have functionality beyond appearance: Mousing over them
will use the WireWraith tooltip system to generate a themed tooltip,
and clicking them may have a function defined on the
/obj/screen/alert object.
- Shift-clicking an alert will give you it's name and status, in case
the tooltips fail to work.
- Hunger/Oxygen/Toxin/Nitrogen/Pressure/Etc warnings are now handled via
the -tg- thrown alerts system.
- Failing to breathe anything will display as an "No O2" warning.
- Species breathing has been refactored to accomodate this. Vox are
able to breathe the station air without instantly dying, but will be
poisoned every time they breathe by the oxygen in the air. Any
species with a unique gas breathing type will also display the
correct "Choking (no X gas)" instead of just "oxygen". (Unless they
have not breathed anything in, it's a quirk.)
- Robot cell/temperature alerts also use this.
- Aliens, though not harmed by toxins, will have an alert if they
breathe in toxins, notifying them that "You'll be toast if this
lights up."
- More alerts have been added
- Buckling
- Activated on: Being buckled to an object.
- Cleared on: Being unbuckled.
- Click functionality: Calls resist(); Will unbuckle from chair
instantly if unrestrained, otherwise, there is a delay period.
- Hand/Leg cuffs
- Activated on: Being handcuffed.
- Cleared on: Being unhandcuffed.
- Click functionality: Calls resist(); Will attempt to either get out
of the handcuffs, or, if you are a xenomorph or hulk, break the
handcuffs in 5 seconds.
- Blind/High
- Activated on: Becoming blinded/becoming high on LSD.
- Cleared on: Becoming unblinded/the high wearing off.
- Click functionality: None.
- Asleep
- Activated on: Life() tick detecting sleeping.
- Deactivated on: Sleeping being 0 or less.
- Click functionality: None.
- Weightless
- Activated on: Losing gravity.
- Deactivated on: Moving back into an area with gravity.
- Click functionality: None.
- On Fire
- Activated on: Catching fire.
- Deactivated on: Being extinguished.
- Click functionality: Calls resist(); Causes you to stop, drop, and
roll, which will reduce firestacks and possibly extinguish you.
- Law update (BORG ONLY)
- Activated on: Laws being changed.
- Deactivated on: Timer, 300 deciseconds.
- Click functionality: None.
- Hacked (BORG ONLY)
- Activated on: Being emagged/given malf tools by the malf AI.
- Deactivated on: Emagged status being removed.
- Click functionality: None.
- Locked (BORG ONLY)
- Activated on: Lockdown being set (by emag law rewriting/robotics
console/wire being destroyed)
- Deactivated on: Movement being unlocked.
- Click functionality: None.
- Notify Cloning (GHOST ONLY)
- Activated on: A human's body being placed in a DNA scanner.
- Deactivated on: Timer, 300 deciseconds.
- Click functionality: Reenters body.
- Notify Jump (MULTIPURPOSE) (GHOST ONLY)
- Activated on: Any sort of chance to become a mob (ie, golem rune).
- Deactivated on: Timer, 300 deciseconds.
- Click functionality: Varies.
Currently, to_chat is literally just a proc that does user << message.
But it'll let us do output modification in the future, especially for
something like Goon's HTML chat.
Big thanks to PJB for his to_chat script, see
https://github.com/d3athrow/vgstation13/pull/6625 for more details.
This commit overhauls a bunch of systems so that buckling works for
any subtype of /obj. This means that space vines and chairs and beds all
use the same system. A lot of stuff has been touched.