mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-26 06:39:22 +01:00
cleans up so many to_chats so they use vchat filters, unsorted chat filter for everything else (#9006)
* better filters for vchat, unsorted chat filter * adds closing tags, fixes an error I somehow missed
This commit is contained in:
@@ -93,5 +93,5 @@
|
||||
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)
|
||||
@@ -52,6 +52,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()
|
||||
@@ -82,7 +83,7 @@
|
||||
else if(check_rights(R_EVENT, FALSE, C)) // event managers
|
||||
category = R_EVENT
|
||||
num_event_managers_online++
|
||||
|
||||
|
||||
temp += "\t[C] is a [C.holder.rank]"
|
||||
if(holder)
|
||||
if(C.holder.fakekey)
|
||||
@@ -122,4 +123,4 @@
|
||||
if(config.show_event_managers)
|
||||
msg += "\n<b> Current Event Managers ([num_event_managers_online]):</b>\n" + eventMmsg
|
||||
|
||||
to_chat(src,msg)
|
||||
to_chat(src,"<span class='filter_notice'>[jointext(msg, "<br>")]</span>")
|
||||
|
||||
@@ -92,7 +92,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/coin/attack_self(mob/user as mob)
|
||||
|
||||
@@ -147,7 +147,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/W as obj, mob/user as mob)
|
||||
@@ -183,9 +183,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
|
||||
@@ -426,7 +426,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)
|
||||
@@ -477,7 +477,7 @@ GLOBAL_LIST_EMPTY(vending_products)
|
||||
var/obj/item/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
|
||||
@@ -618,7 +618,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>")
|
||||
|
||||
@@ -136,12 +136,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, "button", 40, 1)
|
||||
@@ -159,14 +159,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)
|
||||
|
||||
@@ -25,7 +25,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>"
|
||||
@@ -38,7 +38,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
|
||||
@@ -74,11 +74,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)
|
||||
@@ -86,22 +86,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))
|
||||
@@ -142,5 +142,5 @@
|
||||
/obj/machinery/appliance/cooker/add_content(var/obj/item/I, var/mob/user)
|
||||
var/datum/cooking_item/CI = ..()
|
||||
if (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
|
||||
@@ -82,7 +82,7 @@ fundamental differences
|
||||
var/datum/cooking_item/CI = a
|
||||
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)
|
||||
@@ -105,20 +105,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, "button", 40, 1)
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -84,7 +84,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)
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
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.
|
||||
@@ -33,11 +33,11 @@
|
||||
|
||||
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
|
||||
@@ -51,12 +51,12 @@
|
||||
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
|
||||
@@ -69,7 +69,7 @@
|
||||
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
|
||||
@@ -102,7 +102,7 @@
|
||||
|
||||
|
||||
cooking_power *= oil_efficiency
|
||||
|
||||
|
||||
/obj/machinery/appliance/cooker/fryer/update_icon()
|
||||
if(!stat)
|
||||
..()
|
||||
@@ -119,7 +119,7 @@
|
||||
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)
|
||||
@@ -177,13 +177,13 @@
|
||||
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))
|
||||
@@ -239,15 +239,15 @@
|
||||
|
||||
//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/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("[user] scoops some oil out of \the [src].", span("notice","You scoop some oil out of \the [src]."))
|
||||
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
|
||||
@@ -263,7 +263,7 @@
|
||||
I.reagents.remove_reagent(R.id, delta)
|
||||
amount += delta
|
||||
if (amount > 0)
|
||||
user.visible_message("[user] pours some oil into \the [src].", span("notice","You pour [amount]u of oil into \the [src]."), "<span class='notice'>You hear something viscous being poured into a metal container.</span>")
|
||||
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
|
||||
..()
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
active_power_usage = 4 KILOWATTS
|
||||
heating_power = 4000
|
||||
idle_power_usage = 2 KILOWATTS
|
||||
|
||||
|
||||
optimal_power = 1.2 // Things on the grill cook .6 faster - this is now the fastest appliance to heat and to cook on. BURGERS GO SIZZLE.
|
||||
|
||||
stat = POWEROFF // Starts turned off.
|
||||
@@ -22,18 +22,18 @@
|
||||
optimal_temp = 120 + T0C
|
||||
min_temp = 60 + T0C
|
||||
resistance = 8 KILOWATTS // Very fast to heat up.
|
||||
|
||||
|
||||
max_contents = 3 // Arbitrary number, 3 grill 'racks'
|
||||
container_type = /obj/item/reagent_containers/cooking_container/grill
|
||||
|
||||
|
||||
/obj/machinery/appliance/cooker/grill/Initialize()
|
||||
. = ..()
|
||||
grill_loop = new(list(src), FALSE)
|
||||
|
||||
|
||||
/obj/machinery/appliance/cooker/grill/Destroy()
|
||||
QDEL_NULL(grill_loop)
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/appliance/cooker/grill/update_icon() // TODO: Cooking icon
|
||||
if(!stat)
|
||||
icon_state = on_icon
|
||||
@@ -59,14 +59,14 @@
|
||||
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 //It's 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()
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
var/datum/cooking_item/CI = a
|
||||
if (CI.container)
|
||||
if (!CI.container.check_contents())
|
||||
to_chat(user, "There's nothing in the [src] you can remove!")
|
||||
to_chat(user, "<span class='filter_notice'>There's nothing in the [src] you can remove!</span>")
|
||||
return
|
||||
|
||||
for (var/obj/item/I in CI.container)
|
||||
|
||||
@@ -111,7 +111,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
|
||||
@@ -149,11 +149,11 @@
|
||||
else if(istype(O, /obj/item/gripper)) // Grippers. ~Mechoid.
|
||||
var/obj/item/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
|
||||
@@ -164,7 +164,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)
|
||||
|
||||
@@ -214,7 +214,7 @@
|
||||
if(G.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.amount] planks.")
|
||||
to_chat(user, "<span class='filter_notice'>You add the newly-formed wood to the stack. It now contains [NG.amount] planks.</span>")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -225,31 +225,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/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/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/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/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++)
|
||||
@@ -306,7 +306,7 @@
|
||||
if(NG.amount>=NG.max_amount)
|
||||
continue
|
||||
NG.attackby(G, user)
|
||||
to_chat(user, "You add the newly-formed grass to the stack. It now contains [G.amount] tiles.")
|
||||
to_chat(user, "<span class='filter_notice'>You add the newly-formed grass to the stack. It now contains [G.amount] tiles.</span>")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -777,7 +777,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 plant_controller.seeds))
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
if(!holder) return
|
||||
|
||||
if(!plant_controller || !plant_controller.gene_tag_masks)
|
||||
to_chat(usr, "Gene masks not set.")
|
||||
to_chat(usr, "<span class='filter_notice'>Gene masks not set.</span>")
|
||||
return
|
||||
|
||||
for(var/mask in plant_controller.gene_tag_masks)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
if(genes.len)
|
||||
var/choice = alert(user, "Are you sure you want to wipe the disk?", "Xenobotany Data", "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("[bicon(src)] [src] pings unhappily, flashing a red warning light.")
|
||||
visible_message("<span class='filter_notice'>[bicon(src)] [src] pings unhappily, flashing a red warning light.</span>")
|
||||
else
|
||||
visible_message("[bicon(src)] [src] pings happily.")
|
||||
visible_message("<span class='filter_notice'>[bicon(src)] [src] pings happily.</span>")
|
||||
|
||||
if(eject_disk)
|
||||
eject_disk = 0
|
||||
if(loaded_disk)
|
||||
loaded_disk.loc = get_turf(src)
|
||||
visible_message("[bicon(src)] [src] beeps and spits out [loaded_disk].")
|
||||
visible_message("<span class='filter_notice'>[bicon(src)] [src] beeps and spits out [loaded_disk].</span>")
|
||||
loaded_disk = null
|
||||
|
||||
/obj/machinery/botany/attackby(obj/item/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/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/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
|
||||
..()
|
||||
@@ -189,14 +189,14 @@
|
||||
plant_controller.seeds[seed.seed.name] = seed.seed
|
||||
|
||||
seed.update_seed()
|
||||
visible_message("[bicon(src)] [src] beeps and spits out [seed].")
|
||||
visible_message("<span class='filter_notice'>[bicon(src)] [src] beeps and spits out [seed].</span>")
|
||||
|
||||
seed = null
|
||||
|
||||
if(href_list["eject_disk"])
|
||||
if(!loaded_disk) return
|
||||
loaded_disk.loc = get_turf(src)
|
||||
visible_message("[bicon(src)] [src] beeps and spits out [loaded_disk].")
|
||||
visible_message("<span class='filter_notice'>[bicon(src)] [src] beeps and spits out [loaded_disk].</span>")
|
||||
loaded_disk = null
|
||||
|
||||
usr.set_machine(src)
|
||||
|
||||
@@ -503,7 +503,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/storage/bag/plants) && !lockdown)
|
||||
var/obj/item/storage/P = O
|
||||
@@ -512,17 +512,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)
|
||||
|
||||
@@ -159,13 +159,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()
|
||||
@@ -313,7 +313,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)
|
||||
@@ -340,7 +340,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
|
||||
@@ -350,7 +350,7 @@
|
||||
yield_mod = 0
|
||||
mutation_mod = 0
|
||||
|
||||
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
|
||||
@@ -406,11 +406,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()
|
||||
@@ -424,7 +424,7 @@
|
||||
var/new_light = input("Specify a light level.") as null|anything in 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()
|
||||
@@ -460,7 +460,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
|
||||
|
||||
@@ -472,15 +472,15 @@
|
||||
if(O.is_wirecutter() || istype(O, /obj/item/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.
|
||||
@@ -505,14 +505,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))
|
||||
@@ -523,11 +523,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
|
||||
@@ -559,7 +559,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()
|
||||
@@ -572,7 +572,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/multitool))
|
||||
if(!anchored)
|
||||
@@ -674,5 +674,5 @@
|
||||
|
||||
/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()
|
||||
|
||||
@@ -39,14 +39,14 @@
|
||||
|
||||
/obj/item/analyzer/plant_analyzer/proc/print_report(var/mob/living/user)
|
||||
if(!last_data)
|
||||
to_chat(user, "There is no scan data to print.")
|
||||
to_chat(user, "<span class='filter_notice'>There is no scan data to print.</span>")
|
||||
return
|
||||
var/obj/item/paper/P = new /obj/item/paper(get_turf(src))
|
||||
P.name = "paper - [form_title]"
|
||||
P.info = "[last_data]"
|
||||
if(istype(user,/mob/living/carbon/human))
|
||||
user.put_in_hands(P)
|
||||
user.visible_message("\The [src] spits out a piece of paper.")
|
||||
user.visible_message("<span class='filter_notice'>\The [src] spits out a piece of paper.</span>")
|
||||
return
|
||||
|
||||
/obj/item/analyzer/plant_analyzer/attack_self(mob/user as mob)
|
||||
|
||||
@@ -297,7 +297,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
medHUD = !medHUD
|
||||
plane_holder.set_vis(VIS_CH_HEALTH, medHUD)
|
||||
plane_holder.set_vis(VIS_CH_STATUS_OOC, medHUD)
|
||||
to_chat(src, "<font color='blue'><B>Medical HUD [medHUD ? "Enabled" : "Disabled"]</B></font>")
|
||||
to_chat(src, "<span class='notice'><B>Medical HUD [medHUD ? "Enabled" : "Disabled"]</B></span>")
|
||||
|
||||
/mob/observer/dead/verb/toggle_secHUD()
|
||||
set category = "Ghost"
|
||||
@@ -310,7 +310,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
plane_holder.set_vis(VIS_CH_IMPTRACK, secHUD)
|
||||
plane_holder.set_vis(VIS_CH_IMPLOYAL, secHUD)
|
||||
plane_holder.set_vis(VIS_CH_IMPCHEM, secHUD)
|
||||
to_chat(src, "<font color='blue'><B>Security HUD [secHUD ? "Enabled" : "Disabled"]</B></font>")
|
||||
to_chat(src, "<span class='notice'><B>Security HUD [secHUD ? "Enabled" : "Disabled"]</B></span>")
|
||||
|
||||
/mob/observer/dead/verb/toggle_antagHUD()
|
||||
set category = "Ghost"
|
||||
@@ -318,10 +318,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
set desc = "Toggles AntagHUD allowing you to see who is the antagonist"
|
||||
|
||||
if(!config.antag_hud_allowed && !client.holder)
|
||||
to_chat(src, "<font color='red'>Admins have disabled this for this round.</font>")
|
||||
to_chat(src, "<span class='filter_notice'><font color='red'>Admins have disabled this for this round.</font></span>")
|
||||
return
|
||||
if(jobban_isbanned(src, "AntagHUD"))
|
||||
to_chat(src, "<font color='red'><B>You have been banned from using this feature</B></font>")
|
||||
to_chat(src, "<span class='filter_notice'><font color='red'><B>You have been banned from using this feature</B></font></span>")
|
||||
return
|
||||
if(config.antag_hud_restricted && !has_enabled_antagHUD && !client.holder)
|
||||
var/response = alert(src, "If you turn this on, you will not be able to take any part in the round.","Are you sure you want to turn this feature on?","Yes","No")
|
||||
@@ -333,7 +333,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
|
||||
antagHUD = !antagHUD
|
||||
plane_holder.set_vis(VIS_CH_SPECIAL, antagHUD)
|
||||
to_chat(src, "<font color='blue'><B>AntagHUD [antagHUD ? "Enabled" : "Disabled"]</B></font>")
|
||||
to_chat(src, "<span class='notice'><B>AntagHUD [antagHUD ? "Enabled" : "Disabled"]</B></span>")
|
||||
|
||||
/mob/observer/dead/proc/jumpable_areas()
|
||||
var/list/areas = return_sorted_areas()
|
||||
@@ -362,7 +362,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
set desc = "Teleport to a location"
|
||||
|
||||
if(!istype(usr, /mob/observer/dead))
|
||||
to_chat(usr, "Not when you're not dead!")
|
||||
to_chat(usr, "<span class='filter_notice'>Not when you're not dead!</span>")
|
||||
return
|
||||
|
||||
if(!A)
|
||||
@@ -551,15 +551,15 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
forceMove(T)
|
||||
stop_following()
|
||||
else
|
||||
to_chat(src, "This mob is not located in the game world.")
|
||||
to_chat(src, "<span class='filter_notice'>This mob is not located in the game world.</span>")
|
||||
|
||||
/mob/observer/dead/memory()
|
||||
set hidden = 1
|
||||
to_chat(src, "<font color='red'>You are dead! You have no mind to store memory!</font>")
|
||||
to_chat(src, "<span class='filter_notice'><font color='red'>You are dead! You have no mind to store memory!</font></span>")
|
||||
|
||||
/mob/observer/dead/add_memory()
|
||||
set hidden = 1
|
||||
to_chat(src, "<font color='red'>You are dead! You have no mind to store memory!</font>")
|
||||
to_chat(src, "<span class='filter_notice'><font color='red'>You are dead! You have no mind to store memory!</font></span>")
|
||||
|
||||
/mob/observer/dead/Post_Incorpmove()
|
||||
stop_following()
|
||||
@@ -578,17 +578,18 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
|
||||
var/pressure = environment.return_pressure()
|
||||
var/total_moles = environment.total_moles
|
||||
|
||||
to_chat(src, "<font color='blue'><B>Results:</B></font>")
|
||||
var/list/gas_analyzing = list()
|
||||
gas_analyzing += "<B>Results:</B>"
|
||||
if(abs(pressure - ONE_ATMOSPHERE) < 10)
|
||||
to_chat(src, "<font color='blue'>Pressure: [round(pressure,0.1)] kPa</font>")
|
||||
gas_analyzing += "Pressure: [round(pressure,0.1)] kPa"
|
||||
else
|
||||
to_chat(src, "<font color='red'>Pressure: [round(pressure,0.1)] kPa</font>")
|
||||
gas_analyzing += "<font color='red'>Pressure: [round(pressure,0.1)] kPa</font>"
|
||||
if(total_moles)
|
||||
for(var/g in environment.gas)
|
||||
to_chat(src, "<font color='blue'>[gas_data.name[g]]: [round((environment.gas[g] / total_moles) * 100)]% ([round(environment.gas[g], 0.01)] moles)</font>")
|
||||
to_chat(src, "<font color='blue'>Temperature: [round(environment.temperature-T0C,0.1)]°C ([round(environment.temperature,0.1)]K)</font>")
|
||||
to_chat(src, "<font color='blue'>Heat Capacity: [round(environment.heat_capacity(),0.1)]</font>")
|
||||
gas_analyzing += "[gas_data.name[g]]: [round((environment.gas[g] / total_moles) * 100)]% ([round(environment.gas[g], 0.01)] moles)"
|
||||
gas_analyzing += "Temperature: [round(environment.temperature-T0C,0.1)]°C ([round(environment.temperature,0.1)]K)"
|
||||
gas_analyzing += "Heat Capacity: [round(environment.heat_capacity(),0.1)]"
|
||||
to_chat(src, "<span class='notice'>[jointext(gas_analyzing, "<br>")]</span>")
|
||||
|
||||
/mob/observer/dead/verb/check_radiation()
|
||||
set name = "Check Radiation"
|
||||
@@ -675,7 +676,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
set desc = "If the round is sufficiently spooky, write a short message in blood on the floor or a wall. Remember, no IC in OOC or OOC in IC."
|
||||
|
||||
if(!(config.cult_ghostwriter))
|
||||
to_chat(src, "<font color='red'>That verb is not currently permitted.</font>")
|
||||
to_chat(src, "<span class='filter_notice'><font color='red'>That verb is not currently permitted.</font></span>")
|
||||
return
|
||||
|
||||
if (!src.stat)
|
||||
@@ -690,7 +691,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
ghosts_can_write = 1
|
||||
|
||||
if(!ghosts_can_write && !check_rights(R_ADMIN|R_EVENT|R_FUN, 0)) //Let's allow for admins to write in blood for events and the such.
|
||||
to_chat(src, "<font color='red'>The veil is not thin enough for you to do that.</font>")
|
||||
to_chat(src, "<span class='filter_notice'><font color='red'>The veil is not thin enough for you to do that.</font></span>")
|
||||
return
|
||||
|
||||
var/list/choices = list()
|
||||
@@ -740,19 +741,19 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
W.update_icon()
|
||||
W.message = message
|
||||
W.add_hiddenprint(src)
|
||||
W.visible_message("<font color='red'>Invisible fingers crudely paint something in blood on [T]...</font>")
|
||||
W.visible_message("<span class='filter_notice'><font color='red'>Invisible fingers crudely paint something in blood on [T]...</font></span>")
|
||||
|
||||
/mob/observer/dead/pointed(atom/A as mob|obj|turf in view())
|
||||
if(!..())
|
||||
return 0
|
||||
usr.visible_message("<span class='deadsay'><b>[src]</b> points to [A]</span>")
|
||||
usr.visible_message("<span class='deadsay'><b>[src]</b> points to [A].</span>")
|
||||
return 1
|
||||
|
||||
/mob/observer/dead/proc/manifest(mob/user)
|
||||
is_manifest = TRUE
|
||||
verbs |= /mob/observer/dead/proc/toggle_visibility
|
||||
verbs |= /mob/observer/dead/proc/ghost_whisper
|
||||
to_chat(src, "<font color='purple'>As you are now in the realm of the living, you can whisper to the living with the <b>Spectral Whisper</b> verb, inside the IC tab.</font>")
|
||||
to_chat(src, "<span class='filter_notice'><font color='purple'>As you are now in the realm of the living, you can whisper to the living with the <b>Spectral Whisper</b> verb, inside the IC tab.</font></span>")
|
||||
if(plane != PLANE_WORLD)
|
||||
user.visible_message( \
|
||||
"<span class='warning'>\The [user] drags ghost, [src], to our plane of reality!</span>", \
|
||||
@@ -787,7 +788,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
|
||||
var/toggled_invisible
|
||||
if(!forced && plane == PLANE_GHOSTS && world.time < toggled_invisible + 600)
|
||||
to_chat(src, "You must gather strength before you can turn visible again...")
|
||||
to_chat(src, "<span class='filter_notice'>You must gather strength before you can turn visible again...</span>")
|
||||
return
|
||||
|
||||
if(plane == PLANE_WORLD)
|
||||
@@ -825,7 +826,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
set category = "Ghost"
|
||||
ghostvision = !ghostvision
|
||||
updateghostsight()
|
||||
to_chat(src, "You [ghostvision ? "now" : "no longer"] have ghost vision.")
|
||||
to_chat(src, "<span class='filter_notice'>You [ghostvision ? "now" : "no longer"] have ghost vision.</span>")
|
||||
|
||||
/mob/observer/dead/verb/toggle_darkness()
|
||||
set name = "Toggle Darkness"
|
||||
@@ -833,7 +834,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
set category = "Ghost"
|
||||
seedarkness = !seedarkness
|
||||
updateghostsight()
|
||||
to_chat(src, "You [seedarkness ? "now" : "no longer"] see darkness.")
|
||||
to_chat(src, "<span class='filter_notice'>You [seedarkness ? "now" : "no longer"] see darkness.</span>")
|
||||
|
||||
/mob/observer/dead/proc/updateghostsight()
|
||||
plane_holder.set_vis(VIS_FULLBRIGHT, !seedarkness) //Inversion, because "not seeing" the darkness is "seeing" the lighting plane master.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -115,7 +115,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>"
|
||||
|
||||
@@ -133,15 +133,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) + "[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) + "[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)
|
||||
@@ -172,7 +172,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
|
||||
|
||||
@@ -185,45 +185,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)
|
||||
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)
|
||||
var/final_message = "[part_a][speaker_name][part_b][formatted]"
|
||||
/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)
|
||||
var/final_message = "[part_a][track][part_b][formatted]"
|
||||
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)
|
||||
var/time = say_timestamp()
|
||||
var/final_message = "[part_a][speaker_name][part_b][formatted]"
|
||||
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)
|
||||
var/time = say_timestamp()
|
||||
var/final_message = "[part_a][track][part_b][formatted]"
|
||||
/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/datum/language/language, var/mob/speaker = null)
|
||||
@@ -231,7 +235,7 @@
|
||||
return
|
||||
|
||||
if(say_understands(speaker, language))
|
||||
message = "<B>[speaker]</B> [verb], \"[message]\""
|
||||
message = "<span class='game say'><B>[speaker]</B> [verb], \"[message]\"</span>"
|
||||
else
|
||||
var/adverb
|
||||
var/length = length(message) * pick(0.8, 0.9, 1.0, 1.1, 1.2) //Adds a little bit of fuzziness
|
||||
@@ -241,7 +245,7 @@
|
||||
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>"
|
||||
|
||||
show_message(message, type = 1) // Type 1 is visual message
|
||||
|
||||
|
||||
@@ -369,7 +369,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"))
|
||||
@@ -386,17 +386,19 @@
|
||||
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>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>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"))
|
||||
@@ -419,11 +421,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"))
|
||||
@@ -485,7 +487,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"))
|
||||
@@ -502,18 +504,20 @@
|
||||
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>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>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"))
|
||||
@@ -536,11 +540,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"))
|
||||
@@ -696,7 +700,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
|
||||
@@ -787,7 +791,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"
|
||||
@@ -804,19 +808,19 @@
|
||||
var/list/creatures = list()
|
||||
for(var/mob/living/carbon/h in mob_list)
|
||||
creatures += h
|
||||
var/mob/target = input("Who do you want to project your mind to ?") as null|anything in creatures
|
||||
var/mob/target = input("Who do you want to project your mind to?") as null|anything in creatures
|
||||
if (isnull(target))
|
||||
return
|
||||
|
||||
var/say = sanitize(input("What do you wish to say"))
|
||||
var/say = sanitize(input("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"
|
||||
@@ -846,7 +850,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
|
||||
@@ -1047,10 +1051,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>")
|
||||
@@ -1058,7 +1062,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)
|
||||
@@ -1342,11 +1346,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
|
||||
|
||||
@@ -33,7 +33,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
|
||||
@@ -48,7 +48,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))
|
||||
@@ -316,7 +316,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)
|
||||
@@ -409,9 +409,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
|
||||
|
||||
@@ -421,9 +421,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
|
||||
|
||||
|
||||
@@ -249,21 +249,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.
|
||||
|
||||
@@ -428,7 +428,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]")
|
||||
@@ -436,7 +436,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
|
||||
@@ -474,7 +474,7 @@ emp_act
|
||||
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
|
||||
|
||||
@@ -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(input("Message:", "Psychic Whisper") as text|null)
|
||||
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))
|
||||
|
||||
@@ -69,7 +69,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()
|
||||
@@ -662,7 +662,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
|
||||
@@ -1012,7 +1012,7 @@
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(H.in_throw_mode && H.a_intent == I_HELP && unEquip(item))
|
||||
H.put_in_hands(item) // 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 [item].", SPAN_NOTICE("You give \the [target] \a [item]."))
|
||||
visible_message("<span class='filter_notice'><b>[src]</b> hands \the [H] \a [item].</span>", SPAN_NOTICE("You give \the [target] \a [item]."))
|
||||
else
|
||||
to_chat(src, SPAN_NOTICE("You offer \the [item] to \the [target]."))
|
||||
do_give(H)
|
||||
|
||||
@@ -274,10 +274,10 @@
|
||||
miss_chance = max(15*(distance-2), 0)
|
||||
|
||||
if (prob(miss_chance))
|
||||
visible_message("<font color='blue'>\The [O] misses [src] narrowly!</font>")
|
||||
visible_message("<span class='notice'>\The [O] misses [src] narrowly!</span>")
|
||||
return
|
||||
|
||||
src.visible_message("<font color='red'>[src] has been hit by [O].</font>")
|
||||
src.visible_message("<span class='filter_warning'><font color='red'>[src] has been hit by [O].</font></span>")
|
||||
var/armor = run_armor_check(null, "melee")
|
||||
var/soaked = get_armor_soak(null, "melee")
|
||||
|
||||
@@ -304,7 +304,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
|
||||
|
||||
@@ -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/material/twohanded/riding_crop
|
||||
to_chat(src, "Rider control restricted.")
|
||||
to_chat(src, "<span class='filter_notice'>Rider control restricted.</span>")
|
||||
return
|
||||
return
|
||||
|
||||
@@ -204,12 +204,12 @@ var/global/list/ai_verbs_default = list(
|
||||
new /obj/machinery/ai_powersupply(src)
|
||||
|
||||
/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)
|
||||
@@ -223,7 +223,7 @@ var/global/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()
|
||||
@@ -376,7 +376,7 @@ var/global/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 = input(usr, "Please write a message to announce to the station crew.", "A.I. Announcement")
|
||||
if(!input)
|
||||
@@ -486,7 +486,7 @@ var/global/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"])
|
||||
@@ -586,7 +586,7 @@ var/global/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()
|
||||
@@ -737,7 +737,7 @@ var/global/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)
|
||||
@@ -784,20 +784,20 @@ var/global/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 = 0
|
||||
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 = 1
|
||||
return
|
||||
else
|
||||
@@ -811,7 +811,7 @@ var/global/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)
|
||||
|
||||
@@ -827,7 +827,7 @@ var/global/list/ai_verbs_default = list(
|
||||
set desc = "Toggles hologram movement based on moving with your virtual eye."
|
||||
|
||||
hologram_follow = !hologram_follow
|
||||
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)
|
||||
@@ -988,7 +988,7 @@ var/global/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)
|
||||
|
||||
@@ -275,7 +275,7 @@
|
||||
|
||||
//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
|
||||
@@ -300,7 +300,7 @@
|
||||
card.screen_loc = null
|
||||
|
||||
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>")
|
||||
|
||||
/mob/living/silicon/pai/verb/fold_up()
|
||||
set category = "pAI Commands"
|
||||
@@ -358,7 +358,7 @@
|
||||
rig.force_rest(src)
|
||||
else
|
||||
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>")
|
||||
|
||||
canmove = !resting
|
||||
|
||||
@@ -390,7 +390,7 @@
|
||||
return
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
if(istype(T)) T.visible_message("<b>[src]</b> neatly folds inwards, compacting down to a rectangular card.")
|
||||
if(istype(T)) 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()
|
||||
@@ -476,6 +476,6 @@
|
||||
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()
|
||||
|
||||
@@ -366,7 +366,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()
|
||||
|
||||
/mob/living/silicon/robot/verb/self_diagnosis_verb()
|
||||
@@ -410,7 +410,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
|
||||
@@ -477,7 +477,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
|
||||
|
||||
@@ -501,7 +501,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/aiModule/M = W
|
||||
@@ -514,7 +514,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/weldingtool/WT = W
|
||||
if (WT.remove_fuel(0))
|
||||
@@ -523,14 +523,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))
|
||||
@@ -538,23 +538,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)
|
||||
@@ -577,7 +577,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
|
||||
@@ -590,25 +590,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/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
|
||||
@@ -621,11 +621,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()
|
||||
|
||||
@@ -633,21 +633,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
|
||||
|
||||
@@ -655,36 +655,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
|
||||
@@ -738,7 +738,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
|
||||
@@ -746,7 +746,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)
|
||||
@@ -834,7 +834,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)
|
||||
@@ -897,7 +897,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
|
||||
@@ -921,7 +921,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
|
||||
|
||||
@@ -938,9 +938,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
|
||||
@@ -973,7 +973,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)
|
||||
@@ -1029,7 +1029,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 = "Set Sensor Augmentation"
|
||||
@@ -1079,16 +1079,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)
|
||||
@@ -1108,29 +1108,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
|
||||
@@ -1140,7 +1140,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()
|
||||
@@ -1175,8 +1175,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 = alert(user, "This will destroy the item inside forever. Are you sure?","Confirm Analyze","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/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 ..()
|
||||
|
||||
@@ -289,7 +292,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
|
||||
|
||||
@@ -337,7 +340,7 @@
|
||||
deploy_paper(get_turf(src))
|
||||
|
||||
/obj/item/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/paper(T)
|
||||
|
||||
|
||||
@@ -377,7 +380,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)
|
||||
@@ -391,7 +394,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
|
||||
|
||||
@@ -437,7 +440,7 @@
|
||||
|
||||
/obj/item/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/inflatable_dispenser/afterattack(var/atom/A, var/mob/user)
|
||||
..(A, user)
|
||||
@@ -454,7 +457,7 @@
|
||||
/obj/item/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))
|
||||
@@ -463,7 +466,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))
|
||||
@@ -471,40 +474,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/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
|
||||
|
||||
@@ -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/hologram = T.masters[src]
|
||||
var/list/in_range = get_mobs_and_objs_in_view_fast(get_turf(hologram), world.view, 2) //Emotes are displayed from the hologram, not the pad
|
||||
var/list/m_viewers = in_range["mobs"]
|
||||
@@ -109,7 +109,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
|
||||
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
//Disable Medical planes
|
||||
plane_holder.set_vis(VIS_CH_STATUS,FALSE)
|
||||
plane_holder.set_vis(VIS_CH_HEALTH,FALSE)
|
||||
to_chat(src, "Sensor augmentations disabled.")
|
||||
to_chat(src, "<span class='filter_notice'>Sensor augmentations disabled.</span>")
|
||||
|
||||
hudmode = sensor_type //This is checked in examine.dm on humans, so they can see medical/security records depending on mode
|
||||
|
||||
@@ -362,20 +362,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()
|
||||
|
||||
+11
-11
@@ -66,7 +66,7 @@
|
||||
return
|
||||
// Added voice muffling for Issue 41.
|
||||
if(stat == UNCONSCIOUS || sleeping > 0)
|
||||
to_chat(src, "<I>... You can almost hear someone talking ...</I>")
|
||||
to_chat(src, "<span class='filter_notice'><I>... You can almost hear someone talking ...</I></span>")
|
||||
else
|
||||
to_chat(src,msg)
|
||||
if(teleop)
|
||||
@@ -307,8 +307,8 @@
|
||||
|
||||
/mob/proc/warn_flavor_changed()
|
||||
if(flavor_text && flavor_text != "") // don't spam people that don't use it!
|
||||
to_chat(src, "<h2 class='alert'>OOC Warning:</h2>")
|
||||
to_chat(src, "<span class='alert'>Your flavor text is likely out of date! <a href='byond://?src=\ref[src];flavor_change=1'>Change</a></span>")
|
||||
to_chat(src, "<span class='filter_notice'><h2 class='alert'>OOC Warning:</h2></span>")
|
||||
to_chat(src, "<span class='filter_notice'><span class='alert'>Your flavor text is likely out of date! <a href='byond://?src=\ref[src];flavor_change=1'>Change</a></span></span>")
|
||||
|
||||
/mob/proc/print_flavor_text()
|
||||
if (flavor_text && flavor_text != "")
|
||||
@@ -415,7 +415,7 @@
|
||||
if(client.holder && (client.holder.rights & R_ADMIN|R_EVENT))
|
||||
is_admin = 1
|
||||
else if(stat != DEAD || istype(src, /mob/new_player))
|
||||
to_chat(usr, "<font color='blue'>You must be observing to use this!</font>")
|
||||
to_chat(usr, "<span class='filter_notice'><font color='blue'>You must be observing to use this!</font></span>")
|
||||
return
|
||||
|
||||
if(is_admin && stat == DEAD)
|
||||
@@ -561,7 +561,7 @@
|
||||
playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 25) //Quieter than hugging/grabbing but we still want some audio feedback
|
||||
|
||||
if(H.pull_damage())
|
||||
to_chat(src, "<font color='red'><B>Pulling \the [H] in their current condition would probably be a bad idea.</B></font>")
|
||||
to_chat(src, "<span class='filter_notice'><font color='red'><B>Pulling \the [H] in their current condition would probably be a bad idea.</B></font></span>")
|
||||
|
||||
//Attempted fix for people flying away through space when cuffed and dragged.
|
||||
if(ismob(AM))
|
||||
@@ -866,11 +866,11 @@
|
||||
usr.setClickCooldown(20)
|
||||
|
||||
if(usr.stat == 1)
|
||||
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
|
||||
@@ -884,9 +884,9 @@
|
||||
valid_objects = get_visible_implants(0)
|
||||
if(!valid_objects.len)
|
||||
if(self)
|
||||
to_chat(src, "You have nothing stuck in your body that is large enough to remove.")
|
||||
to_chat(src, "<span class='filter_notice'>You have nothing stuck in your body that is large enough to remove.</span>")
|
||||
else
|
||||
to_chat(U, "[src] has nothing stuck in their wounds that is large enough to remove.")
|
||||
to_chat(U, "<span class='filter_notice'>[src] has nothing stuck in their wounds that is large enough to remove.</span>")
|
||||
return
|
||||
|
||||
var/obj/item/selection = input("What do you want to yank out?", "Embedded objects") in valid_objects
|
||||
@@ -974,9 +974,9 @@
|
||||
set_face_dir()
|
||||
|
||||
if(!facing_dir)
|
||||
to_chat(usr, "You are now not facing anything.")
|
||||
to_chat(usr, "<span class='filter_notice'>You are now not facing anything.</span>")
|
||||
else
|
||||
to_chat(usr, "You are now facing [dir2text(facing_dir)].")
|
||||
to_chat(usr, "<span class='filter_notice'>You are now facing [dir2text(facing_dir)].</span>")
|
||||
|
||||
/mob/proc/set_face_dir(var/newdir)
|
||||
if(newdir == facing_dir)
|
||||
|
||||
@@ -331,7 +331,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))
|
||||
|
||||
@@ -159,9 +159,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()
|
||||
|
||||
@@ -81,7 +81,7 @@ var/global/list/obj/machinery/message_server/message_servers = list()
|
||||
|
||||
/obj/machinery/message_server/examine(mob/user, distance, infix, suffix)
|
||||
. = ..()
|
||||
. += "It appears to be [active ? "online" : "offline"]."
|
||||
. += "It appears to be [active ? "online" : "offline"]."
|
||||
|
||||
/obj/machinery/message_server/proc/GenerateKey()
|
||||
//Feel free to move to Helpers.
|
||||
@@ -140,7 +140,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()
|
||||
|
||||
@@ -152,7 +152,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)
|
||||
|
||||
|
||||
@@ -149,9 +149,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
|
||||
|
||||
@@ -120,7 +120,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/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/disk/tech_disk))
|
||||
|
||||
@@ -40,8 +40,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)
|
||||
..()
|
||||
|
||||
@@ -90,8 +90,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)
|
||||
..()
|
||||
@@ -143,8 +143,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)
|
||||
..()
|
||||
@@ -201,8 +201,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)
|
||||
..()
|
||||
@@ -242,8 +242,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)
|
||||
..()
|
||||
|
||||
@@ -291,8 +291,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)
|
||||
..()
|
||||
|
||||
@@ -36,8 +36,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)
|
||||
@@ -70,8 +70,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)
|
||||
@@ -103,8 +103,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)
|
||||
|
||||
@@ -46,8 +46,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)
|
||||
..()
|
||||
|
||||
@@ -91,8 +91,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)
|
||||
..()
|
||||
|
||||
@@ -135,8 +135,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)
|
||||
..()
|
||||
|
||||
@@ -181,8 +181,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)
|
||||
..()
|
||||
|
||||
@@ -229,7 +229,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)
|
||||
..()
|
||||
|
||||
@@ -281,8 +281,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)
|
||||
..()
|
||||
|
||||
@@ -326,8 +326,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)
|
||||
..()
|
||||
|
||||
|
||||
@@ -62,8 +62,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
|
||||
..()
|
||||
@@ -96,8 +96,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
|
||||
..()
|
||||
|
||||
@@ -50,8 +50,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
|
||||
@@ -97,8 +97,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)
|
||||
@@ -134,8 +134,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
|
||||
|
||||
@@ -36,8 +36,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)
|
||||
@@ -73,8 +73,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)
|
||||
@@ -114,8 +114,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)
|
||||
@@ -153,8 +153,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)
|
||||
@@ -192,8 +192,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)
|
||||
@@ -231,8 +231,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)
|
||||
|
||||
@@ -96,8 +96,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)
|
||||
..()
|
||||
@@ -191,8 +191,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)
|
||||
..()
|
||||
|
||||
@@ -249,8 +249,8 @@
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/internal/remove_organ/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
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)
|
||||
..()
|
||||
|
||||
@@ -329,8 +329,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)
|
||||
..()
|
||||
|
||||
@@ -386,8 +386,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)
|
||||
..()
|
||||
|
||||
@@ -445,8 +445,8 @@
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/internal/rip_organ/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts ripping [target]'s [target.op_stage.current_organ] out with \the [tool].", \
|
||||
"You start ripping [target]'s [target.op_stage.current_organ] out with \the [tool].")
|
||||
user.visible_message("<span class='filter_notice'>[user] starts ripping [target]'s [target.op_stage.current_organ] out with \the [tool].</span>", \
|
||||
"<span class='filter_notice'>You start ripping [target]'s [target.op_stage.current_organ] out with \the [tool].</span>")
|
||||
target.custom_pain("Someone's ripping out your [target.op_stage.current_organ]!", 100)
|
||||
..()
|
||||
|
||||
|
||||
@@ -36,8 +36,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)
|
||||
..()
|
||||
|
||||
@@ -89,8 +89,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)
|
||||
..()
|
||||
|
||||
@@ -146,8 +146,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)
|
||||
..()
|
||||
|
||||
@@ -215,8 +215,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)
|
||||
|
||||
@@ -48,8 +48,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)
|
||||
@@ -85,8 +85,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)
|
||||
@@ -122,8 +122,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)
|
||||
@@ -162,8 +162,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)
|
||||
@@ -210,8 +210,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)
|
||||
@@ -262,8 +262,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)
|
||||
..()
|
||||
@@ -334,8 +334,8 @@
|
||||
return ..() && organ_to_remove
|
||||
|
||||
/datum/surgery_step/robotics/detatch_organ_robotic/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
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)
|
||||
@@ -383,8 +383,8 @@
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/robotics/attach_organ_robotic/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>")
|
||||
..()
|
||||
|
||||
/datum/surgery_step/robotics/attach_organ_robotic/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -443,8 +443,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)
|
||||
@@ -530,8 +530,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()
|
||||
|
||||
@@ -261,6 +261,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
|
||||
}
|
||||
],
|
||||
},
|
||||
@@ -568,6 +576,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));
|
||||
@@ -645,7 +658,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)) {
|
||||
@@ -660,13 +673,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>";
|
||||
|
||||
|
||||
@@ -73,13 +73,13 @@
|
||||
viables.Remove(type)
|
||||
construction[button_desc] = type
|
||||
|
||||
fail_message = "<font color='blue'>[bicon(src)] a [pick("loud","soft","sinister","eery","triumphant","depressing","cheerful","angry")] \
|
||||
fail_message = "<span class='notice'>[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())
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
var/atom/toplevelholder = target
|
||||
while (!istype(toplevelholder.loc, /turf))
|
||||
toplevelholder = toplevelholder.loc
|
||||
toplevelholder.visible_message("<font color='red'>[bicon(toplevelholder)] [toplevelholder] [display_msg]</font>")
|
||||
toplevelholder.visible_message("<span class='filter_notice'><font color='red'>[bicon(toplevelholder)] [toplevelholder] [display_msg]</font></span>")
|
||||
return TRUE
|
||||
|
||||
|
||||
|
||||
@@ -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()
|
||||
@@ -239,7 +239,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]
|
||||
@@ -260,7 +260,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]
|
||||
@@ -268,10 +268,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
|
||||
@@ -287,10 +287,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