mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-13 11:12:14 +00:00
[Ready]Logs when speech is forced by an external factor (#39964)
* Logs when speech is forced by an external factor * makes say args uniform * fix
This commit is contained in:
@@ -124,7 +124,7 @@
|
||||
client.images.Remove(human_image)
|
||||
return ..()
|
||||
|
||||
/mob/camera/imaginary_friend/say(message)
|
||||
/mob/camera/imaginary_friend/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
if (!message)
|
||||
return
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
if(prob(3))
|
||||
owner.emote("drool")
|
||||
else if(owner.stat == CONSCIOUS && prob(3))
|
||||
owner.say(pick_list_replacements(BRAIN_DAMAGE_FILE, "brain_damage"))
|
||||
owner.say(pick_list_replacements(BRAIN_DAMAGE_FILE, "brain_damage"), forced = "brain damage")
|
||||
..()
|
||||
|
||||
/datum/brain_trauma/mild/dumbness/on_lose()
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
if(2)
|
||||
owner.emote("scream")
|
||||
owner.Jitter(5)
|
||||
owner.say("AAAAH!!")
|
||||
owner.say("AAAAH!!", forced = "phobia")
|
||||
if(reason)
|
||||
owner.pointed(reason)
|
||||
if(3)
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
to_chat(src, "<span class='notice'>As a split personality, you cannot do anything but observe. However, you will eventually gain control of your body, switching places with the current personality.</span>")
|
||||
to_chat(src, "<span class='warning'><b>Do not commit suicide or put the body in a deadly position. Behave like you care about it as much as the owner.</b></span>")
|
||||
|
||||
/mob/living/split_personality/say(message)
|
||||
/mob/living/split_personality/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
to_chat(src, "<span class='warning'>You cannot speak, your other self is controlling your body!</span>")
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
cure()
|
||||
else if(prob(parrot.speak_chance))
|
||||
if(parrot.speech_buffer.len)
|
||||
affected_mob.say(pick(parrot.speech_buffer))
|
||||
affected_mob.say(pick(parrot.speech_buffer), forced = "parrot possession")
|
||||
|
||||
/datum/disease/parrot_possession/cure()
|
||||
if(parrot && parrot.loc == affected_mob)
|
||||
|
||||
@@ -25,4 +25,4 @@
|
||||
to_chat(affected_mob, "<span class='danger'>Your thoughts are interrupted by a loud <b>HONK!</b></span>")
|
||||
if(4)
|
||||
if(prob(5))
|
||||
affected_mob.say( pick( list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...") ) )
|
||||
affected_mob.say( pick( list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...") ) , forced = "pierrot's throat")
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
affected_mob.confused += 10
|
||||
if(4)
|
||||
if(prob(3))
|
||||
affected_mob.say(pick("Eeek, ook ook!", "Eee-eeek!", "Eeee!", "Ungh, ungh."))
|
||||
affected_mob.say(pick("Eeek, ook ook!", "Eee-eeek!", "Eeee!", "Ungh, ungh."), forced = "jungle fever")
|
||||
|
||||
/datum/disease/transformation/jungle_fever/cure()
|
||||
remove_monkey(affected_mob.mind)
|
||||
@@ -176,13 +176,13 @@
|
||||
switch(stage)
|
||||
if(3)
|
||||
if (prob(8))
|
||||
affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop"))
|
||||
affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop"), forced = "robotic transformation")
|
||||
if (prob(4))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel a stabbing pain in your head.</span>")
|
||||
affected_mob.Unconscious(40)
|
||||
if(4)
|
||||
if (prob(20))
|
||||
affected_mob.say(pick("beep, beep!", "Boop bop boop beep.", "kkkiiiill mmme", "I wwwaaannntt tttoo dddiiieeee..."))
|
||||
affected_mob.say(pick("beep, beep!", "Boop bop boop beep.", "kkkiiiill mmme", "I wwwaaannntt tttoo dddiiieeee..."), forced = "robotic transformation")
|
||||
|
||||
|
||||
/datum/disease/transformation/xeno
|
||||
@@ -212,7 +212,7 @@
|
||||
affected_mob.Unconscious(40)
|
||||
if(4)
|
||||
if (prob(20))
|
||||
affected_mob.say(pick("You look delicious.", "Going to... devour you...", "Hsssshhhhh!"))
|
||||
affected_mob.say(pick("You look delicious.", "Going to... devour you...", "Hsssshhhhh!"), forced = "xenomorph transformation")
|
||||
|
||||
|
||||
/datum/disease/transformation/slime
|
||||
@@ -264,10 +264,10 @@
|
||||
switch(stage)
|
||||
if(3)
|
||||
if (prob(8))
|
||||
affected_mob.say(pick("YAP", "Woof!"))
|
||||
affected_mob.say(pick("YAP", "Woof!"), forced = "corgi transformation")
|
||||
if(4)
|
||||
if (prob(20))
|
||||
affected_mob.say(pick("Bark!", "AUUUUUU"))
|
||||
affected_mob.say(pick("Bark!", "AUUUUUU"), forced = "corgi transformation")
|
||||
|
||||
/datum/disease/transformation/morph
|
||||
name = "Gluttony's Blessing"
|
||||
|
||||
@@ -29,21 +29,21 @@ STI KALY - blind
|
||||
switch(stage)
|
||||
if(2)
|
||||
if(prob(1)&&prob(50))
|
||||
affected_mob.say(pick("You shall not pass!", "Expeliarmus!", "By Merlins beard!", "Feel the power of the Dark Side!"))
|
||||
affected_mob.say(pick("You shall not pass!", "Expeliarmus!", "By Merlins beard!", "Feel the power of the Dark Side!"), forced = "wizarditis")
|
||||
if(prob(1)&&prob(50))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel [pick("that you don't have enough mana", "that the winds of magic are gone", "an urge to summon familiar")].</span>")
|
||||
|
||||
|
||||
if(3)
|
||||
if(prob(1)&&prob(50))
|
||||
affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!", "STI KALY!", "TARCOL MINTI ZHERI!"))
|
||||
affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!", "STI KALY!", "TARCOL MINTI ZHERI!"), forced = "wizarditis")
|
||||
if(prob(1)&&prob(50))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel [pick("the magic bubbling in your veins","that this location gives you a +1 to INT","an urge to summon familiar")].</span>")
|
||||
|
||||
if(4)
|
||||
|
||||
if(prob(1))
|
||||
affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!","STI KALY!","EI NATH!"))
|
||||
affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!","STI KALY!","EI NATH!"), forced = "wizarditis")
|
||||
return
|
||||
if(prob(1)&&prob(50))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel [pick("the tidal wave of raw power building inside","that this location gives you a +2 to INT and +1 to WIS","an urge to teleport")].</span>")
|
||||
@@ -111,7 +111,7 @@ STI KALY - blind
|
||||
if(!L)
|
||||
return
|
||||
|
||||
affected_mob.say("SCYAR NILA [uppertext(thearea.name)]!")
|
||||
affected_mob.say("SCYAR NILA [uppertext(thearea.name)]!", forced = "wizarditis teleport")
|
||||
affected_mob.forceMove(pick(L))
|
||||
|
||||
return
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
sleep(1)
|
||||
|
||||
/datum/martial_art/plasma_fist/proc/Tornado(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
A.say("TORNADO SWEEP!")
|
||||
A.say("TORNADO SWEEP!", forced="plasma fist")
|
||||
TornadoAnimate(A)
|
||||
var/obj/effect/proc_holder/spell/aoe_turf/repulse/R = new(null)
|
||||
var/list/turfs = list()
|
||||
@@ -48,14 +48,14 @@
|
||||
playsound(D.loc, 'sound/weapons/punch1.ogg', 50, 1, -1)
|
||||
var/atom/throw_target = get_edge_target_turf(D, get_dir(D, get_step_away(D, A)))
|
||||
D.throw_at(throw_target, 200, 4,A)
|
||||
A.say("HYAH!")
|
||||
A.say("HYAH!", forced="plasma fist")
|
||||
log_combat(A, D, "threw back (Plasma Fist)")
|
||||
return
|
||||
|
||||
/datum/martial_art/plasma_fist/proc/Plasma(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
playsound(D.loc, 'sound/weapons/punch1.ogg', 50, 1, -1)
|
||||
A.say("PLASMA FIST!")
|
||||
A.say("PLASMA FIST!", forced="plasma fist")
|
||||
D.visible_message("<span class='danger'>[A] has hit [D] with THE PLASMA FIST TECHNIQUE!</span>", \
|
||||
"<span class='userdanger'>[A] has hit [D] with THE PLASMA FIST TECHNIQUE!</span>")
|
||||
D.gib()
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
if(1)
|
||||
owner.emote("twitch")
|
||||
if(2 to 3)
|
||||
owner.say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]")
|
||||
owner.say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]", forced="tourette's syndrome")
|
||||
var/x_offset_old = owner.pixel_x
|
||||
var/y_offset_old = owner.pixel_y
|
||||
var/x_offset = owner.pixel_x + rand(-2,2)
|
||||
|
||||
@@ -625,10 +625,11 @@
|
||||
stack_trace("Invalid individual logging type: [message_type]. Defaulting to [LOG_GAME] (LOG_GAME).")
|
||||
log_game(log_text)
|
||||
|
||||
// Helper for logging chat messages or other logs wiht arbitrary inputs (e.g. announcements)
|
||||
/atom/proc/log_talk(message, message_type, tag=null, log_globally=TRUE)
|
||||
// Helper for logging chat messages or other logs with arbitrary inputs (e.g. announcements)
|
||||
/atom/proc/log_talk(message, message_type, tag=null, log_globally=TRUE, forced_by=null)
|
||||
var/prefix = tag ? "([tag]) " : ""
|
||||
log_message("[prefix]\"[message]\"", message_type, log_globally=log_globally)
|
||||
var/suffix = forced_by ? " FORCED by [forced_by]" : ""
|
||||
log_message("[prefix]\"[message]\"[suffix]", message_type, log_globally=log_globally)
|
||||
|
||||
// Helper for logging of messages with only one sender and receiver
|
||||
/proc/log_directed_talk(atom/source, atom/target, message, message_type, tag)
|
||||
|
||||
@@ -885,7 +885,7 @@ GLOBAL_LIST_EMPTY(allCasters)
|
||||
|
||||
/obj/item/newspaper/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is focusing intently on [src]! It looks like [user.p_theyre()] trying to commit sudoku... until [user.p_their()] eyes light up with realization!</span>")
|
||||
user.say(";JOURNALISM IS MY CALLING! EVERYBODY APPRECIATES UNBIASED REPORTI-GLORF")
|
||||
user.say(";JOURNALISM IS MY CALLING! EVERYBODY APPRECIATES UNBIASED REPORTI-GLORF", forced="newspaper suicide")
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/obj/W = new /obj/item/reagent_containers/food/drinks/bottle/whiskey(H.loc)
|
||||
playsound(H.loc, 'sound/items/drink.ogg', rand(10,50), 1)
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
// By default, the emagged recycler will gib all non-carbons. (human simple animal mobs don't count)
|
||||
if(iscarbon(L))
|
||||
if(L.stat == CONSCIOUS)
|
||||
L.say("ARRRRRRRRRRRGH!!!")
|
||||
L.say("ARRRRRRRRRRRGH!!!", forced="recycler grinding")
|
||||
add_mob_blood(L)
|
||||
|
||||
if(!blood && !issilicon(L))
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
cleanspeed = 10 //much faster than mop so it is useful for traitors who want to clean crime scenes
|
||||
|
||||
/obj/item/soap/suicide_act(mob/user)
|
||||
user.say(";FFFFFFFFFFFFFFFFUUUUUUUDGE!!")
|
||||
user.say(";FFFFFFFFFFFFFFFFUUUUUUUDGE!!", forced="soap suicide")
|
||||
user.visible_message("<span class='suicide'>[user] lifts [src] to [user.p_their()] mouth and gnaws on it furiously, producing a thick froth! [user.p_they(TRUE)]'ll never get that BB gun now!</span>")
|
||||
new /obj/effect/particle_effect/foam(loc)
|
||||
return (TOXLOSS)
|
||||
|
||||
@@ -535,11 +535,11 @@
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(is_capped || !actually_paints)
|
||||
user.visible_message("<span class='suicide'>[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, but nothing happens!</span>")
|
||||
user.say("MEDIOCRE!!")
|
||||
user.say("MEDIOCRE!!", forced="spraycan suicide")
|
||||
return SHAME
|
||||
else
|
||||
user.visible_message("<span class='suicide'>[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, spraying paint across [user.p_their()] teeth!</span>")
|
||||
user.say("WITNESS ME!!")
|
||||
user.say("WITNESS ME!!", forced="spraycan suicide")
|
||||
if(pre_noise || post_noise)
|
||||
playsound(loc, 'sound/effects/spray.ogg', 5, 1, 5)
|
||||
if(can_change_colour)
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
/obj/item/megaphone/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] is uttering [user.p_their()] last words into \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
spamcheck = 0//so they dont have to worry about recharging
|
||||
user.say("AAAAAAAAAAAARGHHHHH")//he must have died while coding this
|
||||
user.say("AAAAAAAAAAAARGHHHHH", forced="megaphone suicide")//he must have died while coding this
|
||||
return OXYLOSS
|
||||
|
||||
/obj/item/megaphone/get_held_item_speechspans(mob/living/carbon/user)
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
message_say = "FOR RATVAR!"
|
||||
else if(UM.has_antag_datum(/datum/antagonist/rev))
|
||||
message_say = "VIVA LA REVOLUTION!"
|
||||
M.say(message_say)
|
||||
M.say(message_say, forced="C4 suicide")
|
||||
|
||||
/obj/item/grenade/plastic/suicide_act(mob/user)
|
||||
message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [src] at [ADMIN_VERBOSEJMP(user)]")
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
"<span class='notice'>You raise [src] skywards, inspiring your allies!</span>")
|
||||
playsound(src, "rustle", 100, FALSE)
|
||||
if(warcry)
|
||||
user.say("[warcry]")
|
||||
user.say("[warcry]", forced="banner")
|
||||
var/old_transform = user.transform
|
||||
user.transform *= 1.2
|
||||
animate(user, transform = old_transform, time = 10)
|
||||
|
||||
@@ -482,7 +482,7 @@
|
||||
/obj/item/twohanded/spear/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] begins to sword-swallow \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
if(explosive)
|
||||
user.say("[war_cry]")
|
||||
user.say("[war_cry]", forced="spear warcry")
|
||||
explosive.forceMove(user)
|
||||
explosive.prime()
|
||||
user.gib()
|
||||
@@ -512,7 +512,7 @@
|
||||
if(isopenturf(AM)) //So you can actually melee with it
|
||||
return
|
||||
if(explosive && wielded)
|
||||
user.say("[war_cry]")
|
||||
user.say("[war_cry]", forced="spear warcry")
|
||||
explosive.forceMove(AM)
|
||||
explosive.prime()
|
||||
qdel(src)
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
visible_message("<span class='danger'>[user] smashes [src]!</span>", null, null, COMBAT_MESSAGE_RANGE)
|
||||
if(density)
|
||||
playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1)
|
||||
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced="hulk")
|
||||
else
|
||||
playsound(src, 'sound/effects/bang.ogg', 50, 1)
|
||||
take_damage(hulk_damage(), BRUTE, "melee", 0, get_dir(src, user))
|
||||
|
||||
@@ -18,12 +18,12 @@ GLOBAL_LIST_INIT(freqtospan, list(
|
||||
"[FREQ_CTF_BLUE]" = "blueteamradio"
|
||||
))
|
||||
|
||||
/atom/movable/proc/say(message, datum/language/language = null)
|
||||
/atom/movable/proc/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
if(!can_speak())
|
||||
return
|
||||
if(message == "" || !message)
|
||||
return
|
||||
var/list/spans = get_spans()
|
||||
spans |= get_spans()
|
||||
if(!language)
|
||||
language = get_default_language()
|
||||
send_speech(message, 7, src, , spans, message_language=language)
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
..(user, 1)
|
||||
if(prob(hardness))
|
||||
playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1)
|
||||
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced = "hulk")
|
||||
dismantle_wall(1)
|
||||
else
|
||||
playsound(src, 'sound/effects/bang.ogg', 50, 1)
|
||||
|
||||
@@ -1413,7 +1413,7 @@
|
||||
var/speech = input("What will [key_name(M)] say?.", "Force speech", "")// Don't need to sanitize, since it does that in say(), we also trust our admins.
|
||||
if(!speech)
|
||||
return
|
||||
M.say(speech)
|
||||
M.say(speech, forced = "admin speech")
|
||||
speech = sanitize(speech) // Nah, we don't trust them
|
||||
log_admin("[key_name(usr)] forced [key_name(M)] to say: [speech]")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] forced [key_name_admin(M)] to say: [speech]</span>")
|
||||
|
||||
@@ -185,7 +185,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
|
||||
blob_points = CLAMP(blob_points + points, 0, max_blob_points)
|
||||
hud_used.blobpwrdisplay.maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'><font color='#82ed00'>[round(blob_points)]</font></div>"
|
||||
|
||||
/mob/camera/blob/say(message)
|
||||
/mob/camera/blob/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
if (!message)
|
||||
return
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
E = new V
|
||||
E.Grant(src)
|
||||
|
||||
/mob/camera/eminence/say(message)
|
||||
/mob/camera/eminence/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
if(client)
|
||||
if(client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "You cannot send IC messages (muted).")
|
||||
|
||||
@@ -196,15 +196,15 @@
|
||||
/datum/action/innate/cult/master/finalreck/proc/chant(chant_number)
|
||||
switch(chant_number)
|
||||
if(1)
|
||||
owner.say("C'arta forbici!", language = /datum/language/common)
|
||||
owner.say("C'arta forbici!", language = /datum/language/common, forced = "cult invocation")
|
||||
if(2)
|
||||
owner.say("Pleggh e'ntrath!", language = /datum/language/common)
|
||||
owner.say("Pleggh e'ntrath!", language = /datum/language/common, forced = "cult invocation")
|
||||
playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 50, 1)
|
||||
if(3)
|
||||
owner.say("Barhah hra zar'garis!", language = /datum/language/common)
|
||||
owner.say("Barhah hra zar'garis!", language = /datum/language/common, forced = "cult invocation")
|
||||
playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 75, 1)
|
||||
if(4)
|
||||
owner.say("N'ath reth sh'yro eth d'rekkathnor!!!", language = /datum/language/common)
|
||||
owner.say("N'ath reth sh'yro eth d'rekkathnor!!!", language = /datum/language/common, forced = "cult invocation")
|
||||
playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 100, 1)
|
||||
|
||||
/datum/action/innate/cult/master/cultmark
|
||||
|
||||
@@ -62,7 +62,7 @@ Runes can either be invoked by one's self or with many different cultists. Each
|
||||
to_chat(user, "<span class='notice'>You carefully erase the [lowertext(cultist_name)] rune.</span>")
|
||||
qdel(src)
|
||||
else if(istype(I, /obj/item/nullrod))
|
||||
user.say("BEGONE FOUL MAGIKS!!")
|
||||
user.say("BEGONE FOUL MAGIKS!!", forced = "nullrod")
|
||||
to_chat(user, "<span class='danger'>You disrupt the magic of [src] with [I].</span>")
|
||||
qdel(src)
|
||||
|
||||
@@ -136,7 +136,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
if(isliving(M))
|
||||
var/mob/living/L = M
|
||||
if(invocation)
|
||||
L.say(invocation, language = /datum/language/common, ignore_spam = TRUE)
|
||||
L.say(invocation, language = /datum/language/common, ignore_spam = TRUE, forced = "cult invocation")
|
||||
if(invoke_damage)
|
||||
L.apply_damage(invoke_damage, BRUTE)
|
||||
to_chat(L, "<span class='cult italic'>[src] saps your strength!</span>")
|
||||
|
||||
@@ -107,7 +107,7 @@ the new instance inside the host to be updated to the template's stats.
|
||||
if(istype(B))
|
||||
to_chat(user, "<span class='notice'>[B.name]</span>")
|
||||
|
||||
/mob/camera/disease/say(message)
|
||||
/mob/camera/disease/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
return
|
||||
|
||||
/mob/camera/disease/Move(NewLoc, Dir = 0)
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
/mob/living/simple_animal/revenant/med_hud_set_status()
|
||||
return //we use no hud
|
||||
|
||||
/mob/living/simple_animal/revenant/say(message)
|
||||
/mob/living/simple_animal/revenant/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
if(!message)
|
||||
return
|
||||
src.log_talk(message, LOG_SAY)
|
||||
|
||||
@@ -301,7 +301,7 @@
|
||||
switch(user.zone_selected)
|
||||
if(BODY_ZONE_PRECISE_MOUTH)
|
||||
var/wgw = sanitize(input(user, "What would you like the victim to say", "Voodoo", null) as text)
|
||||
target.say(wgw)
|
||||
target.say(wgw, forced = "voodoo doll")
|
||||
log_game("[key_name(user)] made [key_name(target)] say [wgw] with a voodoo doll.")
|
||||
if(BODY_ZONE_PRECISE_EYES)
|
||||
user.set_machine(src)
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
if(M.a_intent == INTENT_HARM)
|
||||
M.changeNext_move(CLICK_CD_RAPID)
|
||||
if(warcry)
|
||||
M.say("[warcry]", ignore_spam = TRUE)
|
||||
M.say("[warcry]", ignore_spam = TRUE, forced = "north star warcry")
|
||||
.= FALSE
|
||||
|
||||
/obj/item/clothing/gloves/rapid/attack_self(mob/user)
|
||||
|
||||
@@ -12,10 +12,10 @@
|
||||
|
||||
/obj/item/clothing/head/chefhat/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is donning [src]! It looks like [user.p_theyre()] trying to become a chef.</span>")
|
||||
user.say("Bork Bork Bork!")
|
||||
user.say("Bork Bork Bork!", forced = "chef hat suicide")
|
||||
sleep(20)
|
||||
user.visible_message("<span class='suicide'>[user] climbs into an imaginary oven!</span>")
|
||||
user.say("BOOORK!")
|
||||
user.say("BOOORK!", forced = "chef hat suicide")
|
||||
playsound(user, 'sound/machines/ding.ogg', 50, 1)
|
||||
return(FIRELOSS)
|
||||
|
||||
|
||||
@@ -193,7 +193,7 @@
|
||||
return 0
|
||||
var/mob/living/carbon/human/H = user
|
||||
user.visible_message("<span class='suicide'>[user] is donning [src]! It looks like [user.p_theyre()] trying to be nice to girls.</span>")
|
||||
user.say("M'lady.")
|
||||
user.say("M'lady.", forced = "fedora suicide")
|
||||
sleep(10)
|
||||
H.facial_hair_style = "Neckbeard"
|
||||
return(BRUTELOSS)
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
to_chat(usr, "<span class='warning'>\The robe's internal magic supply is still recharging!</span>")
|
||||
return
|
||||
|
||||
usr.say("Rise, my creation! Off your page into this realm!")
|
||||
usr.say("Rise, my creation! Off your page into this realm!", forced = "stickman summoning")
|
||||
playsound(src.loc, 'sound/magic/summon_magic.ogg', 50, 1, 1)
|
||||
var/mob/living/M = new /mob/living/simple_animal/hostile/stickman(get_turf(usr))
|
||||
var/list/factions = usr.faction
|
||||
|
||||
@@ -283,7 +283,7 @@
|
||||
|
||||
/obj/item/clothing/accessory/lawyers_badge/attack_self(mob/user)
|
||||
if(prob(1))
|
||||
user.say("The testimony contradicts the evidence!")
|
||||
user.say("The testimony contradicts the evidence!", forced = "attorney's badge")
|
||||
user.visible_message("[user] shows [user.p_their()] attorney's badge.", "<span class='notice'>You show your attorney's badge.</span>")
|
||||
|
||||
/obj/item/clothing/accessory/lawyers_badge/on_uniform_equip(obj/item/clothing/under/U, user)
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
sleep(25)
|
||||
if(!user)
|
||||
return (OXYLOSS)
|
||||
user.say("BANG!")
|
||||
user.say("BANG!", forced = "banana")
|
||||
sleep(25)
|
||||
if(!user)
|
||||
return (OXYLOSS)
|
||||
|
||||
@@ -164,22 +164,22 @@
|
||||
var/failText = "<span class='warning'>The snake seems unsatisfied with your incomplete oath and returns to it's previous place on the rod, returning to its dormant, wooden state. You must stand still while completing your oath!</span>"
|
||||
to_chat(itemUser, "<span class='notice'>The wooden snake that was carved into the rod seems to suddenly come alive and begins to slither down your arm! The compulsion to help others grows abnormally strong...</span>")
|
||||
if(do_after(itemUser, 40, target = itemUser))
|
||||
itemUser.say("I swear to fulfill, to the best of my ability and judgment, this covenant:")
|
||||
itemUser.say("I swear to fulfill, to the best of my ability and judgment, this covenant:", forced = "hippocratic oath")
|
||||
else
|
||||
to_chat(itemUser, failText)
|
||||
return
|
||||
if(do_after(itemUser, 20, target = itemUser))
|
||||
itemUser.say("I will apply, for the benefit of the sick, all measures that are required, avoiding those twin traps of overtreatment and therapeutic nihilism.")
|
||||
itemUser.say("I will apply, for the benefit of the sick, all measures that are required, avoiding those twin traps of overtreatment and therapeutic nihilism.", forced = "hippocratic oath")
|
||||
else
|
||||
to_chat(itemUser, failText)
|
||||
return
|
||||
if(do_after(itemUser, 30, target = itemUser))
|
||||
itemUser.say("I will remember that I remain a member of society, with special obligations to all my fellow human beings, those sound of mind and body as well as the infirm.")
|
||||
itemUser.say("I will remember that I remain a member of society, with special obligations to all my fellow human beings, those sound of mind and body as well as the infirm.", forced = "hippocratic oath")
|
||||
else
|
||||
to_chat(itemUser, failText)
|
||||
return
|
||||
if(do_after(itemUser, 30, target = itemUser))
|
||||
itemUser.say("If I do not violate this oath, may I enjoy life and art, respected while I live and remembered with affection thereafter. May I always act so as to preserve the finest traditions of my calling and may I long experience the joy of healing those who seek my help.")
|
||||
itemUser.say("If I do not violate this oath, may I enjoy life and art, respected while I live and remembered with affection thereafter. May I always act so as to preserve the finest traditions of my calling and may I long experience the joy of healing those who seek my help.", forced = "hippocratic oath")
|
||||
else
|
||||
to_chat(itemUser, failText)
|
||||
return
|
||||
@@ -1083,7 +1083,7 @@
|
||||
to_chat(user, "<span class='hierophant_warning'>The[beacon ? " beacon is not currently":"re is a beacon"] attached.</span>")
|
||||
|
||||
/obj/item/hierophant_club/suicide_act(mob/living/user)
|
||||
say("Xverwpsgexmrk...")
|
||||
say("Xverwpsgexmrk...", forced = "hierophant club suicide")
|
||||
user.visible_message("<span class='suicide'>[user] holds [src] into the air! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
new/obj/effect/temp_visual/hierophant/telegraph(get_turf(user))
|
||||
playsound(user,'sound/machines/airlockopen.ogg', 75, TRUE)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/dead/observer/say(message)
|
||||
/mob/dead/observer/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
|
||||
if (!message)
|
||||
return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/brain/say(message, language)
|
||||
/mob/living/brain/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
if(!(container && istype(container, /obj/item/mmi)))
|
||||
return //No MMI, can't speak, bucko./N
|
||||
else
|
||||
|
||||
@@ -676,7 +676,7 @@
|
||||
|
||||
/mob/living/carbon/human/cuff_resist(obj/item/I)
|
||||
if(dna && dna.check_mutation(HULK))
|
||||
say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced = "hulk")
|
||||
if(..(I, cuff_break = FAST_CUFFBREAK))
|
||||
dropItemToGround(I)
|
||||
else
|
||||
|
||||
@@ -460,12 +460,12 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
|
||||
else
|
||||
ballmer_percent = (-abs(drunkenness - 13.35) / 0.9) + 1
|
||||
if(prob(5))
|
||||
say(pick(GLOB.ballmer_good_msg))
|
||||
say(pick(GLOB.ballmer_good_msg), forced = "ballmer")
|
||||
SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = BALLMER_POINTS * ballmer_percent))
|
||||
if(drunkenness > 26) // by this point you're into windows ME territory
|
||||
if(prob(5))
|
||||
SSresearch.science_tech.remove_point_list(list(TECHWEB_POINT_TYPE_GENERIC = BALLMER_POINTS))
|
||||
say(pick(GLOB.ballmer_windows_me_msg))
|
||||
say(pick(GLOB.ballmer_windows_me_msg), forced = "ballmer")
|
||||
|
||||
if(drunkenness >= 41)
|
||||
if(prob(25))
|
||||
|
||||
@@ -81,7 +81,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
||||
|
||||
return new_msg
|
||||
|
||||
/mob/living/say(message, bubble_type,var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE)
|
||||
/mob/living/say(message, bubble_type,var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
var/static/list/crit_allowed_modes = list(MODE_WHISPER = TRUE, MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE)
|
||||
var/static/list/unconscious_allowed_modes = list(MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE)
|
||||
var/talk_key = get_key(message)
|
||||
@@ -174,7 +174,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
||||
message_mode = MODE_WHISPER_CRIT
|
||||
succumbed = TRUE
|
||||
else
|
||||
src.log_talk(message, LOG_SAY)
|
||||
src.log_talk(message, LOG_SAY, forced_by=forced)
|
||||
|
||||
message = treat_message(message)
|
||||
if(!message)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/silicon/ai/say(message, language)
|
||||
/mob/living/silicon/ai/say(message, bubble_type,var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
if(parent && istype(parent) && parent.stat != DEAD) //If there is a defined "parent" AI, it is actually an AI, and it is alive, anything the AI tries to say is said by the parent instead.
|
||||
parent.say(message, language)
|
||||
return
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/mob/living/silicon/pai/say(msg)
|
||||
/mob/living/silicon/pai/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
if(silent)
|
||||
to_chat(src, "<span class='warning'>Communication circuits remain unitialized.</span>")
|
||||
else
|
||||
..(msg)
|
||||
..(message)
|
||||
|
||||
/mob/living/silicon/pai/binarycheck()
|
||||
return 0
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
return 0
|
||||
if(boss)
|
||||
if(say_when_triggered)
|
||||
boss.say(say_when_triggered)
|
||||
boss.say(say_when_triggered, forced = "boss action")
|
||||
if(!boss.atb.spend(boss_cost))
|
||||
return 0
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
. = ..()
|
||||
migo_sounds = list('sound/items/bubblewrap.ogg', 'sound/items/change_jaws.ogg', 'sound/items/crowbar.ogg', 'sound/items/drink.ogg', 'sound/items/deconstruct.ogg', 'sound/items/carhorn.ogg', 'sound/items/change_drill.ogg', 'sound/items/dodgeball.ogg', 'sound/items/eatfood.ogg', 'sound/items/megaphone.ogg', 'sound/items/screwdriver.ogg', 'sound/items/weeoo1.ogg', 'sound/items/wirecutter.ogg', 'sound/items/welder.ogg', 'sound/items/zip.ogg', 'sound/items/rped.ogg', 'sound/items/ratchet.ogg', 'sound/items/polaroid1.ogg', 'sound/items/pshoom.ogg', 'sound/items/airhorn.ogg', 'sound/items/geiger/high1.ogg', 'sound/items/geiger/high2.ogg', 'sound/voice/beepsky/creep.ogg', 'sound/voice/beepsky/iamthelaw.ogg', 'sound/voice/ed209_20sec.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss6.ogg', 'sound/voice/medbot/patchedup.ogg', 'sound/voice/medbot/feelbetter.ogg', 'sound/voice/human/manlaugh1.ogg', 'sound/voice/human/womanlaugh.ogg', 'sound/weapons/sear.ogg', 'sound/ambience/antag/clockcultalr.ogg', 'sound/ambience/antag/ling_aler.ogg', 'sound/ambience/antag/tatoralert.ogg', 'sound/ambience/antag/monkey.ogg', 'sound/mecha/nominal.ogg', 'sound/mecha/weapdestr.ogg', 'sound/mecha/critdestr.ogg', 'sound/mecha/imag_enh.ogg', 'sound/effects/adminhelp.ogg', 'sound/effects/alert.ogg', 'sound/effects/attackblob.ogg', 'sound/effects/bamf.ogg', 'sound/effects/blobattack.ogg', 'sound/effects/break_stone.ogg', 'sound/effects/bubbles.ogg', 'sound/effects/bubbles2.ogg', 'sound/effects/clang.ogg', 'sound/effects/clockcult_gateway_disrupted.ogg', 'sound/effects/clownstep2.ogg', 'sound/effects/curse1.ogg', 'sound/effects/dimensional_rend.ogg', 'sound/effects/doorcreaky.ogg', 'sound/effects/empulse.ogg', 'sound/effects/explosion_distant.ogg', 'sound/effects/explosionfar.ogg', 'sound/effects/explosion1.ogg', 'sound/effects/grillehit.ogg', 'sound/effects/genetics.ogg', 'sound/effects/heart_beat.ogg', 'sound/effects/hyperspace_begin.ogg', 'sound/effects/hyperspace_end.ogg', 'sound/effects/his_grace_awaken.ogg', 'sound/effects/pai_boot.ogg', 'sound/effects/phasein.ogg', 'sound/effects/picaxe1.ogg', 'sound/effects/ratvar_reveal.ogg', 'sound/effects/sparks1.ogg', 'sound/effects/smoke.ogg', 'sound/effects/splat.ogg', 'sound/effects/snap.ogg', 'sound/effects/tendril_destroyed.ogg', 'sound/effects/supermatter.ogg', 'sound/misc/desceration-01.ogg', 'sound/misc/desceration-02.ogg', 'sound/misc/desceration-03.ogg', 'sound/misc/bloblarm.ogg', 'sound/misc/airraid.ogg', 'sound/misc/bang.ogg','sound/misc/highlander.ogg', 'sound/misc/interference.ogg', 'sound/misc/notice1.ogg', 'sound/misc/notice2.ogg', 'sound/misc/sadtrombone.ogg', 'sound/misc/slip.ogg', 'sound/misc/splort.ogg', 'sound/weapons/armbomb.ogg', 'sound/weapons/beam_sniper.ogg', 'sound/weapons/chainsawhit.ogg', 'sound/weapons/emitter.ogg', 'sound/weapons/emitter2.ogg', 'sound/weapons/blade1.ogg', 'sound/weapons/bladeslice.ogg', 'sound/weapons/blastcannon.ogg', 'sound/weapons/blaster.ogg', 'sound/weapons/bulletflyby3.ogg', 'sound/weapons/circsawhit.ogg', 'sound/weapons/cqchit2.ogg', 'sound/weapons/drill.ogg', 'sound/weapons/genhit1.ogg', 'sound/weapons/gunshot_silenced.ogg', 'sound/weapons/gunshot2.ogg', 'sound/weapons/handcuffs.ogg', 'sound/weapons/homerun.ogg', 'sound/weapons/kenetic_accel.ogg', 'sound/machines/clockcult/steam_whoosh.ogg', 'sound/machines/fryer/deep_fryer_emerge.ogg', 'sound/machines/airlock.ogg', 'sound/machines/airlock_alien_prying.ogg', 'sound/machines/airlockclose.ogg', 'sound/machines/airlockforced.ogg', 'sound/machines/airlockopen.ogg', 'sound/machines/alarm.ogg', 'sound/machines/blender.ogg', 'sound/machines/boltsdown.ogg', 'sound/machines/boltsup.ogg', 'sound/machines/buzz-sigh.ogg', 'sound/machines/buzz-two.ogg', 'sound/machines/chime.ogg', 'sound/machines/cryo_warning.ogg', 'sound/machines/defib_charge.ogg', 'sound/machines/defib_failed.ogg', 'sound/machines/defib_ready.ogg', 'sound/machines/defib_zap.ogg', 'sound/machines/deniedbeep.ogg', 'sound/machines/ding.ogg', 'sound/machines/disposalflush.ogg', 'sound/machines/door_close.ogg', 'sound/machines/door_open.ogg', 'sound/machines/engine_alert1.ogg', 'sound/machines/engine_alert2.ogg', 'sound/machines/hiss.ogg', 'sound/machines/honkbot_evil_laugh.ogg', 'sound/machines/juicer.ogg', 'sound/machines/ping.ogg', 'sound/machines/signal.ogg', 'sound/machines/synth_no.ogg', 'sound/machines/synth_yes.ogg', 'sound/machines/terminal_alert.ogg', 'sound/machines/triple_beep.ogg', 'sound/machines/twobeep.ogg', 'sound/machines/ventcrawl.ogg', 'sound/machines/warning-buzzer.ogg', 'sound/ai/outbreak5.ogg', 'sound/ai/outbreak7.ogg', 'sound/ai/poweroff.ogg', 'sound/ai/radiation.ogg', 'sound/ai/shuttlecalled.ogg', 'sound/ai/shuttledock.ogg', 'sound/ai/shuttlerecalled.ogg', 'sound/ai/aimalf.ogg') //hahahaha fuck you code divers
|
||||
|
||||
/mob/living/simple_animal/hostile/netherworld/migo/say(message)
|
||||
/mob/living/simple_animal/hostile/netherworld/migo/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
..()
|
||||
if(stat)
|
||||
return
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
|
||||
// Cannot talk
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/say()
|
||||
/mob/living/simple_animal/hostile/statue/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
return 0
|
||||
|
||||
// Turn to dust when gibbed
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
length += emote_see.len
|
||||
var/randomValue = rand(1,length)
|
||||
if(randomValue <= speak.len)
|
||||
say(pick(speak))
|
||||
say(pick(speak), forced = "poly")
|
||||
else
|
||||
randomValue -= speak.len
|
||||
if(emote_see && randomValue <= emote_see.len)
|
||||
@@ -182,7 +182,7 @@
|
||||
else
|
||||
emote("me [pick(emote_hear)]", 2)
|
||||
else
|
||||
say(pick(speak))
|
||||
say(pick(speak), forced = "poly")
|
||||
else
|
||||
if(!(emote_hear && emote_hear.len) && (emote_see && emote_see.len))
|
||||
emote("me", 1, pick(emote_see))
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
H.SetKnockdown(0)
|
||||
H.adjustStaminaLoss(-75)
|
||||
H.stuttering = 0
|
||||
H.say(pick("A CORNERED FOX IS MORE DANGEROUS THAN A JACKAL!","HURT ME MOOORRREEE!","IMPRESSIVE!"))
|
||||
H.say(pick("A CORNERED FOX IS MORE DANGEROUS THAN A JACKAL!","HURT ME MOOORRREEE!","IMPRESSIVE!"), forced = "ninjaboost")
|
||||
a_boost--
|
||||
to_chat(H, "<span class='notice'>There are <B>[a_boost]</B> adrenaline boosts remaining.</span>")
|
||||
s_coold = 3
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
return
|
||||
if(!ninjacost(200,N_STEALTH_CANCEL))
|
||||
H.Beam(C,"n_beam",time=15)
|
||||
H.say("Get over here!")
|
||||
H.say("Get over here!", forced = "ninja net")
|
||||
var/obj/structure/energy_net/E = new /obj/structure/energy_net(C.drop_location())
|
||||
E.affecting = C
|
||||
E.master = H
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
/obj/item/paper/contract/infernal/suicide_act(mob/user)
|
||||
if(signed && (user == target.current) && istype(user, /mob/living/carbon/human/))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.forcesay("OH GREAT INFERNO! I DEMAND YOU COLLECT YOUR BOUNTY IMMEDIATELY!")
|
||||
H.forcesay("OH GREAT INFERNO! I DEMAND YOU COLLECT YOUR BOUNTY IMMEDIATELY!", forced = "infernal contract suicide")
|
||||
H.visible_message("<span class='suicide'>[H] holds up a contract claiming [user.p_their()] soul, then immediately catches fire. It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
H.adjust_fire_stacks(20)
|
||||
H.IgniteMob()
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "tased", /datum/mood_event/tased)
|
||||
SEND_SIGNAL(C, COMSIG_LIVING_MINOR_SHOCK)
|
||||
if(C.dna && C.dna.check_mutation(HULK))
|
||||
C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced = "hulk")
|
||||
else if((C.status_flags & CANKNOCKDOWN) && !C.has_trait(TRAIT_STUNIMMUNE))
|
||||
addtimer(CALLBACK(C, /mob/living/carbon.proc/do_jitter_animation, jitter), 5)
|
||||
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
hal_target.Knockdown(100)
|
||||
hal_target.stuttering += 20
|
||||
if(hal_target.dna && hal_target.dna.check_mutation(HULK))
|
||||
hal_target.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
hal_target.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced = "hulk")
|
||||
else if((hal_target.status_flags & CANKNOCKDOWN) && !hal_target.has_trait(TRAIT_STUNIMMUNE))
|
||||
addtimer(CALLBACK(hal_target, /mob/living/carbon.proc/do_jitter_animation, 20), 5)
|
||||
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
M.stuttering = min(M.stuttering+4, 10)
|
||||
M.Dizzy(5)
|
||||
if(iscultist(M) && prob(20))
|
||||
M.say(pick("Av'te Nar'sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","R'ge Na'sie","Diabo us Vo'iscum","Eld' Mon Nobis"))
|
||||
M.say(pick("Av'te Nar'sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","R'ge Na'sie","Diabo us Vo'iscum","Eld' Mon Nobis"), forced = "holy water")
|
||||
if(prob(10))
|
||||
M.visible_message("<span class='danger'>[M] starts having a seizure!</span>", "<span class='userdanger'>You have a seizure!</span>")
|
||||
M.Unconscious(120)
|
||||
@@ -414,7 +414,7 @@
|
||||
else
|
||||
M.visible_message("<b>[M]</b> flexes [M.p_their()] arms.")
|
||||
if(prob(10))
|
||||
M.say(pick("Shit was SO cash.", "You are everything bad in the world.", "What sports do you play, other than 'jack off to naked drawn Japanese people?'", "Don’t be a stranger. Just hit me with your best shot.", "My name is John and I hate every single one of you."))
|
||||
M.say(pick("Shit was SO cash.", "You are everything bad in the world.", "What sports do you play, other than 'jack off to naked drawn Japanese people?'", "Don’t be a stranger. Just hit me with your best shot.", "My name is John and I hate every single one of you."), forced = "spraytan")
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1650,7 +1650,7 @@
|
||||
|
||||
/datum/reagent/royal_bee_jelly/on_mob_life(mob/living/carbon/M)
|
||||
if(prob(2))
|
||||
M.say(pick("Bzzz...","BZZ BZZ","Bzzzzzzzzzzz..."))
|
||||
M.say(pick("Bzzz...","BZZ BZZ","Bzzzzzzzzzzz..."), forced = "royal bee jelly")
|
||||
..()
|
||||
|
||||
//Misc reagents
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
if(host_mob.stat == DEAD)
|
||||
return
|
||||
to_chat(host_mob, "<span class='warning'>You feel compelled to speak...</span>")
|
||||
host_mob.say(sentence)
|
||||
host_mob.say(sentence, forced = "nanite speech")
|
||||
|
||||
/datum/nanite_program/triggered/voice
|
||||
name = "Skull Echo"
|
||||
|
||||
@@ -237,9 +237,9 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
|
||||
switch(invocation_type)
|
||||
if("shout")
|
||||
if(prob(50))//Auto-mute? Fuck that noise
|
||||
user.say(invocation)
|
||||
user.say(invocation, forced = "spell")
|
||||
else
|
||||
user.say(replacetext(invocation," ","`"))
|
||||
user.say(replacetext(invocation," ","`"), forced = "spell")
|
||||
if("whisper")
|
||||
if(prob(50))
|
||||
user.whisper(invocation)
|
||||
|
||||
@@ -77,12 +77,12 @@
|
||||
else
|
||||
switch(invocation_type)
|
||||
if("shout")
|
||||
user.say("[invocation] [uppertext(chosenarea.name)]")
|
||||
user.say("[invocation] [uppertext(chosenarea.name)]", forced = "spell")
|
||||
if(user.gender==MALE)
|
||||
playsound(user.loc, pick('sound/misc/null.ogg','sound/misc/null.ogg'), 100, 1)
|
||||
else
|
||||
playsound(user.loc, pick('sound/misc/null.ogg','sound/misc/null.ogg'), 100, 1)
|
||||
if("whisper")
|
||||
user.whisper("[invocation] [uppertext(chosenarea.name)]")
|
||||
user.whisper("[invocation] [uppertext(chosenarea.name)]", forced = "spell")
|
||||
|
||||
return
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
/obj/item/melee/touch_attack/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
user.say(catchphrase)
|
||||
user.say(catchphrase, forced = "spell")
|
||||
playsound(get_turf(user), on_use_sound,50,1)
|
||||
charges--
|
||||
if(charges <= 0)
|
||||
|
||||
@@ -374,4 +374,4 @@
|
||||
. = ..()
|
||||
if(ishuman(thrower))
|
||||
var/mob/living/carbon/human/H = thrower
|
||||
H.say("LIGHTNINGBOLT!!")
|
||||
H.say("LIGHTNINGBOLT!!", forced = "spell")
|
||||
|
||||
Reference in New Issue
Block a user