merge conflict fix

This commit is contained in:
Kyep
2018-04-25 23:48:44 -07:00
1399 changed files with 26746 additions and 28406 deletions
+5 -5
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/paper/carbon
/obj/item/paper/carbon
name = "paper"
icon_state = "paper_stack"
item_state = "paper"
@@ -6,7 +6,7 @@
var/iscopy = 0
/obj/item/weapon/paper/carbon/update_icon()
/obj/item/paper/carbon/update_icon()
if(iscopy)
if(info)
icon_state = "cpaper_words"
@@ -25,15 +25,15 @@
/obj/item/weapon/paper/carbon/verb/removecopy()
/obj/item/paper/carbon/verb/removecopy()
set name = "Remove carbon-copy"
set category = "Object"
set src in usr
if(copied == 0)
var/obj/item/weapon/paper/carbon/c = src
var/obj/item/paper/carbon/c = src
var/copycontents = html_decode(c.info)
var/obj/item/weapon/paper/carbon/copy = new /obj/item/weapon/paper/carbon (usr.loc)
var/obj/item/paper/carbon/copy = new /obj/item/paper/carbon (usr.loc)
copycontents = replacetext(copycontents, "<font face=\"[c.deffont]\" color=", "<font face=\"[c.deffont]\" nocolor=") //state of the art techniques in action
copycontents = replacetext(copycontents, "<font face=\"[c.crayonfont]\" color=", "<font face=\"[c.crayonfont]\" nocolor=") //This basically just breaks the existing color tag, which we need to do because the innermost tag takes priority.
copy.info += copycontents
+23 -23
View File
@@ -1,7 +1,7 @@
#define PAPERWORK 1
#define PHOTO 2
/obj/item/weapon/clipboard
/obj/item/clipboard
name = "clipboard"
desc = "It looks like you're writing a letter. Want some help?"
icon = 'icons/obj/bureaucracy.dmi'
@@ -9,39 +9,39 @@
item_state = "clipboard"
w_class = WEIGHT_CLASS_SMALL
throw_speed = 3
var/obj/item/weapon/pen/containedpen
var/obj/item/weapon/toppaper
var/obj/item/pen/containedpen
var/obj/item/toppaper
slot_flags = SLOT_BELT
burn_state = FLAMMABLE
/obj/item/weapon/clipboard/New()
/obj/item/clipboard/New()
..()
update_icon()
/obj/item/weapon/clipboard/verb/removePen(mob/user)
/obj/item/clipboard/verb/removePen(mob/user)
set category = "Object"
set name = "Remove clipboard pen"
if(!ishuman(user) || user.incapacitated())
return
penPlacement(user, containedpen, FALSE)
/obj/item/weapon/clipboard/proc/isPaperwork(obj/item/weapon/W) //This could probably do with being somewhere else but for now it's fine here.
if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/paper_bundle))
/obj/item/clipboard/proc/isPaperwork(obj/item/W) //This could probably do with being somewhere else but for now it's fine here.
if(istype(W, /obj/item/paper) || istype(W, /obj/item/paper_bundle))
return PAPERWORK
if(istype(W, /obj/item/weapon/photo))
if(istype(W, /obj/item/photo))
return PHOTO
/obj/item/weapon/clipboard/proc/checkTopPaper()
/obj/item/clipboard/proc/checkTopPaper()
if(toppaper.loc != src) //Oh no! We're missing a top sheet! Better get another one to be at the top.
toppaper = locate(/obj/item/weapon/paper) in src
toppaper = locate(/obj/item/paper) in src
if(!toppaper) //In case there's no paper, try find a paper bundle instead (why is paper_bundle not a subtype of paper?)
toppaper = locate(/obj/item/weapon/paper_bundle) in src
toppaper = locate(/obj/item/paper_bundle) in src
/obj/item/weapon/clipboard/examine(mob/user)
/obj/item/clipboard/examine(mob/user)
if(..(user, 1) && toppaper)
toppaper.examine(user)
obj/item/weapon/clipboard/proc/penPlacement(mob/user, obj/item/weapon/pen/P, placing)
obj/item/clipboard/proc/penPlacement(mob/user, obj/item/pen/P, placing)
if(placing)
if(containedpen)
to_chat(user, "<span class='warning'>There's already a pen in [src]!</span>")
@@ -61,12 +61,12 @@ obj/item/weapon/clipboard/proc/penPlacement(mob/user, obj/item/weapon/pen/P, pla
containedpen = null
update_icon()
/obj/item/weapon/clipboard/proc/showClipboard(mob/user) //Show them what's on the clipboard
/obj/item/clipboard/proc/showClipboard(mob/user) //Show them what's on the clipboard
var/dat = "<title>[src]</title>"
dat += "<a href='?src=[UID()];doPenThings=[containedpen ? "Remove" : "Add"]'>[containedpen ? "Remove pen" : "Add pen"]</a><br><hr>"
if(toppaper)
dat += "<a href='?src=[UID()];remove=\ref[toppaper]'>Remove</a><a href='?src=[UID()];viewOrWrite=\ref[toppaper]'>[toppaper.name]</a><br><hr>"
for(var/obj/item/weapon/P in src)
for(var/obj/item/P in src)
if(isPaperwork(P) == PAPERWORK && P != toppaper)
dat += "<a href='?src=[UID()];remove=\ref[P]'>Remove</a><a href='?src=[UID()];topPaper=\ref[P]'>Put on top</a><a href='?src=[UID()];viewOrWrite=\ref[P]'>[P.name]</a><br>"
if(isPaperwork(P) == PHOTO)
@@ -75,7 +75,7 @@ obj/item/weapon/clipboard/proc/penPlacement(mob/user, obj/item/weapon/pen/P, pla
popup.set_content(dat)
popup.open()
/obj/item/weapon/clipboard/update_icon()
/obj/item/clipboard/update_icon()
overlays.Cut()
if(toppaper)
overlays += toppaper.icon_state
@@ -85,7 +85,7 @@ obj/item/weapon/clipboard/proc/penPlacement(mob/user, obj/item/weapon/pen/P, pla
overlays += "clipboard_over"
return
/obj/item/weapon/clipboard/attackby(obj/item/weapon/W, mob/user)
/obj/item/clipboard/attackby(obj/item/W, mob/user)
if(isPaperwork(W)) //If it's a photo, paper bundle, or piece of paper, place it on the clipboard.
user.unEquip(W)
W.forceMove(src)
@@ -111,14 +111,14 @@ obj/item/weapon/clipboard/proc/penPlacement(mob/user, obj/item/weapon/pen/P, pla
penPlacement(user, W, TRUE)
else
return
else if(istype(W, /obj/item/weapon/stamp) && toppaper) //We can stamp the topmost piece of paper
else if(istype(W, /obj/item/stamp) && toppaper) //We can stamp the topmost piece of paper
toppaper.attackby(W, user)
update_icon()
/obj/item/weapon/clipboard/attack_self(mob/user)
/obj/item/clipboard/attack_self(mob/user)
showClipboard(user)
/obj/item/weapon/clipboard/Topic(href, href_list)
/obj/item/clipboard/Topic(href, href_list)
..()
if(!Adjacent(usr) || usr.incapacitated())
return
@@ -135,7 +135,7 @@ obj/item/weapon/clipboard/proc/penPlacement(mob/user, obj/item/weapon/pen/P, pla
to_chat(usr, "<span class='notice'>You remove [P] from [src].</span>")
checkTopPaper() //So we don't accidentally make the top sheet not be on the clipboard
else if(href_list["viewOrWrite"])
var/obj/item/weapon/P = locate(href_list["viewOrWrite"])
var/obj/item/P = locate(href_list["viewOrWrite"])
if(!isPaperwork(P))
return
if(is_pen(I) && isPaperwork(P) != PHOTO) //Because you can't write on photos that aren't in your hand
@@ -143,10 +143,10 @@ obj/item/weapon/clipboard/proc/penPlacement(mob/user, obj/item/weapon/pen/P, pla
else if(isPaperwork(P) == PAPERWORK) //Why can't these be subtypes of paper
P.examine(usr)
else if(isPaperwork(P) == PHOTO)
var/obj/item/weapon/photo/Ph = P
var/obj/item/photo/Ph = P
Ph.show(usr)
else if(href_list["topPaper"])
var/obj/item/weapon/P = locate(href_list["topPaper"])
var/obj/item/P = locate(href_list["topPaper"])
if(P == toppaper)
return
to_chat(usr, "<span class='notice'>You flick the pages so that [P] is on top.</span>")
+2 -2
View File
@@ -42,7 +42,7 @@ var/list/adminfaxes = list()
html += "<td>[A.name]</td>"
html += "<td>[A.from_department]</td>"
html += "<td>[A.to_department]</td>"
html += "<td>[worldtime2text(A.sent_at)]</td>"
html += "<td>[station_time_timestamp("hh:mm:ss", A.sent_at)]</td>"
if(A.sent_by)
var/mob/living/S = A.sent_by
html += "<td><A HREF='?_src_=holder;adminplayeropts=\ref[A.sent_by]'>[S.name]</A></td>"
@@ -71,7 +71,7 @@ var/list/adminfaxes = list()
html += "<td>[F.name]</td>"
html += "<td>[F.from_department]</td>"
html += "<td>[F.to_department]</td>"
html += "<td>[worldtime2text(F.sent_at)]</td>"
html += "<td>[station_time_timestamp("hh:mm:ss", F.sent_at)]</td>"
if(F.sent_by)
var/mob/living/S = F.sent_by
html += "<td><A HREF='?_src_=holder;adminplayeropts=\ref[F.sent_by]'>[S.name]</A></td>"
+25 -19
View File
@@ -17,7 +17,7 @@ var/list/alldepartments = list()
idle_power_usage = 30
active_power_usage = 200
var/obj/item/weapon/card/id/scan = null // identification
var/obj/item/card/id/scan = null // identification
var/authenticated = 0
var/sendcooldown = 0 // to avoid spamming fax messages
@@ -30,9 +30,12 @@ var/list/alldepartments = list()
/obj/machinery/photocopier/faxmachine/New()
..()
allfaxes += src
update_network()
if( !(("[department]" in alldepartments) || ("[department]" in admin_departments)) )
alldepartments |= department
/obj/machinery/photocopier/faxmachine/proc/update_network()
if(department != "Unknown")
if(!(("[department]" in alldepartments) || ("[department]" in admin_departments) || ("[department]" in hidden_admin_departments)))
alldepartments |= department
/obj/machinery/photocopier/faxmachine/longrange
name = "long range fax machine"
@@ -45,10 +48,10 @@ var/list/alldepartments = list()
/obj/machinery/photocopier/faxmachine/attack_ghost(mob/user)
ui_interact(user)
/obj/machinery/photocopier/faxmachine/attackby(obj/item/weapon/item, mob/user, params)
if(istype(item,/obj/item/weapon/card/id) && !scan)
/obj/machinery/photocopier/faxmachine/attackby(obj/item/item, mob/user, params)
if(istype(item,/obj/item/card/id) && !scan)
scan(item)
else if(istype(item, /obj/item/weapon/paper) || istype(item, /obj/item/weapon/photo) || istype(item, /obj/item/weapon/paper_bundle))
else if(istype(item, /obj/item/paper) || istype(item, /obj/item/photo) || istype(item, /obj/item/paper_bundle))
..()
SSnanoui.update_uis(src)
else
@@ -131,7 +134,7 @@ var/list/alldepartments = list()
copyitem = null
else
var/obj/item/I = usr.get_active_hand()
if(istype(I, /obj/item/weapon/paper) || istype(I, /obj/item/weapon/photo) || istype(I, /obj/item/weapon/paper_bundle))
if(istype(I, /obj/item/paper) || istype(I, /obj/item/photo) || istype(I, /obj/item/paper_bundle))
usr.drop_item()
copyitem = I
I.forceMove(src)
@@ -166,17 +169,17 @@ var/list/alldepartments = list()
if(copyitem)
var/n_name = sanitize(copytext(input(usr, "What would you like to label the fax?", "Fax Labelling", copyitem.name) as text, 1, MAX_MESSAGE_LEN))
if((copyitem && copyitem.loc == src && usr.stat == 0))
if(istype(copyitem, /obj/item/weapon/paper))
if(istype(copyitem, /obj/item/paper))
copyitem.name = "[(n_name ? text("[n_name]") : initial(copyitem.name))]"
copyitem.desc = "This is a paper titled '" + copyitem.name + "'."
else if(istype(copyitem, /obj/item/weapon/photo))
else if(istype(copyitem, /obj/item/photo))
copyitem.name = "[(n_name ? text("[n_name]") : "photo")]"
else if(istype(copyitem, /obj/item/weapon/paper_bundle))
else if(istype(copyitem, /obj/item/paper_bundle))
copyitem.name = "[(n_name ? text("[n_name]") : "paper")]"
SSnanoui.update_uis(src)
/obj/machinery/photocopier/faxmachine/proc/scan(var/obj/item/weapon/card/id/card = null)
/obj/machinery/photocopier/faxmachine/proc/scan(var/obj/item/card/id/card = null)
if(scan) // Card is in machine
if(ishuman(usr))
scan.forceMove(get_turf(src))
@@ -189,7 +192,7 @@ var/list/alldepartments = list()
else if(Adjacent(usr))
if(!card)
var/obj/item/I = usr.get_active_hand()
if(istype(I, /obj/item/weapon/card/id))
if(istype(I, /obj/item/card/id))
usr.drop_item()
I.forceMove(src)
scan = I
@@ -224,7 +227,7 @@ var/list/alldepartments = list()
var/success = 0
for(var/obj/machinery/photocopier/faxmachine/F in allfaxes)
if( F.department == destination )
if(F.department == destination)
success = F.receivefax(copyitem)
if(success)
@@ -255,11 +258,11 @@ var/list/alldepartments = list()
// give the sprite some time to flick
sleep(20)
if(istype(incoming, /obj/item/weapon/paper))
if(istype(incoming, /obj/item/paper))
copy(incoming)
else if(istype(incoming, /obj/item/weapon/photo))
else if(istype(incoming, /obj/item/photo))
photocopy(incoming)
else if(istype(incoming, /obj/item/weapon/paper_bundle))
else if(istype(incoming, /obj/item/paper_bundle))
bundlecopy(incoming)
else
return 0
@@ -277,11 +280,11 @@ var/list/alldepartments = list()
use_power(200)
var/obj/item/rcvdcopy
if(istype(copyitem, /obj/item/weapon/paper))
if(istype(copyitem, /obj/item/paper))
rcvdcopy = copy(copyitem)
else if(istype(copyitem, /obj/item/weapon/photo))
else if(istype(copyitem, /obj/item/photo))
rcvdcopy = photocopy(copyitem)
else if(istype(copyitem, /obj/item/weapon/paper_bundle))
else if(istype(copyitem, /obj/item/paper_bundle))
rcvdcopy = bundlecopy(copyitem)
else
visible_message("[src] beeps, \"Error transmitting message.\"")
@@ -304,6 +307,9 @@ var/list/alldepartments = list()
message_admins(sender, "CENTCOM FAX", destination, rcvdcopy, "#006100")
if("Syndicate")
message_admins(sender, "SYNDICATE FAX", destination, rcvdcopy, "#DC143C")
for(var/obj/machinery/photocopier/faxmachine/F in allfaxes)
if(F.department == destination)
F.receivefax(copyitem)
sendcooldown = cooldown_time
spawn(50)
visible_message("[src] beeps, \"Message transmitted successfully.\"")
+5 -5
View File
@@ -32,12 +32,12 @@
/obj/structure/filingcabinet/initialize()
for(var/obj/item/I in loc)
if(istype(I, /obj/item/weapon/paper) || istype(I, /obj/item/weapon/folder) || istype(I, /obj/item/weapon/photo))
if(istype(I, /obj/item/paper) || istype(I, /obj/item/folder) || istype(I, /obj/item/photo))
I.loc = src
/obj/structure/filingcabinet/attackby(obj/item/P as obj, mob/user as mob, params)
if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/folder) || istype(P, /obj/item/weapon/photo) || istype(P, /obj/item/weapon/paper_bundle) || istype(P, /obj/item/documents))
if(istype(P, /obj/item/paper) || istype(P, /obj/item/folder) || istype(P, /obj/item/photo) || istype(P, /obj/item/paper_bundle) || istype(P, /obj/item/documents))
to_chat(user, "<span class='notice'>You put [P] in [src].</span>")
user.drop_item()
P.loc = src
@@ -45,7 +45,7 @@
sleep(5)
icon_state = initial(icon_state)
updateUsrDialog()
else if(istype(P, /obj/item/weapon/wrench))
else if(istype(P, /obj/item/wrench))
playsound(loc, P.usesound, 50, 1)
anchored = !anchored
to_chat(user, "<span class='notice'>You [anchored ? "wrench" : "unwrench"] \the [src].</span>")
@@ -116,7 +116,7 @@
if(R.fields["name"] == G.fields["name"] || R.fields["id"] == G.fields["id"])
S = R
break
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src)
var/obj/item/paper/P = new /obj/item/paper(src)
P.info = "<CENTER><B>Security Record</B></CENTER><BR>"
P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]<BR>\nSex: [G.fields["sex"]]<BR>\nAge: [G.fields["age"]]<BR>\nFingerprint: [G.fields["fingerprint"]]<BR>\nPhysical Status: [G.fields["p_stat"]]<BR>\nMental Status: [G.fields["m_stat"]]<BR>"
P.info += "<BR>\n<CENTER><B>Security Data</B></CENTER><BR>\nCriminal Status: [S.fields["criminal"]]<BR>\n<BR>\nMinor Crimes: [S.fields["mi_crim"]]<BR>\nDetails: [S.fields["mi_crim_d"]]<BR>\n<BR>\nMajor Crimes: [S.fields["ma_crim"]]<BR>\nDetails: [S.fields["ma_crim_d"]]<BR>\n<BR>\nImportant Notes:<BR>\n\t[S.fields["notes"]]<BR>\n<BR>\n<CENTER><B>Comments/Log</B></CENTER><BR>"
@@ -150,7 +150,7 @@
if(R.fields["name"] == G.fields["name"] || R.fields["id"] == G.fields["id"])
M = R
break
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src)
var/obj/item/paper/P = new /obj/item/paper(src)
P.info = "<CENTER><B>Medical Record</B></CENTER><BR>"
P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]<BR>\nSex: [G.fields["sex"]]<BR>\nAge: [G.fields["age"]]<BR>\nFingerprint: [G.fields["fingerprint"]]<BR>\nPhysical Status: [G.fields["p_stat"]]<BR>\nMental Status: [G.fields["m_stat"]]<BR>"
P.info += "<BR>\n<CENTER><B>Medical Data</B></CENTER><BR>\nBlood Type: [M.fields["b_type"]]<BR>\nDNA: [M.fields["b_dna"]]<BR>\n<BR>\nMinor Disabilities: [M.fields["mi_dis"]]<BR>\nDetails: [M.fields["mi_dis_d"]]<BR>\n<BR>\nMajor Disabilities: [M.fields["ma_dis"]]<BR>\nDetails: [M.fields["ma_dis_d"]]<BR>\n<BR>\nAllergies: [M.fields["alg"]]<BR>\nDetails: [M.fields["alg_d"]]<BR>\n<BR>\nCurrent Diseases: [M.fields["cdi"]] (per disease info placed in log/comment section)<BR>\nDetails: [M.fields["cdi_d"]]<BR>\n<BR>\nImportant Notes:<BR>\n\t[M.fields["notes"]]<BR>\n<BR>\n<CENTER><B>Comments/Log</B></CENTER><BR>"
+24 -24
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/folder
/obj/item/folder
name = "folder"
desc = "A folder."
icon = 'icons/obj/bureaucracy.dmi'
@@ -7,35 +7,35 @@
pressure_resistance = 2
burn_state = FLAMMABLE
/obj/item/weapon/folder/blue
/obj/item/folder/blue
desc = "A blue folder."
icon_state = "folder_blue"
/obj/item/weapon/folder/red
/obj/item/folder/red
desc = "A red folder."
icon_state = "folder_red"
/obj/item/weapon/folder/yellow
/obj/item/folder/yellow
desc = "A yellow folder."
icon_state = "folder_yellow"
/obj/item/weapon/folder/white
/obj/item/folder/white
desc = "A white folder."
icon_state = "folder_white"
/obj/item/weapon/folder/update_icon()
/obj/item/folder/update_icon()
overlays.Cut()
if(contents.len)
overlays += "folder_paper"
return
/obj/item/weapon/folder/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo) || istype(W, /obj/item/weapon/paper_bundle) || istype(W, /obj/item/documents))
/obj/item/folder/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/paper) || istype(W, /obj/item/photo) || istype(W, /obj/item/paper_bundle) || istype(W, /obj/item/documents))
user.drop_item()
W.loc = src
to_chat(user, "<span class='notice'>You put the [W] into \the [src].</span>")
update_icon()
else if(istype(W, /obj/item/weapon/pen))
else if(istype(W, /obj/item/pen))
var/n_name = input(usr, "What would you like to label the folder?", "Folder Labelling", null) as text|null
if(!n_name)
return
@@ -45,14 +45,14 @@
name = "folder[(n_name ? text("- '[n_name]'") : null)]"
return
/obj/item/weapon/folder/attack_self(mob/user as mob)
/obj/item/folder/attack_self(mob/user as mob)
var/dat = "<title>[name]</title>"
for(var/obj/item/weapon/paper/P in src)
for(var/obj/item/paper/P in src)
dat += "<A href='?src=[UID()];remove=\ref[P]'>Remove</A> - <A href='?src=[UID()];read=\ref[P]'>[P.name]</A><BR>"
for(var/obj/item/weapon/photo/Ph in src)
for(var/obj/item/photo/Ph in src)
dat += "<A href='?src=[UID()];remove=\ref[Ph]'>Remove</A> - <A href='?src=[UID()];look=\ref[Ph]'>[Ph.name]</A><BR>"
for(var/obj/item/weapon/paper_bundle/Pa in src)
for(var/obj/item/paper_bundle/Pa in src)
dat += "<A href='?src=[UID()];remove=\ref[Pa]'>Remove</A> - <A href='?src=[UID()];look=\ref[Pa]'>[Pa.name]</A><BR>"
for(var/obj/item/documents/doc in src)
dat += "<A href='?src=[UID()];remove=\ref[doc]'>Remove</A> - <A href='?src=[UID()];look=\ref[doc]'>[doc.name]</A><BR>"
@@ -61,7 +61,7 @@
add_fingerprint(usr)
return
/obj/item/weapon/folder/Topic(href, href_list)
/obj/item/folder/Topic(href, href_list)
..()
if((usr.stat || usr.restrained()))
return
@@ -75,15 +75,15 @@
usr.put_in_hands(P)
else if(href_list["read"])
var/obj/item/weapon/paper/P = locate(href_list["read"])
var/obj/item/paper/P = locate(href_list["read"])
if(P && (P.loc == src) && istype(P))
P.show_content(usr)
else if(href_list["look"])
var/obj/item/weapon/photo/P = locate(href_list["look"])
var/obj/item/photo/P = locate(href_list["look"])
if(P && (P.loc == src) && istype(P))
P.show(usr)
else if(href_list["browse"])
var/obj/item/weapon/paper_bundle/P = locate(href_list["browse"])
var/obj/item/paper_bundle/P = locate(href_list["browse"])
if(P && (P.loc == src) && istype(P))
P.attack_self(usr)
onclose(usr, "[P.name]")
@@ -93,31 +93,31 @@
update_icon()
return
/obj/item/weapon/folder/documents
/obj/item/folder/documents
name = "folder- 'TOP SECRET'"
desc = "A folder stamped \"Top Secret - Property of Nanotrasen Corporation. Unauthorized distribution is punishable by death.\""
/obj/item/weapon/folder/documents/New()
/obj/item/folder/documents/New()
..()
new /obj/item/documents/nanotrasen(src)
update_icon()
/obj/item/weapon/folder/syndicate
/obj/item/folder/syndicate
name = "folder- 'TOP SECRET'"
desc = "A folder stamped \"Top Secret - Property of The Syndicate.\""
/obj/item/weapon/folder/syndicate/red
/obj/item/folder/syndicate/red
icon_state = "folder_sred"
/obj/item/weapon/folder/syndicate/red/New()
/obj/item/folder/syndicate/red/New()
..()
new /obj/item/documents/syndicate/red(src)
update_icon()
/obj/item/weapon/folder/syndicate/blue
/obj/item/folder/syndicate/blue
icon_state = "folder_sblue"
/obj/item/weapon/folder/syndicate/blue/New()
/obj/item/folder/syndicate/blue/New()
..()
new /obj/item/documents/syndicate/blue(src)
update_icon()
+27 -27
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/picture_frame
/obj/item/picture_frame
name = "picture frame"
desc = "Its patented design allows it to be folded larger or smaller to accommodate standard paper, photo, and poster, and canvas sizes."
icon = 'icons/obj/bureaucracy.dmi'
@@ -12,39 +12,39 @@
"poster22_legit", "poster23", "poster23_legit", "poster24", "poster24_legit",
"poster25", "poster27_legit", "poster28", "poster29")
/obj/item/weapon/picture_frame/New(loc, obj/item/weapon/D)
/obj/item/picture_frame/New(loc, obj/item/D)
..()
if(D)
insert(D)
update_icon()
/obj/item/weapon/picture_frame/Destroy()
/obj/item/picture_frame/Destroy()
if(displayed)
displayed = null
for(var/A in contents)
qdel(A)
return ..()
/obj/item/weapon/picture_frame/update_icon()
/obj/item/picture_frame/update_icon()
overlays.Cut()
if(displayed)
overlays |= getFlatIcon(displayed)
if(istype(displayed, /obj/item/weapon/photo))
if(istype(displayed, /obj/item/photo))
icon_state = "[icon_base]-photo"
else if(istype(displayed, /obj/structure/sign/poster))
icon_state = "[icon_base]-[(displayed.icon_state in wide_posters) ? "wposter" : "poster"]"
else if(istype(displayed, /obj/item/weapon/canvas))
else if(istype(displayed, /obj/item/canvas))
icon_state = "[icon_base]-canvas-[displayed.icon_state]"
else
icon_state = "[icon_base]-paper"
overlays |= icon_state
/obj/item/weapon/picture_frame/proc/insert(obj/D)
if(istype(D, /obj/item/weapon/poster))
var/obj/item/weapon/poster/P = D
/obj/item/picture_frame/proc/insert(obj/D)
if(istype(D, /obj/item/poster))
var/obj/item/poster/P = D
displayed = P.poster_structure
P.poster_structure = null
else
@@ -54,11 +54,11 @@
displayed.pixel_x = 0
displayed.pixel_y = 0
displayed.forceMove(src)
if(istype(D, /obj/item/weapon/poster))
if(istype(D, /obj/item/poster))
qdel(D)
/obj/item/weapon/picture_frame/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/weapon/screwdriver))
/obj/item/picture_frame/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/screwdriver))
if(displayed)
playsound(src, I.usesound, 100, 1)
user.visible_message("<span class=warning>[user] unfastens \the [displayed] out of \the [src].</span>", "<span class=warning>You unfasten \the [displayed] out of \the [src].</span>")
@@ -73,7 +73,7 @@
update_icon()
else
to_chat(user, "<span class=notice>There is nothing to remove from \the [src].</span>")
else if(istype(I, /obj/item/weapon/crowbar))
else if(istype(I, /obj/item/crowbar))
playsound(src, I.usesound, 100, 1)
user.visible_message("<span class=warning>[user] breaks down \the [src].</span>", "<span class=warning>You break down \the [src].</span>")
for(var/A in contents)
@@ -85,7 +85,7 @@
O.forceMove(user.loc)
displayed = null
qdel(src)
else if(istype(I, /obj/item/weapon/paper) || istype(I, /obj/item/weapon/photo) || istype(I, /obj/item/weapon/poster))
else if(istype(I, /obj/item/paper) || istype(I, /obj/item/photo) || istype(I, /obj/item/poster))
if(!displayed)
user.unEquip(I)
insert(I)
@@ -95,13 +95,13 @@
else
return ..()
/obj/item/weapon/picture_frame/afterattack(atom/target, mob/user, proximity_flag)
/obj/item/picture_frame/afterattack(atom/target, mob/user, proximity_flag)
if(proximity_flag && istype(target, /turf/simulated/wall))
place(target, user)
else
..()
/obj/item/weapon/picture_frame/proc/place(turf/T, mob/user)
/obj/item/picture_frame/proc/place(turf/T, mob/user)
var/stuff_on_wall = 0
for(var/obj/O in user.loc.contents) //Let's see if it already has a poster on it or too much stuff
if(istype(O, /obj/structure/sign))
@@ -139,12 +139,12 @@
playsound(PF.loc, usesound, 100, 1)
/obj/item/weapon/picture_frame/examine(mob/user, var/distance = -1, var/infix = "", var/suffix = "")
/obj/item/picture_frame/examine(mob/user, var/distance = -1, var/infix = "", var/suffix = "")
..()
if(displayed)
displayed.examine(user, distance, infix, suffix)
/obj/item/weapon/picture_frame/attack_self(mob/user)
/obj/item/picture_frame/attack_self(mob/user)
if(displayed)
if(istype(displayed, /obj/item))
var/obj/item/I = displayed
@@ -154,16 +154,16 @@
/obj/item/weapon/picture_frame/glass
/obj/item/picture_frame/glass
icon_base = "glass"
icon_state = "glass-poster"
materials = list(MAT_METAL = 25, MAT_GLASS = 75)
/obj/item/weapon/picture_frame/wooden
/obj/item/picture_frame/wooden
icon_base = "wood"
icon_state = "wood-poster"
/obj/item/weapon/picture_frame/wooden/New()
/obj/item/picture_frame/wooden/New()
..()
new /obj/item/stack/sheet/wood(src, 1)
@@ -173,8 +173,8 @@
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "glass-poster"
var/obj/item/weapon/picture_frame/frame
var/obj/item/weapon/explosive
var/obj/item/picture_frame/frame
var/obj/item/explosive
var/tilted = 0
var/tilt_transform = null
@@ -212,7 +212,7 @@
icon_state = initial(icon_state)
/obj/structure/sign/picture_frame/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/weapon/screwdriver))
if(istype(I, /obj/item/screwdriver))
playsound(src, I.usesound, 100, 1)
user.visible_message("<span class=warning>[user] begins to unfasten \the [src] from the wall.</span>", "<span class=warning>You begin to unfasten \the [src] from the wall.</span>")
if(do_after(user, 100 * I.toolspeed, target = src))
@@ -224,7 +224,7 @@
explosive.forceMove(user.loc)
explosive = null
qdel(src)
if(istype(I, /obj/item/weapon/grenade) || istype(I, /obj/item/weapon/grenade/plastic/c4))
if(istype(I, /obj/item/grenade) || istype(I, /obj/item/grenade/plastic/c4))
if(explosive)
to_chat(user, "<span class='warning'>There is already a device attached behind \the [src], remove it first.</span>")
return 1
@@ -264,8 +264,8 @@
..(severity)
/obj/structure/sign/picture_frame/proc/explode()
if(istype(explosive, /obj/item/weapon/grenade))
var/obj/item/weapon/grenade/G = explosive
if(istype(explosive, /obj/item/grenade))
var/obj/item/grenade/G = explosive
explosive = null
G.prime()
+4 -4
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/hand_labeler
/obj/item/hand_labeler
name = "hand labeler"
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "labeler0"
@@ -7,7 +7,7 @@
var/labels_left = 30
var/mode = 0 //off or on.
/obj/item/weapon/hand_labeler/afterattack(atom/A, mob/user as mob, proximity)
/obj/item/hand_labeler/afterattack(atom/A, mob/user as mob, proximity)
if(!proximity) return
if(!mode) //if it's off, give up.
return
@@ -29,7 +29,7 @@
if(issilicon(A))
to_chat(user, "<span class='notice'>You can't label cyborgs.</span>")
return
if(istype(A, /obj/item/weapon/reagent_containers/glass))
if(istype(A, /obj/item/reagent_containers/glass))
to_chat(user, "<span class='notice'>The label can't stick to the [A.name]. (Try using a pen)</span>")
return
@@ -37,7 +37,7 @@
"<span class='notice'>You label [A] as [label].</span>")
A.name = "[A.name] ([label])"
/obj/item/weapon/hand_labeler/attack_self(mob/user as mob)
/obj/item/hand_labeler/attack_self(mob/user as mob)
mode = !mode
icon_state = "labeler[mode]"
if(mode)
File diff suppressed because one or more lines are too long
+34 -34
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/paper_bundle
/obj/item/paper_bundle
name = "paper bundle"
gender = PLURAL
icon = 'icons/obj/bureaucracy.dmi'
@@ -16,13 +16,13 @@
var/screen = 0
/obj/item/weapon/paper_bundle/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
/obj/item/paper_bundle/attackby(obj/item/W as obj, mob/user as mob, params)
..()
var/obj/item/weapon/paper/P
if(istype(W, /obj/item/weapon/paper))
var/obj/item/paper/P
if(istype(W, /obj/item/paper))
P = W
if(istype(P, /obj/item/weapon/paper/carbon))
var/obj/item/weapon/paper/carbon/C = P
if(istype(P, /obj/item/paper/carbon))
var/obj/item/paper/carbon/C = P
if(!C.iscopy && !C.copied)
to_chat(user, "<span class='notice'>Take off the carbon copy first.</span>")
add_fingerprint(user)
@@ -38,16 +38,16 @@
var/mob/living/carbon/human/H = user
H.update_inv_l_hand()
H.update_inv_r_hand()
else if(istype(W, /obj/item/weapon/photo))
else if(istype(W, /obj/item/photo))
amount++
if(screen == 2)
screen = 1
to_chat(user, "<span class='notice'>You add [(W.name == "photo") ? "the photo" : W.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name].</span>")
user.unEquip(W)
W.loc = src
else if(istype(W, /obj/item/weapon/lighter))
else if(istype(W, /obj/item/lighter))
burnpaper(W, user)
else if(istype(W, /obj/item/weapon/paper_bundle))
else if(istype(W, /obj/item/paper_bundle))
user.unEquip(W)
for(var/obj/O in W)
O.loc = src
@@ -60,7 +60,7 @@
else
if(istype(W, /obj/item/stack/tape_roll))
return 0
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/toy/crayon))
if(istype(W, /obj/item/pen) || istype(W, /obj/item/toy/crayon))
usr << browse("", "window=[name]") //Closes the dialog
P = src[page]
P.attackby(W, user, params)
@@ -72,11 +72,11 @@
return
/obj/item/weapon/paper_bundle/proc/burnpaper(obj/item/weapon/lighter/P, mob/user)
/obj/item/paper_bundle/proc/burnpaper(obj/item/lighter/P, mob/user)
var/class = "<span class='warning'>"
if(P.lit && !user.restrained())
if(istype(P, /obj/item/weapon/lighter/zippo))
if(istype(P, /obj/item/lighter/zippo))
class = "<span class='rose'>"
user.visible_message("[class][user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!", \
@@ -96,34 +96,34 @@
else
to_chat(user, "<span class='warning'>You must hold \the [P] steady to burn \the [src].</span>")
/obj/item/weapon/paper_bundle/examine(mob/user)
/obj/item/paper_bundle/examine(mob/user)
if(..(user, 1))
src.show_content(user)
else
to_chat(user, "<span class='notice'>It is too far away.</span>")
/obj/item/weapon/paper_bundle/proc/show_content(mob/user as mob)
/obj/item/paper_bundle/proc/show_content(mob/user as mob)
var/dat
var/obj/item/weapon/W = src[page]
var/obj/item/W = src[page]
switch(screen)
if(0)
dat+= "<DIV STYLE='float:left; text-align:left; width:33.33333%'></DIV>"
dat+= "<DIV STYLE='float:left; text-align:center; width:33.33333%'><A href='?src=[UID()];remove=1'>Remove [(istype(W, /obj/item/weapon/paper)) ? "paper" : "photo"]</A></DIV>"
dat+= "<DIV STYLE='float:left; text-align:center; width:33.33333%'><A href='?src=[UID()];remove=1'>Remove [(istype(W, /obj/item/paper)) ? "paper" : "photo"]</A></DIV>"
dat+= "<DIV STYLE='float:left; text-align:right; width:33.33333%'><A href='?src=[UID()];next_page=1'>Next Page</A></DIV><BR><HR>"
if(1)
dat+= "<DIV STYLE='float:left; text-align:left; width:33.33333%'><A href='?src=[UID()];prev_page=1'>Previous Page</A></DIV>"
dat+= "<DIV STYLE='float:left; text-align:center; width:33.33333%'><A href='?src=[UID()];remove=1'>Remove [(istype(W, /obj/item/weapon/paper)) ? "paper" : "photo"]</A></DIV>"
dat+= "<DIV STYLE='float:left; text-align:center; width:33.33333%'><A href='?src=[UID()];remove=1'>Remove [(istype(W, /obj/item/paper)) ? "paper" : "photo"]</A></DIV>"
dat+= "<DIV STYLE='float:left; text-align:right; width:33.33333%'><A href='?src=[UID()];next_page=1'>Next Page</A></DIV><BR><HR>"
if(2)
dat+= "<DIV STYLE='float:left; text-align:left; width:33.33333%'><A href='?src=[UID()];prev_page=1'>Previous Page</A></DIV>"
dat+= "<DIV STYLE='float:left; text-align:center; width:33.33333%'><A href='?src=[UID()];remove=1'>Remove [(istype(W, /obj/item/weapon/paper)) ? "paper" : "photo"]</A></DIV><BR><HR>"
dat+= "<DIV STYLE='float:left; text-align:center; width:33.33333%'><A href='?src=[UID()];remove=1'>Remove [(istype(W, /obj/item/paper)) ? "paper" : "photo"]</A></DIV><BR><HR>"
dat+= "<DIV STYLE='float;left; text-align:right; with:33.33333%'></DIV>"
if(istype(src[page], /obj/item/weapon/paper))
var/obj/item/weapon/paper/P = W
if(istype(src[page], /obj/item/paper))
var/obj/item/paper/P = W
dat += P.show_content(usr, view = 0)
usr << browse(dat, "window=[name]")
else if(istype(src[page], /obj/item/weapon/photo))
var/obj/item/weapon/photo/P = W
else if(istype(src[page], /obj/item/photo))
var/obj/item/photo/P = W
usr << browse_rsc(P.img, "tmp_photo.png")
usr << browse(dat + "<html><head><title>[P.name]</title></head>" \
+ "<body style='overflow:hidden'>" \
@@ -131,15 +131,15 @@
+ "[P.scribble ? "<div><br> Written on the back:<br><i>[P.scribble]</i>" : ]"\
+ "</body></html>", "window=[name]")
/obj/item/weapon/paper_bundle/attack_self(mob/user as mob)
/obj/item/paper_bundle/attack_self(mob/user as mob)
src.show_content(user)
add_fingerprint(usr)
update_icon()
return
/obj/item/weapon/paper_bundle/Topic(href, href_list)
/obj/item/paper_bundle/Topic(href, href_list)
..()
if((src in usr.contents) || (istype(src.loc, /obj/item/weapon/folder) && (src.loc in usr.contents)))
if((src in usr.contents) || (istype(src.loc, /obj/item/folder) && (src.loc in usr.contents)))
usr.set_machine(src)
if(href_list["next_page"])
if(page == amount)
@@ -160,11 +160,11 @@
page--
playsound(src.loc, "pageturn", 50, 1)
if(href_list["remove"])
var/obj/item/weapon/W = src[page]
var/obj/item/W = src[page]
usr.put_in_hands(W)
to_chat(usr, "<span class='notice'>You remove the [W.name] from the bundle.</span>")
if(amount == 1)
var/obj/item/weapon/paper/P = src[1]
var/obj/item/paper/P = src[1]
usr.unEquip(src)
usr.put_in_hands(P)
qdel(src)
@@ -183,7 +183,7 @@
/obj/item/weapon/paper_bundle/verb/rename()
/obj/item/paper_bundle/verb/rename()
set name = "Rename bundle"
set category = "Object"
set src in usr
@@ -195,7 +195,7 @@
return
/obj/item/weapon/paper_bundle/verb/remove_all()
/obj/item/paper_bundle/verb/remove_all()
set name = "Loose bundle"
set category = "Object"
set src in usr
@@ -211,9 +211,9 @@
return
/obj/item/weapon/paper_bundle/update_icon()
/obj/item/paper_bundle/update_icon()
if(contents.len)
var/obj/item/weapon/paper/P = src[1]
var/obj/item/paper/P = src[1]
icon_state = P.icon_state
overlays = P.overlays
underlays = 0
@@ -221,7 +221,7 @@
var/photo
for(var/obj/O in src)
var/image/img = image('icons/obj/bureaucracy.dmi')
if(istype(O, /obj/item/weapon/paper))
if(istype(O, /obj/item/paper))
img.icon_state = O.icon_state
img.pixel_x -= min(1*i, 2)
img.pixel_y -= min(1*i, 2)
@@ -229,8 +229,8 @@
pixel_y = min( 1*i, 2)
underlays += img
i++
else if(istype(O, /obj/item/weapon/photo))
var/obj/item/weapon/photo/Ph = O
else if(istype(O, /obj/item/photo))
var/obj/item/photo/Ph = O
img = Ph.tiny
photo = 1
overlays += img
+15 -15
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/paper_bin
/obj/item/paper_bin
name = "paper bin"
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "paper_bin1"
@@ -12,21 +12,21 @@
var/amount = 30 //How much paper is in the bin.
var/list/papers = list() //List of papers put in the bin for reference.
/obj/item/weapon/paper_bin/fire_act()
/obj/item/paper_bin/fire_act()
if(!amount)
return
..()
/obj/item/weapon/paper_bin/Destroy()
/obj/item/paper_bin/Destroy()
QDEL_LIST(papers)
return ..()
/obj/item/weapon/paper_bin/burn()
/obj/item/paper_bin/burn()
amount = 0
extinguish()
update_icon()
/obj/item/weapon/paper_bin/MouseDrop(atom/over_object)
/obj/item/paper_bin/MouseDrop(atom/over_object)
var/mob/M = usr
if(M.restrained() || M.stat || !Adjacent(M))
return
@@ -48,7 +48,7 @@
add_fingerprint(M)
/obj/item/weapon/paper_bin/attack_hand(mob/user as mob)
/obj/item/paper_bin/attack_hand(mob/user as mob)
if(ishuman(user))
var/mob/living/carbon/human/H = user
var/obj/item/organ/external/temp = H.bodyparts_by_name["r_hand"]
@@ -62,12 +62,12 @@
if(amount==0)
update_icon()
var/obj/item/weapon/paper/P
var/obj/item/paper/P
if(papers.len > 0) //If there's any custom paper on the stack, use that instead of creating a new paper.
P = papers[papers.len]
papers.Remove(P)
else
P = new /obj/item/weapon/paper
P = new /obj/item/paper
if(holiday_master.holidays && holiday_master.holidays[APRIL_FOOLS])
if(prob(30))
P.info = "<font face=\"[P.crayonfont]\" color=\"red\"><b>HONK HONK HONK HONK HONK HONK HONK<br>HOOOOOOOOOOOOOOOOOOOOOONK<br>APRIL FOOLS</b></font>"
@@ -84,7 +84,7 @@
return
/obj/item/weapon/paper_bin/attackby(obj/item/weapon/paper/i as obj, mob/user as mob, params)
/obj/item/paper_bin/attackby(obj/item/paper/i as obj, mob/user as mob, params)
if(!istype(i))
return
@@ -95,7 +95,7 @@
amount++
/obj/item/weapon/paper_bin/examine(mob/user)
/obj/item/paper_bin/examine(mob/user)
if(..(user, 1))
if(amount)
to_chat(usr, "<span class='notice'>There " + (amount > 1 ? "are [amount] papers" : "is one paper") + " in the bin.</span>")
@@ -103,29 +103,29 @@
to_chat(usr, "<span class='notice'>There are no papers in the bin.</span>")
/obj/item/weapon/paper_bin/update_icon()
/obj/item/paper_bin/update_icon()
if(amount < 1)
icon_state = "paper_bin0"
else
icon_state = "paper_bin1"
/obj/item/weapon/paper_bin/carbon
/obj/item/paper_bin/carbon
name = "carbonless paper bin"
icon_state = "paper_bin2"
/obj/item/weapon/paper_bin/carbon/attack_hand(mob/user as mob)
/obj/item/paper_bin/carbon/attack_hand(mob/user as mob)
if(amount >= 1)
amount--
if(amount==0)
update_icon()
var/obj/item/weapon/paper/carbon/P
var/obj/item/paper/carbon/P
if(papers.len > 0) //If there's any custom paper on the stack, use that instead of creating a new paper.
P = papers[papers.len]
papers.Remove(P)
else
P = new /obj/item/weapon/paper/carbon
P = new /obj/item/paper/carbon
P.loc = user.loc
user.put_in_hands(P)
to_chat(user, "<span class='notice'>You take [P] out of the [src].</span>")
+17 -17
View File
@@ -1,5 +1,5 @@
// Ported from TG
/obj/item/weapon/paperplane
/obj/item/paperplane
name = "paper plane"
desc = "Paper, folded in the shape of a plane."
icon = 'icons/obj/bureaucracy.dmi'
@@ -12,9 +12,9 @@
burntime = 5
no_spin = TRUE
var/obj/item/weapon/paper/internal_paper
var/obj/item/paper/internal_paper
/obj/item/weapon/paperplane/New(loc, obj/item/weapon/paper/new_paper)
/obj/item/paperplane/New(loc, obj/item/paper/new_paper)
..()
pixel_y = rand(-8, 8)
pixel_x = rand(-9, 9)
@@ -24,14 +24,14 @@
color = new_paper.color
new_paper.forceMove(src)
else
internal_paper = new /obj/item/weapon/paper(src)
internal_paper = new /obj/item/paper(src)
update_icon()
/obj/item/weapon/paperplane/Destroy()
/obj/item/paperplane/Destroy()
QDEL_NULL(internal_paper)
return ..()
/obj/item/weapon/paperplane/suicide_act(mob/living/user)
/obj/item/paperplane/suicide_act(mob/living/user)
user.Stun(10)
user.visible_message("<span class='suicide'>[user] jams [name] in \his nose. It looks like \he's trying to commit suicide!</span>")
user.EyeBlurry(6)
@@ -41,18 +41,18 @@
sleep(10)
return BRUTELOSS
/obj/item/weapon/paperplane/update_icon()
/obj/item/paperplane/update_icon()
overlays.Cut()
var/list/stamped = internal_paper.stamped
if(!stamped)
stamped = new
else if(stamped)
for(var/S in stamped)
var/obj/item/weapon/stamp = S
var/obj/item/stamp = S
var/image/stampoverlay = image('icons/obj/bureaucracy.dmi', "paperplane_[initial(stamp.icon_state)]")
overlays += stampoverlay
/obj/item/weapon/paperplane/attack_self(mob/user) // Unfold the paper plane
/obj/item/paperplane/attack_self(mob/user) // Unfold the paper plane
to_chat(user, "<span class='notice'>You unfold [src].</span>")
if(internal_paper)
internal_paper.forceMove(get_turf(src))
@@ -60,14 +60,14 @@
internal_paper = null
qdel(src)
/obj/item/weapon/paperplane/attackby(obj/item/P, mob/living/carbon/human/user, params)
/obj/item/paperplane/attackby(obj/item/P, mob/living/carbon/human/user, params)
..()
if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon))
if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon))
to_chat(user, "<span class='notice'>You should unfold [src] before changing it.</span>")
return
else if(istype(P, /obj/item/weapon/stamp)) //we don't randomize stamps on a paperplane
else if(istype(P, /obj/item/stamp)) //we don't randomize stamps on a paperplane
internal_paper.attackby(P, user) //spoofed attack to update internal paper.
update_icon()
@@ -88,7 +88,7 @@
add_fingerprint(user)
/obj/item/weapon/paperplane/throw_impact(atom/hit_atom)
/obj/item/paperplane/throw_impact(atom/hit_atom)
if(..())
return
if(!ishuman(hit_atom))
@@ -109,21 +109,21 @@
E.take_damage(8, 1)
H.emote("scream")
/obj/item/weapon/paper/AltClick(mob/user, obj/item/I)
/obj/item/paper/AltClick(mob/user, obj/item/I)
var/mob/living/carbon/human/H = user
I = H.is_in_hands(/obj/item/weapon/paper)
I = H.is_in_hands(/obj/item/paper)
if(I)
ProcFoldPlane(H, I)
else
..()
/obj/item/weapon/paper/proc/ProcFoldPlane(mob/living/carbon/user, obj/item/I)
/obj/item/paper/proc/ProcFoldPlane(mob/living/carbon/user, obj/item/I)
if(istype(user))
if((!in_range(src, user)) || user.stat || user.restrained())
return
to_chat(user, "<span class='notice'>You fold [src] into the shape of a plane!</span>")
user.unEquip(src)
I = new /obj/item/weapon/paperplane(user, src)
I = new /obj/item/paperplane(user, src)
user.put_in_hands(I)
else
to_chat(user, "<span class='notice'>You lack the dexterity to fold [src].</span>")
+26 -26
View File
@@ -9,7 +9,7 @@
/*
* Pens
*/
/obj/item/weapon/pen
/obj/item/pen
desc = "It's a normal black ink pen."
name = "pen"
icon = 'icons/obj/bureaucracy.dmi'
@@ -24,33 +24,33 @@
var/colour = "black" //what colour the ink is!
pressure_resistance = 2
/obj/item/weapon/pen/suicide_act(mob/user)
/obj/item/pen/suicide_act(mob/user)
to_chat(viewers(user), "<span class='suicide'>[user] starts scribbling numbers over \himself with the [src.name]! It looks like \he's trying to commit sudoku.</span>")
return (BRUTELOSS)
/obj/item/weapon/pen/blue
/obj/item/pen/blue
name = "blue-ink pen"
desc = "It's a normal blue ink pen."
icon_state = "pen_blue"
colour = "blue"
/obj/item/weapon/pen/red
/obj/item/pen/red
name = "red-ink pen"
desc = "It's a normal red ink pen."
icon_state = "pen_red"
colour = "red"
/obj/item/weapon/pen/gray
/obj/item/pen/gray
name = "gray-ink pen"
desc = "It's a normal gray ink pen."
colour = "gray"
/obj/item/weapon/pen/invisible
/obj/item/pen/invisible
desc = "It's an invisble pen marker."
icon_state = "pen"
colour = "white"
/obj/item/weapon/pen/multi
/obj/item/pen/multi
name = "multicolor pen"
desc = "It's a cool looking pen. Lots of colors!"
@@ -64,21 +64,21 @@
var/pen_color_iconstate = "pencolor"
var/pen_color_shift = 3
/obj/item/weapon/pen/multi/New()
/obj/item/pen/multi/New()
..()
update_icon()
/obj/item/weapon/pen/multi/proc/select_colour(mob/user as mob)
/obj/item/pen/multi/proc/select_colour(mob/user as mob)
var/newcolour = input(user, "Which colour would you like to use?", name, colour) as null|anything in colour_choices
if(newcolour)
colour = newcolour
playsound(loc, 'sound/effects/pop.ogg', 50, 1)
update_icon()
/obj/item/weapon/pen/multi/attack_self(mob/living/user as mob)
/obj/item/pen/multi/attack_self(mob/living/user as mob)
select_colour(user)
/obj/item/weapon/pen/multi/update_icon()
/obj/item/pen/multi/update_icon()
overlays.Cut()
var/icon/o = new(icon, pen_color_iconstate)
var/list/c = colour_choices[colour]
@@ -87,24 +87,24 @@
o.Shift(SOUTH, pen_color_shift)
overlays += o
/obj/item/weapon/pen/fancy
/obj/item/pen/fancy
name = "fancy pen"
desc = "A fancy metal pen. It uses blue ink. An inscription on one side reads,\"L.L. - L.R.\""
icon_state = "fancypen"
/obj/item/weapon/pen/multi/gold
/obj/item/pen/multi/gold
name = "Gilded Pen"
desc = "A golden pen that is gilded with a meager amount of gold material. The word 'Nanotrasen' is etched on the clip of the pen."
icon_state = "goldpen"
pen_color_shift = 0
/obj/item/weapon/pen/multi/fountain
/obj/item/pen/multi/fountain
name = "Engraved Fountain Pen"
desc = "An expensive looking pen."
icon_state = "fountainpen"
pen_color_shift = 0
/obj/item/weapon/pen/attack(mob/living/M, mob/user)
/obj/item/pen/attack(mob/living/M, mob/user)
if(!istype(M))
return
@@ -114,7 +114,7 @@
// to_chat(M, "<span class='danger'>You feel a tiny prick!</span>")
. = 1
add_logs(user, M, "stabbed", object="[name]")
add_attack_logs(user, M, "Stabbed with [src]")
else
. = ..()
@@ -122,12 +122,12 @@
/*
* Sleepypens
*/
/obj/item/weapon/pen/sleepy
/obj/item/pen/sleepy
flags = OPENCONTAINER
origin_tech = "engineering=4;syndicate=2"
/obj/item/weapon/pen/sleepy/attack(mob/living/M, mob/user)
/obj/item/pen/sleepy/attack(mob/living/M, mob/user)
if(!istype(M)) return
if(..())
@@ -136,7 +136,7 @@
reagents.trans_to(M, 50)
/obj/item/weapon/pen/sleepy/New()
/obj/item/pen/sleepy/New()
create_reagents(100)
reagents.add_reagent("ketamine", 100)
..()
@@ -145,14 +145,14 @@
/*
* (Alan) Edaggers
*/
/obj/item/weapon/pen/edagger
/obj/item/pen/edagger
origin_tech = "combat=3;syndicate=1"
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") //these wont show up if the pen is off
var/on = 0
var/brightness_on = 2
light_color = LIGHT_COLOR_RED
/obj/item/weapon/pen/edagger/attack_self(mob/living/user)
/obj/item/pen/edagger/attack_self(mob/living/user)
if(on)
on = 0
force = initial(force)
@@ -179,7 +179,7 @@
set_light(brightness_on, 1)
update_icon()
/obj/item/weapon/pen/edagger/update_icon()
/obj/item/pen/edagger/update_icon()
if(on)
icon_state = "edagger"
item_state = "edagger"
@@ -187,13 +187,13 @@
icon_state = initial(icon_state) //looks like a normal pen when off.
item_state = initial(item_state)
/obj/item/proc/on_write(obj/item/weapon/paper/P, mob/user)
/obj/item/proc/on_write(obj/item/paper/P, mob/user)
return
/obj/item/weapon/pen/poison
/obj/item/pen/poison
var/uses_left = 3
/obj/item/weapon/pen/poison/on_write(obj/item/weapon/paper/P, mob/user)
/obj/item/pen/poison/on_write(obj/item/paper/P, mob/user)
if(P.contact_poison_volume)
to_chat(user, "<span class='warning'>[P] is already coated.</span>")
else if(uses_left)
@@ -201,7 +201,7 @@
P.contact_poison = "amanitin"
P.contact_poison_volume = 15
P.contact_poison_poisoner = user.name
add_logs(user, P, "used poison pen on")
add_attack_logs(user, P, "Poison pen'ed")
to_chat(user, "<span class='warning'>You apply the poison to [P].</span>")
else
to_chat(user, "<span class='warning'>[src] clicks. It seems to be depleted.</span>")
+25 -24
View File
@@ -21,7 +21,7 @@
/obj/machinery/photocopier/attack_ai(mob/user)
return attack_hand(user)
/obj/machinery/photocopier/attack_ghost(mob/user)
return attack_hand(user)
@@ -65,14 +65,14 @@
if(emag_cooldown > world.time)
return
if(istype(copyitem, /obj/item/weapon/paper))
if(istype(copyitem, /obj/item/paper))
copy(copyitem)
sleep(15)
else if(istype(copyitem, /obj/item/weapon/photo))
else if(istype(copyitem, /obj/item/photo))
photocopy(copyitem)
sleep(15)
else if(istype(copyitem, /obj/item/weapon/paper_bundle))
var/obj/item/weapon/paper_bundle/B = bundlecopy(copyitem)
else if(istype(copyitem, /obj/item/paper_bundle))
var/obj/item/paper_bundle/B = bundlecopy(copyitem)
sleep(15*B.amount)
else if(ass && ass.loc == src.loc)
copyass()
@@ -109,7 +109,7 @@
if(toner >= 5)
var/mob/living/silicon/tempAI = usr
var/obj/item/device/camera/siliconcam/camera = tempAI.aiCamera
var/obj/item/camera/siliconcam/camera = tempAI.aiCamera
if(!camera)
return
@@ -118,7 +118,7 @@
return
playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1)
var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (src.loc)
var/obj/item/photo/p = new /obj/item/photo (src.loc)
p.construct(selection)
if(p.desc == "")
p.desc += "Copied by [tempAI.name]"
@@ -129,7 +129,7 @@
updateUsrDialog()
/obj/machinery/photocopier/attackby(obj/item/O as obj, mob/user as mob, params)
if(istype(O, /obj/item/weapon/paper) || istype(O, /obj/item/weapon/photo) || istype(O, /obj/item/weapon/paper_bundle))
if(istype(O, /obj/item/paper) || istype(O, /obj/item/photo) || istype(O, /obj/item/paper_bundle))
if(!copyitem)
user.drop_item()
copyitem = O
@@ -139,22 +139,22 @@
updateUsrDialog()
else
to_chat(user, "<span class='notice'>There is already something in \the [src].</span>")
else if(istype(O, /obj/item/device/toner))
else if(istype(O, /obj/item/toner))
if(toner <= 10) //allow replacing when low toner is affecting the print darkness
user.drop_item()
to_chat(user, "<span class='notice'>You insert the toner cartridge into \the [src].</span>")
var/obj/item/device/toner/T = O
var/obj/item/toner/T = O
toner += T.toner_amount
qdel(O)
updateUsrDialog()
else
to_chat(user, "<span class='notice'>This cartridge is not yet ready for replacement! Use up the rest of the toner.</span>")
else if(istype(O, /obj/item/weapon/wrench))
else if(istype(O, /obj/item/wrench))
playsound(loc, O.usesound, 50, 1)
anchored = !anchored
to_chat(user, "<span class='notice'>You [anchored ? "wrench" : "unwrench"] \the [src].</span>")
else if(istype(O, /obj/item/weapon/grab)) //For ass-copying.
var/obj/item/weapon/grab/G = O
else if(istype(O, /obj/item/grab)) //For ass-copying.
var/obj/item/grab/G = O
if(ismob(G.affecting) && G.affecting != ass)
var/mob/GM = G.affecting
visible_message("<span class='warning'>[usr] drags [GM.name] onto the photocopier!</span>")
@@ -193,8 +193,8 @@
toner = 0
return
/obj/machinery/photocopier/proc/copy(var/obj/item/weapon/paper/copy)
var/obj/item/weapon/paper/c = new /obj/item/weapon/paper (loc)
/obj/machinery/photocopier/proc/copy(var/obj/item/paper/copy)
var/obj/item/paper/c = new /obj/item/paper (loc)
c.info = copy.info
c.name = copy.name // -- Doohl
c.fields = copy.fields
@@ -223,8 +223,8 @@
return c
/obj/machinery/photocopier/proc/photocopy(var/obj/item/weapon/photo/photocopy)
var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (loc)
/obj/machinery/photocopier/proc/photocopy(var/obj/item/photo/photocopy)
var/obj/item/photo/p = new /obj/item/photo (loc)
p.name = photocopy.name
p.icon = photocopy.icon
p.tiny = photocopy.tiny
@@ -269,7 +269,7 @@
temp_img = icon('icons/obj/butts.dmi', "xeno")
else
return
var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (loc)
var/obj/item/photo/p = new /obj/item/photo (loc)
p.desc = "You see [ass]'s ass on the photo."
p.pixel_x = rand(-10, 10)
p.pixel_y = rand(-10, 10)
@@ -286,17 +286,17 @@
return p
//If need_toner is 0, the copies will still be lightened when low on toner, however it will not be prevented from printing. TODO: Implement print queues for fax machines and get rid of need_toner
/obj/machinery/photocopier/proc/bundlecopy(var/obj/item/weapon/paper_bundle/bundle, var/need_toner=1)
var/obj/item/weapon/paper_bundle/p = new /obj/item/weapon/paper_bundle (src)
for(var/obj/item/weapon/W in bundle)
/obj/machinery/photocopier/proc/bundlecopy(var/obj/item/paper_bundle/bundle, var/need_toner=1)
var/obj/item/paper_bundle/p = new /obj/item/paper_bundle (src)
for(var/obj/item/W in bundle)
if(toner <= 0 && need_toner)
toner = 0
visible_message("<span class='notice'>A red light on \the [src] flashes, indicating that it is out of toner.</span>")
break
if(istype(W, /obj/item/weapon/paper))
if(istype(W, /obj/item/paper))
W = copy(W)
else if(istype(W, /obj/item/weapon/photo))
else if(istype(W, /obj/item/photo))
W = photocopy(W)
W.forceMove(p)
p.amount++
@@ -348,8 +348,9 @@
else
to_chat(user, "<span class='notice'>The photocopier's laser printing mechanism is already overloaded!</span>")
/obj/item/device/toner
/obj/item/toner
name = "toner cartridge"
icon = 'icons/obj/device.dmi'
icon_state = "tonercartridge"
var/toner_amount = 30
+46 -46
View File
@@ -9,7 +9,7 @@
/*******
* film *
*******/
/obj/item/device/camera_film
/obj/item/camera_film
name = "film cartridge"
icon = 'icons/obj/items.dmi'
desc = "A camera film cartridge. Insert it into a camera to reload it."
@@ -22,7 +22,7 @@
/********
* photo *
********/
/obj/item/weapon/photo
/obj/item/photo
name = "photo"
icon = 'icons/obj/items.dmi'
icon_state = "photo"
@@ -36,24 +36,24 @@
var/icon/tiny
var/photo_size = 3
/obj/item/weapon/photo/attack_self(mob/user as mob)
/obj/item/photo/attack_self(mob/user as mob)
user.examinate(src)
/obj/item/weapon/photo/attackby(obj/item/weapon/P as obj, mob/user as mob, params)
if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon))
/obj/item/photo/attackby(obj/item/P as obj, mob/user as mob, params)
if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon))
var/txt = sanitize(input(user, "What would you like to write on the back?", "Photo Writing", null) as text)
txt = copytext(txt, 1, 128)
if(loc == user && user.stat == 0)
scribble = txt
else if(istype(P, /obj/item/weapon/lighter))
else if(istype(P, /obj/item/lighter))
burnphoto(P, user)
..()
/obj/item/weapon/photo/proc/burnphoto(obj/item/weapon/lighter/P, mob/user)
/obj/item/photo/proc/burnphoto(obj/item/lighter/P, mob/user)
var/class = "<span class='warning'>"
if(P.lit && !user.restrained())
if(istype(P, /obj/item/weapon/lighter/zippo))
if(istype(P, /obj/item/lighter/zippo))
class = "<span class='rose'>"
user.visible_message("[class][user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!", \
@@ -73,13 +73,13 @@
else
to_chat(user, "<span class='warning'>You must hold \the [P] steady to burn \the [src].</span>")
/obj/item/weapon/photo/examine(mob/user)
/obj/item/photo/examine(mob/user)
if(..(user, 1) || isobserver(user))
show(user)
else
to_chat(user, "<span class='notice'>It is too far away.</span>")
/obj/item/weapon/photo/proc/show(mob/user as mob)
/obj/item/photo/proc/show(mob/user as mob)
usr << browse_rsc(img, "tmp_photo.png")
usr << browse("<html><head><title>[name]</title></head>" \
+ "<body style='overflow:hidden;margin:0;text-align:center'>" \
@@ -89,7 +89,7 @@
onclose(usr, "[name]")
return
/obj/item/weapon/photo/verb/rename()
/obj/item/photo/verb/rename()
set name = "Rename photo"
set category = "Object"
set src in usr
@@ -105,15 +105,15 @@
/**************
* photo album *
**************/
/obj/item/weapon/storage/photo_album
/obj/item/storage/photo_album
name = "Photo album"
icon = 'icons/obj/items.dmi'
icon_state = "album"
item_state = "briefcase"
can_hold = list(/obj/item/weapon/photo)
can_hold = list(/obj/item/photo)
burn_state = FLAMMABLE
/obj/item/weapon/storage/photo_album/MouseDrop(obj/over_object as obj)
/obj/item/storage/photo_album/MouseDrop(obj/over_object as obj)
if((istype(usr, /mob/living/carbon/human)))
var/mob/M = usr
@@ -140,7 +140,7 @@
/*********
* camera *
*********/
/obj/item/device/camera
/obj/item/camera
name = "camera"
icon = 'icons/obj/items.dmi'
desc = "A polaroid camera. 10 photos left."
@@ -159,9 +159,9 @@
var/see_ghosts = 0 //for the spoop of it
/obj/item/device/camera/spooky/CheckParts(list/parts_list)
/obj/item/camera/spooky/CheckParts(list/parts_list)
..()
var/obj/item/device/camera/C = locate(/obj/item/device/camera) in contents
var/obj/item/camera/C = locate(/obj/item/camera) in contents
if(C)
pictures_max = C.pictures_max
pictures_left = C.pictures_left
@@ -171,12 +171,12 @@
var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","shadow","ghostian2")
/obj/item/device/camera/spooky
/obj/item/camera/spooky
name = "camera obscura"
desc = "A polaroid camera, some say it can see ghosts!"
see_ghosts = 1
/obj/item/device/camera/verb/change_size()
/obj/item/camera/verb/change_size()
set name = "Set Photo Focus"
set category = "Object"
var/nsize = input("Photo Size","Pick a size of resulting photo.") as null|anything in list(1,3,5,7)
@@ -184,10 +184,10 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
size = nsize
to_chat(usr, "<span class='notice'>Camera will now take [size]x[size] photos.</span>")
/obj/item/device/camera/attack(mob/living/carbon/human/M as mob, mob/user as mob)
/obj/item/camera/attack(mob/living/carbon/human/M as mob, mob/user as mob)
return
/obj/item/device/camera/attack_self(mob/user as mob)
/obj/item/camera/attack_self(mob/user as mob)
on = !on
if(on)
src.icon_state = icon_on
@@ -196,8 +196,8 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
to_chat(user, "You switch the camera [on ? "on" : "off"].")
return
/obj/item/device/camera/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/device/camera_film))
/obj/item/camera/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/camera_film))
if(pictures_left)
to_chat(user, "<span class='notice'>[src] still has some film in it!</span>")
return
@@ -209,7 +209,7 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
..()
/obj/item/device/camera/proc/get_icon(list/turfs, turf/center, mob/user)
/obj/item/camera/proc/get_icon(list/turfs, turf/center, mob/user)
//Bigger icon base to capture those icons that were shifted to the next tile
//i.e. pretty much all wall-mounted machinery
@@ -281,7 +281,7 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
return res
/obj/item/device/camera/proc/get_mobs(turf/the_turf as turf)
/obj/item/camera/proc/get_mobs(turf/the_turf as turf)
var/mob_detail
for(var/mob/M in the_turf)
if(M.invisibility)
@@ -314,7 +314,7 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
mob_detail += "You can also see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]."
return mob_detail
/obj/item/device/camera/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
/obj/item/camera/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
if(!on || !pictures_left || ismob(target.loc)) return
captureimage(target, user, flag)
@@ -332,14 +332,14 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
icon_state = icon_on
on = 1
/obj/item/device/camera/proc/can_capture_turf(turf/T, mob/user)
/obj/item/camera/proc/can_capture_turf(turf/T, mob/user)
var/viewer = user
if(user.client) //To make shooting through security cameras possible
viewer = user.client.eye
var/can_see = (T in view(viewer)) //No x-ray vision cameras.
return can_see
/obj/item/device/camera/proc/captureimage(atom/target, mob/user, flag)
/obj/item/camera/proc/captureimage(atom/target, mob/user, flag)
var/x_c = target.x - (size-1)/2
var/y_c = target.y + (size-1)/2
var/z_c = target.z
@@ -358,7 +358,7 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
var/datum/picture/P = createpicture(target, user, turfs, mobs, flag, blueprints)
printpicture(user, P)
/obj/item/device/camera/proc/createpicture(atom/target, mob/user, list/turfs, mobs, flag)
/obj/item/camera/proc/createpicture(atom/target, mob/user, list/turfs, mobs, flag)
var/icon/photoimage = get_icon(turfs, target, user)
var/icon/small_img = icon(photoimage)
@@ -371,7 +371,7 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
pc.Blend(tiny_img,ICON_OVERLAY, 12, 19)
var/datum/picture/P = new()
if(istype(src,/obj/item/device/camera/digital))
if(istype(src,/obj/item/camera/digital))
P.fields["name"] = input(user,"Name photo:","photo")
P.name = P.fields["name"]//So the name is displayed on the print/delete list.
else
@@ -387,8 +387,8 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
return P
/obj/item/device/camera/proc/printpicture(mob/user, var/datum/picture/P)
var/obj/item/weapon/photo/Photo = new/obj/item/weapon/photo()
/obj/item/camera/proc/printpicture(mob/user, var/datum/picture/P)
var/obj/item/photo/Photo = new/obj/item/photo()
Photo.loc = user.loc
if(!user.get_inactive_hand())
user.put_in_inactive_hand(Photo)
@@ -398,7 +398,7 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
blueprints = 0
Photo.construct(P)
/obj/item/weapon/photo/proc/construct(var/datum/picture/P)
/obj/item/photo/proc/construct(var/datum/picture/P)
name = P.fields["name"]
icon = P.fields["icon"]
tiny = P.fields["tiny"]
@@ -408,8 +408,8 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
pixel_y = P.fields["pixel_y"]
photo_size = P.fields["size"]
/obj/item/weapon/photo/proc/copy()
var/obj/item/weapon/photo/p = new/obj/item/weapon/photo()
/obj/item/photo/proc/copy()
var/obj/item/photo/p = new/obj/item/photo()
p.icon = icon(icon, icon_state)
p.img = icon(img)
@@ -424,14 +424,14 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
/*****************
* digital camera *
******************/
/obj/item/device/camera/digital
/obj/item/camera/digital
name = "digital camera"
desc = "A digital camera. A small screen shows there is space for 10 photos left."
var/list/datum/picture/saved_pictures = list()
pictures_left = 30
var/max_storage = 10
/obj/item/device/camera/digital/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
/obj/item/camera/digital/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
if(!on || !pictures_left || ismob(target.loc)) return
captureimage(target, user, flag)
@@ -444,7 +444,7 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
icon_state = icon_on
on = 1
/obj/item/device/camera/digital/captureimage(atom/target, mob/user, flag)
/obj/item/camera/digital/captureimage(atom/target, mob/user, flag)
if(saved_pictures.len >= max_storage)
to_chat(user, "<span class='notice'>Maximum photo storage capacity reached.</span>")
return
@@ -467,7 +467,7 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
var/datum/picture/P = createpicture(target, user, turfs, mobs, flag)
saved_pictures += P
/obj/item/device/camera/digital/verb/print_picture()
/obj/item/camera/digital/verb/print_picture()
set name = "Print picture"
set category = "Object"
set src in usr
@@ -485,7 +485,7 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
printpicture(usr,P)
pictures_left --
/obj/item/device/camera/digital/verb/delete_picture()
/obj/item/camera/digital/verb/delete_picture()
set name = "Delete picture"
set category = "Object"
set src in usr
@@ -502,7 +502,7 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
*video camera *
***************/
/obj/item/device/videocam
/obj/item/videocam
name = "video camera"
icon = 'icons/obj/items.dmi'
desc = "video camera that can send live feed to the entertainment network."
@@ -517,7 +517,7 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
var/icon_off = "videocam"
var/canhear_range = 7
/obj/item/device/videocam/attack_self(mob/user)
/obj/item/videocam/attack_self(mob/user)
on = !on
if(camera)
if(on==0)
@@ -537,11 +537,11 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
camera.c_tag = user.name
to_chat(user, "You switch the camera [on ? "on" : "off"].")
/obj/item/device/videocam/examine(mob/user)
/obj/item/videocam/examine(mob/user)
if(..(user, 1))
to_chat(user, "This video camera can send live feeds to the entertainment network. It's [camera ? "" : "in"]active.")
/obj/item/device/videocam/hear_talk(mob/M as mob, msg)
/obj/item/videocam/hear_talk(mob/M as mob, msg)
if(camera && on)
if(get_dist(src, M) <= canhear_range)
talk_into(M, msg)
@@ -549,7 +549,7 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
if(T.watchers[M] == camera)
T.audible_message("<span class='game radio'><span class='name'>(Newscaster) [M]</span> says, '[msg]'", hearing_distance = 2)
/obj/item/device/videocam/hear_message(mob/M as mob, msg)
/obj/item/videocam/hear_message(mob/M as mob, msg)
if(camera && on)
for(var/obj/machinery/computer/security/telescreen/T in machines)
if(T.watchers[M] == camera)
@@ -558,7 +558,7 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s
///hauntings, like hallucinations but more spooky
/obj/item/device/camera/proc/handle_haunt(mob/user as mob)
/obj/item/camera/proc/handle_haunt(mob/user as mob)
var/list/creepyasssounds = list('sound/effects/ghost.ogg', 'sound/effects/ghost2.ogg', 'sound/effects/Heart Beat.ogg', 'sound/effects/screech.ogg',\
'sound/hallucinations/behind_you1.ogg', 'sound/hallucinations/behind_you2.ogg', 'sound/hallucinations/far_noise.ogg', 'sound/hallucinations/growl1.ogg', 'sound/hallucinations/growl2.ogg',\
'sound/hallucinations/growl3.ogg', 'sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg', 'sound/hallucinations/i_see_you1.ogg', 'sound/hallucinations/i_see_you2.ogg',\
+24 -24
View File
@@ -5,26 +5,26 @@
var/name = "image"
var/list/fields = list()
/obj/item/device/camera/siliconcam
/obj/item/camera/siliconcam
var/in_camera_mode = 0
var/photos_taken = 0
var/list/aipictures = list()
/obj/item/device/camera/siliconcam/ai_camera //camera AI can take pictures with
/obj/item/camera/siliconcam/ai_camera //camera AI can take pictures with
name = "AI photo camera"
/obj/item/device/camera/siliconcam/robot_camera //camera cyborgs can take pictures with
/obj/item/camera/siliconcam/robot_camera //camera cyborgs can take pictures with
name = "Cyborg photo camera"
/obj/item/device/camera/siliconcam/drone_camera //currently doesn't offer the verbs, thus cannot be used
/obj/item/camera/siliconcam/drone_camera //currently doesn't offer the verbs, thus cannot be used
name = "Drone photo camera"
/obj/item/device/camera/siliconcam/proc/injectaialbum(var/datum/picture/P, var/sufix = "") //stores image information to a list similar to that of the datacore
/obj/item/camera/siliconcam/proc/injectaialbum(var/datum/picture/P, var/sufix = "") //stores image information to a list similar to that of the datacore
photos_taken++
P.fields["name"] = "Image [photos_taken][sufix]"
aipictures += P
/obj/item/device/camera/siliconcam/proc/injectmasteralbum(var/datum/picture/P) //stores image information to a list similar to that of the datacore
/obj/item/camera/siliconcam/proc/injectmasteralbum(var/datum/picture/P) //stores image information to a list similar to that of the datacore
var/mob/living/silicon/robot/C = src.loc
if(C.connected_ai)
var/mob/A = P.fields["author"]
@@ -36,7 +36,7 @@
injectaialbum(P)
to_chat(usr, "<span class='unconscious'>Image recorded</span>")
/obj/item/device/camera/siliconcam/proc/selectpicture(obj/item/device/camera/siliconcam/cam)
/obj/item/camera/siliconcam/proc/selectpicture(obj/item/camera/siliconcam/cam)
if(!cam)
cam = getsource()
@@ -53,13 +53,13 @@
if(q.fields["name"] == find)
return q
/obj/item/device/camera/siliconcam/proc/viewpictures()
/obj/item/camera/siliconcam/proc/viewpictures()
var/datum/picture/selection = selectpicture()
if(!selection)
return
var/obj/item/weapon/photo/P = new/obj/item/weapon/photo()
var/obj/item/photo/P = new/obj/item/photo()
P.construct(selection)
P.show(usr)
to_chat(usr, P.desc)
@@ -67,7 +67,7 @@
// TG uses a special garbage collector.. qdel(P)
qdel(P) //so 10 thousand pictures items are not left in memory should an AI take them and then view them all.
/obj/item/device/camera/siliconcam/proc/deletepicture(obj/item/device/camera/siliconcam/cam)
/obj/item/camera/siliconcam/proc/deletepicture(obj/item/camera/siliconcam/cam)
var/datum/picture/selection = selectpicture(cam)
if(!selection)
@@ -76,32 +76,32 @@
cam.aipictures -= selection
to_chat(usr, "<span class='unconscious'>Image deleted</span>")
/obj/item/device/camera/siliconcam/ai_camera/can_capture_turf(turf/T, mob/user)
/obj/item/camera/siliconcam/ai_camera/can_capture_turf(turf/T, mob/user)
var/mob/living/silicon/ai = user
return ai.TurfAdjacent(T)
/obj/item/device/camera/siliconcam/proc/toggle_camera_mode()
/obj/item/camera/siliconcam/proc/toggle_camera_mode()
if(in_camera_mode)
camera_mode_off()
else
camera_mode_on()
/obj/item/device/camera/siliconcam/proc/camera_mode_off()
/obj/item/camera/siliconcam/proc/camera_mode_off()
src.in_camera_mode = 0
to_chat(usr, "<B>Camera Mode deactivated</B>")
/obj/item/device/camera/siliconcam/proc/camera_mode_on()
/obj/item/camera/siliconcam/proc/camera_mode_on()
src.in_camera_mode = 1
to_chat(usr, "<B>Camera Mode activated</B>")
/obj/item/device/camera/siliconcam/ai_camera/printpicture(mob/user, datum/picture/P)
/obj/item/camera/siliconcam/ai_camera/printpicture(mob/user, datum/picture/P)
injectaialbum(P)
to_chat(usr, "<span class='unconscious'>Image recorded</span>")
/obj/item/device/camera/siliconcam/robot_camera/printpicture(mob/user, datum/picture/P)
/obj/item/camera/siliconcam/robot_camera/printpicture(mob/user, datum/picture/P)
injectmasteralbum(P)
/obj/item/device/camera/siliconcam/ai_camera/verb/take_image()
/obj/item/camera/siliconcam/ai_camera/verb/take_image()
set category = "AI Commands"
set name = "Take Image"
set desc = "Takes an image"
@@ -109,7 +109,7 @@
toggle_camera_mode()
/obj/item/device/camera/siliconcam/ai_camera/verb/view_images()
/obj/item/camera/siliconcam/ai_camera/verb/view_images()
set category = "AI Commands"
set name = "View Images"
set desc = "View images"
@@ -117,7 +117,7 @@
viewpictures()
/obj/item/device/camera/siliconcam/ai_camera/verb/delete_images()
/obj/item/camera/siliconcam/ai_camera/verb/delete_images()
set category = "AI Commands"
set name = "Delete Image"
set desc = "Delete image"
@@ -125,7 +125,7 @@
deletepicture(src)
/obj/item/device/camera/siliconcam/robot_camera/verb/take_image()
/obj/item/camera/siliconcam/robot_camera/verb/take_image()
set category ="Robot Commands"
set name = "Take Image"
set desc = "Takes an image"
@@ -133,7 +133,7 @@
toggle_camera_mode()
/obj/item/device/camera/siliconcam/robot_camera/verb/view_images()
/obj/item/camera/siliconcam/robot_camera/verb/view_images()
set category ="Robot Commands"
set name = "View Images"
set desc = "View images"
@@ -141,7 +141,7 @@
viewpictures()
/obj/item/device/camera/siliconcam/robot_camera/verb/delete_images()
/obj/item/camera/siliconcam/robot_camera/verb/delete_images()
set category = "Robot Commands"
set name = "Delete Image"
set desc = "Delete a local image"
@@ -150,12 +150,12 @@
// Explicitly only allow deletion from the local camera
deletepicture(src)
obj/item/device/camera/siliconcam/proc/getsource()
obj/item/camera/siliconcam/proc/getsource()
if(istype(src.loc, /mob/living/silicon/ai))
return src
var/mob/living/silicon/robot/C = src.loc
var/obj/item/device/camera/siliconcam/Cinfo
var/obj/item/camera/siliconcam/Cinfo
if(C.connected_ai)
Cinfo = C.connected_ai.aiCamera
else
+19 -19
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/stamp
/obj/item/stamp
name = "\improper rubber stamp"
desc = "A rubber stamp for stamping important documents."
icon = 'icons/obj/bureaucracy.dmi'
@@ -13,85 +13,85 @@
pressure_resistance = 2
attack_verb = list("stamped")
/obj/item/weapon/stamp/suicide_act(mob/user)
/obj/item/stamp/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] stamps 'VOID' on \his forehead, then promptly falls over, dead.</span>")
return (OXYLOSS)
/obj/item/weapon/stamp/qm
/obj/item/stamp/qm
name = "Quartermaster's rubber stamp"
icon_state = "stamp-qm"
item_color = "qm"
/obj/item/weapon/stamp/law
/obj/item/stamp/law
name = "Law office's rubber stamp"
icon_state = "stamp-law"
item_color = "cargo"
/obj/item/weapon/stamp/captain
/obj/item/stamp/captain
name = "captain's rubber stamp"
icon_state = "stamp-cap"
item_color = "captain"
/obj/item/weapon/stamp/hop
/obj/item/stamp/hop
name = "head of personnel's rubber stamp"
icon_state = "stamp-hop"
item_color = "hop"
/obj/item/weapon/stamp/hos
/obj/item/stamp/hos
name = "head of security's rubber stamp"
icon_state = "stamp-hos"
item_color = "hosred"
/obj/item/weapon/stamp/ce
/obj/item/stamp/ce
name = "chief engineer's rubber stamp"
icon_state = "stamp-ce"
item_color = "chief"
/obj/item/weapon/stamp/rd
/obj/item/stamp/rd
name = "research director's rubber stamp"
icon_state = "stamp-rd"
item_color = "director"
/obj/item/weapon/stamp/cmo
/obj/item/stamp/cmo
name = "chief medical officer's rubber stamp"
icon_state = "stamp-cmo"
item_color = "medical"
/obj/item/weapon/stamp/granted
/obj/item/stamp/granted
name = "\improper GRANTED rubber stamp"
icon_state = "stamp-ok"
item_color = "qm"
/obj/item/weapon/stamp/denied
/obj/item/stamp/denied
name = "\improper DENIED rubber stamp"
icon_state = "stamp-deny"
item_color = "redcoat"
/obj/item/weapon/stamp/clown
/obj/item/stamp/clown
name = "clown's rubber stamp"
icon_state = "stamp-clown"
item_color = "clown"
/obj/item/weapon/stamp/centcom
/obj/item/stamp/centcom
name = "Nanotrasen Representative's rubber stamp"
icon_state = "stamp-cent"
item_color = "centcom"
/obj/item/weapon/stamp/syndicate
/obj/item/stamp/syndicate
name = "suspicious rubber stamp"
icon_state = "stamp-syndicate"
item_color = "syndicate"
// Syndicate stamp to forge documents.
/obj/item/weapon/stamp/chameleon/attack_self(mob/user as mob)
/obj/item/stamp/chameleon/attack_self(mob/user as mob)
var/list/stamp_types = typesof(/obj/item/weapon/stamp) - src.type // Get all stamp types except our own
var/list/stamp_types = typesof(/obj/item/stamp) - src.type // Get all stamp types except our own
var/list/stamps = list()
// Generate them into a list
for(var/stamp_type in stamp_types)
var/obj/item/weapon/stamp/S = new stamp_type
var/obj/item/stamp/S = new stamp_type
stamps[capitalize(S.name)] = S
var/list/show_stamps = list("EXIT" = null) + sortList(stamps) // the list that will be shown to the user to pick from
@@ -100,7 +100,7 @@
if(user && src in user.contents)
var/obj/item/weapon/stamp/chosen_stamp = stamps[capitalize(input_stamp)]
var/obj/item/stamp/chosen_stamp = stamps[capitalize(input_stamp)]
if(chosen_stamp)
name = chosen_stamp.name