Files
Bubberstation/code/modules/paperwork/paperbin.dm
Cyberboss d27899ce64 Unequip refactor fix pack (#24040)
* Fixes drag drop deletion

* Fix it for clothing as well

* Do it properly

* Various other incap checks I noticed from the unequip refactor

* Time to generalize this shitty shit

* PADDLING!!!

* A whole bunch of ree
2017-02-14 08:52:56 +01:00

144 lines
3.8 KiB
Plaintext

/obj/item/weapon/paper_bin
name = "paper bin"
desc = "Contains all the paper you'll never need."
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "paper_bin1"
item_state = "sheet-metal"
throwforce = 0
w_class = WEIGHT_CLASS_NORMAL
throw_speed = 3
throw_range = 7
pressure_resistance = 8
var/papertype = /obj/item/weapon/paper
var/total_paper = 30
var/list/papers = list()
var/obj/item/weapon/pen/bin_pen
/obj/item/weapon/paper_bin/Initialize(mapload)
..()
if(!mapload)
return
var/obj/item/weapon/pen/P = locate(/obj/item/weapon/pen) in src.loc
if(P && !bin_pen)
P.loc = src
bin_pen = P
update_icon()
var/static/warned = FALSE
if(!warned)
warning("one or more paperbins ate a pen duing initialize()")
warned = TRUE
/obj/item/weapon/paper_bin/fire_act(exposed_temperature, exposed_volume)
if(!total_paper)
return
..()
/obj/item/weapon/paper_bin/Destroy()
if(papers)
for(var/i in papers)
qdel(i)
papers = null
. = ..()
/obj/item/weapon/paper_bin/fire_act(exposed_temperature, exposed_volume)
if(total_paper)
total_paper = 0
update_icon()
..()
/obj/item/weapon/paper_bin/MouseDrop(atom/over_object)
var/mob/living/M = usr
if(!istype(M) || M.incapacitated() || !Adjacent(M))
return
if(over_object == M)
M.put_in_hands(src)
else if(istype(over_object, /obj/screen/inventory/hand))
var/obj/screen/inventory/hand/H = over_object
M.putItemFromInventoryInHandIfPossible(src, H.held_index)
add_fingerprint(M)
/obj/item/weapon/paper_bin/attack_paw(mob/user)
return attack_hand(user)
/obj/item/weapon/paper_bin/attack_hand(mob/user)
if(user.lying)
return
user.changeNext_move(CLICK_CD_MELEE)
if(bin_pen)
var/obj/item/weapon/pen/P = bin_pen
P.loc = user.loc
user.put_in_hands(P)
user << "<span class='notice'>You take [P] out of \the [src].</span>"
bin_pen = null
update_icon()
else if(total_paper >= 1)
total_paper--
update_icon()
// If there's any custom paper on the stack, use that instead of creating a new paper.
var/obj/item/weapon/paper/P
if(papers.len > 0)
P = papers[papers.len]
papers.Remove(P)
else
P = new papertype(src)
if(SSevent.holidays && SSevent.holidays[APRIL_FOOLS])
if(prob(30))
P.info = "<font face=\"[CRAYON_FONT]\" color=\"red\"><b>HONK HONK HONK HONK HONK HONK HONK<br>HOOOOOOOOOOOOOOOOOOOOOONK<br>APRIL FOOLS</b></font>"
P.rigged = 1
P.updateinfolinks()
P.loc = user.loc
user.put_in_hands(P)
user << "<span class='notice'>You take [P] out of \the [src].</span>"
else
user << "<span class='warning'>[src] is empty!</span>"
add_fingerprint(user)
/obj/item/weapon/paper_bin/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/paper))
var/obj/item/weapon/paper/P = I
if(!user.transferItemToLoc(P, src))
return
user << "<span class='notice'>You put [P] in [src].</span>"
papers.Add(P)
total_paper++
update_icon()
else if(istype(I, /obj/item/weapon/pen))
var/obj/item/weapon/pen/P = I
if(!user.transferItemToLoc(P, src))
return
user << "<span class='notice'>You put [P] in [src].</span>"
bin_pen = P
update_icon()
else
return ..()
/obj/item/weapon/paper_bin/examine(mob/user)
..()
if(total_paper)
user << "It contains " + (total_paper > 1 ? "[total_paper] papers" : " one paper")+"."
else
user << "It doesn't contain anything."
/obj/item/weapon/paper_bin/update_icon()
if(total_paper < 1)
icon_state = "paper_bin_0"
else
icon_state = "[initial(icon_state)]"
cut_overlays()
if(bin_pen)
add_overlay(image(icon=bin_pen.icon,icon_state=bin_pen.icon_state))
/obj/item/weapon/paper_bin/construction
name = "construction paper bin"
desc = "Contains all the paper you'll never need, IN COLOR!"
icon_state = "paper_binc"
papertype = /obj/item/weapon/paper/construction