mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-01 04:21:42 +00:00
Converts most spans into span procs. Mostly used regex for this and sorted out any compile time errors afterwards so there could be some bugs. Was initially going to do defines, but ninja said to make it into a proc, and if there's any overhead, they can easily be changed to defines. Makes it easier to control the formatting and prevents typos when creating spans as it'll runtime if you misspell instead of silently failing. Reduces the code you need to write when writing spans, as you don't need to close the span as that's automatically handled by the proc. (Note from Lemon: This should be converted to defines once we update the minimum version to 514. Didn't do it now because byond pain and such)
98 lines
3.3 KiB
Plaintext
98 lines
3.3 KiB
Plaintext
//CONTAINS: Evidence bags
|
|
|
|
/obj/item/evidencebag
|
|
name = "evidence bag"
|
|
desc = "An empty evidence bag."
|
|
icon = 'icons/obj/storage.dmi'
|
|
icon_state = "evidenceobj"
|
|
inhand_icon_state = ""
|
|
w_class = WEIGHT_CLASS_TINY
|
|
|
|
/obj/item/evidencebag/afterattack(obj/item/I, mob/user,proximity)
|
|
. = ..()
|
|
if(!proximity || loc == I)
|
|
return
|
|
evidencebagEquip(I, user)
|
|
|
|
/obj/item/evidencebag/attackby(obj/item/I, mob/user, params)
|
|
if(evidencebagEquip(I, user))
|
|
return 1
|
|
|
|
/obj/item/evidencebag/handle_atom_del(atom/A)
|
|
cut_overlays()
|
|
w_class = initial(w_class)
|
|
icon_state = initial(icon_state)
|
|
desc = initial(desc)
|
|
|
|
/obj/item/evidencebag/proc/evidencebagEquip(obj/item/I, mob/user)
|
|
if(!istype(I) || I.anchored)
|
|
return
|
|
|
|
if(SEND_SIGNAL(loc, COMSIG_CONTAINS_STORAGE) && SEND_SIGNAL(I, COMSIG_CONTAINS_STORAGE))
|
|
to_chat(user, span_warning("No matter what way you try, you can't get [I] to fit inside [src]."))
|
|
return TRUE //begone infinite storage ghosts, begone from me
|
|
|
|
if(istype(I, /obj/item/evidencebag))
|
|
to_chat(user, span_warning("You find putting an evidence bag in another evidence bag to be slightly absurd."))
|
|
return TRUE //now this is podracing
|
|
|
|
if(loc in I.GetAllContents()) // fixes tg #39452, evidence bags could store their own location, causing I to be stored in the bag while being present inworld still, and able to be teleported when removed.
|
|
to_chat(user, span_warning("You find putting [I] in [src] while it's still inside it quite difficult!"))
|
|
return
|
|
|
|
if(I.w_class > WEIGHT_CLASS_NORMAL)
|
|
to_chat(user, span_warning("[I] won't fit in [src]!"))
|
|
return
|
|
|
|
if(contents.len)
|
|
to_chat(user, span_warning("[src] already has something inside it!"))
|
|
return
|
|
|
|
if(!isturf(I.loc)) //If it isn't on the floor. Do some checks to see if it's in our hands or a box. Otherwise give up.
|
|
if(SEND_SIGNAL(I.loc, COMSIG_CONTAINS_STORAGE)) //in a container.
|
|
SEND_SIGNAL(I.loc, COMSIG_TRY_STORAGE_TAKE, I, src)
|
|
if(!user.dropItemToGround(I))
|
|
return
|
|
|
|
user.visible_message(span_notice("[user] puts [I] into [src]."), span_notice("You put [I] inside [src]."),\
|
|
span_hear("You hear a rustle as someone puts something into a plastic bag."))
|
|
|
|
icon_state = "evidence"
|
|
|
|
var/mutable_appearance/in_evidence = new(I)
|
|
in_evidence.plane = FLOAT_PLANE
|
|
in_evidence.layer = FLOAT_LAYER
|
|
in_evidence.pixel_x = 0
|
|
in_evidence.pixel_y = 0
|
|
add_overlay(in_evidence)
|
|
add_overlay("evidence") //should look nicer for transparent stuff. not really that important, but hey.
|
|
|
|
desc = "An evidence bag containing [I]. [I.desc]"
|
|
I.forceMove(src)
|
|
w_class = I.w_class
|
|
return 1
|
|
|
|
/obj/item/evidencebag/attack_self(mob/user)
|
|
if(contents.len)
|
|
var/obj/item/I = contents[1]
|
|
user.visible_message(span_notice("[user] takes [I] out of [src]."), span_notice("You take [I] out of [src]."),\
|
|
span_hear("You hear someone rustle around in a plastic bag, and remove something."))
|
|
cut_overlays() //remove the overlays
|
|
user.put_in_hands(I)
|
|
w_class = WEIGHT_CLASS_TINY
|
|
icon_state = "evidenceobj"
|
|
desc = "An empty evidence bag."
|
|
|
|
else
|
|
to_chat(user, span_notice("[src] is empty."))
|
|
icon_state = "evidenceobj"
|
|
return
|
|
|
|
/obj/item/storage/box/evidence
|
|
name = "evidence bag box"
|
|
desc = "A box claiming to contain evidence bags."
|
|
|
|
/obj/item/storage/box/evidence/PopulateContents()
|
|
for(var/i in 1 to 6)
|
|
new /obj/item/evidencebag(src)
|