Files
WildkinsandGitHub e4192f9b8f Lag War Day 5.5: are you serious dude (#21889)
we have a gorillion hard deletions and it turns out half of them are
because we set the "ALWAYS HARD DELETE THIS" flag rather than just like.
fixing the hard delete.

cool
2026-02-21 01:41:50 +00:00

109 lines
2.6 KiB
Plaintext

/// Generic version of the AI eye without the AI-specific handling, for things like the Camera MIU mask.
/mob/abstract/eye/freelook
name = "Inactive Camera Eye"
name_suffix = "Camera Eye"
living_eye = FALSE
click_handler_type = /datum/click_handler/eye/freelook
/mob/abstract/eye/freelook/Initialize()
. = ..()
visualnet = GLOB.cameranet
/mob/abstract/eye/freelook/Destroy()
visualnet = null
. = ..()
/datum/click_handler/eye/freelook/OnDblClick(atom/A, params)
var/mob/abstract/eye = user.eyeobj
if(!eye) //Something has broken, ensure the click handler doesn't stick around
user.RemoveClickHandler(src)
return
eye.DblClickOn(A, params)
/// AI EYE
///
/// A mob that the AI controls to look around the station with.
/// It streams chunks as it moves around, which will show it what the AI can and cannot see.
/mob/abstract/eye/freelook/aiEye
name = "Inactive AI Eye"
name_suffix = "AI Eye"
icon_state = "AI-eye"
living_eye = FALSE
click_handler_type = /datum/click_handler/eye/freelook/aiEye
/mob/abstract/eye/freelook/aiEye/Initialize()
. = ..()
visualnet = GLOB.cameranet
/mob/abstract/eye/freelook/aiEye/setLoc(var/T, var/cancel_tracking = 1)
. = ..()
if(. && isAI(owner))
var/mob/living/silicon/ai/ai = owner
if(cancel_tracking)
ai.ai_cancel_tracking()
//Holopad
if(ai.holo && ai.hologram_follow)
ai.holo.move_hologram(ai)
return 1
/datum/click_handler/eye/freelook/aiEye/OnDblClick(atom/A, params)
user.DblClickOn(A, params)
// AI MOVEMENT
// The AI's "eye". Described on the top of the page.
/mob/living/silicon/ai
holo = null
/mob/living/silicon/burn_skin(burn_amount)
return FALSE
/mob/living/silicon/ai/proc/destroy_eyeobj(var/atom/new_eye)
if(!eyeobj) return
if(!new_eye)
new_eye = src
QDEL_NULL(eyeobj)
if(client)
client.eye = new_eye
/mob/living/silicon/ai/proc/create_eyeobj(var/newloc = get_turf(src))
if(eyeobj) destroy_eyeobj()
eyeobj = new /mob/abstract/eye/freelook/aiEye(newloc)
eyeobj.possess(src)
/atom/proc/move_camera_by_click()
if(istype(usr, /mob/living/silicon/ai))
var/mob/living/silicon/ai/AI = usr
if(AI.eyeobj && AI.client.eye == AI.eyeobj)
AI.eyeobj.setLoc(src)
// Return to the Core.
/mob/living/silicon/ai/proc/core()
set category = "AI Commands"
set name = "AI Core"
view_core()
/mob/living/silicon/ai/proc/view_core()
camera = null
unset_machine()
if(!src.eyeobj)
return
eyeobj.possess(src)
/mob/living/silicon/ai/proc/toggle_acceleration()
set category = "AI Commands"
set name = "Toggle Camera Acceleration"
if(!eyeobj)
return
eyeobj.acceleration = !eyeobj.acceleration
to_chat(usr, "Camera acceleration has been toggled [eyeobj.acceleration ? "on" : "off"].")