Files
Bubberstation/code/modules/paperwork/paper_cutter.dm
T
Cruix ac0bad5d61 Added priority overlay system. (#18225)
Added priority overlays to atoms, which will not be removed when overlays are cut and will always remain on top when new overlays are added. This requires everyone to use add_overlay() and cut_overlays() instead of overlays += and overlays.Cut(). These procs are found in __HELPERS/icons.dm, and the priority overlay list is found in game/atoms.dm. Everything else is replacing deprecated overlay manipulation.
2016-06-17 10:11:53 +12:00

128 lines
3.7 KiB
Plaintext

/obj/item/weapon/papercutter
name = "paper cutter"
desc = "Standard office equipment. Precisely cuts paper using a large blade."
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "papercutter-cutter"
force = 5
throwforce = 5
w_class = 3
var/obj/item/weapon/paper/storedpaper = null
var/obj/item/weapon/hatchet/cutterblade/storedcutter = null
var/cuttersecured = TRUE
pass_flags = PASSTABLE
/obj/item/weapon/papercutter/New()
..()
storedcutter = new /obj/item/weapon/hatchet/cutterblade(src)
/obj/item/weapon/papercutter/suicide_act(mob/user)
if(storedcutter)
user.visible_message("<span class='suicide'>[user] is beheading \himself with [src.name]! It looks like \he's trying to commit suicide.</span>")
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return (BRUTELOSS)
else
user.visible_message("<span class='suicide'>[user] repeatedly bashes [src.name] against \his head! It looks like \he's trying to commit suicide.</span>")
playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1)
return (BRUTELOSS)
/obj/item/weapon/papercutter/update_icon()
..()
cut_overlays()
icon_state = (storedcutter ? "[initial(icon_state)]-cutter" : "[initial(icon_state)]")
if(storedpaper)
add_overlay("paper")
/obj/item/weapon/papercutter/attackby(obj/item/P, mob/user, params)
if(istype(P, /obj/item/weapon/paper) && !storedpaper)
if(!user.drop_item())
return
playsound(loc, "pageturn", 60, 1)
user << "<span class='notice'>You place \the [P] in [src].</span>"
P.loc = src
storedpaper = P
update_icon()
return
if(istype(P, /obj/item/weapon/hatchet/cutterblade) && !storedcutter)
if(!user.drop_item())
return
user << "<span class='notice'>You replace [src]'s [P].</span>"
P.loc = src
storedcutter = P
update_icon()
return
if(istype(P, /obj/item/weapon/screwdriver) && storedcutter)
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
user << "<span class='notice'>\The [storedcutter] has been [cuttersecured ? "unsecured" : "secured"].</span>"
cuttersecured = !cuttersecured
return
..()
/obj/item/weapon/papercutter/attack_hand(mob/user)
src.add_fingerprint(user)
if(!storedcutter)
user << "<span class='notice'>The cutting blade is gone! You can't use \the [src] now.</span>"
return
if(!cuttersecured)
user << "<span class='notice'>You remove [src]'s [storedcutter].</span>"
user.put_in_hands(storedcutter)
storedcutter = null
update_icon()
if(storedpaper)
playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1)
user << "<span class='notice'>You neatly cut \the [storedpaper].</span>"
storedpaper = null
qdel(storedpaper)
new /obj/item/weapon/paperslip(get_turf(src))
new /obj/item/weapon/paperslip(get_turf(src))
update_icon()
/obj/item/weapon/papercutter/MouseDrop(atom/over_object)
var/mob/M = usr
if(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
if(!remove_item_from_storage(M))
if(!M.unEquip(src))
return
switch(H.slot_id)
if(slot_r_hand)
M.put_in_r_hand(src)
if(slot_l_hand)
M.put_in_l_hand(src)
add_fingerprint(M)
/obj/item/weapon/paperslip
name = "paper slip"
desc = "A little slip of paper left over after a larger piece was cut. Whoa."
icon_state = "paperslip"
icon = 'icons/obj/bureaucracy.dmi'
burn_state = FLAMMABLE
burntime = 3
/obj/item/weapon/paperslip/New()
..()
pixel_x = rand(-5, 5)
pixel_y = rand(-5, 5)
/obj/item/weapon/hatchet/cutterblade
name = "paper cutter"
desc = "The blade of a paper cutter. Most likely removed for polishing or sharpening."
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "cutterblade"
item_state = "knife"