100 lines
3.4 KiB
Plaintext
100 lines
3.4 KiB
Plaintext
|
|
/obj/item/camera/siliconcam
|
|
name = "silicon photo camera"
|
|
var/in_camera_mode = FALSE
|
|
var/list/datum/picture/stored = list()
|
|
|
|
/obj/item/camera/siliconcam/ai_camera
|
|
name = "AI photo camera"
|
|
flash_enabled = FALSE
|
|
|
|
/obj/item/camera/siliconcam/proc/toggle_camera_mode(mob/user)
|
|
if(in_camera_mode)
|
|
camera_mode_off(user)
|
|
else
|
|
camera_mode_on(user)
|
|
|
|
/obj/item/camera/siliconcam/proc/camera_mode_off(mob/user)
|
|
in_camera_mode = FALSE
|
|
to_chat(user, "<B>Camera Mode deactivated</B>")
|
|
|
|
/obj/item/camera/siliconcam/proc/camera_mode_on(mob/user)
|
|
in_camera_mode = TRUE
|
|
to_chat(user, "<B>Camera Mode activated</B>")
|
|
|
|
/obj/item/camera/siliconcam/proc/selectpicture(mob/user)
|
|
var/list/nametemp = list()
|
|
var/find
|
|
if(!stored.len)
|
|
to_chat(usr, "<span class='boldannounce'>No images saved</span>")
|
|
return
|
|
var/list/temp = list()
|
|
for(var/i in stored)
|
|
var/datum/picture/p = i
|
|
nametemp += p.picture_name
|
|
temp[p.picture_name] = p
|
|
find = input(user, "Select image") in nametemp|null
|
|
if(!find)
|
|
return
|
|
return temp[find]
|
|
|
|
/obj/item/camera/siliconcam/proc/viewpictures(mob/user)
|
|
var/datum/picture/selection = selectpicture(user)
|
|
if(istype(selection))
|
|
show_picture(user, selection)
|
|
|
|
/obj/item/camera/siliconcam/ai_camera/after_picture(mob/user, datum/picture/picture, proximity_flag)
|
|
var/number = stored.len
|
|
picture.picture_name = "Image [number] (taken by [loc.name])"
|
|
stored[picture] = TRUE
|
|
to_chat(usr, "<span class='unconscious'>Image recorded</span>")
|
|
|
|
/obj/item/camera/siliconcam/robot_camera
|
|
name = "Cyborg photo camera"
|
|
var/printcost = 2
|
|
|
|
/obj/item/camera/siliconcam/robot_camera/after_picture(mob/user, datum/picture/picture, proximity_flag)
|
|
var/mob/living/silicon/robot/C = loc
|
|
if(istype(C) && istype(C.connected_ai))
|
|
var/number = C.connected_ai.aicamera.stored.len
|
|
picture.picture_name = "Image [number] (taken by [loc.name])"
|
|
C.connected_ai.aicamera.stored[picture] = TRUE
|
|
to_chat(usr, "<span class='unconscious'>Image recorded and saved to remote database</span>")
|
|
else
|
|
var/number = stored.len
|
|
picture.picture_name = "Image [number] (taken by [loc.name])"
|
|
stored[picture] = TRUE
|
|
to_chat(usr, "<span class='unconscious'>Image recorded and saved to local storage. Upload will happen automatically if unit is lawsynced.</span>")
|
|
|
|
/obj/item/camera/siliconcam/robot_camera/selectpicture(mob/user)
|
|
var/mob/living/silicon/robot/R = loc
|
|
if(istype(R) && R.connected_ai)
|
|
R.picturesync()
|
|
return R.connected_ai.aicamera.selectpicture(user)
|
|
else
|
|
return ..()
|
|
|
|
/obj/item/camera/siliconcam/robot_camera/verb/borgprinting()
|
|
set category ="Robot Commands"
|
|
set name = "Print Image"
|
|
set src in usr
|
|
if(usr.stat == DEAD)
|
|
return
|
|
borgprint(usr)
|
|
|
|
/obj/item/camera/siliconcam/robot_camera/proc/borgprint(mob/user)
|
|
var/mob/living/silicon/robot/C = loc
|
|
if(!istype(C) || C.toner < 20)
|
|
to_chat(user, "<span class='warning'>Insufficent toner to print image.</span>")
|
|
return
|
|
var/datum/picture/selection = selectpicture(user)
|
|
if(!istype(selection))
|
|
to_chat(user, "<span class='warning'>Invalid Image.</span>")
|
|
return
|
|
var/obj/item/photo/p = new /obj/item/photo(C.loc, selection)
|
|
p.pixel_x = rand(-10, 10)
|
|
p.pixel_y = rand(-10, 10)
|
|
C.toner -= printcost //All fun allowed.
|
|
visible_message("[C.name] spits out a photograph from a narrow slot on its chassis.")
|
|
to_chat(usr, "<span class='notice'>You print a photograph.</span>")
|