146 lines
3.8 KiB
Plaintext
146 lines
3.8 KiB
Plaintext
// 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, "<span class=notice>\The [src] already contains a photo.</span>")
|
|
..()
|
|
|
|
//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, "<span class='notice'>You carefully remove the photo from \the [src].</span>")
|
|
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, "<span class='notice'>You start unsecuring [name]...</span>")
|
|
if(I.use_tool(src, user, 30, volume=50))
|
|
playsound(loc, 'sound/items/deconstruct.ogg', 50, 1)
|
|
to_chat(user, "<span class='notice'>You unsecure [name].</span>")
|
|
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, "<span class=notice>\The [src] already contains a photo.</span>")
|
|
|
|
..()
|
|
|
|
/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)
|