diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index af3431a4dae..0816d699bde 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -171,6 +171,7 @@ item_state = "camera" w_class = WEIGHT_CLASS_SMALL slot_flags = ITEM_SLOT_NECK + new_attack_chain = TRUE var/list/matter = list("metal" = 2000) var/pictures_max = 10 // cameras historically were varedited to start with 30 shots despite @@ -244,10 +245,12 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor size = nsize to_chat(user, "Camera will now take [size]x[size] photos.") -/obj/item/camera/attack__legacy__attackchain(mob/living/carbon/human/M as mob, mob/user as mob) - return +/obj/item/camera/pre_attack(atom/target, mob/living/user, params) + if(..() || ismob(target)) + return FINISH_ATTACK -/obj/item/camera/attack_self__legacy__attackchain(mob/user) +/obj/item/camera/activate_self(mob/user) + . = ..() if(on_cooldown) to_chat(user, "[src] is still on cooldown!") return @@ -258,17 +261,17 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor icon_state = icon_off to_chat(user, "You switch the camera [on ? "on" : "off"].") -/obj/item/camera/attackby__legacy__attackchain(obj/item/I as obj, mob/user as mob, params) - if(istype(I, /obj/item/camera_film)) - if(pictures_left) +/obj/item/camera/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(istype(used, /obj/item/camera_film)) + if(pictures_left > 0) to_chat(user, "[src] still has some film in it!") - return - to_chat(user, "You insert [I] into [src].") + return ITEM_INTERACT_COMPLETE + to_chat(user, "You insert [used] into [src].") user.drop_item() - qdel(I) + qdel(used) pictures_left = pictures_max - return - ..() + return ITEM_INTERACT_COMPLETE + return ..() /obj/item/camera/proc/get_icon(list/turfs, turf/center, mob/user) @@ -401,25 +404,34 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor mob_detail += "You can also see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]." return mob_detail -/obj/item/camera/afterattack__legacy__attackchain(atom/target, mob/user, flag) - if(!on || !pictures_left || ismob(target.loc)) - return +/obj/item/camera/interact_with_atom(atom/target, mob/living/user, list/modifiers) + if(take_photo(target, user)) + return ITEM_INTERACT_COMPLETE +/obj/item/camera/ranged_interact_with_atom(atom/target, mob/living/user, list/modifiers) + if(take_photo(target, user)) + return ITEM_INTERACT_COMPLETE + +/obj/item/camera/proc/take_photo(atom/target, mob/user) + if(!on || (pictures_left <= 0) || ismob(target.loc)) + return FALSE + + pictures_left-- + on = FALSE + on_cooldown = TRUE playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, TRUE, -3) if(flashing_light) set_light(3, 2, LIGHT_COLOR_TUNGSTEN) sleep(0.2 SECONDS) //Allow lights to update before capturing image addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, set_light), 0), 0.1 SECONDS) - captureimage(target, user, flag) - pictures_left-- - to_chat(user, "[pictures_left] photos left.") + captureimage(target, user) + to_chat(user, "[pictures_left] photo\s left.") icon_state = icon_off - on = FALSE - on_cooldown = TRUE handle_haunt(user) addtimer(CALLBACK(src, PROC_REF(reset_cooldown)), 6.4 SECONDS) // fucking magic numbers + return TRUE /obj/item/camera/proc/reset_cooldown() icon_state = icon_on @@ -433,7 +445,7 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor var/can_see = (T in view(viewer)) //No x-ray vision cameras. return can_see -/obj/item/camera/proc/captureimage(atom/target, mob/user, flag) +/obj/item/camera/proc/captureimage(atom/target, mob/user) var/x_c = target.x - (size-1)/2 var/y_c = target.y + (size-1)/2 var/z_c = target.z @@ -449,10 +461,10 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor y_c-- x_c = x_c - size - var/datum/picture/P = createpicture(target, user, turfs, mobs, flag, blueprints) + var/datum/picture/P = createpicture(target, user, turfs, mobs) printpicture(user, P) -/obj/item/camera/proc/createpicture(atom/target, mob/user, list/turfs, mobs, flag) +/obj/item/camera/proc/createpicture(atom/target, mob/user, list/turfs, mobs) var/icon/photoimage = get_icon(turfs, target, user) var/icon/small_img = icon(photoimage) @@ -534,19 +546,20 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor . += "Alt-Shift-Click [src] to print a specific photo." . += "Ctrl-Shift-Click [src] to delete a specific photo." -/obj/item/camera/digital/afterattack__legacy__attackchain(atom/target, mob/user, flag) +/obj/item/camera/digital/take_photo(atom/target, mob/user) if(!on || !pictures_left || ismob(target.loc)) - return + return FALSE - captureimage(target, user, flag) + captureimage(target, user) playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, TRUE, -3) icon_state = icon_off on = FALSE on_cooldown = TRUE addtimer(CALLBACK(src, PROC_REF(reset_cooldown)), 6.4 SECONDS) // magic numbers here too + return TRUE -/obj/item/camera/digital/captureimage(atom/target, mob/user, flag) +/obj/item/camera/digital/captureimage(atom/target, mob/user) if(length(saved_pictures) >= max_storage) to_chat(user, "Maximum photo storage capacity reached.") return @@ -566,7 +579,7 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor y_c-- x_c = x_c - size - var/datum/picture/P = createpicture(target, user, turfs, mobs, flag) + var/datum/picture/P = createpicture(target, user, turfs, mobs) saved_pictures += P /obj/item/camera/digital/AltShiftClick(mob/user)