Turns digital camo into an element (#46134)

* Turns digital camo into an element

* Removes commented out code.

* Keep forgetting this

* Update code/datums/elements/digitalcamo.dm

Co-Authored-By: Rob Bailey <actioninja@gmail.com>
This commit is contained in:
nemvar
2019-09-02 23:49:58 -07:00
committed by Rob Bailey
co-authored by Rob Bailey
parent 0398bc156e
commit 0ef8d32c91
9 changed files with 60 additions and 49 deletions
@@ -4,21 +4,20 @@
helptext = "We cannot be tracked by camera or seen by AI units while using this skill. However, humans looking at us will find us... uncanny."
button_icon_state = "digital_camo"
dna_cost = 1
active = FALSE
//Prevents AIs tracking you but makes you easily detectable to the human-eye.
/datum/action/changeling/digitalcamo/sting_action(mob/user)
..()
if(user.digitalcamo)
if(active)
to_chat(user, "<span class='notice'>We return to normal.</span>")
user.digitalinvis = 0
user.digitalcamo = 0
user.RemoveElement(/datum/element/digitalcamo)
else
to_chat(user, "<span class='notice'>We distort our form to hide from the AI.</span>")
user.digitalcamo = 1
user.digitalinvis = 1
user.AddElement(/datum/element/digitalcamo)
active = !active
return TRUE
/datum/action/changeling/digitalcamo/Remove(mob/user)
user.digitalcamo = FALSE
user.digitalinvis = FALSE
user.RemoveElement(/datum/element/digitalcamo)
..()
@@ -89,9 +89,6 @@
else if(InCritical())
. += "[t_His] breathing is shallow and labored."
if(digitalcamo)
. += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly unsimian manner."
var/trait_exam = common_trait_examine()
if (!isnull(trait_exam))
. += trait_exam
@@ -291,9 +291,6 @@
else if(!client)
msg += "[t_He] [t_has] a blank, absent-minded stare and appears completely unresponsive to anything. [t_He] may snap out of it soon.\n"
if(digitalcamo)
msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly inhuman manner.\n"
if (length(msg))
. += "<span class='warning'>[msg.Join("")]</span>"
-11
View File
@@ -2,9 +2,6 @@
set waitfor = FALSE
set invisibility = 0
if(digitalinvis)
handle_diginvis() //AI becomes unable to see mob
if((movement_type & FLYING) && !(movement_type & FLOATING)) //TODO: Better floating
float(on = TRUE)
@@ -83,14 +80,6 @@
/mob/living/proc/handle_diseases()
return
/mob/living/proc/handle_diginvis()
if(!digitaldisguise)
src.digitaldisguise = image(loc = src)
src.digitaldisguise.override = 1
for(var/mob/living/silicon/ai/AI in GLOB.player_list)
AI.client.images |= src.digitaldisguise
/mob/living/proc/handle_random_events()
return
+9 -11
View File
@@ -878,25 +878,23 @@
/mob/living/proc/can_track(mob/living/user)
//basic fast checks go first. When overriding this proc, I recommend calling ..() at the end.
if(SEND_SIGNAL(src, COMSIG_LIVING_CAN_TRACK, args) & COMPONENT_CANT_TRACK)
return FALSE
var/turf/T = get_turf(src)
if(!T)
return 0
return FALSE
if(is_centcom_level(T.z)) //dont detect mobs on centcom
return 0
return FALSE
if(is_away_level(T.z))
return 0
return FALSE
if(user != null && src == user)
return 0
return FALSE
if(invisibility || alpha == 0)//cloaked
return 0
if(digitalcamo || digitalinvis)
return 0
return FALSE
// Now, are they viewable by a camera? (This is last because it's the most intensive check)
if(!near_camera(src))
return 0
return 1
return FALSE
return TRUE
//used in datum/reagents/reaction() proc
/mob/living/proc/get_permeability_protection(list/target_zones)
+7 -14
View File
@@ -54,7 +54,7 @@
/**
* Magic var that stops you moving and interacting with anything
*
*
* Set when you're being turned into something else and also used in a bunch of places
* it probably shouldn't really be
*/
@@ -72,7 +72,7 @@
/**
* back up of the real name during admin possession
*
*
* If an admin possesses an object it's real name is set to the admin name and this
* stores whatever the real name was previously. When possession ends, the real name
* is reset to this value
@@ -115,12 +115,12 @@
var/active_hand_index = 1
/**
* list of items held in hands
*
*
* len = number of hands, eg: 2 nulls is 2 empty hands, 1 item and 1 null is 1 full hand
* and 1 empty hand.
*
*
* NB: contains nulls!
*
*
* held_items[active_hand_index] is the actively held item, but please use
* get_active_held_item() instead, because OOP
*/
@@ -158,17 +158,10 @@
*/
var/list/mob_spell_list = list()
/// bitflags defining which status effects can be inflicted (replaces canknockdown, canstun, etc)
var/status_flags = CANSTUN|CANKNOCKDOWN|CANUNCONSCIOUS|CANPUSH
/// Can they be tracked by the AI?
var/digitalcamo = 0
///Are they ivisible to the AI?
var/digitalinvis = 0
///what does the AI see instead of them?
var/image/digitaldisguise = null
/// Can they interact with station electronics
var/has_unlimited_silicon_privilege = 0
@@ -199,5 +192,5 @@
///THe z level this mob is currently registered in
var/registered_z = null
var/memory_throttle_time = 0