mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-09 16:12:17 +00:00
cleans up so many to_chats so they use vchat filters, unsorted chat filter for everything else
This commit is contained in:
committed by
CHOMPStation2
parent
f09fd02e6e
commit
8ab9a847d0
@@ -465,7 +465,7 @@ var/global/datum/controller/occupations/job_master
|
||||
else
|
||||
spawn_in_storage += thing
|
||||
else
|
||||
to_chat(H, "Your job is [rank] and the game just can't handle it! Please report this bug to an administrator.")
|
||||
to_chat(H, "<span class='filter_notice'>Your job is [rank] and the game just can't handle it! Please report this bug to an administrator.</span>")
|
||||
|
||||
H.job = rank
|
||||
log_game("JOINED [key_name(H)] as \"[rank]\"")
|
||||
@@ -533,16 +533,16 @@ var/global/datum/controller/occupations/job_master
|
||||
W.color = R.color
|
||||
qdel(R)
|
||||
|
||||
to_chat(H, "<B>You are [job.total_positions == 1 ? "the" : "a"] [alt_title ? alt_title : rank].</B>")
|
||||
to_chat(H, "<span class='filter_notice'><B>You are [job.total_positions == 1 ? "the" : "a"] [alt_title ? alt_title : rank].</B></span>")
|
||||
|
||||
if(job.supervisors)
|
||||
to_chat(H, "<b>As the [alt_title ? alt_title : rank] you answer directly to [job.supervisors]. Special circumstances may change this.</b>")
|
||||
to_chat(H, "<span class='filter_notice'><b>As the [alt_title ? alt_title : rank] you answer directly to [job.supervisors]. Special circumstances may change this.</b></span>")
|
||||
if(job.has_headset)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset(H), slot_l_ear)
|
||||
to_chat(H, "<b>To speak on your department's radio channel use :h. For the use of other channels, examine your headset.</b>")
|
||||
to_chat(H, "<span class='filter_notice'><b>To speak on your department's radio channel use :h. For the use of other channels, examine your headset.</b></span>")
|
||||
|
||||
if(job.req_admin_notify)
|
||||
to_chat(H, "<b>You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via adminhelp.</b>")
|
||||
to_chat(H, "<span class='filter_notice'><b>You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via adminhelp.</b></span>")
|
||||
|
||||
// EMAIL GENERATION
|
||||
// Email addresses will be created under this domain name. Mostly for the looks.
|
||||
@@ -559,13 +559,13 @@ var/global/datum/controller/occupations/job_master
|
||||
|
||||
// If even fallback login generation failed, just don't give them an email. The chance of this happening is astronomically low.
|
||||
if(ntnet_global.does_email_exist(complete_login))
|
||||
to_chat(H, "You were not assigned an email address.")
|
||||
to_chat(H, "<span class='filter_notice'>You were not assigned an email address.</span>")
|
||||
H.mind.store_memory("You were not assigned an email address.")
|
||||
else
|
||||
var/datum/computer_file/data/email_account/EA = new/datum/computer_file/data/email_account()
|
||||
EA.password = GenerateKey()
|
||||
EA.login = complete_login
|
||||
to_chat(H, "Your email account address is <b>[EA.login]</b> and the password is <b>[EA.password]</b>. This information has also been placed into your notes.")
|
||||
to_chat(H, "<span class='filter_notice'>Your email account address is <b>[EA.login]</b> and the password is <b>[EA.password]</b>. This information has also been placed into your notes.</span>")
|
||||
H.mind.store_memory("Your email account address is [EA.login] and the password is [EA.password].")
|
||||
// END EMAIL GENERATION
|
||||
|
||||
@@ -898,7 +898,7 @@ var/global/datum/controller/occupations/job_master
|
||||
if(fail_deadly || J?.offmap_spawn)
|
||||
to_chat(C, "<span class='warning'>Your chosen spawnpoint ([spawnpos.display_name]) is unavailable for your chosen job. Please correct your spawn point choice.</span>")
|
||||
return
|
||||
to_chat(C, "Your chosen spawnpoint ([spawnpos.display_name]) is unavailable for your chosen job. Spawning you at the Arrivals shuttle instead.")
|
||||
to_chat(C, "<span class='filter_warning'>Your chosen spawnpoint ([spawnpos.display_name]) is unavailable for your chosen job. Spawning you at the Arrivals shuttle instead.</span>")
|
||||
var/spawning = pick(latejoin)
|
||||
.["turf"] = get_turf(spawning)
|
||||
.["msg"] = "will arrive at the station shortly"
|
||||
|
||||
@@ -454,11 +454,13 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
|
||||
var/part_b_extra = ""
|
||||
if(data == DATA_ANTAG) // intercepted radio message
|
||||
part_b_extra = " <i>(Intercepted)</i>"
|
||||
var/part_a = "<span class='[frequency_span_class(display_freq)]'>\icon[radio][bicon(radio)]<b>\[[freq_text]\][part_b_extra]</b> <span class='name'>" // goes in the actual output
|
||||
var/part_a = "<span class='[frequency_span_class(display_freq)]'>"
|
||||
var/part_b = "\icon[radio][bicon(radio)]<b>\[[freq_text]\][part_b_extra]</b> <span class='name'>" // goes in the actual output
|
||||
|
||||
// --- Some more pre-message formatting ---
|
||||
var/part_b = "</span> <span class='message'>" // Tweaked for security headsets -- TLE
|
||||
var/part_c = "</span></span>"
|
||||
var/part_c = "</span> <span class='message'>" // Tweaked for security headsets -- TLE
|
||||
var/part_d = "</span>"
|
||||
var/part_e = "</span>"
|
||||
|
||||
|
||||
// --- Filter the message; place it in quotes apply a verb ---
|
||||
@@ -470,8 +472,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
|
||||
|
||||
// --- This following recording is intended for research and feedback in the use of department radio channels ---
|
||||
|
||||
var/part_blackbox_b = "</span><b> \[[freq_text]\]</b> <span class='message'>" // Tweaked for security headsets -- TLE
|
||||
var/blackbox_msg = "[part_a][name][part_blackbox_b][quotedmsg][part_c]"
|
||||
var/part_blackbox_c = "</span><b> \[[freq_text]\]</b> <span class='message'>" // Tweaked for security headsets -- TLE
|
||||
var/blackbox_msg = "[part_a][part_b][name][part_blackbox_c][quotedmsg][part_d][part_e]"
|
||||
//var/blackbox_admin_msg = "[part_a][M.name] (Real name: [M.real_name])[part_blackbox_b][quotedmsg][part_c]"
|
||||
|
||||
//BR.messages_admin += blackbox_admin_msg
|
||||
@@ -510,28 +512,58 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
|
||||
/* --- Process all the mobs that heard a masked voice (understood) --- */
|
||||
if(length(heard_masked))
|
||||
for (var/mob/R in heard_masked)
|
||||
<<<<<<< HEAD
|
||||
R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, M, 0, name)
|
||||
=======
|
||||
R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, part_d, part_e, M, 0, name)
|
||||
if(R.is_preference_enabled(/datum/client_preference/radio_sounds))
|
||||
R << 'sound/effects/radio_common_quieter.ogg'
|
||||
>>>>>>> 0eb2f82d41... Merge pull request #14649 from Seris02/prmirror
|
||||
|
||||
/* --- Process all the mobs that heard the voice normally (understood) --- */
|
||||
if(length(heard_normal))
|
||||
for (var/mob/R in heard_normal)
|
||||
<<<<<<< HEAD
|
||||
R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, M, 0, realname)
|
||||
=======
|
||||
R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, part_d, part_e, M, 0, realname)
|
||||
if(R.is_preference_enabled(/datum/client_preference/radio_sounds))
|
||||
R << 'sound/effects/radio_common_quieter.ogg'
|
||||
>>>>>>> 0eb2f82d41... Merge pull request #14649 from Seris02/prmirror
|
||||
|
||||
/* --- Process all the mobs that heard the voice normally (did not understand) --- */
|
||||
if(length(heard_voice))
|
||||
for (var/mob/R in heard_voice)
|
||||
<<<<<<< HEAD
|
||||
R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, M,0, vname)
|
||||
=======
|
||||
R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, part_d, part_e, M,0, vname)
|
||||
if(R.is_preference_enabled(/datum/client_preference/radio_sounds))
|
||||
R << 'sound/effects/radio_common_quieter.ogg'
|
||||
>>>>>>> 0eb2f82d41... Merge pull request #14649 from Seris02/prmirror
|
||||
|
||||
/* --- Process all the mobs that heard a garbled voice (did not understand) --- */
|
||||
// Displays garbled message (ie "f*c* **u, **i*er!")
|
||||
if(length(heard_garbled))
|
||||
for (var/mob/R in heard_garbled)
|
||||
<<<<<<< HEAD
|
||||
R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, M, 1, vname)
|
||||
=======
|
||||
R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, part_d, part_e, M, 1, vname)
|
||||
if(R.is_preference_enabled(/datum/client_preference/radio_sounds))
|
||||
R << 'sound/effects/radio_common_quieter.ogg'
|
||||
>>>>>>> 0eb2f82d41... Merge pull request #14649 from Seris02/prmirror
|
||||
|
||||
/* --- Complete gibberish. Usually happens when there's a compressed message --- */
|
||||
if(length(heard_gibberish))
|
||||
for (var/mob/R in heard_gibberish)
|
||||
<<<<<<< HEAD
|
||||
R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, M, 1)
|
||||
=======
|
||||
R.hear_radio(message_pieces, verbage, part_a, part_b, part_c, part_d, part_e, M, 1)
|
||||
if(R.is_preference_enabled(/datum/client_preference/radio_sounds))
|
||||
R << 'sound/effects/radio_common_quieter.ogg'
|
||||
>>>>>>> 0eb2f82d41... Merge pull request #14649 from Seris02/prmirror
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -686,7 +686,7 @@ GLOBAL_LIST_EMPTY(blood_overlays_by_type)
|
||||
|
||||
/obj/item/proc/showoff(mob/user)
|
||||
for (var/mob/M in view(user))
|
||||
M.show_message("[user] holds up [src]. <a HREF=?src=\ref[M];lookitem=\ref[src]>Take a closer look.</a>",1)
|
||||
M.show_message("<span class='filter_notice'>[user] holds up [src]. <a HREF=?src=\ref[M];lookitem=\ref[src]>Take a closer look.</a></span>",1)
|
||||
|
||||
/mob/living/carbon/verb/showoff()
|
||||
set name = "Show Held Item"
|
||||
@@ -716,13 +716,13 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
|
||||
var/cannotzoom
|
||||
|
||||
if((usr.stat && !zoom) || !(istype(usr,/mob/living/carbon/human)))
|
||||
to_chat(usr, "You are unable to focus through the [devicename]")
|
||||
to_chat(usr, "<span class='filter_notice'>You are unable to focus through the [devicename].</span>")
|
||||
cannotzoom = 1
|
||||
else if(!zoom && (global_hud.darkMask[1] in usr.client.screen))
|
||||
to_chat(usr, "Your visor gets in the way of looking through the [devicename]")
|
||||
to_chat(usr, "<span class='filter_notice'>Your visor gets in the way of looking through the [devicename].</span>")
|
||||
cannotzoom = 1
|
||||
else if(!zoom && usr.get_active_hand() != src)
|
||||
to_chat(usr, "You are too distracted to look through the [devicename], perhaps if it was in your active hand this might work better")
|
||||
to_chat(usr, "<span class='filter_notice'>You are too distracted to look through the [devicename], perhaps if it was in your active hand this might work better.</span>")
|
||||
cannotzoom = 1
|
||||
|
||||
//We checked above if they are a human and returned already if they weren't.
|
||||
@@ -752,7 +752,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
|
||||
H.client.pixel_x = -viewoffset
|
||||
H.client.pixel_y = 0
|
||||
|
||||
H.visible_message("[usr] peers through the [zoomdevicename ? "[zoomdevicename] of the [src.name]" : "[src.name]"].")
|
||||
H.visible_message("<span class='filter_notice'>[usr] peers through the [zoomdevicename ? "[zoomdevicename] of the [src.name]" : "[src.name]"].</span>")
|
||||
if(!ignore_visor_zoom_restriction)
|
||||
H.looking_elsewhere = TRUE
|
||||
H.handle_vision()
|
||||
@@ -770,7 +770,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
|
||||
H.handle_vision()
|
||||
|
||||
if(!cannotzoom)
|
||||
usr.visible_message("[zoomdevicename ? "[usr] looks up from the [src.name]" : "[usr] lowers the [src.name]"].")
|
||||
usr.visible_message("<span class='filter_notice'>[zoomdevicename ? "[usr] looks up from the [src.name]" : "[usr] lowers the [src.name]"].</span>")
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -94,6 +94,6 @@
|
||||
msg += "[line]"
|
||||
msg += "</table>"
|
||||
msg += "<b>Total Players: [length(Lines)]</b>"
|
||||
msg = "<span class='filter_info'>" + msg + "</span>"
|
||||
msg = "<span class='filter_notice'>" + msg + "</span>"
|
||||
to_chat(src, msg)
|
||||
YW EDIT STOP*/
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
msg += "[line]\n"
|
||||
|
||||
msg += "<b>Total Players: [length(Lines)]</b>"
|
||||
msg = "<span class='filter_notice'>[jointext(msg, "<br>")]</span>"
|
||||
to_chat(src,msg)
|
||||
|
||||
/client/verb/staffwho()
|
||||
@@ -145,4 +146,4 @@
|
||||
|
||||
msg += "\n<span class='info'>Adminhelps are also sent to Discord. If no admins are available in game try anyway and an admin on Discord may see it and respond.</span>"
|
||||
|
||||
to_chat(src, msg)
|
||||
to_chat(src,"<span class='filter_notice'>[jointext(msg, "<br>")]</span>")
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
CC.update_icon()
|
||||
cut_overlays()
|
||||
string_attached = null
|
||||
to_chat(user, "<font color='blue'>You detach the string from the coin.</font>")
|
||||
to_chat(user, "<span class='notice'>You detach the string from the coin.</span>")
|
||||
else ..()
|
||||
|
||||
/obj/item/weapon/coin/attack_self(mob/user as mob)
|
||||
|
||||
@@ -184,7 +184,7 @@ GLOBAL_LIST_EMPTY(vending_products)
|
||||
/obj/machinery/vending/emag_act(var/remaining_charges, var/mob/user)
|
||||
if(!emagged)
|
||||
emagged = 1
|
||||
to_chat(user, "You short out \the [src]'s product lock.")
|
||||
to_chat(user, "<span class='filter_notice'>You short out \the [src]'s product lock.</span>")
|
||||
return 1
|
||||
|
||||
/obj/machinery/vending/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
@@ -243,9 +243,9 @@ GLOBAL_LIST_EMPTY(vending_products)
|
||||
else if(W.is_wrench())
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(anchored)
|
||||
user.visible_message("[user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.")
|
||||
user.visible_message("<span class='filter_notice'>[user] begins unsecuring \the [src] from the floor.</span>", "<span class='filter_notice'>You start unsecuring \the [src] from the floor.</span>")
|
||||
else
|
||||
user.visible_message("[user] begins securing \the [src] to the floor.", "You start securing \the [src] to the floor.")
|
||||
user.visible_message("<span class='filter_notice'>[user] begins securing \the [src] to the floor.</span>", "<span class='filter_notice'>You start securing \the [src] to the floor.</span>")
|
||||
|
||||
if(do_after(user, 20 * W.toolspeed))
|
||||
if(!src) return
|
||||
@@ -487,7 +487,7 @@ GLOBAL_LIST_EMPTY(vending_products)
|
||||
return FALSE
|
||||
|
||||
if(!coin)
|
||||
to_chat(usr, "There is no coin in this machine.")
|
||||
to_chat(usr, "<span class='filter_notice'>There is no coin in this machine.</span>")
|
||||
return
|
||||
|
||||
coin.forceMove(src.loc)
|
||||
@@ -538,7 +538,7 @@ GLOBAL_LIST_EMPTY(vending_products)
|
||||
var/obj/item/weapon/card/id/C = H.GetIdCard()
|
||||
|
||||
if(!vendor_account || vendor_account.suspended)
|
||||
to_chat(usr, "Vendor account offline. Unable to process transaction.")
|
||||
to_chat(usr, "<span class='filter_notice'>Vendor account offline. Unable to process transaction.</span>")
|
||||
flick("[icon_state]-deny",src)
|
||||
vend_ready = TRUE
|
||||
return
|
||||
@@ -679,7 +679,7 @@ GLOBAL_LIST_EMPTY(vending_products)
|
||||
return 0
|
||||
|
||||
if (src.anchored || usr:stat)
|
||||
to_chat(usr, "It is bolted down!")
|
||||
to_chat(usr, "<span class='filter_notice'>It is bolted down!</span>")
|
||||
return 0
|
||||
src.set_dir(turn(src.dir, 270))
|
||||
return 1
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
var/list/results = A.examine(src)
|
||||
if(!results || !results.len)
|
||||
results = list("You were unable to examine that. Tell a developer!")
|
||||
to_chat(src, jointext(results, "<br>"))
|
||||
to_chat(src, "<span class='filter_notice'>[jointext(results, "<br>")]</span>")
|
||||
update_examine_panel(A)
|
||||
|
||||
/mob/proc/update_examine_panel(var/atom/A)
|
||||
|
||||
@@ -145,7 +145,7 @@ GLOBAL_LIST_INIT(generic_fishing_chance_list, list(FISHING_RARE = 5, FISHING_UNC
|
||||
has_fish = FALSE
|
||||
//List of possible outcomes.
|
||||
if(!fish_type)
|
||||
to_chat(user,"You caught... nothing. How sad.")
|
||||
to_chat(user,"<span class='filter_notice'>You caught... nothing. How sad.</span>")
|
||||
else
|
||||
var/fished = new fish_type(get_turf(user))
|
||||
if(isliving(fished))
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
to_chat(user, "<span class='notice'>Your net is already holding something!</span>")
|
||||
accept = FALSE
|
||||
if(!accept)
|
||||
to_chat(user, "[A] can't be trapped in \the [src].")
|
||||
to_chat(user, "<span class='filter_notice'>[A] can't be trapped in \the [src].</span>")
|
||||
return
|
||||
var/mob/L = A
|
||||
user.visible_message("<span class='notice'>[user] snatches [L] with \the [src].</span>", "<span class='notice'>You snatch [L] with \the [src].</span>")
|
||||
|
||||
@@ -157,12 +157,12 @@
|
||||
if (stat & POWEROFF)//Its turned off
|
||||
stat &= ~POWEROFF
|
||||
use_power = 1
|
||||
user.visible_message("[user] turns [src] on.", "You turn on [src].")
|
||||
user.visible_message("<span class='filter_notice'>[user] turns [src] on.</span>", "<span class='filter_notice'>You turn on [src].</span>")
|
||||
|
||||
else //Its on, turn it off
|
||||
stat |= POWEROFF
|
||||
use_power = 0
|
||||
user.visible_message("[user] turns [src] off.", "You turn off [src].")
|
||||
user.visible_message("<span class='filter_notice'>[user] turns [src] off.</span>", "<span class='filter_notice'>You turn off [src].</span>")
|
||||
cooking = FALSE // Stop cooking here, too, just in case.
|
||||
|
||||
playsound(src, 'sound/machines/click.ogg', 40, 1)
|
||||
@@ -180,14 +180,14 @@
|
||||
return
|
||||
|
||||
if (!usr.IsAdvancedToolUser())
|
||||
to_chat(usr, "You lack the dexterity to do that!")
|
||||
to_chat(usr, "<span class='filter_notice'>You lack the dexterity to do that!</span>")
|
||||
return
|
||||
|
||||
if (usr.stat || usr.restrained() || usr.incapacitated())
|
||||
return
|
||||
|
||||
if (!Adjacent(usr) && !issilicon(usr))
|
||||
to_chat(usr, "You can't adjust the [src] from this distance, get closer!")
|
||||
to_chat(usr, "<span class='filter_notice'>You can't adjust the [src] from this distance, get closer!</span>")
|
||||
return
|
||||
|
||||
if(output_options.len)
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
var/obj/item/I = usr.get_active_hand()
|
||||
if(slot <= LAZYLEN(cooking_objs)) // Inserting
|
||||
var/datum/cooking_item/CI = cooking_objs[slot]
|
||||
|
||||
|
||||
if(istype(I) && can_insert(I)) // Why do hard work when we can just make them smack us?
|
||||
attackby(I, usr)
|
||||
else if(istype(CI))
|
||||
@@ -82,7 +82,7 @@
|
||||
. += "Temperature: [round(temperature - T0C, 0.1)]C / [round(optimal_temp - T0C, 0.1)]C"
|
||||
else
|
||||
. += "<span class='warning'>It is switched off.</span>"
|
||||
|
||||
|
||||
/obj/machinery/appliance/cooker/list_contents(var/mob/user)
|
||||
if (cooking_objs.len)
|
||||
var/string = "Contains...</br>"
|
||||
@@ -95,7 +95,7 @@
|
||||
to_chat(user, string)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>It's empty.</span>")
|
||||
|
||||
|
||||
/obj/machinery/appliance/cooker/proc/get_efficiency()
|
||||
// to_world("Our cooking_power is [cooking_power] and our efficiency is [(cooking_power / optimal_power) * 100].") // Debug lines, uncomment if you need to test.
|
||||
return (cooking_power / optimal_power) * 100
|
||||
@@ -131,11 +131,11 @@
|
||||
if (temperature > T.temperature)
|
||||
equalize_temperature()
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/appliance/cooker/power_change()
|
||||
. = ..()
|
||||
update_icon() // this probably won't cause issues, but Aurora used SSIcons and queue_icon_update() instead
|
||||
|
||||
|
||||
/obj/machinery/appliance/cooker/proc/update_cooking_power()
|
||||
var/temp_scale = 0
|
||||
if(temperature > min_temp)
|
||||
@@ -143,22 +143,22 @@
|
||||
temp_scale = 1
|
||||
else
|
||||
temp_scale = (temperature - min_temp) / (optimal_temp - min_temp) // If we're between min and optimal this will yield a value in the range 0-1
|
||||
|
||||
|
||||
/* // old code for reference, will be useful if/when we implement ovens with configurable temperatures - TODO recipes with optimal temps for cooking per-recipe??
|
||||
temp_scale = (temperature - min_temp) / (optimal_temp - min_temp) // If we're between min and optimal this will yield a value in the range 0-1
|
||||
|
||||
|
||||
if(temp_scale > 1) // We're above optimal, efficiency goes down as we pass too much over it
|
||||
if(temp_scale >= 2)
|
||||
temp_scale = 0
|
||||
else
|
||||
temp_scale = 1 - (temp_scale - 1)
|
||||
*/
|
||||
|
||||
|
||||
cooking_coeff = optimal_power * temp_scale
|
||||
// to_world("Our cooking_power is [cooking_power] and our tempscale is [temp_scale], and our cooking_coeff is [cooking_coeff] before RefreshParts.") // Debug lines, uncomment if you need to test.
|
||||
RefreshParts()
|
||||
// to_world("Our cooking_power is [cooking_power] after RefreshParts.") // Debug lines, uncomment if you need to test.
|
||||
|
||||
|
||||
/obj/machinery/appliance/cooker/proc/heat_up()
|
||||
if(temperature < optimal_temp)
|
||||
if(use_power == 1 && ((optimal_temp - temperature) > 5))
|
||||
@@ -199,5 +199,5 @@
|
||||
/obj/machinery/appliance/cooker/add_content(var/obj/item/I, var/mob/user)
|
||||
var/datum/cooking_item/CI = ..()
|
||||
if(istype(CI) && CI.combine_target)
|
||||
to_chat(user, "\The [I] will be used to make a [selected_option]. Output selection is returned to default for future items.")
|
||||
to_chat(user, "<span class='filter_notice'>\The [I] will be used to make a [selected_option]. Output selection is returned to default for future items.</span>")
|
||||
selected_option = null
|
||||
@@ -25,12 +25,12 @@ fundamental differences
|
||||
cooking_objs += new /datum/cooking_item(new /obj/item/weapon/reagent_containers/cooking_container(src))
|
||||
cooking = FALSE
|
||||
selected_option = pick(output_options)
|
||||
|
||||
|
||||
mixer_loop = new(list(src), FALSE)
|
||||
|
||||
|
||||
/obj/machinery/appliance/mixer/Destroy()
|
||||
. = ..()
|
||||
|
||||
|
||||
QDEL_NULL(mixer_loop)
|
||||
|
||||
//Mixers cannot-not do combining mode. So the default option is removed from this. A combine target must be chosen
|
||||
@@ -83,7 +83,7 @@ fundamental differences
|
||||
for(var/datum/cooking_item/CI as anything in cooking_objs)
|
||||
if (CI.container)
|
||||
if (!CI.container.check_contents())
|
||||
to_chat(user, "There's nothing in [src] you can remove!")
|
||||
to_chat(user, "<span class='filter_notice'>There's nothing in [src] you can remove!</span>")
|
||||
return
|
||||
|
||||
for (var/obj/item/I in CI.container)
|
||||
@@ -106,20 +106,20 @@ fundamental differences
|
||||
|
||||
var/datum/cooking_item/CI = cooking_objs[1]
|
||||
if(!CI.container.check_contents())
|
||||
to_chat("There's nothing in it! Add ingredients before turning [src] on!")
|
||||
to_chat("<span class='filter_notice'>There's nothing in it! Add ingredients before turning [src] on!</span>")
|
||||
return
|
||||
|
||||
if(stat & POWEROFF)//Its turned off
|
||||
stat &= ~POWEROFF
|
||||
if(usr)
|
||||
usr.visible_message("[usr] turns the [src] on", "You turn on \the [src].")
|
||||
usr.visible_message("<span class='filter_notice'>[usr] turns the [src] on.</span>", "<span class='filter_notice'>You turn on \the [src].</span>")
|
||||
get_cooking_work(CI)
|
||||
use_power = 2
|
||||
else //Its on, turn it off
|
||||
stat |= POWEROFF
|
||||
use_power = 0
|
||||
if(usr)
|
||||
usr.visible_message("[usr] turns the [src] off", "You turn off \the [src].")
|
||||
usr.visible_message("<span class='filter_notice'>[usr] turns the [src] off.</span>", "<span class='filter_notice'>You turn off \the [src].</span>")
|
||||
playsound(src, 'sound/machines/click.ogg', 40, 1)
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
return
|
||||
|
||||
if (!Adjacent(user))
|
||||
to_chat(user, "You can't reach [src] from here.")
|
||||
to_chat(user, "<span class='filter_notice'>You can't reach [src] from here.</span>")
|
||||
return
|
||||
|
||||
if (!contents.len)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
/obj/machinery/appliance/cooker/fryer
|
||||
name = "deep fryer"
|
||||
desc = "Deep fried <i>everything</i>."
|
||||
@@ -273,3 +274,274 @@
|
||||
return 1
|
||||
//If neither of the above returned, then call parent as normal
|
||||
..()
|
||||
=======
|
||||
/obj/machinery/appliance/cooker/fryer
|
||||
name = "deep fryer"
|
||||
desc = "Deep fried <i>everything</i>."
|
||||
icon_state = "fryer_off"
|
||||
can_cook_mobs = 1
|
||||
cook_type = "deep fried"
|
||||
on_icon = "fryer_on"
|
||||
off_icon = "fryer_off"
|
||||
food_color = "#FFAD33"
|
||||
cooked_sound = 'sound/machines/ding.ogg'
|
||||
var/datum/looping_sound/deep_fryer/fry_loop
|
||||
circuit = /obj/item/weapon/circuitboard/fryer
|
||||
appliancetype = FRYER
|
||||
active_power_usage = 12 KILOWATTS
|
||||
heating_power = 12 KILOWATTS
|
||||
|
||||
light_y = 15
|
||||
|
||||
min_temp = 140 + T0C // Same as above, increasing this to just under 2x to make the % increase on efficiency not quite so painful as it would be at 80.
|
||||
optimal_temp = 400 + T0C // Increasing this to be 2x Oven to allow for a much higher/realistic frying temperatures. Doesn't really do anything but make heating the fryer take a bit longer.
|
||||
optimal_power = 0.95 // .35 higher than the default to give fryers faster cooking speed.
|
||||
|
||||
idle_power_usage = 3.6 KILOWATTS
|
||||
// Power used to maintain temperature once it's heated.
|
||||
// Going with 25% of the active power. This is a somewhat arbitrary value.
|
||||
|
||||
resistance = 10 KILOWATTS // Approx. 10 minutes to heat up.
|
||||
|
||||
max_contents = 2
|
||||
container_type = /obj/item/weapon/reagent_containers/cooking_container/fryer
|
||||
|
||||
stat = POWEROFF // Starts turned off
|
||||
|
||||
var/datum/reagents/oil
|
||||
var/optimal_oil = 9000 //90 litres of cooking oil
|
||||
|
||||
/obj/machinery/appliance/cooker/fryer/Initialize()
|
||||
. = ..()
|
||||
fry_loop = new(list(src), FALSE)
|
||||
|
||||
oil = new/datum/reagents(optimal_oil * 1.25, src)
|
||||
var/variance = rand()*0.15
|
||||
// Fryer is always a little below full, but its usually negligible
|
||||
|
||||
if(prob(20))
|
||||
// Sometimes the fryer will start with much less than full oil, significantly impacting efficiency until filled
|
||||
variance = rand()*0.5
|
||||
oil.add_reagent("cookingoil", optimal_oil*(1 - variance))
|
||||
|
||||
/obj/machinery/appliance/cooker/fryer/Destroy()
|
||||
QDEL_NULL(fry_loop)
|
||||
QDEL_NULL(oil)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/appliance/cooker/fryer/examine(var/mob/user)
|
||||
. = ..()
|
||||
if(Adjacent(user))
|
||||
to_chat(user, "Oil Level: [oil.total_volume]/[optimal_oil]")
|
||||
|
||||
/obj/machinery/appliance/cooker/fryer/update_icon() // We add our own version of the proc to use the special fryer double-lights.
|
||||
cut_overlays()
|
||||
var/image/light
|
||||
if(use_power == 1 && !stat)
|
||||
light = image(icon, "fryer_light_idle")
|
||||
else if(use_power == 2 && !stat)
|
||||
light = image(icon, "fryer_light_preheating")
|
||||
else
|
||||
light = image(icon, "fryer_light_off")
|
||||
light.pixel_x = light_x
|
||||
light.pixel_y = light_y
|
||||
add_overlay(light)
|
||||
|
||||
/obj/machinery/appliance/cooker/fryer/heat_up()
|
||||
if (..())
|
||||
//Set temperature of oil reagent
|
||||
var/datum/reagent/nutriment/triglyceride/oil/OL = oil.get_master_reagent()
|
||||
if (OL && istype(OL))
|
||||
OL.data["temperature"] = temperature
|
||||
|
||||
/obj/machinery/appliance/cooker/fryer/equalize_temperature()
|
||||
if (..())
|
||||
//Set temperature of oil reagent
|
||||
var/datum/reagent/nutriment/triglyceride/oil/OL = oil.get_master_reagent()
|
||||
if (OL && istype(OL))
|
||||
OL.data["temperature"] = temperature
|
||||
|
||||
/obj/machinery/appliance/cooker/fryer/update_cooking_power()
|
||||
..()//In addition to parent temperature calculation
|
||||
//Fryer efficiency also drops when oil levels arent optimal
|
||||
var/oil_level = 0
|
||||
var/datum/reagent/nutriment/triglyceride/oil/OL = oil.get_master_reagent()
|
||||
if(OL && istype(OL))
|
||||
oil_level = OL.volume
|
||||
|
||||
var/oil_efficiency = 0
|
||||
if(oil_level)
|
||||
oil_efficiency = oil_level / optimal_oil
|
||||
|
||||
if(oil_efficiency > 1)
|
||||
//We're above optimal, efficiency goes down as we pass too much over it
|
||||
oil_efficiency = 1 - (oil_efficiency - 1)
|
||||
|
||||
|
||||
cooking_power *= oil_efficiency
|
||||
|
||||
/obj/machinery/appliance/cooker/fryer/update_icon()
|
||||
if(!stat)
|
||||
..()
|
||||
if(cooking == TRUE)
|
||||
icon_state = on_icon
|
||||
if(fry_loop)
|
||||
fry_loop.start(src)
|
||||
else
|
||||
icon_state = off_icon
|
||||
if(fry_loop)
|
||||
fry_loop.stop(src)
|
||||
else
|
||||
icon_state = off_icon
|
||||
if(fry_loop)
|
||||
fry_loop.stop(src)
|
||||
..()
|
||||
|
||||
//Fryer gradually infuses any cooked food with oil. Moar calories
|
||||
//This causes a slow drop in oil levels, encouraging refill after extended use
|
||||
/obj/machinery/appliance/cooker/fryer/do_cooking_tick(var/datum/cooking_item/CI)
|
||||
if(..() && (CI.oil < CI.max_oil) && prob(20))
|
||||
var/datum/reagents/buffer = new /datum/reagents(2)
|
||||
oil.trans_to_holder(buffer, min(0.5, CI.max_oil - CI.oil))
|
||||
CI.oil += buffer.total_volume
|
||||
CI.container.soak_reagent(buffer)
|
||||
|
||||
|
||||
//To solve any odd logic problems with results having oil as part of their compiletime ingredients.
|
||||
//Upon finishing a recipe the fryer will analyse any oils in the result, and replace them with our oil
|
||||
//As well as capping the total to the max oil
|
||||
/obj/machinery/appliance/cooker/fryer/finish_cooking(var/datum/cooking_item/CI)
|
||||
..()
|
||||
var/total_oil = 0
|
||||
var/total_our_oil = 0
|
||||
var/total_removed = 0
|
||||
var/datum/reagent/our_oil = oil.get_master_reagent()
|
||||
|
||||
for (var/obj/item/I in CI.container)
|
||||
if (I.reagents && I.reagents.total_volume)
|
||||
for (var/datum/reagent/R in I.reagents.reagent_list)
|
||||
if (istype(R, /datum/reagent/nutriment/triglyceride/oil))
|
||||
total_oil += R.volume
|
||||
if (R.id != our_oil.id)
|
||||
total_removed += R.volume
|
||||
I.reagents.remove_reagent(R.id, R.volume)
|
||||
else
|
||||
total_our_oil += R.volume
|
||||
|
||||
|
||||
if (total_removed > 0 || total_oil != CI.max_oil)
|
||||
total_oil = min(total_oil, CI.max_oil)
|
||||
|
||||
if (total_our_oil < total_oil)
|
||||
//If we have less than the combined total, then top up from our reservoir
|
||||
var/datum/reagents/buffer = new /datum/reagents(INFINITY)
|
||||
oil.trans_to_holder(buffer, total_oil - total_our_oil)
|
||||
CI.container.soak_reagent(buffer)
|
||||
else if (total_our_oil > total_oil)
|
||||
|
||||
//If we have more than the maximum allowed then we delete some.
|
||||
//This could only happen if one of the objects spawns with the same type of oil as ours
|
||||
var/portion = 1 - (total_oil / total_our_oil) //find the percentage to remove
|
||||
for (var/obj/item/I in CI.container)
|
||||
if (I.reagents && I.reagents.total_volume)
|
||||
for (var/datum/reagent/R in I.reagents.reagent_list)
|
||||
if (R.id == our_oil.id)
|
||||
I.reagents.remove_reagent(R.id, R.volume*portion)
|
||||
|
||||
/obj/machinery/appliance/cooker/fryer/cook_mob(var/mob/living/victim, var/mob/user)
|
||||
|
||||
if(!istype(victim))
|
||||
return
|
||||
|
||||
// user.visible_message("<span class='danger'>\The [user] starts pushing \the [victim] into \the [src]!</span>")
|
||||
|
||||
//Removed delay on this action in favour of a cooldown after it
|
||||
//If you can lure someone close to the fryer and grab them then you deserve success.
|
||||
//And a delay on this kind of niche action just ensures it never happens
|
||||
//Cooldown ensures it can't be spammed to instakill someone
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN*3)
|
||||
|
||||
fry_loop.start(src)
|
||||
|
||||
if(!do_mob(user, victim, 20))
|
||||
cooking = FALSE
|
||||
icon_state = off_icon
|
||||
fry_loop.stop(src)
|
||||
return
|
||||
|
||||
if(!victim || !victim.Adjacent(user))
|
||||
to_chat(user, "<span class='danger'>Your victim slipped free!</span>")
|
||||
cooking = FALSE
|
||||
icon_state = off_icon
|
||||
fry_loop.stop(src)
|
||||
return
|
||||
|
||||
var/damage = rand(7,13) // Though this damage seems reduced, some hot oil is transferred to the victim and will burn them for a while after
|
||||
|
||||
var/datum/reagent/nutriment/triglyceride/oil/OL = oil.get_master_reagent()
|
||||
damage *= OL.heatdamage(victim)
|
||||
|
||||
var/obj/item/organ/external/E
|
||||
var/nopain
|
||||
if(ishuman(victim) && user.zone_sel.selecting != BP_GROIN && user.zone_sel.selecting != BP_TORSO)
|
||||
var/mob/living/carbon/human/H = victim
|
||||
E = H.get_organ(user.zone_sel.selecting)
|
||||
if(!E || E.species.flags & NO_PAIN)
|
||||
nopain = 2
|
||||
else if(E.robotic >= ORGAN_ROBOT)
|
||||
nopain = 1
|
||||
|
||||
user.visible_message("<span class='danger'>\The [user] shoves \the [victim][E ? "'s [E.name]" : ""] into \the [src]!</span>")
|
||||
if (damage > 0)
|
||||
if(E)
|
||||
if(E.children && E.children.len)
|
||||
for(var/obj/item/organ/external/child in E.children)
|
||||
if(nopain && nopain < 2 && !(child.robotic >= ORGAN_ROBOT))
|
||||
nopain = 0
|
||||
child.take_damage(0, damage)
|
||||
damage -= (damage*0.5)//IF someone's arm is plunged in, the hand should take most of it
|
||||
E.take_damage(0, damage)
|
||||
else
|
||||
victim.apply_damage(damage, BURN, user.zone_sel.selecting)
|
||||
|
||||
if(!nopain)
|
||||
to_chat(victim, "<span class='danger'>Agony consumes you as searing hot oil scorches your [E ? E.name : "flesh"] horribly!</span>")
|
||||
victim.emote("scream")
|
||||
else
|
||||
to_chat(victim, "<span class='danger'>Searing hot oil scorches your [E ? E.name : "flesh"]!</span>")
|
||||
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Has [cook_type] \the [victim] ([victim.ckey]) in \a [src]</font>")
|
||||
victim.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been [cook_type] in \a [src] by [user.name] ([user.ckey])</font>")
|
||||
msg_admin_attack("[key_name_admin(user)] [cook_type] \the [victim] ([victim.ckey]) in \a [src]. (<A HREF='?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||
|
||||
//Coat the victim in some oil
|
||||
oil.trans_to(victim, 40)
|
||||
|
||||
fry_loop.stop()
|
||||
|
||||
/obj/machinery/appliance/cooker/fryer/attackby(var/obj/item/I, var/mob/user)
|
||||
if(istype(I, /obj/item/weapon/reagent_containers/glass) && I.reagents)
|
||||
if (I.reagents.total_volume <= 0 && oil)
|
||||
//Its empty, handle scooping some hot oil out of the fryer
|
||||
oil.trans_to(I, I.reagents.maximum_volume)
|
||||
user.visible_message("<span class='filter_notice'>[user] scoops some oil out of \the [src].</span>", span("notice","You scoop some oil out of \the [src]."))
|
||||
return 1
|
||||
else
|
||||
//It contains stuff, handle pouring any oil into the fryer
|
||||
//Possibly in future allow pouring non-oil reagents in, in order to sabotage it and poison food.
|
||||
//That would really require coding some sort of filter or better replacement mechanism first
|
||||
//So for now, restrict to oil only
|
||||
var/amount = 0
|
||||
for (var/datum/reagent/R in I.reagents.reagent_list)
|
||||
if (istype(R, /datum/reagent/nutriment/triglyceride/oil))
|
||||
var/delta = oil.get_free_space()
|
||||
delta = min(delta, R.volume)
|
||||
oil.add_reagent(R.id, delta)
|
||||
I.reagents.remove_reagent(R.id, delta)
|
||||
amount += delta
|
||||
if (amount > 0)
|
||||
user.visible_message("<span class='filter_notice'>[user] pours some oil into \the [src].</span>", "<span class='notice'>You pour [amount]u of oil into \the [src].</span>", "<span class='notice'>You hear something viscous being poured into a metal container.</span>")
|
||||
return 1
|
||||
//If neither of the above returned, then call parent as normal
|
||||
..()
|
||||
>>>>>>> 0eb2f82d41... Merge pull request #14649 from Seris02/prmirror
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
/obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(O.is_screwdriver())
|
||||
panel_open = !panel_open
|
||||
user.visible_message("[user] [panel_open ? "opens" : "closes"] the maintenance panel of \the [src].", "You [panel_open ? "open" : "close"] the maintenance panel of \the [src].")
|
||||
user.visible_message("<span class='filter_notice'>[user] [panel_open ? "opens" : "closes"] the maintenance panel of \the [src].</span>", "<span class='filter_notice'>You [panel_open ? "open" : "close"] the maintenance panel of \the [src].</span>")
|
||||
playsound(src, O.usesound, 50, 1)
|
||||
update_icon()
|
||||
return
|
||||
@@ -130,11 +130,11 @@
|
||||
else if(istype(O, /obj/item/weapon/gripper)) // Grippers. ~Mechoid.
|
||||
var/obj/item/weapon/gripper/B = O //B, for Borg.
|
||||
if(!B.wrapped)
|
||||
to_chat(user, "\The [B] is not holding anything.")
|
||||
to_chat(user, "<span class='filter_notice'>\The [B] is not holding anything.</span>")
|
||||
return
|
||||
else
|
||||
var/B_held = B.wrapped
|
||||
to_chat(user, "You use \the [B] to put \the [B_held] into \the [src].")
|
||||
to_chat(user, "<span class='filter_notice'>You use \the [B] to put \the [B_held] into \the [src].</span>")
|
||||
return
|
||||
|
||||
else
|
||||
@@ -145,7 +145,7 @@
|
||||
if(!emagged)
|
||||
emagged = 1
|
||||
locked = -1
|
||||
to_chat(user, "You short out the product lock on [src].")
|
||||
to_chat(user, "<span class='filter_notice'>You short out the product lock on [src].</span>")
|
||||
return 1
|
||||
|
||||
/obj/machinery/smartfridge/proc/find_record(var/obj/item/O)
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
if(G.get_amount() >= G.max_amount)
|
||||
continue
|
||||
G.attackby(NG, user)
|
||||
to_chat(user, "You add the newly-formed wood to the stack. It now contains [NG.get_amount()] planks.")
|
||||
to_chat(user, "<span class='filter_notice'>You add the newly-formed wood to the stack. It now contains [NG.get_amount()] planks.</span>")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -221,31 +221,31 @@
|
||||
return
|
||||
|
||||
if(seed.kitchen_tag == "potato" || !isnull(seed.chems["potato"]))
|
||||
to_chat(user, "You slice \the [src] into sticks.")
|
||||
to_chat(user, "<span class='filter_notice'>You slice \the [src] into sticks.</span>")
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(!isnull(seed.chems["carrotjuice"]))
|
||||
to_chat(user, "You slice \the [src] into sticks.")
|
||||
to_chat(user, "<span class='filter_notice'>You slice \the [src] into sticks.</span>")
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/carrotfries(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(!isnull(seed.chems["pineapplejuice"]))
|
||||
to_chat(user, "You slice \the [src] into rings.")
|
||||
to_chat(user, "<span class='filter_notice'>You slice \the [src] into rings.</span>")
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/pineapple_ring(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(!isnull(seed.chems["soymilk"]))
|
||||
to_chat(user, "You roughly chop up \the [src].")
|
||||
to_chat(user, "<span class='filter_notice'>You roughly chop up \the [src].</span>")
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/soydope(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(seed.get_trait(TRAIT_FLESH_COLOUR))
|
||||
to_chat(user, "You slice up \the [src].")
|
||||
to_chat(user, "<span class='filter_notice'>You slice up \the [src].</span>")
|
||||
var/slices = rand(3,5)
|
||||
var/reagents_to_transfer = round(reagents.total_volume/slices)
|
||||
for(var/i=1; i<=slices; i++)
|
||||
@@ -316,7 +316,7 @@
|
||||
if(NG.get_amount() >= NG.max_amount)
|
||||
continue
|
||||
NG.attackby(G, user)
|
||||
to_chat(user, "You add the newly-formed carpet to the stack. It now contains [G.get_amount()] tiles.")
|
||||
to_chat(user, "<span class='filter_notice'>You add the newly-formed carpet to the stack. It now contains [G.get_amount()] tiles.</span>")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -796,7 +796,7 @@
|
||||
to_chat(user, "<span class='danger'>You fail to harvest anything useful.</span>")
|
||||
else
|
||||
if(istype(user))
|
||||
to_chat(user, "You [harvest_sample ? "take a sample" : "harvest"] from the [display_name].")
|
||||
to_chat(user, "<span class='filter_notice'>You [harvest_sample ? "take a sample" : "harvest"] from the [display_name].</span>")
|
||||
|
||||
//This may be a new line. Update the global if it is.
|
||||
if(name == "new line" || !(name in SSplants.seeds))
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
if(genes.len)
|
||||
var/choice = tgui_alert(user, "Are you sure you want to wipe the disk?", "Xenobotany Data", list("No", "Yes"))
|
||||
if(src && user && genes && choice && choice == "Yes" && user.Adjacent(get_turf(src)))
|
||||
to_chat(user, "You wipe the disk data.")
|
||||
to_chat(user, "<span class='filter_notice'>You wipe the disk data.</span>")
|
||||
name = initial(name)
|
||||
desc = initial(name)
|
||||
genes = list()
|
||||
@@ -68,30 +68,30 @@
|
||||
active = 0
|
||||
if(failed_task)
|
||||
failed_task = 0
|
||||
visible_message("\icon[src][bicon(src)] [src] pings unhappily, flashing a red warning light.")
|
||||
visible_message("<span class='filter_notice'>\icon[src][bicon(src)] [src] pings unhappily, flashing a red warning light.</span>")
|
||||
else
|
||||
visible_message("\icon[src][bicon(src)] [src] pings happily.")
|
||||
visible_message("<span class='filter_notice'>\icon[src][bicon(src)] [src] pings happily.</span>")
|
||||
|
||||
if(eject_disk)
|
||||
eject_disk = 0
|
||||
if(loaded_disk)
|
||||
loaded_disk.loc = get_turf(src)
|
||||
visible_message("\icon[src][bicon(src)] [src] beeps and spits out [loaded_disk].")
|
||||
visible_message("<span class='filter_notice'>\icon[src][bicon(src)] [src] beeps and spits out [loaded_disk].</span>")
|
||||
loaded_disk = null
|
||||
|
||||
/obj/machinery/botany/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/seeds))
|
||||
if(seed)
|
||||
to_chat(user, "There is already a seed loaded.")
|
||||
to_chat(user, "<span class='filter_notice'>There is already a seed loaded.</span>")
|
||||
return
|
||||
var/obj/item/seeds/S =W
|
||||
if(S.seed && S.seed.get_trait(TRAIT_IMMUTABLE) > 0)
|
||||
to_chat(user, "That seed is not compatible with our genetics technology.")
|
||||
to_chat(user, "<span class='filter_notice'>That seed is not compatible with our genetics technology.</span>")
|
||||
else
|
||||
user.drop_from_inventory(W)
|
||||
W.loc = src
|
||||
seed = W
|
||||
to_chat(user, "You load [W] into [src].")
|
||||
to_chat(user, "<span class='filter_notice'>You load [W] into [src].</span>")
|
||||
return
|
||||
|
||||
if(default_deconstruction_screwdriver(user, W))
|
||||
@@ -105,24 +105,24 @@
|
||||
// return
|
||||
if(istype(W,/obj/item/weapon/disk/botany))
|
||||
if(loaded_disk)
|
||||
to_chat(user, "There is already a data disk loaded.")
|
||||
to_chat(user, "<span class='filter_notice'>There is already a data disk loaded.</span>")
|
||||
return
|
||||
else
|
||||
var/obj/item/weapon/disk/botany/B = W
|
||||
|
||||
if(B.genes && B.genes.len)
|
||||
if(!disk_needs_genes)
|
||||
to_chat(user, "That disk already has gene data loaded.")
|
||||
to_chat(user, "<span class='filter_notice'>That disk already has gene data loaded.</span>")
|
||||
return
|
||||
else
|
||||
if(disk_needs_genes)
|
||||
to_chat(user, "That disk does not have any gene data loaded.")
|
||||
to_chat(user, "<span class='filter_notice'>That disk does not have any gene data loaded.</span>")
|
||||
return
|
||||
|
||||
user.drop_from_inventory(W)
|
||||
W.loc = src
|
||||
loaded_disk = W
|
||||
to_chat(user, "You load [W] into [src].")
|
||||
to_chat(user, "<span class='filter_notice'>You load [W] into [src].</span>")
|
||||
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -389,7 +389,7 @@
|
||||
/obj/machinery/seed_storage/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if (istype(O, /obj/item/seeds) && !lockdown)
|
||||
add(O)
|
||||
user.visible_message("[user] puts \the [O.name] into \the [src].", "You put \the [O] into \the [src].")
|
||||
user.visible_message("<span class ='filter_notice'>[user] puts \the [O.name] into \the [src].</span>", "<span class ='filter_notice'>You put \the [O] into \the [src].</span>")
|
||||
return
|
||||
else if (istype(O, /obj/item/weapon/storage/bag/plants) && !lockdown)
|
||||
var/obj/item/weapon/storage/P = O
|
||||
@@ -398,17 +398,17 @@
|
||||
++loaded
|
||||
add(G)
|
||||
if (loaded)
|
||||
user.visible_message("[user] puts the seeds from \the [O.name] into \the [src].", "You put the seeds from \the [O.name] into \the [src].")
|
||||
user.visible_message("<span class ='filter_notice'>[user] puts the seeds from \the [O.name] into \the [src].</span>", "<span class ='filter_notice'>You put the seeds from \the [O.name] into \the [src].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>There are no seeds in \the [O.name].</span>")
|
||||
return
|
||||
else if(O.is_wrench())
|
||||
playsound(src, O.usesound, 50, 1)
|
||||
anchored = !anchored
|
||||
to_chat(user, "You [anchored ? "wrench" : "unwrench"] \the [src].")
|
||||
to_chat(user, "<span class ='filter_notice'>You [anchored ? "wrench" : "unwrench"] \the [src].</span>")
|
||||
else if(O.is_screwdriver())
|
||||
panel_open = !panel_open
|
||||
to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.")
|
||||
to_chat(user, "<span class ='filter_notice'>You [panel_open ? "open" : "close"] the maintenance panel.</span>")
|
||||
playsound(src, O.usesound, 50, 1)
|
||||
cut_overlays()
|
||||
if(panel_open)
|
||||
|
||||
@@ -175,13 +175,13 @@
|
||||
if(weedlevel > 0)
|
||||
nymph.reagents.add_reagent("glucose", weedlevel)
|
||||
weedlevel = 0
|
||||
nymph.visible_message("<font color='blue'><b>[nymph]</b> begins rooting through [src], ripping out weeds and eating them noisily.</font>","<font color='blue'>You begin rooting through [src], ripping out weeds and eating them noisily.</font>")
|
||||
nymph.visible_message("<span class='notice'><b>[nymph]</b> begins rooting through [src], ripping out weeds and eating them noisily.</span>","<span class='notice'>You begin rooting through [src], ripping out weeds and eating them noisily.</span>")
|
||||
else if(nymph.nutrition > 100 && nutrilevel < 10)
|
||||
nymph.nutrition -= ((10-nutrilevel)*5)
|
||||
nutrilevel = 10
|
||||
nymph.visible_message("<font color='blue'><b>[nymph]</b> secretes a trickle of green liquid, refilling [src].</font>","<font color='blue'>You secrete a trickle of green liquid, refilling [src].</font>")
|
||||
nymph.visible_message("<span class='notice'><b>[nymph]</b> secretes a trickle of green liquid, refilling [src].</span>","<span class='notice'>You secrete a trickle of green liquid, refilling [src].</span>")
|
||||
else
|
||||
nymph.visible_message("<font color='blue'><b>[nymph]</b> rolls around in [src] for a bit.</font>","<font color='blue'>You roll around in [src] for a bit.</font>")
|
||||
nymph.visible_message("<span class='notice'><b>[nymph]</b> rolls around in [src] for a bit.</span>","<span class='notice'>You roll around in [src] for a bit.</span>")
|
||||
return
|
||||
|
||||
/obj/machinery/portable_atmospherics/hydroponics/Initialize()
|
||||
@@ -344,7 +344,7 @@
|
||||
|
||||
if(closed_system)
|
||||
if(user)
|
||||
to_chat(user, "You can't harvest from the plant while the lid is shut.")
|
||||
to_chat(user, "<span class='filter_notice'>You can't harvest from the plant while the lid is shut.</span>")
|
||||
return
|
||||
|
||||
if(user)
|
||||
@@ -372,7 +372,7 @@
|
||||
if(!user || !dead) return
|
||||
|
||||
if(closed_system)
|
||||
to_chat(user, "You can't remove the dead plant while the lid is shut.")
|
||||
to_chat(user, "<span class='filter_notice'>You can't remove the dead plant while the lid is shut.</span>")
|
||||
return
|
||||
|
||||
seed = null
|
||||
@@ -383,7 +383,7 @@
|
||||
mutation_mod = 0
|
||||
age_mod = 0 //CHOMPedit
|
||||
|
||||
to_chat(user, "You remove the dead plant.")
|
||||
to_chat(user, "<span class='filter_notice'>You remove the dead plant.</span>")
|
||||
lastproduce = 0
|
||||
check_health()
|
||||
return
|
||||
@@ -440,11 +440,11 @@
|
||||
return
|
||||
if(ishuman(usr) || istype(usr, /mob/living/silicon/robot))
|
||||
if(labelled)
|
||||
to_chat(usr, "You remove the label.")
|
||||
to_chat(usr, "<span class='filter_notice'>You remove the label.</span>")
|
||||
labelled = null
|
||||
update_icon()
|
||||
else
|
||||
to_chat(usr, "There is no label to remove.")
|
||||
to_chat(usr, "<span class='filter_notice'>There is no label to remove.</span>")
|
||||
return
|
||||
|
||||
/obj/machinery/portable_atmospherics/hydroponics/verb/setlight()
|
||||
@@ -458,7 +458,7 @@
|
||||
var/new_light = tgui_input_list(usr, "Specify a light level.", "Light Level", list(0,1,2,3,4,5,6,7,8,9,10))
|
||||
if(new_light)
|
||||
tray_light = new_light
|
||||
to_chat(usr, "You set the tray to a light level of [tray_light] lumens.")
|
||||
to_chat(usr, "<span class='filter_notice'>You set the tray to a light level of [tray_light] lumens.</span>")
|
||||
return
|
||||
|
||||
/obj/machinery/portable_atmospherics/hydroponics/proc/check_level_sanity()
|
||||
@@ -495,7 +495,7 @@
|
||||
weedlevel = 0
|
||||
|
||||
update_icon()
|
||||
visible_message("<span class='danger'>The </span><span class='notice'>[previous_plant]</span><span class='danger'> has suddenly mutated into </span><span class='notice'>[seed.display_name]!</span>")
|
||||
visible_message("<span class='danger'>The <span class='notice'>[previous_plant]</span> has suddenly mutated into <span class='notice'>[seed.display_name]!</span></span>")
|
||||
|
||||
return
|
||||
|
||||
@@ -507,15 +507,15 @@
|
||||
if(O.is_wirecutter() || istype(O, /obj/item/weapon/surgical/scalpel))
|
||||
|
||||
if(!seed)
|
||||
to_chat(user, "There is nothing to take a sample from in \the [src].")
|
||||
to_chat(user, "<span class='filter_notice'>There is nothing to take a sample from in \the [src].</span>")
|
||||
return
|
||||
|
||||
if(sampled)
|
||||
to_chat(user, "You have already sampled from this plant.")
|
||||
to_chat(user, "<span class='filter_notice'>You have already sampled from this plant.</span>")
|
||||
return
|
||||
|
||||
if(dead)
|
||||
to_chat(user, "The plant is dead.")
|
||||
to_chat(user, "<span class='filter_notice'>The plant is dead.</span>")
|
||||
return
|
||||
|
||||
// Create a sample.
|
||||
@@ -540,14 +540,14 @@
|
||||
if(seed)
|
||||
return ..()
|
||||
else
|
||||
to_chat(user, "There's no plant to inject.")
|
||||
to_chat(user, "<span class='filter_notice'>There's no plant to inject.</span>")
|
||||
return 1
|
||||
else
|
||||
if(seed)
|
||||
//Leaving this in in case we want to extract from plants later.
|
||||
to_chat(user, "You can't get any extract out of this plant.")
|
||||
to_chat(user, "<span class='filter_notice'>You can't get any extract out of this plant.</span>")
|
||||
else
|
||||
to_chat(user, "There's nothing to draw something from.")
|
||||
to_chat(user, "<span class='filter_notice'>There's nothing to draw something from.</span>")
|
||||
return 1
|
||||
|
||||
else if (istype(O, /obj/item/seeds))
|
||||
@@ -558,11 +558,11 @@
|
||||
user.remove_from_mob(O)
|
||||
|
||||
if(!S.seed)
|
||||
to_chat(user, "The packet seems to be empty. You throw it away.")
|
||||
to_chat(user, "<span class='filter_notice'>The packet seems to be empty. You throw it away.</span>")
|
||||
qdel(O)
|
||||
return
|
||||
|
||||
to_chat(user, "You plant the [S.seed.seed_name] [S.seed.seed_noun].")
|
||||
to_chat(user, "<span class='filter_notice'>You plant the [S.seed.seed_name] [S.seed.seed_noun].</span>")
|
||||
plant_seeds(S)
|
||||
|
||||
else
|
||||
@@ -594,7 +594,7 @@
|
||||
toxins += spray.toxicity
|
||||
pestlevel -= spray.pest_kill_str
|
||||
weedlevel -= spray.weed_kill_str
|
||||
to_chat(user, "You spray [src] with [O].")
|
||||
to_chat(user, "<span class='filter_notice'>You spray [src] with [O].</span>")
|
||||
playsound(src, 'sound/effects/spray3.ogg', 50, 1, -6)
|
||||
qdel(O)
|
||||
check_health()
|
||||
@@ -607,7 +607,7 @@
|
||||
|
||||
playsound(src, O.usesound, 50, 1)
|
||||
anchored = !anchored
|
||||
to_chat(user, "You [anchored ? "wrench" : "unwrench"] \the [src].")
|
||||
to_chat(user, "<span class='filter_notice'>You [anchored ? "wrench" : "unwrench"] \the [src].</span>")
|
||||
|
||||
else if(istype(O,/obj/item/device/multitool))
|
||||
if(!anchored)
|
||||
@@ -709,7 +709,7 @@
|
||||
|
||||
/obj/machinery/portable_atmospherics/hydroponics/proc/close_lid(var/mob/living/user)
|
||||
closed_system = !closed_system
|
||||
to_chat(user, "You [closed_system ? "close" : "open"] the tray's lid.")
|
||||
to_chat(user, "<span class='filter_notice'>You [closed_system ? "close" : "open"] the tray's lid.</span>")
|
||||
update_icon()
|
||||
|
||||
#undef AGE_MOD_MAX //CHOMPedit
|
||||
File diff suppressed because it is too large
Load Diff
@@ -68,7 +68,7 @@
|
||||
var/datum/transcore_db/db = SStranscore.db_by_mind_name(mind.name)
|
||||
if(db)
|
||||
var/datum/transhuman/mind_record/record = db.backed_up[src.mind.name]
|
||||
if(!(record.dead_state == MR_DEAD))
|
||||
if(!(record.dead_state == MR_DEAD))
|
||||
if((world.time - timeofdeath ) > 5 MINUTES) //Allows notify transcore to be used if you have an entry but for some reason weren't marked as dead
|
||||
record.dead_state = MR_DEAD //Such as if you got scanned but didn't take an implant. It's a little funky, but I mean, you got scanned
|
||||
db.notify(record) //So you probably will want to let someone know if you die.
|
||||
@@ -115,7 +115,7 @@
|
||||
|
||||
var/input = tgui_input_list(usr, "Select a ghost pod:", "Ghost Jump", observe_list_format(active_ghost_pods))
|
||||
if(!input)
|
||||
to_chat(src, "No active ghost pods detected.")
|
||||
to_chat(src, "<span class='filter_notice'>No active ghost pods detected.</span>")
|
||||
return
|
||||
|
||||
var/target = observe_list_format(active_ghost_pods)[input]
|
||||
@@ -129,8 +129,13 @@
|
||||
forceMove(T)
|
||||
stop_following()
|
||||
else
|
||||
<<<<<<< HEAD
|
||||
to_chat(src, "This ghost pod is not located in the game world.")
|
||||
|
||||
=======
|
||||
to_chat(src, "<span class='filter_notice'>This ghost pod is not located in the game world.</span>")
|
||||
|
||||
>>>>>>> 0eb2f82d41... Merge pull request #14649 from Seris02/prmirror
|
||||
/mob/observer/dead/verb/findautoresleever()
|
||||
set category = "Ghost"
|
||||
set name = "Find Auto Resleever"
|
||||
@@ -157,4 +162,8 @@
|
||||
to_chat(src, "<span class='warning'>There appears to be something wrong with this auto-resleever, try again.</span>")
|
||||
return
|
||||
|
||||
forceMove(L)
|
||||
<<<<<<< HEAD
|
||||
forceMove(L)
|
||||
=======
|
||||
forceMove(L)
|
||||
>>>>>>> 0eb2f82d41... Merge pull request #14649 from Seris02/prmirror
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
if(message)
|
||||
client.handle_spam_prevention(MUTE_DEADCHAT)
|
||||
if(client.prefs.muted & MUTE_DEADCHAT)
|
||||
to_chat(src, "<font color='red'>You cannot talk in deadchat (muted).</font>")
|
||||
to_chat(src, "<span class='filter_notice'><font color='red'>You cannot talk in deadchat (muted).</font></span>")
|
||||
return
|
||||
|
||||
. = say_dead(message)
|
||||
@@ -26,7 +26,7 @@
|
||||
if(message)
|
||||
client.handle_spam_prevention(MUTE_DEADCHAT)
|
||||
if(client.prefs.muted & MUTE_DEADCHAT)
|
||||
to_chat(src, "<font color='red'>You cannot emote in deadchat (muted).</font>")
|
||||
to_chat(src, "<span class='filter_notice'><font color='red'>You cannot emote in deadchat (muted).</font></span>")
|
||||
return
|
||||
|
||||
. = emote_dead(message)
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
to_chat(src, "<span class='filter_say'><span class='name'>[speaker_name]</span>[speaker.GetAltName()] makes a noise, possibly speech, but you cannot hear them.</span>")
|
||||
else
|
||||
var/message_to_send = null
|
||||
message_to_send = "<span class='game say'><span class='name'>[speaker_name]</span>[speaker.GetAltName()] [track][message]</span>"
|
||||
message_to_send = "<span class='name'>[speaker_name]</span>[speaker.GetAltName()] [track][message]"
|
||||
if(check_mentioned(multilingual_to_message(message_pieces)) && is_preference_enabled(/datum/client_preference/check_mention))
|
||||
message_to_send = "<font size='3'><b>[message_to_send]</b></font>"
|
||||
|
||||
@@ -138,15 +138,15 @@
|
||||
ai_holder.on_hear_say(speaker, multilingual_to_message(message_pieces))
|
||||
|
||||
/mob/proc/on_hear_say(var/message)
|
||||
to_chat(src, message)
|
||||
to_chat(src, "<span class='game say'>[message]</span>")
|
||||
if(teleop)
|
||||
to_chat(teleop, create_text_tag("body", "BODY:", teleop.client) + "[message]")
|
||||
to_chat(teleop, "<span class='game say'>[create_text_tag("body", "BODY:", teleop.client)][message]</span>")
|
||||
|
||||
/mob/living/silicon/on_hear_say(var/message)
|
||||
var/time = say_timestamp()
|
||||
to_chat(src, "[time] [message]")
|
||||
to_chat(src, "<span class='game say'>[time] [message]</span>")
|
||||
if(teleop)
|
||||
to_chat(teleop, create_text_tag("body", "BODY:", teleop.client) + "[time] [message]")
|
||||
to_chat(teleop, "<span class='game say'>[create_text_tag("body", "BODY:", teleop.client)][time] [message]</span>")
|
||||
|
||||
// Checks if the mob's own name is included inside message. Handles both first and last names.
|
||||
/mob/proc/check_mentioned(var/message)
|
||||
@@ -177,7 +177,7 @@
|
||||
|
||||
return tagged_message
|
||||
|
||||
/mob/proc/hear_radio(var/list/message_pieces, var/verb = "says", var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0, var/vname = "")
|
||||
/mob/proc/hear_radio(var/list/message_pieces, var/verb = "says", var/part_a, var/part_b, var/part_c, var/part_d, var/part_e, var/mob/speaker = null, var/hard_to_hear = 0, var/vname = "")
|
||||
if(!client)
|
||||
return
|
||||
|
||||
@@ -190,45 +190,49 @@
|
||||
var/speaker_name = handle_speaker_name(speaker, vname, hard_to_hear)
|
||||
var/track = handle_track(message, verb, speaker, speaker_name, hard_to_hear)
|
||||
|
||||
message = "[encode_html_emphasis(message)][part_c]"
|
||||
message = "[encode_html_emphasis(message)][part_d]"
|
||||
|
||||
if((sdisabilities & DEAF) || ear_deaf)
|
||||
if(prob(20))
|
||||
to_chat(src, "<span class='warning'>You feel your headset vibrate but can hear nothing from it!</span>")
|
||||
else
|
||||
on_hear_radio(part_a, speaker_name, track, part_b, message, part_c)
|
||||
on_hear_radio(part_a, part_b, speaker_name, track, part_c, message, part_d, part_e)
|
||||
|
||||
/proc/say_timestamp()
|
||||
return "<span class='say_quote'>\[[stationtime2text()]\]</span>"
|
||||
|
||||
/mob/proc/on_hear_radio(part_a, speaker_name, track, part_b, formatted, part_c)
|
||||
var/final_message = "[part_a][speaker_name][part_b][formatted][part_c]"
|
||||
/mob/proc/on_hear_radio(part_a, part_b, speaker_name, track, part_c, formatted, part_d, part_e)
|
||||
var/final_message = "[part_b][speaker_name][part_c][formatted][part_d]"
|
||||
if(check_mentioned(formatted) && is_preference_enabled(/datum/client_preference/check_mention))
|
||||
final_message = "<font size='3'><b>[final_message]</b></font>"
|
||||
to_chat(src, final_message)
|
||||
|
||||
/mob/observer/dead/on_hear_radio(part_a, speaker_name, track, part_b, formatted, part_c)
|
||||
var/final_message = "[part_a][track][part_b][formatted][part_c]"
|
||||
if(check_mentioned(formatted) && is_preference_enabled(/datum/client_preference/check_mention))
|
||||
final_message = "<font size='3'><b>[final_message]</b></font>"
|
||||
to_chat(src, final_message)
|
||||
|
||||
/mob/living/silicon/on_hear_radio(part_a, speaker_name, track, part_b, formatted, part_c)
|
||||
var/time = say_timestamp()
|
||||
var/final_message = "[part_a][speaker_name][part_b][formatted][part_c]"
|
||||
if(check_mentioned(formatted) && is_preference_enabled(/datum/client_preference/check_mention))
|
||||
final_message = "[time]<font size='3'><b>[final_message]</b></font>"
|
||||
final_message = "[part_a]<font size='3'><b>[final_message]</b></font>[part_e]"
|
||||
else
|
||||
final_message = "[time][final_message]"
|
||||
final_message = "[part_a][final_message][part_e]"
|
||||
to_chat(src, final_message)
|
||||
|
||||
/mob/living/silicon/ai/on_hear_radio(part_a, speaker_name, track, part_b, formatted, part_c)
|
||||
var/time = say_timestamp()
|
||||
var/final_message = "[part_a][track][part_b][formatted][part_c]"
|
||||
/mob/observer/dead/on_hear_radio(part_a, part_b, speaker_name, track, part_c, formatted, part_d, part_e)
|
||||
var/final_message = "[part_b][track][part_c][formatted][part_d]"
|
||||
if(check_mentioned(formatted) && is_preference_enabled(/datum/client_preference/check_mention))
|
||||
final_message = "[time]<font size='3'><b>[final_message]</b></font>"
|
||||
final_message = "[part_a]<font size='3'><b>[final_message]</b></font>[part_e]"
|
||||
else
|
||||
final_message = "[time][final_message]"
|
||||
final_message = "[part_a][final_message][part_e]"
|
||||
to_chat(src, final_message)
|
||||
|
||||
/mob/living/silicon/on_hear_radio(part_a, part_b, speaker_name, track, part_c, formatted, part_d, part_e)
|
||||
var/time = say_timestamp()
|
||||
var/final_message = "[part_b][speaker_name][part_c][formatted][part_d]"
|
||||
if(check_mentioned(formatted) && is_preference_enabled(/datum/client_preference/check_mention))
|
||||
final_message = "[part_a][time]<font size='3'><b>[final_message]</b></font>[part_e]"
|
||||
else
|
||||
final_message = "[part_a][time][final_message][part_e]"
|
||||
to_chat(src, final_message)
|
||||
|
||||
/mob/living/silicon/ai/on_hear_radio(part_a, part_b, speaker_name, track, part_c, formatted, part_d, part_e)
|
||||
var/time = say_timestamp()
|
||||
var/final_message = "[part_b][track][part_c][formatted][part_d]"
|
||||
if(check_mentioned(formatted) && is_preference_enabled(/datum/client_preference/check_mention))
|
||||
final_message = "[part_a][time]<font size='3'><b>[final_message]</b></font>[part_e]"
|
||||
else
|
||||
final_message = "[part_a][time][final_message][part_e]"
|
||||
to_chat(src, final_message)
|
||||
|
||||
/mob/proc/hear_signlang(var/message, var/verb = "gestures", var/verb_understood = "gestures", var/datum/language/language, var/mob/speaker = null, var/speech_type = 1)
|
||||
@@ -236,7 +240,7 @@
|
||||
return
|
||||
|
||||
if(say_understands(speaker, language))
|
||||
message = "<B>[speaker]</B> [verb_understood], \"[message]\""
|
||||
message = "<span class='game say'><B>[speaker]</B> [verb_understood], \"[message]\"</span>"
|
||||
else if(!(language.ignore_adverb))
|
||||
var/adverb
|
||||
var/length = length(message) * pick(0.8, 0.9, 1.0, 1.1, 1.2) //Adds a little bit of fuzziness
|
||||
@@ -246,9 +250,9 @@
|
||||
if(30 to 48) adverb = " a message"
|
||||
if(48 to 90) adverb = " a lengthy message"
|
||||
else adverb = " a very lengthy message"
|
||||
message = "<B>[speaker]</B> [verb][adverb]."
|
||||
message = "<span class='game say'><B>[speaker]</B> [verb][adverb].</span>"
|
||||
else
|
||||
message = "<B>[speaker]</B> [verb]."
|
||||
message = "<span class='game say'><B>[speaker]</B> [verb].</span>"
|
||||
|
||||
show_message(message, type = speech_type) // Type 1 is visual message
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
message = "reveals their wings!"
|
||||
else
|
||||
message = "hides their wings."
|
||||
visible_message("[src] [message]")
|
||||
visible_message("<span class='filter_notice'>[src] [message]</span>")
|
||||
|
||||
/mob/living/carbon/human/verb/hide_tail_vr()
|
||||
set name = "Show/Hide tail"
|
||||
@@ -83,4 +83,8 @@
|
||||
message = "reveals their tail!"
|
||||
else
|
||||
message = "hides their tail."
|
||||
<<<<<<< HEAD
|
||||
visible_message("[src] [message]")
|
||||
=======
|
||||
visible_message("<span class='filter_notice'>[src] [message]</span>")
|
||||
>>>>>>> 0eb2f82d41... Merge pull request #14649 from Seris02/prmirror
|
||||
|
||||
@@ -372,7 +372,7 @@
|
||||
U.handle_regular_hud_updates()
|
||||
|
||||
if(!modified)
|
||||
to_chat(usr, "<font color='red'>Unable to locate a data core entry for this person.</font>")
|
||||
to_chat(usr, "<span class='filter_notice'><font color='red'>Unable to locate a data core entry for this person.</font></span>")
|
||||
|
||||
if (href_list["secrecord"])
|
||||
if(hasHUD(usr,"security"))
|
||||
@@ -389,18 +389,20 @@
|
||||
for (var/datum/data/record/R in data_core.security)
|
||||
if (R.fields["id"] == E.fields["id"])
|
||||
if(hasHUD(usr,"security"))
|
||||
to_chat(usr, "<b>Name:</b> [R.fields["name"]] <b>Criminal Status:</b> [R.fields["criminal"]]")
|
||||
to_chat(usr, "<b>Species:</b> [R.fields["species"]]")
|
||||
to_chat(usr, "<b>Minor Crimes:</b> [R.fields["mi_crim"]]")
|
||||
to_chat(usr, "<b>Details:</b> [R.fields["mi_crim_d"]]")
|
||||
to_chat(usr, "<b>Major Crimes:</b> [R.fields["ma_crim"]]")
|
||||
to_chat(usr, "<b>Details:</b> [R.fields["ma_crim_d"]]")
|
||||
to_chat(usr, "<b>Notes:</b> [R.fields["notes"]]")
|
||||
to_chat(usr, "<a href='?src=\ref[src];secrecordComment=`'>\[View Comment Log\]</a>")
|
||||
var/list/security_hud_text = list()
|
||||
security_hud_text += "<b>Name:</b> [R.fields["name"]] <b>Criminal Status:</b> [R.fields["criminal"]]"
|
||||
security_hud_text += "<b>Species:</b> [R.fields["species"]]"
|
||||
security_hud_text += "<b>Minor Crimes:</b> [R.fields["mi_crim"]]"
|
||||
security_hud_text += "<b>Details:</b> [R.fields["mi_crim_d"]]"
|
||||
security_hud_text += "<b>Major Crimes:</b> [R.fields["ma_crim"]]"
|
||||
security_hud_text += "<b>Details:</b> [R.fields["ma_crim_d"]]"
|
||||
security_hud_text += "<b>Notes:</b> [R.fields["notes"]]"
|
||||
security_hud_text += "<a href='?src=\ref[src];secrecordComment=`'>\[View Comment Log\]</a>"
|
||||
to_chat(usr, "<span class='filter_notice'>[jointext(security_hud_text, "<br>")]</span>")
|
||||
read = 1
|
||||
|
||||
if(!read)
|
||||
to_chat(usr, "<font color='red'>Unable to locate a data core entry for this person.</font>")
|
||||
to_chat(usr, "<span class='filter_notice'><font color='red'>Unable to locate a data core entry for this person.</font></span>")
|
||||
|
||||
if (href_list["secrecordComment"])
|
||||
if(hasHUD(usr,"security"))
|
||||
@@ -423,11 +425,11 @@
|
||||
to_chat(usr, "[R.fields[text("com_[]", counter)]]")
|
||||
counter++
|
||||
if (counter == 1)
|
||||
to_chat(usr, "No comment found")
|
||||
to_chat(usr, "<a href='?src=\ref[src];secrecordadd=`'>\[Add comment\]</a>")
|
||||
to_chat(usr, "<span class='filter_notice'>No comment found.</span>")
|
||||
to_chat(usr, "<span class='filter_notice'><a href='?src=\ref[src];secrecordadd=`'>\[Add comment\]</a></span>")
|
||||
|
||||
if(!read)
|
||||
to_chat(usr, "<font color='red'>Unable to locate a data core entry for this person.</font>")
|
||||
to_chat(usr, "<span class='filter_notice'><font color='red'>Unable to locate a data core entry for this person.</font></span>")
|
||||
|
||||
if (href_list["secrecordadd"])
|
||||
if(hasHUD(usr,"security"))
|
||||
@@ -489,7 +491,7 @@
|
||||
U.handle_regular_hud_updates()
|
||||
|
||||
if(!modified)
|
||||
to_chat(usr, "<font color='red'>Unable to locate a data core entry for this person.</font>")
|
||||
to_chat(usr, "<span class='filter_notice'><font color='red'>Unable to locate a data core entry for this person.</font></span>")
|
||||
|
||||
if (href_list["medrecord"])
|
||||
if(hasHUD(usr,"medical"))
|
||||
@@ -506,19 +508,21 @@
|
||||
for (var/datum/data/record/R in data_core.medical)
|
||||
if (R.fields["id"] == E.fields["id"])
|
||||
if(hasHUD(usr,"medical"))
|
||||
to_chat(usr, "<b>Name:</b> [R.fields["name"]] <b>Blood Type:</b> [R.fields["b_type"]]")
|
||||
to_chat(usr, "<b>Species:</b> [R.fields["species"]]")
|
||||
to_chat(usr, "<b>DNA:</b> [R.fields["b_dna"]]")
|
||||
to_chat(usr, "<b>Minor Disabilities:</b> [R.fields["mi_dis"]]")
|
||||
to_chat(usr, "<b>Details:</b> [R.fields["mi_dis_d"]]")
|
||||
to_chat(usr, "<b>Major Disabilities:</b> [R.fields["ma_dis"]]")
|
||||
to_chat(usr, "<b>Details:</b> [R.fields["ma_dis_d"]]")
|
||||
to_chat(usr, "<b>Notes:</b> [R.fields["notes"]]")
|
||||
to_chat(usr, "<a href='?src=\ref[src];medrecordComment=`'>\[View Comment Log\]</a>")
|
||||
var/list/medical_hud_text = list()
|
||||
medical_hud_text += "<b>Name:</b> [R.fields["name"]] <b>Blood Type:</b> [R.fields["b_type"]]"
|
||||
medical_hud_text += "<b>Species:</b> [R.fields["species"]]"
|
||||
medical_hud_text += "<b>DNA:</b> [R.fields["b_dna"]]"
|
||||
medical_hud_text += "<b>Minor Disabilities:</b> [R.fields["mi_dis"]]"
|
||||
medical_hud_text += "<b>Details:</b> [R.fields["mi_dis_d"]]"
|
||||
medical_hud_text += "<b>Major Disabilities:</b> [R.fields["ma_dis"]]"
|
||||
medical_hud_text += "<b>Details:</b> [R.fields["ma_dis_d"]]"
|
||||
medical_hud_text += "<b>Notes:</b> [R.fields["notes"]]"
|
||||
medical_hud_text += "<a href='?src=\ref[src];medrecordComment=`'>\[View Comment Log\]</a>"
|
||||
to_chat(usr, "<span class='filter_notice'>[jointext(medical_hud_text, "<br>")]</span>")
|
||||
read = 1
|
||||
|
||||
if(!read)
|
||||
to_chat(usr, "<font color='red'>Unable to locate a data core entry for this person.</font>")
|
||||
to_chat(usr, "<span class='filter_notice'><font color='red'>Unable to locate a data core entry for this person.</font></span>")
|
||||
|
||||
if (href_list["medrecordComment"])
|
||||
if(hasHUD(usr,"medical"))
|
||||
@@ -541,11 +545,11 @@
|
||||
to_chat(usr, "[R.fields[text("com_[]", counter)]]")
|
||||
counter++
|
||||
if (counter == 1)
|
||||
to_chat(usr, "No comment found")
|
||||
to_chat(usr, "<a href='?src=\ref[src];medrecordadd=`'>\[Add comment\]</a>")
|
||||
to_chat(usr, "<span class='filter_notice'>No comment found.</span>")
|
||||
to_chat(usr, "<span class='filter_notice'><a href='?src=\ref[src];medrecordadd=`'>\[Add comment\]</a></span>")
|
||||
|
||||
if(!read)
|
||||
to_chat(usr, "<font color='red'>Unable to locate a data core entry for this person.</font>")
|
||||
to_chat(usr, "<span class='filter_notice'><font color='red'>Unable to locate a data core entry for this person.</font></span>")
|
||||
|
||||
if (href_list["medrecordadd"])
|
||||
if(hasHUD(usr,"medical"))
|
||||
@@ -588,21 +592,23 @@
|
||||
for (var/datum/data/record/R in data_core.general)
|
||||
if (R.fields["id"] == E.fields["id"])
|
||||
if(hasHUD(usr,"best"))
|
||||
to_chat(usr, "<b>Name:</b> [R.fields["name"]]")
|
||||
to_chat(usr, "<b>Species:</b> [R.fields["species"]]")
|
||||
to_chat(usr, "<b>Assignment:</b> [R.fields["real_rank"]] ([R.fields["rank"]])")
|
||||
to_chat(usr, "<b>Home System:</b> [R.fields["home_system"]]")
|
||||
to_chat(usr, "<b>Birthplace:</b> [R.fields["birthplace"]]")
|
||||
to_chat(usr, "<b>Citizenship:</b> [R.fields["citizenship"]]")
|
||||
to_chat(usr, "<b>Primary Employer:</b> [R.fields["personal_faction"]]")
|
||||
to_chat(usr, "<b>Religious Beliefs:</b> [R.fields["religion"]]")
|
||||
to_chat(usr, "<b>Known Languages:</b> [R.fields["languages"]]")
|
||||
to_chat(usr, "<b>Notes:</b> [R.fields["notes"]]")
|
||||
to_chat(usr, "<a href='?src=\ref[src];emprecordComment=`'>\[View Comment Log\]</a>")
|
||||
var/list/emp_hud_text = list()
|
||||
emp_hud_text += "<b>Name:</b> [R.fields["name"]]"
|
||||
emp_hud_text += "<b>Species:</b> [R.fields["species"]]"
|
||||
emp_hud_text += "<b>Assignment:</b> [R.fields["real_rank"]] ([R.fields["rank"]])"
|
||||
emp_hud_text += "<b>Home System:</b> [R.fields["home_system"]]"
|
||||
emp_hud_text += "<b>Birthplace:</b> [R.fields["birthplace"]]"
|
||||
emp_hud_text += "<b>Citizenship:</b> [R.fields["citizenship"]]"
|
||||
emp_hud_text += "<b>Primary Employer:</b> [R.fields["personal_faction"]]"
|
||||
emp_hud_text += "<b>Religious Beliefs:</b> [R.fields["religion"]]"
|
||||
emp_hud_text += "<b>Known Languages:</b> [R.fields["languages"]]"
|
||||
emp_hud_text += "<b>Notes:</b> [R.fields["notes"]]"
|
||||
emp_hud_text += "<a href='?src=\ref[src];emprecordComment=`'>\[View Comment Log\]</a>"
|
||||
to_chat(usr, "<span class='filter_notice'>[jointext(emp_hud_text, "<br>")]</span>")
|
||||
read = 1
|
||||
|
||||
if(!read)
|
||||
to_chat(usr, "<font color='red'>Unable to locate a data core entry for this person.</font>")
|
||||
to_chat(usr, "<span class='filter_notice'><font color='red'>Unable to locate a data core entry for this person.</font></span>")
|
||||
|
||||
if (href_list["emprecordComment"])
|
||||
if(hasHUD(usr,"best"))
|
||||
@@ -625,11 +631,11 @@
|
||||
to_chat(usr, "[R.fields[text("com_[]", counter)]]")
|
||||
counter++
|
||||
if (counter == 1)
|
||||
to_chat(usr, "No comment found")
|
||||
to_chat(usr, "<a href='?src=\ref[src];emprecordadd=`'>\[Add comment\]</a>")
|
||||
to_chat(usr, "<span class='filter_notice'>No comment found.</span>")
|
||||
to_chat(usr, "<span class='filter_notice'><a href='?src=\ref[src];emprecordadd=`'>\[Add comment\]</a></span>")
|
||||
|
||||
if(!read)
|
||||
to_chat(usr, "<font color='red'>Unable to locate a data core entry for this person.</font>")
|
||||
to_chat(usr, "<span class='filter_notice'><font color='red'>Unable to locate a data core entry for this person.</font></span>")
|
||||
|
||||
if (href_list["emprecordadd"])
|
||||
if(hasHUD(usr,"best"))
|
||||
@@ -790,7 +796,7 @@
|
||||
/mob/living/carbon/human/proc/play_xylophone()
|
||||
if(!src.xylophone)
|
||||
var/datum/gender/T = gender_datums[get_visible_gender()]
|
||||
visible_message("<font color='red'>\The [src] begins playing [T.his] ribcage like a xylophone. It's quite spooky.</font>","<font color='blue'>You begin to play a spooky refrain on your ribcage.</font>","<font color='red'>You hear a spooky xylophone melody.</font>")
|
||||
visible_message("<span class='filter_notice'><font color='red'>\The [src] begins playing [T.his] ribcage like a xylophone. It's quite spooky.</font></span>","<span class='notice'>You begin to play a spooky refrain on your ribcage.</span>","<span class='filter_notice'><font color='red'>You hear a spooky xylophone melody.</font></span>")
|
||||
var/song = pick('sound/effects/xylophone1.ogg','sound/effects/xylophone2.ogg','sound/effects/xylophone3.ogg')
|
||||
playsound(src, song, 50, 1, -1)
|
||||
xylophone = 1
|
||||
@@ -881,7 +887,7 @@
|
||||
regenerate_icons()
|
||||
check_dna()
|
||||
var/datum/gender/T = gender_datums[get_visible_gender()]
|
||||
visible_message("<font color='blue'>\The [src] morphs and changes [T.his] appearance!</font>", "<font color='blue'>You change your appearance!</font>", "<font color='red'>Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!</font>")
|
||||
visible_message("<span class='notice'>\The [src] morphs and changes [T.his] appearance!</span>", "<span class='notice'>You change your appearance!</span>", "<span class='filter_notice'><font color='red'>Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!</font></span>")
|
||||
|
||||
/mob/living/carbon/human/proc/remotesay()
|
||||
set name = "Project mind"
|
||||
@@ -902,15 +908,15 @@
|
||||
if (isnull(target))
|
||||
return
|
||||
|
||||
var/say = sanitize(tgui_input_text(usr, "What do you wish to say"))
|
||||
var/say = sanitize(tgui_input_text(usr, "What do you wish to say?"))
|
||||
if(mRemotetalk in target.mutations)
|
||||
target.show_message("<font color='blue'> You hear [src.real_name]'s voice: [say]</font>")
|
||||
target.show_message("<span class='filter_say'><font color='blue'>You hear [src.real_name]'s voice: [say]</font></span>")
|
||||
else
|
||||
target.show_message("<font color='blue'> You hear a voice that seems to echo around the room: [say]</font>")
|
||||
usr.show_message("<font color='blue'> You project your mind into [target.real_name]: [say]</font>")
|
||||
target.show_message("<span class='filter_say'><font color='blue'>You hear a voice that seems to echo around the room: [say]</font></span>")
|
||||
usr.show_message("<span class='filter_say'><font color='blue'>You project your mind into [target.real_name]: [say]</font></span>")
|
||||
log_say("(TPATH to [key_name(target)]) [say]",src)
|
||||
for(var/mob/observer/dead/G in mob_list)
|
||||
G.show_message("<i>Telepathic message from <b>[src]</b> to <b>[target]</b>: [say]</i>")
|
||||
G.show_message("<span class='filter_say'><i>Telepathic message from <b>[src]</b> to <b>[target]</b>: [say]</i></span>")
|
||||
|
||||
/mob/living/carbon/human/proc/remoteobserve()
|
||||
set name = "Remote View"
|
||||
@@ -940,7 +946,7 @@
|
||||
continue
|
||||
creatures += h
|
||||
|
||||
var/mob/target = input ("Who do you want to project your mind to ?") as mob in creatures
|
||||
var/mob/target = input ("Who do you want to project your mind to?") as mob in creatures
|
||||
|
||||
if (target)
|
||||
remoteview_target = target
|
||||
@@ -1147,10 +1153,10 @@
|
||||
self = 1
|
||||
if(!self)
|
||||
usr.visible_message("<span class='notice'>[usr] kneels down, puts [TU.his] hand on [src]'s wrist and begins counting [T.his] pulse.</span>",\
|
||||
"You begin counting [src]'s pulse")
|
||||
"<span class='filter_notice'>You begin counting [src]'s pulse.</span>")
|
||||
else
|
||||
usr.visible_message("<span class='notice'>[usr] begins counting [T.his] pulse.</span>",\
|
||||
"You begin counting your pulse.")
|
||||
"<span class='filter_notice'>You begin counting your pulse.</span>")
|
||||
|
||||
if(src.pulse)
|
||||
to_chat(usr, "<span class='notice'>[self ? "You have a" : "[src] has a"] pulse! Counting...</span>")
|
||||
@@ -1158,7 +1164,7 @@
|
||||
to_chat(usr, "<span class='danger'>[src] has no pulse!</span>") //it is REALLY UNLIKELY that a dead person would check his own pulse
|
||||
return
|
||||
|
||||
to_chat(usr, "You must[self ? "" : " both"] remain still until counting is finished.")
|
||||
to_chat(usr, "<span class='filter_notice'>You must[self ? "" : " both"] remain still until counting is finished.</span>")
|
||||
if(do_mob(usr, src, 60))
|
||||
var/message = "<span class='notice'>[self ? "Your" : "[src]'s"] pulse is [src.get_pulse(GETPULSE_HAND)].</span>"
|
||||
to_chat(usr,message)
|
||||
@@ -1462,11 +1468,11 @@
|
||||
usr.setClickCooldown(20)
|
||||
|
||||
if(usr.stat > 0)
|
||||
to_chat(usr, "You are unconcious and cannot do that!")
|
||||
to_chat(usr, "<span class='filter_notice'>You are unconcious and cannot do that!</span>")
|
||||
return
|
||||
|
||||
if(usr.restrained())
|
||||
to_chat(usr, "You are restrained and cannot do that!")
|
||||
to_chat(usr, "<span class='filter_notice'>You are restrained and cannot do that!</span>")
|
||||
return
|
||||
|
||||
var/mob/S = src
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
if(H.hand)
|
||||
temp = H.organs_by_name["l_hand"]
|
||||
if(!temp || !temp.is_usable())
|
||||
to_chat(H, "<font color='red'>You can't use your hand.</font>")
|
||||
to_chat(H, "<span class='warning'>You can't use your hand.</span>")
|
||||
return
|
||||
if(H.lying)
|
||||
return
|
||||
@@ -57,7 +57,7 @@
|
||||
if(!hit_zone)
|
||||
H.do_attack_animation(src)
|
||||
playsound(src, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
|
||||
visible_message("<font color='red'><B>[H] reaches for [src], but misses!</B></font>")
|
||||
visible_message("<span class='filter_combat'><font color='red'><B>[H] reaches for [src], but misses!</B></font></span>")
|
||||
return FALSE
|
||||
|
||||
if(H != src && check_shields(0, null, H, H.zone_sel.selecting, H.name))
|
||||
@@ -333,7 +333,7 @@
|
||||
return
|
||||
|
||||
playsound(src, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
|
||||
visible_message("<font color='red'> <B>[M] attempted to disarm [src]!</B></font>")
|
||||
visible_message("<span class='filter_combat'><font color='red'> <B>[M] attempted to disarm [src]!</B></font></span>")
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, inrange, params)
|
||||
@@ -426,9 +426,9 @@
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
|
||||
if(user == src)
|
||||
user.visible_message("\The [user] starts applying pressure to [TU.his] [organ.name]!", "You start applying pressure to your [organ.name]!")
|
||||
user.visible_message("<span class='filter_notice'>\The [user] starts applying pressure to [TU.his] [organ.name]!</span>", "<span class='filter_notice'>You start applying pressure to your [organ.name]!</span>")
|
||||
else
|
||||
user.visible_message("\The [user] starts applying pressure to [src]'s [organ.name]!", "You start applying pressure to [src]'s [organ.name]!")
|
||||
user.visible_message("<span class='filter_notice'>\The [user] starts applying pressure to [src]'s [organ.name]!</span>", "<span class='filter_notice'>You start applying pressure to [src]'s [organ.name]!</span>")
|
||||
spawn(0)
|
||||
organ.applied_pressure = user
|
||||
|
||||
@@ -438,9 +438,9 @@
|
||||
organ.applied_pressure = null
|
||||
|
||||
if(user == src)
|
||||
user.visible_message("\The [user] stops applying pressure to [TU.his] [organ.name]!", "You stop applying pressure to your [organ]!")
|
||||
user.visible_message("\<span class='filter_notice'>The [user] stops applying pressure to [TU.his] [organ.name]!</span>", "<span class='filter_notice'>You stop applying pressure to your [organ]!</span>")
|
||||
else
|
||||
user.visible_message("\The [user] stops applying pressure to [src]'s [organ.name]!", "You stop applying pressure to [src]'s [organ.name]!")
|
||||
user.visible_message("<span class='filter_notice'>\The [user] stops applying pressure to [src]'s [organ.name]!</span>", "<span class='filter_notice'>You stop applying pressure to [src]'s [organ.name]!</span>")
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -269,21 +269,21 @@
|
||||
if (candidates.len)
|
||||
var/obj/item/organ/external/O = pick(candidates)
|
||||
O.mutate()
|
||||
to_chat(src, "<span class = 'notice'>Something is not right with your [O.name]...</span>")
|
||||
to_chat(src, "<span class='notice'>Something is not right with your [O.name]...</span>")
|
||||
return
|
||||
else
|
||||
if (prob(heal_prob))
|
||||
for (var/obj/item/organ/external/O in organs)
|
||||
if (O.status & ORGAN_MUTATED)
|
||||
O.unmutate()
|
||||
to_chat(src, "<span class = 'notice'>Your [O.name] is shaped normally again.</span>")
|
||||
to_chat(src, "<span class='notice'>Your [O.name] is shaped normally again.</span>")
|
||||
return
|
||||
|
||||
if (getCloneLoss() < 1)
|
||||
for (var/obj/item/organ/external/O in organs)
|
||||
if (O.status & ORGAN_MUTATED)
|
||||
O.unmutate()
|
||||
to_chat(src, "<span class = 'notice'>Your [O.name] is shaped normally again.</span>")
|
||||
to_chat(src, "<span class='notice'>Your [O.name] is shaped normally again.</span>")
|
||||
BITSET(hud_updateflag, HEALTH_HUD)
|
||||
|
||||
// Defined here solely to take species flags into account without having to recast at mob/living level.
|
||||
|
||||
@@ -469,7 +469,7 @@ emp_act
|
||||
var/obj/item/organ/external/affecting = get_organ(zone)
|
||||
var/hit_area = affecting.name
|
||||
|
||||
src.visible_message("<font color='red'>[src] has been hit in the [hit_area] by [O].</font>")
|
||||
src.visible_message("<span class='filter_warning'><font color='red'>[src] has been hit in the [hit_area] by [O].</font></span>")
|
||||
|
||||
if(ismob(O.thrower))
|
||||
add_attack_logs(O.thrower,src,"Hit with thrown [O.name]")
|
||||
@@ -477,7 +477,7 @@ emp_act
|
||||
//If the armor absorbs all of the damage, skip the rest of the calculations
|
||||
var/soaked = get_armor_soak(affecting, "melee", O.armor_penetration)
|
||||
if(soaked >= throw_damage)
|
||||
to_chat(src, "Your armor absorbs the force of [O.name]!")
|
||||
to_chat(src, "<span class='warning'>Your armor absorbs the force of [O.name]!</span>")
|
||||
return
|
||||
|
||||
var/armor = run_armor_check(affecting, "melee", O.armor_penetration, "Your armor has protected your [hit_area].", "Your armor has softened hit to your [hit_area].") //I guess "melee" is the best fit here
|
||||
@@ -515,7 +515,7 @@ emp_act
|
||||
if(O.throw_source && momentum >= THROWNOBJ_KNOCKBACK_SPEED && !buckled)
|
||||
var/dir = get_dir(O.throw_source, src)
|
||||
|
||||
visible_message("<font color='red'>[src] staggers under the impact!</font>","<font color='red'>You stagger under the impact!</font>")
|
||||
visible_message("<span class='filter_warning'><font color='red'>[src] staggers under the impact!</font></span>","<span class='filter_warning'><font color='red'>You stagger under the impact!</font></span>")
|
||||
src.throw_at(get_edge_target_turf(src,dir),1,momentum)
|
||||
|
||||
if(!O || !src) return
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
return
|
||||
|
||||
if(stat || paralysis || stunned || weakened || lying || restrained() || buckled)
|
||||
to_chat(src, "You cannot tackle in your current state.")
|
||||
to_chat(src, "<span class='filter_notice'>You cannot tackle in your current state.</span>")
|
||||
return
|
||||
|
||||
last_special = world.time + 50
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
for(var/mob/O in viewers(src, null))
|
||||
if ((O.client && !( O.blinded )))
|
||||
O.show_message(text("<font color='red'><B>[] [failed ? "tried to tackle" : "has tackled"] down []!</font></B>", src, T), 1)
|
||||
O.show_message("<span class='filter_warning'><font color='red'><B>[src] [failed ? "tried to tackle" : "has tackled"] down [T]!</font></B></span>", 1)
|
||||
|
||||
/mob/living/carbon/human/proc/commune()
|
||||
set category = "Abilities"
|
||||
@@ -103,17 +103,17 @@
|
||||
var/mob/M = targets[target]
|
||||
|
||||
if(istype(M, /mob/observer/dead) || M.stat == DEAD)
|
||||
to_chat(src, "Not even a [src.species.name] can speak to the dead.")
|
||||
to_chat(src, "<span class='filter_notice'>Not even a [src.species.name] can speak to the dead.</span>")
|
||||
return
|
||||
|
||||
log_say("(COMMUNE to [key_name(M)]) [text]",src)
|
||||
|
||||
to_chat(M, "<font color='blue'>Like lead slabs crashing into the ocean, alien thoughts drop into your mind: [text]</font>")
|
||||
to_chat(M, "<span class='filter_say'><font color='blue'>Like lead slabs crashing into the ocean, alien thoughts drop into your mind: [text]</font></span>")
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.species.name == src.species.name)
|
||||
return
|
||||
to_chat(H, "<font color='red'>Your nose begins to bleed...</font>")
|
||||
to_chat(H, "<span class='filter_notice'><font color='red'>Your nose begins to bleed...</font></span>")
|
||||
H.drip(1)
|
||||
|
||||
/mob/living/carbon/human/proc/regurgitate()
|
||||
@@ -126,7 +126,7 @@
|
||||
if(M in stomach_contents)
|
||||
stomach_contents.Remove(M)
|
||||
M.loc = loc
|
||||
src.visible_message("<font color='red'><B>[src] hurls out the contents of their stomach!</B></font>")
|
||||
src.visible_message("<span class='filter_warning'><font color='red'><B>[src] hurls out the contents of their stomach!</B></font></span>")
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/psychic_whisper(mob/M as mob in oview())
|
||||
@@ -137,8 +137,8 @@
|
||||
var/msg = sanitize(tgui_input_text(usr, "Message:", "Psychic Whisper"))
|
||||
if(msg)
|
||||
log_say("(PWHISPER to [key_name(M)]) [msg]", src)
|
||||
to_chat(M, "<font color='green'>You hear a strange, alien voice in your head... <i>[msg]</i></font>")
|
||||
to_chat(src, "<font color='green'>You said: \"[msg]\" to [M]</font>")
|
||||
to_chat(M, "<span class='filter_say'><font color='green'>You hear a strange, alien voice in your head... <i>[msg]</i></font></span>")
|
||||
to_chat(src, "<span class='filter_say'><font color='green'>You said: \"[msg]\" to [M]</font></span>")
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/diona_split_nymph()
|
||||
@@ -211,7 +211,7 @@
|
||||
to_chat(src, "<span class='notice'>Performing self-diagnostic, please wait...</span>")
|
||||
|
||||
spawn(50)
|
||||
var/output = "<span class='notice'>Self-Diagnostic Results:\n</span>"
|
||||
var/output = "<span class='filter_notice'><span class='notice'>Self-Diagnostic Results:\n</span>"
|
||||
|
||||
output += "Internal Temperature: [convert_k2c(bodytemperature)] Degrees Celsius\n"
|
||||
|
||||
@@ -237,6 +237,7 @@
|
||||
output += "[IO.name] - <span class='warning'>[IO.damage > 10 ? "Heavy Damage" : "Light Damage"]</span>\n"
|
||||
else
|
||||
output += "[IO.name] - <span style='color:green;'>OK</span>\n"
|
||||
output += "</span>"
|
||||
|
||||
to_chat(src,output)
|
||||
|
||||
@@ -302,7 +303,7 @@
|
||||
return
|
||||
else
|
||||
active_regen = TRUE
|
||||
src.visible_message("<B>[src]</B>'s flesh begins to mend...")
|
||||
src.visible_message("<span class='filter_notice'><B>[src]</B>'s flesh begins to mend...</span>")
|
||||
|
||||
var/delay_length = round(active_regen_delay * species.active_regen_mult)
|
||||
if(do_after(src,delay_length))
|
||||
|
||||
@@ -19,30 +19,30 @@
|
||||
switch(attack_damage)
|
||||
if(1 to 2)
|
||||
user.visible_message("<span class='danger'>[user]'s fangs scrape across [target]'s cheek!</span>")
|
||||
to_chat(target, "<font color='red'><b>Your face feels tingly!</b></font>")
|
||||
to_chat(target, "<span class='danger'>Your face feels tingly!</span>")
|
||||
target.bloodstr.add_reagent("numbenzyme",attack_damage) //Have to add this here, otherwise the swtich fails.
|
||||
if(3 to 4)
|
||||
user.visible_message("<span class='danger'>[user]'s fangs pierce into [target]'s neck at an odd, awkward angle!</span>")
|
||||
to_chat(target, "<font color='red'><b>Your neck feels like it's on fire before going numb!</b></font>")
|
||||
to_chat(target, "<span class='danger'>Your neck feels like it's on fire before going numb!</span>")
|
||||
target.bloodstr.add_reagent("numbenzyme",attack_damage)
|
||||
if(5)
|
||||
user.visible_message("<span class='danger'>[user] sinks \his [pick(attack_noun)] <b><i>deep</i></b> into [target]'s neck, causing the vein to bulge outwards at some type of chemical is pumped into it!</span>")
|
||||
to_chat(target, "<font color='red'><b>Your neck feels like it's going to burst! Moments later, you simply can't feel your neck any longer, the numbness beginning to spread throughout your body!</b></font>")
|
||||
to_chat(target, "<span class='danger'>Your neck feels like it's going to burst! Moments later, you simply can't feel your neck any longer, the numbness beginning to spread throughout your body!</span>")
|
||||
target.bloodstr.add_reagent("numbenzyme",attack_damage)
|
||||
else
|
||||
// ----- BODY ----- //
|
||||
switch(attack_damage)
|
||||
if(1 to 2)
|
||||
user.visible_message("<span class='danger'>[user]'s fangs scrape across [target]'s [affecting.name]!</span>")
|
||||
to_chat(target, "<font color='red'><b>Your [affecting.name] feels tingly!</b></font>")
|
||||
to_chat(target, "<span class='danger'>Your [affecting.name] feels tingly!</span>")
|
||||
target.bloodstr.add_reagent("numbenzyme",attack_damage)
|
||||
if(3 to 4)
|
||||
user.visible_message("<span class='danger'>[user]'s fangs pierce [pick("", "", "the side of")] [target]'s [affecting.name]!</span>")
|
||||
to_chat(target, "<font color='red'><b>Your [affecting.name] feels like it's on fire before going numb!</b></font>")
|
||||
to_chat(target, "<span class='danger'>Your [affecting.name] feels like it's on fire before going numb!</span>")
|
||||
target.bloodstr.add_reagent("numbenzyme",attack_damage)
|
||||
if(5)
|
||||
user.visible_message("<span class='danger'>[user]'s fangs sink deep into [target]'s [affecting.name], one of their veins bulging outwards from the sudden fluid pumped into it!</span>")
|
||||
to_chat(target, "<font color='red'><b>Your [affecting.name] feels like it's going to burst! Moments later, you simply can't feel your [affecting.name] any longer, the numbness slowly spreading throughout your body!</b></font>")
|
||||
to_chat(target, "<span class='danger'>Your [affecting.name] feels like it's going to burst! Moments later, you simply can't feel your [affecting.name] any longer, the numbness slowly spreading throughout your body!</span>")
|
||||
target.bloodstr.add_reagent("numbenzyme",attack_damage)
|
||||
|
||||
/datum/unarmed_attack/claws/shadekin
|
||||
|
||||
@@ -189,5 +189,5 @@
|
||||
species.base_species = new_species
|
||||
wrapped_species_by_ref["\ref[src]"] = new_species
|
||||
if (visible)
|
||||
visible_message("<b>\The [src]</b> shifts and contorts, taking the form of \a [new_species]!")
|
||||
visible_message("<span class='filter_notice'><b>\The [src]</b> shifts and contorts, taking the form of \a [new_species]!</span>")
|
||||
regenerate_icons()
|
||||
@@ -96,7 +96,7 @@
|
||||
if(!..())
|
||||
return 0
|
||||
|
||||
usr.visible_message("<b>[src]</b> points to [A]")
|
||||
usr.visible_message("<span class='filter_notice'><b>[src]</b> points to [A].</span>")
|
||||
return 1
|
||||
|
||||
/mob/living/verb/succumb()
|
||||
@@ -697,13 +697,13 @@
|
||||
//VOREStation Edit Start - Making it so SSD people have prefs with fallback to original style.
|
||||
if(config.allow_Metadata)
|
||||
if(ooc_notes)
|
||||
to_chat(usr, "[src]'s Metainfo:<br>[ooc_notes]")
|
||||
to_chat(usr, "<span class='filter_notice'>[src]'s Metainfo:<br>[ooc_notes]</span>")
|
||||
else if(client)
|
||||
to_chat(usr, "[src]'s Metainfo:<br>[client.prefs.metadata]")
|
||||
to_chat(usr, "<span class='filter_notice'>[src]'s Metainfo:<br>[client.prefs.metadata]</span>")
|
||||
else
|
||||
to_chat(usr, "[src] does not have any stored infomation!")
|
||||
to_chat(usr, "<span class='filter_notice'>[src] does not have any stored infomation!</span>")
|
||||
else
|
||||
to_chat(usr, "OOC Metadata is not supported by this server!")
|
||||
to_chat(usr, "<span class='filter_notice'>OOC Metadata is not supported by this server!</span>")
|
||||
//VOREStation Edit End - Making it so SSD people have prefs with fallback to original style.
|
||||
|
||||
return
|
||||
@@ -773,7 +773,7 @@
|
||||
set category = "IC"
|
||||
|
||||
resting = !resting
|
||||
to_chat(src, "<span class='notice'>You are now [resting ? "resting" : "getting up"]</span>")
|
||||
to_chat(src, "<span class='notice'>You are now [resting ? "resting" : "getting up"].</span>")
|
||||
update_canmove()
|
||||
|
||||
//called when the mob receives a bright flash
|
||||
@@ -1144,7 +1144,7 @@
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(H.in_throw_mode && H.a_intent == I_HELP && unEquip(I))
|
||||
H.put_in_hands(I) // If this fails it will just end up on the floor, but that's fitting for things like dionaea.
|
||||
visible_message("<b>[src]</b> hands \the [H] \a [I].", SPAN_NOTICE("You give \the [target] \a [I]."))
|
||||
visible_message("<span class='filter_notice'><b>[src]</b> hands \the [H] \a [I].</span>", SPAN_NOTICE("You give \the [target] \a [I]."))
|
||||
else
|
||||
to_chat(src, SPAN_NOTICE("You offer \the [I] to \the [target]."))
|
||||
do_give(H)
|
||||
|
||||
@@ -266,10 +266,17 @@
|
||||
miss_chance = max(15*(distance-2), 0)
|
||||
|
||||
if (prob(miss_chance))
|
||||
<<<<<<< HEAD
|
||||
visible_message("<font color='blue'>\The [O] misses [src] narrowly!</font>")
|
||||
return*/
|
||||
//CHOMPEDIT - removing baymiss
|
||||
src.visible_message("<font color='red'>[src] has been hit by [O].</font>")
|
||||
=======
|
||||
visible_message("<span class='notice'>\The [O] misses [src] narrowly!</span>")
|
||||
return
|
||||
|
||||
src.visible_message("<span class='filter_warning'><font color='red'>[src] has been hit by [O].</font></span>")
|
||||
>>>>>>> 0eb2f82d41... Merge pull request #14649 from Seris02/prmirror
|
||||
var/armor = run_armor_check(null, "melee")
|
||||
var/soaked = get_armor_soak(null, "melee")
|
||||
|
||||
@@ -296,7 +303,7 @@
|
||||
if(O.throw_source && momentum >= THROWNOBJ_KNOCKBACK_SPEED)
|
||||
var/dir = get_dir(O.throw_source, src)
|
||||
|
||||
visible_message("<font color='red'>[src] staggers under the impact!</font>","<font color='red'>You stagger under the impact!</font>")
|
||||
visible_message("<span class='filter_warning'><font color='red'>[src] staggers under the impact!</font></span>","<span class='filter_warning'><font color='red'>You stagger under the impact!</font></span>")
|
||||
src.throw_at(get_edge_target_turf(src,dir),1,momentum)
|
||||
|
||||
if(!O || !src) return
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
var/new_metadata = sanitize(tgui_input_text(usr, "Enter any information you'd like others to see, such as Roleplay-preferences. This will not be saved permanently, only for this round.", "Game Preference" , html_decode(ooc_notes), multiline = TRUE, prevent_enter = TRUE), extra = 0)
|
||||
if(new_metadata && CanUseTopic(usr))
|
||||
ooc_notes = new_metadata
|
||||
to_chat(usr, "OOC notes updated.")
|
||||
to_chat(usr, "<span class='filter_notice'>OOC notes updated.</span>")
|
||||
log_admin("[key_name(usr)] updated their OOC notes mid-round.")
|
||||
|
||||
/mob/living/verb/set_voice_freq()
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
if(istype(riding_datum,/datum/riding))
|
||||
if(riding_datum.keytype)
|
||||
riding_datum.keytype = null
|
||||
to_chat(src, "Rider control enabled.")
|
||||
to_chat(src, "<span class='filter_notice'>Rider control enabled.</span>")
|
||||
return
|
||||
else
|
||||
riding_datum.keytype = /obj/item/weapon/material/twohanded/riding_crop
|
||||
to_chat(src, "Rider control restricted.")
|
||||
to_chat(src, "<span class='filter_notice'>Rider control restricted.</span>")
|
||||
return
|
||||
return
|
||||
|
||||
@@ -189,12 +189,12 @@ var/list/ai_verbs_default = list(
|
||||
return
|
||||
|
||||
/mob/living/silicon/ai/proc/on_mob_init()
|
||||
to_chat(src, "<B>You are playing the station's AI. The AI cannot move, but can interact with many objects while viewing them (through cameras).</B>")
|
||||
to_chat(src, "<B>To look at other parts of the station, click on yourself to get a camera menu.</B>")
|
||||
to_chat(src, "<B>While observing through a camera, you can use most (networked) devices which you can see, such as computers, APCs, intercoms, doors, etc.</B>")
|
||||
to_chat(src, "To use something, simply click on it.")
|
||||
to_chat(src, "Use <B>say #b</B> to speak to your cyborgs through binary. Use say :h to speak from an active holopad.")
|
||||
to_chat(src, "For department channels, use the following say commands:")
|
||||
var/init_text = list("<B>You are playing the station's AI. The AI cannot move, but can interact with many objects while viewing them (through cameras).</B>",
|
||||
"<B>To look at other parts of the station, click on yourself to get a camera menu.</B>",
|
||||
"<B>While observing through a camera, you can use most (networked) devices which you can see, such as computers, APCs, intercoms, doors, etc.</B>",
|
||||
"To use something, simply click on it.",
|
||||
"For department channels, use the following say commands:")
|
||||
to_chat(src, "<span class='filter_notice'>[jointext(init_text, "<br>")]</span>")
|
||||
|
||||
var/radio_text = ""
|
||||
for(var/i = 1 to common_radio.channels.len)
|
||||
@@ -214,7 +214,7 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
if (malf && !(mind in malf.current_antagonists))
|
||||
show_laws()
|
||||
to_chat(src, "<b>These laws may be changed by other players, or by you being the traitor.</b>")
|
||||
to_chat(src, "<span class='filter_notice'><b>These laws may be changed by other players, or by you being the traitor.</b></span>")
|
||||
|
||||
job = "AI"
|
||||
setup_icon()
|
||||
@@ -360,7 +360,7 @@ var/list/ai_verbs_default = list(
|
||||
return
|
||||
|
||||
if(message_cooldown)
|
||||
to_chat(src, "Please allow one minute to pass between announcements.")
|
||||
to_chat(src, "<span class='filter_notice'>Please allow one minute to pass between announcements.</span>")
|
||||
return
|
||||
var/input = tgui_input_text(usr, "Please write a message to announce to the station crew.", "A.I. Announcement")
|
||||
if(!input)
|
||||
@@ -472,7 +472,7 @@ var/list/ai_verbs_default = list(
|
||||
if(target && (!istype(target, /mob/living/carbon/human) || html_decode(href_list["trackname"]) == target:get_face_name()))
|
||||
ai_actual_track(target)
|
||||
else
|
||||
to_chat(src, "<font color='red'>System error. Cannot locate [html_decode(href_list["trackname"])].</font>")
|
||||
to_chat(src, "<span class='filter_warning'><font color='red'>System error. Cannot locate [html_decode(href_list["trackname"])].</font></span>")
|
||||
return
|
||||
|
||||
if(href_list["trackbot"])
|
||||
@@ -572,7 +572,7 @@ var/list/ai_verbs_default = list(
|
||||
if(network in C.network)
|
||||
eyeobj.setLoc(get_turf(C))
|
||||
break
|
||||
to_chat(src, "<font color='blue'>Switched to [network] camera network.</font>")
|
||||
to_chat(src, "<span class='notice'>Switched to [network] camera network.</span>")
|
||||
//End of code by Mord_Sith
|
||||
|
||||
/mob/living/silicon/ai/proc/ai_statuschange()
|
||||
@@ -707,7 +707,7 @@ var/list/ai_verbs_default = list(
|
||||
return
|
||||
|
||||
camera_light_on = !camera_light_on
|
||||
to_chat(src, "Camera lights [camera_light_on ? "activated" : "deactivated"].")
|
||||
to_chat(src, "<span class='filter_notice'>Camera lights [camera_light_on ? "activated" : "deactivated"].</span>")
|
||||
if(!camera_light_on)
|
||||
if(camera)
|
||||
camera.set_light(0)
|
||||
@@ -754,20 +754,20 @@ var/list/ai_verbs_default = list(
|
||||
return
|
||||
if(anchored)
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
user.visible_message("<font color='blue'>\The [user] starts to unbolt \the [src] from the plating...</font>")
|
||||
user.visible_message("<span class='notice'>\The [user] starts to unbolt \the [src] from the plating...</span>")
|
||||
if(!do_after(user,40 * W.toolspeed))
|
||||
user.visible_message("<font color='blue'>\The [user] decides not to unbolt \the [src].</font>")
|
||||
user.visible_message("<span class='notice'>\The [user] decides not to unbolt \the [src].</span>")
|
||||
return
|
||||
user.visible_message("<font color='blue'>\The [user] finishes unfastening \the [src]!</font>")
|
||||
user.visible_message("<span class='notice'>\The [user] finishes unfastening \the [src]!</span>")
|
||||
anchored = FALSE
|
||||
return
|
||||
else
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
user.visible_message("<font color='blue'>\The [user] starts to bolt \the [src] to the plating...</font>")
|
||||
user.visible_message("<span class='notice'>\The [user] starts to bolt \the [src] to the plating...</span>")
|
||||
if(!do_after(user,40 * W.toolspeed))
|
||||
user.visible_message("<font color='blue'>\The [user] decides not to bolt \the [src].</font>")
|
||||
user.visible_message("<span class='notice'>\The [user] decides not to bolt \the [src].</span>")
|
||||
return
|
||||
user.visible_message("<font color='blue'>\The [user] finishes fastening down \the [src]!</font>")
|
||||
user.visible_message("<span class='notice'>\The [user] finishes fastening down \the [src]!</span>")
|
||||
anchored = TRUE
|
||||
return
|
||||
else
|
||||
@@ -781,7 +781,7 @@ var/list/ai_verbs_default = list(
|
||||
if(check_unable(AI_CHECK_RADIO))
|
||||
return
|
||||
|
||||
to_chat(src, "Accessing Subspace Transceiver control...")
|
||||
to_chat(src, "<span class='filter_notice'>Accessing Subspace Transceiver control...</span>")
|
||||
if (src.aiRadio)
|
||||
src.aiRadio.interact(src)
|
||||
|
||||
@@ -804,7 +804,7 @@ var/list/ai_verbs_default = list(
|
||||
var/obj/effect/overlay/aiholo/hologram = holo.masters[src]
|
||||
walk(hologram, 0)
|
||||
//VOREStation Add End
|
||||
to_chat(usr, "Your hologram will [hologram_follow ? "follow" : "no longer follow"] you now.")
|
||||
to_chat(usr, "<span class='filter_notice'>Your hologram will [hologram_follow ? "follow" : "no longer follow"] you now.</span>")
|
||||
|
||||
|
||||
/mob/living/silicon/ai/proc/check_unable(var/flags = 0, var/feedback = 1)
|
||||
@@ -965,7 +965,7 @@ var/list/ai_verbs_default = list(
|
||||
var/message = combined["formatted"]
|
||||
var/name_used = M.GetVoice()
|
||||
//This communication is imperfect because the holopad "filters" voices and is only designed to connect to the master only.
|
||||
var/rendered = "<i><span class='game say'>Relayed Speech: <span class='name'>[name_used]</span> [message]</span></i>"
|
||||
var/rendered = "<span class='game say'><i>Relayed Speech: <span class='name'>[name_used]</span> [message]</i></span>"
|
||||
show_message(rendered, 2)
|
||||
|
||||
/mob/living/silicon/ai/proc/toggle_multicam_verb()
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
who = world
|
||||
else
|
||||
who = src
|
||||
to_chat(who, "<b>Obey these laws:</b>")
|
||||
to_chat(who, "<span class='filter_notice'><b>Obey these laws:</b></span>")
|
||||
|
||||
src.laws_sanity_check()
|
||||
src.laws.show_laws(who)
|
||||
|
||||
@@ -266,7 +266,7 @@
|
||||
M.ejectpai()
|
||||
//I'm not sure how much of this is necessary, but I would rather avoid issues.
|
||||
if(istype(card.loc,/obj/item/rig_module))
|
||||
to_chat(src, "There is no room to unfold inside this rig module. You're good and stuck.")
|
||||
to_chat(src, "<span class='filter_notice'>There is no room to unfold inside this rig module. You're good and stuck.</span>")
|
||||
return 0
|
||||
else if(istype(card.loc,/mob))
|
||||
var/mob/holder = card.loc
|
||||
@@ -295,7 +295,7 @@
|
||||
canmove = TRUE
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
if(istype(T)) T.visible_message("<b>[src]</b> folds outwards, expanding into a mobile form.")
|
||||
if(istype(T)) T.visible_message("<span class='filter_notice'><b>[src]</b> folds outwards, expanding into a mobile form.</span>")
|
||||
verbs |= /mob/living/silicon/pai/proc/pai_nom
|
||||
verbs |= /mob/living/proc/vertical_nom
|
||||
update_icon()
|
||||
@@ -362,7 +362,7 @@
|
||||
resting = !resting
|
||||
icon_state = resting ? "[chassis]_rest" : "[chassis]"
|
||||
update_icon() //VOREStation edit
|
||||
to_chat(src, "<span class='notice'>You are now [resting ? "resting" : "getting up"]</span>")
|
||||
to_chat(src, "<span class='notice'>You are now [resting ? "resting" : "getting up"].</span>")
|
||||
|
||||
canmove = !resting
|
||||
|
||||
@@ -427,7 +427,7 @@
|
||||
release_vore_contents(FALSE) //VOREStation Add
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
if(istype(T) && !silent) T.visible_message("<b>[src]</b> neatly folds inwards, compacting down to a rectangular card.")
|
||||
if(istype(T) && !silent) T.visible_message("<span class='filter_notice'><b>[src]</b> neatly folds inwards, compacting down to a rectangular card.</span>")
|
||||
|
||||
if(client)
|
||||
src.stop_pulling()
|
||||
@@ -526,7 +526,7 @@
|
||||
return
|
||||
|
||||
close_up()
|
||||
visible_message("<b>[src]</b> fades away from the screen, the pAI device goes silent.")
|
||||
visible_message("<span class='filter_notice'><b>[src]</b> fades away from the screen, the pAI device goes silent.</span>")
|
||||
card.removePersonality()
|
||||
clear_client()
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
canmove = TRUE
|
||||
card.setEmotion(15)
|
||||
playsound(card, 'sound/effects/pai-restore.ogg', 50, FALSE)
|
||||
card.visible_message("\The [card] chimes.", runemessage = "chime")
|
||||
card.visible_message("<span class='filter_notice'>\The [card] chimes.</span>", runemessage = "chime")
|
||||
|
||||
/mob/living/silicon/pai/proc/pai_nom(var/mob/living/T in oview(1))
|
||||
set name = "pAI Nom"
|
||||
@@ -238,7 +238,7 @@
|
||||
hide_glow = FALSE
|
||||
update_icon()
|
||||
else
|
||||
to_chat(src, "Your selected chassis cannot modify its eye glow!")
|
||||
to_chat(src, "<span class='filter_notice'>Your selected chassis cannot modify its eye glow!</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -432,7 +432,7 @@
|
||||
set category = "pAI Commands"
|
||||
set name = "Save Configuration"
|
||||
savefile_save(src)
|
||||
to_chat(src, "[name] configuration saved to global pAI settings.")
|
||||
to_chat(src, "<span class='filter_notice'>[name] configuration saved to global pAI settings.</span>")
|
||||
|
||||
/mob/living/silicon/pai/a_intent_change(input as text)
|
||||
. = ..()
|
||||
@@ -506,28 +506,28 @@
|
||||
card.screen_msg = message
|
||||
var/logmsg = "(CARD SCREEN)[message]"
|
||||
log_say(logmsg,src)
|
||||
to_chat(src, "<span class='cult'>You print a message to your screen, \"[message]\"</span>")
|
||||
to_chat(src, "<span class='filter_say cult'>You print a message to your screen, \"[message]\"</span>")
|
||||
if(isliving(card.loc))
|
||||
var/mob/living/L = card.loc
|
||||
if(L.client)
|
||||
to_chat(L, "<span class='cult'>[src.name]'s screen prints, \"[message]\"</span>")
|
||||
to_chat(L, "<span class='filter_say cult'>[src.name]'s screen prints, \"[message]\"</span>")
|
||||
else return
|
||||
else if(isbelly(card.loc))
|
||||
var/obj/belly/b = card.loc
|
||||
if(b.owner.client)
|
||||
to_chat(b.owner, "<span class='cult'>[src.name]'s screen prints, \"[message]\"</span>")
|
||||
to_chat(b.owner, "<span class='filter_say cult'>[src.name]'s screen prints, \"[message]\"</span>")
|
||||
else return
|
||||
else if(istype(card.loc, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/p = card.loc
|
||||
if(isliving(p.loc))
|
||||
var/mob/living/L = p.loc
|
||||
if(L.client)
|
||||
to_chat(L, "<span class='cult'>[src.name]'s screen prints, \"[message]\"</span>")
|
||||
to_chat(L, "<span class='filter_say cult'>[src.name]'s screen prints, \"[message]\"</span>")
|
||||
else return
|
||||
else if(isbelly(p.loc))
|
||||
var/obj/belly/b = card.loc
|
||||
if(b.owner.client)
|
||||
to_chat(b.owner, "<span class='cult'>[src.name]'s screen prints, \"[message]\"</span>")
|
||||
to_chat(b.owner, "<span class='filter_say cult'>[src.name]'s screen prints, \"[message]\"</span>")
|
||||
else return
|
||||
else return
|
||||
else return
|
||||
@@ -537,11 +537,11 @@
|
||||
continue
|
||||
else if(isobserver(G) && G.is_preference_enabled(/datum/client_preference/ghost_ears))
|
||||
if(is_preference_enabled(/datum/client_preference/whisubtle_vis) || G.client.holder)
|
||||
to_chat(G, "<span class='cult'>[src.name]'s screen prints, \"[message]\"</span>")
|
||||
to_chat(G, "<span class='filter_say cult'>[src.name]'s screen prints, \"[message]\"</span>")
|
||||
|
||||
/mob/living/silicon/pai/proc/touch_window(soft_name) //This lets us touch TGUI procs and windows that may be nested behind other TGUI procs and windows
|
||||
if(stat != CONSCIOUS) //so we can access our software without having to open up the software interface TGUI window
|
||||
to_chat(src, "<span class ='warning'>You can't do that right now.</span>")
|
||||
to_chat(src, "<span class='warning'>You can't do that right now.</span>")
|
||||
return
|
||||
for(var/thing in software)
|
||||
var/datum/pai_software/S = software[thing]
|
||||
|
||||
@@ -268,15 +268,15 @@
|
||||
if(user.client && (target in user.client.screen))
|
||||
to_chat(user, "<span class='warning'>You need to take \the [target.name] off before cleaning it!</span>")
|
||||
if(istype(target, /obj/structure/sink) || istype(target, /obj/structure/toilet)) //Dog vibes.
|
||||
user.visible_message("[user] begins to lap up water from [target.name].", "<span class='notice'>You begin to lap up water from [target.name].</span>")
|
||||
user.visible_message("<span class='filter_notice'>[user] begins to lap up water from [target.name].</span>", "<span class='notice'>You begin to lap up water from [target.name].</span>")
|
||||
if(do_after (user, 50))
|
||||
water.add_charge(50)
|
||||
to_chat(src, "You refill some of your water reserves.")
|
||||
to_chat(src, "<span class='filter_notice'>You refill some of your water reserves.</span>")
|
||||
else if(water.energy < 5)
|
||||
to_chat(user, "<span class='notice'>Your mouth feels dry. You should drink up some water .</span>")
|
||||
return
|
||||
else if(istype(target,/obj/effect/decal/cleanable))
|
||||
user.visible_message("[user] begins to lick off \the [target.name].", "<span class='notice'>You begin to lick off \the [target.name]...</span>")
|
||||
user.visible_message("<span class='filter_notice'>[user] begins to lick off \the [target.name].</span>", "<span class='notice'>You begin to lick off \the [target.name]...</span>")
|
||||
if(do_after (user, 50))
|
||||
to_chat(user, "<span class='notice'>You finish licking off \the [target.name].</span>")
|
||||
water.use_charge(5)
|
||||
@@ -285,9 +285,9 @@
|
||||
R.cell.charge += 50
|
||||
else if(istype(target,/obj/item))
|
||||
if(istype(target,/obj/item/trash))
|
||||
user.visible_message("[user] nibbles away at \the [target.name].", "<span class='notice'>You begin to nibble away at \the [target.name]...</span>")
|
||||
user.visible_message("<span class='filter_notice'>[user] nibbles away at \the [target.name].</span>", "<span class='notice'>You begin to nibble away at \the [target.name]...</span>")
|
||||
if(do_after (user, 50))
|
||||
user.visible_message("[user] finishes eating \the [target.name].", "<span class='notice'>You finish eating \the [target.name].</span>")
|
||||
user.visible_message("<span class='filter_notice'>[user] finishes eating \the [target.name].</span>", "<span class='notice'>You finish eating \the [target.name].</span>")
|
||||
to_chat(user, "<span class='notice'>You finish off \the [target.name].</span>")
|
||||
qdel(target)
|
||||
var/mob/living/silicon/robot/R = user
|
||||
@@ -304,9 +304,9 @@
|
||||
R.cell.charge = R.cell.charge + 250
|
||||
return
|
||||
if(istype(target,/obj/item/weapon/cell))
|
||||
user.visible_message("[user] begins cramming \the [target.name] down its throat.", "<span class='notice'>You begin cramming \the [target.name] down your throat...</span>")
|
||||
user.visible_message("<span class='filter_notice'>[user] begins cramming \the [target.name] down its throat.</span>", "<span class='notice'>You begin cramming \the [target.name] down your throat...</span>")
|
||||
if(do_after (user, 50))
|
||||
user.visible_message("[user] finishes gulping down \the [target.name].", "<span class='notice'>You finish swallowing \the [target.name].</span>")
|
||||
user.visible_message("<span class='filter_notice'>[user] finishes gulping down \the [target.name].</span>", "<span class='notice'>You finish swallowing \the [target.name].</span>")
|
||||
to_chat(user, "<span class='notice'>You finish off \the [target.name], and gain some charge!</span>")
|
||||
var/mob/living/silicon/robot/R = user
|
||||
var/obj/item/weapon/cell/C = target
|
||||
@@ -314,7 +314,7 @@
|
||||
water.use_charge(5)
|
||||
qdel(target)
|
||||
return
|
||||
user.visible_message("[user] begins to lick \the [target.name] clean...", "<span class='notice'>You begin to lick \the [target.name] clean...</span>")
|
||||
user.visible_message("<span class='filter_notice'>[user] begins to lick \the [target.name] clean...</span>", "<span class='notice'>You begin to lick \the [target.name] clean...</span>")
|
||||
if(do_after (user, 50))
|
||||
to_chat(user, "<span class='notice'>You clean \the [target.name].</span>")
|
||||
water.use_charge(5)
|
||||
@@ -342,7 +342,7 @@
|
||||
if(H.species.lightweight == 1)
|
||||
H.Weaken(3)
|
||||
else
|
||||
user.visible_message("[user] begins to lick \the [target.name] clean...", "<span class='notice'>You begin to lick \the [target.name] clean...</span>")
|
||||
user.visible_message("<span class='filter_notice'>[user] begins to lick \the [target.name] clean...</span>", "<span class='notice'>You begin to lick \the [target.name] clean...</span>")
|
||||
if(do_after (user, 50))
|
||||
to_chat(user, "<span class='notice'>You clean \the [target.name].</span>")
|
||||
var/obj/effect/decal/cleanable/C = locate() in target
|
||||
@@ -415,7 +415,7 @@
|
||||
var/new_color = input(usr, "Choose a color to set the light to! (Default is [LIGHT_COLOR_INCANDESCENT_TUBE])", "", selected_color) as color|null
|
||||
if(new_color)
|
||||
selected_color = new_color
|
||||
to_chat(user, "The light color has been changed.")
|
||||
to_chat(user, "<span class='filter_notice'>The light color has been changed.</span>")
|
||||
return
|
||||
else
|
||||
if(uses >= max_uses)
|
||||
@@ -425,7 +425,7 @@
|
||||
if(glass.energy < 125)
|
||||
to_chat(user, "<span class='warning'>Insufficient material reserves.</span>")
|
||||
return
|
||||
to_chat(user, "It has [uses] lights remaining. Attempting to fabricate a replacement. Please stand still.")
|
||||
to_chat(user, "<span class='filter_notice'>It has [uses] lights remaining. Attempting to fabricate a replacement. Please stand still.</span>")
|
||||
cooldown = 1
|
||||
if(do_after(user, 50))
|
||||
glass.use_charge(125)
|
||||
@@ -434,7 +434,7 @@
|
||||
else
|
||||
cooldown = 0
|
||||
else
|
||||
to_chat(user, "It has [uses] lights remaining.")
|
||||
to_chat(user, "<span class='filter_notice'>It has [uses] lights remaining.</span>")
|
||||
return
|
||||
|
||||
//Pounce stuff for K-9
|
||||
@@ -456,15 +456,15 @@
|
||||
|
||||
/mob/living/silicon/robot/proc/leap()
|
||||
if(last_special > world.time)
|
||||
to_chat(src, "Your leap actuators are still recharging.")
|
||||
to_chat(src, "<span class='filter_notice'>Your leap actuators are still recharging.</span>")
|
||||
return
|
||||
|
||||
if(cell.charge < 1000)
|
||||
to_chat(src, "Cell charge too low to continue.")
|
||||
to_chat(src, "<span class='filter_notice'>Cell charge too low to continue.</span>")
|
||||
return
|
||||
|
||||
if(usr.incapacitated(INCAPACITATION_DISABLED))
|
||||
to_chat(src, "You cannot leap in your current state.")
|
||||
to_chat(src, "<span class='filter_notice'>You cannot leap in your current state.</span>")
|
||||
return
|
||||
|
||||
var/list/choices = list()
|
||||
@@ -483,7 +483,7 @@
|
||||
return
|
||||
|
||||
if(usr.incapacitated(INCAPACITATION_DISABLED))
|
||||
to_chat(src, "You cannot leap in your current state.")
|
||||
to_chat(src, "<span class='filter_notice'>You cannot leap in your current state.</span>")
|
||||
return
|
||||
|
||||
last_special = world.time + 10
|
||||
@@ -536,6 +536,6 @@
|
||||
icontype = options[choice]
|
||||
var/active_sound = 'sound/effects/bubbles.ogg'
|
||||
playsound(src.loc, "[active_sound]", 100, 0, 4)
|
||||
M << "Your Tank now displays [choice]. Drink up and enjoy!"
|
||||
to_chat(M, "<span class='filter_notice'>Your Tank now displays [choice]. Drink up and enjoy!</span>")
|
||||
updateicon()
|
||||
return 1
|
||||
|
||||
@@ -94,8 +94,10 @@
|
||||
playsound(src, gulpsound, vol = 60, vary = 1, falloff = 0.1, preference = /datum/client_preference/eating_noises)
|
||||
if(analyzer && istype(target,/obj/item))
|
||||
var/obj/item/tech_item = target
|
||||
var/list/tech_levels = list()
|
||||
for(var/T in tech_item.origin_tech)
|
||||
to_chat(user, "<span class='notice'>\The [tech_item] has level [tech_item.origin_tech[T]] in [CallTechName(T)].</span>")
|
||||
tech_levels += "\The [tech_item] has level [tech_item.origin_tech[T]] in [CallTechName(T)]."
|
||||
to_chat(user, "<span class='notice'>[jointext(tech_levels, "<br>")]</span>")
|
||||
if(delivery)
|
||||
if(islist(deliverylists[delivery_tag]))
|
||||
deliverylists[delivery_tag] |= target
|
||||
@@ -627,7 +629,7 @@
|
||||
for(var/atom/movable/thing in B)
|
||||
thing.forceMove(src)
|
||||
if(ismob(thing))
|
||||
to_chat(thing, "As [T] melts away around you, you find yourself in [hound]'s [name]")
|
||||
to_chat(thing, "<span class='filter_notice'>As [T] melts away around you, you find yourself in [hound]'s [name].</span>")
|
||||
for(var/obj/item/I in T)
|
||||
if(istype(I,/obj/item/organ/internal/mmi_holder/posibrain))
|
||||
var/obj/item/organ/internal/mmi_holder/MMI = I
|
||||
|
||||
@@ -382,7 +382,7 @@
|
||||
set name = "Toggle Lights"
|
||||
|
||||
lights_on = !lights_on
|
||||
to_chat(usr, "You [lights_on ? "enable" : "disable"] your integrated light.")
|
||||
to_chat(usr, "<span class='filter_notice'>You [lights_on ? "enable" : "disable"] your integrated light.</span>")
|
||||
handle_light()
|
||||
updateicon() //VOREStation Add - Since dogborgs have sprites for this
|
||||
|
||||
@@ -427,7 +427,7 @@
|
||||
/mob/living/silicon/robot/verb/spark_plug() //So you can still sparkle on demand without violence.
|
||||
set category = "Robot Commands"
|
||||
set name = "Emit Sparks"
|
||||
to_chat(src, "You harmlessly spark.")
|
||||
to_chat(src, "<span class='filter_notice'>You harmlessly spark.</span>")
|
||||
spark_system.start()
|
||||
|
||||
// this function displays jetpack pressure in the stat panel
|
||||
@@ -494,7 +494,7 @@
|
||||
C.brute_damage = WC.brute
|
||||
C.electronics_damage = WC.burn
|
||||
|
||||
to_chat(usr, "<font color='blue'>You install the [W.name].</font>")
|
||||
to_chat(usr, "<span class='notice'>You install the [W.name].</span>")
|
||||
|
||||
return
|
||||
|
||||
@@ -518,7 +518,7 @@
|
||||
return
|
||||
|
||||
if(shell) // AI shells always have the laws of the AI
|
||||
to_chat(user, span("warning", "\The [src] is controlled remotely! You cannot upload new laws this way!"))
|
||||
to_chat(user, "<span class='warning'>\The [src] is controlled remotely! You cannot upload new laws this way!</span>")
|
||||
return
|
||||
|
||||
var/obj/item/weapon/aiModule/M = W
|
||||
@@ -531,7 +531,7 @@
|
||||
return
|
||||
|
||||
if (!getBruteLoss())
|
||||
to_chat(user, "Nothing to fix here!")
|
||||
to_chat(user, "<span class='filter_notice'>Nothing to fix here!</span>")
|
||||
return
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if (WT.remove_fuel(0))
|
||||
@@ -540,14 +540,14 @@
|
||||
updatehealth()
|
||||
add_fingerprint(user)
|
||||
for(var/mob/O in viewers(user, null))
|
||||
O.show_message(text("<font color='red'>[user] has fixed some of the dents on [src]!</font>"), 1)
|
||||
O.show_message("<span class='filter_notice'><font color='red'>[user] has fixed some of the dents on [src]!</font></span>", 1)
|
||||
else
|
||||
to_chat(user, "Need more welding fuel!")
|
||||
to_chat(user, "<span class='filter_warning'>Need more welding fuel!</span>")
|
||||
return
|
||||
|
||||
else if(istype(W, /obj/item/stack/cable_coil) && (wiresexposed || istype(src,/mob/living/silicon/robot/drone)))
|
||||
if (!getFireLoss())
|
||||
to_chat(user, "Nothing to fix here!")
|
||||
to_chat(user, "<span class='filter_notice'>Nothing to fix here!</span>")
|
||||
return
|
||||
var/obj/item/stack/cable_coil/coil = W
|
||||
if (coil.use(1))
|
||||
@@ -555,23 +555,23 @@
|
||||
adjustFireLoss(-30)
|
||||
updatehealth()
|
||||
for(var/mob/O in viewers(user, null))
|
||||
O.show_message(text("<font color='red'>[user] has fixed some of the burnt wires on [src]!</font>"), 1)
|
||||
O.show_message("<span class='filter_notice'><font color='red'>[user] has fixed some of the burnt wires on [src]!</font></span>", 1)
|
||||
|
||||
else if (W.is_crowbar() && user.a_intent != I_HURT) // crowbar means open or close the cover
|
||||
if(opened)
|
||||
if(cell)
|
||||
to_chat(user, "You close the cover.")
|
||||
to_chat(user, "<span class='filter_notice'>You close the cover.</span>")
|
||||
opened = 0
|
||||
updateicon()
|
||||
else if(wiresexposed && wires.is_all_cut())
|
||||
//Cell is out, wires are exposed, remove MMI, produce damaged chassis, baleet original mob.
|
||||
if(!mmi)
|
||||
to_chat(user, "\The [src] has no brain to remove.")
|
||||
to_chat(user, "<span class='filter_notice'>\The [src] has no brain to remove.</span>")
|
||||
return
|
||||
|
||||
to_chat(user, "You jam the crowbar into the robot and begin levering [mmi].")
|
||||
to_chat(user, "<span class='filter_notice'>You jam the crowbar into the robot and begin levering [mmi].</span>")
|
||||
sleep(30)
|
||||
to_chat(user, "You damage some parts of the chassis, but eventually manage to rip out [mmi]!")
|
||||
to_chat(user, "<span class='filter_notice'>You damage some parts of the chassis, but eventually manage to rip out [mmi]!</span>")
|
||||
var/obj/item/robot_parts/robot_suit/C = new/obj/item/robot_parts/robot_suit(loc)
|
||||
C.l_leg = new/obj/item/robot_parts/l_leg(C)
|
||||
C.r_leg = new/obj/item/robot_parts/r_leg(C)
|
||||
@@ -594,7 +594,7 @@
|
||||
return
|
||||
var/datum/robot_component/C = components[remove]
|
||||
var/obj/item/robot_parts/robot_component/I = C.wrapped
|
||||
to_chat(user, "You remove \the [I].")
|
||||
to_chat(user, "<span class='filter_notice'>You remove \the [I].</span>")
|
||||
if(istype(I))
|
||||
I.brute = C.brute_damage
|
||||
I.burn = C.electronics_damage
|
||||
@@ -607,25 +607,25 @@
|
||||
|
||||
else
|
||||
if(locked)
|
||||
to_chat(user, "The cover is locked and cannot be opened.")
|
||||
to_chat(user, "<span class='filter_notice'>The cover is locked and cannot be opened.</span>")
|
||||
else
|
||||
to_chat(user, "You open the cover.")
|
||||
to_chat(user, "<span class='filter_notice'>You open the cover.</span>")
|
||||
opened = 1
|
||||
updateicon()
|
||||
|
||||
else if (istype(W, /obj/item/weapon/cell) && opened) // trying to put a cell inside
|
||||
var/datum/robot_component/C = components["power cell"]
|
||||
if(wiresexposed)
|
||||
to_chat(user, "Close the panel first.")
|
||||
to_chat(user, "<span class='filter_notice'>Close the panel first.</span>")
|
||||
else if(cell)
|
||||
to_chat(user, "There is a power cell already installed.")
|
||||
to_chat(user, "<span class='filter_notice'>There is a power cell already installed.</span>")
|
||||
else if(W.w_class != ITEMSIZE_NORMAL)
|
||||
to_chat(user, "\The [W] is too [W.w_class < ITEMSIZE_NORMAL ? "small" : "large"] to fit here.")
|
||||
to_chat(user, "<span class='filter_notice'>\The [W] is too [W.w_class < ITEMSIZE_NORMAL ? "small" : "large"] to fit here.</span>")
|
||||
else
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
cell = W
|
||||
to_chat(user, "You insert the power cell.")
|
||||
to_chat(user, "<span class='filter_notice'>You insert the power cell.</span>")
|
||||
|
||||
C.installed = 1
|
||||
C.wrapped = W
|
||||
@@ -638,11 +638,11 @@
|
||||
if (wiresexposed)
|
||||
wires.Interact(user)
|
||||
else
|
||||
to_chat(user, "You can't reach the wiring.")
|
||||
to_chat(user, "<span class='filter_notice'>You can't reach the wiring.</span>")
|
||||
|
||||
else if(W.is_screwdriver() && opened && !cell) // haxing
|
||||
wiresexposed = !wiresexposed
|
||||
to_chat(user, "The wires have been [wiresexposed ? "exposed" : "unexposed"]")
|
||||
to_chat(user, "<span class='filter_notice'>The wires have been [wiresexposed ? "exposed" : "unexposed"]</span>")
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
updateicon()
|
||||
|
||||
@@ -650,21 +650,21 @@
|
||||
if(radio)
|
||||
radio.attackby(W,user)//Push it to the radio to let it handle everything
|
||||
else
|
||||
to_chat(user, "Unable to locate a radio.")
|
||||
to_chat(user, "<span class='filter_notice'>Unable to locate a radio.</span>")
|
||||
updateicon()
|
||||
|
||||
else if(W.is_wrench() && opened && !cell)
|
||||
if(bolt)
|
||||
to_chat(user,"You begin removing \the [bolt].")
|
||||
to_chat(user,"<span class='filter_notice'>You begin removing \the [bolt].</span>")
|
||||
|
||||
if(do_after(user, 2 SECONDS, src))
|
||||
bolt.forceMove(get_turf(src))
|
||||
bolt = null
|
||||
|
||||
to_chat(user, "You remove \the [bolt].")
|
||||
to_chat(user, "<span class='filter_notice'>You remove \the [bolt].</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "There is no restraining bolt installed.")
|
||||
to_chat(user, "<span class='filter_notice'>There is no restraining bolt installed.</span>")
|
||||
|
||||
return
|
||||
|
||||
@@ -672,36 +672,36 @@
|
||||
if(radio)//sanityyyyyy
|
||||
radio.attackby(W,user)//GTFO, you have your own procs
|
||||
else
|
||||
to_chat(user, "Unable to locate a radio.")
|
||||
to_chat(user, "<span class='filter_notice'>Unable to locate a radio.</span>")
|
||||
|
||||
else if (W.GetID()) // trying to unlock the interface with an ID card
|
||||
if(emagged)//still allow them to open the cover
|
||||
to_chat(user, "The interface seems slightly damaged")
|
||||
to_chat(user, "<span class='filter_notice'>The interface seems slightly damaged.</span>")
|
||||
if(opened)
|
||||
to_chat(user, "You must close the cover to swipe an ID card.")
|
||||
to_chat(user, "<span class='filter_notice'>You must close the cover to swipe an ID card.</span>")
|
||||
else
|
||||
if(allowed(usr))
|
||||
locked = !locked
|
||||
to_chat(user, "You [ locked ? "lock" : "unlock"] [src]'s interface.")
|
||||
to_chat(user, "<span class='filter_notice'>You [ locked ? "lock" : "unlock"] [src]'s interface.</span>")
|
||||
updateicon()
|
||||
else
|
||||
to_chat(user, "<font color='red'>Access denied.</font>")
|
||||
to_chat(user, "<span class='filter_notice'><font color='red'>Access denied.</font></span>")
|
||||
|
||||
else if(istype(W, /obj/item/borg/upgrade/))
|
||||
var/obj/item/borg/upgrade/U = W
|
||||
if(!opened)
|
||||
to_chat(usr, "You must access the borgs internals!")
|
||||
to_chat(usr, "<span class='filter_notice'>You must access the borgs internals!</span>")
|
||||
else if(!src.module && U.require_module)
|
||||
to_chat(usr, "The borg must choose a module before it can be upgraded!")
|
||||
to_chat(usr, "<span class='filter_notice'>The borg must choose a module before it can be upgraded!</span>")
|
||||
else if(U.locked)
|
||||
to_chat(usr, "The upgrade is locked and cannot be used yet!")
|
||||
to_chat(usr, "<span class='filter_notice'>The upgrade is locked and cannot be used yet!</span>")
|
||||
else
|
||||
if(U.action(src))
|
||||
to_chat(usr, "You apply the upgrade to [src]!")
|
||||
to_chat(usr, "<span class='filter_notice'>You apply the upgrade to [src]!</span>")
|
||||
usr.drop_item()
|
||||
U.loc = src
|
||||
else
|
||||
to_chat(usr, "Upgrade error!")
|
||||
to_chat(usr, "<span class='filter_notice'>Upgrade error!</span>")
|
||||
|
||||
|
||||
else
|
||||
@@ -756,7 +756,7 @@
|
||||
cell.update_icon()
|
||||
cell.add_fingerprint(user)
|
||||
user.put_in_active_hand(cell)
|
||||
to_chat(user, "You remove \the [cell].")
|
||||
to_chat(user, "<span class='filter_notice'>You remove \the [cell].</span>")
|
||||
cell = null
|
||||
cell_component.wrapped = null
|
||||
cell_component.installed = 0
|
||||
@@ -764,7 +764,7 @@
|
||||
else if(cell_component.installed == -1)
|
||||
cell_component.installed = 0
|
||||
var/obj/item/broken_device = cell_component.wrapped
|
||||
to_chat(user, "You remove \the [broken_device].")
|
||||
to_chat(user, "<span class='filter_notice'>You remove \the [broken_device].</span>")
|
||||
user.put_in_active_hand(broken_device)
|
||||
|
||||
if(istype(user,/mob/living/carbon/human) && !opened)
|
||||
@@ -871,7 +871,7 @@
|
||||
|
||||
/mob/living/silicon/robot/proc/installed_modules()
|
||||
if(weapon_lock)
|
||||
to_chat(src, "<font color='red'>Weapon lock active, unable to use modules! Count:[weaponlock_time]</font>")
|
||||
to_chat(src, "<span class='filter_warning'><font color='red'>Weapon lock active, unable to use modules! Count:[weaponlock_time]</font></span>")
|
||||
return
|
||||
|
||||
if(!module)
|
||||
@@ -936,7 +936,7 @@
|
||||
return 1
|
||||
|
||||
if(activated(O))
|
||||
to_chat(src, "Already activated")
|
||||
to_chat(src, "<span class='filter_notice'>Already activated.</span>")
|
||||
return 1
|
||||
if(!module_state_1)
|
||||
module_state_1 = O
|
||||
@@ -960,7 +960,7 @@
|
||||
if(istype(module_state_3,/obj/item/borg/sight))
|
||||
sight_mode |= module_state_3:sight_mode
|
||||
else
|
||||
to_chat(src, "You need to disable a module first!")
|
||||
to_chat(src, "<span class='filter_notice'>You need to disable a module first!</span>")
|
||||
installed_modules()
|
||||
return 1
|
||||
|
||||
@@ -977,9 +977,9 @@
|
||||
module_state_3 = null
|
||||
contents -= O
|
||||
else
|
||||
to_chat(src, "Module isn't activated.")
|
||||
to_chat(src, "<span class='filter_notice'>Module isn't activated.</span>")
|
||||
else
|
||||
to_chat(src, "Module isn't activated")
|
||||
to_chat(src, "<span class='filter_notice'>Module isn't activated.</span>")
|
||||
installed_modules()
|
||||
return 1
|
||||
return
|
||||
@@ -1012,7 +1012,7 @@
|
||||
|
||||
if(R)
|
||||
R.UnlinkSelf()
|
||||
to_chat(R, "Buffers flushed and reset. Camera system shutdown. All systems operational.")
|
||||
to_chat(R, "<span class='filter_notice'>Buffers flushed and reset. Camera system shutdown. All systems operational.</span>")
|
||||
src.verbs -= /mob/living/silicon/robot/proc/ResetSecurityCodes
|
||||
|
||||
/mob/living/silicon/robot/proc/SetLockdown(var/state = 1)
|
||||
@@ -1093,7 +1093,7 @@
|
||||
|
||||
icon_selected = 1
|
||||
icon_selection_tries = 0
|
||||
to_chat(src, "Your icon has been set. You now require a module reset to change it.")
|
||||
to_chat(src, "<span class='filter_notice'>Your icon has been set. You now require a module reset to change it.</span>")
|
||||
|
||||
/mob/living/silicon/robot/proc/sensor_mode() //Medical/Security HUD controller for borgs
|
||||
set name = "Toggle Sensor Augmentation" //VOREStation Add
|
||||
@@ -1145,16 +1145,16 @@
|
||||
return // No point annoying the AI/s about renames and module resets for shells.
|
||||
switch(notifytype)
|
||||
if(ROBOT_NOTIFICATION_NEW_UNIT) //New Robot
|
||||
to_chat(connected_ai, "<br><br><span class='notice'>NOTICE - New [lowertext(braintype)] connection detected: <a href='byond://?src=\ref[connected_ai];track2=\ref[connected_ai];track=\ref[src]'>[name]</a></span><br>")
|
||||
to_chat(connected_ai, "<span class='filter_notice'><br><br><span class='notice'>NOTICE - New [lowertext(braintype)] connection detected: <a href='byond://?src=\ref[connected_ai];track2=\ref[connected_ai];track=\ref[src]'>[name]</a></span><br></span>")
|
||||
if(ROBOT_NOTIFICATION_NEW_MODULE) //New Module
|
||||
to_chat(connected_ai, "<br><br><span class='notice'>NOTICE - [braintype] module change detected: [name] has loaded the [first_arg].</span><br>")
|
||||
to_chat(connected_ai, "<span class='filter_notice'><br><br><span class='notice'>NOTICE - [braintype] module change detected: [name] has loaded the [first_arg].</span><br></span>")
|
||||
if(ROBOT_NOTIFICATION_MODULE_RESET)
|
||||
to_chat(connected_ai, "<br><br><span class='notice'>NOTICE - [braintype] module reset detected: [name] has unloaded the [first_arg].</span><br>")
|
||||
to_chat(connected_ai, "<span class='filter_notice'><br><br><span class='notice'>NOTICE - [braintype] module reset detected: [name] has unloaded the [first_arg].</span><br></span>")
|
||||
if(ROBOT_NOTIFICATION_NEW_NAME) //New Name
|
||||
if(first_arg != second_arg)
|
||||
to_chat(connected_ai, "<br><br><span class='notice'>NOTICE - [braintype] reclassification detected: [first_arg] is now designated as [second_arg].</span><br>")
|
||||
to_chat(connected_ai, "<span class='filter_notice'><br><br><span class='notice'>NOTICE - [braintype] reclassification detected: [first_arg] is now designated as [second_arg].</span><br></span>")
|
||||
if(ROBOT_NOTIFICATION_AI_SHELL) //New Shell
|
||||
to_chat(connected_ai, "<br><br><span class='notice'>NOTICE - New AI shell detected: <a href='?src=[REF(connected_ai)];track2=[html_encode(name)]'>[name]</a></span><br>")
|
||||
to_chat(connected_ai, "<span class='filter_notice'><br><br><span class='notice'>NOTICE - New AI shell detected: <a href='?src=[REF(connected_ai)];track2=[html_encode(name)]'>[name]</a></span><br></span>")
|
||||
|
||||
/mob/living/silicon/robot/proc/disconnect_from_ai()
|
||||
if(connected_ai)
|
||||
@@ -1174,29 +1174,29 @@
|
||||
if(!opened)//Cover is closed
|
||||
if(locked)
|
||||
if(prob(90))
|
||||
to_chat(user, "You emag the cover lock.")
|
||||
to_chat(user, "<span class='filter_notice'>You emag the cover lock.</span>")
|
||||
locked = 0
|
||||
else
|
||||
to_chat(user, "You fail to emag the cover lock.")
|
||||
to_chat(src, "Hack attempt detected.")
|
||||
to_chat(user, "<span class='filter_warning'>You fail to emag the cover lock.</span>")
|
||||
to_chat(src, "<span class='filter_warning'>Hack attempt detected.</span>")
|
||||
|
||||
if(shell) // A warning to Traitors who may not know that emagging AI shells does not slave them.
|
||||
to_chat(user, span("warning", "[src] seems to be controlled remotely! Emagging the interface may not work as expected."))
|
||||
to_chat(user, "<span class='warning'>[src] seems to be controlled remotely! Emagging the interface may not work as expected.</span>")
|
||||
return 1
|
||||
else
|
||||
to_chat(user, "The cover is already unlocked.")
|
||||
to_chat(user, "<span class='filter_notice'>The cover is already unlocked.</span>")
|
||||
return
|
||||
|
||||
if(opened)//Cover is open
|
||||
if(emagged) return//Prevents the X has hit Y with Z message also you cant emag them twice
|
||||
if(wiresexposed)
|
||||
to_chat(user, "You must close the panel first")
|
||||
to_chat(user, "<span class='filter_notice'>You must close the panel first.</span>")
|
||||
return
|
||||
|
||||
|
||||
// The block of code below is from TG. Feel free to replace with a better result if desired.
|
||||
if(shell) // AI shells cannot be emagged, so we try to make it look like a standard reset. Smart players may see through this, however.
|
||||
to_chat(user, span("danger", "[src] is remotely controlled! Your emag attempt has triggered a system reset instead!"))
|
||||
to_chat(user, "<span class='danger'>[src] is remotely controlled! Your emag attempt has triggered a system reset instead!</span>")
|
||||
log_game("[key_name(user)] attempted to emag an AI shell belonging to [key_name(src) ? key_name(src) : connected_ai]. The shell has been reset as a result.")
|
||||
module_reset()
|
||||
return
|
||||
@@ -1206,7 +1206,7 @@
|
||||
emagged = 1
|
||||
lawupdate = 0
|
||||
disconnect_from_ai()
|
||||
to_chat(user, "You emag [src]'s interface.")
|
||||
to_chat(user, "<span class='filter_notice'>You emag [src]'s interface.</span>")
|
||||
message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.")
|
||||
log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.")
|
||||
clear_supplied_laws()
|
||||
@@ -1241,8 +1241,8 @@
|
||||
to_chat(src, "<span class='danger'>ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands.</span>")
|
||||
updateicon()
|
||||
else
|
||||
to_chat(user, "You fail to hack [src]'s interface.")
|
||||
to_chat(src, "Hack attempt detected.")
|
||||
to_chat(user, "<span class='filter_warning'>You fail to hack [src]'s interface.</span>")
|
||||
to_chat(src, "<span class='filter_warning'>Hack attempt detected.</span>")
|
||||
return 1
|
||||
return
|
||||
|
||||
|
||||
@@ -79,11 +79,11 @@
|
||||
cell.charge -= cost
|
||||
if(cell.charge <= 0)
|
||||
cell.charge = 0
|
||||
to_chat(src, "<font color='red'>Your shield has overloaded!</font>")
|
||||
to_chat(src, "<span class='filter_warning'><font color='red'>Your shield has overloaded!</font></span>")
|
||||
else
|
||||
brute -= absorb_brute
|
||||
burn -= absorb_burn
|
||||
to_chat(src, "<font color='red'>Your shield absorbs some of the impact!</font>")
|
||||
to_chat(src, "<span class='filter_combat'><font color='red'>Your shield absorbs some of the impact!</font></span>")
|
||||
|
||||
if(!emp)
|
||||
var/datum/robot_component/armour/A = get_armour()
|
||||
@@ -126,11 +126,11 @@
|
||||
cell.charge -= cost
|
||||
if(cell.charge <= 0)
|
||||
cell.charge = 0
|
||||
to_chat(src, "<font color='red'>Your shield has overloaded!</font>")
|
||||
to_chat(src, "<span class='filter_warning'><font color='red'>Your shield has overloaded!</font></span>")
|
||||
else
|
||||
brute -= absorb_brute
|
||||
burn -= absorb_burn
|
||||
to_chat(src, "<font color='red'>Your shield absorbs some of the impact!</font>")
|
||||
to_chat(src, "<span class='filter_combat'><font color='red'>Your shield absorbs some of the impact!</font></span>")
|
||||
|
||||
var/datum/robot_component/armour/A = get_armour()
|
||||
if(A)
|
||||
|
||||
@@ -25,12 +25,15 @@
|
||||
if(loaded_item)
|
||||
var/confirm = tgui_alert(user, "This will destroy the item inside forever. Are you sure?","Confirm Analyze",list("Yes","No"))
|
||||
if(confirm == "Yes" && !QDELETED(loaded_item)) //This is pretty copypasta-y
|
||||
to_chat(user, "You activate the analyzer's microlaser, analyzing \the [loaded_item] and breaking it down.")
|
||||
to_chat(user, "<span class='filter_notice'>You activate the analyzer's microlaser, analyzing \the [loaded_item] and breaking it down.</span>")
|
||||
flick("portable_analyzer_scan", src)
|
||||
playsound(src, 'sound/items/Welder2.ogg', 50, 1)
|
||||
var/research_levels = list()
|
||||
for(var/T in loaded_item.origin_tech)
|
||||
files.UpdateTech(T, loaded_item.origin_tech[T])
|
||||
to_chat(user, "\The [loaded_item] had level [loaded_item.origin_tech[T]] in [CallTechName(T)].")
|
||||
research_levels += "\The [loaded_item] had level [loaded_item.origin_tech[T]] in [CallTechName(T)]."
|
||||
if (length(research_levels))
|
||||
to_chat(user, "<span class='filter_notice'>[jointext(research_levels,"<br>")]</span>")
|
||||
loaded_item = null
|
||||
for(var/obj/I in contents)
|
||||
for(var/mob/M in I.contents)
|
||||
@@ -51,7 +54,7 @@
|
||||
else
|
||||
return
|
||||
else
|
||||
to_chat(user, "The [src] is empty. Put something inside it first.")
|
||||
to_chat(user, "<span class='filter_notice'>The [src] is empty. Put something inside it first.</span>")
|
||||
if(response == "Sync")
|
||||
var/success = 0
|
||||
for(var/obj/machinery/r_n_d/server/S in machines)
|
||||
@@ -62,10 +65,10 @@
|
||||
success = 1
|
||||
files.RefreshResearch()
|
||||
if(success)
|
||||
to_chat(user, "You connect to the research server, push your data upstream to it, then pull the resulting merged data from the master branch.")
|
||||
to_chat(user, "<span class='filter_notice'>You connect to the research server, push your data upstream to it, then pull the resulting merged data from the master branch.</span>")
|
||||
playsound(src, 'sound/machines/twobeep.ogg', 50, 1)
|
||||
else
|
||||
to_chat(user, "Reserch server ping response timed out. Unable to connect. Please contact the system administrator.")
|
||||
to_chat(user, "<span class='filter_notice'>Reserch server ping response timed out. Unable to connect. Please contact the system administrator.</span>")
|
||||
playsound(src, 'sound/machines/buzz-two.ogg', 50, 1)
|
||||
if(response == "Eject")
|
||||
if(loaded_item)
|
||||
@@ -74,7 +77,7 @@
|
||||
icon_state = initial(icon_state)
|
||||
loaded_item = null
|
||||
else
|
||||
to_chat(user, "The [src] is already empty.")
|
||||
to_chat(user, "<span class='filter_notice'>The [src] is already empty.</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/portable_destructive_analyzer/afterattack(var/atom/target, var/mob/living/user, proximity)
|
||||
@@ -86,13 +89,13 @@
|
||||
return
|
||||
if(istype(target,/obj/item))
|
||||
if(loaded_item)
|
||||
to_chat(user, "Your [src] already has something inside. Analyze or eject it first.")
|
||||
to_chat(user, "<span class='filter_notice'>Your [src] already has something inside. Analyze or eject it first.</span>")
|
||||
return
|
||||
var/obj/item/I = target
|
||||
I.loc = src
|
||||
loaded_item = I
|
||||
for(var/mob/M in viewers())
|
||||
M.show_message(text("<span class='notice'>[user] adds the [I] to the [src].</span>"), 1)
|
||||
M.show_message("<span class='notice'>[user] adds the [I] to the [src].</span>", 1)
|
||||
desc = initial(desc) + "<br>It is holding \the [loaded_item]."
|
||||
flick("portable_analyzer_load", src)
|
||||
icon_state = "portable_analyzer_full"
|
||||
@@ -171,7 +174,7 @@
|
||||
else if(T.dead) //It's probably dead otherwise.
|
||||
T.remove_dead(user)
|
||||
else
|
||||
to_chat(user, "Harvesting \a [target] is not the purpose of this tool. [src] is for plants being grown.")
|
||||
to_chat(user, "<span class='filter_notice'>Harvesting \a [target] is not the purpose of this tool. [src] is for plants being grown.</span>")
|
||||
|
||||
// A special tray for the service droid. Allow droid to pick up and drop items as if they were using the tray normally
|
||||
// Click on table to unload, click on item to load. Otherwise works identically to a tray.
|
||||
@@ -214,7 +217,7 @@
|
||||
add_overlay(image("icon" = I.icon, "icon_state" = I.icon_state, "layer" = 30 + I.layer))
|
||||
addedSomething = 1
|
||||
if ( addedSomething )
|
||||
user.visible_message("<font color='blue'>[user] loads some items onto their service tray.</font>")
|
||||
user.visible_message("<span class='notice'>[user] loads some items onto their service tray.</span>")
|
||||
|
||||
return
|
||||
|
||||
@@ -254,9 +257,9 @@
|
||||
sleep(rand(2,4))
|
||||
if ( droppedSomething )
|
||||
if ( foundtable )
|
||||
user.visible_message("<font color='blue'>[user] unloads their service tray.</font>")
|
||||
user.visible_message("<span class='notice'>[user] unloads their service tray.</span>")
|
||||
else
|
||||
user.visible_message("<font color='blue'>[user] drops all the items on their tray.</font>")
|
||||
user.visible_message("<span class='notice'>[user] drops all the items on their tray.</span>")
|
||||
|
||||
return ..()
|
||||
|
||||
@@ -290,7 +293,7 @@
|
||||
mode = 2
|
||||
else
|
||||
mode = 1
|
||||
to_chat(user, "Changed printing mode to '[mode == 2 ? "Rename Paper" : "Write Paper"]'")
|
||||
to_chat(user, "<span class='filter_notice'>Changed printing mode to '[mode == 2 ? "Rename Paper" : "Write Paper"]'</span>")
|
||||
|
||||
return
|
||||
|
||||
@@ -338,7 +341,7 @@
|
||||
deploy_paper(get_turf(src))
|
||||
|
||||
/obj/item/weapon/form_printer/proc/deploy_paper(var/turf/T)
|
||||
T.visible_message("<font color='blue'>\The [src.loc] dispenses a sheet of crisp white paper.</font>")
|
||||
T.visible_message("<span class='notice'>\The [src.loc] dispenses a sheet of crisp white paper.</span>")
|
||||
new /obj/item/weapon/paper(T)
|
||||
|
||||
|
||||
@@ -378,7 +381,7 @@
|
||||
overload_time = 0
|
||||
|
||||
var/mob/living/user = src.loc
|
||||
user.visible_message("<span class='danger'>[user]'s shield reactivates!</span>", "<span class='danger'>Your shield reactivates!.</span>")
|
||||
user.visible_message("<span class='danger'>[user]'s shield reactivates!</span>", "<span class='danger'>Your shield reactivates!</span>")
|
||||
user.update_icon()
|
||||
|
||||
/obj/item/borg/combat/shield/proc/adjust_flash_count(var/mob/living/user, amount)
|
||||
@@ -392,7 +395,7 @@
|
||||
|
||||
/obj/item/borg/combat/shield/proc/overload(var/mob/living/user)
|
||||
active = 0
|
||||
user.visible_message("<span class='danger'>[user]'s shield destabilizes!</span>", "<span class='danger'>Your shield destabilizes!.</span>")
|
||||
user.visible_message("<span class='danger'>[user]'s shield destabilizes!</span>", "<span class='danger'>Your shield destabilizes!</span>")
|
||||
user.update_icon()
|
||||
overload_time = world.time
|
||||
|
||||
@@ -438,14 +441,14 @@
|
||||
|
||||
/obj/item/weapon/inflatable_dispenser/attack_self()
|
||||
mode = !mode
|
||||
to_chat(usr, "You set \the [src] to deploy [mode ? "doors" : "walls"].")
|
||||
to_chat(usr, "<span class='filter_notice'>You set \the [src] to deploy [mode ? "doors" : "walls"].</span>")
|
||||
|
||||
/obj/item/weapon/inflatable_dispenser/afterattack(var/atom/A, var/mob/user)
|
||||
..(A, user)
|
||||
if(!user)
|
||||
return
|
||||
if(!user.Adjacent(A))
|
||||
to_chat(user, "You can't reach!")
|
||||
to_chat(user, "<span class='filter_notice'>You can't reach!</span>")
|
||||
return
|
||||
if(istype(A, /turf))
|
||||
try_deploy_inflatable(A, user)
|
||||
@@ -455,7 +458,7 @@
|
||||
/obj/item/weapon/inflatable_dispenser/proc/try_deploy_inflatable(var/turf/T, var/mob/living/user)
|
||||
if(mode) // Door deployment
|
||||
if(!stored_doors)
|
||||
to_chat(user, "\The [src] is out of doors!")
|
||||
to_chat(user, "<span class='filter_notice'>\The [src] is out of doors!</span>")
|
||||
return
|
||||
|
||||
if(T && istype(T))
|
||||
@@ -464,7 +467,7 @@
|
||||
|
||||
else // Wall deployment
|
||||
if(!stored_walls)
|
||||
to_chat(user, "\The [src] is out of walls!")
|
||||
to_chat(user, "<span class='filter_notice'>\The [src] is out of walls!</span>")
|
||||
return
|
||||
|
||||
if(T && istype(T))
|
||||
@@ -472,40 +475,40 @@
|
||||
stored_walls--
|
||||
|
||||
playsound(T, 'sound/items/zip.ogg', 75, 1)
|
||||
to_chat(user, "You deploy the inflatable [mode ? "door" : "wall"]!")
|
||||
to_chat(user, "<span class='filter_notice'>You deploy the inflatable [mode ? "door" : "wall"]!</span>")
|
||||
|
||||
/obj/item/weapon/inflatable_dispenser/proc/pick_up(var/obj/A, var/mob/living/user)
|
||||
if(istype(A, /obj/structure/inflatable))
|
||||
if(!istype(A, /obj/structure/inflatable/door))
|
||||
if(stored_walls >= max_walls)
|
||||
to_chat(user, "\The [src] is full.")
|
||||
to_chat(user, "<span class='filter_notice'>\The [src] is full.</span>")
|
||||
return
|
||||
stored_walls++
|
||||
qdel(A)
|
||||
else
|
||||
if(stored_doors >= max_doors)
|
||||
to_chat(user, "\The [src] is full.")
|
||||
to_chat(user, "<span class='filter_notice'>\The [src] is full.</span>")
|
||||
return
|
||||
stored_doors++
|
||||
qdel(A)
|
||||
playsound(src, 'sound/machines/hiss.ogg', 75, 1)
|
||||
visible_message("\The [user] deflates \the [A] with \the [src]!")
|
||||
visible_message("<span class='filter_notice'>\The [user] deflates \the [A] with \the [src]!</span>")
|
||||
return
|
||||
if(istype(A, /obj/item/inflatable))
|
||||
if(!istype(A, /obj/item/inflatable/door))
|
||||
if(stored_walls >= max_walls)
|
||||
to_chat(user, "\The [src] is full.")
|
||||
to_chat(user, "<span class='filter_notice'>\The [src] is full.</span>")
|
||||
return
|
||||
stored_walls++
|
||||
qdel(A)
|
||||
else
|
||||
if(stored_doors >= max_doors)
|
||||
to_chat(usr, "\The [src] is full!")
|
||||
to_chat(usr, "<span class='filter_notice'>\The [src] is full!</span>")
|
||||
return
|
||||
stored_doors++
|
||||
qdel(A)
|
||||
visible_message("\The [user] picks up \the [A] with \the [src]!")
|
||||
visible_message("<span class='filter_notice'>\The [user] picks up \the [A] with \the [src]!</span>")
|
||||
return
|
||||
|
||||
to_chat(user, "You fail to pick up \the [A] with \the [src]")
|
||||
to_chat(user, "<span class='filter_notice'>You fail to pick up \the [A] with \the [src].</span>")
|
||||
return
|
||||
|
||||
@@ -196,9 +196,9 @@
|
||||
amount = water.energy
|
||||
water.use_charge(amount)
|
||||
E.reagents.add_reagent("water", amount)
|
||||
to_chat(src, "You refill the extinguisher using your water reserves.")
|
||||
to_chat(src, "<span class='filter_notice'>You refill the extinguisher using your water reserves.</span>")
|
||||
else
|
||||
to_chat(src, "Insufficient water reserves.")
|
||||
to_chat(src, "<span class='filter_notice'>Insufficient water reserves.</span>")
|
||||
|
||||
//RIDING
|
||||
/datum/riding/dogborg
|
||||
|
||||
@@ -73,9 +73,9 @@
|
||||
/*Radios "filter out" this conversation channel so we don't need to account for them.
|
||||
This is another way of saying that we won't bother dealing with them.*/
|
||||
var/list/combined = combine_message(message_pieces, verb, src)
|
||||
to_chat(src, "<i><span class='game say'>Holopad transmitted, <span class='name'>[real_name]</span> [combined["formatted"]]</span></i>")
|
||||
to_chat(src, "<span class='game say'><i>Holopad transmitted, <span class='name'>[real_name]</span> [combined["formatted"]]</i></span>")
|
||||
else
|
||||
to_chat(src, "No holopad connected.")
|
||||
to_chat(src, "<span class='filter_notice'>No holopad connected.</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
var/obj/machinery/hologram/holopad/T = src.holo
|
||||
if(T && T.masters[src])
|
||||
var/rendered = "<span class='game say'><span class='name'>[name]</span> <span class='message'>[message]</span></span>"
|
||||
to_chat(src, "<i><span class='game say'>Holopad action relayed, <span class='name'>[real_name]</span> <span class='message'>[message]</span></span></i>")
|
||||
to_chat(src, "<span class='game say'><i>Holopad action relayed, <span class='name'>[real_name]</span> <span class='message'>[message]</span></i></span>")
|
||||
var/obj/effect/overlay/aiholo/hologram = T.masters[src] //VOREStation Add for people in the hologram to hear the messages
|
||||
|
||||
//var/obj/effect/overlay/hologram = T.masters[src] //VOREStation edit. Done above.
|
||||
@@ -111,7 +111,7 @@
|
||||
log_emote("(HPAD) [message]", src)
|
||||
|
||||
else //This shouldn't occur, but better safe then sorry.
|
||||
to_chat(src, "No holopad connected.")
|
||||
to_chat(src, "<span class='filter_notice'>No holopad connected.</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
@@ -348,20 +348,20 @@
|
||||
to_chat(src, "\The [A.alarm_name()].")
|
||||
|
||||
if(alarm_raised)
|
||||
to_chat(src, "<A HREF=?src=\ref[src];showalerts=1>\[Show Alerts\]</A>")
|
||||
to_chat(src, "<span class='filter_notice'><A HREF=?src=\ref[src];showalerts=1>\[Show Alerts\]</A></span>")
|
||||
|
||||
for(var/datum/alarm_handler/AH in queued_alarms)
|
||||
var/list/alarms = queued_alarms[AH]
|
||||
alarms.Cut()
|
||||
|
||||
/mob/living/silicon/proc/raised_alarm(var/datum/alarm/A)
|
||||
to_chat(src, "[A.alarm_name()]!")
|
||||
to_chat(src, "<span class='filter_warning'>[A.alarm_name()]!</span>")
|
||||
|
||||
/mob/living/silicon/ai/raised_alarm(var/datum/alarm/A)
|
||||
var/cameratext = ""
|
||||
for(var/obj/machinery/camera/C in A.cameras())
|
||||
cameratext += "[(cameratext == "")? "" : "|"]<A HREF=?src=\ref[src];switchcamera=\ref[C]>[C.c_tag]</A>"
|
||||
to_chat(src, "[A.alarm_name()]! ([(cameratext)? cameratext : "No Camera"])")
|
||||
to_chat(src, "<span class='filter_warning'>[A.alarm_name()]! ([(cameratext)? cameratext : "No Camera"])</span>")
|
||||
|
||||
|
||||
/mob/living/silicon/proc/is_traitor()
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -474,13 +474,11 @@
|
||||
|
||||
for(var/mob/M as anything in m_viewers)
|
||||
if(M)
|
||||
if(isobserver(M))
|
||||
message = "[message] ([ghost_follow_link(src, M)])"
|
||||
if(isnewplayer(M))
|
||||
continue
|
||||
if(M.stat == UNCONSCIOUS || M.sleeping > 0)
|
||||
continue
|
||||
to_chat(M, message)
|
||||
to_chat(M, "<span class='filter_say'>[isobserver(M) ? "[message] ([ghost_follow_link(src, M)])" : message]</span>")
|
||||
log_emote(message, src)
|
||||
|
||||
/mob/verb/select_speech_bubble()
|
||||
|
||||
@@ -398,7 +398,7 @@
|
||||
|
||||
/atom/movable/proc/find_fall_target(var/turf/oldloc, var/turf/landing)
|
||||
if(isopenspace(oldloc))
|
||||
oldloc.visible_message("\The [src] falls down through \the [oldloc]!", "You hear something falling through the air.")
|
||||
oldloc.visible_message("<span class='notice'>\The [src] falls down through \the [oldloc]!</span>", "<span class='notice'>You hear something falling through the air.</span>")
|
||||
|
||||
// If the turf has density, we give it first dibs
|
||||
if (landing.density && landing.CheckFall(src))
|
||||
|
||||
@@ -383,7 +383,7 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable
|
||||
|
||||
last_notification = message // TGUI Hook
|
||||
|
||||
to_chat(human,"<b>\[\icon[src.big_icon][bicon(src.big_icon)]NIF\]</b> displays, \"<span class='[alert ? "danger" : "notice"]'>[message]</span>\"")
|
||||
to_chat(human,"<span class='filter_nif'><b>\[\icon[src.big_icon][bicon(src.big_icon)]NIF\]</b> displays, \"<span class='[alert ? "danger" : "notice"]'>[message]</span>\"</span>")
|
||||
if(prob(1)) human.visible_message("<span class='notice'>\The [human] [pick(look_messages)].</span>")
|
||||
if(alert)
|
||||
human << bad_sound
|
||||
|
||||
@@ -270,7 +270,7 @@
|
||||
var/newlaws = tgui_input_text(user, "Please Input Laws", "Compliance Laws", laws, multiline = TRUE, prevent_enter = TRUE)
|
||||
newlaws = sanitize(newlaws,2048)
|
||||
if(newlaws)
|
||||
to_chat(user,"You set the laws to: <br><span class='notice'>[newlaws]</span>")
|
||||
to_chat(user,"<span class='filter_notice'>You set the laws to: <br><span class='notice'>[newlaws]</span></span>")
|
||||
laws = newlaws
|
||||
|
||||
/obj/item/weapon/disk/nifsoft/compliance/extra_params()
|
||||
|
||||
@@ -72,11 +72,11 @@
|
||||
/datum/nifsoft/soulcatcher/proc/notify_into(var/message)
|
||||
var/sound = nif.good_sound
|
||||
|
||||
to_chat(nif.human,"<b>\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\]</b> <b>Soulcatcher</b> displays, \"<span class='notice nif'>[message]</span>\"")
|
||||
to_chat(nif.human,"<span class='nif'><b>\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\]</b> <b>Soulcatcher</b> displays, \"<span class='notice nif'>[message]</span>\"</span>")
|
||||
nif.human << sound
|
||||
|
||||
for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs)
|
||||
to_chat(CS,"<b>\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\]</b> <b>Soulcatcher</b> displays, \"<span class='notice nif'>[message]</span>\"")
|
||||
to_chat(CS,"<span class='nif'><b>\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\]</b> <b>Soulcatcher</b> displays, \"<span class='notice nif'>[message]</span>\"</span>")
|
||||
CS << sound
|
||||
|
||||
/datum/nifsoft/soulcatcher/proc/say_into(var/message, var/mob/living/sender, var/mob/eyeobj)
|
||||
@@ -84,13 +84,13 @@
|
||||
|
||||
//AR Projecting
|
||||
if(eyeobj)
|
||||
sender.eyeobj.visible_message("<b>[sender_name]</b> says, \"[message]\"")
|
||||
sender.eyeobj.visible_message("<span class='game say'><b>[sender_name]</b> says, \"[message]\"</span>")
|
||||
|
||||
//Not AR Projecting
|
||||
else
|
||||
to_chat(nif.human,"<span class='game say nif'><b>\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\]</b> <b>[sender_name]</b> speaks, \"[message]\"</span>")
|
||||
to_chat(nif.human,"<span class='nif'><b>\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\]</b> <b>[sender_name]</b> speaks, \"[message]\"</span>")
|
||||
for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs)
|
||||
to_chat(CS,"<span class='game say nif'><b>\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\]</b> <b>[sender_name]</b> speaks, \"[message]\"</span>")
|
||||
to_chat(CS,"<span class='nif'><b>\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\]</b> <b>[sender_name]</b> speaks, \"[message]\"</span>")
|
||||
|
||||
log_nsay(message,nif.human.real_name,sender)
|
||||
|
||||
@@ -99,13 +99,13 @@
|
||||
|
||||
//AR Projecting
|
||||
if(eyeobj)
|
||||
sender.eyeobj.visible_message("[sender_name] [message]")
|
||||
sender.eyeobj.visible_message("<span class='emote'>[sender_name] [message]</span>")
|
||||
|
||||
//Not AR Projecting
|
||||
else
|
||||
to_chat(nif.human,"<span class='emote nif'><b>\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\]</b> <b>[sender_name]</b> [message]</span>")
|
||||
to_chat(nif.human,"<span class='nif'><b>\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\]</b> <b>[sender_name]</b> [message]</span>")
|
||||
for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs)
|
||||
to_chat(CS,"<span class='emote nif'><b>\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\]</b> <b>[sender_name]</b> [message]</span>")
|
||||
to_chat(CS,"<span class='nif'><b>\[\icon[nif.big_icon][bicon(nif.big_icon)]NIF\]</b> <b>[sender_name]</b> [message]</span>")
|
||||
|
||||
log_nme(message,nif.human.real_name,sender)
|
||||
|
||||
|
||||
@@ -158,9 +158,9 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid).
|
||||
materials[S.material.name] += amnt
|
||||
S.use(1)
|
||||
count++
|
||||
to_chat(user, "You insert [count] [sname] into the fabricator.")
|
||||
to_chat(user, "<span class='filter_notice'>You insert [count] [sname] into the fabricator.</span>")
|
||||
else
|
||||
to_chat(user, "The fabricator cannot hold more [sname].")
|
||||
to_chat(user, "<span class='filter_notice'>The fabricator cannot hold more [sname].</span>")
|
||||
busy = 0
|
||||
|
||||
updateUsrDialog()
|
||||
|
||||
@@ -143,7 +143,7 @@ var/global/list/obj/machinery/message_server/message_servers = list()
|
||||
|
||||
/obj/machinery/message_server/attack_hand(user as mob)
|
||||
// to_chat(user, "<font color='blue'>There seem to be some parts missing from this server. They should arrive on the station in a few days, give or take a few CentCom delays.</font>")
|
||||
to_chat(user, "You toggle PDA message passing from [active ? "On" : "Off"] to [active ? "Off" : "On"]")
|
||||
to_chat(user, "<span class='filter_notice'>You toggle PDA message passing from [active ? "On" : "Off"] to [active ? "Off" : "On"].</span>")
|
||||
active = !active
|
||||
update_icon()
|
||||
|
||||
@@ -155,7 +155,7 @@ var/global/list/obj/machinery/message_server/message_servers = list()
|
||||
spamfilter_limit += round(MESSAGE_SERVER_DEFAULT_SPAM_LIMIT / 2)
|
||||
user.drop_item()
|
||||
qdel(O)
|
||||
to_chat(user, "You install additional memory and processors into message server. Its filtering capabilities been enhanced.")
|
||||
to_chat(user, "<span class='filter_notice'>You install additional memory and processors into message server. Its filtering capabilities been enhanced.</span>")
|
||||
else
|
||||
..(O, user)
|
||||
|
||||
|
||||
@@ -168,9 +168,9 @@
|
||||
materials[S.material.name] += amnt
|
||||
S.use(1)
|
||||
count++
|
||||
to_chat(user, "You insert [count] [sname] into the fabricator.")
|
||||
to_chat(user, "<span class='filter_notice'>You insert [count] [sname] into the fabricator.</span>")
|
||||
else
|
||||
to_chat(user, "The fabricator cannot hold more [sname].")
|
||||
to_chat(user, "<span class='filter_notice'>The fabricator cannot hold more [sname].</span>")
|
||||
busy = 0
|
||||
|
||||
var/stacktype = S.type
|
||||
|
||||
@@ -119,7 +119,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
//Loading a disk into it.
|
||||
if(istype(D, /obj/item/weapon/disk))
|
||||
if(t_disk || d_disk)
|
||||
to_chat(user, "A disk is already loaded into the machine.")
|
||||
to_chat(user, "<span class='filter_notice'>A disk is already loaded into the machine.</span>")
|
||||
return
|
||||
|
||||
if(istype(D, /obj/item/weapon/disk/tech_disk))
|
||||
|
||||
@@ -42,8 +42,8 @@
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
user.visible_message("[user] begins to cut through [target]'s [affected.encased] with \the [tool].", \
|
||||
"You begin to cut through [target]'s [affected.encased] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] begins to cut through [target]'s [affected.encased] with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You begin to cut through [target]'s [affected.encased] with \the [tool].</span>")
|
||||
target.custom_pain("Something hurts horribly in your [affected.name]!", 60)
|
||||
..()
|
||||
|
||||
@@ -93,8 +93,8 @@
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
var/msg = "[user] starts to force open the [affected.encased] in [target]'s [affected.name] with \the [tool]."
|
||||
var/self_msg = "You start to force open the [affected.encased] in [target]'s [affected.name] with \the [tool]."
|
||||
var/msg = "<span class='filter_notice'>[user] starts to force open the [affected.encased] in [target]'s [affected.name] with \the [tool].</span>"
|
||||
var/self_msg = "<span class='filter_notice'>You start to force open the [affected.encased] in [target]'s [affected.name] with \the [tool].</span>"
|
||||
user.visible_message(msg, self_msg)
|
||||
target.custom_pain("Something hurts horribly in your [affected.name]!", 40)
|
||||
..()
|
||||
@@ -147,8 +147,8 @@
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
var/msg = "[user] starts bending [target]'s [affected.encased] back into place with \the [tool]."
|
||||
var/self_msg = "You start bending [target]'s [affected.encased] back into place with \the [tool]."
|
||||
var/msg = "<span class='filter_notice'>[user] starts bending [target]'s [affected.encased] back into place with \the [tool].</span>"
|
||||
var/self_msg = "<span class='filter_notice'>You start bending [target]'s [affected.encased] back into place with \the [tool].</span>"
|
||||
user.visible_message(msg, self_msg)
|
||||
target.custom_pain("Something hurts horribly in your [affected.name]!", 100)
|
||||
..()
|
||||
@@ -206,8 +206,8 @@
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
var/msg = "[user] starts applying \the [tool] to [target]'s [affected.encased]."
|
||||
var/self_msg = "You start applying \the [tool] to [target]'s [affected.encased]."
|
||||
var/msg = "<span class='filter_notice'>[user] starts applying \the [tool] to [target]'s [affected.encased].</span>"
|
||||
var/self_msg = "<span class='filter_notice'>You start applying \the [tool] to [target]'s [affected.encased].</span>"
|
||||
user.visible_message(msg, self_msg)
|
||||
target.custom_pain("Something hurts horribly in your [affected.name]!", 100)
|
||||
..()
|
||||
@@ -249,8 +249,8 @@
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
user.visible_message("[user] begins to open [target]'s [affected.encased] with \the [tool].", \
|
||||
"You begin to open [target]'s [affected.encased] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] begins to open [target]'s [affected.encased] with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You begin to open [target]'s [affected.encased] with \the [tool].</span>")
|
||||
target.custom_pain("Something hurts horribly in your [affected.name]!", 60)
|
||||
..()
|
||||
|
||||
@@ -299,8 +299,8 @@
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
var/msg = "[user] starts sealing \the [target]'s [affected.encased] with \the [tool]."
|
||||
var/self_msg = "You start sealing \the [target]'s [affected.encased] with \the [tool]."
|
||||
var/msg = "<span class='filter_notice'>[user] starts sealing \the [target]'s [affected.encased] with \the [tool].</span>"
|
||||
var/self_msg = "<span class='filter_notice'>You start sealing \the [target]'s [affected.encased] with \the [tool].</span>"
|
||||
user.visible_message(msg, self_msg)
|
||||
target.custom_pain("Something hurts horribly in your [affected.name]!", 100)
|
||||
..()
|
||||
|
||||
@@ -38,8 +38,8 @@
|
||||
return ..() && target_zone == O_MOUTH && target.op_stage.face == 0
|
||||
|
||||
/datum/surgery_step/generic/cut_face/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts to cut open [target]'s face and neck with \the [tool].", \
|
||||
"You start to cut open [target]'s face and neck with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts to cut open [target]'s face and neck with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start to cut open [target]'s face and neck with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/generic/cut_face/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -73,8 +73,8 @@
|
||||
return ..() && target.op_stage.face == 1
|
||||
|
||||
/datum/surgery_step/face/mend_vocal/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts mending [target]'s vocal cords with \the [tool].", \
|
||||
"You start mending [target]'s vocal cords with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts mending [target]'s vocal cords with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start mending [target]'s vocal cords with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/face/mend_vocal/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -107,8 +107,8 @@
|
||||
return ..() && target.op_stage.face == 2
|
||||
|
||||
/datum/surgery_step/face/fix_face/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts pulling the skin on [target]'s face back in place with \the [tool].", \
|
||||
"You start pulling the skin on [target]'s face back in place with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts pulling the skin on [target]'s face back in place with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start pulling the skin on [target]'s face back in place with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/face/fix_face/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
@@ -47,8 +47,8 @@
|
||||
|
||||
/datum/surgery_step/generic/cut_open/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts the incision on [target]'s [affected.name] with \the [tool].", \
|
||||
"You start the incision on [target]'s [affected.name] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts the incision on [target]'s [affected.name] with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start the incision on [target]'s [affected.name] with \the [tool].</span>")
|
||||
target.custom_pain("You feel a horrible pain as if from a sharp knife in your [affected.name]!", 40)
|
||||
..()
|
||||
|
||||
@@ -94,8 +94,8 @@
|
||||
|
||||
/datum/surgery_step/generic/cut_with_laser/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts the bloodless incision on [target]'s [affected.name] with \the [tool].", \
|
||||
"You start the bloodless incision on [target]'s [affected.name] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts the bloodless incision on [target]'s [affected.name] with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start the bloodless incision on [target]'s [affected.name] with \the [tool].</span>")
|
||||
target.custom_pain("You feel a horrible, searing pain in your [affected.name]!", 50)
|
||||
..()
|
||||
|
||||
@@ -152,8 +152,8 @@
|
||||
|
||||
/datum/surgery_step/generic/incision_manager/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts to construct a prepared incision on and within [target]'s [affected.name] with \the [tool].", \
|
||||
"You start to construct a prepared incision on and within [target]'s [affected.name] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts to construct a prepared incision on and within [target]'s [affected.name] with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start to construct a prepared incision on and within [target]'s [affected.name] with \the [tool].</span>")
|
||||
target.custom_pain("You feel a horrible, searing pain in your [affected.name] as it is pushed apart!", 50)
|
||||
..()
|
||||
|
||||
@@ -199,8 +199,8 @@
|
||||
|
||||
/datum/surgery_step/generic/clamp_bleeders/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts clamping bleeders in [target]'s [affected.name] with \the [tool].", \
|
||||
"You start clamping bleeders in [target]'s [affected.name] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts clamping bleeders in [target]'s [affected.name] with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start clamping bleeders in [target]'s [affected.name] with \the [tool].</span>")
|
||||
target.custom_pain("The pain in your [affected.name] is maddening!", 40)
|
||||
..()
|
||||
|
||||
@@ -248,7 +248,7 @@
|
||||
if (target_zone == BP_GROIN)
|
||||
msg = "[user] starts to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]."
|
||||
self_msg = "You start to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]."
|
||||
user.visible_message(msg, self_msg)
|
||||
user.visible_message("<span class='filter_notice'>[msg]</span>", "<span class='filter_notice'>[self_msg]</span>")
|
||||
target.custom_pain("It feels like the skin on your [affected.name] is on fire!", 40)
|
||||
..()
|
||||
|
||||
@@ -301,8 +301,8 @@
|
||||
|
||||
/datum/surgery_step/generic/cauterize/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] is beginning to cauterize the incision on [target]'s [affected.name] with \the [tool]." , \
|
||||
"You are beginning to cauterize the incision on [target]'s [affected.name] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] is beginning to cauterize the incision on [target]'s [affected.name] with \the [tool].</span>" , \
|
||||
"<span class='filter_notice'>You are beginning to cauterize the incision on [target]'s [affected.name] with \the [tool].</span>")
|
||||
target.custom_pain("Your [affected.name] is being burned!", 40)
|
||||
..()
|
||||
|
||||
@@ -347,8 +347,8 @@
|
||||
|
||||
/datum/surgery_step/generic/amputate/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] is beginning to amputate [target]'s [affected.name] with \the [tool]." , \
|
||||
"You are beginning to cut through [target]'s [affected.amputation_point] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] is beginning to amputate [target]'s [affected.name] with \the [tool].</span>" , \
|
||||
"<span class='filter_notice'>You are beginning to cut through [target]'s [affected.amputation_point] with \the [tool].</span>")
|
||||
target.custom_pain("Your [affected.amputation_point] is being ripped apart!", 100)
|
||||
..()
|
||||
|
||||
|
||||
@@ -64,8 +64,8 @@
|
||||
|
||||
/datum/surgery_step/cavity/make_space/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts making some space inside [target]'s [get_cavity(affected)] cavity with \the [tool].", \
|
||||
"You start making some space inside [target]'s [get_cavity(affected)] cavity with \the [tool]." )
|
||||
user.visible_message("<span class='filter_notice'>[user] starts making some space inside [target]'s [get_cavity(affected)] cavity with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start making some space inside [target]'s [get_cavity(affected)] cavity with \the [tool].</span>" )
|
||||
target.custom_pain("The pain in your chest is living hell!",1)
|
||||
affected.cavity = 1
|
||||
..()
|
||||
@@ -99,8 +99,8 @@
|
||||
|
||||
/datum/surgery_step/cavity/close_space/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts mending [target]'s [get_cavity(affected)] cavity wall with \the [tool].", \
|
||||
"You start mending [target]'s [get_cavity(affected)] cavity wall with \the [tool]." )
|
||||
user.visible_message("<span class='filter_notice'>[user] starts mending [target]'s [get_cavity(affected)] cavity wall with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start mending [target]'s [get_cavity(affected)] cavity wall with \the [tool].</span>" )
|
||||
target.custom_pain("The pain in your chest is living hell!",1)
|
||||
affected.cavity = 0
|
||||
..()
|
||||
|
||||
@@ -52,8 +52,8 @@
|
||||
|
||||
/datum/surgery_step/limb/attach/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/E = tool
|
||||
user.visible_message("[user] starts attaching [E.name] to [target]'s [E.amputation_point].", \
|
||||
"You start attaching [E.name] to [target]'s [E.amputation_point].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts attaching [E.name] to [target]'s [E.amputation_point].</span>", \
|
||||
"<span class='filter_notice'>You start attaching [E.name] to [target]'s [E.amputation_point].</span>")
|
||||
|
||||
/datum/surgery_step/limb/attach/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/E = tool
|
||||
@@ -100,8 +100,8 @@
|
||||
|
||||
/datum/surgery_step/limb/connect/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/E = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts connecting tendons and muscles in [target]'s [E.amputation_point] with [tool].", \
|
||||
"You start connecting tendons and muscle in [target]'s [E.amputation_point].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts connecting tendons and muscles in [target]'s [E.amputation_point] with [tool].</span>", \
|
||||
"<span class='filter_notice'>You start connecting tendons and muscle in [target]'s [E.amputation_point].</span>")
|
||||
|
||||
/datum/surgery_step/limb/connect/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/E = target.get_organ(target_zone)
|
||||
@@ -138,8 +138,8 @@
|
||||
return isnull(target.get_organ(target_zone))
|
||||
|
||||
/datum/surgery_step/limb/mechanize/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts attaching \the [tool] to [target].", \
|
||||
"You start attaching \the [tool] to [target].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts attaching \the [tool] to [target].</span>", \
|
||||
"<span class='filter_notice'>You start attaching \the [tool] to [target].</span>")
|
||||
|
||||
/datum/surgery_step/limb/mechanize/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/robot_parts/L = tool
|
||||
|
||||
@@ -38,8 +38,8 @@
|
||||
return ..() && target_zone == BP_HEAD && target.op_stage.brainstem == 0
|
||||
|
||||
/datum/surgery_step/brainstem/mend_vessels/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts to mend the blood vessels on [target]'s brainstem with \the [tool].", \
|
||||
"You start to mend the blood vessels on [target]'s brainstem with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts to mend the blood vessels on [target]'s brainstem with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start to mend the blood vessels on [target]'s brainstem with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/brainstem/mend_vessels/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -76,8 +76,8 @@
|
||||
return ..() && target_zone == BP_HEAD && target.op_stage.brainstem == 1
|
||||
|
||||
/datum/surgery_step/brainstem/drill_vertebrae/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts to drill around [target]'s brainstem with \the [tool].", \
|
||||
"You start to drill around [target]'s brainstem with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts to drill around [target]'s brainstem with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start to drill around [target]'s brainstem with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/brainstem/drill_vertebrae/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -118,8 +118,8 @@
|
||||
return ..() && target_zone == BP_HEAD && target.op_stage.brainstem == 2
|
||||
|
||||
/datum/surgery_step/brainstem/clean_chips/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts to pick around [target]'s brainstem for bone chips with \the [tool].", \
|
||||
"You start to pick around [target]'s brainstem for bone chips with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts to pick around [target]'s brainstem for bone chips with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start to pick around [target]'s brainstem for bone chips with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/brainstem/clean_chips/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -158,8 +158,8 @@
|
||||
return ..() && target_zone == BP_HEAD && target.op_stage.brainstem == 3
|
||||
|
||||
/datum/surgery_step/brainstem/mend_cord/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts to fuse [target]'s spinal cord with \the [tool].", \
|
||||
"You start to fuse [target]'s spinal cord with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts to fuse [target]'s spinal cord with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start to fuse [target]'s spinal cord with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/brainstem/mend_cord/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -198,8 +198,8 @@
|
||||
return ..() && target_zone == BP_HEAD && target.op_stage.brainstem == 4
|
||||
|
||||
/datum/surgery_step/brainstem/mend_vertebrae/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts to mend [target]'s opened vertebrae with \the [tool].", \
|
||||
"You start to mend [target]'s opened vertebrae with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts to mend [target]'s opened vertebrae with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start to mend [target]'s opened vertebrae with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/brainstem/mend_vertebrae/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -238,8 +238,8 @@
|
||||
return ..() && target_zone == BP_HEAD && target.op_stage.brainstem == 5
|
||||
|
||||
/datum/surgery_step/brainstem/realign_tissue/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts to realign the tissues in [target]'s skull with \the [tool].", \
|
||||
"You start to realign the tissues in [target]'s skull with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts to realign the tissues in [target]'s skull with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start to realign the tissues in [target]'s skull with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/brainstem/realign_tissue/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
@@ -56,8 +56,8 @@
|
||||
for(var/obj/item/organ/I in affected.internal_organs)
|
||||
if(I && (I.damage > 0 || I.status == ORGAN_DEAD))
|
||||
if(!(I.robotic >= ORGAN_ROBOT))
|
||||
user.visible_message("[user] starts treating damage to [target]'s [I.name] with [tool_name].", \
|
||||
"You start treating damage to [target]'s [I.name] with [tool_name]." )
|
||||
user.visible_message("<span class='filter_notice'>[user] starts treating damage to [target]'s [I.name] with [tool_name].</span>", \
|
||||
"<span class='filter_notice'>You start treating damage to [target]'s [I.name] with [tool_name].</span>" )
|
||||
|
||||
target.custom_pain("The pain in your [affected.name] is living hell!", 100)
|
||||
..()
|
||||
@@ -228,8 +228,8 @@
|
||||
/datum/surgery_step/internal/detatch_organ/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
user.visible_message("[user] starts to separate [target]'s [target.op_stage.current_organ] with \the [tool].", \
|
||||
"You start to separate [target]'s [target.op_stage.current_organ] with \the [tool]." )
|
||||
user.visible_message("<span class='filter_notice'>[user] starts to separate [target]'s [target.op_stage.current_organ] with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start to separate [target]'s [target.op_stage.current_organ] with \the [tool].</span>" )
|
||||
target.custom_pain("The pain in your [affected.name] is living hell!", 100)
|
||||
..()
|
||||
|
||||
@@ -293,13 +293,13 @@
|
||||
var/organ_to_remove = tgui_input_list(user, "Which organ do you want to remove?", "Organ Choice", removable_organs)
|
||||
if(!organ_to_remove) //They chose cancel!
|
||||
to_chat(user, "<span class='notice'>You decide against preparing any organs for removal.</span>")
|
||||
user.visible_message("[user] starts pulling \the [tool] from [target]'s [affected]", \
|
||||
"You start pulling \the [tool] from [target]'s [affected].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts pulling \the [tool] from [target]'s [affected].</span>", \
|
||||
"<span class='filter_notice'>You start pulling \the [tool] from [target]'s [affected].</span>")
|
||||
|
||||
target.op_stage.current_organ = organ_to_remove
|
||||
|
||||
user.visible_message("[user] starts removing [target]'s [target.op_stage.current_organ] with \the [tool].", \
|
||||
"You start removing [target]'s [target.op_stage.current_organ] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts removing [target]'s [target.op_stage.current_organ] with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start removing [target]'s [target.op_stage.current_organ] with \the [tool].</span>")
|
||||
target.custom_pain("Someone's ripping out your [target.op_stage.current_organ]!", 100)
|
||||
..()
|
||||
|
||||
@@ -382,8 +382,8 @@
|
||||
|
||||
/datum/surgery_step/internal/replace_organ/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts transplanting \the [tool] into [target]'s [affected.name].", \
|
||||
"You start transplanting \the [tool] into [target]'s [affected.name].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts transplanting \the [tool] into [target]'s [affected.name].</span>", \
|
||||
"<span class='filter_notice'>You start transplanting \the [tool] into [target]'s [affected.name].</span>")
|
||||
target.custom_pain("Someone's rooting around in your [affected.name]!", 100)
|
||||
..()
|
||||
|
||||
@@ -439,8 +439,8 @@
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/internal/attach_organ/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] begins reattaching [target]'s [target.op_stage.current_organ] with \the [tool].", \
|
||||
"You start reattaching [target]'s [target.op_stage.current_organ] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] begins reattaching [target]'s [target.op_stage.current_organ] with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start reattaching [target]'s [target.op_stage.current_organ] with \the [tool].</span>")
|
||||
target.custom_pain("Someone's digging needles into your [target.op_stage.current_organ]!", 100)
|
||||
..()
|
||||
|
||||
|
||||
@@ -37,8 +37,8 @@
|
||||
|
||||
/datum/surgery_step/fix_vein/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts patching the damaged vein in [target]'s [affected.name] with \the [tool]." , \
|
||||
"You start patching the damaged vein in [target]'s [affected.name] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts patching the damaged vein in [target]'s [affected.name] with \the [tool].</span>" , \
|
||||
"<span class='filter_notice'>You start patching the damaged vein in [target]'s [affected.name] with \the [tool].</span>")
|
||||
target.custom_pain("The pain in [affected.name] is unbearable!", 100)
|
||||
..()
|
||||
|
||||
@@ -91,8 +91,8 @@
|
||||
|
||||
/datum/surgery_step/fix_dead_tissue/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts cutting away necrotic tissue in [target]'s [affected.name] with \the [tool]." , \
|
||||
"You start cutting away necrotic tissue in [target]'s [affected.name] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts cutting away necrotic tissue in [target]'s [affected.name] with \the [tool].</span>" , \
|
||||
"<span class='filter_notice'>You start cutting away necrotic tissue in [target]'s [affected.name] with \the [tool].</span>")
|
||||
target.custom_pain("The pain in [affected.name] is unbearable!", 100)
|
||||
..()
|
||||
|
||||
@@ -149,8 +149,8 @@
|
||||
|
||||
/datum/surgery_step/treat_necrosis/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts applying medication to the affected tissue in [target]'s [affected.name] with \the [tool]." , \
|
||||
"You start applying medication to the affected tissue in [target]'s [affected.name] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts applying medication to the affected tissue in [target]'s [affected.name] with \the [tool].</span>" , \
|
||||
"<span class='filter_notice'>You start applying medication to the affected tissue in [target]'s [affected.name] with \the [tool].</span>")
|
||||
target.custom_pain("Something in your [affected.name] is causing you a lot of pain!", 50)
|
||||
..()
|
||||
|
||||
@@ -219,8 +219,8 @@
|
||||
rig = target.belt
|
||||
if(!istype(rig))
|
||||
return
|
||||
user.visible_message("[user] starts cutting through the support systems of \the [rig] on [target] with \the [tool]." , \
|
||||
"You start cutting through the support systems of \the [rig] on [target] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts cutting through the support systems of \the [rig] on [target] with \the [tool].</span>" , \
|
||||
"<span class='filter_notice'>You start cutting through the support systems of \the [rig] on [target] with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/hardsuit/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
@@ -50,8 +50,8 @@
|
||||
|
||||
/datum/surgery_step/robotics/unscrew_hatch/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts to unscrew the maintenance hatch on [target]'s [affected.name] with \the [tool].", \
|
||||
"You start to unscrew the maintenance hatch on [target]'s [affected.name] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts to unscrew the maintenance hatch on [target]'s [affected.name] with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start to unscrew the maintenance hatch on [target]'s [affected.name] with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/robotics/unscrew_hatch/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -88,8 +88,8 @@
|
||||
|
||||
/datum/surgery_step/robotics/open_hatch/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts to pry open the maintenance hatch on [target]'s [affected.name] with \the [tool].",
|
||||
"You start to pry open the maintenance hatch on [target]'s [affected.name] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts to pry open the maintenance hatch on [target]'s [affected.name] with \the [tool].</span>",
|
||||
"<span class='filter_notice'>You start to pry open the maintenance hatch on [target]'s [affected.name] with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/robotics/open_hatch/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -126,8 +126,8 @@
|
||||
|
||||
/datum/surgery_step/robotics/close_hatch/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] begins to close and secure the hatch on [target]'s [affected.name] with \the [tool]." , \
|
||||
"You begin to close and secure the hatch on [target]'s [affected.name] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] begins to close and secure the hatch on [target]'s [affected.name] with \the [tool].</span>" , \
|
||||
"<span class='filter_notice'>You begin to close and secure the hatch on [target]'s [affected.name] with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/robotics/close_hatch/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -171,8 +171,8 @@
|
||||
|
||||
/datum/surgery_step/robotics/repair_brute/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] begins to patch damage to [target]'s [affected.name]'s support structure with \the [tool]." , \
|
||||
"You begin to patch damage to [target]'s [affected.name]'s support structure with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] begins to patch damage to [target]'s [affected.name]'s support structure with \the [tool].</span>" , \
|
||||
"<span class='filter_notice'>You begin to patch damage to [target]'s [affected.name]'s support structure with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/robotics/repair_brute/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -220,8 +220,8 @@
|
||||
|
||||
/datum/surgery_step/robotics/repair_burn/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] begins to splice new cabling into [target]'s [affected.name]." , \
|
||||
"You begin to splice new cabling into [target]'s [affected.name].")
|
||||
user.visible_message("<span class='filter_notice'>[user] begins to splice new cabling into [target]'s [affected.name].</span>" , \
|
||||
"<span class='filter_notice'>You begin to splice new cabling into [target]'s [affected.name].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/robotics/repair_burn/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -273,8 +273,8 @@
|
||||
for(var/obj/item/organ/I in affected.internal_organs)
|
||||
if(I && I.damage > 0)
|
||||
if(I.robotic >= ORGAN_ROBOT)
|
||||
user.visible_message("[user] starts mending the damage to [target]'s [I.name]'s mechanisms.", \
|
||||
"You start mending the damage to [target]'s [I.name]'s mechanisms." )
|
||||
user.visible_message("<span class='filter_notice'>[user] starts mending the damage to [target]'s [I.name]'s mechanisms.</span>", \
|
||||
"<span class='filter_notice'>You start mending the damage to [target]'s [I.name]'s mechanisms.</span>" )
|
||||
|
||||
target.custom_pain("The pain in your [affected.name] is living hell!",1)
|
||||
..()
|
||||
@@ -353,8 +353,8 @@
|
||||
return
|
||||
target.op_stage.current_organ = organ_to_remove
|
||||
|
||||
user.visible_message("[user] starts to decouple [target]'s [target.op_stage.current_organ] with \the [tool].", \
|
||||
"You start to decouple [target]'s [target.op_stage.current_organ] with \the [tool]." )
|
||||
user.visible_message("<span class='filter_notice'>[user] starts to decouple [target]'s [target.op_stage.current_organ] with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start to decouple [target]'s [target.op_stage.current_organ] with \the [tool].</span>" )
|
||||
..()
|
||||
|
||||
/datum/surgery_step/robotics/detatch_organ_robotic/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -415,8 +415,8 @@
|
||||
|
||||
target.op_stage.current_organ = organ_to_replace
|
||||
|
||||
user.visible_message("[user] begins reattaching [target]'s [target.op_stage.current_organ] with \the [tool].", \
|
||||
"You start reattaching [target]'s [target.op_stage.current_organ] with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] begins reattaching [target]'s [target.op_stage.current_organ] with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start reattaching [target]'s [target.op_stage.current_organ] with \the [tool].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/robotics/attach_organ_robotic/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -479,8 +479,8 @@
|
||||
|
||||
/datum/surgery_step/robotics/install_mmi/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts installing \the [tool] into [target]'s [affected.name].", \
|
||||
"You start installing \the [tool] into [target]'s [affected.name].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts installing \the [tool] into [target]'s [affected.name].</span>", \
|
||||
"<span class='filter_notice'>You start installing \the [tool] into [target]'s [affected.name].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/robotics/install_mmi/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -569,8 +569,8 @@
|
||||
|
||||
/datum/surgery_step/robotics/install_nymph/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts setting \the [tool] into [target]'s [affected.name].", \
|
||||
"You start setting \the [tool] into [target]'s [affected.name].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts setting \the [tool] into [target]'s [affected.name].</span>", \
|
||||
"<span class='filter_notice'>You start setting \the [tool] into [target]'s [affected.name].</span>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/robotics/install_nymph/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
var/obj/occupied = turf_is_crowded()
|
||||
if(occupied)
|
||||
to_chat(usr, "There's \a [occupied] in the way.")
|
||||
to_chat(usr, "<span class='filter_notice'>There's \a [occupied] in the way.</span>")
|
||||
return 0
|
||||
|
||||
var/list/L = list()
|
||||
|
||||
@@ -279,6 +279,14 @@ function start_vue() {
|
||||
pretty: "System Messages",
|
||||
tooltip: "Messages from your client, always enabled",
|
||||
required: true
|
||||
},
|
||||
{
|
||||
matches: ".unsorted",
|
||||
becomes: "vc_unsorted",
|
||||
pretty: "Unsorted",
|
||||
tooltip: "Messages that don't have any filters.",
|
||||
required: false,
|
||||
admin: false
|
||||
}
|
||||
],
|
||||
},
|
||||
@@ -586,6 +594,11 @@ function start_vue() {
|
||||
//Get a category
|
||||
newmessage.category = this.get_category(newmessage.content);
|
||||
|
||||
//Put it in unsorted blocks
|
||||
if (newmessage.category == "vc_unsorted") {
|
||||
newmessage.content = "<span class='unsorted'>" + newmessage.content + "</span>";
|
||||
}
|
||||
|
||||
//Try to crush it with one of the last few
|
||||
if(this.crushing) {
|
||||
let crushwith = this.messages.slice(-(this.crushing));
|
||||
@@ -663,7 +676,7 @@ function start_vue() {
|
||||
let doc = domparser.parseFromString(message, 'text/html');
|
||||
let evaluating = doc.querySelector('span');
|
||||
|
||||
let category = "nomatch"; //What we use if the classes aren't anything we know.
|
||||
let category = "vc_unsorted"; //What we use if the classes aren't anything we know.
|
||||
if(!evaluating) return category;
|
||||
this.type_table.find( function(type) {
|
||||
if(evaluating.msMatchesSelector(type.matches)) {
|
||||
@@ -678,13 +691,16 @@ function start_vue() {
|
||||
var textToSave = "<html><head><style>"+this.ext_styles+"</style></head><body>";
|
||||
|
||||
var messagesToSave = this.archived_messages.concat(this.messages);
|
||||
var cats = this.current_categories;
|
||||
|
||||
messagesToSave.forEach( function(message) {
|
||||
textToSave += message.content;
|
||||
if(message.repeats > 1) {
|
||||
textToSave += "(x"+message.repeats+")";
|
||||
if(cats.length == 0 || (cats.indexOf(message.category) >= 0)) { //only in the active tab
|
||||
textToSave += message.content;
|
||||
if(message.repeats > 1) {
|
||||
textToSave += "(x"+message.repeats+")";
|
||||
}
|
||||
textToSave += "<br>\n";
|
||||
}
|
||||
textToSave += "<br>\n";
|
||||
});
|
||||
textToSave += "</body></html>";
|
||||
|
||||
|
||||
2
code/modules/vchat/js/vchat.min.js
vendored
2
code/modules/vchat/js/vchat.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -245,9 +245,9 @@
|
||||
tmob_message = tail.msg_owner_stepunder
|
||||
|
||||
if(src_message)
|
||||
to_chat(src, STEP_TEXT_OWNER(src_message))
|
||||
to_chat(src, "<span class='filter_notice'>[STEP_TEXT_OWNER(src_message)]</span>")
|
||||
if(tmob_message)
|
||||
to_chat(tmob, STEP_TEXT_PREY(tmob_message))
|
||||
to_chat(tmob, "<span class='filter_notice'>[STEP_TEXT_PREY(tmob_message)]</span>")
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
@@ -409,7 +409,7 @@
|
||||
set category = "IC"
|
||||
|
||||
pickup_active = !pickup_active
|
||||
to_chat(src, "You will [pickup_active ? "now" : "no longer"] attempt to pick up mobs when clicking them with help intent.")
|
||||
to_chat(src, "<span class='filter_notice'>You will [pickup_active ? "now" : "no longer"] attempt to pick up mobs when clicking them with help intent.</span>")
|
||||
|
||||
#undef STEP_TEXT_OWNER
|
||||
#undef STEP_TEXT_PREY
|
||||
|
||||
@@ -98,13 +98,13 @@
|
||||
"foreground" = colors[color],
|
||||
)))
|
||||
|
||||
fail_message = "<font color='blue'>\icon[src][bicon(src)] a [pick("loud","soft","sinister","eery","triumphant","depressing","cheerful","angry")] \
|
||||
fail_message = "<span class='notice'>\icon[src][bicon(src)] a [pick("loud","soft","sinister","eery","triumphant","depressing","cheerful","angry")] \
|
||||
[pick("horn","beep","bing","bleep","blat","honk","hrumph","ding")] sounds and a \
|
||||
[pick("yellow","purple","green","blue","red","orange","white")] \
|
||||
[pick("light","dial","meter","window","protrusion","knob","antenna","swirly thing")] \
|
||||
[pick("swirls","flashes","whirrs","goes schwing","blinks","flickers","strobes","lights up")] on the \
|
||||
[pick("front","side","top","bottom","rear","inside")] of [src]. A [pick("slot","funnel","chute","tube")] opens up in the \
|
||||
[pick("front","side","top","bottom","rear","inside")].</font>"
|
||||
[pick("front","side","top","bottom","rear","inside")].</span>"
|
||||
|
||||
/obj/machinery/replicator/process()
|
||||
if(spawning_types.len && powered())
|
||||
@@ -178,4 +178,4 @@
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
stored_materials.Add(W)
|
||||
src.visible_message("<b>\The [user]</b> inserts \the [W] into \the [src].")
|
||||
src.visible_message("<span class='notice'><b>\The [user]</b> inserts \the [W] into \the [src].</span>")
|
||||
|
||||
@@ -276,7 +276,7 @@
|
||||
inserted_human.drop_from_inventory(I)
|
||||
inserted_mob.loc = src
|
||||
stored_materials.Add(inserted_mob)
|
||||
src.visible_message("<b>\The [user]</b> inserts \the [inserted_mob] into \the [src].")
|
||||
src.visible_message("<span class='filter_notice'><b>\The [user]</b> inserts \the [inserted_mob] into \the [src].</span>")
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You cannot put \the [W] into the machine. ((The micro must be connected to the server.))</span>")
|
||||
@@ -297,7 +297,7 @@
|
||||
//Now that we've dropped all the items they have, let's shove them back into the micro holder.
|
||||
W.loc = src
|
||||
stored_materials.Add(W)
|
||||
src.visible_message("<b>\The [user]</b> inserts \the [W] into \the [src].")
|
||||
src.visible_message("<span class='filter_notice'><b>\The [user]</b> inserts \the [W] into \the [src].</span>")
|
||||
|
||||
/obj/machinery/replicator/vore/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/list/data = ..()
|
||||
@@ -544,7 +544,7 @@
|
||||
inserted_human.drop_from_inventory(I)
|
||||
inserted_mob.loc = src
|
||||
stored_materials.Add(inserted_mob)
|
||||
src.visible_message("<b>\The [user]</b> inserts \the [inserted_mob] into \the [src].")
|
||||
src.visible_message("<span class='filter_notice'><b>\The [user]</b> inserts \the [inserted_mob] into \the [src].</span>")
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You cannot put \the [W] into the machine. ((They must be connected to the server.))</span>")
|
||||
@@ -563,7 +563,7 @@
|
||||
//Now that we've dropped all the items they have, let's shove them back into the micro holder.
|
||||
W.loc = src
|
||||
stored_materials.Add(W)
|
||||
src.visible_message("<b>\The [user]</b> inserts \the [W] into \the [src].")
|
||||
src.visible_message("<span class='filter_notice'><b>\The [user]</b> inserts \the [W] into \the [src].</span>")
|
||||
|
||||
|
||||
/obj/machinery/replicator/clothing/tgui_interact(mob/user, datum/tgui/ui) //This creates the menu.
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
var/atom/toplevelholder = target
|
||||
while(!istype(toplevelholder.loc, /turf))
|
||||
toplevelholder = toplevelholder.loc
|
||||
toplevelholder.visible_message("<font color='red'>\icon[toplevelholder][bicon(toplevelholder)] [toplevelholder] [display_msg]</font>")
|
||||
toplevelholder.visible_message("<span class='filter_notice'><font color='red'>\icon[toplevelholder][bicon(toplevelholder)] [toplevelholder] [display_msg]</font></span>")
|
||||
|
||||
/datum/artifact_effect/proc/DoEffectTouch(var/mob/user)
|
||||
/datum/artifact_effect/proc/DoEffectAura(var/atom/holder)
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
my_effects += my_effect
|
||||
|
||||
else
|
||||
to_chat(usr, "This effect can not be applied to this atom type.")
|
||||
to_chat(usr, "<span class='filter_notice'>This effect can not be applied to this atom type.</span>")
|
||||
qdel(my_effect)
|
||||
|
||||
/datum/component/artifact_master/proc/remove_effect()
|
||||
@@ -231,7 +231,7 @@
|
||||
warn = 1
|
||||
|
||||
if(warn && isliving(bumped))
|
||||
to_chat(bumped, "<b>You accidentally touch \the [holder] as it hits you.</b>")
|
||||
to_chat(bumped, "<span class='filter_notice'><b>You accidentally touch \the [holder] as it hits you.</b></span>")
|
||||
|
||||
/datum/component/artifact_master/proc/on_bumped()
|
||||
var/atom/movable/M = args[2]
|
||||
@@ -252,7 +252,7 @@
|
||||
warn = 1
|
||||
|
||||
if(warn && isliving(M))
|
||||
to_chat(M, "<b>You accidentally touch \the [holder].</b>")
|
||||
to_chat(M, "<span class='filter_notice'><b>You accidentally touch \the [holder].</b></span>")
|
||||
|
||||
/datum/component/artifact_master/proc/on_attack_hand()
|
||||
var/mob/living/user = args[2]
|
||||
@@ -260,10 +260,10 @@
|
||||
return
|
||||
|
||||
if (get_dist(user, holder) > 1)
|
||||
to_chat(user, "<font color='red'>You can't reach [holder] from here.</font>")
|
||||
to_chat(user, "<span class='filter_notice'><font color='red'>You can't reach [holder] from here.</font></span>")
|
||||
return
|
||||
if(ishuman(user) && user:gloves)
|
||||
to_chat(user, "<b>You touch [holder]</b> with your gloved hands, [pick("but nothing of note happens","but nothing happens","but nothing interesting happens","but you notice nothing different","but nothing seems to have happened")].")
|
||||
to_chat(user, "<span class='filter_notice'><b>You touch [holder]</b> with your gloved hands, [pick("but nothing of note happens","but nothing happens","but nothing interesting happens","but you notice nothing different","but nothing seems to have happened")].</span>")
|
||||
return
|
||||
|
||||
var/triggered = FALSE
|
||||
@@ -279,10 +279,10 @@
|
||||
my_effect.DoEffectTouch(user)
|
||||
|
||||
if(triggered)
|
||||
to_chat(user, "<b>You touch [holder].</b>")
|
||||
to_chat(user, "<span class='filter_notice'><b>You touch [holder].</b></span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<b>You touch [holder],</b> [pick("but nothing of note happens","but nothing happens","but nothing interesting happens","but you notice nothing different","but nothing seems to have happened")].")
|
||||
to_chat(user, "<span class='filter_notice'><b>You touch [holder],</b> [pick("but nothing of note happens","but nothing happens","but nothing interesting happens","but you notice nothing different","but nothing seems to have happened")].</span>")
|
||||
|
||||
|
||||
/datum/component/artifact_master/proc/on_attackby()
|
||||
|
||||
Reference in New Issue
Block a user