// Picture frames /obj/item/wallframe/picture name = "picture frame" desc = "The perfect showcase for your favorite deathtrap memories." icon = 'icons/obj/decals.dmi' materials = list() flags_1 = 0 icon_state = "frame-empty" result_path = /obj/structure/sign/picture_frame var/obj/item/photo/displayed /obj/item/wallframe/picture/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/photo)) if(!displayed) if(!user.transferItemToLoc(I, src)) return displayed = I update_icon() else to_chat(user, "\The [src] already contains a photo.") ..() //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/wallframe/picture/attack_hand(mob/user) if(user.get_inactive_held_item() != src) ..() return if(contents.len) var/obj/item/I = pick(contents) user.put_in_hands(I) to_chat(user, "You carefully remove the photo from \the [src].") displayed = null update_icon() return ..() /obj/item/wallframe/picture/attack_self(mob/user) user.examinate(src) /obj/item/wallframe/picture/examine(mob/user) if(user.is_holding(src) && displayed) displayed.show(user) else ..() /obj/item/wallframe/picture/update_icon() cut_overlays() if(displayed) add_overlay(getFlatIcon(displayed)) /obj/item/wallframe/picture/after_attach(obj/O) ..() var/obj/structure/sign/picture_frame/PF = O PF.copy_overlays(src) if(displayed) PF.framed = displayed if(contents.len) var/obj/item/I = pick(contents) I.forceMove(PF) /obj/structure/sign/picture_frame name = "picture frame" desc = "Every time you look it makes you laugh." icon = 'icons/obj/decals.dmi' icon_state = "frame-empty" var/obj/item/photo/framed var/persistence_id /obj/structure/sign/picture_frame/Initialize(mapload, dir, building) . = ..() LAZYADD(SSpersistence.photo_frames, src) if(dir) setDir(dir) if(building) pixel_x = (dir & 3)? 0 : (dir == 4 ? -30 : 30) pixel_y = (dir & 3)? (dir ==1 ? -30 : 30) : 0 /obj/structure/sign/picture_frame/Destroy() LAZYREMOVE(SSpersistence.photo_frames, src) return ..() /obj/structure/sign/picture_frame/proc/get_photo_id() if(istype(framed) && istype(framed.picture)) return framed.picture.id /obj/structure/sign/picture_frame/proc/load_from_id(id) var/obj/item/photo/P = load_photo_from_disk(id) if(istype(P)) if(istype(framed)) framed.forceMove(drop_location()) else qdel(framed) framed = P update_icon() /obj/structure/sign/picture_frame/examine(mob/user) if(in_range(src, user) && framed) framed.show(user) else ..() /obj/structure/sign/picture_frame/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/screwdriver) || istype(I, /obj/item/wrench)) to_chat(user, "You start unsecuring [name]...") if(I.use_tool(src, user, 30, volume=50)) playsound(loc, 'sound/items/deconstruct.ogg', 50, 1) to_chat(user, "You unsecure [name].") deconstruct() return else if(istype(I, /obj/item/photo)) if(!framed) var/obj/item/photo/P = I if(!user.transferItemToLoc(P, src)) return framed = P update_icon() else to_chat(user, "\The [src] already contains a photo.") ..() /obj/structure/sign/picture_frame/attack_hand(mob/user) . = ..() if(.) return if(framed) framed.show(user) /obj/structure/sign/picture_frame/update_icon() cut_overlays() if(framed) add_overlay(getFlatIcon(framed)) /obj/structure/sign/picture_frame/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) var/obj/item/wallframe/picture/F = new /obj/item/wallframe/picture(loc) if(framed) F.displayed = framed framed = null if(contents.len) var/obj/item/I = pick(contents) I.forceMove(F) F.update_icon() qdel(src)