diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 6fcd3ba0377..6f368ae3d60 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -521,18 +521,6 @@ access = get_all_centcom_access() ..() -/obj/item/weapon/clipboard - name = "clipboard" - desc = "Apply paper to this to write better. Can also hold pens." - icon = 'items.dmi' - icon_state = "clipboard00" - var/obj/item/weapon/pen/pen = null - item_state = "clipboard" - throwforce = 0 - w_class = 2.0 - throw_speed = 3 - throw_range = 10 - #define MAXCOIL 30 /obj/item/weapon/cable_coil name = "cable coil" @@ -757,7 +745,6 @@ m_amt = 400 origin_tech = "magnets=1" - /obj/item/weapon/caution desc = "Caution! Wet Floor!" name = "wet floor sign" @@ -775,27 +762,6 @@ name = "warning cone" icon_state = "cone" - -/obj/item/weapon/paper - name = "paper" - gender = PLURAL - icon = 'paper.dmi' - icon_state = "paper" - var/info = null - throwforce = 0 - w_class = 1.0 - throw_speed = 3 - throw_range = 15 - layer = 4 - var/list/stamped - var/see_face = 1 - var/body_parts_covered = HEAD - var/protective_temperature = T0C + 10 - var/heat_transfer_coefficient = 0.99 - var/gas_transfer_coefficient = 1 - var/permeability_coefficient = 0.99 - var/siemens_coefficient = 0.80 - /obj/item/weapon/directions name = "crumpled paper" gender = PLURAL @@ -843,41 +809,6 @@ name = "paper- 'Standard Operating Procedure'" info = "Alert Levels:
\nBlue- Emergency
\n\t1. Caused by fire
\n\t2. Caused by manual interaction
\n\tAction:
\n\t\tClose all fire doors. These can only be opened by reseting the alarm
\nRed- Ejection/Self Destruct
\n\t1. Caused by module operating computer.
\n\tAction:
\n\t\tAfter the specified time the module will eject completely.
\n
\nEngine Maintenance Instructions:
\n\tShut off ignition systems:
\n\tActivate internal power
\n\tActivate orbital balance matrix
\n\tRemove volatile liquids from area
\n\tWear a fire suit
\n
\n\tAfter
\n\t\tDecontaminate
\n\t\tVisit medical examiner
\n
\nToxin Laboratory Procedure:
\n\tWear a gas mask regardless
\n\tGet an oxygen tank.
\n\tActivate internal atmosphere
\n
\n\tAfter
\n\t\tDecontaminate
\n\t\tVisit medical examiner
\n
\nDisaster Procedure:
\n\tFire:
\n\t\tActivate sector fire alarm.
\n\t\tMove to a safe area.
\n\t\tGet a fire suit
\n\t\tAfter:
\n\t\t\tAssess Damage
\n\t\t\tRepair damages
\n\t\t\tIf needed, Evacuate
\n\tMeteor Shower:
\n\t\tActivate fire alarm
\n\t\tMove to the back of ship
\n\t\tAfter
\n\t\t\tRepair damage
\n\t\t\tIf needed, Evacuate
\n\tAccidental Reentry:
\n\t\tActivate fire alrms in front of ship.
\n\t\tMove volatile matter to a fire proof area!
\n\t\tGet a fire suit.
\n\t\tStay secure until an emergency ship arrives.
\n
\n\t\tIf ship does not arrive-
\n\t\t\tEvacuate to a nearby safe area!" -/obj/item/weapon/paper_bin - name = "paper bin" - desc = "This contains many papers." - icon = 'paper.dmi' - icon_state = "paper_bin1" - var/amount = 30.0 - item_state = "sheet-metal" - throwforce = 1 - w_class = 3.0 - throw_speed = 3 - throw_range = 7 - -/obj/item/weapon/pen - desc = "It's a normal black ink pen." - name = "pen" - icon = 'paper.dmi' - icon_state = "pen" - flags = FPRINT | ONBELT | TABLEPASS - throwforce = 0 - w_class = 1.0 - throw_speed = 7 - throw_range = 15 - m_amt = 10 - var/colour = "black" //what colour the ink is! - -/obj/item/weapon/pen/blue - desc = "It's a normal blue ink pen." - icon_state = "pen_blue" - colour = "blue" - -/obj/item/weapon/pen/red - desc = "It's a normal red ink pen." - icon_state = "pen_red" - colour = "red" - /obj/item/weapon/banhammer desc = "A banhammer" name = "banhammer" @@ -1392,60 +1323,6 @@ w_class = 1.0 origin_tech = "biotech=2" -/obj/item/weapon/stamp - desc = "A rubber stamp for stamping important documents." - name = "rubber stamp" - icon = 'paper.dmi' - icon_state = "stamp-qm" - item_state = "stamp" - flags = FPRINT | TABLEPASS - throwforce = 0 - w_class = 1.0 - throw_speed = 7 - throw_range = 15 - m_amt = 60 - var/color = "cargo" - -/obj/item/weapon/stamp/captain - name = "captain's rubber stamp" - icon_state = "stamp-cap" - color = "captain" - -/obj/item/weapon/stamp/hop - name = "head of personnel's rubber stamp" - icon_state = "stamp-hop" - color = "hop" - -/obj/item/weapon/stamp/hos - name = "head of security's rubber stamp" - icon_state = "stamp-hos" - color = "hosred" - -/obj/item/weapon/stamp/ce - name = "chief engineer's rubber stamp" - icon_state = "stamp-ce" - color = "chief" - -/obj/item/weapon/stamp/rd - name = "research director's rubber stamp" - icon_state = "stamp-rd" - color = "director" - -/obj/item/weapon/stamp/cmo - name = "chief medical officer's rubber stamp" - icon_state = "stamp-cmo" - color = "medical" - -/obj/item/weapon/stamp/denied - name = "\improper DENIED rubber stamp" - icon_state = "stamp-qm" - color = "redcoat" - -/obj/item/weapon/stamp/clown - name = "clown's rubber stamp" - icon_state = "stamp-clown" - color = "clown" - /* /obj/item/weapon/cigarpacket name = "Pete's Cuban Cigars" diff --git a/code/game/objects/items/weapons/hand_lablers.dm b/code/game/objects/items/weapons/hand_lablers.dm deleted file mode 100644 index ea560cb43ce..00000000000 --- a/code/game/objects/items/weapons/hand_lablers.dm +++ /dev/null @@ -1,40 +0,0 @@ -/obj/item/weapon/hand_labeler - icon = 'items.dmi' - icon_state = "labeler" - item_state = "flight" - name = "Hand labeler" - var/label = null - var/labels_left = 30 - -/obj/item/weapon/hand_labeler/afterattack(atom/A, mob/user as mob) - if(A==loc) // if placing the labeller into something (e.g. backpack) - return // don't set a label - - if(!labels_left) - user << "\red No labels left." - return - if(!label || !length(label)) - user << "\red No text set." - return - if(length(A.name) + length(label) > 64) - user << "\red Label too big." - return - if(ishuman(A)) - user << "\red You can't label humans." - return - - for(var/mob/M in viewers()) - if ((M.client && !( M.blinded ))) - M << "\blue [user] labels [A] as [label]." - A.name = "[A.name] ([label])" - -/obj/item/weapon/hand_labeler/attack_self() - var/str = input(usr,"Label text?","Set label","") - if(!str || !length(str)) - usr << "\red Invalid text." - return - if(length(str) > 64) - usr << "\red Text too long." - return - label = str - usr << "\blue You set the text to '[str]'." \ No newline at end of file diff --git a/code/game/objects/items/weapons/papers_bins.dm b/code/game/objects/items/weapons/papers_bins.dm deleted file mode 100644 index 40c8d01a9e8..00000000000 --- a/code/game/objects/items/weapons/papers_bins.dm +++ /dev/null @@ -1,712 +0,0 @@ -/* -CONTAINS: -PAPER -PAPER BIN -WRAPPING PAPER -GIFTS -BEDSHEET BIN -PHOTOGRAPHS -CLIPBOARDS - -*/ - - -// PAPER - -/obj/item/weapon/paper/New() - - ..() - src.pixel_y = rand(-8, 8) - src.pixel_x = rand(-9, 9) - spawn(2) - if(src.info) - src.overlays += "paper_words" - return - -/obj/item/weapon/paper/update_icon() - if(src.info) - src.overlays += "paper_words" - return - -/obj/item/weapon/paper/examine() - set src in view() - - ..() - if (!( istype(usr, /mob/living/carbon/human) || istype(usr, /mob/dead/observer) || istype(usr, /mob/living/silicon) )) - usr << browse(text("[][]", src.name, stars(src.info)), text("window=[]", src.name)) - onclose(usr, "[src.name]") - else - usr << browse(text("[][]", src.name, src.info), text("window=[]", src.name)) - onclose(usr, "[src.name]") - return - -/obj/item/weapon/paper/verb/rename() - set name = "Rename paper" - set category = "Object" - set src in usr - - if ((usr.mutations & CLUMSY) && prob(50)) - usr << text("\red You cut yourself on the paper.") - return - var/n_name = input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text - n_name = copytext(n_name, 1, 32) - if ((src.loc == usr && usr.stat == 0)) - src.name = text("paper[]", (n_name ? text("- '[n_name]'") : null)) - src.add_fingerprint(usr) - return - -/obj/item/weapon/paper/attack_self(mob/living/user as mob) - examine() - return - -/obj/item/weapon/paper/attack_ai(var/mob/living/silicon/ai/user as mob) - var/dist - if (istype(user) && user.current) //is AI - dist = get_dist(src, user.current) - else //cyborg or AI not seeing through a camera - dist = get_dist(src, user) - if (dist < 2) - usr << browse(text("[][]", src.name, src.info), text("window=[]", src.name)) - onclose(usr, "[src.name]") - else - usr << browse(text("[][]", src.name, stars(src.info)), text("window=[]", src.name)) - onclose(usr, "[src.name]") - return - -/obj/item/weapon/paper/attackby(obj/item/weapon/P as obj, mob/user as mob) - ..() - var/clown = 0 - if(user.mind && (user.mind.assigned_role == "Clown")) - clown = 1 - - if (istype(P, /obj/item/weapon/pen)) - var/t = strip_html_simple(input(user, "What text do you wish to add?", text("[]", src.name), null),8192) as message - - if ((!in_range(src, usr) && src.loc != user && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != user && user.equipped() != P)) - return - - t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) - t = dd_replacetext(t, "\[center\]", "
") - t = dd_replacetext(t, "\[/center\]", "
") - t = dd_replacetext(t, "\[list\]", "") - t = dd_replacetext(t, "\[*\]", "
  • ") - t = dd_replacetext(t, "\[*\]", "
  • ") - t = dd_replacetext(t, "\[br\]", "
    ") - t = dd_replacetext(t, "\[hr\]", "
    ") - t = dd_replacetext(t, "\[b\]", "") - t = dd_replacetext(t, "\[/b\]", "") - t = dd_replacetext(t, "\[i\]", "") - t = dd_replacetext(t, "\[/i\]", "") - t = dd_replacetext(t, "\[u\]", "") - t = dd_replacetext(t, "\[/u\]", "") - t = dd_replacetext(t, "\[small\]", "") - t = dd_replacetext(t, "\[/small\]", "") - t = dd_replacetext(t, "\[large\]", "") - t = dd_replacetext(t, "\[/large\]", "") - t = dd_replacetext(t, "\[sign\]", text("[user.real_name]")) - - var/obj/item/weapon/pen/i = P - t = text("[t]") - - if(!overlays.Find("paper_words")) - src.overlays += "paper_words" - src.info += t - return - - if(istype(P, /obj/item/toy/crayon)) - var/t = strip_html_simple(input(user, "What text do you wish to add?", text("[]", src.name), null),8192) as message - - if ((!in_range(src, usr) && src.loc != user && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != user && user.equipped() != P)) - return - - t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) - t = dd_replacetext(t, "\[center\]", "
    ") - t = dd_replacetext(t, "\[/center\]", "
    ") - t = dd_replacetext(t, "\[br\]", "
    ") - t = dd_replacetext(t, "\[b\]", "") - t = dd_replacetext(t, "\[/b\]", "") - t = dd_replacetext(t, "\[i\]", "") - t = dd_replacetext(t, "\[/i\]", "") - t = dd_replacetext(t, "\[u\]", "") - t = dd_replacetext(t, "\[/u\]", "") - t = dd_replacetext(t, "\[large\]", "") - t = dd_replacetext(t, "\[/large\]", "") - t = dd_replacetext(t, "\[sign\]", text("[user.real_name]")) - - var/obj/item/toy/crayon/i = P - t = text("[t]") - - if(!overlays.Find("paper_words")) - src.overlays += "paper_words" - src.info += t - return - - else - if(istype(P, /obj/item/weapon/stamp)) - if ((!in_range(src, usr) && src.loc != user && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != user && user.equipped() != P)) - return - src.info += text("
    This paper has been stamped with the [].
    ", P.name) - switch(P.type) - if(/obj/item/weapon/stamp/captain) - src.overlays += "paper_stamped_cap" - if(/obj/item/weapon/stamp/hop) - src.overlays += "paper_stamped_hop" - if(/obj/item/weapon/stamp/hos) - src.overlays += "paper_stamped_hos" - if(/obj/item/weapon/stamp/ce) - src.overlays += "paper_stamped_ce" - if(/obj/item/weapon/stamp/rd) - src.overlays += "paper_stamped_rd" - if(/obj/item/weapon/stamp/cmo) - src.overlays += "paper_stamped_cmo" - if(/obj/item/weapon/stamp/denied) - src.overlays += "paper_stamped_denied" - if(/obj/item/weapon/stamp/clown) - if (!clown) - usr << "\red You are totally unable to use the stamp. HONK!" - return - else - src.overlays += "paper_stamped_clown" - else - src.overlays += "paper_stamped" - if(!stamped) - stamped = new - stamped += P.type - - user << "\blue You stamp the paper with your rubber stamp." - /* - else - if (istype(P, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/W = P - if ((W.welding && W.weldfuel > 0)) - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] burns [] with the welding tool!", user, src), 1, "\red You hear a small burning noise", 2) - //Foreach goto(323) - spawn( 0 ) - src.burn(1800000.0) - return - else - if (istype(P, /obj/item/device/igniter)) - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] burns [] with the igniter!", user, src), 1, "\red You hear a small burning noise", 2) - //Foreach goto(406) - spawn( 0 ) - src.burn(1800000.0) - return - else - if (istype(P, /obj/item/weapon/wirecutters)) - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] starts cutting []!", user, src), 1) - //Foreach goto(489) - sleep(50) - if (((src.loc == src || get_dist(src, user) <= 1) && (!( user.stat ) && !( user.restrained() )))) - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] cuts [] to pieces!", user, src), 1) - //Foreach goto(580) - //SN src = null - del(src) - return - */ //TODO: FIX - src.add_fingerprint(user) - return - - - - - -//PAPER BIN - -/obj/item/weapon/paper_bin/proc/update() - src.icon_state = text("paper_bin[]", ((src.amount || locate(/obj/item/weapon/paper, src)) ? "1" : null)) - return - - -/obj/item/weapon/paper_bin/MouseDrop(mob/user as mob) - if ((user == usr && (!( usr.restrained() ) && (!( usr.stat ) && (usr.contents.Find(src) || in_range(src, usr)))))) - if (usr.hand) - if (!( usr.l_hand )) - spawn( 0 ) - src.attack_hand(usr, 1, 1) - return - else - if (!( usr.r_hand )) - spawn( 0 ) - src.attack_hand(usr, 0, 1) - return - return - -/obj/item/weapon/paper_bin/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/item/weapon/paper_bin/attack_hand(mob/user as mob, unused, flag) - if (flag) - return ..() - src.add_fingerprint(user) - if (locate(/obj/item/weapon/paper, src)) - for(var/obj/item/weapon/paper/P in src) - if ((usr.hand && !( usr.l_hand ))) - usr.l_hand = P - P.loc = usr - P.layer = 20 - P = null - usr.update_clothing() - break - else if (!usr.r_hand) - usr.r_hand = P - P.loc = usr - P.layer = 20 - P = null - usr.update_clothing() - break - else - if (src.amount >= 1) - src.amount-- - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper - P.loc = usr.loc - if(ishuman(usr)) - if(!usr.get_active_hand()) - usr.put_in_hand(P) - usr << "You take a paper out of the bin." - else - P.loc = get_turf_loc(src) - usr << "You take a paper out of the bin." - - src.update() - return - -/obj/item/weapon/paper_bin/examine() - set src in oview(1) - - src.amount = round(src.amount) - var/n = src.amount - for(var/obj/item/weapon/paper/P in src) - n++ - if (n <= 0) - n = 0 - usr << "There are no papers in the bin." - else - if (n == 1) - usr << "There is one paper in the bin." - else - usr << text("There are [] papers in the bin.", n) - return - -/* -/obj/item/weapon/paper_bin/attackby(obj/item/weapon/W as obj, mob/user as mob) - if (istype(W, /obj/item/weapon/paper)) - user.drop_item() - W.loc = src - else - if (istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/T = W - if ((T.welding && T.weldfuel > 0)) - viewers(user, null) << text("[] burns the paper with the welding tool!", user) - spawn( 0 ) - src.burn(1800000.0) - return - else - if (istype(W, /obj/item/device/igniter)) - viewers(user, null) << text("[] burns the paper with the igniter!", user) - spawn( 0 ) - src.burn(1800000.0) - return - src.update() - return -*/ //TODO: FIX - - - - - -// WRAPPING PAPER - -/obj/item/weapon/wrapping_paper/attackby(obj/item/weapon/W as obj, mob/user as mob) - ..() - if (!( locate(/obj/structure/table, src.loc) )) - user << "\blue You MUST put the paper on a table!" - if (W.w_class < 4) - if ((istype(user.l_hand, /obj/item/weapon/wirecutters) || istype(user.r_hand, /obj/item/weapon/wirecutters))) - var/a_used = 2 ** (src.w_class - 1) - if (src.amount < a_used) - user << "\blue You need more paper!" - return - else - src.amount -= a_used - user.drop_item() - var/obj/item/weapon/gift/G = new /obj/item/weapon/gift( src.loc ) - G.size = W.w_class - G.w_class = G.size + 1 - G.icon_state = text("gift[]", G.size) - G.gift = W - W.loc = G - G.add_fingerprint(user) - W.add_fingerprint(user) - src.add_fingerprint(user) - if (src.amount <= 0) - new /obj/item/weapon/c_tube( src.loc ) - //SN src = null - del(src) - return - else - user << "\blue You need scissors!" - else - user << "\blue The object is FAR too large!" - return - - -/obj/item/weapon/wrapping_paper/examine() - set src in oview(1) - - ..() - usr << text("There is about [] square units of paper left!", src.amount) - return - -/obj/item/weapon/wrapping_paper/attack(mob/target as mob, mob/user as mob) - if (!istype(target, /mob/living/carbon/human)) return - if (istype(target:wear_suit, /obj/item/clothing/suit/straight_jacket) || target:stat) - if (src.amount > 2) - var/obj/effect/spresent/present = new /obj/effect/spresent (target:loc) - src.amount -= 2 - - if (target:client) - target:client:perspective = EYE_PERSPECTIVE - target:client:eye = present - - target:loc = present - target.attack_log += text("\[[time_stamp()]\] Has been wrapped with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to wrap [target.name] ([target.ckey])") - - log_attack("[user.name] ([user.ckey]) used the [src.name] to wrap [target.name] ([target.ckey])") - - else - user << "/blue You need more paper." - else - user << "Theyre moving around too much. a Straitjacket would help." - - - - - -// GIFTS - -/obj/item/weapon/gift/attack_self(mob/user as mob) - if(!src.gift) - user << "\blue The gift was empty!" - del(src) - src.gift.loc = user - if (user.hand) - user.l_hand = src.gift - else - user.r_hand = src.gift - src.gift.layer = 20 - src.gift.add_fingerprint(user) - del(src) - return - -/obj/item/weapon/a_gift/ex_act() - del(src) - return - - -/obj/effect/spresent/relaymove(mob/user as mob) - if (user.stat) - return - user << "\blue You cant move." - -/obj/effect/spresent/attackby(obj/item/weapon/W as obj, mob/user as mob) - ..() - - if (!istype(W, /obj/item/weapon/wirecutters)) - user << "/blue I need wirecutters for that." - return - - user << "\blue You cut open the present." - - for(var/mob/M in src) //Should only be one but whatever. - M.loc = src.loc - if (M.client) - M.client.eye = M.client.mob - M.client.perspective = MOB_PERSPECTIVE - - del(src) - - -/obj/item/weapon/a_gift/attack_self(mob/M as mob) - switch(pick("flash", "t_gun", "l_gun", "shield", "sword", "axe")) - if("flash") - var/obj/item/device/flash/W = new /obj/item/device/flash( M ) - if (M.hand) - M.l_hand = W - else - M.r_hand = W - W.layer = 20 - W.add_fingerprint(M) - //SN src = null - del(src) - return - if("l_gun") - var/obj/item/weapon/gun/energy/laser/W = new /obj/item/weapon/gun/energy/laser( M ) - if (M.hand) - M.l_hand = W - else - M.r_hand = W - W.layer = 20 - W.add_fingerprint(M) - //SN src = null - del(src) - return - if("t_gun") - var/obj/item/weapon/gun/energy/taser/W = new /obj/item/weapon/gun/energy/taser( M ) - if (M.hand) - M.l_hand = W - else - M.r_hand = W - W.layer = 20 - W.add_fingerprint(M) - //SN src = null - del(src) - return - if("sword") - var/obj/item/weapon/melee/energy/sword/W = new /obj/item/weapon/melee/energy/sword( M ) - if (M.hand) - M.l_hand = W - else - M.r_hand = W - W.layer = 20 - W.add_fingerprint(M) - //SN src = null - del(src) - return - if("axe") - var/obj/item/weapon/melee/energy/axe/W = new /obj/item/weapon/melee/energy/axe( M ) - if (M.hand) - M.l_hand = W - else - M.r_hand = W - W.layer = 20 - W.add_fingerprint(M) - //SN src = null - del(src) - return - else - return - - - - - - - -// BEDSHEET BIN - -/obj/structure/bedsheetbin/attackby(obj/item/weapon/W as obj, mob/user as mob) - if (istype(W, /obj/item/weapon/bedsheet)) - //W = null - del(W) - src.amount++ - return - -/obj/structure/bedsheetbin/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/structure/bedsheetbin/attack_hand(mob/user as mob) - if (src.amount >= 1) - src.amount-- - new /obj/item/weapon/bedsheet( src.loc ) - add_fingerprint(user) - -/obj/structure/bedsheetbin/examine() - set src in oview(1) - - src.amount = round(src.amount) - if (src.amount <= 0) - src.amount = 0 - usr << "There are no bed sheets in the bin." - else - if (src.amount == 1) - usr << "There is one bed sheet in the bin." - else - usr << text("There are [] bed sheets in the bin.", src.amount) - return - - - - - - -// CLIPBOARD - -/obj/item/weapon/clipboard/attack_self(mob/user as mob) - var/dat = "Clipboard
    " - if (src.pen) - dat += text("Remove Pen

    ", src) - for(var/obj/item/weapon/paper/P in src) - dat += text("[] Write Remove
    ", src, P, P.name, src, P, src, P) - user << browse(dat, "window=clipboard") - onclose(user, "clipboard") - return - -/obj/item/weapon/clipboard/Topic(href, href_list) - ..() - if ((usr.stat || usr.restrained())) - return - if (usr.contents.Find(src)) - usr.machine = src - if (href_list["pen"]) - if (src.pen) - if ((usr.hand && !( usr.l_hand ))) - usr.l_hand = src.pen - src.pen.loc = usr - src.pen.layer = 20 - src.pen = null - usr.update_clothing() - else - if (!( usr.r_hand )) - usr.r_hand = src.pen - src.pen.loc = usr - src.pen.layer = 20 - src.pen = null - usr.update_clothing() - if (src.pen) - src.pen.add_fingerprint(usr) - update() - src.add_fingerprint(usr) - if (href_list["remove"]) - var/obj/item/P = locate(href_list["remove"]) - if ((P && P.loc == src)) - if ((usr.hand && !( usr.l_hand ))) - usr.l_hand = P - P.loc = usr - P.layer = 20 - usr.update_clothing() - else - if (!( usr.r_hand )) - usr.r_hand = P - P.loc = usr - P.layer = 20 - usr.update_clothing() - P.add_fingerprint(usr) - src.add_fingerprint(usr) - update() - if (href_list["write"]) - var/obj/item/P = locate(href_list["write"]) - if ((P && P.loc == src)) - if (istype(usr.r_hand, /obj/item/weapon/pen)) - P.attackby(usr.r_hand, usr) - else - if (istype(usr.l_hand, /obj/item/weapon/pen)) - P.attackby(usr.l_hand, usr) - else - if (istype(src.pen, /obj/item/weapon/pen)) - P.attackby(src.pen, usr) - src.add_fingerprint(usr) - if (href_list["read"]) - var/obj/item/weapon/paper/P = locate(href_list["read"]) - if ((P && P.loc == src)) - if (!( istype(usr, /mob/living/carbon/human) )) - usr << browse(text("[][]", P.name, stars(P.info)), text("window=[]", P.name)) - onclose(usr, "[P.name]") - else - usr << browse(text("[][]", P.name, P.info), text("window=[]", P.name)) - onclose(usr, "[P.name]") - if (ismob(src.loc)) - var/mob/M = src.loc - if (M.machine == src) - spawn( 0 ) - src.attack_self(M) - return - return - -/obj/item/weapon/clipboard/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/item/weapon/clipboard/attack_hand(mob/user as mob) - - if ((locate(/obj/item/weapon/paper, src) && (!( user.equipped() ) && (user.l_hand == src || user.r_hand == src)))) - var/obj/item/weapon/paper/P - for(P in src) - break - if (P) - if (user.hand) - user.l_hand = P - else - user.r_hand = P - P.loc = user - P.layer = 20 - P.add_fingerprint(user) - user.update_clothing() - src.add_fingerprint(user) - else - if (user.contents.Find(src)) - spawn( 0 ) - src.attack_self(user) - return - else - return ..() - return - -/obj/item/weapon/clipboard/attackby(obj/item/weapon/P as obj, mob/user as mob) - ..() - if (istype(P, /obj/item/weapon/paper)) - if (src.contents.len < 15) - user.drop_item() - P.loc = src - else - user << "\blue Not enough space!!!" - else - if (istype(P, /obj/item/weapon/pen)) - if (!src.pen) - user.drop_item() - P.loc = src - src.pen = P - else - return - src.update() - spawn(0) - attack_self(user) - return - return - -/obj/item/weapon/clipboard/proc/update() - src.icon_state = text("clipboard[][]", (locate(/obj/item/weapon/paper, src) ? "1" : "0"), (locate(/obj/item/weapon/pen, src) ? "1" : "0")) - return - - -/obj/item/weapon/clipboard/MouseDrop(obj/over_object as obj) //Quick clipboard fix. -Agouri - if (ishuman(usr) || ismonkey(usr)) //Can monkeys even place items in the pocket slots? Leaving this in just in case~ - var/mob/M = usr - if (!( istype(over_object, /obj/screen) )) - return ..() - if ((!( M.restrained() ) && !( M.stat ) /*&& M.pocket == src*/)) - if (over_object.name == "r_hand") - if (!( M.r_hand )) - M.u_equip(src) - M.r_hand = src - else - if (over_object.name == "l_hand") - if (!( M.l_hand )) - M.u_equip(src) - M.l_hand = src - M.update_clothing() - src.add_fingerprint(usr) - return // - - -// PHOTOGRAPH - -/obj/item/weapon/paper/photograph/New() - - ..() - src.pixel_y = 0 - src.pixel_x = 0 - return - -/obj/item/weapon/paper/photograph/attack_self(mob/user as mob) - - var/n_name = input(user, "What would you like to label the photo?", "Paper Labelling", null) as text - n_name = copytext(n_name, 1, 32) - if ((src.loc == user && user.stat == 0)) - src.name = text("photo[]", (n_name ? text("- '[]'", n_name) : null)) - src.add_fingerprint(user) - return diff --git a/code/game/objects/items/weapons/wrappingpaper.dm b/code/game/objects/items/weapons/wrappingpaper.dm new file mode 100644 index 00000000000..764ba3c2698 --- /dev/null +++ b/code/game/objects/items/weapons/wrappingpaper.dm @@ -0,0 +1,230 @@ +/* +CONTAINS: +WRAPPING PAPER +GIFTS +BEDSHEET BIN +PHOTOGRAPHS + +*/ +// WRAPPING PAPER + +/obj/item/weapon/wrapping_paper/attackby(obj/item/weapon/W as obj, mob/user as mob) + ..() + if (!( locate(/obj/structure/table, src.loc) )) + user << "\blue You MUST put the paper on a table!" + if (W.w_class < 4) + if ((istype(user.l_hand, /obj/item/weapon/wirecutters) || istype(user.r_hand, /obj/item/weapon/wirecutters))) + var/a_used = 2 ** (src.w_class - 1) + if (src.amount < a_used) + user << "\blue You need more paper!" + return + else + src.amount -= a_used + user.drop_item() + var/obj/item/weapon/gift/G = new /obj/item/weapon/gift( src.loc ) + G.size = W.w_class + G.w_class = G.size + 1 + G.icon_state = text("gift[]", G.size) + G.gift = W + W.loc = G + G.add_fingerprint(user) + W.add_fingerprint(user) + src.add_fingerprint(user) + if (src.amount <= 0) + new /obj/item/weapon/c_tube( src.loc ) + //SN src = null + del(src) + return + else + user << "\blue You need scissors!" + else + user << "\blue The object is FAR too large!" + return + + +/obj/item/weapon/wrapping_paper/examine() + set src in oview(1) + + ..() + usr << text("There is about [] square units of paper left!", src.amount) + return + +/obj/item/weapon/wrapping_paper/attack(mob/target as mob, mob/user as mob) + if (!istype(target, /mob/living/carbon/human)) return + if (istype(target:wear_suit, /obj/item/clothing/suit/straight_jacket) || target:stat) + if (src.amount > 2) + var/obj/effect/spresent/present = new /obj/effect/spresent (target:loc) + src.amount -= 2 + + if (target:client) + target:client:perspective = EYE_PERSPECTIVE + target:client:eye = present + + target:loc = present + target.attack_log += text("\[[time_stamp()]\] Has been wrapped with [src.name] by [user.name] ([user.ckey])") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to wrap [target.name] ([target.ckey])") + + log_attack("[user.name] ([user.ckey]) used the [src.name] to wrap [target.name] ([target.ckey])") + + else + user << "/blue You need more paper." + else + user << "Theyre moving around too much. a Straitjacket would help." + + + + + +// GIFTS + +/obj/item/weapon/gift/attack_self(mob/user as mob) + if(!src.gift) + user << "\blue The gift was empty!" + del(src) + src.gift.loc = user + if (user.hand) + user.l_hand = src.gift + else + user.r_hand = src.gift + src.gift.layer = 20 + src.gift.add_fingerprint(user) + del(src) + return + +/obj/item/weapon/a_gift/ex_act() + del(src) + return + + +/obj/effect/spresent/relaymove(mob/user as mob) + if (user.stat) + return + user << "\blue You cant move." + +/obj/effect/spresent/attackby(obj/item/weapon/W as obj, mob/user as mob) + ..() + + if (!istype(W, /obj/item/weapon/wirecutters)) + user << "/blue I need wirecutters for that." + return + + user << "\blue You cut open the present." + + for(var/mob/M in src) //Should only be one but whatever. + M.loc = src.loc + if (M.client) + M.client.eye = M.client.mob + M.client.perspective = MOB_PERSPECTIVE + + del(src) + + +/obj/item/weapon/a_gift/attack_self(mob/M as mob) + switch(pick("flash", "t_gun", "l_gun", "shield", "sword", "axe")) + if("flash") + var/obj/item/device/flash/W = new /obj/item/device/flash( M ) + if (M.hand) + M.l_hand = W + else + M.r_hand = W + W.layer = 20 + W.add_fingerprint(M) + //SN src = null + del(src) + return + if("l_gun") + var/obj/item/weapon/gun/energy/laser/W = new /obj/item/weapon/gun/energy/laser( M ) + if (M.hand) + M.l_hand = W + else + M.r_hand = W + W.layer = 20 + W.add_fingerprint(M) + //SN src = null + del(src) + return + if("t_gun") + var/obj/item/weapon/gun/energy/taser/W = new /obj/item/weapon/gun/energy/taser( M ) + if (M.hand) + M.l_hand = W + else + M.r_hand = W + W.layer = 20 + W.add_fingerprint(M) + //SN src = null + del(src) + return + if("sword") + var/obj/item/weapon/melee/energy/sword/W = new /obj/item/weapon/melee/energy/sword( M ) + if (M.hand) + M.l_hand = W + else + M.r_hand = W + W.layer = 20 + W.add_fingerprint(M) + //SN src = null + del(src) + return + if("axe") + var/obj/item/weapon/melee/energy/axe/W = new /obj/item/weapon/melee/energy/axe( M ) + if (M.hand) + M.l_hand = W + else + M.r_hand = W + W.layer = 20 + W.add_fingerprint(M) + //SN src = null + del(src) + return + else + return + +// BEDSHEET BIN + +/obj/structure/bedsheetbin/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/bedsheet)) + //W = null + del(W) + src.amount++ + return + +/obj/structure/bedsheetbin/attack_paw(mob/user as mob) + return src.attack_hand(user) + +/obj/structure/bedsheetbin/attack_hand(mob/user as mob) + if (src.amount >= 1) + src.amount-- + new /obj/item/weapon/bedsheet( src.loc ) + add_fingerprint(user) + +/obj/structure/bedsheetbin/examine() + set src in oview(1) + + src.amount = round(src.amount) + if (src.amount <= 0) + src.amount = 0 + usr << "There are no bed sheets in the bin." + else + if (src.amount == 1) + usr << "There is one bed sheet in the bin." + else + usr << text("There are [] bed sheets in the bin.", src.amount) + return + +// PHOTOGRAPH + +/obj/item/weapon/paper/photograph/New() + + ..() + src.pixel_y = 0 + src.pixel_x = 0 + return + +/obj/item/weapon/paper/photograph/attack_self(mob/user as mob) + + var/n_name = input(user, "What would you like to label the photo?", "Paper Labelling", null) as text + n_name = copytext(n_name, 1, 32) + if ((src.loc == user && user.stat == 0)) + src.name = text("photo[]", (n_name ? text("- '[]'", n_name) : null)) + src.add_fingerprint(user) + return diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm new file mode 100644 index 00000000000..66e074543cc --- /dev/null +++ b/code/modules/paperwork/clipboard.dm @@ -0,0 +1,135 @@ +/obj/item/weapon/clipboard + name = "clipboard" + icon = 'bureaucracy.dmi' + icon_state = "clipboard" + item_state = "clipboard" + throwforce = 0 + w_class = 2.0 + throw_speed = 3 + throw_range = 10 + var/obj/item/weapon/pen/haspen //The stored pen. + var/obj/item/weapon/paper/toppaper //The topmost piece of paper. + +/obj/item/weapon/clipboard/MouseDrop(obj/over_object as obj) //Quick clipboard fix. -Agouri + if(ishuman(usr) || ismonkey(usr)) //Can monkeys even place items in the pocket slots? Leaving this in just in case~ + var/mob/M = usr + if (!(istype(over_object, /obj/screen) )) + return ..() + if((!(M.restrained()) && !(M.stat))) + if(over_object.name == "r_hand") + if(!(M.r_hand)) + M.u_equip(src) + M.r_hand = src + else + if(over_object.name == "l_hand") + if(!(M.l_hand)) + M.u_equip(src) + M.l_hand = src + M.update_clothing() + src.add_fingerprint(usr) + return + +/obj/item/weapon/clipboard/update_icon() + overlays = null + if(toppaper) + overlays += toppaper.icon_state + overlays += toppaper.overlays + if(haspen) + overlays += "clipboard_pen" + overlays += "clipboard_over" + return + +/obj/item/weapon/clipboard/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/paper)) + user.drop_item() + W.loc = src + toppaper = W + user << "\blue You clip the paper onto the clipboard." + update_icon() + else if(toppaper) + toppaper.attackby(usr.get_active_hand(), usr) + update_icon() + return + +/obj/item/weapon/clipboard/attack_self(mob/user as mob) + var/dat = "Clipboard" + if (haspen) + dat += "Remove Pen

    " + else + dat += "Add Pen

    " + + //The topmost paper. I don't think there's any way to organise contents in byond, so this is what we're stuck with. -Pete + if(toppaper) + var/obj/item/weapon/paper/P = toppaper + dat += "Write Remove - [P.name]

    " + + for(P in src) + if(P == toppaper) + continue + dat += "Write Remove Move to top - [P.name]
    " + user << browse(dat, "window=clipboard") + onclose(user, "clipboard") + add_fingerprint(usr) + return + +/obj/item/weapon/clipboard/Topic(href, href_list) + ..() + if ((usr.stat || usr.restrained())) + return + + if (usr.contents.Find(src)) + + if(href_list["pen"]) + if(haspen) + haspen.loc = usr.loc + if(ishuman(usr)) + if(!usr.get_active_hand()) + usr.put_in_hand(haspen) + haspen = null + + if(href_list["addpen"]) + if(!haspen) + if(istype(usr.get_active_hand(), /obj/item/weapon/pen)) + var/obj/item/weapon/pen/W = usr.get_active_hand() + usr.drop_item() + W.loc = src + haspen = W + usr << "\blue You slot the pen into the clipboard." + + if(href_list["write"]) + var/obj/item/P = locate(href_list["write"]) + if(P) + if(usr.get_active_hand()) + P.attackby(usr.get_active_hand(), usr) + + if(href_list["remove"]) + var/obj/item/P = locate(href_list["remove"]) + if(P) + P.loc = usr.loc + if(ishuman(usr)) + if(!usr.get_active_hand()) + usr.put_in_hand(P) + else + P.loc = get_turf(usr) + if(P == toppaper) + var/obj/item/weapon/paper/newtop = locate(/obj/item/weapon/paper in src) + if(newtop && newtop != toppaper) + toppaper = newtop + else + toppaper = null + + if(href_list["read"]) + var/obj/item/P = locate(href_list["read"]) + if(P) + P.examine(usr) + + if(href_list["top"]) + var/obj/item/P = locate(href_list["top"]) + if(P) + toppaper = P + usr << "You move [P.name] to the top." + + //Update everything + attack_self(usr) + update_icon() + return \ No newline at end of file diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm new file mode 100644 index 00000000000..35df3f0739f --- /dev/null +++ b/code/modules/paperwork/folders.dm @@ -0,0 +1,22 @@ +//THIS IS OBVIOUSLY WIP, SORRY -PETE +/obj/item/weapon/folder + name = "folder" + desc = "A folder." + icon = 'bureaucracy.dmi' + icon_state = "folder" + w_class = 2 + +/obj/item/weapon/folder/blue + desc = "A blue folder." + icon_state = "folder_blue" + +/obj/item/weapon/folder/red + desc = "A red folder." + icon_state = "folder_red" + +/obj/item/weapon/folder/yellow + desc = "A yellow folder." + icon_state = "folder_yellow" + +/obj/item/weapon/folder/attack_self() + usr << "lol!" \ No newline at end of file diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm new file mode 100644 index 00000000000..c3170b36ef4 --- /dev/null +++ b/code/modules/paperwork/handlabeler.dm @@ -0,0 +1,53 @@ +/obj/item/weapon/hand_labeler + name = "Hand labeler" + icon = 'bureaucracy.dmi' + icon_state = "labeler0" + item_state = "flight" + var/label = null + var/labels_left = 30 + var/mode = 0 //off or on. + +/obj/item/weapon/hand_labeler/afterattack(atom/A, mob/user as mob) + if(!mode) //if it's off, give up. + return + if(A==loc) // if placing the labeller into something (e.g. backpack) + return // don't set a label + + if(!labels_left) + user << "\blue No labels left." + return + if(!label || !length(label)) + user << "\blue No text set." + return + if(length(A.name) + length(label) > 64) + user << "\blue Label too big." + return + if(ishuman(A)) + user << "\blue You can't label humans." + return + if(issilicon(A)) + user << "\blue You can't label cyborgs." + return + + for(var/mob/M in viewers()) + if ((M.client && !( M.blinded ))) + M << "\blue [user] labels [A] as [label]." + A.name = "[A.name] ([label])" + +/obj/item/weapon/hand_labeler/attack_self() + mode = !mode + icon_state = "labeler[mode]" + if(mode) + usr << "\blue You turn on the hand labeler." + //Now let them chose the text. + var/str = input(usr,"Label text?","Set label","") + if(!str || !length(str)) + usr << "\red Invalid text." + return + if(length(str) > 64) + usr << "\red Text too long." + return + label = str + usr << "\blue You set the text to '[str]'." + else + usr << "\blue You turn off the hand labeler." \ No newline at end of file diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm new file mode 100644 index 00000000000..ffca9b54237 --- /dev/null +++ b/code/modules/paperwork/paper.dm @@ -0,0 +1,186 @@ +/obj/item/weapon/paper + name = "paper" + gender = PLURAL + icon = 'bureaucracy.dmi' + icon_state = "paper" + throwforce = 0 + w_class = 1.0 + throw_speed = 3 + throw_range = 15 + layer = 4 + var/info //What's actually written on the paper. + var/stamps //The (text for the) stamps on the paper. + var/list/stamped + var/see_face = 1 + var/body_parts_covered = HEAD + +/obj/item/weapon/paper/New() + + ..() + src.pixel_y = rand(-8, 8) + src.pixel_x = rand(-9, 9) + spawn(2) + if(src.info) + src.overlays += "paper_words" + return + +/obj/item/weapon/paper/update_icon() + if(src.info) + src.overlays += "paper_words" + return + +/obj/item/weapon/paper/examine(mob/user as mob) + set src in oview(1) + + //I think this is the best way to handle this! Shout at me if it isn't! -Pete + if(!user) + user = usr +// ..() //We don't want them to see the dumb "this is a paper" thing every time. + if (!( istype(user, /mob/living/carbon/human) || istype(user, /mob/dead/observer) || istype(user, /mob/living/silicon) )) + user << browse("[name][stars(info)][stamps]", "window=[name]") + onclose(user, "[name]") + else + user << browse("[name][info][stamps]", "window=[name]") + onclose(user, "[name]") + return + +/obj/item/weapon/paper/verb/rename() + set name = "Rename paper" + set category = "Object" + set src in usr + + if ((usr.mutations & CLUMSY) && prob(50)) + usr << "\red You cut yourself on the paper." + return + var/n_name = input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text + n_name = copytext(n_name, 1, 32) + if ((loc == usr && usr.stat == 0)) + name = "paper[(n_name ? text("- '[n_name]'") : null)]" + add_fingerprint(usr) + return + +/obj/item/weapon/paper/attack_self(mob/living/user as mob) + examine() + return + +/obj/item/weapon/paper/attack_ai(var/mob/living/silicon/ai/user as mob) + var/dist + if (istype(user) && user.current) //is AI + dist = get_dist(src, user.current) + else //cyborg or AI not seeing through a camera + dist = get_dist(src, user) + if (dist < 2) + usr << browse("[name][info][stamps]", "window=[name]") + onclose(usr, "[name]") + else + usr << browse("[name][stars(info)][stamps]", "window=[name]") + onclose(usr, "[name]") + return + +/obj/item/weapon/paper/attackby(obj/item/weapon/P as obj, mob/user as mob) + ..() + var/clown = 0 + if(user.mind && (user.mind.assigned_role == "Clown")) + clown = 1 + + if (istype(P, /obj/item/weapon/pen)) + var/t = strip_html_simple(input(user, "What text do you wish to add?", "[name]", null),8192) as message + + if ((!in_range(src, usr) && src.loc != user && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != user && user.equipped() != P)) + return + + t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) + t = dd_replacetext(t, "\[center\]", "
    ") + t = dd_replacetext(t, "\[/center\]", "
    ") + t = dd_replacetext(t, "\[list\]", "") + t = dd_replacetext(t, "\[*\]", "
  • ") + t = dd_replacetext(t, "\[*\]", "
  • ") + t = dd_replacetext(t, "\[br\]", "
    ") + t = dd_replacetext(t, "\[hr\]", "
    ") + t = dd_replacetext(t, "\[b\]", "") + t = dd_replacetext(t, "\[/b\]", "") + t = dd_replacetext(t, "\[i\]", "") + t = dd_replacetext(t, "\[/i\]", "") + t = dd_replacetext(t, "\[u\]", "") + t = dd_replacetext(t, "\[/u\]", "") + t = dd_replacetext(t, "\[small\]", "") + t = dd_replacetext(t, "\[/small\]", "") + t = dd_replacetext(t, "\[large\]", "") + t = dd_replacetext(t, "\[/large\]", "") + t = dd_replacetext(t, "\[sign\]", "[user.real_name]") + + var/obj/item/weapon/pen/i = P + t = "[t]" + + if(!overlays.Find("paper_words")) + overlays += "paper_words" + info += t + return + + if(istype(P, /obj/item/toy/crayon)) + var/t = strip_html_simple(input(user, "What text do you wish to add?", "[name]", null),8192) as message + + if ((!in_range(src, usr) && src.loc != user && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != user && user.equipped() != P)) + return + + t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) + t = dd_replacetext(t, "\[center\]", "
    ") + t = dd_replacetext(t, "\[/center\]", "
    ") + t = dd_replacetext(t, "\[br\]", "
    ") + t = dd_replacetext(t, "\[b\]", "") + t = dd_replacetext(t, "\[/b\]", "") + t = dd_replacetext(t, "\[i\]", "") + t = dd_replacetext(t, "\[/i\]", "") + t = dd_replacetext(t, "\[u\]", "") + t = dd_replacetext(t, "\[/u\]", "") + t = dd_replacetext(t, "\[large\]", "") + t = dd_replacetext(t, "\[/large\]", "") + t = dd_replacetext(t, "\[sign\]", "[user.real_name]") + + var/obj/item/toy/crayon/i = P + t = "[t]" + + if(!overlays.Find("paper_words")) + overlays += "paper_words" + info += t + return + + else + if(istype(P, /obj/item/weapon/stamp)) + if ((!in_range(src, usr) && src.loc != user && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != user && user.equipped() != P)) + return + if(stamps) + stamps += "
    This paper has been stamped with the [P.name]." + else + stamps += "
    This paper has been stamped with the [P.name]." + switch(P.type) + if(/obj/item/weapon/stamp/captain) + overlays += "paper_stamped_cap" + if(/obj/item/weapon/stamp/hop) + overlays += "paper_stamped_hop" + if(/obj/item/weapon/stamp/hos) + overlays += "paper_stamped_hos" + if(/obj/item/weapon/stamp/ce) + overlays += "paper_stamped_ce" + if(/obj/item/weapon/stamp/rd) + overlays += "paper_stamped_rd" + if(/obj/item/weapon/stamp/cmo) + overlays += "paper_stamped_cmo" + if(/obj/item/weapon/stamp/denied) + overlays += "paper_stamped_denied" + if(/obj/item/weapon/stamp/clown) + if (!clown) + usr << "\red You are totally unable to use the stamp. HONK!" + return + else + overlays += "paper_stamped_clown" + else + overlays += "paper_stamped" + if(!stamped) + stamped = new + stamped += P.type + + user << "\blue You stamp the paper with your rubber stamp." + add_fingerprint(user) + return \ No newline at end of file diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm new file mode 100644 index 00000000000..8cdf75fa745 --- /dev/null +++ b/code/modules/paperwork/paperbin.dm @@ -0,0 +1,65 @@ +/obj/item/weapon/paper_bin + name = "paper bin" + icon = 'bureaucracy.dmi' + icon_state = "paper_bin1" + item_state = "sheet-metal" + throwforce = 1 + w_class = 3 + throw_speed = 3 + throw_range = 7 + var/amount = 30 //How much paper is in the bin. + +/obj/item/weapon/paper_bin/MouseDrop(mob/user as mob) + if ((user == usr && (!( usr.restrained() ) && (!( usr.stat ) && (usr.contents.Find(src) || in_range(src, usr)))))) + if (usr.hand) + if (!( usr.l_hand )) + spawn( 0 ) + src.attack_hand(usr, 1, 1) + return + else + if (!( usr.r_hand )) + spawn( 0 ) + src.attack_hand(usr, 0, 1) + return + return + + +/obj/item/weapon/paper_bin/attack_paw(mob/user as mob) + return src.attack_hand(user) + +/obj/item/weapon/paper_bin/attack_hand(mob/user as mob) + if (amount >= 1) + amount-- + update_icon() + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper + P.loc = user.loc + if(ishuman(user)) + if(!user.get_active_hand()) + user.put_in_hand(P) + user << "You take a paper out of the bin." + else + P.loc = get_turf_loc(src) + user << "You take a paper out of the bin." + else + user << "The paper bin is empty!" + + add_fingerprint(user) + return + +/obj/item/weapon/paper_bin/examine() + set src in oview(1) + + if(amount) + if(amount > 1) + usr << "There are [amount] papers in the bin." + else + usr << "There is one paper in the bin." + else + usr << "There are no papers in the bin." + return + +/obj/item/weapon/paper_bin/update_icon() + if(amount < 1) + icon_state = "paper_bin0" + else + icon_state = "paper_bin1" \ No newline at end of file diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm new file mode 100644 index 00000000000..be23c57038b --- /dev/null +++ b/code/modules/paperwork/pen.dm @@ -0,0 +1,22 @@ +/obj/item/weapon/pen + desc = "It's a normal black ink pen." + name = "pen" + icon = 'bureaucracy.dmi' + icon_state = "pen" + flags = FPRINT | ONBELT | TABLEPASS + throwforce = 0 + w_class = 1.0 + throw_speed = 7 + throw_range = 15 + m_amt = 10 + var/colour = "black" //what colour the ink is! + +/obj/item/weapon/pen/blue + desc = "It's a normal blue ink pen." + icon_state = "pen_blue" + colour = "blue" + +/obj/item/weapon/pen/red + desc = "It's a normal red ink pen." + icon_state = "pen_red" + colour = "red" \ No newline at end of file diff --git a/code/game/machinery/photocopier.dm b/code/modules/paperwork/photocopier.dm similarity index 100% rename from code/game/machinery/photocopier.dm rename to code/modules/paperwork/photocopier.dm diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm new file mode 100644 index 00000000000..abc93d0c2fd --- /dev/null +++ b/code/modules/paperwork/stamps.dm @@ -0,0 +1,53 @@ +/obj/item/weapon/stamp + desc = "A rubber stamp for stamping important documents." + name = "rubber stamp" + icon = 'bureaucracy.dmi' + icon_state = "stamp-qm" + item_state = "stamp" + flags = FPRINT | TABLEPASS + throwforce = 0 + w_class = 1.0 + throw_speed = 7 + throw_range = 15 + m_amt = 60 + var/color = "cargo" + +/obj/item/weapon/stamp/captain + name = "captain's rubber stamp" + icon_state = "stamp-cap" + color = "captain" + +/obj/item/weapon/stamp/hop + name = "head of personnel's rubber stamp" + icon_state = "stamp-hop" + color = "hop" + +/obj/item/weapon/stamp/hos + name = "head of security's rubber stamp" + icon_state = "stamp-hos" + color = "hosred" + +/obj/item/weapon/stamp/ce + name = "chief engineer's rubber stamp" + icon_state = "stamp-ce" + color = "chief" + +/obj/item/weapon/stamp/rd + name = "research director's rubber stamp" + icon_state = "stamp-rd" + color = "director" + +/obj/item/weapon/stamp/cmo + name = "chief medical officer's rubber stamp" + icon_state = "stamp-cmo" + color = "medical" + +/obj/item/weapon/stamp/denied + name = "\improper DENIED rubber stamp" + icon_state = "stamp-qm" + color = "redcoat" + +/obj/item/weapon/stamp/clown + name = "clown's rubber stamp" + icon_state = "stamp-clown" + color = "clown" \ No newline at end of file diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi new file mode 100644 index 00000000000..e9a5fcbea50 Binary files /dev/null and b/icons/obj/bureaucracy.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index bfd63ba980e..6c66fa4150c 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/paper.dmi b/icons/obj/paper.dmi index bdef2b6a009..0bbdd220d0b 100644 Binary files a/icons/obj/paper.dmi and b/icons/obj/paper.dmi differ diff --git a/tgstation.dme b/tgstation.dme index cac62de460e..9770e0389e5 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -116,6 +116,7 @@ #define FILE_DIR "code/modules/mob/new_player" #define FILE_DIR "code/modules/mob/organ" #define FILE_DIR "code/modules/mob/simple_animal" +#define FILE_DIR "code/modules/paperwork" #define FILE_DIR "code/modules/power" #define FILE_DIR "code/modules/power/antimatter" #define FILE_DIR "code/modules/power/singularity" @@ -453,7 +454,6 @@ #include "code\game\machinery\newscaster.dm" #include "code\game\machinery\OpTable.dm" #include "code\game\machinery\overview.dm" -#include "code\game\machinery\photocopier.dm" #include "code\game\machinery\portable_turret.dm" #include "code\game\machinery\recharger.dm" #include "code\game\machinery\rechargestation.dm" @@ -657,7 +657,6 @@ #include "code\game\objects\items\weapons\explosives.dm" #include "code\game\objects\items\weapons\flamethrower.dm" #include "code\game\objects\items\weapons\grenades.dm" -#include "code\game\objects\items\weapons\hand_lablers.dm" #include "code\game\objects\items\weapons\hydroponics.dm" #include "code\game\objects\items\weapons\kitchen.dm" #include "code\game\objects\items\weapons\manuals.dm" @@ -665,7 +664,6 @@ #include "code\game\objects\items\weapons\mops_cleaners.dm" #include "code\game\objects\items\weapons\paint.dm" #include "code\game\objects\items\weapons\paiwire.dm" -#include "code\game\objects\items\weapons\papers_bins.dm" #include "code\game\objects\items\weapons\plant_bag.dm" #include "code\game\objects\items\weapons\RCD.dm" #include "code\game\objects\items\weapons\RSF.dm" @@ -678,6 +676,7 @@ #include "code\game\objects\items\weapons\toilets.dm" #include "code\game\objects\items\weapons\tools.dm" #include "code\game\objects\items\weapons\twohanded.dm" +#include "code\game\objects\items\weapons\wrappingpaper.dm" #include "code\game\objects\items\weapons\implants\implant.dm" #include "code\game\objects\items\weapons\implants\implantcase.dm" #include "code\game\objects\items\weapons\implants\implantchair.dm" @@ -941,6 +940,13 @@ #include "code\modules\mob\simple_animal\life.dm" #include "code\modules\mob\simple_animal\shade.dm" #include "code\modules\mob\simple_animal\worm.dm" +#include "code\modules\paperwork\clipboard.dm" +#include "code\modules\paperwork\handlabeler.dm" +#include "code\modules\paperwork\paper.dm" +#include "code\modules\paperwork\paperbin.dm" +#include "code\modules\paperwork\pen.dm" +#include "code\modules\paperwork\photocopier.dm" +#include "code\modules\paperwork\stamps.dm" #include "code\modules\power\apc.dm" #include "code\modules\power\cable.dm" #include "code\modules\power\cell.dm"