Ports Goonchat

This commit is contained in:
CitadelStationBot
2017-06-08 16:27:56 -05:00
parent 00790c0fdd
commit d9e3699f88
83 changed files with 2954 additions and 162 deletions
+1 -1
View File
@@ -167,7 +167,7 @@ mob
Output_Icon()
set name = "2. Output Icon"
to_chat(src, "Icon is: \icon[getFlatIcon(src)]")
to_chat(src, "Icon is: [bicon(getFlatIcon(src))]")
Label_Icon()
set name = "3. Label Icon"
+2 -2
View File
@@ -834,11 +834,11 @@ GLOBAL_LIST_INIT(WALLITEMS_INVERSE, typecacheof(list(
/obj/proc/atmosanalyzer_scan(datum/gas_mixture/air_contents, mob/user, obj/target = src)
var/obj/icon = target
user.visible_message("[user] has used the analyzer on \icon[icon] [target].", "<span class='notice'>You use the analyzer on \icon[icon] [target].</span>")
user.visible_message("[user] has used the analyzer on [bicon(icon)] [target].", "<span class='notice'>You use the analyzer on [bicon(icon)] [target].</span>")
var/pressure = air_contents.return_pressure()
var/total_moles = air_contents.total_moles()
to_chat(user, "<span class='notice'>Results of analysis of \icon[icon] [target].</span>")
to_chat(user, "<span class='notice'>Results of analysis of [bicon(icon)] [target].</span>")
if(total_moles>0)
to_chat(user, "<span class='notice'>Pressure: [round(pressure,0.1)] kPa</span>")
+13
View File
@@ -0,0 +1,13 @@
diff a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm (rejected hunks)
@@ -1422,6 +1422,7 @@ var/valid_HTTPSGet = FALSE
fdel(temp_file)
#define UNTIL(X) while(!(X)) stoplag()
-
+/*
/proc/to_chat(target, message)
- target << message
\ No newline at end of file
+ target << message
+ */
\ No newline at end of file
+8 -1
View File
@@ -92,6 +92,10 @@
"}
/datum/browser/proc/open(use_onclose = 1)
if(isnull(window_id)) //null check because this can potentially nuke goonchat
WARNING("Browser [title] tried to open with a null ID")
to_chat(user, "<span class='userdanger'>The [title] browser you tried to open failed a sanity check! Please report this on github!</span>")
return
var/window_size = ""
if (width && height)
window_size = "size=[width]x[height];"
@@ -111,7 +115,10 @@
break
/datum/browser/proc/close()
user << browse(null, "window=[window_id]")
if(!isnull(window_id))//null check because this can potentially nuke goonchat
user << browse(null, "window=[window_id]")
else
WARNING("Browser [title] tried to close with a null ID")
/datum/browser/alert
var/selectedbutton = 0
+5 -5
View File
@@ -20,12 +20,12 @@
var/mob/living/simple_animal/bot/mulebot/M = holder
switch(wire)
if(WIRE_POWER1, WIRE_POWER2)
holder.visible_message("<span class='notice'>\icon[M] The charge light flickers.</span>")
holder.visible_message("<span class='notice'>[bicon(M)] The charge light flickers.</span>")
if(WIRE_AVOIDANCE)
holder.visible_message("<span class='notice'>\icon[M] The external warning lights flash briefly.</span>")
holder.visible_message("<span class='notice'>[bicon(M)] The external warning lights flash briefly.</span>")
if(WIRE_LOADCHECK)
holder.visible_message("<span class='notice'>\icon[M] The load platform clunks.</span>")
holder.visible_message("<span class='notice'>[bicon(M)] The load platform clunks.</span>")
if(WIRE_MOTOR1, WIRE_MOTOR2)
holder.visible_message("<span class='notice'>\icon[M] The drive motor whines briefly.</span>")
holder.visible_message("<span class='notice'>[bicon(M)] The drive motor whines briefly.</span>")
else
holder.visible_message("<span class='notice'>\icon[M] You hear a radio crackle.</span>")
holder.visible_message("<span class='notice'>[bicon(M)] You hear a radio crackle.</span>")
+1 -1
View File
@@ -25,7 +25,7 @@
if(WIRE_INTERFACE)
C.interface_control = !C.interface_control
if(WIRE_LIMIT)
C.visible_message("\icon[C]<b>[C]</b> makes a large whirring noise.")
C.visible_message("[bicon(C)]<b>[C]</b> makes a large whirring noise.")
/datum/wires/particle_accelerator/control_box/on_cut(wire, mend)
var/obj/machinery/particle_accelerator/control_box/C = holder
+12 -12
View File
@@ -19,21 +19,21 @@
switch(wire)
if(WIRE_BOOM)
if(B.active)
holder.visible_message("<span class='danger'>\icon[B] An alarm sounds! It's go-</span>")
holder.visible_message("<span class='danger'>[bicon(B)] An alarm sounds! It's go-</span>")
B.explode_now = TRUE
tell_admins(B)
if(WIRE_UNBOLT)
holder.visible_message("<span class='notice'>\icon[B] The bolts spin in place for a moment.</span>")
holder.visible_message("<span class='notice'>[bicon(B)] The bolts spin in place for a moment.</span>")
if(WIRE_DELAY)
if(B.delayedbig)
holder.visible_message("<span class='notice'>\icon[B] The bomb has already been delayed.</span>")
holder.visible_message("<span class='notice'>[bicon(B)] The bomb has already been delayed.</span>")
else
holder.visible_message("<span class='notice'>\icon[B] The bomb chirps.</span>")
holder.visible_message("<span class='notice'>[bicon(B)] The bomb chirps.</span>")
playsound(B, 'sound/machines/chime.ogg', 30, 1)
B.detonation_timer += 300
B.delayedbig = TRUE
if(WIRE_PROCEED)
holder.visible_message("<span class='danger'>\icon[B] The bomb buzzes ominously!</span>")
holder.visible_message("<span class='danger'>[bicon(B)] The bomb buzzes ominously!</span>")
playsound(B, 'sound/machines/buzz-sigh.ogg', 30, 1)
var/seconds = B.seconds_remaining()
if(seconds >= 61) // Long fuse bombs can suddenly become more dangerous if you tinker with them.
@@ -44,13 +44,13 @@
B.detonation_timer = world.time + 100
if(WIRE_ACTIVATE)
if(!B.active && !B.defused)
holder.visible_message("<span class='danger'>\icon[B] You hear the bomb start ticking!</span>")
holder.visible_message("<span class='danger'>[bicon(B)] You hear the bomb start ticking!</span>")
B.activate()
B.update_icon()
else if(B.delayedlittle)
holder.visible_message("<span class='notice'>\icon[B] Nothing happens.</span>")
holder.visible_message("<span class='notice'>[bicon(B)] Nothing happens.</span>")
else
holder.visible_message("<span class='notice'>\icon[B] The bomb seems to hesitate for a moment.</span>")
holder.visible_message("<span class='notice'>[bicon(B)] The bomb seems to hesitate for a moment.</span>")
B.detonation_timer += 100
B.delayedlittle = TRUE
@@ -62,24 +62,24 @@
B.defused = FALSE // Cutting and mending all the wires of an inactive bomb will thus cure any sabotage.
else
if(B.active)
holder.visible_message("<span class='danger'>\icon[B] An alarm sounds! It's go-</span>")
holder.visible_message("<span class='danger'>[bicon(B)] An alarm sounds! It's go-</span>")
B.explode_now = TRUE
tell_admins(B)
else
B.defused = TRUE
if(WIRE_UNBOLT)
if(!mend && B.anchored)
holder.visible_message("<span class='notice'>\icon[B] The bolts lift out of the ground!</span>")
holder.visible_message("<span class='notice'>[bicon(B)] The bolts lift out of the ground!</span>")
playsound(B, 'sound/effects/stealthoff.ogg', 30, 1)
B.anchored = FALSE
if(WIRE_PROCEED)
if(!mend && B.active)
holder.visible_message("<span class='danger'>\icon[B] An alarm sounds! It's go-</span>")
holder.visible_message("<span class='danger'>[bicon(B)] An alarm sounds! It's go-</span>")
B.explode_now = TRUE
tell_admins(B)
if(WIRE_ACTIVATE)
if(!mend && B.active)
holder.visible_message("<span class='notice'>\icon[B] The timer stops! The bomb has been defused!</span>")
holder.visible_message("<span class='notice'>[bicon(B)] The timer stops! The bomb has been defused!</span>")
B.active = FALSE
B.defused = TRUE
B.update_icon()
+1 -1
View File
@@ -249,7 +249,7 @@
f_name = "a "
f_name += "<span class='danger'>blood-stained</span> [name]!"
to_chat(user, "\icon[src] That's [f_name]")
to_chat(user, "[bicon(src)] That's [f_name]")
if(desc)
to_chat(user, desc)
+1 -1
View File
@@ -37,7 +37,7 @@
/mob/living/simple_animal/hostile/clockwork/examine(mob/user)
var/t_He = p_they(TRUE)
var/t_s = p_s()
var/msg = "<span class='brass'>*---------*\nThis is \icon[src] \a <b>[src]</b>!\n"
var/msg = "<span class='brass'>*---------*\nThis is [bicon(src)] \a <b>[src]</b>!\n"
msg += "[desc]\n"
if(health < maxHealth)
msg += "<span class='warning'>"
@@ -0,0 +1,10 @@
diff a/code/game/gamemodes/cult/cult_comms.dm b/code/game/gamemodes/cult/cult_comms.dm (rejected hunks)
@@ -171,7 +171,7 @@
return 0
if(cooldown > world.time)
if(!CM.active)
- owner << "<span class='cultlarge'><b>You need to wait [round((cooldown - world.time) * 0.1)] seconds before you can mark another target!</b></span>"
+ to_chat(owner, "<span class='cultlarge'><b>You need to wait [round((cooldown - world.time) * 0.1)] seconds before you can mark another target!</b></span>")
return 0
return ..()
+1 -1
View File
@@ -70,7 +70,7 @@ This file contains the arcane tome files.
/obj/item/weapon/tome/proc/read_tome(mob/user)
var/text = ""
text += "<center><font color='red' size=3><b><i>Archives of the Dark One</i></b></font></center><br><br><br>"
text += "A rune's name and effects can be revealed by examining the rune.<<br><br>"
text += "A rune's name and effects can be revealed by examining the rune.<br><br>"
text += "<font color='red'><b>Create Talisman</b></font><br>This rune is one of the most important runes the cult has, being the only way to create new talismans. A blank sheet of paper must be on top of the rune. After \
invoking it and choosing which talisman you desire, the paper will be converted, after some delay into a talisman.<br><br>"
@@ -66,15 +66,15 @@
/mob/living/carbon/true_devil/examine(mob/user)
var/msg = "<span class='info'>*---------*\nThis is \icon[src] <b>[src]</b>!\n"
var/msg = "<span class='info'>*---------*\nThis is [bicon(src)] <b>[src]</b>!\n"
//Left hand items
for(var/obj/item/I in held_items)
if(!(I.flags & ABSTRACT))
if(I.blood_DNA)
msg += "<span class='warning'>It is holding \icon[I] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in its [get_held_index_name(get_held_index_of_item(I))]!</span>\n"
msg += "<span class='warning'>It is holding [bicon(I)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in its [get_held_index_name(get_held_index_of_item(I))]!</span>\n"
else
msg += "It is holding \icon[I] \a [I] in its [get_held_index_name(get_held_index_of_item(I))].\n"
msg += "It is holding [bicon(I)] \a [I] in its [get_held_index_name(get_held_index_of_item(I))].\n"
//Braindead
if(!client && stat != DEAD)
+2 -2
View File
@@ -190,7 +190,7 @@
var/mob/living/mob = get(tool.loc,/mob/living)
if(mob && mob.mind && mob.stat == CONSCIOUS)
if(mob.mind.gang_datum == src)
to_chat(mob, "<span class='[warning ? "warning" : "notice"]'>\icon[tool] [message]</span>")
to_chat(mob, "<span class='[warning ? "warning" : "notice"]'>[bicon(tool)] [message]</span>")
return
@@ -284,7 +284,7 @@
G.points += points_newer
pmessage += "Your influential choice of clothing has further increased your influence by [points_newer] points.<BR>"
pmessage += "You now have <b>[G.points] influence</b>.<BR>"
to_chat(ganger, "<span class='notice'>\icon[G] [pmessage]</span>")
to_chat(ganger, "<span class='notice'>[bicon(G)] [pmessage]</span>")
//Multiverse
+1 -1
View File
@@ -66,4 +66,4 @@
cooldown = 0
icon_state = "pen"
var/mob/M = get(src, /mob)
to_chat(M, "<span class='notice'>\icon[src] [src][(src.loc == M)?(""):(" in your [src.loc]")] vibrates softly. It is ready to be used again.</span>")
to_chat(M, "<span class='notice'>[bicon(src)] [src][(src.loc == M)?(""):(" in your [src.loc]")] vibrates softly. It is ready to be used again.</span>")
+1 -1
View File
@@ -111,7 +111,7 @@
if(!message || !can_use(user))
return
if(user.z > 2)
to_chat(user, "<span class='info'>\icon[src]Error: Station out of range.</span>")
to_chat(user, "<span class='info'>[bicon(src)]Error: Station out of range.</span>")
return
var/list/members = list()
members += gang.gangsters
+53
View File
@@ -0,0 +1,53 @@
diff a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm (rejected hunks)
@@ -170,35 +170,35 @@
gang.message_gangtools("[usr] is attempting to recall the emergency shuttle.")
recalling = 1
- to_chat(loc, "<span class='info'>\icon[src]Generating shuttle recall order with codes retrieved from last call signal...</span>")
+ to_chat(loc, "<span class='info'>[bicon(src)]Generating shuttle recall order with codes retrieved from last call signal...</span>")
sleep(rand(100,300))
if(SSshuttle.emergency.mode != SHUTTLE_CALL) //Shuttle can only be recalled when it's moving to the station
- to_chat(user, "<span class='warning'>\icon[src]Emergency shuttle cannot be recalled at this time.</span>")
+ to_chat(user, "<span class='warning'>[bicon(src)]Emergency shuttle cannot be recalled at this time.</span>")
recalling = 0
return 0
- to_chat(loc, "<span class='info'>\icon[src]Shuttle recall order generated. Accessing station long-range communication arrays...</span>")
+ to_chat(loc, "<span class='info'>[bicon(src)]Shuttle recall order generated. Accessing station long-range communication arrays...</span>")
sleep(rand(100,300))
if(!gang.dom_attempts)
- to_chat(user, "<span class='warning'>\icon[src]Error: Unable to access communication arrays. Firewall has logged our signature and is blocking all further attempts.</span>")
+ to_chat(user, "<span class='warning'>[bicon(src)]Error: Unable to access communication arrays. Firewall has logged our signature and is blocking all further attempts.</span>")
recalling = 0
return 0
var/turf/userturf = get_turf(user)
if(userturf.z != 1) //Shuttle can only be recalled while on station
- to_chat(user, "<span class='warning'>\icon[src]Error: Device out of range of station communication arrays.</span>")
+ to_chat(user, "<span class='warning'>[bicon(src)]Error: Device out of range of station communication arrays.</span>")
recalling = 0
return 0
var/datum/station_state/end_state = new /datum/station_state()
end_state.count()
if((100 * start_state.score(end_state)) < 80) //Shuttle cannot be recalled if the station is too damaged
- to_chat(user, "<span class='warning'>\icon[src]Error: Station communication systems compromised. Unable to establish connection.</span>")
+ to_chat(user, "<span class='warning'>[bicon(src)]Error: Station communication systems compromised. Unable to establish connection.</span>")
recalling = 0
return 0
- to_chat(loc, "<span class='info'>\icon[src]Comm arrays accessed. Broadcasting recall signal...</span>")
+ to_chat(loc, "<span class='info'>[bicon(src)]Comm arrays accessed. Broadcasting recall signal...</span>")
sleep(rand(100,300))
@@ -210,7 +210,7 @@
if(SSshuttle.cancelEvac(user))
return 1
- to_chat(loc, "<span class='info'>\icon[src]No response recieved. Emergency shuttle cannot be recalled at this time.</span>")
+ to_chat(loc, "<span class='info'>[bicon(src)]No response recieved. Emergency shuttle cannot be recalled at this time.</span>")
return 0
/obj/item/device/gangtool/proc/can_use(mob/living/carbon/human/user)
+2 -1
View File
@@ -274,7 +274,8 @@
if(uplink_true)
text += " (used [TC_uses] TC) [purchases]"
if(TC_uses==0 && traitorwin)
text += "<BIG><IMG CLASS=icon SRC=\ref['icons/BadAss.dmi'] ICONSTATE='badass'></BIG>"
var/static/icon/badass = icon('icons/BadAss.dmi', "badass")
text += "<BIG>[bicon(badass)]</BIG>"
text += objectives
+4 -4
View File
@@ -116,24 +116,24 @@
authenticated = FALSE
auth_id = "\[NULL\]"
if(href_list["restore_logging"])
to_chat(usr, "<span class='robot notice'>\icon[src] Logging functionality restored from backup data.</span>")
to_chat(usr, "<span class='robot notice'>[bicon(src)] Logging functionality restored from backup data.</span>")
emagged = FALSE
LAZYADD(logs, "<b>-=- Logging restored to full functionality at this point -=-</b>")
if(href_list["access_apc"])
playsound(src, "terminal_type", 50, 0)
var/obj/machinery/power/apc/APC = locate(href_list["access_apc"]) in GLOB.apcs_list
if(!APC || APC.aidisabled || APC.panel_open || QDELETED(APC))
to_chat(usr, "<span class='robot danger'>\icon[src] APC does not return interface request. Remote access may be disabled.</span>")
to_chat(usr, "<span class='robot danger'>[bicon(src)] APC does not return interface request. Remote access may be disabled.</span>")
return
if(active_apc)
to_chat(usr, "<span class='robot danger'>\icon[src] Disconnected from [active_apc].</span>")
to_chat(usr, "<span class='robot danger'>[bicon(src)] Disconnected from [active_apc].</span>")
active_apc.say("Remote access canceled. Interface locked.")
playsound(active_apc, 'sound/machines/BoltsDown.ogg', 25, 0)
playsound(active_apc, 'sound/machines/terminal_alert.ogg', 50, 0)
active_apc.locked = TRUE
active_apc.update_icon()
active_apc = null
to_chat(usr, "<span class='robot notice'>\icon[src] Connected to APC in [get_area(APC)]. Interface request sent.</span>")
to_chat(usr, "<span class='robot notice'>[bicon(src)] Connected to APC in [get_area(APC)]. Interface request sent.</span>")
log_activity("remotely accessed APC in [get_area(APC)]")
APC.interact(usr, GLOB.not_incapacitated_state)
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
@@ -0,0 +1,27 @@
diff a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm (rejected hunks)
@@ -413,10 +413,10 @@
customrecepient.tnote += "<i><b>&larr; From <a href='byond://?src=\ref[customrecepient];choice=Message;target=\ref[src]'>[customsender]</a> ([customjob]):</b></i><br>[custommessage]<br>"
if (!customrecepient.silent)
playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1)
- customrecepient.audible_message("\icon[customrecepient] *[customrecepient.ttone]*", null, 3)
+ customrecepient.audible_message("[bicon(customrecepient)] *[customrecepient.ttone]*", null, 3)
if( customrecepient.loc && ishuman(customrecepient.loc) )
var/mob/living/carbon/human/H = customrecepient.loc
- to_chat(H, "\icon[customrecepient] <b>Message from [customsender] ([customjob]), </b>\"[custommessage]\" (<a href='byond://?src=\ref[src];choice=Message;skiprefresh=1;target=\ref[src]'>Reply</a>)")
+ to_chat(H, "[bicon(customrecepient)] <b>Message from [customsender] ([customjob]), </b>\"[custommessage]\" (<a href='byond://?src=\ref[src];choice=Message;skiprefresh=1;target=\ref[src]'>Reply</a>)")
log_pda("[usr]/([usr.ckey]) (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]")
customrecepient.cut_overlays()
customrecepient.add_overlay(image('icons/obj/pda.dmi', "pda-r"))
@@ -426,10 +426,10 @@
customrecepient.tnote += "<i><b>&larr; From <a href='byond://?src=\ref[customrecepient];choice=Message;target=\ref[PDARec]'>[PDARec.owner]</a> ([customjob]):</b></i><br>[custommessage]<br>"
if (!customrecepient.silent)
playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1)
- customrecepient.audible_message("\icon[customrecepient] *[customrecepient.ttone]*", null, 3)
+ customrecepient.audible_message("[bicon(customrecepient)] *[customrecepient.ttone]*", null, 3)
if( customrecepient.loc && ishuman(customrecepient.loc) )
var/mob/living/carbon/human/H = customrecepient.loc
- to_chat(H, "\icon[customrecepient] <b>Message from [PDARec.owner] ([customjob]), </b>\"[custommessage]\" (<a href='byond://?src=\ref[customrecepient];choice=Message;skiprefresh=1;target=\ref[PDARec]'>Reply</a>)")
+ to_chat(H, "[bicon(customrecepient)] <b>Message from [PDARec.owner] ([customjob]), </b>\"[custommessage]\" (<a href='byond://?src=\ref[customrecepient];choice=Message;skiprefresh=1;target=\ref[PDARec]'>Reply</a>)")
log_pda("[usr]/([usr.ckey]) (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]")
customrecepient.cut_overlays()
customrecepient.add_overlay(image('icons/obj/pda.dmi', "pda-r"))
+1 -1
View File
@@ -440,7 +440,7 @@ Class Procs:
/obj/machinery/proc/display_parts(mob/user)
to_chat(user, "<span class='notice'>Following parts detected in the machine:</span>")
for(var/obj/item/C in component_parts)
to_chat(user, "<span class='notice'>\icon[C] [C.name]</span>")
to_chat(user, "<span class='notice'>[bicon(C)] [C.name]</span>")
/obj/machinery/examine(mob/user)
..()
+4 -4
View File
@@ -146,7 +146,7 @@
var/icon/I2 = imap[2+(ix + icx*iy)*2]
//to_chat(world, "icon: \icon[I]")
//to_chat(world, "icon: [bicon(I)]")
I.DrawBox(colour, rx, ry, rx+1, ry+1)
@@ -163,7 +163,7 @@
H.screen_loc = "[5 + i%icx],[6+ round(i/icx)]"
//to_chat(world, "\icon[I] at [H.screen_loc]")
//to_chat(world, "[bicon(I)] at [H.screen_loc]")
H.name = (i==0)?"maprefresh":"map"
@@ -274,7 +274,7 @@
var/icon/I = imap[1+(ix + icx*iy)]
//to_chat(world, "icon: \icon[I]")
//to_chat(world, "icon: [bicon(I)]")
I.DrawBox(colour, rx, ry, rx, ry)
@@ -289,7 +289,7 @@
H.screen_loc = "[5 + i%icx],[6+ round(i/icx)]"
//to_chat(world, "\icon[I] at [H.screen_loc]")
//to_chat(world, "[bicon(I)] at [H.screen_loc]")
H.name = (i==0)?"maprefresh":"map"
+5 -5
View File
@@ -210,14 +210,14 @@
var/new_timer = input(user, "Please set the timer.", "Timer", "[timer_set]") as num
if(in_range(src, user) && isliving(user)) //No running off and setting bombs from across the station
timer_set = Clamp(new_timer, minimum_timer, maximum_timer)
src.loc.visible_message("<span class='notice'>\icon[src] timer set for [timer_set] seconds.</span>")
src.loc.visible_message("<span class='notice'>[bicon(src)] timer set for [timer_set] seconds.</span>")
if(alert(user,"Would you like to start the countdown now?",,"Yes","No") == "Yes" && in_range(src, user) && isliving(user))
if(defused || active)
if(defused)
src.loc.visible_message("<span class='warning'>\icon[src] Device error: User intervention required.</span>")
src.loc.visible_message("<span class='warning'>[bicon(src)] Device error: User intervention required.</span>")
return
else
src.loc.visible_message("<span class='danger'>\icon[src] [timer_set] seconds until detonation, please clear the area.</span>")
src.loc.visible_message("<span class='danger'>[bicon(src)] [timer_set] seconds until detonation, please clear the area.</span>")
activate()
update_icon()
add_fingerprint(user)
@@ -331,7 +331,7 @@
var/obj/machinery/syndicatebomb/holder = loc
if(istype(holder))
attempts++
holder.loc.visible_message("<span class='danger'>\icon[holder] Alert: Bomb has detonated. Your score is now [defusals] for [attempts]. Resetting wires...</span>")
holder.loc.visible_message("<span class='danger'>[bicon(holder)] Alert: Bomb has detonated. Your score is now [defusals] for [attempts]. Resetting wires...</span>")
reset()
else
qdel(src)
@@ -341,7 +341,7 @@
if(istype(holder))
attempts++
defusals++
holder.loc.visible_message("<span class='notice'>\icon[holder] Alert: Bomb has been defused. Your score is now [defusals] for [attempts]! Resetting wires in 5 seconds...</span>")
holder.loc.visible_message("<span class='notice'>[bicon(holder)] Alert: Bomb has been defused. Your score is now [defusals] for [attempts]! Resetting wires in 5 seconds...</span>")
sleep(50) //Just in case someone is trying to remove the bomb core this gives them a little window to crowbar it out
if(istype(holder))
reset()
@@ -0,0 +1,10 @@
diff a/code/game/machinery/telecomms/broadcasting.dm b/code/game/machinery/telecomms/broadcasting.dm (rejected hunks)
@@ -316,7 +316,7 @@
// Create a radio headset for the sole purpose of using its icon
var/obj/item/device/radio/headset/radio = new
- var/part_b = "</span><b> \icon[radio]\[[freq_text]\][part_b_extra]</b> <span class='message'>"
+ var/part_b = "</span><b> [bicon(radio)]\[[freq_text]\][part_b_extra]</b> <span class='message'>"
var/part_c = "</span></span>"
if (display_freq==SYND_FREQ)
+1 -1
View File
@@ -140,7 +140,7 @@
/obj/item/mecha_parts/mecha_equipment/proc/occupant_message(message)
if(chassis)
chassis.occupant_message("\icon[src] [message]")
chassis.occupant_message("[bicon(src)] [message]")
return
/obj/item/mecha_parts/mecha_equipment/proc/log_message(message)
+3 -3
View File
@@ -262,7 +262,7 @@
if(equipment && equipment.len)
to_chat(user, "It's equipped with:")
for(var/obj/item/mecha_parts/mecha_equipment/ME in equipment)
to_chat(user, "\icon[ME] [ME]")
to_chat(user, "[bicon(ME)] [ME]")
//processing internal damage, temperature, air regulation, alert updates, lights power use.
/obj/mecha/process()
@@ -637,7 +637,7 @@
var/can_control_mech = 0
for(var/obj/item/mecha_parts/mecha_tracking/ai_control/A in trackers)
can_control_mech = 1
to_chat(user, "<span class='notice'>\icon[src] Status of [name]:</span>\n[A.get_mecha_info()]")
to_chat(user, "<span class='notice'>[bicon(src)] Status of [name]:</span>\n[A.get_mecha_info()]")
break
if(!can_control_mech)
to_chat(user, "<span class='warning'>You cannot control exosuits without AI control beacons installed.</span>")
@@ -1005,7 +1005,7 @@
/obj/mecha/proc/occupant_message(message as text)
if(message)
if(occupant && occupant.client)
to_chat(occupant, "\icon[src] [message]")
to_chat(occupant, "[bicon(src)] [message]")
return
/obj/mecha/proc/log_message(message as text,red=null)
+1 -1
View File
@@ -22,7 +22,7 @@
/obj/effect/mine/proc/triggermine(mob/victim)
if(triggered)
return
visible_message("<span class='danger'>[victim] sets off \icon[src] [src]!</span>")
visible_message("<span class='danger'>[victim] sets off [bicon(src)] [src]!</span>")
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(3, 1, src)
s.start()
+1 -1
View File
@@ -622,7 +622,7 @@ GLOBAL_LIST_EMPTY(PDAs)
if (!silent)
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1)
audible_message("\icon[src] *[ttone]*", null, 3)
audible_message("[bicon(src)] *[ttone]*", null, 3)
//Search for holder of the PDA.
var/mob/living/L = null
if(loc && isliving(loc))
@@ -0,0 +1,10 @@
diff a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm (rejected hunks)
@@ -630,7 +630,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
L = get(src, /mob/living/silicon)
if(L && L.stat != UNCONSCIOUS)
- to_chat(L, "\icon[src] <b>Message from [source.owner] ([source.ownjob]), </b>\"[msg.message]\"[msg.get_photo_ref()] (<a href='byond://?src=\ref[src];choice=Message;skiprefresh=1;target=\ref[source]'>Reply</a>)")
+ to_chat(L, "[bicon(src)] <b>Message from [source.owner] ([source.ownjob]), </b>\"[msg.message]\"[msg.get_photo_ref()] (<a href='byond://?src=\ref[src];choice=Message;skiprefresh=1;target=\ref[source]'>Reply</a>)")
update_icon()
add_overlay(image(icon, icon_alert))
@@ -86,27 +86,27 @@
if(isliving(loc))
var/mob/living/M = loc
if(!emagged)
to_chat(M, "<span class='boldannounce'>\icon[src] RADIATION PULSE DETECTED.</span>")
to_chat(M, "<span class='boldannounce'>\icon[src] Severity: [amount]</span>")
to_chat(M, "<span class='boldannounce'>[bicon(src)] RADIATION PULSE DETECTED.</span>")
to_chat(M, "<span class='boldannounce'>[bicon(src)] Severity: [amount]</span>")
else
to_chat(M, "<span class='boldannounce'>\icon[src] !@%$AT!(N P!LS! D/TEC?ED.</span>")
to_chat(M, "<span class='boldannounce'>\icon[src] &!F2rity: <=[amount]#1</span>")
to_chat(M, "<span class='boldannounce'>[bicon(src)] !@%$AT!(N P!LS! D/TEC?ED.</span>")
to_chat(M, "<span class='boldannounce'>[bicon(src)] &!F2rity: <=[amount]#1</span>")
update_icon()
/obj/item/device/geiger_counter/attack_self(mob/user)
scanning = !scanning
update_icon()
to_chat(user, "<span class='notice'>\icon[src] You switch [scanning ? "on" : "off"] [src].</span>")
to_chat(user, "<span class='notice'>[bicon(src)] You switch [scanning ? "on" : "off"] [src].</span>")
/obj/item/device/geiger_counter/attack(mob/living/M, mob/user)
if(user.a_intent == INTENT_HELP)
if(!emagged)
user.visible_message("<span class='notice'>[user] scans [M] with [src].</span>", "<span class='notice'>You scan [M]'s radiation levels with [src]...</span>")
if(!M.radiation)
to_chat(user, "<span class='notice'>\icon[src] Radiation levels within normal boundaries.</span>")
to_chat(user, "<span class='notice'>[bicon(src)] Radiation levels within normal boundaries.</span>")
return 1
else
to_chat(user, "<span class='boldannounce'>\icon[src] Subject is irradiated. Radiation levels: [M.radiation].</span>")
to_chat(user, "<span class='boldannounce'>[bicon(src)] Subject is irradiated. Radiation levels: [M.radiation].</span>")
return 1
else
user.visible_message("<span class='notice'>[user] scans [M] with [src].</span>", "<span class='danger'>You project [src]'s stored radiation into [M]'s body!</span>")
+2 -2
View File
@@ -521,7 +521,7 @@
return list(pick(messages))
/obj/item/toy/talking/proc/toy_talk(mob/user, message)
user.loc.visible_message("<span class='[span]'>\icon[src] [message]</span>")
user.loc.visible_message("<span class='[span]'>[bicon(src)] [message]</span>")
if(chattering)
chatter(message, phomeme, user)
@@ -1077,7 +1077,7 @@
user.visible_message("<span class='notice'>[user] pulls back the string on [src].</span>")
icon_state = "[initial(icon_state)]_used"
sleep(5)
audible_message("<span class='danger'>\icon[src] Hiss!</span>")
audible_message("<span class='danger'>[bicon(src)] Hiss!</span>")
var/list/possible_sounds = list('sound/voice/hiss1.ogg', 'sound/voice/hiss2.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss4.ogg')
var/chosen_sound = pick(possible_sounds)
playsound(get_turf(src), chosen_sound, 50, 1)
@@ -523,7 +523,7 @@ AI MODULES
laws[1] = generate_ion_law()
to_chat(user, "<span class='notice'>You press the button on [src].</span>")
playsound(user, 'sound/machines/click.ogg', 20, 1)
src.loc.visible_message("<span class='warning'>\icon[src] [laws[1]]</span>")
src.loc.visible_message("<span class='warning'>[bicon(src)] [laws[1]]</span>")
/******************** Mother Drone ******************/
@@ -0,0 +1,10 @@
diff a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm (rejected hunks)
@@ -86,7 +86,7 @@
var/dorm = 0 // determines if this ID has claimed a dorm already
/obj/item/weapon/card/id/attack_self(mob/user)
- user.visible_message("<span class='notice'>[user] shows you: \icon[src] [src.name].</span>", \
+ user.visible_message("<span class='notice'>[user] shows you: [bicon(src)] [src.name].</span>", \
"<span class='notice'>You show \the [src.name].</span>")
src.add_fingerprint(user)
return
@@ -36,9 +36,9 @@
to_chat(user, "<span class='notice'>You'll need to get closer to see any more.</span>")
return
for(var/obj/item/I in loadedItems)
to_chat(user, "<span class='info'>\icon [I] It has \the [I] loaded.</span>")
to_chat(user, "<span class='info'>[bicon(I)] It has \the [I] loaded.</span>")
if(tank)
to_chat(user, "<span class='notice'>\icon [tank] It has \the [tank] mounted onto it.</span>")
to_chat(user, "<span class='notice'>[bicon(tank)] It has \the [tank] mounted onto it.</span>")
/obj/item/weapon/pneumatic_cannon/attackby(obj/item/weapon/W, mob/user, params)
+1 -1
View File
@@ -24,7 +24,7 @@
to_chat(user, "<span class='notice'>You'll need to get closer to see any more.</span>")
return
if(tank)
to_chat(user, "<span class='notice'>\icon [tank] It has \the [tank] mounted onto it.</span>")
to_chat(user, "<span class='notice'>[bicon(tank)] It has \the [tank] mounted onto it.</span>")
/obj/item/weapon/melee/powerfist/attackby(obj/item/weapon/W, mob/user, params)
+10
View File
@@ -0,0 +1,10 @@
diff a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm (rejected hunks)
@@ -33,7 +33,7 @@
prayer_type = "CULTIST PRAYER"
deity = "Nar-Sie"
- msg = "<span class='adminnotice'>\icon[cross]<b><font color=[font_color]>[prayer_type][deity ? " (to [deity])" : ""]: </font>[ADMIN_FULLMONTY(src)] [ADMIN_SC(src)] [ADMIN_SMITE(src)]:</b> [msg]</span>"
+ msg = "<span class='adminnotice'>[bicon(cross)]<b><font color=[font_color]>[prayer_type][deity ? " (to [deity])" : ""]: </font>[ADMIN_FULLMONTY(src)] [ADMIN_SC(src)] [ADMIN_SMITE(src)]:</b> [msg]</span>"
for(var/client/C in admins)
if(C.prefs.chat_toggles & CHAT_PRAYER)
+1 -1
View File
@@ -61,7 +61,7 @@
return
/obj/item/device/onetankbomb/receive_signal() //This is mainly called by the sensor through sense() to the holder, and from the holder to here.
visible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*")
sleep(10)
if(!src)
return
+1 -1
View File
@@ -59,7 +59,7 @@
health_scan = M.health
if(health_scan <= alarm_health)
pulse()
audible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
audible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*")
toggle_scan()
return
return
+1 -1
View File
@@ -99,7 +99,7 @@
if(!secured || !on || next_activate > world.time)
return FALSE
pulse(0)
audible_message("\icon[src] *beep* *beep*", null, 3)
audible_message("[bicon(src)] *beep* *beep*", null, 3)
next_activate = world.time + 30
/obj/item/device/assembly/infra/interact(mob/user)//TODO: change this this to the wire control panel
+1 -1
View File
@@ -56,7 +56,7 @@
if(!secured || next_activate > world.time)
return 0
pulse(0)
audible_message("\icon[src] *beep* *beep*", null, 3)
audible_message("[bicon(src)] *beep* *beep*", null, 3)
next_activate = world.time + 30
+1 -1
View File
@@ -142,7 +142,7 @@ Code:
if(!(src.wires & WIRE_RADIO_RECEIVE))
return 0
pulse(1)
audible_message("\icon[src] *beep* *beep*", null, 1)
audible_message("[bicon(src)] *beep* *beep*", null, 1)
return
+1 -1
View File
@@ -45,7 +45,7 @@
if(!secured || next_activate > world.time)
return FALSE
pulse(0)
audible_message("\icon[src] *beep* *beep*", null, 3)
audible_message("[bicon(src)] *beep* *beep*", null, 3)
if(loop)
timing = 1
update_icon()
+15
View File
@@ -279,6 +279,21 @@ GLOBAL_LIST_EMPTY(asset_datums)
"changelog.css" = 'html/changelog.css'
)
/datum/asset/simple/goonchat
verify = TRUE
assets = list(
"jquery.min.js" = 'code/modules/html_interface/js/jquery.min.js',
"json2.min.js" = 'code/modules/goonchat/browserassets/js/json2.min.js',
"errorHandler.js" = 'code/modules/goonchat/browserassets/js/errorHandler.js',
"browserOutput.js" = 'code/modules/goonchat/browserassets/js/browserOutput.js',
"fontawesome-webfont.eot" = 'tgui/assets/fonts/fontawesome-webfont.eot',
"fontawesome-webfont.svg" = 'tgui/assets/fonts/fontawesome-webfont.svg',
"fontawesome-webfont.ttf" = 'tgui/assets/fonts/fontawesome-webfont.ttf',
"fontawesome-webfont.woff" = 'tgui/assets/fonts/fontawesome-webfont.woff',
"font-awesome.css" = 'code/modules/goonchat/browserassets/css/font-awesome.css',
"browserOutput.css" = 'code/modules/goonchat/browserassets/css/browserOutput.css',
)
//Registers HTML Interface assets.
/datum/asset/HTML_interface/register()
for(var/path in typesof(/datum/html_interface))
+21
View File
@@ -0,0 +1,21 @@
diff a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm (rejected hunks)
@@ -279,19 +279,6 @@ GLOBAL_LIST_EMPTY(asset_datums)
"changelog.css" = 'html/changelog.css'
)
-/datum/asset/simple/chat
- assets = list(
- "jquery.min.js" = 'code/modules/html_interface/js/jquery.min.js',
- "json2.min.js" = 'goon/browserassets/js/json2.min.js',
- "browserOutput.js" = 'goon/browserassets/js/browserOutput.js',
- "fontawesome-webfont.eot" = 'tgui/assets/fonts/fontawesome-webfont.eot',
- "fontawesome-webfont.svg" = 'tgui/assets/fonts/fontawesome-webfont.svg',
- "fontawesome-webfont.ttf" = 'tgui/assets/fonts/fontawesome-webfont.ttf',
- "fontawesome-webfont.woff" = 'tgui/assets/fonts/fontawesome-webfont.woff',
- "font-awesome.css" = 'goon/browserassets/css/font-awesome.css',
- "browserOutput.css" = 'goon/browserassets/css/browserOutput.css'
- )
-
//Registers HTML Interface assets.
/datum/asset/HTML_interface/register()
for(var/path in typesof(/datum/html_interface))
+3 -1
View File
@@ -65,4 +65,6 @@
var/connection_timeofday //world.timeofday they connected
var/inprefs = FALSE
var/list/topiclimiter
var/list/topiclimiter
var/datum/chatOutput/chatOutput
+7
View File
@@ -101,6 +101,12 @@
return
if("vars")
return view_var_Topic(href,href_list,hsrc)
if("chat")
return chatOutput.Topic(href, href_list)
switch(href_list["action"])
if("openLink")
src << link(href_list["link"])
..() //redirect to hsrc.Topic()
@@ -150,6 +156,7 @@ GLOBAL_LIST(external_rsc_urls)
/client/New(TopicData)
var/tdata = TopicData //save this for later use
chatOutput = new /datum/chatOutput(src)
TopicData = null //Prevent calls to client.Topic from connect
if(connection != "seeker" && connection != "web")//Invalid connection type.
+10
View File
@@ -0,0 +1,10 @@
diff a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm (rejected hunks)
@@ -196,6 +203,8 @@ var/next_external_rsc = 0
. = ..() //calls mob.Login()
+ chatOutput.start()
+
connection_time = world.time
connection_realtime = world.realtime
connection_timeofday = world.timeofday
+1 -1
View File
@@ -57,7 +57,7 @@
var/keyname = key
if(prefs.unlock_content)
if(prefs.toggles & MEMBER_PUBLIC)
keyname = "<font color='[prefs.ooccolor ? prefs.ooccolor : GLOB.normal_ooc_colour]'><img style='width:9px;height:9px;' class=icon src=\ref['icons/member_content.dmi'] iconstate=blag>[keyname]</font>"
keyname = "<font color='[prefs.ooccolor ? prefs.ooccolor : GLOB.normal_ooc_colour]'>[bicon(icon('icons/member_content.dmi', "blag"))][keyname]</font>"
for(var/client/C in GLOB.clients)
if(C.prefs.chat_toggles & CHAT_OOC)
@@ -782,13 +782,13 @@
/obj/item/device/flightpack/proc/usermessage(message, urgency = 0)
if(urgency == 0)
to_chat(wearer, "\icon[src]|<span class='boldnotice'>[message]</span>")
to_chat(wearer, "[bicon(src)]|<span class='boldnotice'>[message]</span>")
if(urgency == 1)
to_chat(wearer, "\icon[src]|<span class='warning'>[message]</span>")
to_chat(wearer, "[bicon(src)]|<span class='warning'>[message]</span>")
if(urgency == 2)
to_chat(wearer, "\icon[src]|<span class='boldwarning'>[message]</span>")
to_chat(wearer, "[bicon(src)]|<span class='boldwarning'>[message]</span>")
if(urgency == 3)
to_chat(wearer, "\icon[src]|<span class='userdanger'>[message]</span>")
to_chat(wearer, "[bicon(src)]|<span class='userdanger'>[message]</span>")
/obj/item/device/flightpack/attackby(obj/item/I, mob/user, params)
if(ishuman(user) && !ishuman(src.loc))
@@ -935,11 +935,11 @@
/obj/item/clothing/suit/space/hardsuit/flightsuit/proc/usermessage(message, urgency = 0)
if(!urgency)
to_chat(user, "\icon[src]<span class='notice'>|[message]</span>")
to_chat(user, "[bicon(src)]<span class='notice'>|[message]</span>")
else if(urgency == 1)
to_chat(user, "\icon[src]<span class='warning'>|[message]</span>")
to_chat(user, "[bicon(src)]<span class='warning'>|[message]</span>")
else if(urgency == 2)
to_chat(user, "\icon[src]<span class='userdanger'>|[message]</span>")
to_chat(user, "[bicon(src)]<span class='userdanger'>|[message]</span>")
/obj/item/clothing/suit/space/hardsuit/flightsuit/examine(mob/user)
..()
+1 -1
View File
@@ -48,7 +48,7 @@
/obj/item/clothing/head/helmet/space/hardsuit/proc/display_visor_message(var/msg)
var/mob/wearer = loc
if(msg && ishuman(wearer))
wearer.show_message("\icon[src]<b><span class='robot'>[msg]</span></b>", 1)
wearer.show_message("[bicon(src)]<b><span class='robot'>[msg]</span></b>", 1)
/obj/item/clothing/head/helmet/space/hardsuit/rad_act(severity)
..()
+1 -1
View File
@@ -16,7 +16,7 @@
if(search)
emoji = lowertext(copytext(text, pos+1, search))
if(emoji in emojis)
parsed += " <img class=icon src=\ref['icons/emoji.dmi'] iconstate='[emoji]'>"
parsed += bicon(icon('icons/emoji.dmi', emoji))
pos = search + 1
else
parsed += copytext(text, pos, search)
@@ -98,7 +98,7 @@
var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = O
if(!I.ice_creamed)
if(product_types[dispense_flavour] > 0)
src.visible_message("\icon[src] <span class='info'>[user] scoops delicious [flavour_name] ice cream into [I].</span>")
src.visible_message("[bicon(src)] <span class='info'>[user] scoops delicious [flavour_name] ice cream into [I].</span>")
product_types[dispense_flavour] -= 1
I.add_ice_cream(flavour_name)
// if(beaker)
+1 -1
View File
@@ -80,7 +80,7 @@
return
open = !open
if(open && !bomb_defused)
audible_message("<span class='warning'>\icon[src] *beep*</span>")
audible_message("<span class='warning'>[bicon(src)] *beep*</span>")
bomb_active = TRUE
START_PROCESSING(SSobj, src)
update_icon()
@@ -0,0 +1,34 @@
(function(window, navigator) {
var escaper = encodeURIComponent || escape;
var triggerError = function(msg, url, line, col, error) {
window.onerror(msg, url, line, col, error);
};
/**
* Directs JS errors to a byond proc for logging
*
* @param string file Name of the logfile to dump errors in, do not prepend with data/
* @param boolean overrideDefault True to prevent default JS errors (an big honking error prompt thing)
* @return boolean
*/
var attach = function(file, overrideDefault) {
overrideDefault = typeof overrideDefault === 'undefined' ? false : overrideDefault;
file = escaper(file);
window.onerror = function(msg, url, line, col, error) {
var extra = !col ? '' : ' | column: ' + col;
extra += !error ? '' : ' | error: ' + error;
extra += !navigator.userAgent ? '' : ' | user agent: ' + navigator.userAgent;
var debugLine = 'Error: ' + msg + ' | url: ' + url + ' | line: ' + line + extra;
window.location = '?action=debugFileOutput&file=' + file + '&message=' + escaper(debugLine);
return overrideDefault;
};
return triggerError;
};
window.attachErrorHandler = attach;
}(window, window.navigator));
+100
View File
@@ -0,0 +1,100 @@
/**
* This is a generic handler for logging your dumb JS errors generated by html popups
*
* 1. Add your logfile to the validFiles list
* 2. Include the "browserassets/js/errorHandler.js" file in your html file (if using chui, skip this step) (look at browserOutput.html for an example)
* 3. Call attachErrorHandler('yourLogFile'); at the top of your JS (again see browserOutput.js for an example)
*/
/datum/debugFileOutput
var/directory = "data/popupErrors" //where to shove all the logfiles
var/ext = "log" //file extension
var/logFileLimit = 52428800 //50mb, so yeah pretty permissive
//Add your dumb file here. This is so some schmuck can't just shit out a bunch of spam logfiles and use all the diskspace. Relative to src.directory
var/list/validFiles = list(
"chatDebug",
"tooltipDebug",
"chemDispenser",
"banPanel",
"stationNamer"
)
/datum/debugFileOutput/proc/error(fileName, message, client/C)
if (!fileName || !message) return 0
if (!(fileName in src.validFiles))
throw EXCEPTION("Debug log file '[fileName].[src.ext]' is not a valid path.")
var/logFile = file("[src.directory]/[fileName].[src.ext]")
var/fileSize = length(logFile)
if (fileSize >= src.logFileLimit)
CRASH("Debug Error Handling encountered an error! This is highly ironic! File: '[fileName]' has exceeded the filesize limit of: [src.logFileLimit] bytes")
message = "\[[time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")]\] Client: \[[C && C.key ? C.key : "Unknown Client"]\] triggered: [message]"
logFile << message
return 1
/datum/debugFileOutput/proc/clear(fileName)
if (!fileName) return 0
if (!fexists("[src.directory]/[fileName].[src.ext]"))
throw EXCEPTION("Debug log file '[fileName].[src.ext]' does not exist.")
if (!(fileName in src.validFiles))
throw EXCEPTION("Debug log file '[fileName].[src.ext]' is not a valid path.")
fdel("[src.directory]/[fileName].[src.ext]")
return 1
/datum/debugFileOutput/proc/clearAll()
var/list/deleted = new()
for (var/fileName in src.validFiles)
if (fexists("[src.directory]/[fileName].[src.ext]"))
fdel("[src.directory]/[fileName].[src.ext]")
deleted += fileName
return deleted
GLOBAL_DATUM_INIT(debugFileOutput, /datum/debugFileOutput, new)
/client/Topic(href, href_list)
..()
if (href_list["action"] && href_list["action"] == "debugFileOutput" && href_list["file"] && href_list["message"])
var/file = href_list["file"]
var/message = href_list["message"]
GLOB.debugFileOutput.error(file, message, src)
/client/proc/deleteJsLogFile(fileName as text)
set category = "Debug"
set name = "Delete JS Logfile"
set desc = "Delete a logfile for JS error reporting. Be sure you want to do this!"
set popup_menu = 0
if(!holder)
return
if (!fileName)
return
GLOB.debugFileOutput.clear(fileName)
log_admin("[key_name(usr)] deleted the '[fileName]' JS logfile")
message_admins("[key_name_admin(usr)] deleted the '[fileName]' JS logfile")
/client/proc/deleteAllJsLogFiles()
set category = null
set name = "Delete All JS Logfiles"
set desc = "Delete all logfiles for JS error reporting. Be extra sure you want to do this!"
if(!holder)
return
if (alert("Are you really sure you want to delete every single JS logfile?", "No", "Yes") == "No")
return
var/list/summary = GLOB.debugFileOutput.clearAll()
var/friendlySummary = summary.Join(", ")
log_admin("[key_name(usr)] deleted every JS logfile! ([friendlySummary])")
message_admins("[key_name_admin(usr)] deleted every JS logfile! ([friendlySummary])")
+8 -8
View File
@@ -6,26 +6,26 @@
var/t_has = p_have()
var/t_is = p_are()
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n"
var/msg = "<span class='info'>*---------*\nThis is [bicon(src)] \a <EM>[src]</EM>!\n"
if (handcuffed)
msg += "<span class='warning'>[t_He] [t_is] \icon[src.handcuffed] handcuffed!</span>\n"
msg += "<span class='warning'>[t_He] [t_is] [bicon(handcuffed)] handcuffed!</span>\n"
if (head)
msg += "[t_He] [t_is] wearing \icon[src.head] \a [src.head] on [t_his] head. \n"
msg += "[t_He] [t_is] wearing [bicon(head)] \a [src.head] on [t_his] head. \n"
if (wear_mask)
msg += "[t_He] [t_is] wearing \icon[src.wear_mask] \a [src.wear_mask] on [t_his] face.\n"
msg += "[t_He] [t_is] wearing [bicon(wear_mask)] \a [src.wear_mask] on [t_his] face.\n"
if (wear_neck)
msg += "[t_He] [t_is] wearing \icon[src.wear_neck] \a [src.wear_neck] around [t_his] neck.\n"
msg += "[t_He] [t_is] wearing [bicon(wear_neck)] \a [src.wear_neck] around [t_his] neck.\n"
for(var/obj/item/I in held_items)
if(!(I.flags & ABSTRACT))
if(I.blood_DNA)
msg += "<span class='warning'>[t_He] [t_is] holding \icon[I] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in [t_his] [get_held_index_name(get_held_index_of_item(I))]!</span>\n"
msg += "<span class='warning'>[t_He] [t_is] holding [bicon(I)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in [t_his] [get_held_index_name(get_held_index_of_item(I))]!</span>\n"
else
msg += "[t_He] [t_is] holding \icon[I] \a [I] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n"
msg += "[t_He] [t_is] holding [bicon(I)] \a [I] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n"
if (back)
msg += "[t_He] [t_has] \icon[src.back] \a [src.back] on [t_his] back.\n"
msg += "[t_He] [t_has] [bicon(back)] \a [src.back] on [t_his] back.\n"
var/appears_dead = 0
if (stat == DEAD)
appears_dead = 1
+29 -29
View File
@@ -19,55 +19,55 @@
if(istype(w_uniform,/obj/item/clothing/under))
var/obj/item/clothing/under/U = w_uniform
if(U.hastie)
tie_msg += " with \icon[U.hastie] \a [U.hastie]"
tie_msg += " with [bicon(U.hastie)] \a [U.hastie]"
if(w_uniform.blood_DNA)
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] blood-stained [w_uniform.name][tie_msg]!</span>\n"
msg += "<span class='warning'>[t_He] [t_is] wearing [bicon(w_uniform)] [w_uniform.gender==PLURAL?"some":"a"] blood-stained [w_uniform.name][tie_msg]!</span>\n"
else
msg += "[t_He] [t_is] wearing \icon[w_uniform] \a [w_uniform][tie_msg].\n"
msg += "[t_He] [t_is] wearing [bicon(w_uniform)] \a [w_uniform][tie_msg].\n"
//head
if(head)
if(head.blood_DNA)
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[head] [head.gender==PLURAL?"some":"a"] blood-stained [head.name] on [t_his] head!</span>\n"
msg += "<span class='warning'>[t_He] [t_is] wearing [bicon(head)] [head.gender==PLURAL?"some":"a"] blood-stained [head.name] on [t_his] head!</span>\n"
else
msg += "[t_He] [t_is] wearing \icon[head] \a [head] on [t_his] head.\n"
msg += "[t_He] [t_is] wearing [bicon(head)] \a [head] on [t_his] head.\n"
//suit/armor
if(wear_suit)
if(wear_suit.blood_DNA)
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[wear_suit] [wear_suit.gender==PLURAL?"some":"a"] blood-stained [wear_suit.name]!</span>\n"
msg += "<span class='warning'>[t_He] [t_is] wearing [bicon(wear_suit)] [wear_suit.gender==PLURAL?"some":"a"] blood-stained [wear_suit.name]!</span>\n"
else
msg += "[t_He] [t_is] wearing \icon[wear_suit] \a [wear_suit].\n"
msg += "[t_He] [t_is] wearing [bicon(wear_suit)] \a [wear_suit].\n"
//suit/armor storage
if(s_store)
if(s_store.blood_DNA)
msg += "<span class='warning'>[t_He] [t_is] carrying \icon[s_store] [s_store.gender==PLURAL?"some":"a"] blood-stained [s_store.name] on [t_his] [wear_suit.name]!</span>\n"
msg += "<span class='warning'>[t_He] [t_is] carrying [bicon(s_store)] [s_store.gender==PLURAL?"some":"a"] blood-stained [s_store.name] on [t_his] [wear_suit.name]!</span>\n"
else
msg += "[t_He] [t_is] carrying \icon[s_store] \a [s_store] on [t_his] [wear_suit.name].\n"
msg += "[t_He] [t_is] carrying [bicon(s_store)] \a [s_store] on [t_his] [wear_suit.name].\n"
//back
if(back)
if(back.blood_DNA)
msg += "<span class='warning'>[t_He] [t_has] \icon[back] [back.gender==PLURAL?"some":"a"] blood-stained [back] on [t_his] back.</span>\n"
msg += "<span class='warning'>[t_He] [t_has] [bicon(back)] [back.gender==PLURAL?"some":"a"] blood-stained [back] on [t_his] back.</span>\n"
else
msg += "[t_He] [t_has] \icon[back] \a [back] on [t_his] back.\n"
msg += "[t_He] [t_has] [bicon(back)] \a [back] on [t_his] back.\n"
//Hands
for(var/obj/item/I in held_items)
if(!(I.flags & ABSTRACT))
if(I.blood_DNA)
msg += "<span class='warning'>[t_He] [t_is] holding \icon[I] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in [t_his] [get_held_index_name(get_held_index_of_item(I))]!</span>\n"
msg += "<span class='warning'>[t_He] [t_is] holding [bicon(I)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in [t_his] [get_held_index_name(get_held_index_of_item(I))]!</span>\n"
else
msg += "[t_He] [t_is] holding \icon[I] \a [I] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n"
msg += "[t_He] [t_is] holding [bicon(I)] \a [I] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n"
//gloves
if(gloves && !(slot_gloves in obscured))
if(gloves.blood_DNA)
msg += "<span class='warning'>[t_He] [t_has] \icon[gloves] [gloves.gender==PLURAL?"some":"a"] blood-stained [gloves.name] on [t_his] hands!</span>\n"
msg += "<span class='warning'>[t_He] [t_has] [bicon(gloves)] [gloves.gender==PLURAL?"some":"a"] blood-stained [gloves.name] on [t_his] hands!</span>\n"
else
msg += "[t_He] [t_has] \icon[gloves] \a [gloves] on [t_his] hands.\n"
msg += "[t_He] [t_has] [bicon(gloves)] \a [gloves] on [t_his] hands.\n"
else if(blood_DNA)
var/hand_number = get_num_arms()
if(hand_number)
@@ -78,48 +78,48 @@
//handcuffed?
if(handcuffed)
if(istype(handcuffed, /obj/item/weapon/restraints/handcuffs/cable))
msg += "<span class='warning'>[t_He] [t_is] \icon[handcuffed] restrained with cable!</span>\n"
msg += "<span class='warning'>[t_He] [t_is] [bicon(handcuffed)] restrained with cable!</span>\n"
else
msg += "<span class='warning'>[t_He] [t_is] \icon[handcuffed] handcuffed!</span>\n"
msg += "<span class='warning'>[t_He] [t_is] [bicon(handcuffed)] handcuffed!</span>\n"
//belt
if(belt)
if(belt.blood_DNA)
msg += "<span class='warning'>[t_He] [t_has] \icon[belt] [belt.gender==PLURAL?"some":"a"] blood-stained [belt.name] about [t_his] waist!</span>\n"
msg += "<span class='warning'>[t_He] [t_has] [bicon(belt)] [belt.gender==PLURAL?"some":"a"] blood-stained [belt.name] about [t_his] waist!</span>\n"
else
msg += "[t_He] [t_has] \icon[belt] \a [belt] about [t_his] waist.\n"
msg += "[t_He] [t_has] [bicon(belt)] \a [belt] about [t_his] waist.\n"
//shoes
if(shoes && !(slot_shoes in obscured))
if(shoes.blood_DNA)
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[shoes] [shoes.gender==PLURAL?"some":"a"] blood-stained [shoes.name] on [t_his] feet!</span>\n"
msg += "<span class='warning'>[t_He] [t_is] wearing [bicon(shoes)] [shoes.gender==PLURAL?"some":"a"] blood-stained [shoes.name] on [t_his] feet!</span>\n"
else
msg += "[t_He] [t_is] wearing \icon[shoes] \a [shoes] on [t_his] feet.\n"
msg += "[t_He] [t_is] wearing [bicon(shoes)] \a [shoes] on [t_his] feet.\n"
//mask
if(wear_mask && !(slot_wear_mask in obscured))
if(wear_mask.blood_DNA)
msg += "<span class='warning'>[t_He] [t_has] \icon[wear_mask] [wear_mask.gender==PLURAL?"some":"a"] blood-stained [wear_mask.name] on [t_his] face!</span>\n"
msg += "<span class='warning'>[t_He] [t_has] [bicon(wear_mask)] [wear_mask.gender==PLURAL?"some":"a"] blood-stained [wear_mask.name] on [t_his] face!</span>\n"
else
msg += "[t_He] [t_has] \icon[wear_mask] \a [wear_mask] on [t_his] face.\n"
msg += "[t_He] [t_has] [bicon(wear_mask)] \a [wear_mask] on [t_his] face.\n"
if (wear_neck && !(slot_neck in obscured))
msg += "[t_He] [t_is] wearing \icon[src.wear_neck] \a [src.wear_neck] around [t_his] neck.\n"
msg += "[t_He] [t_is] wearing [bicon(wear_neck)] \a [src.wear_neck] around [t_his] neck.\n"
//eyes
if(glasses && !(slot_glasses in obscured))
if(glasses.blood_DNA)
msg += "<span class='warning'>[t_He] [t_has] \icon[glasses] [glasses.gender==PLURAL?"some":"a"] blood-stained [glasses] covering [t_his] eyes!</span>\n"
msg += "<span class='warning'>[t_He] [t_has] [bicon(glasses)] [glasses.gender==PLURAL?"some":"a"] blood-stained [glasses] covering [t_his] eyes!</span>\n"
else
msg += "[t_He] [t_has] \icon[glasses] \a [glasses] covering [t_his] eyes.\n"
msg += "[t_He] [t_has] [bicon(glasses)] \a [glasses] covering [t_his] eyes.\n"
//ears
if(ears && !(slot_ears in obscured))
msg += "[t_He] [t_has] \icon[ears] \a [ears] on [t_his] ears.\n"
msg += "[t_He] [t_has] [bicon(ears)] \a [ears] on [t_his] ears.\n"
//ID
if(wear_id)
msg += "[t_He] [t_is] wearing \icon[wear_id] \a [wear_id].\n"
msg += "[t_He] [t_is] wearing [bicon(wear_id)] \a [wear_id].\n"
//Jitters
switch(jitteriness)
@@ -164,7 +164,7 @@
var/obj/item/bodypart/BP = X
missing -= BP.body_zone
for(var/obj/item/I in BP.embedded_objects)
msg += "<B>[t_He] [t_has] \a \icon[I] [I] embedded in [t_his] [BP.name]!</B>\n"
msg += "<B>[t_He] [t_has] \a [bicon(I)] [I] embedded in [t_his] [BP.name]!</B>\n"
//stores missing limbs
var/l_limbs_missing = 0
@@ -0,0 +1,14 @@
diff a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm (rejected hunks)
@@ -681,10 +681,10 @@
status += "numb"
if(status == "")
status = "OK"
- to_chat(src, "\t [status == "OK" ? "\blue" : "\red"] Your [LB.name] is [status].")
+ to_chat(src, "\t <span class='[status == "OK" ? "notice" : "warning"]'>Your [LB.name] is [status].</span>")
for(var/obj/item/I in LB.embedded_objects)
- to_chat(src, "\t <a href='byond://?src=\ref[src];embedded_object=\ref[I];embedded_limb=\ref[LB]'>\red There is \a [I] embedded in your [LB.name]!</a>")
+ to_chat(src, "\t <a href='?src=\ref[src];embedded_object=\ref[I];embedded_limb=\ref[LB]' class='warning'>There is \a [I] embedded in your [LB.name]!</a>")
for(var/t in missing)
to_chat(src, "<span class='boldannounce'>Your [parse_zone(t)] is missing!</span>")
@@ -0,0 +1,8 @@
diff a/code/modules/mob/living/silicon/ai/examine.dm b/code/modules/mob/living/silicon/ai/examine.dm (rejected hunks)
@@ -1,5 +1,5 @@
/mob/living/silicon/ai/examine(mob/user)
- var/msg = "<span class='info'>*---------*\nThis is \icon[src] <EM>[src]</EM>!\n"
+ var/msg = "<span class='info'>*---------*\nThis is [bicon(src)] <EM>[src]</EM>!\n"
if (src.stat == DEAD)
msg += "<span class='deadsay'>It appears to be powered-down.</span>\n"
else
@@ -173,7 +173,7 @@
if(href_list["send"])
sradio.send_signal("ACTIVATE")
audible_message("\icon[src] *beep* *beep*")
audible_message("[bicon(src)] *beep* *beep*")
if(href_list["freq"])
@@ -1,11 +1,11 @@
/mob/living/silicon/robot/examine(mob/user)
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n"
var/msg = "<span class='info'>*---------*\nThis is [bicon(src)] \a <EM>[src]</EM>!\n"
if(desc)
msg += "[desc]\n"
var/obj/act_module = get_active_held_item()
if(act_module)
msg += "It is holding \icon[act_module] \a [act_module].\n"
msg += "It is holding [bicon(act_module)] \a [act_module].\n"
msg += "<span class='warning'>"
if (src.getBruteLoss())
if (src.getBruteLoss() < maxHealth*0.5)
@@ -469,7 +469,7 @@ Pass a positive integer as an argument to override a bot's default speed.
var/area/end_area = get_area(waypoint)
if(client) //Player bots instead get a location command from the AI
to_chat(src, "<span class='noticebig'>Priority waypoint set by \icon[caller] <b>[caller]</b>. Proceed to <b>[end_area.name]<\b>.")
to_chat(src, "<span class='noticebig'>Priority waypoint set by [bicon(caller)] <b>[caller]</b>. Proceed to <b>[end_area.name]<\b>.")
//For giving the bot temporary all-access.
var/obj/item/weapon/card/id/all_access = new /obj/item/weapon/card/id
@@ -485,7 +485,7 @@ Pass a positive integer as an argument to override a bot's default speed.
turn_on() //Saves the AI the hassle of having to activate a bot manually.
access_card = all_access //Give the bot all-access while under the AI's command.
if(message)
to_chat(calling_ai, "<span class='notice'>\icon[src] [name] called to [end_area.name]. [path.len-1] meters to destination.</span>")
to_chat(calling_ai, "<span class='notice'>[bicon(src)] [name] called to [end_area.name]. [path.len-1] meters to destination.</span>")
pathset = 1
mode = BOT_RESPONDING
tries = 0
@@ -500,7 +500,7 @@ Pass a positive integer as an argument to override a bot's default speed.
var/success = bot_move(ai_waypoint, 3)
if(!success)
if(calling_ai)
to_chat(calling_ai, "\icon[src] [get_turf(src) == ai_waypoint ? "<span class='notice'>[src] successfully arrived to waypoint.</span>" : "<span class='danger'>[src] failed to reach waypoint.</span>"]")
to_chat(calling_ai, "[bicon(src)] [get_turf(src) == ai_waypoint ? "<span class='notice'>[src] successfully arrived to waypoint.</span>" : "<span class='danger'>[src] failed to reach waypoint.</span>"]")
calling_ai = null
bot_reset()
@@ -596,7 +596,7 @@
if(pathset) //The AI called us here, so notify it of our arrival.
loaddir = dir //The MULE will attempt to load a crate in whatever direction the MULE is "facing".
if(calling_ai)
to_chat(calling_ai, "<span class='notice'>\icon[src] [src] wirelessly plays a chiming sound!</span>")
to_chat(calling_ai, "<span class='notice'>[bicon(src)] [src] wirelessly plays a chiming sound!</span>")
playsound(calling_ai, 'sound/machines/chime.ogg',40, 0)
calling_ai = null
radio_channel = "AI Private" //Report on AI Private instead if the AI is controlling us.
@@ -50,7 +50,7 @@
/mob/living/simple_animal/hostile/construct/examine(mob/user)
var/t_He = p_they(TRUE)
var/t_s = p_s()
var/msg = "<span class='cult'>*---------*\nThis is \icon[src] \a <b>[src]</b>!\n"
var/msg = "<span class='cult'>*---------*\nThis is [bicon(src)] \a <b>[src]</b>!\n"
msg += "[desc]\n"
if(health < maxHealth)
msg += "<span class='warning'>"
@@ -170,29 +170,29 @@
/mob/living/simple_animal/drone/examine(mob/user)
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <b>[src]</b>!\n"
var/msg = "<span class='info'>*---------*\nThis is [bicon(src)] \a <b>[src]</b>!\n"
//Hands
for(var/obj/item/I in held_items)
if(!(I.flags & ABSTRACT))
if(I.blood_DNA)
msg += "<span class='warning'>It has \icon[I] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in its [get_held_index_name(get_held_index_of_item(I))]!</span>\n"
msg += "<span class='warning'>It has [bicon(I)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in its [get_held_index_name(get_held_index_of_item(I))]!</span>\n"
else
msg += "It has \icon[I] \a [I] in its [get_held_index_name(get_held_index_of_item(I))].\n"
msg += "It has [bicon(I)] \a [I] in its [get_held_index_name(get_held_index_of_item(I))].\n"
//Internal storage
if(internal_storage && !(internal_storage.flags&ABSTRACT))
if(internal_storage.blood_DNA)
msg += "<span class='warning'>It is holding \icon[internal_storage] [internal_storage.gender==PLURAL?"some":"a"] blood-stained [internal_storage.name] in its internal storage!</span>\n"
msg += "<span class='warning'>It is holding [bicon(internal_storage)] [internal_storage.gender==PLURAL?"some":"a"] blood-stained [internal_storage.name] in its internal storage!</span>\n"
else
msg += "It is holding \icon[internal_storage] \a [internal_storage] in its internal storage.\n"
msg += "It is holding [bicon(internal_storage)] \a [internal_storage] in its internal storage.\n"
//Cosmetic hat - provides no function other than looks
if(head && !(head.flags&ABSTRACT))
if(head.blood_DNA)
msg += "<span class='warning'>It is wearing \icon[head] [head.gender==PLURAL?"some":"a"] blood-stained [head.name] on its head!</span>\n"
msg += "<span class='warning'>It is wearing [bicon(head)] [head.gender==PLURAL?"some":"a"] blood-stained [head.name] on its head!</span>\n"
else
msg += "It is wearing \icon[head] \a [head] on its head.\n"
msg += "It is wearing [bicon(head)] \a [head] on its head.\n"
//Braindead
if(!client && stat != DEAD)
@@ -57,7 +57,7 @@
if( ishuman(AM) )
if(!stat)
var/mob/M = AM
to_chat(M, "<span class='notice'>\icon[src] Squeek!</span>")
to_chat(M, "<span class='notice'>[bicon(src)] Squeek!</span>")
playsound(src, 'sound/effects/mousesqueek.ogg', 100, 1)
..()
@@ -26,21 +26,21 @@
/mob/living/simple_animal/hostile/guardian/dextrous/examine(mob/user)
if(dextrous)
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <b>[src]</b>!\n"
var/msg = "<span class='info'>*---------*\nThis is [bicon(src)] \a <b>[src]</b>!\n"
msg += "[desc]\n"
for(var/obj/item/I in held_items)
if(!(I.flags & ABSTRACT))
if(I.blood_DNA)
msg += "<span class='warning'>It has \icon[I] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in its [get_held_index_name(get_held_index_of_item(I))]!</span>\n"
msg += "<span class='warning'>It has [bicon(I)] [I.gender==PLURAL?"some":"a"] blood-stained [I.name] in its [get_held_index_name(get_held_index_of_item(I))]!</span>\n"
else
msg += "It has \icon[I] \a [I] in its [get_held_index_name(get_held_index_of_item(I))].\n"
msg += "It has [bicon(I)] \a [I] in its [get_held_index_name(get_held_index_of_item(I))].\n"
if(internal_storage && !(internal_storage.flags&ABSTRACT))
if(internal_storage.blood_DNA)
msg += "<span class='warning'>It is holding \icon[internal_storage] [internal_storage.gender==PLURAL?"some":"a"] blood-stained [internal_storage.name] in its internal storage!</span>\n"
msg += "<span class='warning'>It is holding [bicon(internal_storage)] [internal_storage.gender==PLURAL?"some":"a"] blood-stained [internal_storage.name] in its internal storage!</span>\n"
else
msg += "It is holding \icon[internal_storage] \a [internal_storage] in its internal storage.\n"
msg += "It is holding [bicon(internal_storage)] \a [internal_storage] in its internal storage.\n"
msg += "*---------*</span>"
to_chat(user, msg)
else
@@ -347,7 +347,7 @@
/mob/living/simple_animal/slime/examine(mob/user)
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n"
var/msg = "<span class='info'>*---------*\nThis is [bicon(src)] \a <EM>[src]</EM>!\n"
if (src.stat == DEAD)
msg += "<span class='deadsay'>It is limp and unresponsive.</span>\n"
else
+2 -2
View File
@@ -406,14 +406,14 @@
if(C.mix_sound)
playsound(get_turf(cached_my_atom), C.mix_sound, 80, 1)
for(var/mob/M in seen)
to_chat(M, "<span class='notice'>\icon[my_atom] [C.mix_message]</span>")
to_chat(M, "<span class='notice'>[bicon(my_atom)] [C.mix_message]</span>")
if(istype(cached_my_atom, /obj/item/slime_extract))
var/obj/item/slime_extract/ME2 = my_atom
ME2.Uses--
if(ME2.Uses <= 0) // give the notification that the slime core is dead
for(var/mob/M in seen)
to_chat(M, "<span class='notice'>\icon[my_atom] \The [my_atom]'s power is consumed in the reaction.</span>")
to_chat(M, "<span class='notice'>[bicon(my_atom)] \The [my_atom]'s power is consumed in the reaction.</span>")
ME2.name = "used slime extract"
ME2.desc = "This extract has been used up."
+1 -1
View File
@@ -341,7 +341,7 @@
found = 1
break
if(!found)
to_chat(user, "\icon[src]<span class=notice>The conveyor switch did not detect any linked conveyor belts in range.</span>")
to_chat(user, "[bicon(src)]<span class=notice>The conveyor switch did not detect any linked conveyor belts in range.</span>")
return
var/obj/machinery/conveyor_switch/NC = new/obj/machinery/conveyor_switch(A, id)
transfer_fingerprints_to(NC)
+1 -1
View File
@@ -235,7 +235,7 @@ a.updated {
if (!amt)
return
if (!S.buyShares(logged_in, amt))
to_chat(user, "<<span class='danger'>Could not complete transaction.</span>")
to_chat(user, "<span class='danger'>Could not complete transaction.</span>")
return
var/total = amt * S.current_value
+2 -2
View File
@@ -110,10 +110,10 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once.
var/obj/item/weapon/storage/box/B = A
if(istype(B) && B.contents.len > 0)
for(var/obj/item/I in B)
U.purchase_log += "<big>\icon[I]</big>"
U.purchase_log += "<big>[bicon(I)]</big>"
else
if(purchase_log_vis)
U.purchase_log += "<big>\icon[A]</big>"
U.purchase_log += "<big>[bicon(A)]</big>"
if(limited_stock > 0)
limited_stock -= 1
+10
View File
@@ -0,0 +1,10 @@
diff a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm (rejected hunks)
@@ -1312,7 +1312,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
continue
crate_value -= I.cost
new I.item(C)
- U.purchase_log += "<big>\icon[I.item]</big>"
+ U.purchase_log += "<big>[bicon(I.item)]</big>"
return C
+10
View File
@@ -0,0 +1,10 @@
diff a/code/world.dm b/code/world.dm (rejected hunks)
@@ -198,7 +198,7 @@
#define CHAT_PULLR 64 //defined in preferences.dm, but not available here at compilation time
for(var/client/C in GLOB.clients)
if(C.prefs && (C.prefs.chat_toggles & CHAT_PULLR))
- C << "<span class='announce'>PR: [announcement]</span>"
+ to_chat(C, "<span class='announce'>PR: [announcement]</span>")
#undef CHAT_PULLR
#define WORLD_REBOOT(X) log_world("World rebooted at [time_stamp()]"); ..(X); return;