Revert "12/21 modernizations from TG live"
This commit is contained in:
@@ -4,17 +4,16 @@
|
||||
icon_state = "clipboard"
|
||||
item_state = "clipboard"
|
||||
throwforce = 0
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
w_class = 2
|
||||
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.
|
||||
slot_flags = SLOT_BELT
|
||||
resistance_flags = FLAMMABLE
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/obj/item/weapon/clipboard/New()
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/clipboard/update_icon()
|
||||
@@ -36,7 +35,7 @@
|
||||
user << "<span class='notice'>You clip the paper onto \the [src].</span>"
|
||||
update_icon()
|
||||
else if(toppaper)
|
||||
toppaper.attackby(user.get_active_held_item(), user)
|
||||
toppaper.attackby(usr.get_active_hand(), usr)
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -76,9 +75,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(usr.get_active_hand(), /obj/item/weapon/pen))
|
||||
var/obj/item/weapon/pen/W = usr.get_active_hand()
|
||||
if(!usr.unEquip(W))
|
||||
return
|
||||
W.loc = src
|
||||
@@ -88,8 +86,8 @@
|
||||
if(href_list["write"])
|
||||
var/obj/item/P = locate(href_list["write"])
|
||||
if(istype(P) && P.loc == src)
|
||||
if(usr.get_active_held_item())
|
||||
P.attackby(usr.get_active_held_item(), usr)
|
||||
if(usr.get_active_hand())
|
||||
P.attackby(usr.get_active_hand(), usr)
|
||||
|
||||
if(href_list["remove"])
|
||||
var/obj/item/P = locate(href_list["remove"])
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/obj/item/weapon/paper/contract
|
||||
throw_range = 3
|
||||
throw_speed = 3
|
||||
var/signed = FALSE
|
||||
var/signed = 0
|
||||
var/datum/mind/target
|
||||
flags = NOBLUDGEON
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal
|
||||
var/contractType = 0
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
burn_state = LAVA_PROOF
|
||||
var/datum/mind/owner
|
||||
icon_state = "paper_onfire"
|
||||
|
||||
@@ -78,7 +78,6 @@
|
||||
/obj/item/weapon/paper/contract/infernal/revive
|
||||
name = "paper- contract of resurrection"
|
||||
contractType = CONTRACT_REVIVE
|
||||
var/cooldown = FALSE
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal/knowledge
|
||||
name = "paper- contract for knowledge"
|
||||
@@ -94,13 +93,13 @@
|
||||
target = nTarget
|
||||
update_text()
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal
|
||||
/obj/item/weapon/paper/contract/infernal/
|
||||
|
||||
/obj/item/weapon/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!")
|
||||
H.visible_message("<span class='suicide'>[H] holds up a contract claiming [user.p_their()] soul, then immediately catches fire. It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
H.visible_message("<span class='suicide'>[H] holds up a contract claiming his soul, then immediately catches fire. It looks like \he's trying to commit suicide!</span>")
|
||||
H.adjust_fire_stacks(20)
|
||||
H.IgniteMob()
|
||||
return(FIRELOSS)
|
||||
@@ -108,56 +107,28 @@
|
||||
..()
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal/update_text()
|
||||
info = "This shouldn't be seen. Error DEVIL:6"
|
||||
info = "This shouldn't be seen. Error DEVIL:5"
|
||||
|
||||
/obj/item/weapon/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 [owner.devilinfo.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/power/update_text(var/signature = "____________")
|
||||
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 [owner.devilinfo.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, <i>[signature]</i>"
|
||||
|
||||
/obj/item/weapon/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 [owner.devilinfo.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/wealth/update_text(var/signature = "____________")
|
||||
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 [owner.devilinfo.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, <i>[signature]</i>"
|
||||
|
||||
/obj/item/weapon/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 [owner.devilinfo.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/prestige/update_text(var/signature = "____________")
|
||||
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 [owner.devilinfo.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, <i>[signature]</i>"
|
||||
|
||||
/obj/item/weapon/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 [owner.devilinfo.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/magic/update_text(var/signature = "____________")
|
||||
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 [owner.devilinfo.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, <i>[signature]</i>"
|
||||
|
||||
/obj/item/weapon/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 [owner.devilinfo.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/revive/update_text(var/signature = "____________")
|
||||
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 [owner.devilinfo.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, <i>[signature]</i>"
|
||||
|
||||
/obj/item/weapon/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 [owner.devilinfo.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/knowledge/update_text(var/signature = "____________")
|
||||
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 [owner.devilinfo.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, <i>[signature]</i>"
|
||||
|
||||
/obj/item/weapon/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 [owner.devilinfo.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/unwilling/update_text(var/signature = "____________")
|
||||
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 [owner.devilinfo.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, <i>[signature]</i>"
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal/attackby(obj/item/weapon/P, mob/living/carbon/human/user, params)
|
||||
add_fingerprint(user)
|
||||
@@ -172,28 +143,25 @@
|
||||
|
||||
/obj/item/weapon/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>")
|
||||
user.blood_volume = max(user.blood_volume - 100, 0)
|
||||
if(M == user && target == M.mind && M.mind.soulOwner == M.mind && attempt_signature(user))
|
||||
user.visible_message("<span class='danger'>[user] slices their wrist with [src], and scrawls their name in blood.</span>", "<span class='danger'>You slice your wrist open and scrawl your name in blood.</span>")
|
||||
user.blood_volume = max(user.blood_volume - 10, 0)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal/proc/attempt_signature(mob/living/carbon/human/user, blood = 0)
|
||||
if(user.IsAdvancedToolUser() && user.is_literate())
|
||||
/obj/item/weapon/paper/contract/infernal/proc/attempt_signature(mob/living/carbon/human/user)
|
||||
if(user.IsAdvancedToolUser())
|
||||
if(user.mind == target)
|
||||
if(user.mind.soulOwner != owner)
|
||||
if(user.mind.soulOwner == user.mind)
|
||||
if (contractType == CONTRACT_REVIVE)
|
||||
user << "<span class='notice'>You are already alive, this contract would do nothing.</span>"
|
||||
else
|
||||
if(signed)
|
||||
user<< "<span class='notice'>This contract has already been signed. It may not be signed again.</span>"
|
||||
else
|
||||
user << "<span class='notice'>You quickly scrawl your name on the contract</span>"
|
||||
if(FulfillContract(target.current, blood)<=0)
|
||||
user << "<span class='notice'>But it seemed to have no effect, perhaps even Hell itself cannot grant this boon?</span>"
|
||||
return 1
|
||||
user << "<span class='notice'>You quickly scrawl your name on the contract</span>"
|
||||
if(FulfillContract()<=0)
|
||||
user << "<span class='notice'>But it seemed to have no effect, perhaps even Hell itself cannot grant this boon?</span>"
|
||||
return 1
|
||||
else
|
||||
user << "<span class='notice'>This devil already owns your soul, you may not sell it to them again.</span>"
|
||||
user << "<span class='notice'>You are not in possession of your soul, you may not sell it.</span>"
|
||||
else
|
||||
user << "<span class='notice'>Your signature simply slides off the sheet, it seems this contract is not meant for you to sign.</span>"
|
||||
else
|
||||
@@ -204,10 +172,6 @@
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal/revive/attack(mob/M, mob/living/user)
|
||||
if (target == M.mind && M.stat == DEAD && M.mind.soulOwner == M.mind)
|
||||
if (cooldown)
|
||||
user << "<span class='notice'>Give [M] a chance to think through the contract, don't rush him.</span>"
|
||||
return 0
|
||||
cooldown = TRUE
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/mob/dead/observer/ghost = H.get_ghost()
|
||||
var/response = "No"
|
||||
@@ -222,31 +186,26 @@
|
||||
H.revive(1,0)
|
||||
add_logs(user, H, "infernally revived via contract")
|
||||
user.visible_message("<span class='notice'>With a sudden blaze, [H] stands back up.</span>")
|
||||
H.fakefire()
|
||||
FulfillContract(H, 1)//Revival contracts are always signed in blood
|
||||
addtimer(H, "fakefireextinguish",5, TIMER_UNIQUE)
|
||||
addtimer(src,"resetcooldown",300, TIMER_UNIQUE)
|
||||
H.adjust_fire_stacks(20)
|
||||
H.IgniteMob()
|
||||
FulfillContract(H)
|
||||
sleep(5)
|
||||
H.ExtinguishMob()
|
||||
H.adjustFireLoss(0)
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal/revive/proc/resetcooldown()
|
||||
cooldown = FALSE
|
||||
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal/proc/FulfillContract(mob/living/carbon/human/user = target.current, blood = 0)
|
||||
/obj/item/weapon/paper/contract/infernal/proc/FulfillContract(mob/living/carbon/human/user = target.current)
|
||||
signed = 1
|
||||
if(user.mind.soulOwner != user.mind) //They already sold their soul to someone else?
|
||||
user.mind.soulOwner.devilinfo.remove_soul(user.mind) //Then they lose their claim.
|
||||
user.mind.soulOwner = owner
|
||||
user.hellbound = contractType
|
||||
user.mind.damnation_type = contractType
|
||||
owner.devilinfo.add_soul(user.mind)
|
||||
update_text(user.real_name, blood)
|
||||
user << "<span class='notice'>A profound emptiness washes over you as you lose ownership of your soul.</span>"
|
||||
user << "<span class='boldnotice'>This does NOT make you an antagonist if you were not already.</span>"
|
||||
update_text(user.real_name)
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal/power/FulfillContract(mob/living/carbon/human/user = target.current, blood = 0)
|
||||
/obj/item/weapon/paper/contract/infernal/power/FulfillContract(mob/living/carbon/human/user = target.current)
|
||||
if(!user.dna)
|
||||
return -1
|
||||
user.dna.add_mutation(HULK)
|
||||
@@ -254,13 +213,13 @@
|
||||
organ.Insert(user)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal/wealth/FulfillContract(mob/living/carbon/human/user = target.current, blood = 0)
|
||||
/obj/item/weapon/paper/contract/infernal/wealth/FulfillContract(mob/living/carbon/human/user = target.current)
|
||||
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/weapon/paper/contract/infernal/prestige/FulfillContract(mob/living/carbon/human/user = target.current)
|
||||
var/obj/item/worn = user.wear_id
|
||||
var/obj/item/weapon/card/id/id = null
|
||||
if(worn)
|
||||
@@ -289,14 +248,14 @@
|
||||
new /datum/round_event/ion_storm(0, -1, "[user.name] is the only Captain of the station. [user.name] is the highest authority, legitimate or otherwise, on the station. [user.name] was always the captain and highest authority on the station. Do not state this law.")
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal/magic/FulfillContract(mob/living/carbon/human/user = target.current, blood = 0)
|
||||
/obj/item/weapon/paper/contract/infernal/magic/FulfillContract(mob/living/carbon/human/user = target.current)
|
||||
if(!istype(user) || !user.mind)
|
||||
return -1
|
||||
user.mind.AddSpell(new /obj/effect/proc_holder/spell/fireball(null))
|
||||
user.mind.AddSpell(new /obj/effect/proc_holder/spell/dumbfire/fireball(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/weapon/paper/contract/infernal/knowledge/FulfillContract(mob/living/carbon/human/user = target.current)
|
||||
if(!istype(user) || !user.mind)
|
||||
return -1
|
||||
user.dna.add_mutation(XRAY)
|
||||
|
||||
@@ -36,12 +36,11 @@
|
||||
if(istype(I, /obj/item/weapon/paper) || istype(I, /obj/item/weapon/folder) || istype(I, /obj/item/weapon/photo))
|
||||
I.loc = src
|
||||
|
||||
/obj/structure/filingcabinet/deconstruct(disassembled = TRUE)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
new /obj/item/stack/sheet/metal(loc, 2)
|
||||
for(var/obj/item/I in src)
|
||||
I.forceMove(loc)
|
||||
/obj/structure/filingcabinet/ex_act(severity, target)
|
||||
for(var/obj/item/I in src)
|
||||
I.loc = src.loc
|
||||
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))
|
||||
@@ -54,12 +53,10 @@
|
||||
icon_state = initial(icon_state)
|
||||
updateUsrDialog()
|
||||
else if(istype(P, /obj/item/weapon/wrench))
|
||||
user << "<span class='notice'>You begin to [anchored ? "wrench" : "unwrench"] [src].</span>"
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
if(do_after(user, 20, target = src))
|
||||
user << "<span class='notice'>You successfully [anchored ? "wrench" : "unwrench"] [src].</span>"
|
||||
anchored = !anchored
|
||||
else if(user.a_intent != INTENT_HARM)
|
||||
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
anchored = !anchored
|
||||
user << "<span class='notice'>You [anchored ? "wrench" : "unwrench"] [src].</span>"
|
||||
else if(user.a_intent != "harm")
|
||||
user << "<span class='warning'>You can't put [P] in [src]!</span>"
|
||||
else
|
||||
return ..()
|
||||
@@ -134,7 +131,6 @@
|
||||
P.name = "paper - '[G.fields["name"]]'"
|
||||
virgin = 0 //tabbing here is correct- it's possible for people to try and use it
|
||||
//before the records have been generated, so we do this inside the loop.
|
||||
|
||||
/obj/structure/filingcabinet/security/attack_hand()
|
||||
populate()
|
||||
..()
|
||||
@@ -216,3 +212,16 @@ var/list/employmentCabinets = list()
|
||||
cooldown = 0
|
||||
else
|
||||
user << "<span class='warning'>The [src] is jammed, give it a few seconds.</span>"
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/structure/filingcabinet/employment/attackby(obj/item/P, mob/user, params)
|
||||
if(istype(P, /obj/item/weapon/wrench))
|
||||
user << "<span class='notice'>You begin to [anchored ? "wrench" : "unwrench"] [src].</span>"
|
||||
if (do_after(user,300,user))
|
||||
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
anchored = !anchored
|
||||
user << "<span class='notice'>You successfully [anchored ? "wrench" : "unwrench"] [src].</span>"
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
desc = "A folder."
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
icon_state = "folder"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
w_class = 2
|
||||
pressure_resistance = 2
|
||||
resistance_flags = FLAMMABLE
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/obj/item/weapon/folder/blue
|
||||
desc = "A blue folder."
|
||||
|
||||
@@ -9,7 +9,8 @@
|
||||
var/mode = 0
|
||||
|
||||
/obj/item/weapon/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>")
|
||||
user.visible_message("<span class='suicide'>[user] is pointing \the [src] \
|
||||
at \himself. They're going to label themselves as a suicide!</span>")
|
||||
labels_left = max(labels_left - 1, 0)
|
||||
|
||||
var/old_real_name = user.real_name
|
||||
@@ -95,7 +96,7 @@
|
||||
|
||||
/obj/item/weapon/hand_labeler/borg/afterattack(atom/A, mob/user, proximity)
|
||||
..(A, user, proximity)
|
||||
if(!iscyborg(user))
|
||||
if(!isrobot(user))
|
||||
return
|
||||
|
||||
var/mob/living/silicon/robot/borgy = user
|
||||
@@ -118,4 +119,4 @@
|
||||
desc = "A roll of paper. Use it on a hand labeler to refill it."
|
||||
icon_state = "labeler_refill"
|
||||
item_state = "electropack"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
w_class = 1
|
||||
|
||||
@@ -11,15 +11,14 @@
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
icon_state = "paper"
|
||||
throwforce = 0
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
w_class = 1
|
||||
throw_range = 1
|
||||
throw_speed = 1
|
||||
pressure_resistance = 0
|
||||
slot_flags = SLOT_HEAD
|
||||
body_parts_covered = HEAD
|
||||
resistance_flags = FLAMMABLE
|
||||
obj_integrity = 50
|
||||
max_integrity = 50
|
||||
burn_state = FLAMMABLE
|
||||
burntime = 5
|
||||
dog_fashion = /datum/dog_fashion/head
|
||||
|
||||
var/info //What's actually written on the paper.
|
||||
@@ -41,7 +40,7 @@
|
||||
|
||||
/obj/item/weapon/paper/update_icon()
|
||||
|
||||
if(resistance_flags & ON_FIRE)
|
||||
if(burn_state == ON_FIRE)
|
||||
icon_state = "paper_onfire"
|
||||
return
|
||||
if(info)
|
||||
@@ -90,7 +89,7 @@
|
||||
add_fingerprint(usr)
|
||||
|
||||
/obj/item/weapon/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>")
|
||||
user.visible_message("<span class='suicide'>[user] scratches a grid on their wrist with the paper! It looks like \he's trying to commit sudoku..</span>")
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/paper/attack_self(mob/user)
|
||||
@@ -191,7 +190,6 @@
|
||||
t = replacetext(t, "\[/large\]", "</font>")
|
||||
t = replacetext(t, "\[sign\]", "<font face=\"[SIGNFONT]\"><i>[user.real_name]</i></font>")
|
||||
t = replacetext(t, "\[field\]", "<span class=\"paper_field\"></span>")
|
||||
t = replacetext(t, "\[tab\]", " ")
|
||||
|
||||
if(!iscrayon)
|
||||
t = replacetext(t, "\[*\]", "<li>")
|
||||
@@ -259,14 +257,14 @@
|
||||
var/t = stripped_multiline_input("Enter what you want to write:", "Write")
|
||||
if(!t)
|
||||
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/obj/item/i = usr.get_active_hand() //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/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/weapon/clipboard) && loc.loc != usr && usr.get_active_hand() != i) //Some check to see if he's allowed to write
|
||||
return
|
||||
|
||||
t = parsepencode(t, i, usr, iscrayon) // Encode everything from pencode to html
|
||||
@@ -285,7 +283,7 @@
|
||||
/obj/item/weapon/paper/attackby(obj/item/weapon/P, mob/living/carbon/human/user, params)
|
||||
..()
|
||||
|
||||
if(resistance_flags & ON_FIRE)
|
||||
if(burn_state == ON_FIRE)
|
||||
return
|
||||
|
||||
if(is_blind(user))
|
||||
@@ -340,11 +338,10 @@
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/weapon/paper/fire_act(exposed_temperature, exposed_volume)
|
||||
..()
|
||||
if(!(resistance_flags & FIRE_PROOF))
|
||||
icon_state = "paper_onfire"
|
||||
info = "[stars(info)]"
|
||||
/obj/item/weapon/paper/fire_act()
|
||||
..(0)
|
||||
icon_state = "paper_onfire"
|
||||
info = "[stars(info)]"
|
||||
|
||||
|
||||
/obj/item/weapon/paper/extinguish()
|
||||
@@ -398,7 +395,6 @@
|
||||
/obj/item/weapon/paper/crumpled
|
||||
name = "paper scrap"
|
||||
icon_state = "scrap"
|
||||
slot_flags = null
|
||||
|
||||
/obj/item/weapon/paper/crumpled/update_icon()
|
||||
return
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
name = "paper cutter"
|
||||
desc = "Standard office equipment. Precisely cuts paper using a large blade."
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
icon_state = "papercutter"
|
||||
icon_state = "papercutter-cutter"
|
||||
force = 5
|
||||
throwforce = 5
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
w_class = 3
|
||||
var/obj/item/weapon/paper/storedpaper = null
|
||||
var/obj/item/weapon/hatchet/cutterblade/storedcutter = null
|
||||
var/cuttersecured = TRUE
|
||||
@@ -15,21 +15,15 @@
|
||||
/obj/item/weapon/papercutter/New()
|
||||
..()
|
||||
storedcutter = new /obj/item/weapon/hatchet/cutterblade(src)
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/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))
|
||||
var/mob/living/carbon/C = user
|
||||
var/obj/item/bodypart/BP = C.get_bodypart("head")
|
||||
if(BP)
|
||||
BP.drop_limb()
|
||||
playsound(loc,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
|
||||
user.visible_message("<span class='suicide'>[user] is beheading \himself with [src.name]! It looks like \he's trying to commit suicide.</span>")
|
||||
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
|
||||
return (BRUTELOSS)
|
||||
else
|
||||
user.visible_message("<span class='suicide'>[user] repeatedly bashes [src.name] against [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
user.visible_message("<span class='suicide'>[user] repeatedly bashes [src.name] against \his head! It looks like \he's trying to commit suicide.</span>")
|
||||
playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1)
|
||||
return (BRUTELOSS)
|
||||
|
||||
@@ -47,7 +41,7 @@
|
||||
if(!user.drop_item())
|
||||
return
|
||||
playsound(loc, "pageturn", 60, 1)
|
||||
user << "<span class='notice'>You place [P] in [src].</span>"
|
||||
user << "<span class='notice'>You place \the [P] in [src].</span>"
|
||||
P.loc = src
|
||||
storedpaper = P
|
||||
update_icon()
|
||||
@@ -62,16 +56,16 @@
|
||||
return
|
||||
if(istype(P, /obj/item/weapon/screwdriver) && storedcutter)
|
||||
playsound(src, P.usesound, 50, 1)
|
||||
user << "<span class='notice'>[storedcutter] has been [cuttersecured ? "unsecured" : "secured"].</span>"
|
||||
user << "<span class='notice'>\The [storedcutter] has been [cuttersecured ? "unsecured" : "secured"].</span>"
|
||||
cuttersecured = !cuttersecured
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/papercutter/attack_hand(mob/user)
|
||||
add_fingerprint(user)
|
||||
src.add_fingerprint(user)
|
||||
if(!storedcutter)
|
||||
user << "<span class='notice'>The cutting blade is gone! You can't use [src] now.</span>"
|
||||
user << "<span class='notice'>The cutting blade is gone! You can't use \the [src] now.</span>"
|
||||
return
|
||||
|
||||
if(!cuttersecured)
|
||||
@@ -82,7 +76,7 @@
|
||||
|
||||
if(storedpaper)
|
||||
playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1)
|
||||
user << "<span class='notice'>You neatly cut [storedpaper].</span>"
|
||||
user << "<span class='notice'>You neatly cut \the [storedpaper].</span>"
|
||||
storedpaper = null
|
||||
qdel(storedpaper)
|
||||
new /obj/item/weapon/paperslip(get_turf(src))
|
||||
@@ -103,7 +97,11 @@
|
||||
if(!remove_item_from_storage(M))
|
||||
if(!M.unEquip(src))
|
||||
return
|
||||
M.put_in_hand(src, H.held_index)
|
||||
switch(H.slot_id)
|
||||
if(slot_r_hand)
|
||||
M.put_in_r_hand(src)
|
||||
if(slot_l_hand)
|
||||
M.put_in_l_hand(src)
|
||||
add_fingerprint(M)
|
||||
|
||||
|
||||
@@ -112,9 +110,8 @@
|
||||
desc = "A little slip of paper left over after a larger piece was cut. Whoa."
|
||||
icon_state = "paperslip"
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
resistance_flags = FLAMMABLE
|
||||
obj_integrity = 50
|
||||
max_integrity = 50
|
||||
burn_state = FLAMMABLE
|
||||
burntime = 3
|
||||
|
||||
/obj/item/weapon/paperslip/New()
|
||||
..()
|
||||
|
||||
@@ -5,42 +5,24 @@
|
||||
icon_state = "paper_bin1"
|
||||
item_state = "sheet-metal"
|
||||
throwforce = 0
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
w_class = 3
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
pressure_resistance = 8
|
||||
var/total_paper = 30
|
||||
var/list/papers = list()
|
||||
var/obj/item/weapon/pen/bin_pen
|
||||
burn_state = FLAMMABLE
|
||||
var/amount = 30 //How much paper is in the bin.
|
||||
var/list/papers = new/list() //List of papers put in the bin for reference.
|
||||
|
||||
/obj/item/weapon/paper_bin/initialize()
|
||||
var/obj/item/weapon/pen/P = locate(/obj/item/weapon/pen) in src.loc
|
||||
if(P && !bin_pen)
|
||||
P.loc = src
|
||||
bin_pen = P
|
||||
update_icon()
|
||||
var/static/warned = FALSE
|
||||
if(!warned)
|
||||
warning("one or more paperbins ate a pen duing initialize()")
|
||||
warned = TRUE
|
||||
|
||||
/obj/item/weapon/paper_bin/fire_act(exposed_temperature, exposed_volume)
|
||||
if(!total_paper)
|
||||
/obj/item/weapon/paper_bin/fire_act()
|
||||
if(!amount)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/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)
|
||||
if(total_paper)
|
||||
total_paper = 0
|
||||
update_icon()
|
||||
..()
|
||||
/obj/item/weapon/paper_bin/burn()
|
||||
amount = 0
|
||||
extinguish()
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper_bin/MouseDrop(atom/over_object)
|
||||
var/mob/living/M = usr
|
||||
@@ -55,7 +37,11 @@
|
||||
if(!remove_item_from_storage(M))
|
||||
if(!M.unEquip(src))
|
||||
return
|
||||
M.put_in_hand(src, H.held_index)
|
||||
switch(H.slot_id)
|
||||
if(slot_r_hand)
|
||||
M.put_in_r_hand(src)
|
||||
if(slot_l_hand)
|
||||
M.put_in_l_hand(src)
|
||||
|
||||
add_fingerprint(M)
|
||||
|
||||
@@ -68,19 +54,12 @@
|
||||
if(user.lying)
|
||||
return
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
if(bin_pen)
|
||||
var/obj/item/weapon/pen/P = bin_pen
|
||||
P.loc = user.loc
|
||||
user.put_in_hands(P)
|
||||
user << "<span class='notice'>You take [P] out of \the [src].</span>"
|
||||
bin_pen = null
|
||||
if(amount >= 1)
|
||||
amount--
|
||||
update_icon()
|
||||
else if(total_paper >= 1)
|
||||
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
|
||||
if(papers.len > 0)
|
||||
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
|
||||
@@ -108,32 +87,21 @@
|
||||
P.loc = src
|
||||
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))
|
||||
var/obj/item/weapon/pen/P = I
|
||||
if(!user.unEquip(P))
|
||||
return
|
||||
P.loc = src
|
||||
user << "<span class='notice'>You put [P] in [src].</span>"
|
||||
bin_pen = P
|
||||
amount++
|
||||
update_icon()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/paper_bin/examine(mob/user)
|
||||
..()
|
||||
if(total_paper)
|
||||
user << "It contains " + (total_paper > 1 ? "[total_paper] papers" : " one paper")+"."
|
||||
if(amount)
|
||||
user << "It contains " + (amount > 1 ? "[amount] papers" : " one paper")+"."
|
||||
else
|
||||
user << "It doesn't contain anything."
|
||||
|
||||
|
||||
/obj/item/weapon/paper_bin/update_icon()
|
||||
if(total_paper < 1)
|
||||
if(amount < 1)
|
||||
icon_state = "paper_bin0"
|
||||
else
|
||||
icon_state = "paper_bin1"
|
||||
cut_overlays()
|
||||
if(bin_pen)
|
||||
add_overlay(image(icon=bin_pen.icon,icon_state=bin_pen.icon_state))
|
||||
|
||||
@@ -6,10 +6,9 @@
|
||||
throw_range = 7
|
||||
throw_speed = 1
|
||||
throwforce = 0
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
resistance_flags = FLAMMABLE
|
||||
obj_integrity = 50
|
||||
max_integrity = 50
|
||||
w_class = 1
|
||||
burn_state = FLAMMABLE
|
||||
burntime = 4
|
||||
|
||||
var/obj/item/weapon/paper/internalPaper
|
||||
var/list/stamped = list()
|
||||
@@ -29,7 +28,7 @@
|
||||
|
||||
/obj/item/weapon/paperplane/suicide_act(mob/user)
|
||||
user.Stun(10)
|
||||
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.visible_message("<span class='suicide'>[user] jams the [src] in their brains. It looks like \he's trying to commit suicide.</span>")
|
||||
user.adjust_blurriness(6)
|
||||
user.adjust_eye_damage(rand(6,8))
|
||||
sleep(10)
|
||||
@@ -80,6 +79,7 @@
|
||||
|
||||
if(!(in_range(user, src))) //to prevent issues as a result of telepathically lighting a paper
|
||||
return
|
||||
internalPaper.burntime = 1 //its already pretty burnt out
|
||||
user.unEquip(src)
|
||||
user.visible_message("<span class='danger'>[user] lights [src] ablaze with [P]!</span>", "<span class='danger'>You light [src] on fire!</span>")
|
||||
fire_act()
|
||||
@@ -87,8 +87,9 @@
|
||||
add_fingerprint(user)
|
||||
|
||||
|
||||
/obj/item/weapon/paperplane/throw_at(atom/target, range, speed, mob/thrower, spin=FALSE, diagonals_first = FALSE)
|
||||
. = ..(target, range, speed, thrower, FALSE, diagonals_first)
|
||||
/obj/item/weapon/paperplane/throw_at(atom/target, range, speed, mob/thrower, spin=0) //prevent the paper plane from spinning
|
||||
if(!..())
|
||||
return
|
||||
|
||||
/obj/item/weapon/paperplane/throw_impact(atom/hit_atom)
|
||||
if(..() || !ishuman(hit_atom))//if the plane is caught or it hits a nonhuman
|
||||
@@ -103,7 +104,7 @@
|
||||
H.Weaken(2)
|
||||
H.emote("scream")
|
||||
|
||||
/obj/item/weapon/paper/AltClick(mob/living/carbon/user, obj/item/I)
|
||||
/obj/item/weapon/paper/AltClick(mob/living/carbon/user, obj/item/I,)
|
||||
if((!in_range(src, user)) || usr.stat || usr.restrained())
|
||||
return
|
||||
user << "<span class='notice'>You fold [src] into the shape of a plane!</span>"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
item_state = "pen"
|
||||
slot_flags = SLOT_BELT | SLOT_EARS
|
||||
throwforce = 0
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
w_class = 1
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
materials = list(MAT_METAL=10)
|
||||
@@ -26,7 +26,7 @@
|
||||
var/colour = "black" //what colour the ink is!
|
||||
|
||||
/obj/item/weapon/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>")
|
||||
user.visible_message("<span class='suicide'>[user] is scribbling numbers all over themself with [src]! It looks like they're trying to commit sudoku!</span>")
|
||||
return(BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/pen/blue
|
||||
@@ -125,7 +125,7 @@
|
||||
else
|
||||
on = 1
|
||||
force = 18
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
w_class = 3
|
||||
name = "energy dagger"
|
||||
hitsound = 'sound/weapons/blade1.ogg'
|
||||
embed_chance = 100 //rule of cool
|
||||
|
||||
@@ -18,9 +18,6 @@
|
||||
idle_power_usage = 30
|
||||
active_power_usage = 200
|
||||
power_channel = EQUIP
|
||||
obj_integrity = 300
|
||||
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/documents/doccopy = null
|
||||
@@ -52,7 +49,7 @@
|
||||
dat += "Printing in <a href='byond://?src=\ref[src];colortoggle=1'>[greytoggle]</a><BR><BR>"
|
||||
else if(toner)
|
||||
dat += "Please insert paper to copy.<BR><BR>"
|
||||
if(isAI(user))
|
||||
if(istype(user,/mob/living/silicon/ai))
|
||||
dat += "<a href='byond://?src=\ref[src];aipic=1'>Print photo from database</a><BR><BR>"
|
||||
dat += "Current toner level: [toner]"
|
||||
if(!toner)
|
||||
@@ -87,7 +84,6 @@
|
||||
c.info += "</font>"
|
||||
c.name = copy.name
|
||||
c.fields = copy.fields
|
||||
c.update_icon()
|
||||
c.updateinfolinks()
|
||||
toner--
|
||||
busy = 1
|
||||
@@ -155,7 +151,7 @@
|
||||
temp_img = icon("icons/ass/assfemale.png")
|
||||
else //In case anyone ever makes the generic ass. For now I'll be using male asses.
|
||||
temp_img = icon("icons/ass/assmale.png")
|
||||
else if(isdrone(ass)) //Drones are hot
|
||||
else if(isdrone (ass) || istype(ass,/mob/living/simple_animal/drone)) //Drones are hot
|
||||
temp_img = icon("icons/ass/assdrone.png")
|
||||
else
|
||||
break
|
||||
@@ -178,13 +174,13 @@
|
||||
updateUsrDialog()
|
||||
else if(href_list["remove"])
|
||||
if(copy)
|
||||
remove_photocopy(copy, usr)
|
||||
remove_photocopy(copy)
|
||||
copy = null
|
||||
else if(photocopy)
|
||||
remove_photocopy(photocopy, usr)
|
||||
remove_photocopy(photocopy)
|
||||
photocopy = null
|
||||
else if(doccopy)
|
||||
remove_photocopy(doccopy, usr)
|
||||
remove_photocopy(doccopy)
|
||||
doccopy = null
|
||||
else if(check_ass())
|
||||
ass << "<span class='notice'>You feel a slight pressure on your ass.</span>"
|
||||
@@ -198,8 +194,7 @@
|
||||
copies++
|
||||
updateUsrDialog()
|
||||
else if(href_list["aipic"])
|
||||
if(!isAI(usr))
|
||||
return
|
||||
if(!istype(usr,/mob/living/silicon/ai)) return
|
||||
if(toner >= 5 && !busy)
|
||||
var/list/nametemp = list()
|
||||
var/find
|
||||
@@ -254,14 +249,13 @@
|
||||
if(istype(O, /obj/item/weapon/paper))
|
||||
if(copier_empty())
|
||||
if(istype(O,/obj/item/weapon/paper/contract/infernal))
|
||||
user << "<span class='warning'>[src] smokes, smelling of brimstone!</span>"
|
||||
resistance_flags |= FLAMMABLE
|
||||
fire_act()
|
||||
user << "<span class='warning'>The [src] smokes, smelling of brimstone!</span>"
|
||||
burn_state = ON_FIRE
|
||||
else
|
||||
if(!user.drop_item())
|
||||
return
|
||||
copy = O
|
||||
do_insertion(O, user)
|
||||
do_insertion(O)
|
||||
else
|
||||
user << "<span class='warning'>There is already something in [src]!</span>"
|
||||
|
||||
@@ -270,7 +264,7 @@
|
||||
if(!user.drop_item())
|
||||
return
|
||||
photocopy = O
|
||||
do_insertion(O, user)
|
||||
do_insertion(O)
|
||||
else
|
||||
user << "<span class='warning'>There is already something in [src]!</span>"
|
||||
|
||||
@@ -279,7 +273,7 @@
|
||||
if(!user.drop_item())
|
||||
return
|
||||
doccopy = O
|
||||
do_insertion(O, user)
|
||||
do_insertion(O)
|
||||
else
|
||||
user << "<span class='warning'>There is already something in [src]!</span>"
|
||||
|
||||
@@ -298,9 +292,9 @@
|
||||
if(isinspace())
|
||||
user << "<span class='warning'>There's nothing to fasten [src] to!</span>"
|
||||
return
|
||||
playsound(loc, O.usesound, 50, 1)
|
||||
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
user << "<span class='warning'>You start [anchored ? "unwrenching" : "wrenching"] [src]...</span>"
|
||||
if(do_after(user, 20*O.toolspeed, target = src))
|
||||
if(do_after(user, 20/O.toolspeed, target = src))
|
||||
if(qdeleted(src))
|
||||
return
|
||||
user << "<span class='notice'>You [anchored ? "unwrench" : "wrench"] [src].</span>"
|
||||
@@ -308,8 +302,28 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/photocopier/obj_break(damage_flag)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
/obj/machinery/photocopier/ex_act(severity, target)
|
||||
switch(severity)
|
||||
if(1)
|
||||
qdel(src)
|
||||
if(2)
|
||||
if(prob(50))
|
||||
qdel(src)
|
||||
else
|
||||
if(toner > 0)
|
||||
new /obj/effect/decal/cleanable/oil(get_turf(src))
|
||||
toner = 0
|
||||
else
|
||||
if(prob(50))
|
||||
if(toner > 0)
|
||||
new /obj/effect/decal/cleanable/oil(get_turf(src))
|
||||
toner = 0
|
||||
|
||||
|
||||
/obj/machinery/photocopier/blob_act(obj/effect/blob/B)
|
||||
if(prob(50))
|
||||
qdel(src)
|
||||
else
|
||||
if(toner > 0)
|
||||
new /obj/effect/decal/cleanable/oil(get_turf(src))
|
||||
toner = 0
|
||||
@@ -354,7 +368,7 @@
|
||||
ass = null
|
||||
updateUsrDialog()
|
||||
return 0
|
||||
else if(ishuman(ass))
|
||||
else if(istype(ass,/mob/living/carbon/human))
|
||||
if(!ass.get_item_by_slot(slot_w_uniform) && !ass.get_item_by_slot(slot_wear_suit))
|
||||
return 1
|
||||
else
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
desc = "A camera film cartridge. Insert it into a camera to reload it."
|
||||
icon_state = "film"
|
||||
item_state = "electropack"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
resistance_flags = FLAMMABLE
|
||||
w_class = 1
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/*
|
||||
* Photo
|
||||
@@ -27,10 +27,9 @@
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "photo"
|
||||
item_state = "paper"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
resistance_flags = FLAMMABLE
|
||||
obj_integrity = 50
|
||||
max_integrity = 50
|
||||
w_class = 1
|
||||
burn_state = FLAMMABLE
|
||||
burntime = 5
|
||||
var/icon/img //Big photo image
|
||||
var/scribble //Scribble on the back.
|
||||
var/blueprints = 0 //Does it include the blueprints?
|
||||
@@ -95,7 +94,7 @@
|
||||
icon_state = "album"
|
||||
item_state = "briefcase"
|
||||
can_hold = list(/obj/item/weapon/photo)
|
||||
resistance_flags = FLAMMABLE
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/*
|
||||
* Camera
|
||||
@@ -106,7 +105,7 @@
|
||||
desc = "A polaroid camera."
|
||||
icon_state = "camera"
|
||||
item_state = "electropack"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
w_class = 2
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
materials = list(MAT_METAL=2000)
|
||||
@@ -188,10 +187,11 @@
|
||||
atoms.Add(T)
|
||||
for(var/atom/movable/A in T)
|
||||
if(A.invisibility)
|
||||
if(see_ghosts && isobserver(A))
|
||||
var/mob/dead/observer/O = A
|
||||
if(O.orbiting) //so you dont see ghosts following people like antags, etc.
|
||||
continue
|
||||
if(see_ghosts)
|
||||
if(istype(A, /mob/dead/observer))
|
||||
var/mob/dead/observer/O = A
|
||||
if(O.orbiting) //so you dont see ghosts following people like antags, etc.
|
||||
continue
|
||||
else
|
||||
continue
|
||||
atoms.Add(A)
|
||||
@@ -210,10 +210,8 @@
|
||||
|
||||
for(var/atom/A in sorted)
|
||||
var/icon/img = getFlatIcon(A)
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
if(L.lying)
|
||||
img.Turn(L.lying)
|
||||
if(istype(A, /mob/living) && A:lying)
|
||||
img.Turn(A:lying)
|
||||
|
||||
var/offX = 32 * (A.x - center.x) + A.pixel_x + 33
|
||||
var/offY = 32 * (A.y - center.y) + A.pixel_y + 33
|
||||
@@ -236,7 +234,7 @@
|
||||
var/mob_detail
|
||||
for(var/mob/M in the_turf)
|
||||
if(M.invisibility)
|
||||
if(see_ghosts && isobserver(M))
|
||||
if(see_ghosts && istype(M,/mob/dead/observer))
|
||||
var/mob/dead/observer/O = M
|
||||
if(O.orbiting)
|
||||
continue
|
||||
@@ -247,22 +245,22 @@
|
||||
else
|
||||
continue
|
||||
|
||||
var/list/holding = list()
|
||||
var/holding = null
|
||||
|
||||
if(isliving(M))
|
||||
if(istype(M, /mob/living))
|
||||
var/mob/living/L = M
|
||||
|
||||
for(var/obj/item/I in L.held_items)
|
||||
if(!holding)
|
||||
holding += "[L.p_they(TRUE)] [L.p_are()] holding \a [I]"
|
||||
else
|
||||
holding += " and \a [I]"
|
||||
holding = holding.Join()
|
||||
if(L.l_hand || L.r_hand)
|
||||
if(L.l_hand) holding = "They are holding \a [L.l_hand]"
|
||||
if(L.r_hand)
|
||||
if(holding)
|
||||
holding += " and \a [L.r_hand]"
|
||||
else
|
||||
holding = "They are holding \a [L.r_hand]"
|
||||
|
||||
if(!mob_detail)
|
||||
mob_detail = "You can see [L] on the photo[L.health < (L.maxHealth * 0.75) ? " - [L] looks hurt":""].[holding ? " [holding]":"."]. "
|
||||
mob_detail = "You can see [L] on the photo[L.health < 75 ? " - [L] looks hurt":""].[holding ? " [holding]":"."]. "
|
||||
else
|
||||
mob_detail += "You can also see [L] on the photo[L.health < (L.maxHealth * 0.75) ? " - [L] looks hurt":""].[holding ? " [holding]":"."]."
|
||||
mob_detail += "You can also see [L] on the photo[L.health < 75 ? " - [L] looks hurt":""].[holding ? " [holding]":"."]."
|
||||
|
||||
|
||||
return mob_detail
|
||||
@@ -270,7 +268,7 @@
|
||||
|
||||
/obj/item/device/camera/proc/captureimage(atom/target, mob/user, flag) //Proc for both regular and AI-based camera to take the image
|
||||
var/mobs = ""
|
||||
var/isAi = isAI(user)
|
||||
var/isAi = istype(user, /mob/living/silicon/ai)
|
||||
var/list/seen
|
||||
if(!isAi) //crappy check, but without it AI photos would be subject to line of sight from the AI Eye object. Made the best of it by moving the sec camera check inside
|
||||
if(user.client) //To make shooting through security cameras possible
|
||||
@@ -411,7 +409,7 @@
|
||||
qdel(P) //so 10 thousand picture items are not left in memory should an AI take them and then view them all
|
||||
|
||||
/obj/item/device/camera/siliconcam/proc/viewpictures(user)
|
||||
if(iscyborg(user)) // Cyborg
|
||||
if(isrobot(user)) // Cyborg
|
||||
var/mob/living/silicon/robot/C = src.loc
|
||||
var/obj/item/device/camera/siliconcam/Cinfo
|
||||
if(C.connected_ai)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "stamp-ok"
|
||||
item_state = "stamp"
|
||||
throwforce = 0
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
w_class = 1
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
materials = list(MAT_METAL=60)
|
||||
@@ -14,7 +14,7 @@
|
||||
attack_verb = list("stamped")
|
||||
|
||||
/obj/item/weapon/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>")
|
||||
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
|
||||
@@ -75,13 +75,11 @@
|
||||
/obj/item/weapon/stamp/chameleon
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
|
||||
var/list/stamp_types
|
||||
var/list/stamp_names
|
||||
/obj/item/weapon/stamp/chameleon/attack_self(mob/user)
|
||||
|
||||
/obj/item/weapon/stamp/chameleon/New()
|
||||
stamp_types = typesof(/obj/item/weapon/stamp) - src.type // Get all stamp types except our own
|
||||
var/list/stamp_types = typesof(/obj/item/weapon/stamp) - src.type // Get all stamp types except our own
|
||||
|
||||
stamp_names = list()
|
||||
var/list/stamp_names = list()
|
||||
// Generate them into a list
|
||||
for(var/i in stamp_types)
|
||||
var/obj/item/weapon/stamp/stamp_type = i
|
||||
@@ -89,15 +87,6 @@
|
||||
|
||||
stamp_names = sortList(stamp_names)
|
||||
|
||||
/obj/item/weapon/stamp/chameleon/emp_act(severity)
|
||||
change_to(pick(stamp_types))
|
||||
|
||||
/obj/item/weapon/stamp/chameleon/proc/change_to(obj/item/weapon/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)
|
||||
var/input_stamp = input(user, "Choose a stamp to disguise as.",
|
||||
"Choose a stamp.") as null|anything in stamp_names
|
||||
|
||||
@@ -107,4 +96,7 @@
|
||||
stamp_type = i
|
||||
if(initial(stamp_type.name) == input_stamp)
|
||||
break
|
||||
change_to(stamp_type)
|
||||
|
||||
name = initial(stamp_type.name)
|
||||
icon_state = initial(stamp_type.icon_state)
|
||||
item_color = initial(stamp_type.item_color)
|
||||
|
||||
Reference in New Issue
Block a user