here we go again (#2456)

This commit is contained in:
LetterJay
2017-08-24 21:24:25 -05:00
committed by kevinz000
parent c7ed043fd5
commit 188193eb61
1107 changed files with 25420 additions and 25417 deletions
+15 -15
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/clipboard
/obj/item/clipboard
name = "clipboard"
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "clipboard"
@@ -7,21 +7,21 @@
w_class = WEIGHT_CLASS_SMALL
throw_speed = 3
throw_range = 7
var/obj/item/weapon/pen/haspen //The stored pen.
var/obj/item/weapon/paper/toppaper //The topmost piece of paper.
var/obj/item/pen/haspen //The stored pen.
var/obj/item/paper/toppaper //The topmost piece of paper.
slot_flags = SLOT_BELT
resistance_flags = FLAMMABLE
/obj/item/weapon/clipboard/Initialize()
/obj/item/clipboard/Initialize()
update_icon()
. = ..()
/obj/item/weapon/clipboard/Destroy()
/obj/item/clipboard/Destroy()
QDEL_NULL(haspen)
QDEL_NULL(toppaper) //let movable/Destroy handle the rest
return ..()
/obj/item/weapon/clipboard/update_icon()
/obj/item/clipboard/update_icon()
cut_overlays()
if(toppaper)
add_overlay(toppaper.icon_state)
@@ -31,8 +31,8 @@
add_overlay("clipboard_over")
/obj/item/weapon/clipboard/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/paper))
/obj/item/clipboard/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/paper))
if(!user.transferItemToLoc(W, src))
return
toppaper = W
@@ -43,7 +43,7 @@
update_icon()
/obj/item/weapon/clipboard/attack_self(mob/user)
/obj/item/clipboard/attack_self(mob/user)
var/dat = "<title>Clipboard</title>"
if(haspen)
dat += "<A href='?src=\ref[src];pen=1'>Remove Pen</A><BR><HR>"
@@ -52,7 +52,7 @@
//The topmost paper. You can't organise contents directly in byond, so this is what we're stuck with. -Pete
if(toppaper)
var/obj/item/weapon/paper/P = toppaper
var/obj/item/paper/P = toppaper
dat += "<A href='?src=\ref[src];write=\ref[P]'>Write</A> <A href='?src=\ref[src];remove=\ref[P]'>Remove</A> - <A href='?src=\ref[src];read=\ref[P]'>[P.name]</A><BR><HR>"
for(P in src)
@@ -64,7 +64,7 @@
add_fingerprint(usr)
/obj/item/weapon/clipboard/Topic(href, href_list)
/obj/item/clipboard/Topic(href, href_list)
..()
if(usr.stat || usr.restrained())
return
@@ -80,8 +80,8 @@
if(href_list["addpen"])
if(!haspen)
var/obj/item/held = usr.get_active_held_item()
if(istype(held, /obj/item/weapon/pen))
var/obj/item/weapon/pen/W = held
if(istype(held, /obj/item/pen))
var/obj/item/pen/W = held
if(!usr.transferItemToLoc(W, src))
return
haspen = W
@@ -100,14 +100,14 @@
usr.put_in_hands(P)
if(P == toppaper)
toppaper = null
var/obj/item/weapon/paper/newtop = locate(/obj/item/weapon/paper) in src
var/obj/item/paper/newtop = locate(/obj/item/paper) in src
if(newtop && (newtop != P))
toppaper = newtop
else
toppaper = null
if(href_list["read"])
var/obj/item/weapon/paper/P = locate(href_list["read"])
var/obj/item/paper/P = locate(href_list["read"])
if(istype(P) && P.loc == src)
usr.examinate(P)
+46 -46
View File
@@ -1,23 +1,23 @@
/* For employment contracts and infernal contracts */
/obj/item/weapon/paper/contract
/obj/item/paper/contract
throw_range = 3
throw_speed = 3
var/signed = FALSE
var/datum/mind/target
flags_1 = NOBLUDGEON_1
/obj/item/weapon/paper/contract/proc/update_text()
/obj/item/paper/contract/proc/update_text()
return
/obj/item/weapon/paper/contract/update_icon()
/obj/item/paper/contract/update_icon()
return
/obj/item/weapon/paper/contract/employment
/obj/item/paper/contract/employment
icon_state = "paper_words"
/obj/item/weapon/paper/contract/employment/New(atom/loc, mob/living/nOwner)
/obj/item/paper/contract/employment/New(atom/loc, mob/living/nOwner)
. = ..()
if(!nOwner || !nOwner.mind)
qdel(src)
@@ -26,12 +26,12 @@
update_text()
/obj/item/weapon/paper/contract/employment/update_text()
/obj/item/paper/contract/employment/update_text()
name = "paper- [target] employment contract"
info = "<center>Conditions of Employment</center><BR><BR><BR><BR>This Agreement is made and entered into as of the date of last signature below, by and between [target] (hereafter referred to as SLAVE), and Nanotrasen (hereafter referred to as the omnipresent and helpful watcher of humanity).<BR>WITNESSETH:<BR>WHEREAS, SLAVE is a natural born human or humanoid, posessing skills upon which he can aid the omnipresent and helpful watcher of humanity, who seeks employment in the omnipresent and helpful watcher of humanity.<BR>WHEREAS, the omnipresent and helpful watcher of humanity agrees to sporadically provide payment to SLAVE, in exchange for permanent servitude.<BR>NOW THEREFORE in consideration of the mutual covenants herein contained, and other good and valuable consideration, the parties hereto mutually agree as follows:<BR>In exchange for paltry payments, SLAVE agrees to work for the omnipresent and helpful watcher of humanity, for the remainder of his or her current and future lives.<BR>Further, SLAVE agrees to transfer ownership of his or her soul to the loyalty department of the omnipresent and helpful watcher of humanity.<BR>Should transfership of a soul not be possible, a lien shall be placed instead.<BR>Signed,<BR><i>[target]</i>"
/obj/item/weapon/paper/contract/employment/attack(mob/living/M, mob/living/carbon/human/user)
/obj/item/paper/contract/employment/attack(mob/living/M, mob/living/carbon/human/user)
var/deconvert = FALSE
if(M.mind == target && !M.owns_soul())
if(user.mind && (user.mind.assigned_role == "Lawyer"))
@@ -55,54 +55,54 @@
return ..()
/obj/item/weapon/paper/contract/infernal
/obj/item/paper/contract/infernal
var/contractType = 0
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/datum/mind/owner
var/datum/antagonist/devil/devil_datum
icon_state = "paper_onfire"
/obj/item/weapon/paper/contract/infernal/power
/obj/item/paper/contract/infernal/power
name = "paper- contract for infernal power"
contractType = CONTRACT_POWER
/obj/item/weapon/paper/contract/infernal/wealth
/obj/item/paper/contract/infernal/wealth
name = "paper- contract for unlimited wealth"
contractType = CONTRACT_WEALTH
/obj/item/weapon/paper/contract/infernal/prestige
/obj/item/paper/contract/infernal/prestige
name = "paper- contract for prestige"
contractType = CONTRACT_PRESTIGE
/obj/item/weapon/paper/contract/infernal/magic
/obj/item/paper/contract/infernal/magic
name = "paper- contract for magical power"
contractType = CONTRACT_MAGIC
/obj/item/weapon/paper/contract/infernal/revive
/obj/item/paper/contract/infernal/revive
name = "paper- contract of resurrection"
contractType = CONTRACT_REVIVE
var/cooldown = FALSE
/obj/item/weapon/paper/contract/infernal/knowledge
/obj/item/paper/contract/infernal/knowledge
name = "paper- contract for knowledge"
contractType = CONTRACT_KNOWLEDGE
/obj/item/weapon/paper/contract/infernal/friend
/obj/item/paper/contract/infernal/friend
name = "paper- contract for a friend"
contractType = CONTRACT_FRIEND
/obj/item/weapon/paper/contract/infernal/unwilling
/obj/item/paper/contract/infernal/unwilling
name = "paper- infernal contract"
contractType = CONTRACT_UNWILLING
/obj/item/weapon/paper/contract/infernal/New(atom/loc, mob/living/nTarget, datum/mind/nOwner)
/obj/item/paper/contract/infernal/New(atom/loc, mob/living/nTarget, datum/mind/nOwner)
..()
owner = nOwner
devil_datum = owner.has_antag_datum(ANTAG_DATUM_DEVIL)
target = nTarget
update_text()
/obj/item/weapon/paper/contract/infernal/suicide_act(mob/user)
/obj/item/paper/contract/infernal/suicide_act(mob/user)
if(signed && (user == target.current) && istype(user, /mob/living/carbon/human/))
var/mob/living/carbon/human/H = user
H.forcesay("OH GREAT INFERNO! I DEMAND YOU COLLECT YOUR BOUNTY IMMEDIATELY!")
@@ -113,77 +113,77 @@
else
..()
/obj/item/weapon/paper/contract/infernal/update_text()
/obj/item/paper/contract/infernal/update_text()
info = "This shouldn't be seen. Error DEVIL:6"
/obj/item/weapon/paper/contract/infernal/power/update_text(signature = "____________", blood = 0)
/obj/item/paper/contract/infernal/power/update_text(signature = "____________", blood = 0)
info = "<center><B>Contract for infernal power</B></center><BR><BR><BR>I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for power and physical strength. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.<BR><BR><BR>Signed, "
if(blood)
info += "<font face=\"Nyala\" color=#600A0A size=6><i>[signature]</i></font>"
else
info += "<i>[signature]</i>"
/obj/item/weapon/paper/contract/infernal/wealth/update_text(signature = "____________", blood = 0)
/obj/item/paper/contract/infernal/wealth/update_text(signature = "____________", blood = 0)
info = "<center><B>Contract for unlimited wealth</B></center><BR><BR><BR>I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for a pocket that never runs out of valuable resources. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.<BR><BR><BR>Signed, "
if(blood)
info += "<font face=\"Nyala\" color=#600A0A size=6><i>[signature]</i></font>"
else
info += "<i>[signature]</i>"
/obj/item/weapon/paper/contract/infernal/prestige/update_text(signature = "____________", blood = 0)
/obj/item/paper/contract/infernal/prestige/update_text(signature = "____________", blood = 0)
info = "<center><B>Contract for prestige</B></center><BR><BR><BR>I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for prestige and esteem among my peers. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.<BR><BR><BR>Signed, "
if(blood)
info += "<font face=\"Nyala\" color=#600A0A size=6><i>[signature]</i></font>"
else
info += "<i>[signature]</i>"
/obj/item/weapon/paper/contract/infernal/magic/update_text(signature = "____________", blood = 0)
/obj/item/paper/contract/infernal/magic/update_text(signature = "____________", blood = 0)
info = "<center><B>Contract for magic</B></center><BR><BR><BR>I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for arcane abilities beyond normal human ability. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.<BR><BR><BR>Signed, "
if(blood)
info += "<font face=\"Nyala\" color=#600A0A size=6><i>[signature]</i></font>"
else
info += "<i>[signature]</i>"
/obj/item/weapon/paper/contract/infernal/revive/update_text(signature = "____________", blood = 0)
/obj/item/paper/contract/infernal/revive/update_text(signature = "____________", blood = 0)
info = "<center><B>Contract for resurrection</B></center><BR><BR><BR>I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for resurrection and curing of all injuries. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.<BR><BR><BR>Signed, "
if(blood)
info += "<font face=\"Nyala\" color=#600A0A size=6><i>[signature]</i></font>"
else
info += "<i>[signature]</i>"
/obj/item/weapon/paper/contract/infernal/knowledge/update_text(signature = "____________", blood = 0)
/obj/item/paper/contract/infernal/knowledge/update_text(signature = "____________", blood = 0)
info = "<center><B>Contract for knowledge</B></center><BR><BR><BR>I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for boundless knowledge. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.<BR><BR><BR>Signed, "
if(blood)
info += "<font face=\"Nyala\" color=#600A0A size=6><i>[signature]</i></font>"
else
info += "<i>[signature]</i>"
/obj/item/weapon/paper/contract/infernal/friend/update_text(signature = "____________", blood = 0)
/obj/item/paper/contract/infernal/friend/update_text(signature = "____________", blood = 0)
info = "<center><B>Contract for a friend</B></center><BR><BR><BR>I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for a friend. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.<BR><BR><BR>Signed, "
if(blood)
info += "<font face=\"Nyala\" color=#600A0A size=6><i>[signature]</i></font>"
else
info += "<i>[signature]</i>"
/obj/item/weapon/paper/contract/infernal/unwilling/update_text(signature = "____________", blood = 0)
/obj/item/paper/contract/infernal/unwilling/update_text(signature = "____________", blood = 0)
info = "<center><B>Contract for slave</B></center><BR><BR><BR>I, [target], hereby offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename]. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.<BR><BR><BR>Signed, "
if(blood)
info += "<font face=\"Nyala\" color=#600A0A size=6><i>[signature]</i></font>"
else
info += "<i>[signature]</i>"
/obj/item/weapon/paper/contract/infernal/attackby(obj/item/weapon/P, mob/living/carbon/human/user, params)
/obj/item/paper/contract/infernal/attackby(obj/item/P, mob/living/carbon/human/user, params)
add_fingerprint(user)
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))
attempt_signature(user)
else if(istype(P, /obj/item/weapon/stamp))
else if(istype(P, /obj/item/stamp))
to_chat(user, "<span class='notice'>You stamp the paper with your rubber stamp, however the ink ignites as you release the stamp.</span>")
else if(P.is_hot())
user.visible_message("<span class='danger'>[user] brings [P] next to [src], but [src] does not catch fire!</span>", "<span class='danger'>The [src] refuses to ignite!</span>")
else
return ..()
/obj/item/weapon/paper/contract/infernal/attack(mob/M, mob/living/user)
/obj/item/paper/contract/infernal/attack(mob/M, mob/living/user)
add_fingerprint(user)
if(M == user && target == M.mind && M.mind.soulOwner != owner && attempt_signature(user, 1))
user.visible_message("<span class='danger'>[user] slices [user.p_their()] wrist with [src], and scrawls [user.p_their()] name in blood.</span>", "<span class='danger'>You slice your wrist open and scrawl your name in blood.</span>")
@@ -191,7 +191,7 @@
else
return ..()
/obj/item/weapon/paper/contract/infernal/proc/attempt_signature(mob/living/carbon/human/user, blood = 0)
/obj/item/paper/contract/infernal/proc/attempt_signature(mob/living/carbon/human/user, blood = 0)
if(!user.IsAdvancedToolUser() || !user.is_literate())
to_chat(user, "<span class='notice'>You don't know how to read or write.</span>")
return 0
@@ -222,7 +222,7 @@
/obj/item/weapon/paper/contract/infernal/revive/attack(mob/M, mob/living/user)
/obj/item/paper/contract/infernal/revive/attack(mob/M, mob/living/user)
if (target == M.mind && M.stat == DEAD && M.mind.soulOwner == M.mind)
if (cooldown)
to_chat(user, "<span class='notice'>Give [M] a chance to think through the contract, don't rush them.</span>")
@@ -249,11 +249,11 @@
else
..()
/obj/item/weapon/paper/contract/infernal/revive/proc/resetcooldown()
/obj/item/paper/contract/infernal/revive/proc/resetcooldown()
cooldown = FALSE
/obj/item/weapon/paper/contract/infernal/proc/fulfillContract(mob/living/carbon/human/user = target.current, blood = FALSE)
/obj/item/paper/contract/infernal/proc/fulfillContract(mob/living/carbon/human/user = target.current, blood = FALSE)
signed = TRUE
if(user.mind.soulOwner != user.mind) //They already sold their soul to someone else?
var/datum/antagonist/devil/ownerDevilInfo = user.mind.soulOwner.has_antag_datum(ANTAG_DATUM_DEVIL)
@@ -268,11 +268,11 @@
to_chat(user, "<span class='boldnotice'>This does NOT make you an antagonist if you were not already.</span>")
return TRUE
/obj/item/weapon/paper/contract/infernal/proc/signIncorrectly(mob/living/carbon/human/user = target.current, blood = FALSE)
/obj/item/paper/contract/infernal/proc/signIncorrectly(mob/living/carbon/human/user = target.current, blood = FALSE)
signed = 1
update_text("your name", blood)
/obj/item/weapon/paper/contract/infernal/power/fulfillContract(mob/living/carbon/human/user = target.current, blood = FALSE)
/obj/item/paper/contract/infernal/power/fulfillContract(mob/living/carbon/human/user = target.current, blood = FALSE)
if(!user.dna)
return -1
user.dna.add_mutation(HULK)
@@ -280,16 +280,16 @@
organ.Insert(user)
return ..()
/obj/item/weapon/paper/contract/infernal/wealth/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0)
/obj/item/paper/contract/infernal/wealth/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0)
if(!istype(user) || !user.mind) // How in the hell could that happen?
return -1
user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_wealth(null))
return ..()
/obj/item/weapon/paper/contract/infernal/prestige/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0)
/obj/item/paper/contract/infernal/prestige/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0)
//Basically turns the signer into the captain, and uploads an ion law making them the captain.
var/obj/item/worn = user.wear_id
var/obj/item/weapon/card/id/id = null
var/obj/item/card/id/id = null
if(worn)
id = worn.GetID()
if(id)
@@ -298,7 +298,7 @@
id.assignment = "Captain"
id.update_label()
else
id = new /obj/item/weapon/card/id/gold(user.loc)
id = new /obj/item/card/id/gold(user.loc)
id.registered_name = user.real_name
id.access = get_all_accesses()+get_all_centcom_access()
id.assignment = "Captain"
@@ -308,8 +308,8 @@
var/obj/item/device/pda/PDA = worn
PDA.id = id
id.loc = worn
else if(istype(worn, /obj/item/weapon/storage/wallet))
var/obj/item/weapon/storage/wallet/W = worn
else if(istype(worn, /obj/item/storage/wallet))
var/obj/item/storage/wallet/W = worn
W.front_id = id
id.loc = worn
worn.update_icon()
@@ -319,21 +319,21 @@
return ..()
/obj/item/weapon/paper/contract/infernal/magic/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0)
/obj/item/paper/contract/infernal/magic/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0)
if(!istype(user) || !user.mind)
return -1
user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/spellpacket/robeless(null))
user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/knock(null))
return ..()
/obj/item/weapon/paper/contract/infernal/knowledge/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0)
/obj/item/paper/contract/infernal/knowledge/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0)
if(!istype(user) || !user.mind)
return -1
user.dna.add_mutation(XRAY)
user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/view_range(null))
return ..()
/obj/item/weapon/paper/contract/infernal/friend/fulfillContract(mob/living/user = target.current, blood = 0)
/obj/item/paper/contract/infernal/friend/fulfillContract(mob/living/user = target.current, blood = 0)
if(!istype(user) || !user.mind)
return -1
user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_friend(null))
+6 -6
View File
@@ -35,7 +35,7 @@
. = ..()
if(mapload)
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/deconstruct(disassembled = TRUE)
@@ -46,7 +46,7 @@
qdel(src)
/obj/structure/filingcabinet/attackby(obj/item/P, mob/user, params)
if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/folder) || istype(P, /obj/item/weapon/photo) || 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/documents))
if(!user.drop_item())
return
to_chat(user, "<span class='notice'>You put [P] in [src].</span>")
@@ -55,7 +55,7 @@
sleep(5)
icon_state = initial(icon_state)
updateUsrDialog()
else if(istype(P, /obj/item/weapon/wrench))
else if(istype(P, /obj/item/wrench))
to_chat(user, "<span class='notice'>You begin to [anchored ? "unwrench" : "wrench"] [src].</span>")
playsound(loc, P.usesound, 50, 1)
if(do_after(user, 20, target = src))
@@ -124,7 +124,7 @@
var/datum/data/record/S = find_record("name", G.fields["name"], GLOB.data_core.security)
if(!S)
continue
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>"
@@ -156,7 +156,7 @@
var/datum/data/record/M = find_record("name", G.fields["name"], GLOB.data_core.medical)
if(!M)
continue
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["blood_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>"
@@ -205,7 +205,7 @@ GLOBAL_LIST_EMPTY(employmentCabinets)
/obj/structure/filingcabinet/employment/proc/addFile(mob/living/carbon/human/employee)
new /obj/item/weapon/paper/contract/employment(src, employee)
new /obj/item/paper/contract/employment(src, employee)
/obj/structure/filingcabinet/employment/attack_hand(mob/user)
if(!cooldown)
+19 -19
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/folder
/obj/item/folder
name = "folder"
desc = "A folder."
icon = 'icons/obj/bureaucracy.dmi'
@@ -7,42 +7,42 @@
pressure_resistance = 2
resistance_flags = 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()
cut_overlays()
if(contents.len)
add_overlay("folder_paper")
/obj/item/weapon/folder/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo) || istype(W, /obj/item/documents))
/obj/item/folder/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/paper) || istype(W, /obj/item/photo) || istype(W, /obj/item/documents))
if(!user.transferItemToLoc(W, src))
return
to_chat(user, "<span class='notice'>You put [W] into [src].</span>")
update_icon()
else if(istype(W, /obj/item/weapon/pen))
else if(istype(W, /obj/item/pen))
var/n_name = copytext(sanitize(input(user, "What would you like to label the folder?", "Folder Labelling", null) as text), 1, MAX_NAME_LEN)
if((in_range(src,user) && user.stat == CONSCIOUS))
name = "folder[(n_name ? " - '[n_name]'" : null)]"
/obj/item/weapon/folder/attack_self(mob/user)
/obj/item/folder/attack_self(mob/user)
var/dat = "<title>[name]</title>"
for(var/obj/item/I in src)
@@ -52,7 +52,7 @@
add_fingerprint(usr)
/obj/item/weapon/folder/Topic(href, href_list)
/obj/item/folder/Topic(href, href_list)
..()
if(usr.stat || usr.restrained())
return
@@ -74,37 +74,37 @@
attack_self(usr)
update_icon()
/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/Initialize()
/obj/item/folder/documents/Initialize()
. = ..()
new /obj/item/documents/nanotrasen(src)
update_icon()
/obj/item/weapon/folder/syndicate
/obj/item/folder/syndicate
icon_state = "folder_syndie"
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/Initialize()
/obj/item/folder/syndicate/red/Initialize()
. = ..()
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/Initialize()
/obj/item/folder/syndicate/blue/Initialize()
. = ..()
new /obj/item/documents/syndicate/blue(src)
update_icon()
/obj/item/weapon/folder/syndicate/mining/Initialize()
/obj/item/folder/syndicate/mining/Initialize()
. = ..()
new /obj/item/documents/syndicate/mining(src)
update_icon()
+9 -9
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/hand_labeler
/obj/item/hand_labeler
name = "hand labeler"
desc = "A combined label printer and applicator in a portable device, designed to be easy to operate and use."
icon = 'icons/obj/bureaucracy.dmi'
@@ -8,7 +8,7 @@
var/labels_left = 30
var/mode = 0
/obj/item/weapon/hand_labeler/suicide_act(mob/user)
/obj/item/hand_labeler/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is pointing [src] at [user.p_them()]self. [user.p_theyre(TRUE)] going to label [user.p_them()]self as a suicide!</span>")
labels_left = max(labels_left - 1, 0)
@@ -16,8 +16,8 @@
user.real_name += " (suicide)"
// no conflicts with their identification card
for(var/atom/A in user.GetAllContents())
if(istype(A, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/their_card = A
if(istype(A, /obj/item/card/id))
var/obj/item/card/id/their_card = A
// only renames their card, as opposed to tagging everyone's
if(their_card.registered_name != old_real_name)
@@ -35,7 +35,7 @@
return OXYLOSS
/obj/item/weapon/hand_labeler/afterattack(atom/A, mob/user,proximity)
/obj/item/hand_labeler/afterattack(atom/A, mob/user,proximity)
if(!proximity) return
if(!mode) //if it's off, give up.
return
@@ -59,7 +59,7 @@
labels_left--
/obj/item/weapon/hand_labeler/attack_self(mob/user)
/obj/item/hand_labeler/attack_self(mob/user)
if(!user.IsAdvancedToolUser())
to_chat(user, "<span class='warning'>You don't have the dexterity to use [src]!</span>")
return
@@ -77,17 +77,17 @@
else
to_chat(user, "<span class='notice'>You turn off [src].</span>")
/obj/item/weapon/hand_labeler/attackby(obj/item/I, mob/user, params)
/obj/item/hand_labeler/attackby(obj/item/I, mob/user, params)
..()
if(istype(I, /obj/item/hand_labeler_refill))
to_chat(user, "<span class='notice'>You insert [I] into [src].</span>")
qdel(I)
labels_left = initial(labels_left) //Yes, it's capped at its initial value
/obj/item/weapon/hand_labeler/borg
/obj/item/hand_labeler/borg
name = "cyborg-hand labeler"
/obj/item/weapon/hand_labeler/borg/afterattack(atom/A, mob/user, proximity)
/obj/item/hand_labeler/borg/afterattack(atom/A, mob/user, proximity)
..(A, user, proximity)
if(!iscyborg(user))
return
+31 -31
View File
@@ -5,7 +5,7 @@
* lipstick wiping is in code/game/objects/items/weapons/cosmetics.dm!
*/
/obj/item/weapon/paper
/obj/item/paper
name = "paper"
gender = NEUTER
icon = 'icons/obj/bureaucracy.dmi'
@@ -33,7 +33,7 @@
var/contact_poison_volume = 0
/obj/item/weapon/paper/pickup(user)
/obj/item/paper/pickup(user)
if(contact_poison && ishuman(user))
var/mob/living/carbon/human/H = user
var/obj/item/clothing/gloves/G = H.gloves
@@ -43,7 +43,7 @@
..()
/obj/item/weapon/paper/Initialize()
/obj/item/paper/Initialize()
. = ..()
pixel_y = rand(-8, 8)
pixel_x = rand(-9, 9)
@@ -51,7 +51,7 @@
updateinfolinks()
/obj/item/weapon/paper/update_icon()
/obj/item/paper/update_icon()
if(resistance_flags & ON_FIRE)
icon_state = "paper_onfire"
@@ -62,12 +62,12 @@
icon_state = "paper"
/obj/item/weapon/paper/examine(mob/user)
/obj/item/paper/examine(mob/user)
..()
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/paper)
assets.send(user)
if(istype(src, /obj/item/weapon/paper/talisman)) //Talismans cannot be read
if(istype(src, /obj/item/paper/talisman)) //Talismans cannot be read
if(!iscultist(user) && !user.stat)
to_chat(user, "<span class='danger'>There are indecipherable images scrawled on the paper in what looks to be... <i>blood?</i></span>")
return
@@ -82,7 +82,7 @@
to_chat(user, "<span class='notice'>It is too far away.</span>")
/obj/item/weapon/paper/verb/rename()
/obj/item/paper/verb/rename()
set name = "Rename paper"
set category = "Object"
set src in usr
@@ -101,11 +101,11 @@
name = "paper[(n_name ? text("- '[n_name]'") : null)]"
add_fingerprint(usr)
/obj/item/weapon/paper/suicide_act(mob/user)
/obj/item/paper/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] scratches a grid on [user.p_their()] wrist with the paper! It looks like [user.p_theyre()] trying to commit sudoku...</span>")
return (BRUTELOSS)
/obj/item/weapon/paper/attack_self(mob/user)
/obj/item/paper/attack_self(mob/user)
user.examinate(src)
if(rigged && (SSevents.holidays && SSevents.holidays[APRIL_FOOLS]))
if(spam_flag == 0)
@@ -115,7 +115,7 @@
spam_flag = 0
/obj/item/weapon/paper/attack_ai(mob/living/silicon/ai/user)
/obj/item/paper/attack_ai(mob/living/silicon/ai/user)
var/dist
if(istype(user) && user.current) //is AI
dist = get_dist(src, user.current)
@@ -129,7 +129,7 @@
onclose(usr, "[name]")
/obj/item/weapon/paper/proc/addtofield(id, text, links = 0)
/obj/item/paper/proc/addtofield(id, text, links = 0)
var/locid = 0
var/laststart = 1
var/textindex = 1
@@ -167,14 +167,14 @@
updateinfolinks()
/obj/item/weapon/paper/proc/updateinfolinks()
/obj/item/paper/proc/updateinfolinks()
info_links = info
for(var/i in 1 to min(fields, 15))
addtofield(i, "<font face=\"[PEN_FONT]\"><A href='?src=\ref[src];write=[i]'>write</A></font>", 1)
info_links = info_links + "<font face=\"[PEN_FONT]\"><A href='?src=\ref[src];write=end'>write</A></font>"
/obj/item/weapon/paper/proc/clearpaper()
/obj/item/paper/proc/clearpaper()
info = null
stamps = null
LAZYCLEARLIST(stamped)
@@ -183,7 +183,7 @@
update_icon()
/obj/item/weapon/paper/proc/parsepencode(t, obj/item/weapon/pen/P, mob/user, iscrayon = 0)
/obj/item/paper/proc/parsepencode(t, obj/item/pen/P, mob/user, iscrayon = 0)
if(length(t) < 1) //No input means nothing needs to be parsed
return
@@ -238,7 +238,7 @@
return t
/obj/item/weapon/paper/proc/reload_fields() // Useful if you made the paper programicly and want to include fields. Also runs updateinfolinks() for you.
/obj/item/paper/proc/reload_fields() // Useful if you made the paper programicly and want to include fields. Also runs updateinfolinks() for you.
fields = 0
var/laststart = 1
while(1)
@@ -250,7 +250,7 @@
updateinfolinks()
/obj/item/weapon/paper/proc/openhelp(mob/user)
/obj/item/paper/proc/openhelp(mob/user)
user << browse({"<HTML><HEAD><TITLE>Paper Help</TITLE></HEAD>
<BODY>
<b><center>Crayon&Pen commands</center></b><br>
@@ -272,7 +272,7 @@
</BODY></HTML>"}, "window=paper_help")
/obj/item/weapon/paper/Topic(href, href_list)
/obj/item/paper/Topic(href, href_list)
..()
if(usr.stat || usr.restrained())
return
@@ -287,12 +287,12 @@
return
var/obj/item/i = usr.get_active_held_item() //Check to see if he still got that darn pen, also check if he's using a crayon or pen.
var/iscrayon = 0
if(!istype(i, /obj/item/weapon/pen))
if(!istype(i, /obj/item/pen))
if(!istype(i, /obj/item/toy/crayon))
return
iscrayon = 1
if(!in_range(src, usr) && loc != usr && !istype(loc, /obj/item/weapon/clipboard) && loc.loc != usr && usr.get_active_held_item() != i) //Some check to see if he's allowed to write
if(!in_range(src, usr) && loc != usr && !istype(loc, /obj/item/clipboard) && loc.loc != usr && usr.get_active_held_item() != i) //Some check to see if he's allowed to write
return
t = parsepencode(t, i, usr, iscrayon) // Encode everything from pencode to html
@@ -307,7 +307,7 @@
update_icon()
/obj/item/weapon/paper/attackby(obj/item/weapon/P, mob/living/carbon/human/user, params)
/obj/item/paper/attackby(obj/item/P, mob/living/carbon/human/user, params)
..()
if(resistance_flags & ON_FIRE)
@@ -316,18 +316,18 @@
if(is_blind(user))
return
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))
if(user.is_literate())
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[info_links]<HR>[stamps]</BODY><div align='right'style='position:fixed;bottom:0;font-style:bold;'><A href='?src=\ref[src];help=1'>\[?\]</A></div></HTML>", "window=[name]")
return
else
to_chat(user, "<span class='notice'>You don't know how to read or write.</span>")
return
if(istype(src, /obj/item/weapon/paper/talisman/))
if(istype(src, /obj/item/paper/talisman/))
to_chat(user, "<span class='warning'>[P]'s ink fades away shortly after it is written.</span>")
return
else if(istype(P, /obj/item/weapon/stamp))
else if(istype(P, /obj/item/stamp))
if(!in_range(src, user))
return
@@ -361,14 +361,14 @@
add_fingerprint(user)
/obj/item/weapon/paper/fire_act(exposed_temperature, exposed_volume)
/obj/item/paper/fire_act(exposed_temperature, exposed_volume)
..()
if(!(resistance_flags & FIRE_PROOF))
icon_state = "paper_onfire"
info = "[stars(info)]"
/obj/item/weapon/paper/extinguish()
/obj/item/paper/extinguish()
..()
update_icon()
@@ -376,9 +376,9 @@
* Construction paper
*/
/obj/item/weapon/paper/construction
/obj/item/paper/construction
/obj/item/weapon/paper/construction/Initialize()
/obj/item/paper/construction/Initialize()
. = ..()
color = pick("FF0000", "#33cc33", "#ffb366", "#551A8B", "#ff80d5", "#4d94ff")
@@ -386,17 +386,17 @@
* Natural paper
*/
/obj/item/weapon/paper/natural/Initialize()
/obj/item/paper/natural/Initialize()
. = ..()
color = "#FFF5ED"
/obj/item/weapon/paper/crumpled
/obj/item/paper/crumpled
name = "paper scrap"
icon_state = "scrap"
slot_flags = null
/obj/item/weapon/paper/crumpled/update_icon()
/obj/item/paper/crumpled/update_icon()
return
/obj/item/weapon/paper/crumpled/bloody
/obj/item/paper/crumpled/bloody
icon_state = "scrap_bloodied"
+18 -18
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/papercutter
/obj/item/papercutter
name = "paper cutter"
desc = "Standard office equipment. Precisely cuts paper using a large blade."
icon = 'icons/obj/bureaucracy.dmi'
@@ -6,19 +6,19 @@
force = 5
throwforce = 5
w_class = WEIGHT_CLASS_NORMAL
var/obj/item/weapon/paper/storedpaper = null
var/obj/item/weapon/hatchet/cutterblade/storedcutter = null
var/obj/item/paper/storedpaper = null
var/obj/item/hatchet/cutterblade/storedcutter = null
var/cuttersecured = TRUE
pass_flags = PASSTABLE
/obj/item/weapon/papercutter/New()
/obj/item/papercutter/New()
..()
storedcutter = new /obj/item/weapon/hatchet/cutterblade(src)
storedcutter = new /obj/item/hatchet/cutterblade(src)
update_icon()
/obj/item/weapon/papercutter/suicide_act(mob/user)
/obj/item/papercutter/suicide_act(mob/user)
if(storedcutter)
user.visible_message("<span class='suicide'>[user] is beheading [user.p_them()]self with [src.name]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
if(iscarbon(user))
@@ -34,7 +34,7 @@
return (BRUTELOSS)
/obj/item/weapon/papercutter/update_icon()
/obj/item/papercutter/update_icon()
..()
cut_overlays()
icon_state = (storedcutter ? "[initial(icon_state)]-cutter" : "[initial(icon_state)]")
@@ -42,8 +42,8 @@
add_overlay("paper")
/obj/item/weapon/papercutter/attackby(obj/item/P, mob/user, params)
if(istype(P, /obj/item/weapon/paper) && !storedpaper)
/obj/item/papercutter/attackby(obj/item/P, mob/user, params)
if(istype(P, /obj/item/paper) && !storedpaper)
if(!user.drop_item())
return
playsound(loc, "pageturn", 60, 1)
@@ -52,7 +52,7 @@
storedpaper = P
update_icon()
return
if(istype(P, /obj/item/weapon/hatchet/cutterblade) && !storedcutter)
if(istype(P, /obj/item/hatchet/cutterblade) && !storedcutter)
if(!user.drop_item())
return
to_chat(user, "<span class='notice'>You replace [src]'s [P].</span>")
@@ -60,7 +60,7 @@
storedcutter = P
update_icon()
return
if(istype(P, /obj/item/weapon/screwdriver) && storedcutter)
if(istype(P, /obj/item/screwdriver) && storedcutter)
playsound(src, P.usesound, 50, 1)
to_chat(user, "<span class='notice'>[storedcutter] has been [cuttersecured ? "unsecured" : "secured"].</span>")
cuttersecured = !cuttersecured
@@ -68,7 +68,7 @@
..()
/obj/item/weapon/papercutter/attack_hand(mob/user)
/obj/item/papercutter/attack_hand(mob/user)
add_fingerprint(user)
if(!storedcutter)
to_chat(user, "<span class='notice'>The cutting blade is gone! You can't use [src] now.</span>")
@@ -85,12 +85,12 @@
to_chat(user, "<span class='notice'>You neatly cut [storedpaper].</span>")
storedpaper = null
qdel(storedpaper)
new /obj/item/weapon/paperslip(get_turf(src))
new /obj/item/weapon/paperslip(get_turf(src))
new /obj/item/paperslip(get_turf(src))
new /obj/item/paperslip(get_turf(src))
update_icon()
/obj/item/weapon/papercutter/MouseDrop(atom/over_object)
/obj/item/papercutter/MouseDrop(atom/over_object)
var/mob/M = usr
if(M.incapacitated() || !Adjacent(M))
return
@@ -104,7 +104,7 @@
add_fingerprint(M)
/obj/item/weapon/paperslip
/obj/item/paperslip
name = "paper slip"
desc = "A little slip of paper left over after a larger piece was cut. Whoa."
icon_state = "paperslip"
@@ -112,13 +112,13 @@
resistance_flags = FLAMMABLE
max_integrity = 50
/obj/item/weapon/paperslip/New()
/obj/item/paperslip/New()
..()
pixel_x = rand(-5, 5)
pixel_y = rand(-5, 5)
/obj/item/weapon/hatchet/cutterblade
/obj/item/hatchet/cutterblade
name = "paper cutter"
desc = "The blade of a paper cutter. Most likely removed for polishing or sharpening."
icon = 'icons/obj/bureaucracy.dmi'
File diff suppressed because one or more lines are too long
+3 -3
View File
@@ -6,15 +6,15 @@ diff a/code/modules/paperwork/paper_premade.dm b/code/modules/paperwork/paper_pr
-/////////// Centcom
+/////////// CentCom
/obj/item/weapon/paper/fluff/stations/centcom/disk_memo
/obj/item/paper/fluff/stations/centcom/disk_memo
name = "memo"
info = "GET DAT FUKKEN DISK"
/obj/item/weapon/paper/fluff/stations/centcom/broken_evac
/obj/item/paper/fluff/stations/centcom/broken_evac
- info = "Due to circumstances beyond our control, your Emergency Evacuation Shuttle is out of service.<br><br>We apologize for the inconvenience this may cause you.<br><br>Please enjoy the use of this complementary book.<br><br>Sincerely,<br>Centcom Operations Demolitions Examination Retribution Bugfixing Underlining Services"
+ info = "Due to circumstances beyond our control, your Emergency Evacuation Shuttle is out of service.<br><br>We apologize for the inconvenience this may cause you.<br><br>Please enjoy the use of this complementary book.<br><br>Sincerely,<br>CentCom Operations Demolitions Examination Retribution Bugfixing Underlining Services"
/obj/item/weapon/paper/fluff/stations/centcom/bulletin
/obj/item/paper/fluff/stations/centcom/bulletin
name = "paper- 'Official Bulletin'"
- info = "<BR>Centcom Security<BR>Port Division<BR>Official Bulletin<BR><BR>Inspector,<BR>There is an emergency shuttle arriving today.<BR><BR>Approval is restricted to Nanotrasen employees only. Deny all other entrants.<BR><BR>Centcom Port Commissioner"
+ info = "<BR>CentCom Security<BR>Port Division<BR>Official Bulletin<BR><BR>Inspector,<BR>There is an emergency shuttle arriving today.<BR><BR>Approval is restricted to Nanotrasen employees only. Deny all other entrants.<BR><BR>CentCom Port Commissioner"
+29 -29
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/paper_bin
/obj/item/paper_bin
name = "paper bin"
desc = "Contains all the paper you'll never need."
icon = 'icons/obj/bureaucracy.dmi'
@@ -11,44 +11,44 @@
throw_speed = 3
throw_range = 7
pressure_resistance = 8
var/papertype = /obj/item/weapon/paper
var/papertype = /obj/item/paper
var/total_paper = 30
var/list/papers = list()
var/obj/item/weapon/pen/bin_pen
var/obj/item/pen/bin_pen
/obj/item/weapon/paper_bin/Initialize(mapload)
/obj/item/paper_bin/Initialize(mapload)
. = ..()
if(!mapload)
return
var/obj/item/weapon/pen/P = locate(/obj/item/weapon/pen) in src.loc
var/obj/item/pen/P = locate(/obj/item/pen) in src.loc
if(P && !bin_pen)
P.loc = src
bin_pen = P
update_icon()
var/static/warned = FALSE
if(P.type == /obj/item/weapon/pen && !warned)
if(P.type == /obj/item/pen && !warned)
warning("one or more paperbins ate a pen duing initialize()")
warned = TRUE
/obj/item/weapon/paper_bin/fire_act(exposed_temperature, exposed_volume)
/obj/item/paper_bin/fire_act(exposed_temperature, exposed_volume)
if(!total_paper)
return
..()
/obj/item/weapon/paper_bin/Destroy()
/obj/item/paper_bin/Destroy()
if(papers)
for(var/i in papers)
qdel(i)
papers = null
. = ..()
/obj/item/weapon/paper_bin/fire_act(exposed_temperature, exposed_volume)
/obj/item/paper_bin/fire_act(exposed_temperature, exposed_volume)
if(total_paper)
total_paper = 0
update_icon()
..()
/obj/item/weapon/paper_bin/MouseDrop(atom/over_object)
/obj/item/paper_bin/MouseDrop(atom/over_object)
var/mob/living/M = usr
if(!istype(M) || M.incapacitated() || !Adjacent(M))
return
@@ -63,16 +63,16 @@
add_fingerprint(M)
/obj/item/weapon/paper_bin/attack_paw(mob/user)
/obj/item/paper_bin/attack_paw(mob/user)
return attack_hand(user)
/obj/item/weapon/paper_bin/attack_hand(mob/user)
/obj/item/paper_bin/attack_hand(mob/user)
if(user.lying)
return
user.changeNext_move(CLICK_CD_MELEE)
if(bin_pen)
var/obj/item/weapon/pen/P = bin_pen
var/obj/item/pen/P = bin_pen
P.loc = user.loc
user.put_in_hands(P)
to_chat(user, "<span class='notice'>You take [P] out of \the [src].</span>")
@@ -82,7 +82,7 @@
total_paper--
update_icon()
// If there's any custom paper on the stack, use that instead of creating a new paper.
var/obj/item/weapon/paper/P
var/obj/item/paper/P
if(papers.len > 0)
P = papers[papers.len]
papers.Remove(P)
@@ -103,17 +103,17 @@
add_fingerprint(user)
/obj/item/weapon/paper_bin/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/paper))
var/obj/item/weapon/paper/P = I
/obj/item/paper_bin/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/paper))
var/obj/item/paper/P = I
if(!user.transferItemToLoc(P, src))
return
to_chat(user, "<span class='notice'>You put [P] in [src].</span>")
papers.Add(P)
total_paper++
update_icon()
else if(istype(I, /obj/item/weapon/pen) && !bin_pen)
var/obj/item/weapon/pen/P = I
else if(istype(I, /obj/item/pen) && !bin_pen)
var/obj/item/pen/P = I
if(!user.transferItemToLoc(P, src))
return
to_chat(user, "<span class='notice'>You put [P] in [src].</span>")
@@ -122,7 +122,7 @@
else
return ..()
/obj/item/weapon/paper_bin/examine(mob/user)
/obj/item/paper_bin/examine(mob/user)
..()
if(total_paper)
to_chat(user, "It contains " + (total_paper > 1 ? "[total_paper] papers" : " one paper")+".")
@@ -130,7 +130,7 @@
to_chat(user, "It doesn't contain anything.")
/obj/item/weapon/paper_bin/update_icon()
/obj/item/paper_bin/update_icon()
if(total_paper < 1)
icon_state = "paper_bin0"
else
@@ -139,31 +139,31 @@
if(bin_pen)
add_overlay(mutable_appearance(bin_pen.icon, bin_pen.icon_state))
/obj/item/weapon/paper_bin/construction
/obj/item/paper_bin/construction
name = "construction paper bin"
desc = "Contains all the paper you'll never need, IN COLOR!"
icon_state = "paper_binc"
papertype = /obj/item/weapon/paper/construction
papertype = /obj/item/paper/construction
/obj/item/weapon/paper_bin/bundlenatural
/obj/item/paper_bin/bundlenatural
name = "natural paper bundle"
desc = "A bundle of paper created using traditional methods."
icon_state = "paper_bundle"
papertype = /obj/item/weapon/paper/natural
papertype = /obj/item/paper/natural
resistance_flags = FLAMMABLE
/obj/item/weapon/paper_bin/bundlenatural/attack_hand(mob/user)
/obj/item/paper_bin/bundlenatural/attack_hand(mob/user)
..()
if(total_paper < 1)
qdel(src)
/obj/item/weapon/paper_bin/bundlenatural/fire_act(exposed_temperature, exposed_volume)
/obj/item/paper_bin/bundlenatural/fire_act(exposed_temperature, exposed_volume)
qdel(src)
/obj/item/weapon/paper_bin/bundlenatural/attackby(obj/item/weapon/W, mob/user)
/obj/item/paper_bin/bundlenatural/attackby(obj/item/W, mob/user)
if(W.is_sharp())
to_chat(user, "<span class='notice'>You snip \the [src], spilling paper everywhere.</span>")
var/turf/T = get_turf(src.loc)
while(total_paper > 0)
total_paper--
var/obj/item/weapon/paper/P
var/obj/item/paper/P
if(papers.len > 0)
P = papers[papers.len]
papers -= P
+15 -15
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/paperplane
/obj/item/paperplane
name = "paper plane"
desc = "Paper, folded in the shape of a plane"
icon = 'icons/obj/bureaucracy.dmi'
@@ -10,9 +10,9 @@
resistance_flags = FLAMMABLE
max_integrity = 50
var/obj/item/weapon/paper/internalPaper
var/obj/item/paper/internalPaper
/obj/item/weapon/paperplane/Initialize(mapload, obj/item/weapon/paper/newPaper)
/obj/item/paperplane/Initialize(mapload, obj/item/paper/newPaper)
. = ..()
pixel_y = rand(-8, 8)
pixel_x = rand(-9, 9)
@@ -22,16 +22,16 @@
color = newPaper.color
newPaper.forceMove(src)
else
internalPaper = new /obj/item/weapon/paper(src)
internalPaper = new /obj/item/paper(src)
update_icon()
/obj/item/weapon/paperplane/Destroy()
/obj/item/paperplane/Destroy()
if(internalPaper)
qdel(internalPaper)
internalPaper = null
return ..()
/obj/item/weapon/paperplane/suicide_act(mob/living/user)
/obj/item/paperplane/suicide_act(mob/living/user)
user.Stun(200)
user.visible_message("<span class='suicide'>[user] jams the [src] in [user.p_their()] nose. It looks like [user.p_theyre()] trying to commit suicide!</span>")
user.adjust_blurriness(6)
@@ -39,14 +39,14 @@
sleep(10)
return (BRUTELOSS)
/obj/item/weapon/paperplane/update_icon()
/obj/item/paperplane/update_icon()
cut_overlays()
var/list/stamped = internalPaper.stamped
if(stamped)
for(var/S in stamped)
add_overlay("paperplane_[S]")
/obj/item/weapon/paperplane/attack_self(mob/user)
/obj/item/paperplane/attack_self(mob/user)
to_chat(user, "<span class='notice'>You unfold [src].</span>")
var/atom/movable/internal_paper_tmp = internalPaper
internal_paper_tmp.forceMove(loc)
@@ -54,13 +54,13 @@
qdel(src)
user.put_in_hands(internal_paper_tmp)
/obj/item/weapon/paperplane/attackby(obj/item/weapon/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
internalPaper.attackby(P, user) //spoofed attack to update internal paper.
update_icon()
@@ -82,10 +82,10 @@
add_fingerprint(user)
/obj/item/weapon/paperplane/throw_at(atom/target, range, speed, mob/thrower, spin=FALSE, diagonals_first = FALSE, datum/callback/callback)
/obj/item/paperplane/throw_at(atom/target, range, speed, mob/thrower, spin=FALSE, diagonals_first = FALSE, datum/callback/callback)
. = ..(target, range, speed, thrower, FALSE, diagonals_first, callback)
/obj/item/weapon/paperplane/throw_impact(atom/hit_atom)
/obj/item/paperplane/throw_impact(atom/hit_atom)
if(..() || !ishuman(hit_atom))//if the plane is caught or it hits a nonhuman
return
var/mob/living/carbon/human/H = hit_atom
@@ -98,13 +98,13 @@
H.Knockdown(40)
H.emote("scream")
/obj/item/weapon/paper/AltClick(mob/living/carbon/user, obj/item/I)
/obj/item/paper/AltClick(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.temporarilyRemoveItemFromInventory(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 \the [src]. </span>")
+20 -20
View File
@@ -10,7 +10,7 @@
/*
* Pens
*/
/obj/item/weapon/pen
/obj/item/pen
desc = "It's a normal black ink pen."
name = "pen"
icon = 'icons/obj/bureaucracy.dmi'
@@ -28,31 +28,31 @@
var/degrees = 0
var/font = PEN_FONT
/obj/item/weapon/pen/suicide_act(mob/user)
/obj/item/pen/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is scribbling numbers all over [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit sudoku...</span>")
return(BRUTELOSS)
/obj/item/weapon/pen/blue
/obj/item/pen/blue
desc = "It's a normal blue ink pen."
icon_state = "pen_blue"
colour = "blue"
/obj/item/weapon/pen/red
/obj/item/pen/red
desc = "It's a normal red ink pen."
icon_state = "pen_red"
colour = "red"
/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/fourcolor
/obj/item/pen/fourcolor
desc = "It's a fancy four-color ink pen, set to black."
name = "four-color pen"
colour = "black"
/obj/item/weapon/pen/fourcolor/attack_self(mob/living/carbon/user)
/obj/item/pen/fourcolor/attack_self(mob/living/carbon/user)
switch(colour)
if("black")
colour = "red"
@@ -65,13 +65,13 @@
to_chat(user, "<span class='notice'>\The [src] will now write in [colour].</span>")
desc = "It's a fancy four-color ink pen, set to [colour]."
/obj/item/weapon/pen/fountain
/obj/item/pen/fountain
name = "fountain pen"
desc = "It's a common fountain pen, with a faux wood body."
icon_state = "pen-fountain"
font = FOUNTAIN_PEN_FONT
/obj/item/weapon/pen/fountain/captain
/obj/item/pen/fountain/captain
name = "captain's fountain pen"
desc = "It's an expensive Oak fountain pen. The nib is quite sharp."
icon_state = "pen-fountain-o"
@@ -89,12 +89,12 @@
"Command Blue" = "pen-fountain-cb"
)
/obj/item/weapon/pen/fountain/captain/reskin_obj(mob/M)
/obj/item/pen/fountain/captain/reskin_obj(mob/M)
..()
if(current_skin)
desc = "It's an expensive [current_skin] fountain pen. The nib is quite sharp."
/obj/item/weapon/pen/attack_self(mob/living/carbon/user)
/obj/item/pen/attack_self(mob/living/carbon/user)
var/deg = input(user, "What angle would you like to rotate the pen head to? (1-360)", "Rotate Pen Head") as null|num
if(deg && (deg > 0 && deg <= 360))
degrees = deg
@@ -105,14 +105,14 @@
hidden_uplink.interact(user)
/obj/item/weapon/pen/attackby(obj/item/I, mob/user, params)
/obj/item/pen/attackby(obj/item/I, mob/user, params)
if(hidden_uplink)
return hidden_uplink.attackby(I, user, params)
else
return ..()
/obj/item/weapon/pen/attack(mob/living/M, mob/user,stealth)
/obj/item/pen/attack(mob/living/M, mob/user,stealth)
if(!istype(M))
return
@@ -128,7 +128,7 @@
else
. = ..()
/obj/item/weapon/pen/afterattack(obj/O, mob/living/user, proximity)
/obj/item/pen/afterattack(obj/O, mob/living/user, proximity)
//Changing Name/Description of items. Only works if they have the 'unique_rename' var set
if(isobj(O) && proximity)
if(O.unique_rename)
@@ -166,12 +166,12 @@
/*
* Sleepypens
*/
/obj/item/weapon/pen/sleepy
/obj/item/pen/sleepy
origin_tech = "engineering=4;syndicate=2"
container_type = OPENCONTAINER_1
/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
@@ -181,7 +181,7 @@
reagents.trans_to(M, reagents.total_volume)
/obj/item/weapon/pen/sleepy/New()
/obj/item/pen/sleepy/New()
create_reagents(45)
reagents.add_reagent("chloralhydrate2", 20)
reagents.add_reagent("mutetoxin", 15)
@@ -191,12 +191,12 @@
/*
* (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 = FALSE
/obj/item/weapon/pen/edagger/attack_self(mob/living/user)
/obj/item/pen/edagger/attack_self(mob/living/user)
if(on)
on = FALSE
force = initial(force)
@@ -219,7 +219,7 @@
to_chat(user, "<span class='warning'>[src] is now active.</span>")
update_icon()
/obj/item/weapon/pen/edagger/update_icon()
/obj/item/pen/edagger/update_icon()
if(on)
icon_state = "edagger"
item_state = "edagger"
+13 -13
View File
@@ -20,8 +20,8 @@
power_channel = EQUIP
max_integrity = 300
integrity_failure = 100
var/obj/item/weapon/paper/copy = null //what's in the copier!
var/obj/item/weapon/photo/photocopy = null
var/obj/item/paper/copy = null //what's in the copier!
var/obj/item/photo/photocopy = null
var/obj/item/documents/doccopy = null
var/copies = 1 //how many copies to print!
var/toner = 40 //how much toner is left! woooooo~
@@ -67,13 +67,13 @@
for(var/i = 0, i < copies, i++)
if(toner > 0 && !busy && copy)
var/copy_as_paper = 1
if(istype(copy, /obj/item/weapon/paper/contract/employment))
var/obj/item/weapon/paper/contract/employment/E = copy
var/obj/item/weapon/paper/contract/employment/C = new /obj/item/weapon/paper/contract/employment (loc, E.target.current)
if(istype(copy, /obj/item/paper/contract/employment))
var/obj/item/paper/contract/employment/E = copy
var/obj/item/paper/contract/employment/C = new /obj/item/paper/contract/employment (loc, E.target.current)
if(C)
copy_as_paper = 0
if(copy_as_paper)
var/obj/item/weapon/paper/c = new /obj/item/weapon/paper (loc)
var/obj/item/paper/c = new /obj/item/paper (loc)
if(length(copy.info) > 0) //Only print and add content if the copied doc has words on it
if(toner > 10) //lots of toner, make it dark
c.info = "<font color = #101010>"
@@ -102,7 +102,7 @@
else if(photocopy)
for(var/i = 0, i < copies, i++)
if(toner >= 5 && !busy && photocopy) //Was set to = 0, but if there was say 3 toner left and this ran, you would get -2 which would be weird for ink
var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (loc)
var/obj/item/photo/p = new /obj/item/photo (loc)
var/icon/I = icon(photocopy.icon, photocopy.icon_state)
var/icon/img = icon(photocopy.img)
if(greytoggle == "Greyscale")
@@ -162,7 +162,7 @@
temp_img = icon('icons/ass/assdrone.png')
else
break
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)
@@ -214,7 +214,7 @@
for(var/datum/picture/t in tempAI.aicamera.aipictures)
nametemp += t.fields["name"]
find = input("Select image (numbered in order taken)") in nametemp
var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (loc)
var/obj/item/photo/p = new /obj/item/photo (loc)
for(var/datum/picture/q in tempAI.aicamera.aipictures)
if(q.fields["name"] == find)
selection = q
@@ -254,9 +254,9 @@
to_chat(user, "<span class='notice'>You take [O] out of [src].</span>")
/obj/machinery/photocopier/attackby(obj/item/O, mob/user, params)
if(istype(O, /obj/item/weapon/paper))
if(istype(O, /obj/item/paper))
if(copier_empty())
if(istype(O, /obj/item/weapon/paper/contract/infernal))
if(istype(O, /obj/item/paper/contract/infernal))
to_chat(user, "<span class='warning'>[src] smokes, smelling of brimstone!</span>")
resistance_flags |= FLAMMABLE
fire_act()
@@ -268,7 +268,7 @@
else
to_chat(user, "<span class='warning'>There is already something in [src]!</span>")
else if(istype(O, /obj/item/weapon/photo))
else if(istype(O, /obj/item/photo))
if(copier_empty())
if(!user.drop_item())
return
@@ -297,7 +297,7 @@
else
to_chat(user, "<span class='warning'>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))
if(isinspace())
to_chat(user, "<span class='warning'>There's nothing to fasten [src] to!</span>")
return
+19 -19
View File
@@ -23,7 +23,7 @@
/*
* Photo
*/
/obj/item/weapon/photo
/obj/item/photo
name = "photo"
icon = 'icons/obj/items.dmi'
icon_state = "photo"
@@ -37,12 +37,12 @@
var/sillynewscastervar //Photo objects with this set to 1 will not be ejected by a newscaster. Only gets set to 1 if a silicon puts one of their images into a newscaster
/obj/item/weapon/photo/attack_self(mob/user)
/obj/item/photo/attack_self(mob/user)
user.examinate(src)
/obj/item/weapon/photo/attackby(obj/item/weapon/P, mob/user, params)
if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon))
/obj/item/photo/attackby(obj/item/P, mob/user, 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)
@@ -50,7 +50,7 @@
..()
/obj/item/weapon/photo/examine(mob/user)
/obj/item/photo/examine(mob/user)
..()
if(in_range(src, user))
@@ -59,7 +59,7 @@
to_chat(user, "<span class='warning'>You need to get closer to get a good look at this photo!</span>")
/obj/item/weapon/photo/proc/show(mob/user)
/obj/item/photo/proc/show(mob/user)
user << browse_rsc(img, "tmp_photo.png")
user << browse("<html><head><title>[name]</title></head>" \
+ "<body style='overflow:hidden;margin:0;text-align:center'>" \
@@ -69,7 +69,7 @@
onclose(user, "[name]")
/obj/item/weapon/photo/verb/rename()
/obj/item/photo/verb/rename()
set name = "Rename photo"
set category = "Object"
set src in usr
@@ -80,7 +80,7 @@
name = "photo[(n_name ? text("- '[n_name]'") : null)]"
add_fingerprint(usr)
/obj/item/weapon/photo/proc/photocreate(inicon, inimg, indesc, inblueprints)
/obj/item/photo/proc/photocreate(inicon, inimg, indesc, inblueprints)
icon = inicon
img = inimg
desc = indesc
@@ -89,14 +89,14 @@
/*
* 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"
lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi'
can_hold = list(/obj/item/weapon/photo)
can_hold = list(/obj/item/photo)
resistance_flags = FLAMMABLE
/*
@@ -307,7 +307,7 @@
/obj/item/device/camera/proc/printpicture(mob/user, icon/temp, mobs, flag) //Normal camera proc for creating photos
var/obj/item/weapon/photo/P = new/obj/item/weapon/photo(get_turf(src))
var/obj/item/photo/P = new/obj/item/photo(get_turf(src))
if(in_range(src, user)) //needed because of TK
user.put_in_hands(P)
var/icon/small_img = icon(temp)
@@ -404,7 +404,7 @@
return q
/obj/item/device/camera/siliconcam/proc/viewpichelper(obj/item/device/camera/siliconcam/targetloc)
var/obj/item/weapon/photo/P = new/obj/item/weapon/photo()
var/obj/item/photo/P = new/obj/item/photo()
var/datum/picture/selection = selectpicture(targetloc)
if(selection)
P.photocreate(selection.fields["icon"], selection.fields["img"], selection.fields["desc"])
@@ -482,7 +482,7 @@
if(q.fields["name"] == find)
selection = q
break
var/obj/item/weapon/photo/p = new /obj/item/weapon/photo(C.loc)
var/obj/item/photo/p = new /obj/item/photo(C.loc)
p.photocreate(selection.fields["icon"], selection.fields["img"], selection.fields["desc"], selection.fields["blueprints"])
p.pixel_x = rand(-10, 10)
p.pixel_y = rand(-10, 10)
@@ -500,10 +500,10 @@
flags_1 = 0
icon_state = "frame-empty"
result_path = /obj/structure/sign/picture_frame
var/obj/item/weapon/photo/displayed
var/obj/item/photo/displayed
/obj/item/wallframe/picture/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/weapon/photo))
if(istype(I, /obj/item/photo))
if(!displayed)
if(!user.transferItemToLoc(I, src))
return
@@ -554,7 +554,7 @@
desc = "Every time you look it makes you laugh."
icon = 'icons/obj/decals.dmi'
icon_state = "frame-empty"
var/obj/item/weapon/photo/framed
var/obj/item/photo/framed
/obj/structure/sign/picture_frame/New(loc, dir, building)
..()
@@ -571,7 +571,7 @@
..()
/obj/structure/sign/picture_frame/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver) || istype(I, /obj/item/weapon/wrench))
if(istype(I, /obj/item/screwdriver) || istype(I, /obj/item/wrench))
to_chat(user, "<span class='notice'>You start unsecuring [name]...</span>")
playsound(loc, I.usesound, 50, 1)
if(do_after(user, 30*I.toolspeed, target = src))
@@ -580,9 +580,9 @@
deconstruct()
return
else if(istype(I, /obj/item/weapon/photo))
else if(istype(I, /obj/item/photo))
if(!framed)
var/obj/item/weapon/photo/P = I
var/obj/item/photo/P = I
if(!user.transferItemToLoc(P, src))
return
framed = P
+21 -21
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/stamp
/obj/item/stamp
name = "\improper GRANTED rubber stamp"
desc = "A rubber stamp for stamping important documents."
icon = 'icons/obj/bureaucracy.dmi'
@@ -13,97 +13,97 @@
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 [user.p_their()] 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 = "cmo"
/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/attack_paw(mob/user)
/obj/item/stamp/attack_paw(mob/user)
return attack_hand(user)
// Syndicate stamp to forge documents.
/obj/item/weapon/stamp/chameleon
/obj/item/stamp/chameleon
actions_types = list(/datum/action/item_action/toggle)
var/list/stamp_types
var/list/stamp_names
/obj/item/weapon/stamp/chameleon/Initialize()
/obj/item/stamp/chameleon/Initialize()
. = ..()
stamp_types = typesof(/obj/item/weapon/stamp) - type // Get all stamp types except our own
stamp_types = typesof(/obj/item/stamp) - type // Get all stamp types except our own
stamp_names = list()
// Generate them into a list
for(var/i in stamp_types)
var/obj/item/weapon/stamp/stamp_type = i
var/obj/item/stamp/stamp_type = i
stamp_names += initial(stamp_type.name)
stamp_names = sortList(stamp_names)
/obj/item/weapon/stamp/chameleon/emp_act(severity)
/obj/item/stamp/chameleon/emp_act(severity)
change_to(pick(stamp_types))
/obj/item/weapon/stamp/chameleon/proc/change_to(obj/item/weapon/stamp/stamp_type)
/obj/item/stamp/chameleon/proc/change_to(obj/item/stamp/stamp_type)
name = initial(stamp_type.name)
icon_state = initial(stamp_type.icon_state)
item_color = initial(stamp_type.item_color)
/obj/item/weapon/stamp/chameleon/attack_self(mob/user)
/obj/item/stamp/chameleon/attack_self(mob/user)
var/input_stamp = input(user, "Choose a stamp to disguise as.",
"Choose a stamp.") as null|anything in stamp_names
if(user && (src in user.contents) && input_stamp)
var/obj/item/weapon/stamp/stamp_type
var/obj/item/stamp/stamp_type
for(var/i in stamp_types)
stamp_type = i
if(initial(stamp_type.name) == input_stamp)