mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-19 02:54:41 +01:00
merge conflict fix
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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>"
|
||||
|
||||
@@ -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.\"")
|
||||
|
||||
@@ -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>"
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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',\
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user