Bleeding edgy refresh (#303)
* not code stuff * other things * global vars, defines, helpers * onclick hud stuff, orphans, world.dm * controllers and datums * game folder * everything not client/mobs in modules * client folder * stage 1 mob stuff * simple animal things * silicons * carbon things * ayylmaos and monkeys * hyoomahn * icons n shit * sprite fixes * compile fixes * some fixes I cherrypicked. * qdel fixes * forgot brain refractors
This commit is contained in:
@@ -32,7 +32,7 @@
|
||||
if(!user.transferItemToLoc(W, src))
|
||||
return
|
||||
toppaper = W
|
||||
user << "<span class='notice'>You clip the paper onto \the [src].</span>"
|
||||
to_chat(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)
|
||||
@@ -81,7 +81,7 @@
|
||||
if(!usr.transferItemToLoc(W, src))
|
||||
return
|
||||
haspen = W
|
||||
usr << "<span class='notice'>You slot [W] into [src].</span>"
|
||||
to_chat(usr, "<span class='notice'>You slot [W] into [src].</span>")
|
||||
|
||||
if(href_list["write"])
|
||||
var/obj/item/P = locate(href_list["write"])
|
||||
@@ -111,7 +111,7 @@
|
||||
var/obj/item/P = locate(href_list["top"])
|
||||
if(istype(P) && P.loc == src)
|
||||
toppaper = P
|
||||
usr << "<span class='notice'>You move [P.name] to the top.</span>"
|
||||
to_chat(usr, "<span class='notice'>You move [P.name] to the top.</span>")
|
||||
|
||||
//Update everything
|
||||
attack_self(usr)
|
||||
|
||||
@@ -40,14 +40,14 @@
|
||||
deconvert = prob (10) // the HoP doesn't have AS much legal training
|
||||
if(deconvert)
|
||||
M.visible_message("<span class='notice'>[user] reminds [M] that [M]'s soul was already purchased by Nanotrasen!</span>")
|
||||
M << "<span class='boldnotice'>You feel that your soul has returned to its rightful owner, Nanotrasen.</span>"
|
||||
to_chat(M, "<span class='boldnotice'>You feel that your soul has returned to its rightful owner, Nanotrasen.</span>")
|
||||
M.return_soul()
|
||||
else
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/N = M
|
||||
if(!istype(N.head, /obj/item/clothing/head/helmet))
|
||||
N.adjustBrainLoss(10)
|
||||
N << "<span class='danger'>You feel dumber.</span>"
|
||||
to_chat(N, "<span class='danger'>You feel dumber.</span>")
|
||||
M.visible_message("<span class='danger'>[user] beats [M] over the head with [src]!</span>", \
|
||||
"<span class='userdanger'>[user] beats [M] over the head with [src]!</span>")
|
||||
return ..()
|
||||
@@ -164,7 +164,7 @@
|
||||
if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon))
|
||||
attempt_signature(user)
|
||||
else if(istype(P, /obj/item/weapon/stamp))
|
||||
user << "<span class='notice'>You stamp the paper with your rubber stamp, however the ink ignites as you release the stamp.</span>"
|
||||
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
|
||||
@@ -183,21 +183,21 @@
|
||||
if(user.mind == target)
|
||||
if(user.mind.soulOwner != owner)
|
||||
if (contractType == CONTRACT_REVIVE)
|
||||
user << "<span class='notice'>You are already alive, this contract would do nothing.</span>"
|
||||
to_chat(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>"
|
||||
to_chat(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>"
|
||||
to_chat(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>"
|
||||
to_chat(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>"
|
||||
to_chat(user, "<span class='notice'>This devil already owns your soul, you may not sell it to them again.</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>"
|
||||
to_chat(user, "<span class='notice'>Your signature simply slides off the sheet, it seems this contract is not meant for you to sign.</span>")
|
||||
else
|
||||
user << "<span class='notice'>You don't know how to read or write.</span>"
|
||||
to_chat(user, "<span class='notice'>You don't know how to read or write.</span>")
|
||||
return 0
|
||||
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
/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>"
|
||||
to_chat(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
|
||||
@@ -242,8 +242,8 @@
|
||||
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>"
|
||||
to_chat(user, "<span class='notice'>A profound emptiness washes over you as you lose ownership of your soul.</span>")
|
||||
to_chat(user, "<span class='boldnotice'>This does NOT make you an antagonist if you were not already.</span>")
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/paper/contract/infernal/power/FulfillContract(mob/living/carbon/human/user = target.current, blood = 0)
|
||||
|
||||
@@ -49,27 +49,27 @@
|
||||
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(!user.drop_item())
|
||||
return
|
||||
user << "<span class='notice'>You put [P] in [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You put [P] in [src].</span>")
|
||||
P.loc = src
|
||||
icon_state = "[initial(icon_state)]-open"
|
||||
sleep(5)
|
||||
icon_state = initial(icon_state)
|
||||
updateUsrDialog()
|
||||
else if(istype(P, /obj/item/weapon/wrench))
|
||||
user << "<span class='notice'>You begin to [anchored ? "unwrench" : "wrench"] [src].</span>"
|
||||
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))
|
||||
user << "<span class='notice'>You successfully [anchored ? "unwrench" : "wrench"] [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You successfully [anchored ? "unwrench" : "wrench"] [src].</span>")
|
||||
anchored = !anchored
|
||||
else if(user.a_intent != INTENT_HARM)
|
||||
user << "<span class='warning'>You can't put [P] in [src]!</span>"
|
||||
to_chat(user, "<span class='warning'>You can't put [P] in [src]!</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/structure/filingcabinet/attack_hand(mob/user)
|
||||
if(contents.len <= 0)
|
||||
user << "<span class='notice'>[src] is empty.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] is empty.</span>")
|
||||
return
|
||||
|
||||
user.set_machine(src)
|
||||
@@ -94,9 +94,9 @@
|
||||
I.loc = loc
|
||||
if(prob(25))
|
||||
step_rand(I)
|
||||
user << "<span class='notice'>You pull \a [I] out of [src] at random.</span>"
|
||||
to_chat(user, "<span class='notice'>You pull \a [I] out of [src] at random.</span>")
|
||||
return
|
||||
user << "<span class='notice'>You find nothing in [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You find nothing in [src].</span>")
|
||||
|
||||
/obj/structure/filingcabinet/Topic(href, href_list)
|
||||
if(href_list["retrieve"])
|
||||
@@ -217,4 +217,4 @@ var/list/employmentCabinets = list()
|
||||
sleep(100) // prevents the devil from just instantly emptying the cabinet, ensuring an easy win.
|
||||
cooldown = 0
|
||||
else
|
||||
user << "<span class='warning'>The [src] is jammed, give it a few seconds.</span>"
|
||||
to_chat(user, "<span class='warning'>The [src] is jammed, give it a few seconds.</span>")
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo) || istype(W, /obj/item/documents))
|
||||
if(!user.transferItemToLoc(W, src))
|
||||
return
|
||||
user << "<span class='notice'>You put [W] into [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You put [W] into [src].</span>")
|
||||
update_icon()
|
||||
else if(istype(W, /obj/item/weapon/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)
|
||||
|
||||
@@ -41,19 +41,19 @@
|
||||
return
|
||||
|
||||
if(!labels_left)
|
||||
user << "<span class='warning'>No labels left!</span>"
|
||||
to_chat(user, "<span class='warning'>No labels left!</span>")
|
||||
return
|
||||
if(!label || !length(label))
|
||||
user << "<span class='warning'>No text set!</span>"
|
||||
to_chat(user, "<span class='warning'>No text set!</span>")
|
||||
return
|
||||
if(length(A.name) + length(label) > 64)
|
||||
user << "<span class='warning'>Label too big!</span>"
|
||||
to_chat(user, "<span class='warning'>Label too big!</span>")
|
||||
return
|
||||
if(ishuman(A))
|
||||
user << "<span class='warning'>You can't label humans!</span>"
|
||||
to_chat(user, "<span class='warning'>You can't label humans!</span>")
|
||||
return
|
||||
if(issilicon(A))
|
||||
user << "<span class='warning'>You can't label cyborgs!</span>"
|
||||
to_chat(user, "<span class='warning'>You can't label cyborgs!</span>")
|
||||
return
|
||||
|
||||
user.visible_message("[user] labels [A] as [label].", \
|
||||
@@ -64,26 +64,26 @@
|
||||
|
||||
/obj/item/weapon/hand_labeler/attack_self(mob/user)
|
||||
if(!user.IsAdvancedToolUser())
|
||||
user << "<span class='warning'>You don't have the dexterity to use [src]!</span>"
|
||||
to_chat(user, "<span class='warning'>You don't have the dexterity to use [src]!</span>")
|
||||
return
|
||||
mode = !mode
|
||||
icon_state = "labeler[mode]"
|
||||
if(mode)
|
||||
user << "<span class='notice'>You turn on [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You turn on [src].</span>")
|
||||
//Now let them chose the text.
|
||||
var/str = copytext(reject_bad_text(input(user,"Label text?","Set label","")),1,MAX_NAME_LEN)
|
||||
if(!str || !length(str))
|
||||
user << "<span class='warning'>Invalid text!</span>"
|
||||
to_chat(user, "<span class='warning'>Invalid text!</span>")
|
||||
return
|
||||
label = str
|
||||
user << "<span class='notice'>You set the text to '[str]'.</span>"
|
||||
to_chat(user, "<span class='notice'>You set the text to '[str]'.</span>")
|
||||
else
|
||||
user << "<span class='notice'>You turn off [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You turn off [src].</span>")
|
||||
|
||||
/obj/item/weapon/hand_labeler/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/hand_labeler_refill))
|
||||
user << "<span class='notice'>You insert [I] into [src].</span>"
|
||||
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
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
|
||||
if(istype(src, /obj/item/weapon/paper/talisman)) //Talismans cannot be read
|
||||
if(!iscultist(user) && !user.stat)
|
||||
user << "<span class='danger'>There are indecipherable images scrawled on the paper in what looks to be... <i>blood?</i></span>"
|
||||
to_chat(user, "<span class='danger'>There are indecipherable images scrawled on the paper in what looks to be... <i>blood?</i></span>")
|
||||
return
|
||||
if(in_range(user, src) || isobserver(user))
|
||||
if(user.is_literate())
|
||||
@@ -79,7 +79,7 @@
|
||||
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(info)]<HR>[stamps]</BODY></HTML>", "window=[name]")
|
||||
onclose(user, "[name]")
|
||||
else
|
||||
user << "<span class='notice'>It is too far away.</span>"
|
||||
to_chat(user, "<span class='notice'>It is too far away.</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/paper/verb/rename()
|
||||
@@ -92,7 +92,7 @@
|
||||
if(ishuman(usr))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
if(H.disabilities & CLUMSY && prob(25))
|
||||
H << "<span class='warning'>You cut yourself on the paper! Ahhhh! Ahhhhh!</span>"
|
||||
to_chat(H, "<span class='warning'>You cut yourself on the paper! Ahhhh! Ahhhhh!</span>")
|
||||
H.damageoverlaytemp = 9001
|
||||
H.update_damage_hud()
|
||||
return
|
||||
@@ -320,10 +320,10 @@
|
||||
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[info_links]<HR>[stamps]</BODY></HTML>", "window=[name]")
|
||||
return
|
||||
else
|
||||
user << "<span class='notice'>You don't know how to read or write.</span>"
|
||||
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/))
|
||||
user << "<span class='warning'>[P]'s ink fades away shortly after it is written.</span>"
|
||||
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))
|
||||
@@ -341,7 +341,7 @@
|
||||
LAZYADD(stamped, P.icon_state)
|
||||
add_overlay(stampoverlay)
|
||||
|
||||
user << "<span class='notice'>You stamp the paper with your rubber stamp.</span>"
|
||||
to_chat(user, "<span class='notice'>You stamp the paper with your rubber stamp.</span>")
|
||||
|
||||
if(P.is_hot())
|
||||
if(user.disabilities & CLUMSY && prob(10))
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
if(!user.drop_item())
|
||||
return
|
||||
playsound(loc, "pageturn", 60, 1)
|
||||
user << "<span class='notice'>You place [P] in [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You place [P] in [src].</span>")
|
||||
P.loc = src
|
||||
storedpaper = P
|
||||
update_icon()
|
||||
@@ -55,14 +55,14 @@
|
||||
if(istype(P, /obj/item/weapon/hatchet/cutterblade) && !storedcutter)
|
||||
if(!user.drop_item())
|
||||
return
|
||||
user << "<span class='notice'>You replace [src]'s [P].</span>"
|
||||
to_chat(user, "<span class='notice'>You replace [src]'s [P].</span>")
|
||||
P.loc = src
|
||||
storedcutter = P
|
||||
update_icon()
|
||||
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>"
|
||||
to_chat(user, "<span class='notice'>[storedcutter] has been [cuttersecured ? "unsecured" : "secured"].</span>")
|
||||
cuttersecured = !cuttersecured
|
||||
return
|
||||
..()
|
||||
@@ -71,18 +71,18 @@
|
||||
/obj/item/weapon/papercutter/attack_hand(mob/user)
|
||||
add_fingerprint(user)
|
||||
if(!storedcutter)
|
||||
user << "<span class='notice'>The cutting blade is gone! You can't use [src] now.</span>"
|
||||
to_chat(user, "<span class='notice'>The cutting blade is gone! You can't use [src] now.</span>")
|
||||
return
|
||||
|
||||
if(!cuttersecured)
|
||||
user << "<span class='notice'>You remove [src]'s [storedcutter].</span>"
|
||||
to_chat(user, "<span class='notice'>You remove [src]'s [storedcutter].</span>")
|
||||
user.put_in_hands(storedcutter)
|
||||
storedcutter = null
|
||||
update_icon()
|
||||
|
||||
if(storedpaper)
|
||||
playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1)
|
||||
user << "<span class='notice'>You neatly cut [storedpaper].</span>"
|
||||
to_chat(user, "<span class='notice'>You neatly cut [storedpaper].</span>")
|
||||
storedpaper = null
|
||||
qdel(storedpaper)
|
||||
new /obj/item/weapon/paperslip(get_turf(src))
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
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>"
|
||||
to_chat(user, "<span class='notice'>You take [P] out of \the [src].</span>")
|
||||
bin_pen = null
|
||||
update_icon()
|
||||
else if(total_paper >= 1)
|
||||
@@ -94,9 +94,9 @@
|
||||
|
||||
P.loc = user.loc
|
||||
user.put_in_hands(P)
|
||||
user << "<span class='notice'>You take [P] out of \the [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You take [P] out of \the [src].</span>")
|
||||
else
|
||||
user << "<span class='warning'>[src] is empty!</span>"
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
var/obj/item/weapon/paper/P = I
|
||||
if(!user.transferItemToLoc(P, src))
|
||||
return
|
||||
user << "<span class='notice'>You put [P] in [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You put [P] in [src].</span>")
|
||||
papers.Add(P)
|
||||
total_paper++
|
||||
update_icon()
|
||||
@@ -114,7 +114,7 @@
|
||||
var/obj/item/weapon/pen/P = I
|
||||
if(!user.transferItemToLoc(P, src))
|
||||
return
|
||||
user << "<span class='notice'>You put [P] in [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You put [P] in [src].</span>")
|
||||
bin_pen = P
|
||||
update_icon()
|
||||
else
|
||||
@@ -123,9 +123,9 @@
|
||||
/obj/item/weapon/paper_bin/examine(mob/user)
|
||||
..()
|
||||
if(total_paper)
|
||||
user << "It contains " + (total_paper > 1 ? "[total_paper] papers" : " one paper")+"."
|
||||
to_chat(user, "It contains " + (total_paper > 1 ? "[total_paper] papers" : " one paper")+".")
|
||||
else
|
||||
user << "It doesn't contain anything."
|
||||
to_chat(user, "It doesn't contain anything.")
|
||||
|
||||
|
||||
/obj/item/weapon/paper_bin/update_icon()
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
var/obj/item/weapon/paper/internalPaper
|
||||
|
||||
/obj/item/weapon/paperplane/New(loc, obj/item/weapon/paper/newPaper)
|
||||
/obj/item/weapon/paperplane/Initialize(mapload, obj/item/weapon/paper/newPaper)
|
||||
..()
|
||||
pixel_y = rand(-8, 8)
|
||||
pixel_x = rand(-9, 9)
|
||||
@@ -48,8 +48,9 @@
|
||||
add_overlay(stampoverlay)
|
||||
|
||||
/obj/item/weapon/paperplane/attack_self(mob/user)
|
||||
user << "<span class='notice'>You unfold [src].</span>"
|
||||
var/internal_paper_tmp = internalPaper
|
||||
to_chat(user, "<span class='notice'>You unfold [src].</span>")
|
||||
var/atom/movable/internal_paper_tmp = internalPaper
|
||||
internal_paper_tmp.forceMove(loc)
|
||||
internalPaper = null
|
||||
qdel(src)
|
||||
user.put_in_hands(internal_paper_tmp)
|
||||
@@ -57,7 +58,7 @@
|
||||
/obj/item/weapon/paperplane/attackby(obj/item/weapon/P, mob/living/carbon/human/user, params)
|
||||
..()
|
||||
if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon))
|
||||
user << "<span class='notice'>You should unfold [src] before changing it.</span>"
|
||||
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
|
||||
@@ -102,9 +103,9 @@
|
||||
if ( istype(user) )
|
||||
if( (!in_range(src, user)) || user.stat || user.restrained() )
|
||||
return
|
||||
user << "<span class='notice'>You fold [src] into the shape of a plane!</span>"
|
||||
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)
|
||||
user.put_in_hands(I)
|
||||
else
|
||||
user << "<span class='notice'> You lack the dexterity to fold \the [src]. </span>"
|
||||
to_chat(user, "<span class='notice'> You lack the dexterity to fold \the [src]. </span>")
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
colour = "blue"
|
||||
else
|
||||
colour = "black"
|
||||
user << "<span class='notice'>\The [src] will now write in [colour].</span>"
|
||||
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]."
|
||||
|
||||
|
||||
@@ -69,9 +69,9 @@
|
||||
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
|
||||
user << "<span class='notice'>You rotate the top of the pen to [degrees] degrees.</span>"
|
||||
to_chat(user, "<span class='notice'>You rotate the top of the pen to [degrees] degrees.</span>")
|
||||
if(hidden_uplink && degrees == traitor_unlock_degrees)
|
||||
user << "<span class='warning'>Your pen makes a clicking noise, before quickly rotating back to 0 degrees!</span>"
|
||||
to_chat(user, "<span class='warning'>Your pen makes a clicking noise, before quickly rotating back to 0 degrees!</span>")
|
||||
degrees = 0
|
||||
hidden_uplink.interact(user)
|
||||
|
||||
@@ -89,9 +89,9 @@
|
||||
|
||||
if(!force)
|
||||
if(M.can_inject(user, 1))
|
||||
user << "<span class='warning'>You stab [M] with the pen.</span>"
|
||||
to_chat(user, "<span class='warning'>You stab [M] with the pen.</span>")
|
||||
if(!stealth)
|
||||
M << "<span class='danger'>You feel a tiny prick!</span>"
|
||||
to_chat(M, "<span class='danger'>You feel a tiny prick!</span>")
|
||||
. = 1
|
||||
|
||||
add_logs(user, M, "stabbed", src)
|
||||
@@ -99,6 +99,41 @@
|
||||
else
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/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)
|
||||
var/penchoice = input(user, "What would you like to edit?", "Rename or change description?") as null|anything in list("Rename","Change description")
|
||||
if(!QDELETED(O) && user.canUseTopic(O, be_close = TRUE))
|
||||
|
||||
if(penchoice == "Rename")
|
||||
var/input = stripped_input(user,"What do you want to name \the [O.name]?", ,"", MAX_NAME_LEN)
|
||||
var/oldname = O.name
|
||||
if(!QDELETED(O) && user.canUseTopic(O, be_close = TRUE))
|
||||
if(oldname == input)
|
||||
to_chat(user, "You changed \the [O.name] to... well... \the [O.name].")
|
||||
return
|
||||
else
|
||||
O.name = input
|
||||
to_chat(user, "\The [oldname] has been successfully been renamed to \the [input].")
|
||||
return
|
||||
else
|
||||
to_chat(user, "You are too far away!")
|
||||
|
||||
if(penchoice == "Change description")
|
||||
var/input = stripped_input(user,"Describe \the [O.name] here", ,"", 100)
|
||||
if(!QDELETED(O) && user.canUseTopic(O, be_close = TRUE))
|
||||
O.desc = input
|
||||
to_chat(user, "You have successfully changed \the [O.name]'s description.")
|
||||
return
|
||||
else
|
||||
to_chat(user, "You are too far away!")
|
||||
else
|
||||
to_chat(user, "You are too far away!")
|
||||
return
|
||||
else
|
||||
return
|
||||
|
||||
/*
|
||||
* Sleepypens
|
||||
*/
|
||||
@@ -142,7 +177,7 @@
|
||||
embed_chance = initial(embed_chance)
|
||||
throwforce = initial(throwforce)
|
||||
playsound(user, 'sound/weapons/saberoff.ogg', 5, 1)
|
||||
user << "<span class='warning'>[src] can now be concealed.</span>"
|
||||
to_chat(user, "<span class='warning'>[src] can now be concealed.</span>")
|
||||
else
|
||||
on = 1
|
||||
force = 18
|
||||
@@ -152,7 +187,7 @@
|
||||
embed_chance = 100 //rule of cool
|
||||
throwforce = 35
|
||||
playsound(user, 'sound/weapons/saberon.ogg', 5, 1)
|
||||
user << "<span class='warning'>[src] is now active.</span>"
|
||||
to_chat(user, "<span class='warning'>[src] is now active.</span>")
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/pen/edagger/update_icon()
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
for(var/i = 0, i < copies, i++)
|
||||
var/icon/temp_img
|
||||
if(ishuman(ass) && (ass.get_item_by_slot(slot_w_uniform) || ass.get_item_by_slot(slot_wear_suit)))
|
||||
usr << "<span class='notice'>You feel kind of silly, copying [ass == usr ? "your" : ass][ass == usr ? "" : "\'s"] ass with [ass == usr ? "your" : "their"] clothes on.</span>" //'
|
||||
to_chat(usr, "<span class='notice'>You feel kind of silly, copying [ass == usr ? "your" : ass][ass == usr ? "" : "\'s"] ass with [ass == usr ? "your" : "their"] clothes on.</span>" )
|
||||
break
|
||||
else if(toner >= 5 && !busy && check_ass()) //You have to be sitting on the copier and either be a xeno or a human without clothes on.
|
||||
if(isalienadult(ass) || istype(ass,/mob/living/simple_animal/hostile/alien)) //Xenos have their own asses, thanks to Pybro.
|
||||
@@ -187,7 +187,7 @@
|
||||
remove_photocopy(doccopy, usr)
|
||||
doccopy = null
|
||||
else if(check_ass())
|
||||
ass << "<span class='notice'>You feel a slight pressure on your ass.</span>"
|
||||
to_chat(ass, "<span class='notice'>You feel a slight pressure on your ass.</span>")
|
||||
updateUsrDialog()
|
||||
else if(href_list["min"])
|
||||
if(copies > 1)
|
||||
@@ -206,7 +206,7 @@
|
||||
var/datum/picture/selection
|
||||
var/mob/living/silicon/ai/tempAI = usr
|
||||
if(tempAI.aicamera.aipictures.len == 0)
|
||||
usr << "<span class='boldannounce'>No images saved</span>"
|
||||
to_chat(usr, "<span class='boldannounce'>No images saved</span>")
|
||||
return
|
||||
for(var/datum/picture/t in tempAI.aicamera.aipictures)
|
||||
nametemp += t.fields["name"]
|
||||
@@ -238,7 +238,7 @@
|
||||
|
||||
/obj/machinery/photocopier/proc/do_insertion(obj/item/O, mob/user)
|
||||
O.loc = src
|
||||
user << "<span class ='notice'>You insert [O] into [src].</span>"
|
||||
to_chat(user, "<span class ='notice'>You insert [O] into [src].</span>")
|
||||
flick("photocopier1", src)
|
||||
updateUsrDialog()
|
||||
|
||||
@@ -248,13 +248,13 @@
|
||||
user.put_in_hands(O)
|
||||
else
|
||||
O.loc = src.loc
|
||||
user << "<span class='notice'>You take [O] out of [src].</span>"
|
||||
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(copier_empty())
|
||||
if(istype(O,/obj/item/weapon/paper/contract/infernal))
|
||||
user << "<span class='warning'>[src] smokes, smelling of brimstone!</span>"
|
||||
to_chat(user, "<span class='warning'>[src] smokes, smelling of brimstone!</span>")
|
||||
resistance_flags |= FLAMMABLE
|
||||
fire_act()
|
||||
else
|
||||
@@ -263,7 +263,7 @@
|
||||
copy = O
|
||||
do_insertion(O, user)
|
||||
else
|
||||
user << "<span class='warning'>There is already something in [src]!</span>"
|
||||
to_chat(user, "<span class='warning'>There is already something in [src]!</span>")
|
||||
|
||||
else if(istype(O, /obj/item/weapon/photo))
|
||||
if(copier_empty())
|
||||
@@ -272,7 +272,7 @@
|
||||
photocopy = O
|
||||
do_insertion(O, user)
|
||||
else
|
||||
user << "<span class='warning'>There is already something in [src]!</span>"
|
||||
to_chat(user, "<span class='warning'>There is already something in [src]!</span>")
|
||||
|
||||
else if(istype(O, /obj/item/documents))
|
||||
if(copier_empty())
|
||||
@@ -281,7 +281,7 @@
|
||||
doccopy = O
|
||||
do_insertion(O, user)
|
||||
else
|
||||
user << "<span class='warning'>There is already something in [src]!</span>"
|
||||
to_chat(user, "<span class='warning'>There is already something in [src]!</span>")
|
||||
|
||||
else if(istype(O, /obj/item/device/toner))
|
||||
if(toner <= 0)
|
||||
@@ -289,21 +289,21 @@
|
||||
return
|
||||
qdel(O)
|
||||
toner = 40
|
||||
user << "<span class='notice'>You insert [O] into [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You insert [O] into [src].</span>")
|
||||
updateUsrDialog()
|
||||
else
|
||||
user << "<span class='warning'>This cartridge is not yet ready for replacement! Use up the rest of the toner.</span>"
|
||||
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))
|
||||
if(isinspace())
|
||||
user << "<span class='warning'>There's nothing to fasten [src] to!</span>"
|
||||
to_chat(user, "<span class='warning'>There's nothing to fasten [src] to!</span>")
|
||||
return
|
||||
playsound(loc, O.usesound, 50, 1)
|
||||
user << "<span class='warning'>You start [anchored ? "unwrenching" : "wrenching"] [src]...</span>"
|
||||
to_chat(user, "<span class='warning'>You start [anchored ? "unwrenching" : "wrenching"] [src]...</span>")
|
||||
if(do_after(user, 20*O.toolspeed, target = src))
|
||||
if(QDELETED(src))
|
||||
return
|
||||
user << "<span class='notice'>You [anchored ? "unwrench" : "wrench"] [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You [anchored ? "unwrench" : "wrench"] [src].</span>")
|
||||
anchored = !anchored
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
if(in_range(src, user))
|
||||
show(user)
|
||||
else
|
||||
user << "<span class='warning'>You need to get closer to get a good look at this photo!</span>"
|
||||
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)
|
||||
@@ -167,11 +167,11 @@
|
||||
/obj/item/device/camera/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/device/camera_film))
|
||||
if(pictures_left)
|
||||
user << "<span class='notice'>[src] still has some film in it!</span>"
|
||||
to_chat(user, "<span class='notice'>[src] still has some film in it!</span>")
|
||||
return
|
||||
if(!user.temporarilyRemoveItemFromInventory(I))
|
||||
return
|
||||
user << "<span class='notice'>You insert [I] into [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You insert [I] into [src].</span>")
|
||||
qdel(I)
|
||||
pictures_left = pictures_max
|
||||
return
|
||||
@@ -180,7 +180,7 @@
|
||||
|
||||
/obj/item/device/camera/examine(mob/user)
|
||||
..()
|
||||
user << "It has [pictures_left] photos left."
|
||||
to_chat(user, "It has [pictures_left] photos left.")
|
||||
|
||||
|
||||
/obj/item/device/camera/proc/camera_get_icon(list/turfs, turf/center)
|
||||
@@ -364,7 +364,7 @@
|
||||
P.fields["blueprints"] = blueprintsinject
|
||||
|
||||
aipictures += P
|
||||
usr << "<span class='unconscious'>Image recorded</span>" //feedback to the AI player that the picture was taken
|
||||
to_chat(usr, "<span class='unconscious'>Image recorded</span>") //feedback to the AI player that the picture was taken
|
||||
|
||||
/obj/item/device/camera/proc/injectmasteralbum(icon, img, desc, pixel_x, pixel_y, blueprintsinject) //stores image information to a list similar to that of the datacore
|
||||
var/numberer = 1
|
||||
@@ -382,7 +382,7 @@
|
||||
P.fields["blueprints"] = blueprintsinject
|
||||
|
||||
C.connected_ai.aicamera.aipictures += P
|
||||
usr << "<span class='unconscious'>Image recorded and saved to remote database</span>" //feedback to the Cyborg player that the picture was taken
|
||||
to_chat(usr, "<span class='unconscious'>Image recorded and saved to remote database</span>") //feedback to the Cyborg player that the picture was taken
|
||||
else
|
||||
injectaialbum(icon, img, desc, pixel_x, pixel_y, blueprintsinject)
|
||||
|
||||
@@ -390,7 +390,7 @@
|
||||
var/list/nametemp = list()
|
||||
var/find
|
||||
if(targetloc.aipictures.len == 0)
|
||||
usr << "<span class='boldannounce'>No images saved</span>"
|
||||
to_chat(usr, "<span class='boldannounce'>No images saved</span>")
|
||||
return
|
||||
for(var/datum/picture/t in targetloc.aipictures)
|
||||
nametemp += t.fields["name"]
|
||||
@@ -408,7 +408,7 @@
|
||||
P.pixel_y = selection.fields["pixel_y"]
|
||||
|
||||
P.show(usr)
|
||||
usr << P.desc
|
||||
to_chat(usr, P.desc)
|
||||
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)
|
||||
@@ -434,7 +434,7 @@
|
||||
playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, 1, -3)
|
||||
|
||||
pictures_left--
|
||||
user << "<span class='notice'>[pictures_left] photos left.</span>"
|
||||
to_chat(user, "<span class='notice'>[pictures_left] photos left.</span>")
|
||||
icon_state = "camera_off"
|
||||
on = 0
|
||||
spawn(64)
|
||||
@@ -449,11 +449,11 @@
|
||||
|
||||
/obj/item/device/camera/siliconcam/proc/camera_mode_off()
|
||||
src.in_camera_mode = 0
|
||||
usr << "<B>Camera Mode deactivated</B>"
|
||||
to_chat(usr, "<B>Camera Mode deactivated</B>")
|
||||
|
||||
/obj/item/device/camera/siliconcam/proc/camera_mode_on()
|
||||
src.in_camera_mode = 1
|
||||
usr << "<B>Camera Mode activated</B>"
|
||||
to_chat(usr, "<B>Camera Mode activated</B>")
|
||||
|
||||
/obj/item/device/camera/siliconcam/robot_camera/proc/borgprint()
|
||||
var/list/nametemp = list()
|
||||
@@ -462,14 +462,14 @@
|
||||
var/mob/living/silicon/robot/C = src.loc
|
||||
var/obj/item/device/camera/siliconcam/targetcam = null
|
||||
if(C.toner < 20)
|
||||
usr << "Insufficent toner to print image."
|
||||
to_chat(usr, "Insufficent toner to print image.")
|
||||
return
|
||||
if(C.connected_ai)
|
||||
targetcam = C.connected_ai.aicamera
|
||||
else
|
||||
targetcam = C.aicamera
|
||||
if(targetcam.aipictures.len == 0)
|
||||
usr << "<span class='userdanger'>No images saved</span>"
|
||||
to_chat(usr, "<span class='userdanger'>No images saved</span>")
|
||||
return
|
||||
for(var/datum/picture/t in targetcam.aipictures)
|
||||
nametemp += t.fields["name"]
|
||||
@@ -484,7 +484,7 @@
|
||||
p.pixel_y = rand(-10, 10)
|
||||
C.toner -= 20 //Cyborgs are very ineffeicient at printing an image
|
||||
visible_message("[C.name] spits out a photograph from a narrow slot on its chassis.")
|
||||
usr << "<span class='notice'>You print a photograph.</span>"
|
||||
to_chat(usr, "<span class='notice'>You print a photograph.</span>")
|
||||
|
||||
// Picture frames
|
||||
|
||||
@@ -504,7 +504,7 @@
|
||||
displayed = P
|
||||
update_icon()
|
||||
else
|
||||
user << "<span class=notice>\The [src] already contains a photo.</span>"
|
||||
to_chat(user, "<span class=notice>\The [src] already contains a photo.</span>")
|
||||
|
||||
..()
|
||||
|
||||
@@ -515,7 +515,7 @@
|
||||
if(contents.len)
|
||||
var/obj/item/I = pick(contents)
|
||||
user.put_in_hands(I)
|
||||
user << "<span class='notice'>You carefully remove the photo from \the [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You carefully remove the photo from \the [src].</span>")
|
||||
displayed = null
|
||||
update_icon()
|
||||
|
||||
@@ -592,7 +592,7 @@
|
||||
framed = P
|
||||
update_icon()
|
||||
else
|
||||
user << "<span class=notice>\The [src] already contains a photo.</span>"
|
||||
to_chat(user, "<span class=notice>\The [src] already contains a photo.</span>")
|
||||
|
||||
..()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user