`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
The runtime occurred when get_icon_state() attempted to handle_alt_icon
on a head, even if if was a stump. Adds sanity to check if it's a stump
or if the organ's destroyed (as how it's handled in update_icons for
mobs) and resolves the runtime and #5863.
First bug: Changing your alt head in CMA wouldn't update it correctly.
You had to proc update_body(1, 1) twice in order to do it because of
where the head_organ.handle_alt_icon() proc call was placed in
organ_icons. Resolved
Second bug: Lack of sanity and inability to select head marking styles
with "all" alt heads allowed. Resolved
Previously, your markings would only randomize if you clicked the randomize button and were of a species that had body markings. Fixes that and tidies up the proc calls for marking randomization a bit.
Furthermore, a bug existed where if you changed a mob's species via CMA, the mob's cosmetic attributes (hair, hair colour, skin colour, skin tone, marking styles and colours, head accessory style and colour) will not have changed correctly. Delaying appearance update fixed that.
Finally, a mob's body will now correctly render as fat if they become fat and skinny if they become skinny and show deformities immediately.
Further explaining this fix: It required an override to be implemented in update_body that re-cached the mob's bodyparts in order to reflect changes to the limbs (i.e. fatness/slimness).
As for deformation, I just needed to modify the existing update_body() proc call.
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.
Tajara ears are on their head now, fixes a crash bug with tail wagging
with body accessories that are split-rendered, adds secondary
hair/facial hair themes, fixes issues with human/skrell arm/lower body
sprites etc.