`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
* Adds Syndicate Infiltration Team
Goals:
- Provide a way to introduce a group of co-operating traitors, e.g: for
events.
- Provide a way to draw several ghosts into the round at once.
- Provide a way to enable additional objectives (e.g: kidnap) traitors
don't currently have a way to complete.
- Provide an evil counterpart to the Emergency Response Team.
Main:
- Creates a new "Send Infiltration Team" verb under Secrets -> IC for
admins. This verb creates a team of syndicate infiltrators, drawn from
ghosts.
- The infiltrators themselves are prespawned with stealth items
(including 20 TC uplink implants, dust implants, chameleon jumpsuit,
etc).
- The admin who invokes the SIT chooses their mission. It can be
anything.
- This team has their own shuttle, with 3 docking points on the
Cyberiad: arrivals maint, eng maint, and sci maint.
- Their shuttle has blast doors, and a small shuttle brig for abducting
Cyberiad crew.
Misc:
- Creates an 'emag_immune' attribute for doors (and pod doors). Applies
it to SST, SIT and nuke ops main doors. SST application prevents an
exploit. SIT/nukeops application prevents failzerg.
* check_rights, color codes
* Improved Options
- Added PDA painter to SIT spawn room, to prevent SIT members from
metagaming the SIT by identifying them from their PDA color.
- Added food, drinks, and laundry machine/crayons (to recolor gloves) to
the SIT spawn room.
- Added team size prompt for issuing admin, to allow them to send larger
or smaller teams.
- Removed storage implant from the list of things SIT team members spawn
with. In most cases, they will have plenty of TC to buy one if they want
it.
- Fixed action button sprite on dust implant. No longer displays as
blank.
- Added the number of TC each team member gets on spawn as an
admin-configurable option when using the verb. 20-30 is suggested.
- Updated memories ("Notes") given to each SIT member upon creation.
- Fixed a bug with SIT team size which was sometimes causing one less
person to spawn than was intended.
* Minor Improvements
- Made SIT members show up on antaghud, and to each other. Rather like
nuke ops.
- Made SIT members start out with a flashlight in their backpack, so
they can more easily find their way into the station from maint, without
bumbling around in the dark.
- Removed manhack grenade from SIT shuttle, replaced it with a welding
tool. Subtle hint to break the wall into the station.
- Added option for admins to spawn a Syndicate Officer to brief the team
before they go. The officer does not go with the team. They're rather
like ERT Directors briefing ERTs before they are sent out. Optional
fluff.
* Map Area Tweak
* Fixes potential SST exploit with c4-ing mech door
* Tiger
* World's smallest merge/Travis fix
* Renames Officer to Management Consultant
* Removes protected var blocking C4 on poddoors
* Removes emag_immune property for doors
- Split EXP_TYPE_CREW into EXP_TYPE_LIVING (all living mobs) and
EXP_TYPE_CREW (actual crew positions). Job unlocks use EXP_TYPE_CREW.
General playtime reports use EXP_TYPE_LIVING. Playing corgi doesn't help
unlock jobs, but it does show in your stats.
- Added tracking for karma-locked jobs as a department in stats.
- Added quite a few safety checks.
- Split the per-client part of update_exp into update_exp_client
- Added new config option to let admins bypass the system, intended for
testing
- Moved defines to code\__DEFINES\preferences.dm
- Made use_exp_restrictions_heads_hours text2num'ed in configuration.dm,
rather than on use
- Converted all exp_types to #defines, instead of magic strings
- Moved exp_jobsmap to jobs.dm
- Replaced has_exp_for_job with job.available_in_playtime, which returns
- Changed <BR> -s to <LI>s, for proper HTML lists
- Made update_exp less indented, easier to read
- Fixed potential runtime in admin/topic.dm when calling exp window on a
non-existent mob
- Made job preferences screen tell you how long until you unlock each
locked job, in hours or minutes as appliccable
- Changed SQL storage format because mediumtext does not support default
''
- Converted exptimer() into a roundstart hook proc
Missed body tag
Typo fix
- Replaced 'EXP' with "Playtime' in most admin-visible locations. The
system is still invisible to normal players.
- Changed the types of exp you can accumulate from 'all', 'eng', 'sup',
etc to more human-friendly names like 'Crew', 'Engineering', and
'Supply'.
- Eliminated some copy-paste.
- Added a new configuration option: use_exp_restrictions_heads_hours.
When enabled and set to a >0 value, it overrides all head/ai job
playtime requirements, instead substituting that number of hours.
- Deletes old debugging code
- Deletes old test options
- Deletes old comments
- Changes a check from MENTOR+ to ADMIN+
- Enables the admin bypass for job permission checks
Refactored most instances of special_role setting/checking to use new
SPECIAL_ROLE_X defines in code/__DEFINES/gamemode.dm
Removed relative pathing from objective.dm and split large if statements
into multiple, plus a bunch of styling fixes
Refactored every instance of `istype(ticker.mode` into a GAMEMODE_IS_X
define in code/__DEFINES/gamemode.dm. Done primarily for when someone gets
around to making gamemode code less AWFUL
- Respawning as a drone now ignores respawnability again
- Respawning as ERT now ignores respawnability again, but respawnable
ghosts get first dibs
- Becoming a non-respawnable ghost once means all future ghosting will
be be non-respawnable, unless you are sent back to the lobby
- Posibrains now disqualify non-respawnable ghosts, and are more fickle
about pinging