paperwork mini update, also ASS_BLAST_USA
This commit is contained in:
@@ -8,14 +8,18 @@
|
||||
var/iscopy = FALSE
|
||||
|
||||
/obj/item/paper/carbon/update_icon_state()
|
||||
if(iscopy)
|
||||
icon_state = "cpaper"
|
||||
else if(copied)
|
||||
icon_state = "paper"
|
||||
else
|
||||
icon_state = "paper_stack"
|
||||
if(info)
|
||||
icon_state = "[icon_state]_words"
|
||||
return ..()
|
||||
if(iscopy)
|
||||
icon_state = "cpaper"
|
||||
return ..()
|
||||
if(copied)
|
||||
icon_state = "paper"
|
||||
return ..()
|
||||
|
||||
icon_state = "paper_stack"
|
||||
return ..()
|
||||
|
||||
/obj/item/paper/carbon/proc/removecopy(mob/living/user)
|
||||
if(!copied)
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
var/obj/item/pen/haspen //The stored pen.
|
||||
var/obj/item/paper/toppaper //The topmost piece of paper.
|
||||
var/obj/item/pen/haspen //The stored pen.
|
||||
var/obj/item/paper/toppaper //The topmost piece of paper.
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
/obj/item/clipboard/Destroy()
|
||||
QDEL_NULL(haspen)
|
||||
QDEL_NULL(toppaper) //let movable/Destroy handle the rest
|
||||
QDEL_NULL(toppaper) //let movable/Destroy handle the rest
|
||||
return ..()
|
||||
|
||||
/obj/item/clipboard/update_overlays()
|
||||
@@ -55,7 +55,7 @@
|
||||
else
|
||||
dat += "<A href='?src=[REF(src)];addpen=1'>Add Pen</A><BR><HR>"
|
||||
|
||||
//The topmost paper. You can't organise contents directly in byond, so this is what we're stuck with. -Pete
|
||||
//The topmost paper. You can't organise contents directly in byond, so this is what we're stuck with. -Pete
|
||||
if(toppaper)
|
||||
var/obj/item/paper/P = toppaper
|
||||
dat += "<A href='?src=[REF(src)];write=[REF(P)]'>Write</A> <A href='?src=[REF(src)];remove=[REF(P)]'>Remove</A> - <A href='?src=[REF(src)];read=[REF(P)]'>[P.name]</A><BR><HR>"
|
||||
@@ -71,7 +71,7 @@
|
||||
|
||||
/obj/item/clipboard/Topic(href, href_list)
|
||||
..()
|
||||
if(usr.stat || usr.restrained())
|
||||
if(usr.stat != CONSCIOUS || usr.restrained()) //HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED))
|
||||
return
|
||||
|
||||
if(usr.contents.Find(src))
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
/* Filing cabinets!
|
||||
* Contains:
|
||||
* Filing Cabinets
|
||||
* Security Record Cabinets
|
||||
* Medical Record Cabinets
|
||||
* Employment Contract Cabinets
|
||||
* Filing Cabinets
|
||||
* Security Record Cabinets
|
||||
* Medical Record Cabinets
|
||||
* Employment Contract Cabinets
|
||||
*/
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
desc = "A small cabinet with drawers. This one has wheels!"
|
||||
anchored = FALSE
|
||||
|
||||
/obj/structure/filingcabinet/filingcabinet //not changing the path to avoid unnecessary map issues, but please don't name stuff like this in the future -Pete
|
||||
/obj/structure/filingcabinet/filingcabinet //not changing the path to avoid unnecessary map issues, but please don't name stuff like this in the future -Pete
|
||||
icon_state = "tallcabinet"
|
||||
|
||||
|
||||
@@ -45,12 +45,12 @@
|
||||
I.forceMove(loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/filingcabinet/attackby(obj/item/P, mob/user, params)
|
||||
/obj/structure/filingcabinet/attackby(obj/item/P, mob/living/user, params)
|
||||
if(P.tool_behaviour == TOOL_WRENCH && user.a_intent != INTENT_HELP)
|
||||
to_chat(user, "<span class='notice'>You begin to [anchored ? "unwrench" : "wrench"] [src].</span>")
|
||||
if(P.use_tool(src, user, 20, volume=50))
|
||||
to_chat(user, "<span class='notice'>You successfully [anchored ? "unwrench" : "wrench"] [src].</span>")
|
||||
anchored = !anchored
|
||||
set_anchored(!anchored)
|
||||
else if(P.w_class < WEIGHT_CLASS_NORMAL)
|
||||
if(!user.transferItemToLoc(P, src))
|
||||
return
|
||||
@@ -79,13 +79,15 @@
|
||||
dat += "</table></center>"
|
||||
user << browse("<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>[name]</title></head><body>[dat]</body></html>", "window=filingcabinet;size=350x300")
|
||||
|
||||
|
||||
/obj/structure/filingcabinet/attack_tk(mob/user)
|
||||
if(anchored)
|
||||
attack_self_tk(user)
|
||||
else
|
||||
..()
|
||||
return attack_self_tk(user)
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/structure/filingcabinet/attack_self_tk(mob/user)
|
||||
// . = COMPONENT_CANCEL_ATTACK_CHAIN
|
||||
if(contents.len)
|
||||
if(prob(40 + contents.len * 5))
|
||||
var/obj/item/I = pick(contents)
|
||||
@@ -96,8 +98,9 @@
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You find nothing in [src].</span>")
|
||||
|
||||
|
||||
/obj/structure/filingcabinet/Topic(href, href_list)
|
||||
if(!usr.canUseTopic(src, BE_CLOSE, ismonkey(usr)))
|
||||
if(!usr.canUseTopic(src, BE_CLOSE, ismonkey(usr), FALSE)) //, !iscyborg(usr)))
|
||||
return
|
||||
if(href_list["retrieve"])
|
||||
usr << browse("", "window=filingcabinet") // Close the menu
|
||||
@@ -114,7 +117,7 @@
|
||||
* Security Record Cabinets
|
||||
*/
|
||||
/obj/structure/filingcabinet/security
|
||||
var/virgin = 1
|
||||
var/virgin = TRUE
|
||||
|
||||
/obj/structure/filingcabinet/security/proc/populate()
|
||||
if(virgin)
|
||||
@@ -132,22 +135,23 @@
|
||||
counter++
|
||||
P.info += "</TT>"
|
||||
P.name = "paper - '[G.fields["name"]]'"
|
||||
virgin = 0 //tabbing here is correct- it's possible for people to try and use it
|
||||
virgin = FALSE //tabbing here is correct- it's possible for people to try and use it
|
||||
//before the records have been generated, so we do this inside the loop.
|
||||
|
||||
/obj/structure/filingcabinet/security/on_attack_hand()
|
||||
/obj/structure/filingcabinet/security/on_attack_hand(mob/user, list/modifiers)
|
||||
populate()
|
||||
. = ..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/filingcabinet/security/attack_tk()
|
||||
populate()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/*
|
||||
* Medical Record Cabinets
|
||||
*/
|
||||
/obj/structure/filingcabinet/medical
|
||||
var/virgin = 1
|
||||
///This var is so that its filled on crew interaction to be as accurate (including latejoins) as possible, true until first interact
|
||||
var/virgin = TRUE
|
||||
|
||||
/obj/structure/filingcabinet/medical/proc/populate()
|
||||
if(virgin)
|
||||
@@ -165,17 +169,17 @@
|
||||
counter++
|
||||
P.info += "</TT>"
|
||||
P.name = "paper - '[G.fields["name"]]'"
|
||||
virgin = 0 //tabbing here is correct- it's possible for people to try and use it
|
||||
virgin = FALSE //tabbing here is correct- it's possible for people to try and use it
|
||||
//before the records have been generated, so we do this inside the loop.
|
||||
|
||||
//ATTACK HAND IGNORING PARENT RETURN VALUE
|
||||
/obj/structure/filingcabinet/medical/on_attack_hand()
|
||||
/obj/structure/filingcabinet/medical/on_attack_hand(mob/user, list/modifiers)
|
||||
populate()
|
||||
. = ..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/filingcabinet/medical/attack_tk()
|
||||
populate()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/*
|
||||
* Employment contract Cabinets
|
||||
@@ -185,6 +189,7 @@ GLOBAL_LIST_EMPTY(employmentCabinets)
|
||||
|
||||
/obj/structure/filingcabinet/employment
|
||||
icon_state = "employmentcabinet"
|
||||
///This var is so that its filled on crew interaction to be as accurate (including latejoins) as possible, true until first interact
|
||||
var/virgin = TRUE
|
||||
|
||||
/obj/structure/filingcabinet/employment/Initialize()
|
||||
@@ -219,3 +224,4 @@ GLOBAL_LIST_EMPTY(employmentCabinets)
|
||||
fillCurrent()
|
||||
virgin = FALSE
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
|
||||
/obj/item/folder/Topic(href, href_list)
|
||||
..()
|
||||
if(usr.stat || usr.restrained())
|
||||
if(usr.stat != CONSCIOUS || usr.restrained()) //HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED))
|
||||
return
|
||||
|
||||
if(usr.contents.Find(src))
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(!mode) //if it's off, give up.
|
||||
if(!mode) //if it's off, give up.
|
||||
return
|
||||
|
||||
if(!labels_left)
|
||||
@@ -57,7 +57,7 @@
|
||||
return
|
||||
|
||||
user.visible_message("<span class='notice'>[user] labels [A] with \"[label]\".</span>", \
|
||||
"<span class='notice'>You label [A] with \"[label]\".</span>")
|
||||
"<span class='notice'>You label [A] with \"[label]\".</span>")
|
||||
A.AddComponent(/datum/component/label, label)
|
||||
// playsound(A, 'sound/items/handling/component_pickup.ogg', 20, TRUE)
|
||||
labels_left--
|
||||
@@ -86,7 +86,7 @@
|
||||
if(istype(I, /obj/item/hand_labeler_refill))
|
||||
to_chat(user, "<span class='notice'>You insert [I] into [src].</span>")
|
||||
qdel(I)
|
||||
labels_left = initial(labels_left) //Yes, it's capped at its initial value
|
||||
labels_left = initial(labels_left) //Yes, it's capped at its initial value
|
||||
|
||||
/obj/item/hand_labeler/borg
|
||||
name = "cyborg-hand labeler"
|
||||
|
||||
@@ -36,9 +36,10 @@
|
||||
|
||||
/obj/item/papercutter/update_icon_state()
|
||||
icon_state = (storedcutter ? "[initial(icon_state)]-cutter" : "[initial(icon_state)]")
|
||||
return ..()
|
||||
|
||||
/obj/item/papercutter/update_overlays()
|
||||
. = ..()
|
||||
. =..()
|
||||
if(storedpaper)
|
||||
. += "paper"
|
||||
|
||||
@@ -68,6 +69,9 @@
|
||||
..()
|
||||
|
||||
/obj/item/papercutter/on_attack_hand(mob/user)
|
||||
// . = ..()
|
||||
// if(.)
|
||||
// return
|
||||
add_fingerprint(user)
|
||||
if(!storedcutter)
|
||||
to_chat(user, "<span class='warning'>The cutting blade is gone! You can't use [src] now.</span>")
|
||||
@@ -118,8 +122,8 @@
|
||||
|
||||
/obj/item/paperslip/Initialize()
|
||||
. = ..()
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
pixel_x = initial(pixel_x) + rand(-5, 5)
|
||||
pixel_y = initial(pixel_y) + rand(-5, 5)
|
||||
|
||||
|
||||
/obj/item/hatchet/cutterblade
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Premade paper
|
||||
* Premade paper
|
||||
*/
|
||||
|
||||
/obj/item/paper/fluff/sop
|
||||
@@ -21,12 +21,16 @@
|
||||
<br>-Love, <i>Your Dearest</i>"}
|
||||
|
||||
|
||||
//////////// Job guides n' fluff
|
||||
//////////// Job guides n' fluff
|
||||
|
||||
/obj/item/paper/guides/jobs/hydroponics
|
||||
name = "paper- 'Greetings from Billy Bob'"
|
||||
info = "<B>Hey fellow botanist!</B><BR>\n<BR>\nI didn't trust the station folk so I left<BR>\na couple of weeks ago. But here's some<BR>\ninstructions on how to operate things here.<BR>\nYou can grow plants and each iteration they become<BR>\nstronger, more potent and have better yield, if you<BR>\nknow which ones to pick. Use your botanist's analyzer<BR>\nfor that. You can turn harvested plants into seeds<BR>\nat the seed extractor, and replant them for better stuff!<BR>\nSometimes if the weed level gets high in the tray<BR>\nmutations into different mushroom or weed species have<BR>\nbeen witnessed. On the rare occasion even weeds mutate!<BR>\n<BR>\nEither way, have fun!<BR>\n<BR>\nBest regards,<BR>\nBilly Bob Johnson.<BR>\n<BR>\nPS.<BR>\nHere's a few tips:<BR>\nIn nettles, potency = damage<BR>\nIn amanitas, potency = deadliness + side effect<BR>\nIn Liberty caps, potency = drug power + effect<BR>\nIn chilies, potency = heat<BR>\n<B>Nutrients keep mushrooms alive!</B><BR>\n<B>Water keeps weeds such as nettles alive!</B><BR>\n<B>All other plants need both.</B>"
|
||||
|
||||
/obj/item/paper/guides/jobs/holopad_hydro
|
||||
name = "paper- 'Holopad Notice'"
|
||||
info = "<B>Can't get any botanists at the table? Have you tried using the damn holopad?</B><BR>\n<BR>\nStep onto the pad, and interface with it<BR>\nthen make your dang ol' call!<BR>\n<BR>\nYou want to call \"Hydroponics\" to reach them."
|
||||
|
||||
/obj/item/paper/fluff/jobs/security/beepsky_mom
|
||||
name = "Note from Beepsky's Mom"
|
||||
info = "01001001 00100000 01101000 01101111 01110000 01100101 00100000 01111001 01101111 01110101 00100000 01110011 01110100 01100001 01111001 00100000 01110011 01100001 01100110 01100101 00101110 00100000 01001100 01101111 01110110 01100101 00101100 00100000 01101101 01101111 01101101 00101110"
|
||||
@@ -92,9 +96,11 @@
|
||||
</i>"}
|
||||
|
||||
/*
|
||||
* Stations
|
||||
* Stations
|
||||
*/
|
||||
////////// cogstation.
|
||||
|
||||
|
||||
/////////// Cogstation.
|
||||
|
||||
/obj/item/paper/guides/cogstation/job_changes
|
||||
name = "MEMO: Job Changes"
|
||||
@@ -220,7 +226,8 @@
|
||||
name = "MEMO: MULEbots"
|
||||
info = "As you may know, MULEbots have been coded to minimize travel distance for maximum efficiency. In the case of this station, that may include travelling through depressurized areas exposed to space. Please bear this in mind before using them to transport living tissue. <BR>\n<BR>\n<I>Generated by Organic Resources Bot #2053</I>"
|
||||
|
||||
/////////// CentCom
|
||||
|
||||
/////////// CentCom
|
||||
|
||||
/obj/item/paper/fluff/stations/centcom/disk_memo
|
||||
name = "memo"
|
||||
@@ -234,7 +241,7 @@
|
||||
info = "<BR>CentCom Security<BR>Port Division<BR>Official Bulletin<BR><BR>Inspector,<BR>There is an emergency shuttle arriving today.<BR><BR>Approval is restricted to Nanotrasen employees only. Deny all other entrants.<BR><BR>CentCom Port Commissioner"
|
||||
|
||||
|
||||
/////////// Lavaland
|
||||
/////////// Lavaland
|
||||
|
||||
/obj/item/paper/fluff/stations/lavaland/orm_notice
|
||||
name = "URGENT!"
|
||||
|
||||
@@ -132,6 +132,7 @@
|
||||
icon_state = "paper_bin0"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]"
|
||||
return ..()
|
||||
|
||||
/obj/item/paper_bin/update_overlays()
|
||||
. = ..()
|
||||
@@ -154,6 +155,7 @@
|
||||
/obj/item/paper_bin/bundlenatural/on_attack_hand(mob/user)
|
||||
if(total_paper < 1)
|
||||
qdel(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/paper_bin/bundlenatural/fire_act(exposed_temperature, exposed_volume)
|
||||
qdel(src)
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
/obj/item/paperplane/Initialize(mapload, obj/item/paper/newPaper)
|
||||
. = ..()
|
||||
pixel_y = rand(-8, 8)
|
||||
pixel_x = rand(-9, 9)
|
||||
pixel_x = initial(pixel_x) + rand(-9, 9)
|
||||
pixel_y = initial(pixel_y) + rand(-8, 8)
|
||||
if(newPaper)
|
||||
internalPaper = newPaper
|
||||
flags_1 = newPaper.flags_1
|
||||
@@ -65,17 +65,18 @@
|
||||
/obj/item/paperplane/update_overlays()
|
||||
. = ..()
|
||||
var/list/stamped = internalPaper.stamped
|
||||
if(stamped)
|
||||
for(var/S in stamped)
|
||||
. += "paperplane_[S]"
|
||||
if(!LAZYLEN(stamped))
|
||||
return
|
||||
for(var/S in stamped)
|
||||
. += "paperplane_[S]"
|
||||
|
||||
/obj/item/paperplane/attack_self(mob/user)
|
||||
to_chat(user, "<span class='notice'>You unfold [src].</span>")
|
||||
var/obj/item/paper/internal_paper_tmp = internalPaper
|
||||
internal_paper_tmp.forceMove(loc)
|
||||
internalPaper = null
|
||||
qdel(src)
|
||||
user.put_in_hands(internal_paper_tmp)
|
||||
// We don't have to qdel the paperplane here; it shall be done once the internal paper object is moved out of src anyway.
|
||||
if(user.Adjacent(internalPaper))
|
||||
user.put_in_hands(internalPaper)
|
||||
else
|
||||
internalPaper.forceMove(loc)
|
||||
|
||||
/obj/item/paperplane/attackby(obj/item/P, mob/living/carbon/human/user, params)
|
||||
if(burn_paper_product_attackby_check(P, user))
|
||||
@@ -84,7 +85,7 @@
|
||||
to_chat(user, "<span class='warning'>You should unfold [src] before changing it!</span>")
|
||||
return
|
||||
|
||||
else if(istype(P, /obj/item/stamp)) //we don't randomize stamps on a paperplane
|
||||
else if(istype(P, /obj/item/stamp)) //we don't randomize stamps on a paperplane
|
||||
internalPaper.attackby(P, user) //spoofed attack to update internal paper.
|
||||
update_icon()
|
||||
add_fingerprint(user)
|
||||
@@ -121,8 +122,8 @@
|
||||
. = ..()
|
||||
. += "<span class='notice'>Alt-click [src] to fold it into a paper plane.</span>"
|
||||
|
||||
/obj/item/paper/AltClick(mob/living/carbon/user, obj/item/I)
|
||||
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
|
||||
/obj/item/paper/AltClick(mob/living/user, obj/item/I)
|
||||
if(!user.canUseTopic(src, BE_CLOSE, ismonkey(user), FALSE)) //, TRUE))
|
||||
return
|
||||
if(istype(src, /obj/item/paper/carbon))
|
||||
var/obj/item/paper/carbon/Carbon = src
|
||||
@@ -137,5 +138,6 @@
|
||||
if(origami_action?.active)
|
||||
plane_type = /obj/item/paperplane/origami
|
||||
|
||||
I = new plane_type(user, src)
|
||||
user.put_in_hands(I)
|
||||
I = new plane_type(loc, src)
|
||||
if(user.Adjacent(I))
|
||||
user.put_in_hands(I)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
/* Pens!
|
||||
* Contains:
|
||||
* Pens
|
||||
* Sleepy Pens
|
||||
* Parapens
|
||||
* Edaggers
|
||||
/* Pens!
|
||||
* Contains:
|
||||
* Pens
|
||||
* Sleepy Pens
|
||||
* Parapens
|
||||
* Edaggers
|
||||
*/
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
custom_materials = list(/datum/material/iron=10)
|
||||
pressure_resistance = 2
|
||||
grind_results = list(/datum/reagent/iron = 2, /datum/reagent/iodine = 1)
|
||||
var/colour = "black" //what colour the ink is!
|
||||
var/colour = "black" //what colour the ink is!
|
||||
var/degrees = 0
|
||||
var/font = PEN_FONT
|
||||
embedding = list()
|
||||
@@ -147,29 +147,50 @@
|
||||
|
||||
/obj/item/pen/afterattack(obj/O, mob/living/user, proximity)
|
||||
. = ..()
|
||||
//Changing Name/Description of items. Only works if they have the 'unique_rename' flag set
|
||||
//Changing name/description of items. Only works if they have the UNIQUE_RENAME object flag set
|
||||
if(isobj(O) && proximity && (O.obj_flags & UNIQUE_RENAME))
|
||||
var/penchoice = input(user, "What would you like to edit?", "Rename or change description?") as null|anything in list("Rename","Change description")
|
||||
var/penchoice = input(user, "What would you like to edit?", "Rename, change description or reset both?") as null|anything in list("Rename","Change description","Reset")
|
||||
if(QDELETED(O) || !user.canUseTopic(O, BE_CLOSE))
|
||||
return
|
||||
if(penchoice == "Rename")
|
||||
var/input = stripped_input(user,"What do you want to name \the [O.name]?", ,"", MAX_NAME_LEN)
|
||||
var/input = stripped_input(user,"What do you want to name [O]?", ,"[O.name]", MAX_NAME_LEN)
|
||||
var/oldname = O.name
|
||||
if(QDELETED(O) || !user.canUseTopic(O, BE_CLOSE))
|
||||
return
|
||||
if(oldname == input)
|
||||
to_chat(user, "<span class='notice'>You changed \the [O.name] to... well... \the [O.name].</span>")
|
||||
if(oldname == input || input == "")
|
||||
to_chat(user, "<span class='notice'>You changed [O] to... well... [O].</span>")
|
||||
else
|
||||
O.name = input
|
||||
to_chat(user, "<span class='notice'>\The [oldname] has been successfully been renamed to \the [input].</span>")
|
||||
var/datum/component/label/label = O.GetComponent(/datum/component/label)
|
||||
if(label)
|
||||
label.remove_label()
|
||||
label.apply_label()
|
||||
to_chat(user, "<span class='notice'>You have successfully renamed \the [oldname] to [O].</span>")
|
||||
O.renamedByPlayer = TRUE
|
||||
|
||||
if(penchoice == "Change description")
|
||||
var/input = stripped_input(user,"Describe \the [O.name] here", ,"", 100)
|
||||
var/input = stripped_input(user,"Describe [O] here:", ,"[O.desc]", 140)
|
||||
var/olddesc = O.desc
|
||||
if(QDELETED(O) || !user.canUseTopic(O, BE_CLOSE))
|
||||
return
|
||||
O.desc = input
|
||||
to_chat(user, "<span class='notice'>You have successfully changed \the [O.name]'s description.</span>")
|
||||
if(olddesc == input || input == "")
|
||||
to_chat(user, "<span class='notice'>You decide against changing [O]'s description.</span>")
|
||||
else
|
||||
O.desc = input
|
||||
to_chat(user, "<span class='notice'>You have successfully changed [O]'s description.</span>")
|
||||
O.renamedByPlayer = TRUE
|
||||
|
||||
if(penchoice == "Reset")
|
||||
if(QDELETED(O) || !user.canUseTopic(O, BE_CLOSE))
|
||||
return
|
||||
O.desc = initial(O.desc)
|
||||
O.name = initial(O.name)
|
||||
var/datum/component/label/label = O.GetComponent(/datum/component/label)
|
||||
if(label)
|
||||
label.remove_label()
|
||||
label.apply_label()
|
||||
to_chat(user, "<span class='notice'>You have successfully reset [O]'s name and description.</span>")
|
||||
O.renamedByPlayer = FALSE
|
||||
|
||||
/*
|
||||
* Sleepypens
|
||||
@@ -256,6 +277,7 @@
|
||||
item_state = initial(item_state)
|
||||
lefthand_file = initial(lefthand_file)
|
||||
righthand_file = initial(righthand_file)
|
||||
return ..()
|
||||
|
||||
/obj/item/pen/survival
|
||||
name = "survival pen"
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
|
||||
/// For use with the `color_mode` var. Photos will be printed in greyscale while the var has this value.
|
||||
#define PHOTO_GREYSCALE "Greyscale"
|
||||
#define PHOTO_GREYSCALE "Greyscale"
|
||||
/// For use with the `color_mode` var. Photos will be printed in full color while the var has this value.
|
||||
#define PHOTO_COLOR "Color"
|
||||
#define PHOTO_COLOR "Color"
|
||||
|
||||
/// How much toner is used for making a copy of a paper.
|
||||
#define PAPER_TONER_USE 0.125
|
||||
#define PAPER_TONER_USE 0.125
|
||||
/// How much toner is used for making a copy of a photo.
|
||||
#define PHOTO_TONER_USE 0.625
|
||||
#define PHOTO_TONER_USE 0.625
|
||||
/// How much toner is used for making a copy of a document.
|
||||
#define DOCUMENT_TONER_USE 0.75
|
||||
#define DOCUMENT_TONER_USE 0.75
|
||||
/// How much toner is used for making a copy of an ass.
|
||||
#define ASS_TONER_USE 0.625
|
||||
#define ASS_TONER_USE 0.625
|
||||
/// The maximum amount of copies you can make with one press of the copy button.
|
||||
#define MAX_COPIES_AT_ONCE 10
|
||||
#define MAX_COPIES_AT_ONCE 10
|
||||
|
||||
/obj/machinery/photocopier
|
||||
name = "photocopier"
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
/obj/machinery/photocopier/Initialize()
|
||||
. = ..()
|
||||
//AddComponent(/datum/component/payment, 5, SSeconomy.get_dep_account(ACCOUNT_CIV), PAYMENT_CLINICAL)
|
||||
// AddComponent(/datum/component/payment, 5, SSeconomy.get_dep_account(ACCOUNT_CIV), PAYMENT_CLINICAL)
|
||||
toner_cartridge = new(src)
|
||||
|
||||
/obj/machinery/photocopier/ui_interact(mob/user, datum/tgui/ui)
|
||||
@@ -82,7 +82,8 @@
|
||||
return data
|
||||
|
||||
/obj/machinery/photocopier/ui_act(action, list/params)
|
||||
if(..())
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
switch(action)
|
||||
@@ -187,13 +188,12 @@
|
||||
*/
|
||||
/obj/machinery/photocopier/proc/do_copy_loop(datum/callback/copy_cb, mob/user)
|
||||
busy = TRUE
|
||||
var/num_loops
|
||||
for(var/i in 1 to num_copies)
|
||||
//if(attempt_charge(src, user) & COMPONENT_OBJ_CANCEL_CHARGE)
|
||||
// break
|
||||
var/i
|
||||
for(i in 1 to num_copies)
|
||||
// if(attempt_charge(src, user) & COMPONENT_OBJ_CANCEL_CHARGE)
|
||||
// break
|
||||
addtimer(copy_cb, i SECONDS)
|
||||
num_loops++
|
||||
addtimer(CALLBACK(src, .proc/reset_busy), num_loops SECONDS)
|
||||
addtimer(CALLBACK(src, .proc/reset_busy), i SECONDS)
|
||||
|
||||
/**
|
||||
* Sets busy to `FALSE`. Created as a proc so it can be used in callbacks.
|
||||
@@ -210,8 +210,8 @@
|
||||
* * copied_item - The paper, document, or photo that was just spawned on top of the printer.
|
||||
*/
|
||||
/obj/machinery/photocopier/proc/give_pixel_offset(obj/item/copied_item)
|
||||
copied_item.pixel_x = rand(-10, 10)
|
||||
copied_item.pixel_y = rand(-10, 10)
|
||||
copied_item.pixel_x = initial(copied_item.pixel_x) + rand(-10, 10)
|
||||
copied_item.pixel_y = initial(copied_item.pixel_y) + rand(-10, 10)
|
||||
|
||||
/**
|
||||
* Handles the copying of devil contract paper. Transfers all the text, stamps and so on from the old paper, to the copy.
|
||||
@@ -242,8 +242,8 @@
|
||||
copied_paper.info = "<font color = #808080>"
|
||||
|
||||
var/copied_info = paper_copy.info
|
||||
copied_info = replacetext(copied_info, "<font face=\"[PEN_FONT]\" color=", "<font face=\"[PEN_FONT]\" nocolor=") //state of the art techniques in action
|
||||
copied_info = replacetext(copied_info, "<font face=\"[CRAYON_FONT]\" color=", "<font face=\"[CRAYON_FONT]\" nocolor=") //This basically just breaks the existing color tag, which we need to do because the innermost tag takes priority.
|
||||
copied_info = replacetext(copied_info, "<font face=\"[PEN_FONT]\" color=", "<font face=\"[PEN_FONT]\" nocolor=") //state of the art techniques in action
|
||||
copied_info = replacetext(copied_info, "<font face=\"[CRAYON_FONT]\" color=", "<font face=\"[CRAYON_FONT]\" nocolor=") //This basically just breaks the existing color tag, which we need to do because the innermost tag takes priority.
|
||||
copied_paper.info += copied_info
|
||||
copied_paper.info += "</font>"
|
||||
copied_paper.name = paper_copy.name
|
||||
@@ -287,17 +287,22 @@
|
||||
/obj/machinery/photocopier/proc/make_ass_copy()
|
||||
if(!check_ass())
|
||||
return
|
||||
if(ishuman(ass)) //(ass.get_item_by_slot(ITEM_SLOT_ICLOTHING) || ass.get_item_by_slot(ITEM_SLOT_OCLOTHING)))
|
||||
var/mob/living/carbon/C = ass //have to typecast to this, is_groin_exposed is carbon level
|
||||
if(C.is_groin_exposed())
|
||||
to_chat(usr, "<span class='notice'>You feel kind of silly, copying [ass == usr ? "your" : ass][ass == usr ? "" : "\'s"] ass with [ass == usr ? "your" : "[ass.p_their()]"] clothes on.</span>" )
|
||||
return
|
||||
if(ishuman(ass) && (ass.get_item_by_slot(ITEM_SLOT_ICLOTHING) || ass.get_item_by_slot(ITEM_SLOT_OCLOTHING)))
|
||||
to_chat(usr, "<span class='notice'>You feel kind of silly, copying [ass == usr ? "your" : ass][ass == usr ? "" : "\'s"] ass with [ass == usr ? "your" : "[ass.p_their()]"] clothes on.</span>" )
|
||||
return
|
||||
|
||||
var/icon/temp_img
|
||||
if(isalienadult(ass) || istype(ass, /mob/living/simple_animal/hostile/alien)) //Xenos have their own asses, thanks to Pybro.
|
||||
if(ishuman(ass))
|
||||
var/mob/living/carbon/human/H = ass
|
||||
var/datum/species/spec = H.dna.species
|
||||
if(spec.ass_image)
|
||||
temp_img = icon(spec.ass_image)
|
||||
else
|
||||
temp_img = icon(ass.gender == FEMALE ? 'icons/ass/assfemale.png' : 'icons/ass/assmale.png')
|
||||
else if(isalienadult(ass) || istype(ass, /mob/living/simple_animal/hostile/alien)) //Xenos have their own asses, thanks to Pybro.
|
||||
temp_img = icon('icons/ass/assalien.png')
|
||||
else if(ishuman(ass)) //Suit checks are after check_ass
|
||||
temp_img = icon(ass.gender == FEMALE ? 'icons/ass/assfemale.png' : 'icons/ass/assmale.png')
|
||||
else if(issilicon(ass))
|
||||
temp_img = icon('icons/ass/assmachine.png')
|
||||
else if(isdrone(ass)) //Drones are hot
|
||||
temp_img = icon('icons/ass/assdrone.png')
|
||||
|
||||
@@ -479,6 +484,7 @@
|
||||
*/
|
||||
/obj/item/toner
|
||||
name = "toner cartridge"
|
||||
desc = "A small, lightweight cartridge of NanoTrasen ValueBrand toner. Fits photocopiers and autopainters alike."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "tonercartridge"
|
||||
grind_results = list(/datum/reagent/iodine = 40, /datum/reagent/iron = 10)
|
||||
@@ -487,9 +493,10 @@
|
||||
|
||||
/obj/item/toner/large
|
||||
name = "large toner cartridge"
|
||||
desc = "A hefty cartridge of NanoTrasen ValueBrand toner. Fits photocopiers and autopainters alike."
|
||||
grind_results = list(/datum/reagent/iodine = 90, /datum/reagent/iron = 10)
|
||||
charges = 15
|
||||
max_charges = 15
|
||||
charges = 25
|
||||
max_charges = 25
|
||||
|
||||
/obj/item/toner/extreme
|
||||
name = "extremely large toner cartridge"
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
name = "ticket machine"
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
icon_state = "ticketmachine"
|
||||
// base_icon_state = "ticketmachine"
|
||||
desc = "A marvel of bureaucratic engineering encased in an efficient plastic shell. It can be refilled with a hand labeler refill roll and linked to buttons with a multitool."
|
||||
density = FALSE
|
||||
maptext_height = 26
|
||||
@@ -22,11 +23,10 @@
|
||||
var/list/obj/item/ticket_machine_ticket/tickets = list()
|
||||
|
||||
/obj/machinery/ticket_machine/multitool_act(mob/living/user, obj/item/I)
|
||||
if(!I.tool_behaviour == TOOL_MULTITOOL)
|
||||
return
|
||||
if(!multitool_check_buffer(user, I)) //make sure it has a data buffer
|
||||
return
|
||||
I.buffer = src
|
||||
var/obj/item/multitool/M = I
|
||||
M.buffer = src
|
||||
to_chat(user, "<span class='notice'>You store linkage information in [I]'s buffer.</span>")
|
||||
return TRUE
|
||||
|
||||
@@ -78,10 +78,11 @@
|
||||
/obj/machinery/button/ticket_machine/multitool_act(mob/living/user, obj/item/I)
|
||||
. = ..()
|
||||
if(I.tool_behaviour == TOOL_MULTITOOL)
|
||||
if(I.buffer && !istype(I.buffer, /obj/machinery/ticket_machine))
|
||||
var/obj/item/multitool/M = I
|
||||
if(M.buffer && !istype(M.buffer, /obj/machinery/ticket_machine))
|
||||
return
|
||||
var/obj/item/assembly/control/ticket_machine/controller = device
|
||||
controller.linked = I.buffer
|
||||
controller.linked = M.buffer
|
||||
id = null
|
||||
controller.id = null
|
||||
to_chat(user, "<span class='warning'>You've linked [src] to [controller.linked].</span>")
|
||||
@@ -117,6 +118,10 @@
|
||||
addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10)
|
||||
|
||||
/obj/machinery/ticket_machine/update_icon()
|
||||
. = ..()
|
||||
handle_maptext()
|
||||
|
||||
/obj/machinery/ticket_machine/update_icon_state()
|
||||
switch(ticket_number) //Gives you an idea of how many tickets are left
|
||||
if(0 to 49)
|
||||
icon_state = "ticketmachine_100"
|
||||
@@ -124,7 +129,7 @@
|
||||
icon_state = "ticketmachine_50"
|
||||
if(100)
|
||||
icon_state = "ticketmachine_0"
|
||||
handle_maptext()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/ticket_machine/proc/handle_maptext()
|
||||
switch(ticket_number) //This is here to handle maptext offsets so that the numbers align.
|
||||
@@ -161,9 +166,7 @@
|
||||
ready = TRUE
|
||||
|
||||
/obj/machinery/ticket_machine/on_attack_hand(mob/living/carbon/user)
|
||||
INVOKE_ASYNC(src, .proc/attempt_ticket, user)
|
||||
|
||||
/obj/machinery/ticket_machine/proc/attempt_ticket(mob/living/carbon/user)
|
||||
// . = ..()
|
||||
if(!ready)
|
||||
to_chat(user,"<span class='warning'>You press the button, but nothing happens...</span>")
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user