mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 12:29:46 +01:00
Ports Goonchat from Baystation. (#9635)
changes:
rscadd: "Ported a new chat system, Goonchat, that allows for cool things like changing font style, size, spacing, highlighting up to 5 strings in the chat, and DARK MODE."
rscadd: "Repeated chat messages can now get compacted. You can disable this in goonchat settings."
rscadd: "You can change icon style to any font on your system."
tweak: "The game window has been altered a bit to adjust for this."
rscdel: "Removed skin style prefs as they are no longer used."
This commit is contained in:
@@ -19,6 +19,4 @@
|
||||
sight |= SEE_TURFS
|
||||
player_list |= src
|
||||
|
||||
spawn(40)
|
||||
if(client)
|
||||
client.playtitlemusic()
|
||||
client.playtitlemusic()
|
||||
|
||||
@@ -304,12 +304,12 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player)
|
||||
|
||||
if(emergency_shuttle) //In case Nanotrasen decides reposess CentComm's shuttles.
|
||||
if(emergency_shuttle.going_to_centcom()) //Shuttle is going to centcomm, not recalled
|
||||
dat += "<font color='red'><b>The station has been evacuated.</b></font><br>"
|
||||
dat += "<span class='warning'><b>The station has been evacuated.</b></span><br>"
|
||||
if(emergency_shuttle.online())
|
||||
if (emergency_shuttle.evac) // Emergency shuttle is past the point of no recall
|
||||
dat += "<font color='red'>The station is currently undergoing evacuation procedures.</font><br>"
|
||||
dat += "<span class='warning'>The station is currently undergoing evacuation procedures.</span><br>"
|
||||
else // Crew transfer initiated
|
||||
dat += "<font color='red'>The station is currently undergoing crew transfer procedures.</font><br>"
|
||||
dat += "<span class='warning'>The station is currently undergoing crew transfer procedures.</span><br>"
|
||||
|
||||
var/unique_role_available = FALSE
|
||||
for(var/ghost_role in SSghostroles.spawners)
|
||||
@@ -456,7 +456,7 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player)
|
||||
/mob/abstract/new_player/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null)
|
||||
return
|
||||
|
||||
/mob/abstract/new_player/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/mob/speaker = null, var/hard_to_hear = 0)
|
||||
/mob/abstract/new_player/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0)
|
||||
return
|
||||
|
||||
/mob/abstract/new_player/MayRespawn()
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
else
|
||||
message = stars(message)
|
||||
|
||||
var/accent_icon = speaker.get_accent_icon(language)
|
||||
var/accent_icon = speaker.get_accent_icon(language, src)
|
||||
var/speaker_name = speaker.name
|
||||
if(ishuman(speaker))
|
||||
var/mob/living/carbon/human/H = speaker
|
||||
@@ -87,7 +87,7 @@
|
||||
if(vr_mob)
|
||||
to_chat(vr_mob, "[time] [message]")
|
||||
|
||||
/mob/proc/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/mob/speaker = null, var/hard_to_hear = 0, var/vname ="")
|
||||
/mob/proc/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0, var/vname ="")
|
||||
if(!client && !vr_mob)
|
||||
return
|
||||
|
||||
@@ -197,6 +197,7 @@
|
||||
formatted = language.format_message_radio(message, verb)
|
||||
else
|
||||
formatted = "[verb], <span class=\"body\">\"[message]\"</span>"
|
||||
formatted += part_c
|
||||
if(isdeaf(src))
|
||||
if(prob(20))
|
||||
to_chat(src, "<span class='warning'>You feel your headset vibrate but can hear nothing from it!</span>")
|
||||
@@ -209,7 +210,7 @@
|
||||
/mob/proc/on_hear_radio(part_a, speaker_name, track, part_b, formatted, accent_icon)
|
||||
var/accent_tag
|
||||
if(accent_icon)
|
||||
accent_tag = "<IMG src='\ref['./icons/accent_tags.dmi']' class='text_tag' iconstate='[accent_icon]'>"
|
||||
accent_tag = "<img src=\"[accent_icon].png\">"
|
||||
to_chat(src, "[part_a][speaker_name][part_b][formatted]")
|
||||
if(vr_mob)
|
||||
to_chat(vr_mob, "[part_a][accent_tag][speaker_name][part_b][formatted]")
|
||||
|
||||
@@ -365,7 +365,7 @@ var/list/slot_equipment_priority = list( \
|
||||
var/end_T_descriptor = "<font color='#6b4400'>tile at [end_T.x], [end_T.y], [end_T.z] in area [get_area(end_T)]</font>"
|
||||
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been thrown by [usr.name] ([usr.ckey]) from [start_T_descriptor] with the target [end_T_descriptor]</font>")
|
||||
usr.attack_log += text("\[[time_stamp()]\] <font color='red'>Has thrown [M.name] ([M.ckey]) from [start_T_descriptor] with the target [end_T_descriptor]</font>")
|
||||
usr.attack_log += text("\[[time_stamp()]\] <span class='warning'>Has thrown [M.name] ([M.ckey]) from [start_T_descriptor] with the target [end_T_descriptor]</span>")
|
||||
msg_admin_attack("[usr.name] ([usr.ckey]) has thrown [M.name] ([M.ckey]) from [start_T_descriptor] with the target [end_T_descriptor] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[usr.x];Y=[usr.y];Z=[usr.z]'>JMP</a>)",ckey=key_name(usr),ckey_target=key_name(M))
|
||||
|
||||
qdel(G)
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
if(!..(user))
|
||||
return
|
||||
|
||||
var/msg = "<span class='info'>*---------*</span>\nThis is \icon[src] \a <EM>[src]</EM>!\n[desc]\n"
|
||||
var/msg = "<span class='info'>*---------*</span>\nThis is [icon2html(src, user)] \a <EM>[src]</EM>!\n[desc]\n"
|
||||
msg += "<span class='warning'>"
|
||||
|
||||
if(brainmob?.key)
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
G.last_action = world.time
|
||||
flick(G.hud.icon_state, G.hud)
|
||||
|
||||
user.attack_log += "\[[time_stamp()]\]<font color='red'> Knifed [name] ([ckey]) with [W.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(W.damtype)])</font>"
|
||||
user.attack_log += "\[[time_stamp()]\]<span class='warning'> Knifed [name] ([ckey]) with [W.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(W.damtype)])</span>"
|
||||
src.attack_log += "\[[time_stamp()]\]<font color='orange'> Got knifed by [user.name] ([user.ckey]) with [W.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(W.damtype)])</font>"
|
||||
msg_admin_attack("[key_name_admin(user)] knifed [key_name_admin(src)] with [W.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(W.damtype)])",ckey=key_name(user),ckey_target=key_name(src) )
|
||||
return 1
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
var/list/msg = list("<span class='info'>*---------*\nThis is ")
|
||||
|
||||
if(icon)
|
||||
msg += "\icon[icon] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated
|
||||
msg += icon2html(icon, user)
|
||||
|
||||
msg += "<EM>[src.name]</EM>"
|
||||
|
||||
@@ -49,9 +49,9 @@
|
||||
tie_msg_warn += "! Attached to it is [lowertext(english_list(U.accessories))]"
|
||||
|
||||
if(w_uniform.blood_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] [fluid_color_type_map(w_uniform.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[w_uniform]'>[w_uniform.name]</a>[tie_msg_warn].</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] wearing [icon2html(w_uniform, user)] [w_uniform.gender==PLURAL?"some":"a"] [fluid_color_type_map(w_uniform.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[w_uniform]'>[w_uniform.name]</a>[tie_msg_warn].</span>\n"
|
||||
else
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing \icon[w_uniform] <a href='?src=\ref[src];lookitem_desc_only=\ref[w_uniform]'>\a [w_uniform]</a>[tie_msg].\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing [icon2html(w_uniform, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[w_uniform]'>\a [w_uniform]</a>[tie_msg].\n"
|
||||
|
||||
//when the player is winded by an admin
|
||||
if(paralysis > 6000)
|
||||
@@ -60,9 +60,9 @@
|
||||
//head
|
||||
if(head)
|
||||
if(head.blood_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] wearing \icon[head] [head.gender==PLURAL?"some":"a"] [fluid_color_type_map(head.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[head]'>[head.name]</a> on [get_pronoun("his")] head!</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] wearing [icon2html(head, user)] [head.gender==PLURAL?"some":"a"] [fluid_color_type_map(head.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[head]'>[head.name]</a> on [get_pronoun("his")] head!</span>\n"
|
||||
else
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing \icon[head] <a href='?src=\ref[src];lookitem_desc_only=\ref[head]'>\a [head]</a> on [get_pronoun("his")] head.\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing [icon2html(head, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[head]'>\a [head]</a> on [get_pronoun("his")] head.\n"
|
||||
|
||||
//suit/armor
|
||||
if(wear_suit)
|
||||
@@ -75,42 +75,42 @@
|
||||
tie_msg_warn += "! Attached to it is [lowertext(english_list(U.accessories))]"
|
||||
|
||||
if(wear_suit.blood_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] wearing \icon[wear_suit] [wear_suit.gender==PLURAL?"some":"a"] [fluid_color_type_map(wear_suit.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_suit]'>[wear_suit.name]</a>[tie_msg_warn].</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] wearing [icon2html(wear_suit, user)] [wear_suit.gender==PLURAL?"some":"a"] [fluid_color_type_map(wear_suit.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_suit]'>[wear_suit.name]</a>[tie_msg_warn].</span>\n"
|
||||
else
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing \icon[wear_suit] <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_suit]'>\a [wear_suit]</a>[tie_msg].\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing [icon2html(wear_suit, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_suit]'>\a [wear_suit]</a>[tie_msg].\n"
|
||||
|
||||
//suit/armor storage
|
||||
if(s_store && !skipsuitstorage)
|
||||
if(s_store.blood_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] carrying \icon[s_store] [s_store.gender==PLURAL?"some":"a"] [fluid_color_type_map(s_store.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>[s_store.name]</a> on [get_pronoun("his")] [wear_suit.name]!</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] carrying [icon2html(s_store, user)] [s_store.gender==PLURAL?"some":"a"] [fluid_color_type_map(s_store.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>[s_store.name]</a> on [get_pronoun("his")] [wear_suit.name]!</span>\n"
|
||||
else
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] carrying \icon[s_store] <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>\a [s_store]</a> on [get_pronoun("his")] [wear_suit.name].\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] carrying [icon2html(s_store, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>\a [s_store]</a> on [get_pronoun("his")] [wear_suit.name].\n"
|
||||
else if(s_store && !skipsuitstorage)
|
||||
if(s_store.blood_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] carrying \icon[s_store] [s_store.gender==PLURAL?"some":"a"] [fluid_color_type_map(s_store.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>[s_store.name]</a> on [get_pronoun("his")] chest!</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] carrying [icon2html(s_store, user)] [s_store.gender==PLURAL?"some":"a"] [fluid_color_type_map(s_store.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>[s_store.name]</a> on [get_pronoun("his")] chest!</span>\n"
|
||||
else
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] carrying \icon[s_store] <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>\a [s_store]</a> on [get_pronoun("his")] chest.\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] carrying [icon2html(s_store, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[s_store]'>\a [s_store]</a> on [get_pronoun("his")] chest.\n"
|
||||
|
||||
//back
|
||||
if(back)
|
||||
if(back.blood_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] \icon[back] [fluid_color_type_map(back.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[back]'>[back]</a> on [get_pronoun("his")] back.</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] [icon2html(back, user)] [fluid_color_type_map(back.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[back]'>[back]</a> on [get_pronoun("his")] back.</span>\n"
|
||||
else
|
||||
msg += "[get_pronoun("He")] [get_pronoun("has")] \icon[back] <a href='?src=\ref[src];lookitem_desc_only=\ref[back]'>\a [back]</a> on [get_pronoun("his")] back.\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("has")] [icon2html(back, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[back]'>\a [back]</a> on [get_pronoun("his")] back.\n"
|
||||
|
||||
//left hand
|
||||
if(l_hand)
|
||||
if(l_hand.blood_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] holding \icon[l_hand] [l_hand.gender==PLURAL?"some":"a"] [fluid_color_type_map(l_hand.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[l_hand]'>[l_hand.name]</a> in [get_pronoun("his")] left hand!</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] holding [icon2html(l_hand, user)] [l_hand.gender==PLURAL?"some":"a"] [fluid_color_type_map(l_hand.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[l_hand]'>[l_hand.name]</a> in [get_pronoun("his")] left hand!</span>\n"
|
||||
else
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] holding \icon[l_hand] <a href='?src=\ref[src];lookitem_desc_only=\ref[l_hand]'>\a [l_hand]</a> in [get_pronoun("his")] left hand.\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] holding [icon2html(l_hand, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[l_hand]'>\a [l_hand]</a> in [get_pronoun("his")] left hand.\n"
|
||||
|
||||
//right hand
|
||||
if(r_hand)
|
||||
if(r_hand.blood_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] holding \icon[r_hand] [r_hand.gender==PLURAL?"some":"a"] [fluid_color_type_map(r_hand.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[r_hand]'>[r_hand.name]</a> in [get_pronoun("his")] right hand!</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] holding [icon2html(r_hand, user)] [r_hand.gender==PLURAL?"some":"a"] [fluid_color_type_map(r_hand.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[r_hand]'>[r_hand.name]</a> in [get_pronoun("his")] right hand!</span>\n"
|
||||
else
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] holding \icon[r_hand] <a href='?src=\ref[src];lookitem_desc_only=\ref[r_hand]'>\a [r_hand]</a> in [get_pronoun("his")] right hand.\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] holding [icon2html(r_hand, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[r_hand]'>\a [r_hand]</a> in [get_pronoun("his")] right hand.\n"
|
||||
|
||||
//gloves
|
||||
if(gloves && !skipgloves)
|
||||
@@ -121,60 +121,60 @@
|
||||
if(ID)
|
||||
gloves_name = "[C.name] ([ID.registered_name] ([ID.assignment]))"
|
||||
if(gloves.blood_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] \icon[gloves] [gloves.gender==PLURAL?"some":"a"] [fluid_color_type_map(gloves.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[gloves]'>[gloves_name]</a> on [get_pronoun("his")] hands!</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] [icon2html(gloves, user)] [gloves.gender==PLURAL?"some":"a"] [fluid_color_type_map(gloves.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[gloves]'>[gloves_name]</a> on [get_pronoun("his")] hands!</span>\n"
|
||||
else
|
||||
msg += "[get_pronoun("He")] [get_pronoun("has")] \icon[gloves] <a href='?src=\ref[src];lookitem_desc_only=\ref[gloves]'>\a [gloves_name]</a> on [get_pronoun("his")] hands.\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("has")] [icon2html(gloves, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[gloves]'>\a [gloves_name]</a> on [get_pronoun("his")] hands.\n"
|
||||
else if(blood_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] [fluid_color_type_map(hand_blood_color)]-stained hands!</span>\n"
|
||||
|
||||
//handcuffed?
|
||||
if(handcuffed)
|
||||
if(istype(handcuffed, /obj/item/handcuffs/cable))
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] \icon[handcuffed] restrained with cable!</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] [icon2html(handcuffed, user)] restrained with cable!</span>\n"
|
||||
else
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] \icon[handcuffed] handcuffed!</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] [icon2html(handcuffed, user)] handcuffed!</span>\n"
|
||||
|
||||
//buckled
|
||||
if(buckled)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] \icon[buckled] buckled to [buckled]!</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] [icon2html(buckled, user)] buckled to [buckled]!</span>\n"
|
||||
|
||||
//belt
|
||||
if(belt)
|
||||
if(belt.blood_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] \icon[belt] [belt.gender==PLURAL?"some":"a"] [fluid_color_type_map(belt.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[belt]'>[belt.name]</a> about [get_pronoun("his")] waist!</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] [icon2html(belt, user)] [belt.gender==PLURAL?"some":"a"] [fluid_color_type_map(belt.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[belt]'>[belt.name]</a> about [get_pronoun("his")] waist!</span>\n"
|
||||
else
|
||||
msg += "[get_pronoun("He")] [get_pronoun("has")] \icon[belt] <a href='?src=\ref[src];lookitem_desc_only=\ref[belt]'>\a [belt]</a> about [get_pronoun("his")] waist.\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("has")] [icon2html(belt, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[belt]'>\a [belt]</a> about [get_pronoun("his")] waist.\n"
|
||||
|
||||
//shoes
|
||||
if(shoes && !skipshoes)
|
||||
if(shoes.blood_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] wearing \icon[shoes] [shoes.gender==PLURAL?"some":"a"] [fluid_color_type_map(shoes.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[shoes]'>[shoes.name]</a> on [get_pronoun("his")] feet!</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")] wearing [icon2html(shoes, user)] [shoes.gender==PLURAL?"some":"a"] [fluid_color_type_map(shoes.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[shoes]'>[shoes.name]</a> on [get_pronoun("his")] feet!</span>\n"
|
||||
else
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing \icon[shoes] <a href='?src=\ref[src];lookitem_desc_only=\ref[shoes]'>\a [shoes]</a> on [get_pronoun("his")] feet.\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing [icon2html(shoes, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[shoes]'>\a [shoes]</a> on [get_pronoun("his")] feet.\n"
|
||||
else if(footprint_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] [fluid_color_type_map(footprint_color)]-stained feet!</span>\n"
|
||||
|
||||
//mask
|
||||
if(wear_mask && !skipmask)
|
||||
if(wear_mask.blood_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] \icon[wear_mask] [wear_mask.gender==PLURAL?"some":"a"] [fluid_color_type_map(wear_mask.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_mask]'>[wear_mask.name]</a> on [get_pronoun("his")] face!</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] [icon2html(wear_mask, user)] [wear_mask.gender==PLURAL?"some":"a"] [fluid_color_type_map(wear_mask.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_mask]'>[wear_mask.name]</a> on [get_pronoun("his")] face!</span>\n"
|
||||
else
|
||||
msg += "[get_pronoun("He")] [get_pronoun("has")] \icon[wear_mask] <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_mask]'>\a [wear_mask]</a> on [get_pronoun("his")] face.\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("has")] [icon2html(wear_mask, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_mask]'>\a [wear_mask]</a> on [get_pronoun("his")] face.\n"
|
||||
|
||||
//eyes
|
||||
if(glasses && !skipeyes)
|
||||
if(glasses.blood_color)
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] \icon[glasses] [glasses.gender==PLURAL?"some":"a"] [fluid_color_type_map(glasses.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[glasses]'>[glasses]</a> covering [get_pronoun("his")] eyes!</span>\n"
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("has")] [icon2html(glasses, user)] [glasses.gender==PLURAL?"some":"a"] [fluid_color_type_map(glasses.blood_color)]-stained <a href='?src=\ref[src];lookitem_desc_only=\ref[glasses]'>[glasses]</a> covering [get_pronoun("his")] eyes!</span>\n"
|
||||
else
|
||||
msg += "[get_pronoun("He")] [get_pronoun("has")] \icon[glasses] <a href='?src=\ref[src];lookitem_desc_only=\ref[glasses]'>\a [glasses]</a> covering [get_pronoun("his")] eyes.\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("has")] [icon2html(glasses, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[glasses]'>\a [glasses]</a> covering [get_pronoun("his")] eyes.\n"
|
||||
|
||||
//left ear
|
||||
if(l_ear && !skipears)
|
||||
msg += "[get_pronoun("He")] [get_pronoun("has")] \icon[l_ear] <a href='?src=\ref[src];lookitem_desc_only=\ref[l_ear]'>\a [l_ear]</a> on [get_pronoun("his")] left ear.\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("has")] [icon2html(l_ear, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[l_ear]'>\a [l_ear]</a> on [get_pronoun("his")] left ear.\n"
|
||||
|
||||
//right ear
|
||||
if(r_ear && !skipears)
|
||||
msg += "[get_pronoun("He")] [get_pronoun("has")] \icon[r_ear] <a href='?src=\ref[src];lookitem_desc_only=\ref[r_ear]'>\a [r_ear]</a> on [get_pronoun("his")] right ear.\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("has")] [icon2html(r_ear, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[r_ear]'>\a [r_ear]</a> on [get_pronoun("his")] right ear.\n"
|
||||
|
||||
//ID
|
||||
if(wear_id)
|
||||
@@ -184,7 +184,7 @@
|
||||
var/obj/item/card/id/ID = C.GetID()
|
||||
if(ID)
|
||||
id_name = "[C.name] ([ID.registered_name] ([ID.assignment]))"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing \icon[wear_id] <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_id]'>\a [id_name]</a>.\n"
|
||||
msg += "[get_pronoun("He")] [get_pronoun("is")] wearing [icon2html(wear_id, user)] <a href='?src=\ref[src];lookitem_desc_only=\ref[wear_id]'>\a [id_name]</a>.\n"
|
||||
|
||||
//Jitters
|
||||
if(is_jittery)
|
||||
|
||||
@@ -2021,7 +2021,7 @@
|
||||
randmutg(src) // Applies good mutation
|
||||
domutcheck(src,null,MUTCHK_FORCED)
|
||||
|
||||
/mob/living/carbon/human/get_accent_icon(var/datum/language/speaking = null)
|
||||
/mob/living/carbon/human/get_accent_icon(var/datum/language/speaking, var/mob/hearer, var/force_accent)
|
||||
var/used_accent = accent //starts with the mob's default accent
|
||||
|
||||
if(mind?.changeling)
|
||||
@@ -2038,7 +2038,7 @@
|
||||
if(changer && changer.active && changer.current_accent)
|
||||
used_accent = changer.current_accent
|
||||
|
||||
return ..(speaking, used_accent)
|
||||
return ..(speaking, hearer, used_accent)
|
||||
|
||||
/mob/living/carbon/human/proc/generate_valid_accent()
|
||||
var/list/valid_accents = new()
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
if(G.cell.charge >= 2500)
|
||||
G.cell.use(G.cell.charge) //So it drains the cell.
|
||||
visible_message("<span class='danger'>[src] has been touched with the stun gloves by [M]!</span>")
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Stungloved [src.name] ([src.ckey])</font>")
|
||||
M.attack_log += text("\[[time_stamp()]\] <span class='warning'>Stungloved [src.name] ([src.ckey])</span>")
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been stungloved by [M.name] ([M.ckey])</font>")
|
||||
|
||||
msg_admin_attack("[key_name_admin(M)] stungloved [src.name] ([src.ckey]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[M.x];Y=[M.y];Z=[M.z]'>JMP</a>)",ckey=key_name(M),ckey_target=key_name(src))
|
||||
@@ -296,7 +296,7 @@
|
||||
H.visible_message("<span class='danger'>[attack_message]</span>")
|
||||
|
||||
playsound(loc, ((miss_type) ? (miss_type == 1 ? attack.miss_sound : 'sound/weapons/thudswoosh.ogg') : attack.attack_sound), 25, 1, -1)
|
||||
H.attack_log += text("\[[time_stamp()]\] <font color='red'>[miss_type ? (miss_type == 1 ? "Missed" : "Blocked") : "[pick(attack.attack_verb)]"] [src.name] ([src.ckey])</font>")
|
||||
H.attack_log += text("\[[time_stamp()]\] <span class='warning'>[miss_type ? (miss_type == 1 ? "Missed" : "Blocked") : "[pick(attack.attack_verb)]"] [src.name] ([src.ckey])</span>")
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>[miss_type ? (miss_type == 1 ? "Was missed by" : "Has blocked") : "Has Been [pick(attack.attack_verb)]"] by [H.name] ([H.ckey])</font>")
|
||||
msg_admin_attack("[key_name(H)] [miss_type ? (miss_type == 1 ? "has missed" : "was blocked by") : "has [pick(attack.attack_verb)]"] [key_name(src)] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[H.x];Y=[H.y];Z=[H.z]'>JMP</a>)",ckey=key_name(H),ckey_target=key_name(src))
|
||||
|
||||
@@ -368,7 +368,7 @@
|
||||
if(attacker_style && attacker_style.disarm_act(H, src))
|
||||
return TRUE
|
||||
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Disarmed [src.name] ([src.ckey])</font>")
|
||||
M.attack_log += text("\[[time_stamp()]\] <span class='warning'>Disarmed [src.name] ([src.ckey])</span>")
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been disarmed by [M.name] ([M.ckey])</font>")
|
||||
|
||||
msg_admin_attack("[key_name(M)] disarmed [src.name] ([src.ckey]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[M.x];Y=[M.y];Z=[M.z]'>JMP</a>)",ckey=key_name(M),ckey_target=key_name(src))
|
||||
@@ -467,7 +467,7 @@
|
||||
if(!damage)
|
||||
return
|
||||
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>attacked [src.name] ([src.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <span class='warning'>attacked [src.name] ([src.ckey])</span>")
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>was attacked by [user.name] ([user.ckey])</font>")
|
||||
src.visible_message("<span class='danger'>[user] has [attack_message] [src]!</span>")
|
||||
user.do_attack_animation(src)
|
||||
|
||||
@@ -409,7 +409,7 @@ emp_act
|
||||
var/client/assailant = M.client
|
||||
if(assailant)
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been hit with a [O], thrown by [M.name] ([assailant.ckey])</font>")
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Hit [src.name] ([src.ckey]) with a thrown [O]</font>")
|
||||
M.attack_log += text("\[[time_stamp()]\] <span class='warning'>Hit [src.name] ([src.ckey]) with a thrown [O]</span>")
|
||||
if(!istype(src,/mob/living/simple_animal/rat))
|
||||
msg_admin_attack("[src.name] ([src.ckey]) was hit by a [O], thrown by [M.name] ([assailant.ckey]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)",ckey=key_name(M),ckey_target=key_name(src))
|
||||
|
||||
|
||||
@@ -727,7 +727,7 @@ mob/living/carbon/human/proc/change_monitor()
|
||||
|
||||
if (brokesomething)
|
||||
playsound(get_turf(target), 'sound/weapons/heavysmash.ogg', 100, 1)
|
||||
attack_log += "\[[time_stamp()]\]<font color='red'>crashed into [brokesomething] objects at ([target.x];[target.y];[target.z]) </font>"
|
||||
attack_log += "\[[time_stamp()]\]<span class='warning'>crashed into [brokesomething] objects at ([target.x];[target.y];[target.z]) </span>"
|
||||
msg_admin_attack("[key_name(src)] crashed into [brokesomething] objects at (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>)" )
|
||||
|
||||
if (!done && target.Enter(src, null))
|
||||
@@ -752,7 +752,7 @@ mob/living/carbon/human/proc/change_monitor()
|
||||
|
||||
if (istype(A, /mob/living))
|
||||
var/mob/living/M = A
|
||||
attack_log += "\[[time_stamp()]\]<font color='red'> Crashed into [key_name(M)]</font>"
|
||||
attack_log += "\[[time_stamp()]\]<span class='warning'> Crashed into [key_name(M)]</span>"
|
||||
M.attack_log += "\[[time_stamp()]\]<font color='orange'> Was rammed by [key_name(src)]</font>"
|
||||
msg_admin_attack("[key_name(src)] crashed into [key_name(M)] at (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[M.x];Y=[M.y];Z=[M.z]'>JMP</a>)" )
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
if(istype(A, /obj/item/clothing/accessory/badge) || istype(A, /obj/item/clothing/accessory/medal))
|
||||
user.visible_message("<span class='danger'>\The [user] tears off \the [A] from [src]'s [suit.name]!</span>")
|
||||
attack_log += "\[[time_stamp()]\] <font color='orange'>Has had \the [A] removed by [user.name] ([user.ckey])</font>"
|
||||
user.attack_log += "\[[time_stamp()]\] <font color='red'>Attempted to remove [name]'s ([ckey]) [A.name]</font>"
|
||||
user.attack_log += "\[[time_stamp()]\] <span class='warning'>Attempted to remove [name]'s ([ckey]) [A.name]</span>"
|
||||
suit.remove_accessory(user, A)
|
||||
return 1
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
to_chat(user, "<span class='warning'>\The [src]'s suit sensor controls are locked.</span>")
|
||||
return
|
||||
attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their sensors toggled by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to toggle [name]'s ([ckey]) sensors</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <span class='warning'>Attempted to toggle [name]'s ([ckey]) sensors</span>")
|
||||
suit.set_sensors(user)
|
||||
|
||||
// Remove all splints.
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
speech_buffer.Add(lowertext(html_decode(message)))
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/slime/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/mob/speaker = null, var/hard_to_hear = 0, var/vname ="")
|
||||
/mob/living/carbon/slime/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0, var/vname ="")
|
||||
if(is_friend(speaker))
|
||||
speech_buffer = list()
|
||||
speech_buffer.Add(speaker)
|
||||
|
||||
@@ -216,7 +216,7 @@
|
||||
var/client/assailant = M.client
|
||||
if(assailant)
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been hit with a [O], thrown by [M.name] ([assailant.ckey])</font>")
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Hit [src.name] ([src.ckey]) with a thrown [O]</font>")
|
||||
M.attack_log += text("\[[time_stamp()]\] <span class='warning'>Hit [src.name] ([src.ckey]) with a thrown [O]</span>")
|
||||
if(!istype(src,/mob/living/simple_animal/rat))
|
||||
msg_admin_attack("[src.name] ([src.ckey]) was hit by a [O], thrown by [M.name] ([assailant.ckey]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)",ckey=key_name(M),ckey_target=key_name(src))
|
||||
|
||||
@@ -278,7 +278,7 @@
|
||||
return
|
||||
|
||||
adjustBruteLoss(damage)
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>attacked [src.name] ([src.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <span class='warning'>attacked [src.name] ([src.ckey])</span>")
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>was attacked by [user.name] ([user.ckey])</font>")
|
||||
if (attack_message)
|
||||
src.visible_message("<span class='danger'>[user] has [attack_message] [src]!</span>")
|
||||
|
||||
@@ -204,30 +204,7 @@ var/controlling
|
||||
to_chat(M, "[message]")
|
||||
to_chat(src, "You said: \"[message]\" to [M]")
|
||||
return
|
||||
/*
|
||||
var/list/candidates = indoctrinated.Copy()
|
||||
if(!(src.host in candidates))
|
||||
candidates.Add(src.host)
|
||||
|
||||
var/mob/target = select_indoctrinated("Thought", "Select a target which will hear your thought.")
|
||||
|
||||
if(!target) return
|
||||
|
||||
var/speaker = input("Select the voice in which you would like to make yourself heard.", "Voice") as text
|
||||
//if(!speaker) return
|
||||
|
||||
var/message = input("What would you like to say?", "Message") as text
|
||||
if(!message) return
|
||||
|
||||
// Use the points at the end rather than the beginning, because the user might cancel
|
||||
if(!use_points(150)) return
|
||||
|
||||
message = say_quote(message)
|
||||
var/rendered = "<span class='game say'><span class='name'>[speaker]</span> <span class='message'>[message]</span></span>"
|
||||
target.show_message(rendered)
|
||||
|
||||
to_chat(usr, "<i>You make [target] hear:</i> [rendered]")
|
||||
*/
|
||||
// Mutes the host
|
||||
/mob/living/parasite/meme/verb/Mute()
|
||||
set category = "Meme"
|
||||
|
||||
@@ -249,7 +249,7 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
message_range = speaking.get_talkinto_msg_range(message)
|
||||
var/msg
|
||||
if(!speaking || !(speaking.flags & NO_TALK_MSG))
|
||||
msg = "<span class='notice'>\The [src] talks into \the [used_radios[1]]</span>"
|
||||
msg = "<span class='notice'>\The [src] talks into \the [used_radios[1]]</span>."
|
||||
for(var/mob/living/M in hearers(5, src))
|
||||
if((M != src) && msg)
|
||||
M.show_message(msg)
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
|
||||
to_chat(user, SPAN_NOTICE("Analyzing Results for [M]:"))
|
||||
to_chat(user, SPAN_NOTICE("Overall Status: [M.stat > 1 ? "fully disabled" : "[M.health - M.getHalLoss()]% functional"]"))
|
||||
to_chat(user, "Key: <font color='#FFA500'>Electronics</font>/<font color='red'>Brute</font>")
|
||||
to_chat(user, "Damage Specifics: <font color='#FFA500'>[BU]</font> - <font color='red'>[BR]</font>")
|
||||
to_chat(user, "Key: <font color='#FFA500'>Electronics</font>/<span class='warning'>Brute</span>")
|
||||
to_chat(user, "Damage Specifics: <font color='#FFA500'>[BU]</font> - <span class='warning'>[BR]</span>")
|
||||
if(M.tod && M.stat == DEAD)
|
||||
to_chat(user, SPAN_NOTICE("Time of Disable: [M.tod]"))
|
||||
var/mob/living/silicon/robot/H = M
|
||||
@@ -55,11 +55,11 @@
|
||||
for(var/datum/robot_component/org in damaged)
|
||||
user.show_message(text("<span class='notice'>\t []: [][] - [] - [] - []</span>", \
|
||||
capitalize(org.name), \
|
||||
(org.installed == -1) ? "<font color='red'><b>DESTROYED</b></font> " :"",\
|
||||
(org.installed == -1) ? "<span class='warning'><b>DESTROYED</b></span> " :"",\
|
||||
(org.electronics_damage > 0) ? "<font color='#FFA500'>[org.electronics_damage]</font>" :0, \
|
||||
(org.brute_damage > 0) ? "<font color='red'>[org.brute_damage]</font>" :0, \
|
||||
(org.toggled) ? "Toggled ON" : "<font color='red'>Toggled OFF</font>",\
|
||||
(org.powered) ? "Power ON" : "<font color='red'>Power OFF</font>"),1)
|
||||
(org.brute_damage > 0) ? "<span class='warning'>[org.brute_damage]</span>" :0, \
|
||||
(org.toggled) ? "Toggled ON" : "<span class='warning'>Toggled OFF</span>",\
|
||||
(org.powered) ? "Power ON" : "<span class='warning'>Power OFF</span>"),1)
|
||||
else
|
||||
to_chat(user, SPAN_NOTICE("Components are OK."))
|
||||
if(H.emagged && prob(5))
|
||||
@@ -68,7 +68,7 @@
|
||||
if("prosthetics")
|
||||
var/mob/living/carbon/human/H = M
|
||||
to_chat(user, SPAN_NOTICE("Analyzing Results for \the [H]:"))
|
||||
to_chat(user, "Key: <font color='#FFA500'>Electronics</font>/<font color='red'>Brute</font>")
|
||||
to_chat(user, "Key: <font color='#FFA500'>Electronics</font>/<span class='warning'>Brute</span>")
|
||||
|
||||
to_chat(user, SPAN_NOTICE("External prosthetics:"))
|
||||
var/organ_found
|
||||
@@ -77,7 +77,7 @@
|
||||
if(!(E.status & ORGAN_ROBOT))
|
||||
continue
|
||||
organ_found = TRUE
|
||||
to_chat(user, "[E.name]: <font color='red'>[E.brute_dam]</font> <font color='#FFA500'>[E.burn_dam]</font>")
|
||||
to_chat(user, "[E.name]: <span class='warning'>[E.brute_dam]</span> <font color='#FFA500'>[E.burn_dam]</font>")
|
||||
if(!organ_found)
|
||||
to_chat(user, SPAN_NOTICE("No prosthetics located."))
|
||||
to_chat(user, "<hr>")
|
||||
@@ -94,7 +94,7 @@
|
||||
if(!show_tag && istype(O, /obj/item/organ/internal/ipc_tag))
|
||||
continue
|
||||
organ_found = TRUE
|
||||
to_chat(user, "[O.name]: <font color='red'>[O.damage]</font>")
|
||||
to_chat(user, "[O.name]: <span class='warning'>[O.damage]</span>")
|
||||
if(!organ_found)
|
||||
to_chat(user, SPAN_NOTICE("No prosthetics located."))
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
continue
|
||||
else if (isNotStationLevel(src.z) && src.z != D.z) //If the console is not on the station, only list drones on the current level
|
||||
continue
|
||||
dat += "<BR>[D.real_name] ([D.stat == 2 ? "<font color='red'>INACTIVE</FONT>" : "<font color='green'>ACTIVE</FONT>"])"
|
||||
dat += "<BR>[D.real_name] ([D.stat == 2 ? "<span class='warning'>INACTIVE</span>" : "<font color='green'>ACTIVE</FONT>"])"
|
||||
dat += "<font dize = 9><BR>Cell charge: [D.cell.charge]/[D.cell.maxcharge]."
|
||||
dat += "<BR>Currently located in: [get_area(D)]."
|
||||
dat += "<BR><A href='?src=\ref[src];resync=\ref[D]'>Resync</A> | <A href='?src=\ref[src];shutdown=\ref[D]'>Shutdown</A></font>"
|
||||
@@ -113,4 +113,4 @@
|
||||
dronefab.produce_drones = !dronefab.produce_drones
|
||||
to_chat(usr, SPAN_NOTICE("You [dronefab.produce_drones ? "enable" : "disable"] drone production in the nearby fabricator."))
|
||||
|
||||
src.updateUsrDialog()
|
||||
src.updateUsrDialog()
|
||||
|
||||
@@ -284,7 +284,7 @@
|
||||
/mob/living/silicon/robot/proc/describe_module(var/slot)
|
||||
var/list/index_module = list(module_state_1,module_state_2,module_state_3)
|
||||
var/result = " Hardpoint [slot] holds "
|
||||
result += (index_module[slot]) ? "\icon[index_module[slot]] [index_module[slot]]." : "nothing."
|
||||
result += (index_module[slot]) ? "[icon2html(index_module[slot], viewers(get_turf(src)))] [index_module[slot]]." : "nothing."
|
||||
result += "\n"
|
||||
return result
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
return..()
|
||||
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their soul captured with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to capture the soul of [M.name] ([M.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <span class='warning'>Used the [src.name] to capture the soul of [M.name] ([M.ckey])</span>")
|
||||
msg_admin_attack("[user.name] ([user.ckey]) used the [src.name] to capture the soul of [M.name] ([M.ckey]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)",ckey=key_name(src),ckey_target=key_name(M))
|
||||
|
||||
transfer_soul("VICTIM", M, user)
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
if( ishuman(AM) )
|
||||
if(!stat)
|
||||
var/mob/M = AM
|
||||
to_chat(M, "<span class='notice'>\icon[src] Squeek!</span>")
|
||||
to_chat(M, "<span class='notice'>[icon2html(src, M)] Squeek!</span>")
|
||||
poke(1) //Wake up if stepped on
|
||||
if (prob(95))
|
||||
squeak(0)
|
||||
|
||||
@@ -285,7 +285,7 @@
|
||||
/mob/living/simple_animal/spiderbot/examine(mob/user)
|
||||
..(user)
|
||||
if(src.held_item)
|
||||
to_chat(user, "It is carrying \icon[src.held_item] \a [src.held_item].")
|
||||
to_chat(user, "It is carrying [icon2html(src.held_item, user)] \a [src.held_item].")
|
||||
|
||||
/mob/living/simple_animal/spiderbot/cannot_use_vents()
|
||||
return
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
|
||||
//repair a bit of damage
|
||||
if(prob(1))
|
||||
src.visible_message(SPAN_ALERT("\The [src] shudders and shakes as some of its damaged systems come back online."))
|
||||
src.visible_message(SPAN_WARNING("\The [src] shudders and shakes as some of its damaged systems come back online."))
|
||||
spark(src, 3, alldirs)
|
||||
health += rand(25,100)
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
src.visible_message(SPAN_NOTICE("\The [src] retracts several targetting vanes, and dulls its running lights."))
|
||||
hostile_drone = 0
|
||||
else
|
||||
src.visible_message(SPAN_ALERT("\The [src] suddenly lights up, and additional targetting vanes slide into place."))
|
||||
src.visible_message(SPAN_WARNING("\The [src] suddenly lights up, and additional targetting vanes slide into place."))
|
||||
hostile_drone = 1
|
||||
|
||||
if(health / maxHealth > 0.9)
|
||||
@@ -138,9 +138,9 @@
|
||||
|
||||
if(exploding && prob(20))
|
||||
if(prob(50))
|
||||
src.visible_message(SPAN_ALERT("\The [src] begins to spark and shake violenty!"))
|
||||
src.visible_message(SPAN_WARNING("\The [src] begins to spark and shake violenty!"))
|
||||
else
|
||||
src.visible_message(SPAN_ALERT("\The [src] sparks and shakes like it's about to explode!"))
|
||||
src.visible_message(SPAN_WARNING("\The [src] sparks and shakes like it's about to explode!"))
|
||||
|
||||
spark(src, 3, alldirs)
|
||||
|
||||
|
||||
@@ -734,7 +734,7 @@
|
||||
|
||||
|
||||
|
||||
/mob/living/simple_animal/parrot/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/mob/speaker = null, var/hard_to_hear = 0)
|
||||
/mob/living/simple_animal/parrot/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0)
|
||||
if(prob(50))
|
||||
parrot_hear("[pick(available_channels)] [message]")
|
||||
..(message,verb,language,part_a,part_b,speaker,hard_to_hear)
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
spawn() alert("You have logged in already with another key this round, please log out of this one NOW or risk being banned!")
|
||||
if(matches)
|
||||
if(M.client)
|
||||
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as <A href='?src=\ref[usr];priv_msg=\ref[M]'>[key_name_admin(M)]</A>.</font>", 1)
|
||||
message_admins("<span class='warning'><B>Notice: </B></span><span class='notice'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as <A href='?src=\ref[usr];priv_msg=\ref[M]'>[key_name_admin(M)]</A>.</span>", 1)
|
||||
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)].",ckey=key_name(src))
|
||||
else
|
||||
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as [key_name_admin(M)] (no longer logged in). </font>", 1)
|
||||
message_admins("<span class='warning'><B>Notice: </B></span><span class='notice'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as [key_name_admin(M)] (no longer logged in). </span>", 1)
|
||||
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)] (no longer logged in).",ckey=key_name(src))
|
||||
|
||||
/**
|
||||
@@ -89,3 +89,5 @@
|
||||
|
||||
// Check code/modules/admin/verbs/antag-ooc.dm for definition
|
||||
client.add_aooc_if_necessary()
|
||||
|
||||
simple_asset_ensure_is_sent(client, /datum/asset/simple/accents)
|
||||
|
||||
+76
-11
@@ -440,16 +440,9 @@
|
||||
if (flavor_text && flavor_text != "")
|
||||
var/msg = replacetext(flavor_text, "\n", " ")
|
||||
if(length(msg) <= 40)
|
||||
return "<span class='notice'>[msg]</span>"
|
||||
return "<span class='message linkify'>[msg]</span>"
|
||||
else
|
||||
return "<span class='notice'>[copytext_preserve_html(msg, 1, 37)]... <a href='byond://?src=\ref[src];flavor_more=1'>More...</a></span>"
|
||||
|
||||
/*
|
||||
/mob/verb/help()
|
||||
set name = "Help"
|
||||
src << browse('html/help.html', "window=help")
|
||||
return
|
||||
*/
|
||||
return "<span class='message linkify'>[copytext_preserve_html(msg, 1, 37)]...</span> <a href='byond://?src=\ref[src];flavor_more=1'>More...</a>"
|
||||
|
||||
/mob/verb/abandon_mob()
|
||||
set name = "Respawn"
|
||||
@@ -502,6 +495,78 @@
|
||||
M.mind.reset()
|
||||
return
|
||||
|
||||
/client/verb/fix_chat()
|
||||
set name = "Fix Chat"
|
||||
set category = "OOC"
|
||||
if (!chatOutput || !istype(chatOutput))
|
||||
var/action = alert(src, "Invalid Chat Output data found!\nRecreate data?", "Wot?", "Recreate Chat Output data", "Cancel")
|
||||
if (action != "Recreate Chat Output data")
|
||||
return
|
||||
chatOutput = new /datum/chatOutput(src)
|
||||
chatOutput.start()
|
||||
action = alert(src, "Goon chat reloading, wait a bit and tell me if it's fixed", "", "Fixed", "Nope")
|
||||
if (action == "Fixed")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by re-creating the chatOutput datum")
|
||||
else
|
||||
chatOutput.load()
|
||||
action = alert(src, "How about now? (give it a moment (it may also try to load twice))", "", "Yes", "No")
|
||||
if (action == "Yes")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by re-creating the chatOutput datum and forcing a load()")
|
||||
else
|
||||
action = alert(src, "Welp, I'm all out of ideas. Try closing byond and reconnecting.\nWe could also disable fancy chat and re-enable oldchat", "", "Thanks anyways", "Switch to old chat")
|
||||
if (action == "Switch to old chat")
|
||||
winset(src, "output", "is-visible=true;is-disabled=false")
|
||||
winset(src, "browseroutput", "is-visible=false")
|
||||
log_game("GOONCHAT: [key_name(src)] Failed to fix their goonchat window after recreating the chatOutput and forcing a load()")
|
||||
|
||||
else if (chatOutput.loaded)
|
||||
var/action = alert(src, "ChatOutput seems to be loaded\nDo you want me to force a reload, wiping the chat log or just refresh the chat window because it broke/went away?", "Hmmm", "Force Reload", "Refresh", "Cancel")
|
||||
switch (action)
|
||||
if ("Force Reload")
|
||||
chatOutput.loaded = FALSE
|
||||
chatOutput.start() //this is likely to fail since it asks , but we should try it anyways so we know.
|
||||
action = alert(src, "Goon chat reloading, wait a bit and tell me if it's fixed", "", "Fixed", "Nope")
|
||||
if (action == "Fixed")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by forcing a start()")
|
||||
else
|
||||
chatOutput.load()
|
||||
action = alert(src, "How about now? (give it a moment (it may also try to load twice))", "", "Yes", "No")
|
||||
if (action == "Yes")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by forcing a load()")
|
||||
else
|
||||
action = alert(src, "Welp, I'm all out of ideas. Try closing byond and reconnecting.", "", "Thanks anyways",)
|
||||
log_game("GOONCHAT: [key_name(src)] Failed to fix their goonchat window forcing a start() and forcing a load()")
|
||||
|
||||
if ("Refresh")
|
||||
chatOutput.showChat()
|
||||
action = alert(src, "Goon chat refreshing, wait a bit and tell me if it's fixed", "", "Fixed", "Nope, force a reload")
|
||||
if (action == "Fixed")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by forcing a show()")
|
||||
else
|
||||
chatOutput.loaded = FALSE
|
||||
chatOutput.load()
|
||||
action = alert(src, "How about now? (give it a moment)", "", "Yes", "No")
|
||||
if (action == "Yes")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by forcing a load()")
|
||||
else
|
||||
action = alert(src, "Welp, I'm all out of ideas. Try closing byond and reconnecting.", "", "Thanks anyways")
|
||||
log_game("GOONCHAT: [key_name(src)] Failed to fix their goonchat window forcing a show() and forcing a load()")
|
||||
return
|
||||
|
||||
else
|
||||
chatOutput.start()
|
||||
var/action = alert(src, "Manually loading Chat, wait a bit and tell me if it's fixed", "", "Fixed", "Nope")
|
||||
if (action == "Fixed")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by manually calling start()")
|
||||
else
|
||||
chatOutput.load()
|
||||
alert(src, "How about now? (give it a moment (it may also try to load twice))", "", "Yes", "No")
|
||||
if (action == "Yes")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by manually calling start() and forcing a load()")
|
||||
else
|
||||
action = alert(src, "Welp, I'm all out of ideas. Try closing byond and reconnecting.", "", "Thanks anyways")
|
||||
log_game("GOONCHAT: [key_name(src)] Failed to fix their goonchat window after manually calling start() and forcing a load()")
|
||||
|
||||
/client/verb/changes()
|
||||
set name = "Changelog"
|
||||
set category = "OOC"
|
||||
@@ -1296,7 +1361,7 @@
|
||||
return
|
||||
|
||||
SetWeakened(200)
|
||||
visible_message("<font color='#002eb8'><b>OOC Information:</b></font> <font color='red'>[src] has been winded by a member of staff! Please freeze all roleplay involving their character until the matter is resolved! Adminhelp if you have further questions.</font>", "<font color='red'><b>You have been winded by a member of staff! Please stand by until they contact you!</b></font>")
|
||||
visible_message("<span class='info'><b>OOC Information:</b></span> <span class='warning'>[src] has been winded by a member of staff! Please freeze all roleplay involving their character until the matter is resolved! Adminhelp if you have further questions.</span>", "<span class='warning'><b>You have been winded by a member of staff! Please stand by until they contact you!</b></span>")
|
||||
log_admin("[key_name(admin)] winded [key_name(src)]!",admin_key=key_name(admin),ckey=key_name(src))
|
||||
message_admins("[key_name_admin(admin)] winded [key_name_admin(src)]!", 1)
|
||||
|
||||
@@ -1312,7 +1377,7 @@
|
||||
return
|
||||
|
||||
SetWeakened(0)
|
||||
visible_message("<font color='#002eb8'><b>OOC Information:</b></font> <font color='green'>[src] has been unwinded by a member of staff!</font>", "<font color='red'><b>You have been unwinded by a member of staff!</b></font>")
|
||||
visible_message("<span class='info'><b>OOC Information:</b></span> <span class='good'>[src] has been unwinded by a member of staff!</span>", "<span class='warning'><b>You have been unwinded by a member of staff!</b></span>")
|
||||
log_admin("[key_name(admin)] unwinded [key_name(src)]!",admin_key=key_name(admin),ckey=key_name(src))
|
||||
message_admins("[key_name_admin(admin)] unwinded [key_name_admin(src)]!", 1)
|
||||
|
||||
|
||||
@@ -287,7 +287,7 @@
|
||||
state = GRAB_NECK
|
||||
icon_state = "grabbed+1"
|
||||
affecting.attack_log += "\[[time_stamp()]\] <font color='orange'>Has had their neck grabbed by [assailant.name] ([assailant.ckey])</font>"
|
||||
assailant.attack_log += "\[[time_stamp()]\] <font color='red'>Grabbed the neck of [affecting.name] ([affecting.ckey])</font>"
|
||||
assailant.attack_log += "\[[time_stamp()]\] <span class='warning'>Grabbed the neck of [affecting.name] ([affecting.ckey])</span>"
|
||||
msg_admin_attack("[key_name_admin(assailant)] grabbed the neck of [key_name_admin(affecting)]",ckey=key_name(assailant),ckey_target=key_name(affecting))
|
||||
hud.icon_state = "kill"
|
||||
hud.name = "kill"
|
||||
@@ -305,7 +305,7 @@
|
||||
assailant.visible_message(SPAN_DANGER("[assailant] starts strangling [affecting]!"), SPAN_DANGER("You start strangling [affecting]!"))
|
||||
|
||||
affecting.attack_log += "\[[time_stamp()]\] <font color='orange'>is being strangled by [assailant.name] ([assailant.ckey])</font>"
|
||||
assailant.attack_log += "\[[time_stamp()]\] <font color='red'>is strangling [affecting.name] ([affecting.ckey])</font>"
|
||||
assailant.attack_log += "\[[time_stamp()]\] <span class='warning'>is strangling [affecting.name] ([affecting.ckey])</span>"
|
||||
msg_admin_attack("[key_name_admin(assailant)] is strangling [key_name_admin(affecting)]",ckey=key_name(assailant),ckey_target=key_name(affecting))
|
||||
|
||||
affecting.setClickCooldown(10)
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
target.visible_message("<span class='danger'>[target] [target.species.knockout_message]</span>")
|
||||
|
||||
playsound(attacker.loc, /decl/sound_category/swing_hit_sound, 25, 1, -1)
|
||||
attacker.attack_log += text("\[[time_stamp()]\] <font color='red'>Headbutted [target.name] ([target.ckey])</font>")
|
||||
attacker.attack_log += text("\[[time_stamp()]\] <span class='warning'>Headbutted [target.name] ([target.ckey])</span>")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Headbutted by [attacker.name] ([attacker.ckey])</font>")
|
||||
msg_admin_attack("[key_name(attacker)] has headbutted [key_name(target)]",ckey=key_name(attacker),ckey_target=key_name(target))
|
||||
|
||||
|
||||
@@ -494,7 +494,7 @@ proc/is_blind(A)
|
||||
for(var/mob/M in targets)
|
||||
var/turf/targetturf = get_turf(M)
|
||||
if(targetturf && (targetturf.z == sourceturf.z))
|
||||
M.show_message("<span class='info'>\icon[icon] [message]</span>", 1)
|
||||
M.show_message("<span class='info'>[icon2html(icon, M)] [message]</span>", 1)
|
||||
|
||||
/proc/mobs_in_area(var/area/A)
|
||||
var/list/mobs = new
|
||||
@@ -546,7 +546,7 @@ proc/is_blind(A)
|
||||
else // Everyone else (dead people who didn't ghost yet, etc.)
|
||||
lname = name
|
||||
lname = "<span class='name'>[lname]</span> "
|
||||
to_chat(M, "[follow] <span class='deadsay'>" + create_text_tag("dead", "DEAD:", M.client) + " [lname][message]</span>")
|
||||
to_chat(M, "[follow] <span class='deadsay'>" + create_text_tag("DEAD", M.client) + " [lname][message]</span>")
|
||||
|
||||
//Announces that a ghost has joined/left, mainly for use with wizards
|
||||
/proc/announce_ghost_joinleave(O, var/joined_ghosts = 1, var/message = "")
|
||||
@@ -1178,10 +1178,10 @@ proc/is_blind(A)
|
||||
/mob/proc/set_intent(var/set_intent)
|
||||
a_intent = set_intent
|
||||
|
||||
/mob/proc/get_accent_icon(var/datum/language/speaking = null, var/force_accent)
|
||||
/mob/proc/get_accent_icon(var/datum/language/speaking, var/mob/hearer, var/force_accent)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
var/used_accent = force_accent ? force_accent : accent
|
||||
if(used_accent && speaking?.allow_accents)
|
||||
var/datum/accent/a = SSrecords.accents[used_accent]
|
||||
var/final_icon = a.tag_icon
|
||||
return "<IMG src='\ref['./icons/accent_tags.dmi']' class='text_tag' iconstate='[final_icon]'>"
|
||||
return "<img src=\"[final_icon].png\">"
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
|
||||
message = process_chat_markup(message, list("~", "_"))
|
||||
|
||||
say_dead_direct("[pick("complains","moans","whines","laments","blubbers")], <span class='message'>\"[message]\"</span>", src)
|
||||
say_dead_direct("[pick("complains","moans","whines","laments","blubbers")], <span class='message linkify'>\"[message]\"</span>", src)
|
||||
|
||||
/mob/proc/say_understands(var/mob/other,var/datum/language/speaking = null)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user