diff --git a/code/__defines/chat.dm b/code/__defines/chat.dm
index 3fb1d2e2dde..1a9ac039146 100644
--- a/code/__defines/chat.dm
+++ b/code/__defines/chat.dm
@@ -34,6 +34,3 @@
#define MESSAGE_TYPE_ADMINLOG "adminlog"
#define MESSAGE_TYPE_ATTACKLOG "attacklog"
#define MESSAGE_TYPE_DEBUG "debug"
-
-/// Adds a generic box around whatever message you're sending in chat. Really makes things stand out.
-#define examine_block(str) ("
" + str + "
")
diff --git a/code/__defines/span_vr.dm b/code/__defines/span_vr.dm
index eef8cddad75..347676a97d9 100644
--- a/code/__defines/span_vr.dm
+++ b/code/__defines/span_vr.dm
@@ -1,5 +1,8 @@
// Sorted by however I felt like it
-// We have two other ways of doing this, so why not a third. This one atleast has more span options.
+
+// Adds a generic box around whatever message you're sending in chat. Really makes things stand out.
+#define examine_block(str) ("" + str + "
")
+
#define span_ooc(str) ("" + str + "")
#define span_looc(str) ("" + str + "")
#define span_rlooc(str) ("" + str + "")
@@ -50,12 +53,12 @@
#define span_hear(str) ("" + str + "")
#define span_attack(str) ("" + str + "")
-#define span_moderate(str) ("" + str + "")
#define span_disarm(str) ("" + str + "")
#define span_passive(str) ("" + str + "")
#define span_critical(str) ("" + str + "")
#define span_danger(str) ("" + str + "")
+#define span_bolddanger(str) ("" + str + "")
#define span_userdanger(str) ("" + str + "")
#define span_warning(str) ("" + str + "")
#define span_boldwarning(str) ("" + str + "")
@@ -74,8 +77,6 @@
#define span_sinister(str) ("" + str + "")
-#define span_reflex_shoot(str) ("" + str + "")
-
/* Direct communication spans */
#define span_psay(str) ("" + str + "")
diff --git a/code/datums/outfits/outfit.dm b/code/datums/outfits/outfit.dm
index 7130c724b4d..ed8e81f9928 100644
--- a/code/datums/outfits/outfit.dm
+++ b/code/datums/outfits/outfit.dm
@@ -183,7 +183,7 @@ var/list/outfits_decls_by_type_
pda.ownjob = assignment
pda.ownrank = rank
pda.name = "PDA-[H.real_name] ([assignment])"
- if(H.client.prefs.ringtone) // if null we use the job default
+ if(H.client?.prefs.ringtone) // if null we use the job default
pda.ttone = H.client.prefs.ringtone
return pda
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 13dcb633fd3..4f8f7cac36d 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -137,7 +137,7 @@
for(var/I in req_components)
if(istype(P, text2path(I)) && (req_components[I] > 0))
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
- if(P.is_cable_coil))
+ if(P.is_cable_coil)
var/obj/item/stack/cable_coil/CP = P
if(CP.get_amount() > 1)
var/camt = min(CP.amount, req_components[I]) // amount of cable to take, idealy amount required, but limited by amount provided
diff --git a/code/game/objects/items/devices/scanners/health.dm b/code/game/objects/items/devices/scanners/health.dm
index ad8029bc78b..37ba27100eb 100644
--- a/code/game/objects/items/devices/scanners/health.dm
+++ b/code/game/objects/items/devices/scanners/health.dm
@@ -366,7 +366,7 @@
else
dat += span_notice("Blood Level Normal: [blood_percent]% [blood_volume]cl. Type: [blood_type]. Basis: [blood_reagent].")
dat += "
"
- dat += span_notice("Subject's pulse: [H.pulse == PULSE_THREADY || H.pulse == PULSE_NONE ? span_red(H.get_pulse(GETPULSE_TOOL)) : span_blue(H.get_pulse(GETPULSE_TOOL))] bpm.") // VORE Edit: Missed a linebreak here.
+ dat += span_notice("Subject's pulse: [H.pulse == PULSE_THREADY || H.pulse == PULSE_NONE ? span_red(H.get_pulse(GETPULSE_TOOL) + " bpm") : span_blue(H.get_pulse(GETPULSE_TOOL) + " bpm")].") // VORE Edit: Missed a linebreak here.
dat += "
"
if(istype(H.species, /datum/species/xenochimera)) // VOREStation Edit Start: Visible feedback for medmains on Xenochimera.
if(H.stat == DEAD && H.revive_ready == REVIVING_READY && !H.hasnutriment())
diff --git a/code/game/objects/items/devices/tvcamera.dm b/code/game/objects/items/devices/tvcamera.dm
index f439221d299..8ddce4ed256 100644
--- a/code/game/objects/items/devices/tvcamera.dm
+++ b/code/game/objects/items/devices/tvcamera.dm
@@ -133,8 +133,9 @@
if(!A || QDELETED(A))
show_tvs(loc)
- if(get_dist(get_turf(src), get_turf(A)) > 5)
+ if(get_dist(get_turf(src), get_turf(A)) > 0) // No realtime updates
show_tvs(loc)
+ update_feed()
/obj/item/tvcamera/update_icon()
..()
@@ -150,6 +151,9 @@
H.update_inv_l_hand()
H.update_inv_belt()
+/obj/item/tvcamera/proc/update_feed()
+ if(camera.status)
+ SEND_SIGNAL(camera, COMSIG_OBSERVER_MOVED) // Forward the movement signal
//Assembly by roboticist
diff --git a/code/modules/admin/create_object.dm b/code/modules/admin/create_object.dm
index 47f034287d6..8892232165f 100644
--- a/code/modules/admin/create_object.dm
+++ b/code/modules/admin/create_object.dm
@@ -21,8 +21,7 @@
var/list/choices = list("/obj",
"/obj/structure",
"/obj/item",
- "/obj/item",
- "/obj/item",
+ "/obj/item/melee",
"/obj/item/gun",
"/obj/item/reagent_containers",
"/obj/item/reagent_containers/food",
diff --git a/code/modules/casino/slots.dm b/code/modules/casino/slots.dm
index c3d490580d2..bfc9e074911 100644
--- a/code/modules/casino/slots.dm
+++ b/code/modules/casino/slots.dm
@@ -59,7 +59,7 @@
/obj/machinery/slot_machine/attackby(obj/item/W as obj, mob/user as mob)
if(busy)
- to_chat(user,"The slot machine is currently running. ")
+ to_chat(user,span_notice("The slot machine is currently running."))
return
if(W.has_tool_quality(TOOL_WRENCH))
playsound(src, W.usesound, 100, 1)
@@ -104,10 +104,10 @@
if (isbroken)
return
if (busy)
- to_chat(user,"The slot machine is currently rolling. ")
+ to_chat(user,span_notice("The slot machine is currently rolling."))
return
if(cashmoney.worth < 5)
- to_chat(user,"You dont have enough chips to gamble! ")
+ to_chat(user,span_notice("You dont have enough chips to gamble!"))
return
to_chat(user,span_notice("You puts 5 credits in the slot machine and presses start."))
@@ -289,7 +289,7 @@
/obj/machinery/station_slot_machine/attackby(obj/item/W as obj, mob/user as mob)
if(busy)
- to_chat(user,"The slot machine is currently running. ")
+ to_chat(user,span_notice("The slot machine is currently running."))
return
if(W.has_tool_quality(TOOL_WRENCH))
playsound(src, W.usesound, 100, 1)
@@ -333,10 +333,10 @@
if (isbroken)
return
if (busy)
- to_chat(user,"The slot machine is currently rolling. ")
+ to_chat(user,span_notice("The slot machine is currently rolling."))
return
if(cashmoney.worth < 5)
- to_chat(user,"You dont have enough Thalers to gamble! ")
+ to_chat(user,span_notice("You dont have enough Thalers to gamble!"))
return
to_chat(user,span_notice("You puts 5 Thalers in the slot machine and presses start."))
diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm
index 56460d2990c..794ef104722 100644
--- a/code/modules/client/verbs/ooc.dm
+++ b/code/modules/client/verbs/ooc.dm
@@ -79,7 +79,7 @@
if(holder && !holder.fakekey && (holder.rights & R_ADMIN|R_FUN|R_EVENT) && config.allow_admin_ooccolor && (src.prefs.ooccolor != initial(src.prefs.ooccolor))) // keeping this for the badmins
to_chat(target, span_ooc("" + create_text_tag("ooc", "OOC:", target) + " [display_name]: [span_message(msg)]"))
else
- to_chat(target, span_ooc("" + create_text_tag("ooc", "OOC:", target) + " [display_name]: " + span_message(msg)))
+ to_chat(target, span_ooc("" + create_text_tag("ooc", "OOC:", target) + " [display_name]: " + span_message(msg)) + "")
/client/verb/looc(msg as text)
set name = "LOOC"
diff --git a/code/modules/economy/coins.dm b/code/modules/economy/coins.dm
index 63235dcd6c6..1d29b160611 100644
--- a/code/modules/economy/coins.dm
+++ b/code/modules/economy/coins.dm
@@ -100,5 +100,5 @@
comment = "tails"
else if(result == 2)
comment = "heads"
- user.visible_message(span_notice("[user] has thrown \the [src]. It lands on [comment]! "), \
- span_notice("You throw \the [src]. It lands on [comment]! "))
+ user.visible_message(span_notice("[user] has thrown \the [src]. It lands on [comment]!"), \
+ span_notice("You throw \the [src]. It lands on [comment]!"))
diff --git a/code/modules/events/communications_blackout.dm b/code/modules/events/communications_blackout.dm
index 85464795d54..1c878358618 100644
--- a/code/modules/events/communications_blackout.dm
+++ b/code/modules/events/communications_blackout.dm
@@ -1,10 +1,10 @@
/datum/event/communications_blackout/announce()
var/alert = pick( "Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you*%fj00)`5vc-BZZT", \
- "Ionospheric anomalies detected. Temporary telecommunication failu*3mga;b4;'1v�-BZZZT", \
+ "Ionospheric anomalies detected. Temporary telecommunication failu*3mga;b4;'1v¬-BZZZT", \
"Ionospheric anomalies detected. Temporary telec#MCi46:5.;@63-BZZZZT", \
"Ionospheric anomalies dete'fZ\\kg5_0-BZZZZZT", \
- "Ionospheri:%� MCayj^j<.3-BZZZZZZT", \
- "#4nd%;f4y6,>�%-BZZZZZZZT")
+ "Ionospheri:%£ MCayj^j<.3-BZZZZZZT", \
+ "#4nd%;f4y6,>£%-BZZZZZZZT")
for(var/mob/living/silicon/ai/A in player_list) //AIs are always aware of communication blackouts.
to_chat(A, "
")
diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm
index 787d331cec8..5628effdcf0 100644
--- a/code/modules/food/food/snacks.dm
+++ b/code/modules/food/food/snacks.dm
@@ -320,7 +320,7 @@
user.visible_message(span_notice("\The [user] crudely slices \the [src] with [W]!"), span_notice("You crudely slice \the [src] with your [W]!"))
slices_lost = rand(1,min(1,round(slices_num/2)))
else
- user.visible_message("\The [user] slices \the [src]!", span_notice("You slice \the [src]!"))
+ user.visible_message(span_notice("\The [user] slices \the [src]!"), span_notice("You slice \the [src]!"))
var/reagents_per_slice = reagents.total_volume/slices_num
for(var/i=1 to (slices_num-slices_lost))
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index 769dbc52333..8047bdd0240 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -295,8 +295,8 @@ Book Cart End
/obj/item/book/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(user.zone_sel.selecting == O_EYES)
- user.visible_message(span_notice("You open up the book and show it to [M]. "), \
- span_notice(" [user] opens up a book and shows it to [M]. "))
+ user.visible_message(span_notice("You open up the book and show it to [M]."), \
+ span_notice(" [user] opens up a book and shows it to [M]."))
M << browse("Penned by [author].
" + "[dat]", "window=book")
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN) //to prevent spam
diff --git a/code/modules/mining/mine_outcrops.dm b/code/modules/mining/mine_outcrops.dm
index 2130ce68e9d..c8da8a4de9f 100644
--- a/code/modules/mining/mine_outcrops.dm
+++ b/code/modules/mining/mine_outcrops.dm
@@ -100,7 +100,7 @@
if (istype(W, /obj/item/melee/shock_maul))
var/obj/item/melee/shock_maul/S = W
if(!S.wielded || !S.status)
- to_chat(user, span_warning("\The [src] must be wielded in two hands and powered on to be used for mining!"))
+ to_chat(user, span_warning("\The [S] must be wielded in two hands and powered on to be used for mining!"))
return
to_chat(user, span_notice("You pulverize \the [src]!"))
for(var/i=0;i<(rand(mindrop,upperdrop));i++)
diff --git a/code/modules/mob/new_player/login.dm b/code/modules/mob/new_player/login.dm
index 53b29e8ae9a..cfbcebbf420 100644
--- a/code/modules/mob/new_player/login.dm
+++ b/code/modules/mob/new_player/login.dm
@@ -30,7 +30,7 @@ var/obj/effect/lobby_image = new /obj/effect/lobby_image
update_Login_details() //handles setting lastKnownIP and computer_id for use by the ban systems as well as checking for multikeying
if(join_motd)
join_motd = GLOB.is_valid_url.Replace(join_motd,span_linkify("$1"))
- to_chat(src, "[join_motd]
")
+ to_chat(src, examine_block("[join_motd]
"))
if(has_respawned)
to_chat(usr, config.respawn_message)
diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm
index 366bf15968b..6f00ce1a40e 100644
--- a/code/modules/nifsoft/nif.dm
+++ b/code/modules/nifsoft/nif.dm
@@ -387,7 +387,7 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable
last_notification = message // TGUI Hook
- to_chat(human,span_filter_nif("\[[icon2html(src.big_icon, human.client)]NIF\] displays, " + alert ? span_danger(message) : span_notice(message)))
+ to_chat(human,span_filter_nif("\[[icon2html(src.big_icon, human.client)]NIF\] displays, " + (alert ? span_danger(message) : span_notice(message))))
if(prob(1)) human.visible_message(span_notice("\The [human] [pick(look_messages)]."))
if(alert)
human << bad_sound
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index bb5be2ddaaf..9ec1dc24b59 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -890,7 +890,7 @@ Note that amputating the affected organ does in fact remove the infection from t
var/gore_sound = "[(robotic >= ORGAN_ROBOT) ? "tortured metal" : "ripping tendons and flesh"]"
owner.visible_message(
span_danger("\The [owner]'s [src.name] flies off in an arc!"),\
- span_moderate("Your [src.name] goes flying off!"),\
+ span_bolddanger("Your [src.name] goes flying off!"),\
span_danger("You hear a terrible sound of [gore_sound]."))
if(DROPLIMB_BURN)
if(cannot_gib)
@@ -898,7 +898,7 @@ Note that amputating the affected organ does in fact remove the infection from t
var/gore = "[(robotic >= ORGAN_ROBOT) ? "": " of burning flesh"]"
owner.visible_message(
span_danger("\The [owner]'s [src.name] flashes away into ashes!"),\
- span_moderate("Your [src.name] flashes away into ashes!"),\
+ span_bolddanger("Your [src.name] flashes away into ashes!"),\
span_danger("You hear a crackling sound[gore]."))
if(DROPLIMB_BLUNT)
if(cannot_gib)
@@ -907,7 +907,7 @@ Note that amputating the affected organ does in fact remove the infection from t
var/gore_sound = "[(status >= ORGAN_ROBOT) ? "rending sound of tortured metal" : "sickening splatter of gore"]"
owner.visible_message(
span_danger("\The [owner]'s [src.name] explodes[gore]!"),\
- span_moderate("Your [src.name] explodes[gore]!"),\
+ span_bolddanger("Your [src.name] explodes[gore]!"),\
span_danger("You hear the [gore_sound]."))
var/mob/living/carbon/human/victim = owner //Keep a reference for post-removed().
diff --git a/code/modules/vehicles/Securitrain_vr.dm b/code/modules/vehicles/Securitrain_vr.dm
index 0dd72534d8a..883d2013df0 100644
--- a/code/modules/vehicles/Securitrain_vr.dm
+++ b/code/modules/vehicles/Securitrain_vr.dm
@@ -182,7 +182,7 @@
if(is_train_head() && istype(load, /mob/living/carbon/human))
var/mob/living/carbon/human/D = load
- to_chat(D, span_danger("You ran over \the [M]!")
+ to_chat(D, span_danger("You ran over \the [M]!"))
visible_message(span_danger("\The [src] ran over \the [M]!"))
add_attack_logs(D,M,"Ran over with [src.name]")
attack_log += text("\[[time_stamp()]\] [span_red("ran over [M.name] ([M.ckey]), driven by [D.name] ([D.ckey])")]")
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index 804f28a8c51..c78621451db 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -426,7 +426,7 @@
formatted_desc = replacetext(desc, "%belly", lowertext(name)) //replace with this belly's name
formatted_desc = replacetext(formatted_desc, "%pred", owner) //replace with this belly's owner
formatted_desc = replacetext(formatted_desc, "%prey", thing) //replace with whatever mob entered into this belly
- to_chat(thing, span_notice("[formatted_desc]"))
+ to_chat(thing, span_vnotice("[formatted_desc]"))
if(OldLoc in contents)
return //Someone dropping something (or being stripdigested)
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index 54900800d5a..81b259a5210 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -339,6 +339,8 @@
B.name = "Stomach"
B.desc = "It appears to be rather warm and wet. Makes sense, considering it's inside \the [name]."
B.can_taste = TRUE
+ else
+ vore_selected = vore_organs[1]
return TRUE