From fb4543c179fe598d9de461f8d91fbeca130f36e4 Mon Sep 17 00:00:00 2001 From: Neerti Date: Tue, 14 Apr 2015 08:34:02 -0400 Subject: [PATCH] Adds ability for the AI to toggle movement of its hologram. --- code/game/machinery/hologram.dm | 16 +++++++++------- code/modules/mob/freelook/ai/eye.dm | 3 ++- code/modules/mob/living/silicon/ai/ai.dm | 13 ++++++++++++- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index a286b530ca..e2eb3ab6a3 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -37,7 +37,7 @@ var/const/HOLOPAD_MODE = RANGE_BASED icon_state = "holopad0" layer = TURF_LAYER+0.1 //Preventing mice and drones from sneaking under them. - + var/power_per_hologram = 500 //per usage per hologram idle_power_usage = 5 use_power = 1 @@ -144,15 +144,15 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ if((stat & NOPOWER) || !active_ai) clear_holo(master) continue - - if((HOLOPAD_MODE == RANGE_BASED && (get_dist(master.eyeobj, src) > holo_range))) - clear_holo(master) - continue - + +// if((HOLOPAD_MODE == RANGE_BASED && (get_dist(master.eyeobj, src) > holo_range))) +// clear_holo(master) +// continue + if(HOLOPAD_MODE == AREA_BASED) var/area/holo_area = get_area(src) var/area/eye_area = get_area(master.eyeobj) - + if(!(eye_area in holo_area.master.related)) clear_holo(master) continue @@ -166,6 +166,8 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ var/obj/effect/overlay/H = masters[user] H.loc = get_turf(user.eyeobj) masters[user] = H + if((HOLOPAD_MODE == RANGE_BASED && (get_dist(H, src) > holo_range))) + clear_holo(user) return 1 /* diff --git a/code/modules/mob/freelook/ai/eye.dm b/code/modules/mob/freelook/ai/eye.dm index a0df415c03..73384d24b8 100644 --- a/code/modules/mob/freelook/ai/eye.dm +++ b/code/modules/mob/freelook/ai/eye.dm @@ -19,7 +19,8 @@ //Holopad if(ai.holo) - ai.holo.move_hologram(ai) + if(ai.hologram_follow) + ai.holo.move_hologram(ai) return 1 // AI MOVEMENT diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index ea0d794203..03a90e3109 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -22,7 +22,8 @@ var/list/ai_verbs_default = list( /mob/living/silicon/ai/proc/sensor_mode, /mob/living/silicon/ai/proc/show_laws_verb, /mob/living/silicon/ai/proc/toggle_acceleration, - /mob/living/silicon/ai/proc/toggle_camera_light + /mob/living/silicon/ai/proc/toggle_camera_light, + /mob/living/silicon/ai/proc/toggle_hologram_movement ) //Not sure why this is necessary... @@ -76,6 +77,7 @@ var/list/ai_verbs_default = list( var/datum/trackable/track = null var/last_announcement = "" var/datum/announcement/priority/announcement + var/hologram_follow = 1 //This is used for the AI eye, to determine if a holopad's hologram should follow it or not. /mob/living/silicon/ai/proc/add_ai_verbs() src.verbs |= ai_verbs_default @@ -664,6 +666,15 @@ var/list/ai_verbs_default = list( set desc = "Augment visual feed with internal sensor overlays" toggle_sensor_mode() +/mob/living/silicon/ai/proc/toggle_hologram_movement() + set name = "Toggle Hologram Movement" + set category = "AI Commands" + set desc = "Toggles hologram movement based on moving with your virtual eye." + + hologram_follow = !hologram_follow + usr << "Your hologram will [hologram_follow ? "follow" : "no longer follow"] you now." + + /mob/living/silicon/ai/proc/check_unable(var/flags = 0) if(stat == DEAD) usr << "\red You are dead!"