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:
Poojawa
2017-03-21 11:44:10 -05:00
committed by GitHub
parent 099a6c8764
commit f67e9f6d87
1476 changed files with 344416 additions and 40694 deletions
+3 -3
View File
@@ -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)
+13 -13
View File
@@ -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)
+8 -8
View File
@@ -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>")
+1 -1
View File
@@ -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)
+11 -11
View File
@@ -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
+6 -6
View File
@@ -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))
+6 -6
View File
@@ -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))
+7 -7
View File
@@ -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()
+7 -6
View File
@@ -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>")
+42 -7
View File
@@ -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()
+14 -14
View File
@@ -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 ..()
+17 -17
View File
@@ -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>")
..()