mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-15 12:23:30 +00:00
Replace all modular HTML spans with defines spans
In total: - Adds span defines for `reallybig hypnophrase`, `big warning`, `header` - Fixes a missing apostrophe for hypno stare - Makes a special exception for cuddling.dm, which uses an irregular span - Puts the spans file back
This commit is contained in:
5
code/__SPLURTCODE/DEFINES/spans.dm
Normal file
5
code/__SPLURTCODE/DEFINES/spans.dm
Normal file
@@ -0,0 +1,5 @@
|
||||
// This file is maintained for exotic span types
|
||||
#define span_reallybig_hypnophrase(str) ("<span class='reallybig hypnophrase'>" + str + "</span>")
|
||||
#define span_big_warning(str) ("<span class='big warning'>" + str + "</span>")
|
||||
#define span_header(str) ("<span class='header'>" + str + "</span>")
|
||||
#define span_umbra(str) ("<span class='umbra'>" + str + "</span>")
|
||||
@@ -14,8 +14,8 @@
|
||||
return
|
||||
playsound(src.loc, 'sound/weapons/slap.ogg', 50, 1, -1)
|
||||
if(HAS_TRAIT(src, TRAIT_STEEL_ASS))
|
||||
to_chat(src, "<span class='danger'>You feel something bounce off your steely asscheeks, but nothing is there...</span>")
|
||||
to_chat(user, "<span class='danger'>You slap \The [src]'s ass, but your ethereal hand bounces right off!</span>")
|
||||
to_chat(src, span_danger("You feel something bounce off your steely asscheeks, but nothing is there..."))
|
||||
to_chat(user, span_danger("You slap \The [src]'s ass, but your ethereal hand bounces right off!"))
|
||||
playsound(src.loc, 'sound/weapons/tap.ogg', 50, 1, -1)
|
||||
return
|
||||
if(istype(H))
|
||||
@@ -26,7 +26,7 @@
|
||||
H.dna.species.stop_wagging_tail(src)
|
||||
playsound(src.loc, 'sound/weapons/slap.ogg', 50, 1, -1)
|
||||
src.visible_message(\
|
||||
"<span class='danger'>You hear someone slap \The [src]'s ass, but nobody's there...</span>",\
|
||||
"<span class='notice'>Somebody slaps your ass, but nobody is around...</span>",\
|
||||
"You hear a slap.", target=user, target_message="<span class='notice'>You manage to will your ethereal hand to slap \The [src]'s ass.</span>")
|
||||
span_danger("You hear someone slap \The [src]'s ass, but nobody's there..."),\
|
||||
span_notice("Somebody slaps your ass, but nobody is around..."),\
|
||||
"You hear a slap.", target=user, target_message=span_notice("You manage to will your ethereal hand to slap \The [src]'s ass."))
|
||||
return
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
if(recorded_size != normal_resize)
|
||||
playsound(wearer, 'sound/effects/magic.ogg', 50, 1)
|
||||
wearer.flash_lighting_fx(3, 3, LIGHT_COLOR_PURPLE)
|
||||
wearer.visible_message("<span class='warning'>A flash of purple light engulfs \the [wearer], before [wearer.p_they()] jump[wearer.p_s()] to a more average size!</span>","<span class='notice'>You feel warm for a moment, before everything scales to your size...</span>")
|
||||
wearer.visible_message(span_warning("A flash of purple light engulfs \the [wearer], before [wearer.p_they()] jump[wearer.p_s()] to a more average size!"),span_notice("You feel warm for a moment, before everything scales to your size..."))
|
||||
wearer.update_size(normal_resize)
|
||||
RegisterSignal(wearer, COMSIG_MOB_RESIZED, .proc/normalize_size)
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
return
|
||||
playsound(wearer,'sound/weapons/emitter2.ogg', 50, 1)
|
||||
wearer.flash_lighting_fx(3, 3, LIGHT_COLOR_YELLOW)
|
||||
wearer.visible_message("<span class='warning'>Golden light engulfs \the [wearer], and [wearer.p_they()] shoot[wearer.p_s()] back to [wearer.p_their()] default height!</span>","<span class='notice'>Energy rushes through your body, and you return to normal.</span>")
|
||||
wearer.visible_message(span_warning("Golden light engulfs \the [wearer], and [wearer.p_they()] shoot[wearer.p_s()] back to [wearer.p_their()] default height!"),span_notice("Energy rushes through your body, and you return to normal."))
|
||||
wearer.update_size(recorded_size)
|
||||
|
||||
//Make sure the size stays normalized while worn and add the change to the recorded size
|
||||
|
||||
@@ -209,7 +209,7 @@
|
||||
playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/final_f1.ogg',
|
||||
'modular_sand/sound/interactions/final_f2.ogg',
|
||||
'modular_sand/sound/interactions/final_f3.ogg'), 70, 1, 0)
|
||||
visible_message(message = "<span class='userlove'><b>\The [src]</b> [message]</span>", ignored_mobs = get_unconsenting())
|
||||
visible_message(message = span_userlove("<b>\The [src]</b> [message]"), ignored_mobs = get_unconsenting())
|
||||
multiorgasms += 1
|
||||
|
||||
if(multiorgasms > (get_sexual_potency() * 0.34)) //AAAAA, WE DONT WANT NEGATIVES HERE, RE
|
||||
@@ -364,7 +364,7 @@
|
||||
'modular_sand/sound/interactions/bj9.ogg',
|
||||
'modular_sand/sound/interactions/bj10.ogg',
|
||||
'modular_sand/sound/interactions/bj11.ogg'), 50, 1, -1)
|
||||
visible_message(message = "<span class='lewd'><b>\The [src]</b> [message]</span>", ignored_mobs = get_unconsenting())
|
||||
visible_message(message = span_lewd("<b>\The [src]</b> [message]"), ignored_mobs = get_unconsenting())
|
||||
if(fucktarget != "penis" || user.can_penetrating_genital_cum())
|
||||
user.handle_post_sex(lust_increase, CUM_TARGET_MOUTH, src)
|
||||
lust_increase = NORMAL_LUST //RESET IT REE
|
||||
@@ -386,7 +386,7 @@
|
||||
playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/bang1.ogg',
|
||||
'modular_sand/sound/interactions/bang2.ogg',
|
||||
'modular_sand/sound/interactions/bang3.ogg'), 70, 1, -1)
|
||||
visible_message(message = "<span class='lewd'><b>\The [src]</b> [message]</span>", ignored_mobs = get_unconsenting())
|
||||
visible_message(message = span_lewd("<b>\The [src]</b> [message]"), ignored_mobs = get_unconsenting())
|
||||
handle_post_sex(NORMAL_LUST, CUM_TARGET_BREASTS, user)
|
||||
|
||||
/*
|
||||
@@ -397,7 +397,7 @@
|
||||
to_chat(src, "<span class='warning'> You need exposed genitals!</b>")
|
||||
return
|
||||
if(!LAZYLEN(holder.equipment))
|
||||
to_chat(src, "<span class='warning'>You'll have to put something in it first, since it seems to be clean</span>")
|
||||
to_chat(src, span_warning("You'll have to put something in it first, since it seems to be clean"))
|
||||
return
|
||||
|
||||
var/obj/item/gimme = input(src, "What do you want to remove?", "Remove equipment", null) as null|anything in holder.equipment
|
||||
@@ -417,7 +417,7 @@
|
||||
"licks right into [target]'s [pick(list("belly button", "navel"))]"
|
||||
)
|
||||
|
||||
message = "<span class='lewd'><b>\The [src]</b> [pick(nuzzles)]. </span>"
|
||||
message = span_lewd("<b>\The [src]</b> [pick(nuzzles)]. ")
|
||||
visible_message(message, ignored_mobs = get_unconsenting())
|
||||
|
||||
/mob/living/proc/do_bellyfuck(mob/living/partner)
|
||||
@@ -436,7 +436,7 @@
|
||||
|
||||
playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/champ1.ogg',
|
||||
'modular_sand/sound/interactions/champ2.ogg'), 50, 1, -1)
|
||||
visible_message(message = "<span class='lewd'><b>\The [src]</b> [message]</span>", ignored_mobs = get_unconsenting())
|
||||
visible_message(message = span_lewd("<b>\The [src]</b> [message]"), ignored_mobs = get_unconsenting())
|
||||
if(can_penetrating_genital_cum())
|
||||
handle_post_sex(NORMAL_LUST, CUM_TARGET_BELLY, partner)
|
||||
//partner.handle_post_sex(NORMAL_LUST, null, src) //don't think we need it for this one
|
||||
@@ -450,7 +450,7 @@
|
||||
"shoves \the <b>[target]</b>'s whole head into [u_His] cleavage"
|
||||
)
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(lines)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(lines)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting())
|
||||
playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/bang1.ogg',
|
||||
'modular_sand/sound/interactions/bang2.ogg',
|
||||
@@ -464,7 +464,7 @@
|
||||
"has a nice taste of \the <b>[target]</b>'s drenched body",
|
||||
"takes a whiff of \the <b>[target]</b>'s musk and drinks [t_His] warm sweat")
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(lines)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(lines)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting())
|
||||
playlewdinteractionsound(loc, 'modular_sand/sound/interactions/champ_fingering.ogg', 50, 1, -1)
|
||||
|
||||
@@ -478,7 +478,7 @@
|
||||
"makes sure to squeeze \the <b>[target]</b>'s face well under [u_His] [pick(musk)] armpit and let them take a whiff"
|
||||
)
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(lines)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(lines)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting())
|
||||
playlewdinteractionsound(loc, pick(
|
||||
'modular_sand/sound/interactions/squelch1.ogg',
|
||||
@@ -495,7 +495,7 @@
|
||||
"goes face deep into \the <b>[target]</b> [pick(musk)] armpit, worshipping it with [u_His] tongue and nose"
|
||||
)
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(lines)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(lines)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting())
|
||||
playlewdinteractionsound(loc, pick(
|
||||
'modular_sand/sound/interactions/squelch1.ogg',
|
||||
@@ -527,7 +527,7 @@
|
||||
)
|
||||
set_is_fucking(target, CUM_TARGET_ARMPIT, getorganslot(ORGAN_SLOT_PENIS))
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b>[pick(lines)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b>[pick(lines)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting())
|
||||
playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/bang1.ogg',
|
||||
'modular_sand/sound/interactions/bang2.ogg',
|
||||
@@ -560,7 +560,7 @@
|
||||
)
|
||||
target.set_is_fucking(src, CUM_TARGET_ARMPIT, target.getorganslot(ORGAN_SLOT_PENIS))
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(lines)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(lines)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting())
|
||||
playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/bang1.ogg',
|
||||
'modular_sand/sound/interactions/bang2.ogg',
|
||||
@@ -588,7 +588,7 @@
|
||||
)
|
||||
target.set_is_fucking(src, CUM_TARGET_BREASTS, getorganslot(ORGAN_SLOT_PENIS))
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(lines)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(lines)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting())
|
||||
playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/bang1.ogg',
|
||||
'modular_sand/sound/interactions/bang2.ogg',
|
||||
@@ -618,7 +618,7 @@
|
||||
)
|
||||
target.set_is_fucking(src, NUTS_TO_FACE, getorganslot(ORGAN_SLOT_PENIS))
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(lines)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(lines)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting())
|
||||
target.handle_post_sex(lust_increase, CUM_TARGET_MOUTH, src)
|
||||
|
||||
@@ -652,7 +652,7 @@
|
||||
)
|
||||
set_is_fucking(target, CUM_TARGET_URETHRA, getorganslot(ORGAN_SLOT_PENIS))
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(lines)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(lines)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting())
|
||||
playlewdinteractionsound(src, pick(noises), 70, 1, -1)
|
||||
if(can_penetrating_genital_cum())
|
||||
@@ -687,7 +687,7 @@
|
||||
if(!is_fucking(target, CUM_TARGET_NIPPLE))
|
||||
set_is_fucking(target, CUM_TARGET_NIPPLE, getorganslot(ORGAN_SLOT_PENIS))
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(lines)]!</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(lines)]!")
|
||||
visible_message(message, ignored_mobs = get_unconsenting())
|
||||
playlewdinteractionsound(src, pick('modular_sand/sound/interactions/bang1.ogg',
|
||||
'modular_sand/sound/interactions/bang2.ogg',
|
||||
@@ -717,7 +717,7 @@
|
||||
)
|
||||
set_is_fucking(target, CUM_TARGET_THIGHS, getorganslot(ORGAN_SLOT_PENIS))
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(lines)]!</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(lines)]!")
|
||||
visible_message(message, ignored_mobs = get_unconsenting())
|
||||
playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/bang1.ogg',
|
||||
'modular_sand/sound/interactions/bang2.ogg',
|
||||
@@ -748,7 +748,7 @@
|
||||
)
|
||||
target.set_is_fucking(src, CUM_TARGET_THIGHS, target.getorganslot(ORGAN_SLOT_PENIS))
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(lines)]!</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(lines)]!")
|
||||
visible_message(message, ignored_mobs = get_unconsenting())
|
||||
playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/bang1.ogg',
|
||||
'modular_sand/sound/interactions/bang2.ogg',
|
||||
@@ -784,7 +784,7 @@
|
||||
"'s [pick(ass)] claps against \the <b>[target]</b>'s nose, right before [u_He] [pick(braps)]"
|
||||
)
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b>[pick(hell)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b>[pick(hell)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
playlewdinteractionsound(loc, pick(GLOB.brap_noises), 50, 1, -1, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
if(!is_fucking(target, GRINDING_FACE_WITH_ANUS))
|
||||
@@ -818,7 +818,7 @@
|
||||
" [pick(braps)] into \the <b>[target]</b>'s [genital_name]"
|
||||
)
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b>[pick(hell)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b>[pick(hell)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
playlewdinteractionsound(loc, pick(GLOB.brap_noises), 50, 1, -1, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
if(!target.is_fucking(src, CUM_TARGET_ANUS))
|
||||
@@ -862,7 +862,7 @@
|
||||
"shoves their [genital_name] deep inside of \the <b>[target]</b>'s [pick(ass)], [t_He] [pick(braps)][pick("", ". [jiggle]")]")
|
||||
set_is_fucking(target, CUM_TARGET_ANUS, getorganslot(ORGAN_SLOT_PENIS))
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(hell)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(hell)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
playlewdinteractionsound(target.loc, pick(GLOB.brap_noises), 50, 1, -1, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
playlewdinteractionsound(target.loc, pick('modular_sand/sound/interactions/bang1.ogg',
|
||||
@@ -897,7 +897,7 @@
|
||||
)
|
||||
set_is_fucking(target, GRINDING_FACE_WITH_ANUS, null)
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(hell)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(hell)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
playlewdinteractionsound(target.loc, pick(GLOB.brap_noises), 50, 1, -1, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
playlewdinteractionsound(target.loc, 'modular_sand/sound/interactions/champ_fingering.ogg', 50, 1, -1, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
@@ -920,7 +920,7 @@
|
||||
"smothers \the <b>[target]</b>'s face in between [u_His] musky, dirty asscheeks, [pick(list("", "letting out a [pick(stank)] fart and"))] sliding a monster turd right into [t_His] mouth"
|
||||
)
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(hell)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(hell)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
playlewdinteractionsound(loc, pick(GLOB.brap_noises), 50, 1, -1, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
if(!is_fucking(target, GRINDING_FACE_WITH_ANUS))
|
||||
@@ -951,7 +951,7 @@
|
||||
"shits uncontrollably all over \the <b>[target]</b>'s [genital_name][prob(50) ? "" : ". [jiggle]"]"
|
||||
)
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(hell)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(hell)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
playlewdinteractionsound(loc, pick(GLOB.brap_noises), 50, 1, -1, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
if(!target.is_fucking(src, CUM_TARGET_ANUS))
|
||||
@@ -989,7 +989,7 @@
|
||||
"shoves [genital_name] deep inside of \the <b>[target]</b>'s [pick(ass)], [t_He] releases a massive amount of mush to greet the rod[pick("", ". [jiggle]")]")
|
||||
set_is_fucking(target, CUM_TARGET_ANUS, getorganslot(ORGAN_SLOT_PENIS))
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(hell)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(hell)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting(unholy = TRUE), ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
playlewdinteractionsound(target.loc, pick(GLOB.brap_noises), 70, 1, -1)
|
||||
playlewdinteractionsound(target.loc, pick('modular_sand/sound/interactions/bang1.ogg',
|
||||
@@ -1024,7 +1024,7 @@
|
||||
)
|
||||
set_is_fucking(target, GRINDING_FACE_WITH_ANUS, null)
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(hell)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(hell)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
playlewdinteractionsound(target.loc, pick(GLOB.brap_noises), 50, 1, -1, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
playlewdinteractionsound(target.loc, 'modular_sand/sound/interactions/champ_fingering.ogg', 50, 1, -1, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
@@ -1039,7 +1039,7 @@
|
||||
"lets out a moan of relief as yellow rain starts pouring over \the <b>[target]</b>"
|
||||
)
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(hell)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(hell)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
if(get_lust() < 10)
|
||||
add_lust(10)
|
||||
@@ -1055,7 +1055,7 @@
|
||||
"lets out a moan of relief as yellow rain starts pouring in between \the <b>[target]</b>'s lips"
|
||||
)
|
||||
|
||||
message = "<span class='lewd'>\The <b>[src]</b> [pick(hell)]</span>"
|
||||
message = span_lewd("\The <b>[src]</b> [pick(hell)]")
|
||||
visible_message(message, ignored_mobs = get_unconsenting(unholy = TRUE))
|
||||
if(!is_fucking(target, CUM_TARGET_MOUTH))
|
||||
set_is_fucking(target, CUM_TARGET_MOUTH, pee_pee)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s ass honks!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s ass honks!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"\The <b>[user]</b>'s grope squeezes a honk out of \the <b>[target]</b>'s [pick(GLOB.breast_nouns)]!"
|
||||
)
|
||||
if(prob(50))
|
||||
target.visible_message("<span class='lewd'>[pick(honks)]</span>")
|
||||
target.visible_message(span_lewd("[pick(honks)]"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s clussy honks[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s clussy honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = target.get_penetrating_genital_name(TRUE)
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
return
|
||||
|
||||
if(prob(50) && isclownjob(target))
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s clussy honks[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s clussy honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
return
|
||||
|
||||
if(prob(50) && isclownjob(target))
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s fun hole honks[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s fun hole honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s clussy honks[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s clussy honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s fun hole honks[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s fun hole honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = target.get_penetrating_genital_name(TRUE)
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = user.get_penetrating_genital_name(TRUE)
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = user.get_penetrating_genital_name(TRUE)
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
return
|
||||
|
||||
if(prob(50) && isclownjob(target))
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
return
|
||||
|
||||
if(prob(50) && isclownjob(user))
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s clussy honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s clussy honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
return
|
||||
|
||||
if(prob(50) && isclownjob(user))
|
||||
target.visible_message("<span class='lewd'>\The <b>[user]</b>'s fun hole honks[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[user]</b>'s fun hole honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s fun hole honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s fun hole honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = user.get_penetrating_genital_name(TRUE)
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = user.get_penetrating_genital_name(TRUE)
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = target.get_penetrating_genital_name(TRUE)
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = target.get_penetrating_genital_name(TRUE)
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -213,7 +213,7 @@
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s balls honk[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s balls honk[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -223,7 +223,7 @@
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s balls honk[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s balls honk[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -234,7 +234,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = user.get_penetrating_genital_name(TRUE)
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = user.get_penetrating_genital_name(TRUE)
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -273,7 +273,7 @@
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -284,7 +284,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = user.get_penetrating_genital_name(TRUE)
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -294,7 +294,7 @@
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s fun hole honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s fun hole honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -304,7 +304,7 @@
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s clussy honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s clussy honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -319,7 +319,7 @@
|
||||
"\The <b>[user]</b>'s grope squeezes a honk out of [u_His] own [pick(GLOB.breast_nouns)]!"
|
||||
)
|
||||
if(prob(50))
|
||||
user.visible_message("<span class='lewd'>[pick(honks)]</span>")
|
||||
user.visible_message(span_lewd("[pick(honks)]"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -345,7 +345,7 @@
|
||||
"\The <b>[user]</b>'s suck squeezes a honk out of [u_His] own [pick(GLOB.breast_nouns)]!"
|
||||
)
|
||||
if(prob(50))
|
||||
user.visible_message("<span class='lewd'>[pick(honks)]</span>")
|
||||
user.visible_message(span_lewd("[pick(honks)]"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -370,7 +370,7 @@
|
||||
"\The <b>[user]</b>'s suck squeezes a honk out of \the <b>[target]</b>'s [pick(GLOB.breast_nouns)]!"
|
||||
)
|
||||
if(prob(50))
|
||||
user.visible_message("<span class='lewd'>[pick(honks)]</span>")
|
||||
user.visible_message(span_lewd("[pick(honks)]"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -401,7 +401,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = user.get_penetrating_genital_name(TRUE)
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -433,7 +433,7 @@
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -451,7 +451,7 @@
|
||||
return
|
||||
|
||||
if(prob(50) && isclownjob(target))
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s belly button honks[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s belly button honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -495,7 +495,7 @@
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -546,7 +546,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = user.get_penetrating_genital_name(TRUE)
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -565,7 +565,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = user.get_penetrating_genital_name(TRUE)
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -585,7 +585,7 @@
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -643,7 +643,7 @@
|
||||
return
|
||||
|
||||
if(prob(50) && isclownjob(target))
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -665,7 +665,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = user.get_penetrating_genital_name(TRUE)
|
||||
user.visible_message("<span class='lewd'>\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
user.visible_message(span_lewd("\The <b>[user]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -687,7 +687,7 @@
|
||||
|
||||
if(prob(50))
|
||||
var/genital_name = target.get_penetrating_genital_name(TRUE)
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s [genital_name] honks[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s [genital_name] honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -736,7 +736,7 @@
|
||||
return
|
||||
|
||||
if(prob(50) && isclownjob(target))
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s fun hole honks[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s fun hole honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -790,7 +790,7 @@
|
||||
return
|
||||
|
||||
if(prob(50) && isclownjob(target))
|
||||
target.visible_message("<span class='lewd'>\The <b>[target]</b>'s fun hole honks[pick(" loudly", "")]!</span>")
|
||||
target.visible_message(span_lewd("\The <b>[target]</b>'s fun hole honks[pick(" loudly", "")]!"))
|
||||
|
||||
playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1)
|
||||
|
||||
@@ -828,6 +828,6 @@
|
||||
|
||||
/datum/interaction/lewd/unholy/piss_mouth/display_interaction(mob/living/carbon/user, mob/living/target)
|
||||
if(!istype(user))
|
||||
to_chat(user, "<span class='warning'>Erm, you may wanna be a carbon entity fo dat</span>")
|
||||
to_chat(user, span_warning("Erm, you may wanna be a carbon entity fo dat"))
|
||||
return
|
||||
user.piss_mouth(target)
|
||||
|
||||
@@ -18,17 +18,17 @@
|
||||
if(REQUIRE_EXPOSED)
|
||||
if(!user.has_belly(REQUIRE_EXPOSED))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>Your belly needs to be exposed.</span>")
|
||||
to_chat(user, span_warning("Your belly needs to be exposed."))
|
||||
return FALSE
|
||||
if(REQUIRE_ANY)
|
||||
if(!user.has_belly(REQUIRE_ANY))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>Your belly seems to be too flat for that.</span>")
|
||||
to_chat(user, span_warning("Your belly seems to be too flat for that."))
|
||||
return FALSE
|
||||
if(REQUIRE_UNEXPOSED)
|
||||
if(!user.has_belly(REQUIRE_UNEXPOSED))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>Your belly needs to be unexposed.</span>")
|
||||
to_chat(user, span_warning("Your belly needs to be unexposed."))
|
||||
return FALSE
|
||||
|
||||
if(require_user_legs)
|
||||
@@ -36,22 +36,22 @@
|
||||
if(REQUIRE_EXPOSED)
|
||||
if(!user.has_legs(REQUIRE_EXPOSED))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>Your legs need to be exposed.</span>")
|
||||
to_chat(user, span_warning("Your legs need to be exposed."))
|
||||
return FALSE
|
||||
if(REQUIRE_UNEXPOSED)
|
||||
if(!user.has_legs(REQUIRE_UNEXPOSED))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>Your legs need to be unexposed.</span>")
|
||||
to_chat(user, span_warning("Your legs need to be unexposed."))
|
||||
return FALSE
|
||||
if(REQUIRE_ANY)
|
||||
if(!user.has_legs(REQUIRE_ANY))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>You don't have enough legs.</span>")
|
||||
to_chat(user, span_warning("You don't have enough legs."))
|
||||
return FALSE
|
||||
|
||||
if(require_user_num_legs && (user.has_legs() < require_user_num_legs))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>Your don't have enough legs.</span>")
|
||||
to_chat(user, span_warning("Your don't have enough legs."))
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
if(cli)
|
||||
if(cli.prefs.unholypref == "No")
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>That's way too much for you.</span>")
|
||||
to_chat(user, span_warning("That's way too much for you."))
|
||||
return FALSE
|
||||
. = ..()
|
||||
|
||||
@@ -70,17 +70,17 @@
|
||||
if(REQUIRE_EXPOSED)
|
||||
if(!target.has_belly(REQUIRE_EXPOSED))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>Their belly needs to be exposed.</span>")
|
||||
to_chat(user, span_warning("Their belly needs to be exposed."))
|
||||
return FALSE
|
||||
if(REQUIRE_ANY)
|
||||
if(!target.has_belly(REQUIRE_ANY))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>Their belly seems to be too flat for that.</span>")
|
||||
to_chat(user, span_warning("Their belly seems to be too flat for that."))
|
||||
return FALSE
|
||||
if(REQUIRE_UNEXPOSED)
|
||||
if(!target.has_belly(REQUIRE_UNEXPOSED))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>Their belly needs to be unexposed.</span>")
|
||||
to_chat(user, span_warning("Their belly needs to be unexposed."))
|
||||
return FALSE
|
||||
|
||||
if(require_target_legs)
|
||||
@@ -88,22 +88,22 @@
|
||||
if(REQUIRE_EXPOSED)
|
||||
if(!target.has_legs(REQUIRE_EXPOSED))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>[target.p_their()] legs need to be exposed.</span>")
|
||||
to_chat(user, span_warning("[target.p_their()] legs need to be exposed."))
|
||||
return FALSE
|
||||
if(REQUIRE_UNEXPOSED)
|
||||
if(!target.has_legs(REQUIRE_UNEXPOSED))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>[target.p_their()] legs need to be unexposed.</span>")
|
||||
to_chat(user, span_warning("[target.p_their()] legs need to be unexposed."))
|
||||
return FALSE
|
||||
if(REQUIRE_ANY)
|
||||
if(!target.has_legs(REQUIRE_ANY))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>[target.p_they()] [target.p_do()]n't have enough legs.</span>")
|
||||
to_chat(user, span_warning("[target.p_they()] [target.p_do()]n't have enough legs."))
|
||||
return FALSE
|
||||
|
||||
if(require_target_num_legs && (target.has_legs() < require_target_num_legs))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>[target.p_they()] [target.p_do()]n't have enough legs.</span>")
|
||||
to_chat(user, span_warning("[target.p_they()] [target.p_do()]n't have enough legs."))
|
||||
return FALSE
|
||||
|
||||
if(unholy)
|
||||
@@ -111,7 +111,7 @@
|
||||
if(cli)
|
||||
if(target.client.prefs.unholypref == "No")
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>For some reason, you don't want to do this to [target].</span>")
|
||||
to_chat(user, span_warning("For some reason, you don't want to do this to [target]."))
|
||||
return FALSE
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/datum/mood_event/cope
|
||||
mood_change = 10
|
||||
description = "<span class='nicegreen'>I feel like I\'m finally coping!</span>"
|
||||
description = span_nicegreen("I feel like I\'m finally coping!")
|
||||
|
||||
/datum/mood_event/moth_in_chief
|
||||
description = "<span class='nicegreen'>The mantle rests well upon your shoulders?</span>\n"
|
||||
description = span_nicegreen("The mantle rests well upon your shoulders?")
|
||||
mood_change = 10
|
||||
timeout = 5 MINUTES
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/datum/mood_event/masked_mook_incomplete
|
||||
description = "<span class='warning'>I feel incomplete without a gas mask...</span>\n"
|
||||
description = span_warning("I feel incomplete without a gas mask...")
|
||||
mood_change = -4
|
||||
|
||||
/datum/mood_event/creampie/cheesed
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
/datum/mood_event/lewd_headpat
|
||||
description = "<span class='nicegreen'>I love headpats so much!</span>\n"
|
||||
description = span_nicegreen("I love headpats so much!")
|
||||
mood_change = 3
|
||||
timeout = 2 MINUTES
|
||||
/datum/mood_event/qareen_bliss
|
||||
description = "<span class='umbra'>So.. horny...</span>\n"
|
||||
description = span_umbra("So.. horny...")
|
||||
mood_change = 5
|
||||
|
||||
/datum/mood_event/qareen_bliss/add_effects()
|
||||
description = "<span class='umbra'>Must.. breed. , [pick("Nngggghh", "Can't.. think.", "It feels so good.", "Need.. fuck.")]...</span>\n"
|
||||
description = span_umbra("Must.. breed. , [pick("Nngggghh", "Can't.. think.", "It feels so good.", "Need.. fuck.")]...")
|
||||
|
||||
/datum/mood_event/masked_mook
|
||||
description = "<span class='nicegreen'>I feel more complete with gas mask on.</span>\n"
|
||||
description = span_nicegreen("I feel more complete with gas mask on.")
|
||||
mood_change = 1
|
||||
|
||||
/datum/mood_event/nudist_positive
|
||||
description = "<span class='nicegreen'>I'm delighted to not be constricted by clothing.</span>\n"
|
||||
description = span_nicegreen("I'm delighted to not be constricted by clothing.")
|
||||
mood_change = 1
|
||||
|
||||
/datum/mood_event/dorsualiphobic_mood_positive
|
||||
description = "<span class='nicegreen'>Nobody will know if I'm wearing a backpack or not.</span>\n"
|
||||
description = span_nicegreen("Nobody will know if I'm wearing a backpack or not.")
|
||||
mood_change = 1
|
||||
|
||||
@@ -11,6 +11,6 @@
|
||||
mood_change = -20
|
||||
|
||||
/datum/mood_event/cum_stuffed
|
||||
description = "<span class='nicegreen'>It feels so good inside me!</span>\n"
|
||||
description = span_nicegreen("It feels so good inside me!")
|
||||
mood_change = 8
|
||||
timeout = 5 MINUTES
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/datum/mood_event/pregnant_negative
|
||||
description = "<span class='boldwarning'>THE BABY IS COMING OUT...</span>\n"
|
||||
description = span_boldwarning("THE BABY IS COMING OUT...")
|
||||
mood_change = -7
|
||||
|
||||
/datum/mood_event/pregnant_positive
|
||||
description = "<span class='nicegreen'>The baby came out...phew</span>\n"
|
||||
description = span_nicegreen("The baby came out...phew")
|
||||
mood_change = 3
|
||||
timeout = 2 MINUTES
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
desc = "Your body is abnormally enduring and can take 10% more damage."
|
||||
value = 4
|
||||
medical_record_text = "Patient has an abnormally high capacity for injury."
|
||||
gain_text = "<span class='notice'>You feel very sturdy.</span>"
|
||||
lose_text = "<span class='notice'>You feel less sturdy.</span>"
|
||||
gain_text = span_notice("You feel very sturdy.")
|
||||
lose_text = span_notice("You feel less sturdy.")
|
||||
|
||||
/datum/quirk/tough/add()
|
||||
quirk_holder.maxHealth *= 1.1
|
||||
@@ -20,8 +20,8 @@
|
||||
value = 2 //Is not actually THAT good. Does not grant breathing and does stamina damage to the point you are unable to attack. Crippling on lavaland, but you'll survive. Is not a replacement for SEVA suits for this reason. Can be adjusted.
|
||||
mob_trait = TRAIT_ASHRESISTANCE
|
||||
medical_record_text = "Patient has an abnormally thick epidermis."
|
||||
gain_text = "<span class='notice'>You feel resistant to burning brimstone.</span>"
|
||||
lose_text = "<span class='notice'>You feel less as if your flesh is more flamamble.</span>"
|
||||
gain_text = span_notice("You feel resistant to burning brimstone.")
|
||||
lose_text = span_notice("You feel less as if your flesh is more flamamble.")
|
||||
|
||||
/* --FALLBACK SYSTEM INCASE THE TRAIT FAILS TO WORK. Do NOT enable this without editing ash_storm.dm to deal stamina damage with ash immunity.
|
||||
/datum/quirk/ashresistance/add()
|
||||
@@ -37,8 +37,8 @@
|
||||
name = "Dominant Aura"
|
||||
desc = "Your mere presence is assertive enough to appear as powerful to other people, so much in fact that the weaker kind can't help but throw themselves at your feet at the snap of a finger."
|
||||
value = 1
|
||||
gain_text = "<span class='notice'>You feel like making someone your pet.</span>"
|
||||
lose_text = "<span class='notice'>You feel less assertive.</span>"
|
||||
gain_text = span_notice("You feel like making someone your pet.")
|
||||
lose_text = span_notice("You feel less assertive.")
|
||||
|
||||
/datum/quirk/dominant_aura/add()
|
||||
. = ..()
|
||||
@@ -113,15 +113,15 @@
|
||||
value = 1
|
||||
medical_record_text = "Patient has attempted to cover the room in webs, claiming to be \"making a nest\"."
|
||||
mob_trait = TRAIT_ARACHNID
|
||||
gain_text = "<span class='notice'>You feel a strange sensation near your anus...</span>"
|
||||
lose_text = "<span class='notice'>You feel like you can't spin webs anymore...</span>"
|
||||
gain_text = span_notice("You feel a strange sensation near your anus...")
|
||||
lose_text = span_notice("You feel like you can't spin webs anymore...")
|
||||
processing_quirk = TRUE
|
||||
|
||||
/datum/quirk/arachnid/add()
|
||||
. = ..()
|
||||
var/mob/living/carbon/human/H = quirk_holder
|
||||
if(is_species(H,/datum/species/arachnid))
|
||||
to_chat(H, "<span class='warning'>As an arachnid, this quirk does nothing for you, as these abilities are innate to your species.</span>")
|
||||
to_chat(H, span_warning("As an arachnid, this quirk does nothing for you, as these abilities are innate to your species."))
|
||||
return
|
||||
var/datum/action/innate/spin_web/SW = new
|
||||
var/datum/action/innate/spin_cocoon/SC = new
|
||||
|
||||
@@ -78,15 +78,15 @@
|
||||
desc = "Due to the shape of your hands, width of your fingers or just not having fingers at all, you're unable to fire guns without accommodation."
|
||||
value = -2
|
||||
mob_trait = TRAIT_CHUNKYFINGERS
|
||||
gain_text = "<span class='notice'>Your fingers feel... thick.</span>"
|
||||
lose_text = "<span class='notice'>Your fingers feel normal again.</span>"
|
||||
gain_text = span_notice("Your fingers feel... thick.")
|
||||
lose_text = span_notice("Your fingers feel normal again.")
|
||||
|
||||
/datum/quirk/illiterate
|
||||
name = "Illiterate"
|
||||
desc = "You can't read nor write, plain and simple."
|
||||
value = -1
|
||||
mob_trait = TRAIT_ILLITERATE
|
||||
gain_text = "<span class='notice'>The knowledge of how to read seems to escape from you.</span>"
|
||||
gain_text = span_notice("The knowledge of how to read seems to escape from you.")
|
||||
lose_text = "<span class='notice'>Written words suddenly make sense again."
|
||||
|
||||
/datum/quirk/flimsy
|
||||
@@ -109,8 +109,8 @@
|
||||
name = "Hypersensitive"
|
||||
desc = "For better or worse, everything seems to affect your mood more than it should."
|
||||
value = -1
|
||||
gain_text = "<span class='danger'>You seem to make a big deal out of everything.</span>"
|
||||
lose_text = "<span class='notice'>You don't seem to make a big deal out of everything anymore.</span>"
|
||||
gain_text = span_danger("You seem to make a big deal out of everything.")
|
||||
lose_text = span_notice("You don't seem to make a big deal out of everything anymore.")
|
||||
mood_quirk = TRUE //yogs
|
||||
medical_record_text = "Patient demonstrates a high level of emotional volatility."
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
desc = "For one reason or another, you're totally obsessed with cum. The heat of it, the smell... its taste... It's quite simply euphoric."
|
||||
value = 0
|
||||
gain_text = "<span class='notice'>You suddenly start craving some seed inside of you!<span>"
|
||||
lose_text = "<span class='danger'>Cum didn't even taste that good, anyways.</span>"
|
||||
lose_text = span_danger("Cum didn't even taste that good, anyways.")
|
||||
medical_record_text = "Patient seems to have an unhealthy psychological obsession with seminal fluids."
|
||||
var/craving_after = 15 MINUTES
|
||||
var/timer
|
||||
@@ -151,7 +151,7 @@
|
||||
"Some jizz wouldn't be so bad right now!",\
|
||||
"You're starting to long for some more cum..."
|
||||
)
|
||||
to_chat(quirk_holder, "<span class='love'>[pick(hungry_phrases)]</span>")
|
||||
to_chat(quirk_holder, span_love("[pick(hungry_phrases)]"))
|
||||
|
||||
if(quirk_holder.stat == CONSCIOUS)
|
||||
quirk_holder.emote("sigh")
|
||||
@@ -175,8 +175,8 @@
|
||||
name = "Hungry And Thirsty"
|
||||
desc = "You find yourself unusually hungry and thirsty. Gotta eat and drink twice as much as normal."
|
||||
value = -1
|
||||
gain_text = "<span class='danger'>You're starting to feel hungrier and thirstier a lot faster.</span>"
|
||||
lose_text = "<span class='notice'>Your craving for food and water begins dying down.</span>"
|
||||
gain_text = span_danger("You're starting to feel hungrier and thirstier a lot faster.")
|
||||
lose_text = span_notice("Your craving for food and water begins dying down.")
|
||||
medical_record_text = "Patient reports eating twice as many meals per day than usual for their species."
|
||||
|
||||
/datum/quirk/hungry/add()
|
||||
|
||||
@@ -5,15 +5,15 @@
|
||||
desc = "You are aroused by suffocation."
|
||||
value = 0
|
||||
mob_trait = TRAIT_CHOKE_SLUT
|
||||
gain_text = "<span class='notice'>You feel like you want to feel fingers around your neck, choking you until you pass out or make a mess... Maybe both.</span>"
|
||||
lose_text = "<span class='notice'>Seems you don't have a kink for suffocation anymore.</span>"
|
||||
gain_text = span_notice("You feel like you want to feel fingers around your neck, choking you until you pass out or make a mess... Maybe both.")
|
||||
lose_text = span_notice("Seems you don't have a kink for suffocation anymore.")
|
||||
|
||||
/datum/quirk/pharmacokinesis //Supposed to prevent unwanted organ additions. But i don't think it's really working rn
|
||||
name = "Acute Hepatic Pharmacokinesis" //copypasting dumbo
|
||||
desc = "You have a genetic disorder that causes Incubus Draft and Succubus Milk to be absorbed by your liver instead."
|
||||
value = 0
|
||||
mob_trait = TRAIT_PHARMA
|
||||
lose_text = "<span class='notice'>Your liver feels... different, somehow.</span>"
|
||||
lose_text = span_notice("Your liver feels... different, somehow.")
|
||||
var/active = FALSE
|
||||
var/power = 0
|
||||
var/cachedmoveCalc = 1
|
||||
@@ -23,16 +23,16 @@
|
||||
desc = "You've never skipped ass day. You are completely immune to all forms of ass slapping and anyone who tries to slap your rock hard ass usually gets a broken hand."
|
||||
value = 0
|
||||
mob_trait = TRAIT_STEEL_ASS
|
||||
gain_text = "<span class='notice'>Your ass rivals those of golems.</span>"
|
||||
lose_text = "<span class='notice'>Your butt feels more squishy and slappable.</span>"
|
||||
gain_text = span_notice("Your ass rivals those of golems.")
|
||||
lose_text = span_notice("Your butt feels more squishy and slappable.")
|
||||
|
||||
/datum/quirk/cursed_blood
|
||||
name = "Cursed Blood"
|
||||
desc = "Your lineage is cursed with the paleblood curse. Best to stay away from holy water... Hell water, on the other hand..."
|
||||
value = 0
|
||||
mob_trait = TRAIT_CURSED_BLOOD
|
||||
gain_text = "<span class='notice'>A curse from a land where men return as beasts runs deep in your blood.</span>"
|
||||
lose_text = "<span class='notice'>You feel the weight of the curse in your blood finally gone.</span>"
|
||||
gain_text = span_notice("A curse from a land where men return as beasts runs deep in your blood.")
|
||||
lose_text = span_notice("You feel the weight of the curse in your blood finally gone.")
|
||||
medical_record_text = "Patient suffers from an unknown type of aversion to holy reagents. Keep them away from a chaplain."
|
||||
|
||||
/datum/quirk/headpat_hater
|
||||
@@ -40,8 +40,8 @@
|
||||
desc = "You don't seem to show much care for being touched. Whether it's because you're reserved or due to self control, others touching your head won't make you wag your tail should you possess one, and the action may even attract your ire."
|
||||
mob_trait = TRAIT_DISTANT
|
||||
value = 0
|
||||
gain_text = "<span class='notice'>Others' touches begin to make your blood boil...</span>"
|
||||
lose_text = "<span class='notice'>Having your head pet doesn't sound so bad right about now...</span>"
|
||||
gain_text = span_notice("Others' touches begin to make your blood boil...")
|
||||
lose_text = span_notice("Having your head pet doesn't sound so bad right about now...")
|
||||
medical_record_text = "Patient cares little with or dislikes being touched."
|
||||
|
||||
/datum/quirk/headpat_slut
|
||||
@@ -49,8 +49,8 @@
|
||||
desc = "You love the feeling of others touching your head! Maybe a little too much, actually... Others patting your head will provide a bigger mood boost and cause aroused reactions."
|
||||
mob_trait = TRAIT_HEADPAT_SLUT
|
||||
value = 0
|
||||
gain_text = "<span class='notice'>You crave headpats immensely!</span>"
|
||||
lose_text = "<span class='notice'>Your headpats addiction wanes.</span>"
|
||||
gain_text = span_notice("You crave headpats immensely!")
|
||||
lose_text = span_notice("Your headpats addiction wanes.")
|
||||
medical_record_text = "Patient seems overly affectionate."
|
||||
|
||||
/datum/quirk/headpat_slut/add()
|
||||
@@ -66,16 +66,16 @@
|
||||
desc = "Your system burns with the desire to be bred. Satisfying your lust will make you happy, but ignoring it may cause you to become sad and needy."
|
||||
value = 0
|
||||
mob_trait = TRAIT_IN_HEAT
|
||||
gain_text = "<span class='notice'>You body burns with the desire to be bred.</span>"
|
||||
lose_text = "<span class='notice'>You feel more in control of your body and thoughts.</span>"
|
||||
gain_text = span_notice("You body burns with the desire to be bred.")
|
||||
lose_text = span_notice("You feel more in control of your body and thoughts.")
|
||||
|
||||
/datum/quirk/Hypnotic_gaze
|
||||
name = "Hypnotic Gaze"
|
||||
desc = "Be it through mysterious patterns, flickering colors, or some genetic oddity, prolonged eye contact with you will place the viewer into a highly-suggestible hypnotic trance."
|
||||
value = 0
|
||||
mob_trait = TRAIT_HYPNOTIC_GAZE
|
||||
gain_text = "<span class='notice'>Your eyes glimmer hypnotically...</span>"
|
||||
lose_text = "<span class='notice'>Your eyes return to normal.</span>"
|
||||
gain_text = span_notice("Your eyes glimmer hypnotically...")
|
||||
lose_text = span_notice("Your eyes return to normal.")
|
||||
medical_record_text = "Prolonged exposure to Patient's eyes exhibits soporific effects."
|
||||
|
||||
/datum/quirk/Hypnotic_gaze/on_spawn()
|
||||
@@ -89,14 +89,14 @@
|
||||
desc = "You have a animalistic sense of detecting if someone is in heat."
|
||||
value = 0
|
||||
mob_trait = TRAIT_HEAT_DETECT
|
||||
gain_text = "<span class='notice'>You feel your senses adjust, allowing a animalistic sense of others' fertility.</span>"
|
||||
lose_text = "<span class='notice'>You feel your sense of others' fertility fade.</span>"
|
||||
gain_text = span_notice("You feel your senses adjust, allowing a animalistic sense of others' fertility.")
|
||||
lose_text = span_notice("You feel your sense of others' fertility fade.")
|
||||
|
||||
/datum/quirk/overweight
|
||||
name = "Overweight"
|
||||
desc = "You're particularly fond of food, and join the shift being overweight."
|
||||
value = 0
|
||||
gain_text = "<span class='notice'>You feel a bit chubby!</span>"
|
||||
gain_text = span_notice("You feel a bit chubby!")
|
||||
//no lose_text cause why would there be?
|
||||
|
||||
/datum/quirk/overweight/on_spawn()
|
||||
@@ -109,8 +109,8 @@
|
||||
name = "Vegetarian"
|
||||
desc = "You find the idea of eating meat morally and physically repulsive."
|
||||
value = 0
|
||||
gain_text = "<span class='notice'>You feel repulsion at the idea of eating meat.</span>"
|
||||
lose_text = "<span class='notice'>You feel like eating meat isn't that bad.</span>"
|
||||
gain_text = span_notice("You feel repulsion at the idea of eating meat.")
|
||||
lose_text = span_notice("You feel like eating meat isn't that bad.")
|
||||
medical_record_text = "Patient reports a vegetarian diet."
|
||||
|
||||
/datum/quirk/vegetarian/add()
|
||||
@@ -132,8 +132,8 @@
|
||||
name = "Extra-Productive Genitals"
|
||||
desc = "Your genitals produce and hold more than normal."
|
||||
value = 0
|
||||
gain_text = "<span class='notice'>You feel pressure in your groin.</span>"
|
||||
lose_text = "<span class='notice'>You feel a weight lifted from your groin.</span>"
|
||||
gain_text = span_notice("You feel pressure in your groin.")
|
||||
lose_text = span_notice("You feel a weight lifted from your groin.")
|
||||
medical_record_text = "Patient exhibits increased production of sexual fluids."
|
||||
|
||||
/datum/quirk/cum_plus/add()
|
||||
@@ -165,8 +165,8 @@
|
||||
name = "Well-Trained"
|
||||
desc = "You absolutely love being dominated. The thought of someone stronger than you is enough to make you act up."
|
||||
value = 0
|
||||
gain_text = "<span class='notice'>You feel like being someone's pet...</span>"
|
||||
lose_text = "<span class='notice'>You no longer feel like being a pet...</span>"
|
||||
gain_text = span_notice("You feel like being someone's pet...")
|
||||
lose_text = span_notice("You no longer feel like being a pet...")
|
||||
processing_quirk = TRUE
|
||||
var/mood_category = "dom_trained"
|
||||
var/notice_delay = 0
|
||||
@@ -253,8 +253,8 @@
|
||||
desc = "You are a tri-headed creature. To use, format your name like (Rucks-Sucks-Ducks)."
|
||||
value = 0
|
||||
mob_trait = TRAIT_HYDRA_HEADS
|
||||
gain_text = "<span class='notice'>You hear two other voices inside of your head(s).</span>"
|
||||
lose_text = "<span class='danger'>All of your minds become singular.</span>"
|
||||
gain_text = span_notice("You hear two other voices inside of your head(s).")
|
||||
lose_text = span_danger("All of your minds become singular.")
|
||||
medical_record_text = "Patient has multiple heads and personalities affixed to their body."
|
||||
|
||||
/datum/quirk/hydra/on_spawn()
|
||||
@@ -273,8 +273,8 @@
|
||||
desc = "You've built so much experience savoring other people's genitals through your life that you can easily tell what liquids they're full of, besides reagents in their blood that is."
|
||||
value = 0
|
||||
mob_trait = TRAIT_GFLUID_DETECT
|
||||
gain_text = "<span class='notice'>You begin sensing peculiar smells from people's bits...</span>"
|
||||
lose_text = "<span class='notice'>People's genitals start smelling all the same to you...</span>"
|
||||
gain_text = span_notice("You begin sensing peculiar smells from people's bits...")
|
||||
lose_text = span_notice("People's genitals start smelling all the same to you...")
|
||||
medical_record_text = "Patient attempted to get their doctor to drag his balls accross their face."
|
||||
|
||||
/datum/quirk/fluid_infuser
|
||||
@@ -371,8 +371,8 @@
|
||||
value = 0
|
||||
medical_record_text = "this person was partially infected by a bloodsucker"
|
||||
mob_trait = BLOODFLEDGE
|
||||
gain_text = "<span class='notice'>You feel an otherworldly thirst.</span>"
|
||||
lose_text = "<span class='notice'>you feel an otherworldy burden remove itself</span>"
|
||||
gain_text = span_notice("You feel an otherworldly thirst.")
|
||||
lose_text = span_notice("you feel an otherworldy burden remove itself")
|
||||
processing_quirk = TRUE
|
||||
|
||||
/datum/quirk/vampire/add()
|
||||
@@ -418,7 +418,7 @@
|
||||
else
|
||||
H.adjustStaminaLoss(-1,FALSE, FALSE)//this also helps with if someone is stuck in the chapel for way too long, and i tested with a stun sword that stunning for sec is still possible
|
||||
if(prob(2)) //2 percent chance (if it was true randome D:<)
|
||||
to_chat(H, "<span class='warning'>I need blood NOW!!!</span>")
|
||||
to_chat(H, span_warning("I need blood NOW!!!"))
|
||||
|
||||
/datum/quirk/vampire/remove()
|
||||
. = ..()
|
||||
@@ -546,8 +546,8 @@
|
||||
// Spawning with a gear harness is preferable, but failed during testing.
|
||||
name = "Nudist"
|
||||
desc = "Wearing most types of clothing unnerves you. Bring a gear harness!"
|
||||
gain_text = "<span class='notice'>You feel spiritually connected to your natural form.</span>"
|
||||
lose_text = "<span class='notice'>It feels like clothing could fit you comfortably.</span>"
|
||||
gain_text = span_notice("You feel spiritually connected to your natural form.")
|
||||
lose_text = span_notice("It feels like clothing could fit you comfortably.")
|
||||
medical_record_text = "Patient expresses a psychological need to remain unclothed."
|
||||
value = 0
|
||||
mood_quirk = TRUE
|
||||
@@ -573,8 +573,8 @@
|
||||
/datum/quirk/masked_mook
|
||||
name = "Bane Syndrome"
|
||||
desc = "For some reason you don't feel... right without wearing some kind of gas mask."
|
||||
gain_text = "<span class='danger'>You start feeling unwell without any gas mask on.</span>"
|
||||
lose_text = "<span class='notice'>You no longer have a need to wear some gas mask.</span>"
|
||||
gain_text = span_danger("You start feeling unwell without any gas mask on.")
|
||||
lose_text = span_notice("You no longer have a need to wear some gas mask.")
|
||||
value = 0
|
||||
mood_quirk = TRUE
|
||||
medical_record_text = "Patient feels more secure when wearing a gas mask."
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
var/mob/living/carbon/human/H = owner
|
||||
|
||||
if(!H.pulling || !isliving(H.pulling) || H.grab_state < GRAB_AGGRESSIVE)
|
||||
to_chat(H, "<span class='warning'>You need to aggressively grab someone to hypnotize them!</span>")
|
||||
to_chat(H, span_warning("You need to aggressively grab someone to hypnotize them!"))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/T = H.pulling
|
||||
@@ -26,8 +26,8 @@
|
||||
to_chat(H, "You can't hypnotize [T] whilst they're asleep!")
|
||||
return
|
||||
|
||||
to_chat(H, "<span class='notice'>You stare deeply into [T]'s eyes...</span>")
|
||||
to_chat(T, "<span class='warning'>[H] stares intensely into your eyes...</span>")
|
||||
to_chat(H, span_notice("You stare deeply into [T]'s eyes..."))
|
||||
to_chat(T, span_warning("[H] stares intensely into your eyes..."))
|
||||
if(!do_mob(H, T, 12 SECONDS))
|
||||
return
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
var/response = alert(T, "Do you wish to fall into a hypnotic sleep?(This will allow [H] to issue hypnotic suggestions)", "Hypnosis", "Yes", "No")
|
||||
|
||||
if(response == "Yes")
|
||||
T.visible_message("<span class='warning>[T] falls into a deep slumber!</span>", "<span class = 'danger'>Your eyelids gently shut as you fall into a deep slumber. All you can hear is [H]'s voice as you commit to following all of their suggestions.</span>")
|
||||
T.visible_message(span_warning("[T] falls into a deep slumber!"), "<span class = 'danger'>Your eyelids gently shut as you fall into a deep slumber. All you can hear is [H]'s voice as you commit to following all of their suggestions.</span>")
|
||||
|
||||
T.SetSleeping(1200)
|
||||
T.drowsyness = max(T.drowsyness, 40)
|
||||
@@ -61,9 +61,9 @@
|
||||
return
|
||||
|
||||
to_chat(H, "You whisper your suggestion in a smooth calming voice to [T]")
|
||||
to_chat(T, "<span class='hypnophrase'>...[text]...</span>")
|
||||
to_chat(T, span_hypnophrase("...[text]..."))
|
||||
|
||||
T.visible_message("<span class='warning'>[T] wakes up from their deep slumber!</span>", "<span class ='danger'>Your eyelids gently open as you see [H]'s face staring back at you.</span>")
|
||||
T.visible_message(span_warning("[T] wakes up from their deep slumber!"), "<span class ='danger'>Your eyelids gently open as you see [H]'s face staring back at you.</span>")
|
||||
T.SetSleeping(0)
|
||||
T = null
|
||||
return
|
||||
@@ -72,7 +72,7 @@
|
||||
T.SetSleeping(0)
|
||||
return
|
||||
else
|
||||
T.visible_message("<span class='warning'>[T]'s attention breaks, despite the attempt to hypnotize them! They clearly don't want this!</span>", "<span class ='warning'>Your concentration breaks as you realise you have no interest in following [H]'s words!</span>")
|
||||
T.visible_message(span_warning("[T]'s attention breaks, despite the attempt to hypnotize them! They clearly don't want this!"), "<span class ='warning'>Your concentration breaks as you realise you have no interest in following [H]'s words!</span>")
|
||||
return
|
||||
|
||||
//
|
||||
@@ -94,16 +94,16 @@
|
||||
/datum/action/innate/hydrareset/Activate()
|
||||
var/mob/living/carbon/human/hydra = owner
|
||||
hydra.real_name = hydra.name_archive
|
||||
hydra.visible_message("<span class='notice'>[hydra.name] pushes all three heads forwards; they seem to be talking as a collective.</span>", \
|
||||
"<span class='notice'>You are now talking as [hydra.name_archive]!</span>", ignored_mobs=owner)
|
||||
hydra.visible_message(span_notice("[hydra.name] pushes all three heads forwards; they seem to be talking as a collective."), \
|
||||
span_notice("You are now talking as [hydra.name_archive]!"), ignored_mobs=owner)
|
||||
|
||||
/datum/action/innate/hydra/Activate() //I hate this but its needed
|
||||
var/mob/living/carbon/human/hydra = owner
|
||||
var/list/names = splittext(hydra.name_archive,"-")
|
||||
var/selhead = input("Who would you like to speak as?","Heads:") in names
|
||||
hydra.real_name = selhead
|
||||
hydra.visible_message("<span class='notice'>[hydra.name] pulls the rest of their heads back; and puts [selhead]'s forward.</span>", \
|
||||
"<span class='notice'>You are now talking as [selhead]!</span>", ignored_mobs=owner)
|
||||
hydra.visible_message(span_notice("[hydra.name] pulls the rest of their heads back; and puts [selhead]'s forward."), \
|
||||
span_notice("You are now talking as [selhead]!"), ignored_mobs=owner)
|
||||
|
||||
//
|
||||
// Quirk: Bloodsucker Fledgling / Vampire
|
||||
@@ -121,14 +121,14 @@
|
||||
if(iscarbon(owner))
|
||||
var/mob/living/carbon/H = owner
|
||||
if(H.nutrition >= 500)
|
||||
to_chat(H, "<span class='notice'>You are too full to drain any more.</span>")
|
||||
to_chat(H, span_notice("You are too full to drain any more."))
|
||||
return
|
||||
if(drain_cooldown >= world.time)
|
||||
to_chat(H, "<span class='notice'>You just drained blood, wait a few seconds.</span>")
|
||||
to_chat(H, span_notice("You just drained blood, wait a few seconds."))
|
||||
return
|
||||
if(!H.pulling || !iscarbon(H.pulling))
|
||||
if(H.getStaminaLoss() >= 80 && H.nutrition > 20)//prevents being stunlocked in the chapel
|
||||
to_chat(H,("<span class='notice'>you use some of your power to energize</span>"))
|
||||
to_chat(H,(span_notice("you use some of your power to energize")))
|
||||
H.adjustStaminaLoss(-20)
|
||||
H.adjust_nutrition(-20)
|
||||
H.resting = TRUE
|
||||
@@ -140,27 +140,27 @@
|
||||
victim = locate(/mob/living/carbon) in H.pulling.contents
|
||||
drain_cooldown = world.time + 25
|
||||
if(victim.anti_magic_check(FALSE, TRUE, FALSE, 0))
|
||||
to_chat(victim, "<span class='warning'>[H] tries to bite you, but stops before touching you!</span>")
|
||||
to_chat(H, "<span class='warning'>[victim] is blessed! You stop just in time to avoid catching fire.</span>")
|
||||
to_chat(victim, span_warning("[H] tries to bite you, but stops before touching you!"))
|
||||
to_chat(H, span_warning("[victim] is blessed! You stop just in time to avoid catching fire."))
|
||||
return
|
||||
//Here we check now for both the garlic cloves on the neck and for blood in the victims bloodstream.
|
||||
if(!blood_sucking_checks(victim, TRUE, TRUE))
|
||||
return
|
||||
H.visible_message("<span class='danger'>[H] bites down on [victim]'s neck!</span>")
|
||||
H.visible_message(span_danger("[H] bites down on [victim]'s neck!"))
|
||||
victim.add_splatter_floor(get_turf(victim), TRUE)
|
||||
to_chat(victim, "<span class='userdanger'>[H] is draining your blood!</span>")
|
||||
to_chat(victim, span_userdanger("[H] is draining your blood!"))
|
||||
if(!do_after(H, 30, target = victim))
|
||||
return
|
||||
var/blood_volume_difference = BLOOD_VOLUME_MAXIMUM - H.blood_volume //How much capacity we have left to absorb blood
|
||||
var/drained_blood = min(victim.blood_volume, BLOOD_DRAIN_NUM, blood_volume_difference)
|
||||
H.reagents.add_reagent(/datum/reagent/blood/, drained_blood)
|
||||
to_chat(victim, "<span class='danger'>[H] has taken some of your blood!</span>")
|
||||
to_chat(H, "<span class='notice'>You drain some blood!</span>")
|
||||
to_chat(victim, span_danger("[H] has taken some of your blood!"))
|
||||
to_chat(H, span_notice("You drain some blood!"))
|
||||
playsound(H, 'sound/items/drink.ogg', 30, 1, -2)
|
||||
victim.blood_volume = clamp(victim.blood_volume - drained_blood, 0, BLOOD_VOLUME_MAXIMUM)
|
||||
log_combat(H,victim,"vampire bit")//logs the biting action for admins
|
||||
if(!victim.blood_volume)
|
||||
to_chat(H, "<span class='warning'>You finish off [victim]'s blood supply!</span>")
|
||||
to_chat(H, span_warning("You finish off [victim]'s blood supply!"))
|
||||
|
||||
|
||||
/datum/action/vrevive
|
||||
@@ -179,7 +179,7 @@
|
||||
H.Daze(20)
|
||||
H.drunkenness = 70
|
||||
else
|
||||
to_chat(H,"<span class='warning'>You need to be dead and in a coffin to revive!</span>")
|
||||
to_chat(H,span_warning("You need to be dead and in a coffin to revive!"))
|
||||
|
||||
//
|
||||
// Quirk: Werewolf
|
||||
@@ -302,9 +302,9 @@
|
||||
T.transformed = 0
|
||||
T.cooldown = 30
|
||||
T.paused = 0
|
||||
H.visible_message("<span class='warning'>[H]'s skin rapidly softens, returning them to normal!</span>", "<span class='userdanger'>Your skin softens, freeing your movement once more!</span>")
|
||||
H.visible_message(span_warning("[H]'s skin rapidly softens, returning them to normal!"), span_userdanger("Your skin softens, freeing your movement once more!"))
|
||||
else
|
||||
to_chat(H, "<span class='warning'>You have transformed too recently; you cannot yet transform again!</span>")
|
||||
to_chat(H, span_warning("You have transformed too recently; you cannot yet transform again!"))
|
||||
return 0
|
||||
|
||||
//
|
||||
@@ -321,7 +321,7 @@
|
||||
.=..()
|
||||
var/mob/living/carbon/human/H = owner
|
||||
var/datum/quirk/gargoyle/T = locate() in H.roundstart_quirks
|
||||
to_chat(H, "<span class='warning'>You have [T.energy]/100 energy remaining!</span>")
|
||||
to_chat(H, span_warning("You have [T.energy]/100 energy remaining!"))
|
||||
|
||||
/datum/action/gargoyle/pause
|
||||
name = "Preserve"
|
||||
@@ -337,7 +337,7 @@
|
||||
if(!T.paused)
|
||||
T.paused = 1
|
||||
T.position = H.loc
|
||||
to_chat(H, "<span class='warning'>You are now conserving your energy; this effect will end the moment you move from your current position!</span>")
|
||||
to_chat(H, span_warning("You are now conserving your energy; this effect will end the moment you move from your current position!"))
|
||||
return
|
||||
else
|
||||
to_chat(H, "<span class='warning'>You are already conserving your energy!</span>")
|
||||
to_chat(H, span_warning("You are already conserving your energy!"))
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
if(!input || !user.canUseTopic(src, !issilicon(usr)))
|
||||
return
|
||||
if(!(user.can_speak())) //No more cheating, mime/random mute guy!
|
||||
to_chat(user, "<span class='warning'>You find yourself unable to speak.</span>")
|
||||
to_chat(user, span_warning("You find yourself unable to speak."))
|
||||
return
|
||||
|
||||
input = user.treat_message(input) //Adds slurs and so on. Someone should make this use languages too.
|
||||
@@ -232,8 +232,8 @@
|
||||
new /obj/effect/temp_visual/dir_setting/ninja(get_turf(collar.loc), collar.loc.dir)
|
||||
|
||||
playsound(get_turf(src.loc), 'sound/effects/bamf.ogg', 50, 1)
|
||||
visible_message("<span class='notice'>[collar.loc] vanishes into the droppod.</span>", \
|
||||
"<span class='notice'>You are taken by the droppod.</span>")
|
||||
visible_message(span_notice("[collar.loc] vanishes into the droppod."), \
|
||||
span_notice("You are taken by the droppod."))
|
||||
|
||||
var/area/pod_storage_area = locate(/area/centcom/supplypod/podStorage) in GLOB.sortedAreas
|
||||
var/mob/living/M = collar.loc
|
||||
|
||||
@@ -25,21 +25,21 @@
|
||||
/obj/machinery/research_table/examine(mob/user)
|
||||
. = ..()
|
||||
if(configured)
|
||||
. += "<span class='notice'>The same person can be used up to [max_repeat_usage * tier] time\s.</span>"
|
||||
. += span_notice("The same person can be used up to [max_repeat_usage * tier] time\s.")
|
||||
switch(point_type)
|
||||
if(POINT_TYPE_SCIENCE)
|
||||
. += "<span class='notice'>The table is set to generate science points.</span>"
|
||||
. += span_notice("The table is set to generate science points.")
|
||||
else
|
||||
. += "<span class='notice'>The table is set to generate money for cargo.</span>"
|
||||
. += span_notice("The table is set to generate money for cargo.")
|
||||
if(!configured && !panel_open)
|
||||
. += "<span class='notice'>It's not configured yet, you could use a <b>multitool</b> to configure it.</span>"
|
||||
. += span_notice("It's not configured yet, you could use a <b>multitool</b> to configure it.")
|
||||
if(panel_open)
|
||||
. += "<span class='notice'>The panel is <b>screwed</b> open and you could change generation type with a <b>multitool</b>.</span>"
|
||||
. += span_notice("The panel is <b>screwed</b> open and you could change generation type with a <b>multitool</b>.")
|
||||
|
||||
/obj/machinery/research_table/multitool_act(mob/living/user, obj/item/I)
|
||||
if(user.a_intent == INTENT_HELP)
|
||||
if(panel_open && !slaver_mode) // Do not let slaver version switch to science mode, they should only generate credits.
|
||||
user.visible_message("<span class='notice'>[user] begins changing the generation type on \the [src].</span>", "<span class='notice'>You begin changing the generation type on \the [src].</span>")
|
||||
user.visible_message(span_notice("[user] begins changing the generation type on \the [src]."), span_notice("You begin changing the generation type on \the [src]."))
|
||||
if(do_after(user, 5 SECONDS, TRUE, src))
|
||||
point_type = point_type == POINT_TYPE_SCIENCE ? POINT_TYPE_CARGO : POINT_TYPE_SCIENCE
|
||||
var/generation_message = null
|
||||
@@ -48,17 +48,17 @@
|
||||
generation_message = "generate research points for science"
|
||||
else
|
||||
generation_message = "generate money for cargo"
|
||||
user.visible_message("<span class='notice'>[user] finished changing the generation type on \the [src].</span>", "<span class='notice'>You change the generation type on \the [src] to [generation_message].</span>")
|
||||
user.visible_message(span_notice("[user] finished changing the generation type on \the [src]."), span_notice("You change the generation type on \the [src] to [generation_message]."))
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to stand still and uninterrupted for 5 seconds!</span>")
|
||||
to_chat(user, span_warning("You need to stand still and uninterrupted for 5 seconds!"))
|
||||
return STOP_ATTACK_PROC_CHAIN
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] begins reconfiguring \the [src].</span>", "<span class='notice'>You begin reconfiguring \the [src].</span>")
|
||||
user.visible_message(span_notice("[user] begins reconfiguring \the [src]."), span_notice("You begin reconfiguring \the [src]."))
|
||||
if(do_after(user, 5 SECONDS, TRUE, src))
|
||||
configured = !configured
|
||||
user.visible_message("<span class='notice'>[user] finished reconfiguring \the [src].</span>", "<span class='notice'>The research table is now [configured ? "configured" : "not configured"].</span>")
|
||||
user.visible_message(span_notice("[user] finished reconfiguring \the [src]."), span_notice("The research table is now [configured ? "configured" : "not configured"]."))
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to stand still and uninterrupted for 5 seconds!</span>")
|
||||
to_chat(user, span_warning("You need to stand still and uninterrupted for 5 seconds!"))
|
||||
return STOP_ATTACK_PROC_CHAIN
|
||||
. = ..()
|
||||
|
||||
@@ -92,9 +92,9 @@
|
||||
return
|
||||
if(!handle_unbuckling(buckled_mob, user))
|
||||
if(buckled_mob == user)
|
||||
to_chat(user, "<span class='warning'>You fail to unbuckle yourself.</span>")
|
||||
to_chat(user, span_warning("You fail to unbuckle yourself."))
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You fail to unbuckle [buckled_mob].</span>")
|
||||
to_chat(user, span_warning("You fail to unbuckle [buckled_mob]."))
|
||||
return
|
||||
UnregisterSignal(buckled_mob, COMSIG_MOB_CAME)
|
||||
say("User left, resetting scanners.")
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
return
|
||||
|
||||
if(style == "long" && !(istype(target_organ, /obj/item/organ/genital/vagina))) //long vibrators dont fit on anything but vaginas, but small ones fit everywhere
|
||||
to_chat(user, "<span class='warning'>[src] is too big to fit there, use a smaller version.</span>")
|
||||
to_chat(user, span_warning("[src] is too big to fit there, use a smaller version."))
|
||||
return
|
||||
|
||||
if(locate(src.type) in target_organ.contents)
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
structure_data["cost"][blueprint] = 20
|
||||
|
||||
playsound(src, 'sound/effects/pop.ogg', 50, FALSE)
|
||||
to_chat(user, "<span class='notice'>You change [name]s blueprint to '[choice]'.</span>")
|
||||
to_chat(user, span_notice("You change [name]s blueprint to '[choice]'."))
|
||||
|
||||
// Also pretty much rcd_create but named differently. I'm shameless, fuck you.
|
||||
/obj/item/construction/tables/proc/create_table(atom/A, mob/user)
|
||||
@@ -91,5 +91,5 @@
|
||||
create_table(A, user)
|
||||
|
||||
/obj/item/construction/tables/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] sets the RTC to 'Glass Table' and points it down [user.p_their()] throat! It looks like [user.p_theyre()] trying to commit suicide.</span>")
|
||||
user.visible_message(span_suicide("[user] sets the RTC to 'Glass Table' and points it down [user.p_their()] throat! It looks like [user.p_theyre()] trying to commit suicide."))
|
||||
return (BRUTELOSS)
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
/obj/item/rtl/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>Alt-click to set what tile to lay.</span>"
|
||||
. += span_notice("Alt-click to set what tile to lay.")
|
||||
if(loaded)
|
||||
. += span_info("It contains [loaded.amount]/[max_amount] metal.")
|
||||
|
||||
|
||||
@@ -85,22 +85,22 @@
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.nail_style) //to stop stacking bugs
|
||||
to_chat(user, "<span class='warning'>Remove the old nail polish first!</span>")
|
||||
to_chat(user, span_warning("Remove the old nail polish first!"))
|
||||
|
||||
if(H == user)
|
||||
user.visible_message("<span class='notice'>[user] does [user.p_their()] nails with \the [src].</span>", \
|
||||
"<span class='notice'>You take a moment to apply \the [src]. Perfect!</span>")
|
||||
user.visible_message(span_notice("[user] does [user.p_their()] nails with \the [src]."), \
|
||||
span_notice("You take a moment to apply \the [src]. Perfect!"))
|
||||
H.nail_style = "nails"
|
||||
H.nail_color = paint
|
||||
H.update_body()
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] begins to do [H]'s nails with \the [src].</span>", \
|
||||
"<span class='notice'>You begin to apply \the [src] on [H]'s nails...</span>")
|
||||
user.visible_message(span_warning("[user] begins to do [H]'s nails with \the [src]."), \
|
||||
span_notice("You begin to apply \the [src] on [H]'s nails..."))
|
||||
if(do_after(user, 20, target = H))
|
||||
user.visible_message("[user] does [H]'s nails with \the [src].", \
|
||||
"<span class='notice'>You apply \the [src] on [H]'s nails.</span>")
|
||||
span_notice("You apply \the [src] on [H]'s nails."))
|
||||
H.nail_style = "nails"
|
||||
H.nail_color = paint
|
||||
H.update_body()
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Where are the nail on that?</span>")
|
||||
to_chat(user, span_warning("Where are the nail on that?"))
|
||||
|
||||
@@ -65,8 +65,8 @@
|
||||
|
||||
|
||||
/obj/item/electropack/shockcollar/slave/Destroy()
|
||||
visible_message("<span class='notice'>The [src] detaches from [src.loc]'s neck.</span>", \
|
||||
"<span class='notice'>The [src] detaches from your neck.</span>")
|
||||
visible_message(span_notice("The [src] detaches from [src.loc]'s neck."), \
|
||||
span_notice("The [src] detaches from your neck."))
|
||||
playsound(get_turf(src.loc), 'sound/machines/terminal_eject_disc.ogg', 50, 1)
|
||||
|
||||
GLOB.tracked_slaves -= src
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
|
||||
/obj/item/storage/box/aphrodisiac_pump/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>Click the implant case while with the implant inside to change the desired dosage amounts.</span>"
|
||||
. += span_notice("Click the implant case while with the implant inside to change the desired dosage amounts.")
|
||||
|
||||
/obj/item/storage/box/aphrodisiac_pump/ComponentInitialize()
|
||||
. = ..()
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
var/implant_toggle_text_2 = (!ability_active ? "dis" : "") // Engage or Disengage
|
||||
|
||||
// Display a chat message
|
||||
action_owner.visible_message("<span class='notice'>The equipment worn on [action_owner]'s back-region flickers momentarily, before becoming [implant_toggle_text].</span>", "<span class='notice'>You [implant_toggle_text_2]engage the Storage Concealment Implant, causing your backpack to be [implant_toggle_text].</span>")
|
||||
action_owner.visible_message(span_notice("The equipment worn on [action_owner]'s back-region flickers momentarily, before becoming [implant_toggle_text]."), span_notice("You [implant_toggle_text_2]engage the Storage Concealment Implant, causing your backpack to be [implant_toggle_text]."))
|
||||
|
||||
/*
|
||||
* Implant items
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
if(target.mind.has_antag_datum(/datum/antagonist/rev/head) || target.mind.unconvertable || target.mind.assigned_role == "Security Officer" || target.mind.assigned_role == "Detective" || target.mind.assigned_role == "Warden" || target.mind.assigned_role == "Head of Security" || HAS_TRAIT(target, TRAIT_MINDSHIELD))
|
||||
if(!silent)
|
||||
if(target.mind.assigned_role == "Security Officer" || target.mind.assigned_role == "Detective" || target.mind.assigned_role == "Warden" || target.mind.assigned_role == "Head of Security")
|
||||
target.visible_message("<span class='warning'>[target] seems to resist the implant! You can't enslave a member of security!</span>", "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
|
||||
target.visible_message(span_warning("[target] seems to resist the implant! You can't enslave a member of security!"), span_warning("You feel something interfering with your mental conditioning, but you resist it!"))
|
||||
else
|
||||
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
|
||||
target.visible_message(span_warning("[target] seems to resist the implant!"), span_warning("You feel something interfering with your mental conditioning, but you resist it!"))
|
||||
var/obj/item/implanter/I = loc
|
||||
removed(target, 1)
|
||||
qdel(src)
|
||||
@@ -47,9 +47,9 @@
|
||||
target.mind.remove_antag_datum(/datum/antagonist/gang)
|
||||
if(!silent)
|
||||
if(target.mind in SSticker.mode.cult)
|
||||
to_chat(target, "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
|
||||
to_chat(target, span_warning("You feel something interfering with your mental conditioning, but you resist it!"))
|
||||
else
|
||||
to_chat(target, "<span class='notice'>You feel a sense of peace and security. You are now enslaved!</span>")
|
||||
to_chat(target, span_notice("You feel a sense of peace and security. You are now enslaved!"))
|
||||
var/slave_objective = "[((target.client?.prefs.cit_toggles & HYPNO)?"Security has enslaved you into being their pet! Obey their commands, but remember: a good pet is not violent.":"You've been neutralized by security! Follow their orders, but remember: neutralization also means nonviolence.")]"
|
||||
brainwash(target, slave_objective)
|
||||
target.sec_hud_set_implants()
|
||||
@@ -63,7 +63,7 @@
|
||||
target.mind.remove_antag_datum(/datum/antagonist/brainwashed)
|
||||
L.sec_hud_set_implants()
|
||||
if(target.stat != DEAD && !silent)
|
||||
to_chat(target, "<span class='boldnotice'>Your mind suddenly feels free from burden. You are no longer enslaved!</span>")
|
||||
to_chat(target, span_boldnotice("Your mind suddenly feels free from burden. You are no longer enslaved!"))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
/obj/item/implant/slaver/activate()
|
||||
. = ..()
|
||||
|
||||
imp_in.visible_message("<span class='notice'>[imp_in] begins fiddling with a subtle bump on their arm.</span>", "<span class='notice'>You prepare to teleport.</span>")
|
||||
imp_in.visible_message(span_notice("[imp_in] begins fiddling with a subtle bump on their arm."), span_notice("You prepare to teleport."))
|
||||
if(do_mob(imp_in, imp_in, 5 SECONDS, ignorehelditem = TRUE))
|
||||
playsound(get_turf(imp_in.loc), 'sound/magic/blink.ogg', 50, 1)
|
||||
imp_in.visible_message("<span class='notice'>[imp_in] vanishes from sight!</span>", \
|
||||
"<span class='notice'>You activate [src], sending you to the slaver mothership!</span>")
|
||||
imp_in.visible_message(span_notice("[imp_in] vanishes from sight!"), \
|
||||
span_notice("You activate [src], sending you to the slaver mothership!"))
|
||||
new /obj/effect/temp_visual/dir_setting/ninja(get_turf(imp_in), imp_in.dir)
|
||||
|
||||
var/list/L = list()
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(imp_in, "<span class='warning'>You need to stand still and uninterrupted for 5 seconds!</span>")
|
||||
to_chat(imp_in, span_warning("You need to stand still and uninterrupted for 5 seconds!"))
|
||||
|
||||
/obj/item/implant/slaver/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
if(istype(imp, /obj/item/implant/genital_fluid))
|
||||
var/obj/item/implant/genital_fluid/I = imp
|
||||
if(I.obj_flags & EMAGGED)
|
||||
to_chat(user, "<span class='warning'>[src] has no functional safeties to emag.</span>")
|
||||
to_chat(user, span_warning("[src] has no functional safeties to emag."))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You short out [src]'s safeties.</span>")
|
||||
to_chat(user, span_notice("You short out [src]'s safeties."))
|
||||
name = "implant case - 'Genital Fluid (Hacked)'"
|
||||
I.emag_act()
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
if(unwrapped == 0)
|
||||
icon_state = "b_condom"
|
||||
unwrapped = 1
|
||||
to_chat(user, "<span class='notice'>You unwrap the condom.</span>")
|
||||
to_chat(user, span_notice("You unwrap the condom."))
|
||||
playsound(user, 'sound/items/poster_ripped.ogg', 50, 1, -1)
|
||||
return
|
||||
|
||||
@@ -55,23 +55,23 @@
|
||||
// if(unwrapped == 1)
|
||||
// new /obj/item/clothing/head/condom(usr.loc)
|
||||
// qdel(src)
|
||||
// to_chat(user, "<span class='notice'>You roll the condom out.</span>")
|
||||
// to_chat(user, span_notice("You roll the condom out."))
|
||||
// playsound(user, 'sound/lewd/latex.ogg', 50, 1, -1)
|
||||
// return
|
||||
/*
|
||||
/obj/item/genital_equipment/condom/attack(mob/living/carbon/C, mob/living/user) //apply the johnny on another person or yourself
|
||||
|
||||
if(unwrapped == 0 )
|
||||
to_chat(user, "<span class='notice'>You must remove the condom from the package first!</span>")
|
||||
to_chat(user, span_notice("You must remove the condom from the package first!"))
|
||||
return
|
||||
var/obj/item/organ/genital/penis/P = C.getorganslot(ORGAN_SLOT_PENIS)
|
||||
if((C.has_penis(REQUIRE_EXPOSED) && (P?.genital_flags & HAS_EQUIPMENT)) || (C.has_strapon(REQUIRE_EXPOSED)))
|
||||
if(P.equipment[GENITAL_EQUIPEMENT_CONDOM])
|
||||
to_chat(user, "<span class='notice'>\The [C] already has condom on!</span>")
|
||||
to_chat(user, span_notice("\The [C] already has condom on!"))
|
||||
return
|
||||
if(isliving(C) && isliving(user) && unwrapped == 1)
|
||||
C.visible_message("<span class='warning'>\The <b>[user]</b> is trying to put a condom on \the <b>[C]</b>!</span>",\
|
||||
"<span class='warning'>\The <b>[user]</b> is trying to put a condom on you!</span>")
|
||||
C.visible_message(span_warning("\The <b>[user]</b> is trying to put a condom on \the <b>[C]</b>!"),\
|
||||
span_warning("\The <b>[user]</b> is trying to put a condom on you!"))
|
||||
if(!do_mob(user, C, 4 SECONDS)) //if Failed to put the condom on
|
||||
return
|
||||
if(!user.transferItemToLoc(src, P)) //check if you can put it in
|
||||
@@ -85,12 +85,12 @@
|
||||
L.update_genitals() // apply the colour!
|
||||
*/
|
||||
if(C.has_penis())
|
||||
to_chat(C, "<span class='userlove'>Your penis feels more safe!</span>")
|
||||
to_chat(C, span_userlove("Your penis feels more safe!"))
|
||||
else
|
||||
to_chat(C, "<span class='userlove'>Your strapon feels more safe... Not sure why would that matter though.</span>")
|
||||
to_chat(C, span_userlove("Your strapon feels more safe... Not sure why would that matter though."))
|
||||
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You can't find anywhere to put the condom on.</span>") //Trying to put it on something without/or with a hidden
|
||||
to_chat(user, span_notice("You can't find anywhere to put the condom on.")) //Trying to put it on something without/or with a hidden
|
||||
*/
|
||||
|
||||
/obj/item/clothing/head/condom //p
|
||||
@@ -156,7 +156,7 @@
|
||||
//P.colourtint = ""
|
||||
update_genitals()
|
||||
C.update_icon()
|
||||
to_chat(src, "<span class='love'>The condom bubbles outwards and fills with your cum.</span>")
|
||||
to_chat(src, span_love("The condom bubbles outwards and fills with your cum."))
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
|
||||
setArousalLoss(0)
|
||||
*/
|
||||
|
||||
@@ -15,23 +15,23 @@
|
||||
if(unwrapped == 0)
|
||||
icon_state = "sounding_rod"
|
||||
unwrapped = 1
|
||||
to_chat(user, "<span class='notice'>You unwrap the rod.</span>")
|
||||
to_chat(user, span_notice("You unwrap the rod."))
|
||||
playsound(user, 'sound/items/poster_ripped.ogg', 50, 1, -1)
|
||||
return
|
||||
/*
|
||||
/obj/item/genital_equipment/sounding/attack(mob/living/carbon/C, mob/living/user)
|
||||
|
||||
if(unwrapped == 0 )
|
||||
to_chat(user, "<span class='notice'>You must remove the rod from the package first!</span>")
|
||||
to_chat(user, span_notice("You must remove the rod from the package first!"))
|
||||
return
|
||||
var/obj/item/organ/genital/penis/P = C.getorganslot(ORGAN_SLOT_PENIS)
|
||||
if(C.has_penis(REQUIRE_EXPOSED) && (P?.genital_flags & HAS_EQUIPMENT))
|
||||
if(P.equipment[GENITAL_EQUIPMENT_SOUNDING])
|
||||
to_chat(user, "<span class='notice'><b>\The [C]</b> already has a rod inside!</span>")
|
||||
to_chat(user, span_notice("<b>\The [C]</b> already has a rod inside!"))
|
||||
return
|
||||
if(isliving(C) && isliving(user) && unwrapped == 1)
|
||||
C.visible_message("<span class='warning'><b>\The [user]</b> is trying to insert a rod inside <b>\The [C]</b>!</span>",\
|
||||
"<span class='warning'><b>\The [user]</b> is trying to insert a rod inside you!</span>")
|
||||
C.visible_message(span_warning("<b>\The [user]</b> is trying to insert a rod inside <b>\The [C]</b>!"),\
|
||||
span_warning("<b>\The [user]</b> is trying to insert a rod inside you!"))
|
||||
if(!do_mob(user, C, 4 SECONDS))
|
||||
return
|
||||
if(!user.transferItemToLoc(src, P)) //check if you can put it in
|
||||
@@ -39,11 +39,11 @@
|
||||
playsound(C, 'modular_sand/sound/lewd/champ_fingering.ogg', 50, 1, -1)
|
||||
P.equipment[GENITAL_EQUIPMENT_SOUNDING] = src
|
||||
|
||||
to_chat(C, "<span class='userlove'>Your penis feels stuffed and stretched!</span>")
|
||||
to_chat(C, span_userlove("Your penis feels stuffed and stretched!"))
|
||||
owner = C
|
||||
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You can't find anywhere to put the rod inside.</span>")
|
||||
to_chat(user, span_notice("You can't find anywhere to put the rod inside."))
|
||||
|
||||
/obj/item/genital_equipment/sounding/genital_remove_proccess(var/obj/item/organ/genital/G)
|
||||
if(!G.equipment[GENITAL_EQUIPMENT_SOUNDING])
|
||||
@@ -59,7 +59,7 @@
|
||||
if(P.equipment[GENITAL_EQUIPMENT_SOUNDING])
|
||||
P.equipment.Remove(GENITAL_EQUIPMENT_SOUNDING)
|
||||
new /obj/item/genital_equipment/sounding/used_sounding(loc)
|
||||
to_chat(src, "<span class='lewd'>The rod falls off from your penis.</span>")
|
||||
to_chat(src, span_lewd("The rod falls off from your penis."))
|
||||
|
||||
/obj/item/genital_equipment/sounding/used_sounding
|
||||
name = "sounding rod"
|
||||
|
||||
@@ -49,7 +49,7 @@ Icons, maybe?
|
||||
RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/owner_resist)
|
||||
redirect_component = owner
|
||||
if(!owner.stat)
|
||||
to_chat(owner, "<span class='userdanger'>You have been leashed!</span>")
|
||||
to_chat(owner, span_userdanger("You have been leashed!"))
|
||||
return ..()
|
||||
|
||||
//This lets the pet resist their leash
|
||||
@@ -61,7 +61,7 @@ Icons, maybe?
|
||||
//deleash = 100
|
||||
if(do_mob(owner, owner, deleash))//do_mob creates a progress bar and then enacts the code after. Owner, owner, because it's an act on themself
|
||||
if(!QDELETED(src))
|
||||
to_chat(owner, "<span class='warning'>[owner] has removed their leash!</span>")
|
||||
to_chat(owner, span_warning("[owner] has removed their leash!"))
|
||||
owner.remove_status_effect(/datum/status_effect/leash_pet)
|
||||
|
||||
///// OBJECT /////
|
||||
@@ -90,7 +90,7 @@ Icons, maybe?
|
||||
//Called when someone is clicked with the leash
|
||||
/obj/item/leash/attack(mob/living/carbon/C, mob/living/user, attackchain_flags, damage_multiplier) //C is the target, user is the one with the leash
|
||||
if(C.has_status_effect(/datum/status_effect/leash_pet)) //If the pet is already leashed, do not leash them. For the love of god.
|
||||
to_chat(user, "<span class='notice'>[C] has already been leashed.</span>")
|
||||
to_chat(user, span_notice("[C] has already been leashed."))
|
||||
return
|
||||
if(istype(C.get_item_by_slot(ITEM_SLOT_NECK), /obj/item/clothing/neck/petcollar) || istype(C.get_item_by_slot(ITEM_SLOT_NECK), /obj/item/electropack/shockcollar) || istype(C.get_item_by_slot(ITEM_SLOT_NECK), /obj/item/clothing/neck/necklace/cowbell) || istype(C.get_item_by_slot(ITEM_SLOT_NECK), /obj/item/clothing/neck/maid))
|
||||
var/leashtime = 50
|
||||
@@ -114,9 +114,9 @@ Icons, maybe?
|
||||
leash_pet.add_movespeed_modifier(MOVESPEED_ID_LEASH)
|
||||
for(var/mob/viewing in viewers(user, null))
|
||||
if(viewing == leash_master)
|
||||
to_chat(leash_master, "<span class='warning'>You have hooked a leash onto [leash_pet]!</span>")
|
||||
to_chat(leash_master, span_warning("You have hooked a leash onto [leash_pet]!"))
|
||||
else
|
||||
viewing.show_message("<span class='warning'>[leash_pet] has been leashed by [leash_master]!</span>", 1)
|
||||
viewing.show_message(span_warning("[leash_pet] has been leashed by [leash_master]!"), 1)
|
||||
if(leash_pet.has_status_effect(/datum/status_effect/leash_dom)) //Pet leashed themself. They are not the dom
|
||||
leash_pet.apply_status_effect(/datum/status_effect/leash_freepet)
|
||||
leash_pet.remove_status_effect(/datum/status_effect/leash_dom)
|
||||
@@ -126,9 +126,9 @@ Icons, maybe?
|
||||
return
|
||||
if(!(leash_pet.get_item_by_slot(ITEM_SLOT_NECK))) //The pet has slipped their collar and is not the pet anymore.
|
||||
for(var/mob/viewing in viewers(user, null))
|
||||
viewing.show_message("<span class='notice'>[leash_pet] has slipped out of their collar!!</span>", 1)
|
||||
to_chat(leash_pet, "<span class='notice'>You have slipped out of your collar!</span>")
|
||||
to_chat(loc, "<span class='notice'>[leash_pet] has slipped out of their collar!</span>")
|
||||
viewing.show_message(span_notice("[leash_pet] has slipped out of their collar!!"), 1)
|
||||
to_chat(leash_pet, span_notice("You have slipped out of your collar!"))
|
||||
to_chat(loc, span_notice("[leash_pet] has slipped out of their collar!"))
|
||||
leash_pet.remove_status_effect(/datum/status_effect/leash_pet)
|
||||
|
||||
if(!leash_pet.has_status_effect(/datum/status_effect/leash_pet)) //If there is no pet, there is no dom. Loop breaks.
|
||||
@@ -150,7 +150,7 @@ Icons, maybe?
|
||||
|
||||
else //No collar, no fun
|
||||
var/leash_message = pick("Your pet needs a collar")
|
||||
to_chat(user, "<span class='notice'>[leash_message]</span>")
|
||||
to_chat(user, span_notice("[leash_message]"))
|
||||
|
||||
//Called when the leash is used in hand
|
||||
//Tugs the pet closer
|
||||
@@ -192,8 +192,8 @@ Icons, maybe?
|
||||
return
|
||||
if(leash_pet.x > leash_master.x + 3 || leash_pet.x < leash_master.x - 3 || leash_pet.y > leash_master.y + 3 || leash_pet.y < leash_master.y - 3)
|
||||
//var/leash_knockdown_message = "[leash_pet] got pulled to the ground by their leash!"
|
||||
//to_chat(leash_master, "<span class='notice'>[leash_knockdown_message]</span>")
|
||||
//to_chat(leash_pet, "<span class='notice'>[leash_knockdown_message]</span>")
|
||||
//to_chat(leash_master, span_notice("[leash_knockdown_message]"))
|
||||
//to_chat(leash_pet, span_notice("[leash_knockdown_message]"))
|
||||
leash_pet.apply_effect(20, EFFECT_KNOCKDOWN, 0)
|
||||
|
||||
//This code is to check if the pet has gotten too far away, and then break the leash.
|
||||
@@ -206,11 +206,11 @@ Icons, maybe?
|
||||
var/leash_break_message = "The leash snapped free from [leash_pet]!"
|
||||
for(var/mob/viewing in viewers(leash_pet, null))
|
||||
if(viewing == leash_master)
|
||||
to_chat(leash_master, "<span class='warning'>The leash snapped free from your pet!</span>")
|
||||
to_chat(leash_master, span_warning("The leash snapped free from your pet!"))
|
||||
if(viewing == leash_pet)
|
||||
to_chat(leash_pet, "<span class='warning'>Your leash has popped from your collar!</span>")
|
||||
to_chat(leash_pet, span_warning("Your leash has popped from your collar!"))
|
||||
else
|
||||
viewing.show_message("<span class='warning'>[leash_break_message]</span>", 1)
|
||||
viewing.show_message(span_warning("[leash_break_message]"), 1)
|
||||
leash_pet.apply_effect(20, EFFECT_KNOCKDOWN, 0)
|
||||
leash_pet.adjustOxyLoss(5)
|
||||
leash_pet.remove_status_effect(/datum/status_effect/leash_pet)
|
||||
@@ -315,9 +315,9 @@ Icons, maybe?
|
||||
var/leash_break_message = "The leash snapped free from [leash_pet]!"
|
||||
for(var/mob/viewing in viewers(leash_pet, null))
|
||||
if(viewing == leash_pet)
|
||||
to_chat(leash_pet, "<span class='warning'>Your leash has popped from your collar!</span>")
|
||||
to_chat(leash_pet, span_warning("Your leash has popped from your collar!"))
|
||||
else
|
||||
viewing.show_message("<span class='warning'>[leash_break_message]</span>", 1)
|
||||
viewing.show_message(span_warning("[leash_break_message]"), 1)
|
||||
leash_pet.apply_effect(20, EFFECT_KNOCKDOWN, 0)
|
||||
leash_pet.adjustOxyLoss(5)
|
||||
leash_pet.remove_status_effect(/datum/status_effect/leash_pet)
|
||||
@@ -345,7 +345,7 @@ Icons, maybe?
|
||||
if(leash_master.is_holding_item_of_type(/obj/item/leash) || istype(leash_master.get_item_by_slot(ITEM_SLOT_BELT), /obj/item/leash))
|
||||
return //Dom still has the leash as it turns out. Cancel the proc.
|
||||
for(var/mob/viewing in viewers(leash_master, null))
|
||||
viewing.show_message("<span class='notice'>[leash_master] has dropped the leash.</span>", 1)
|
||||
viewing.show_message(span_notice("[leash_master] has dropped the leash."), 1)
|
||||
//DOM HAS DROPPED LEASH. PET IS FREE. SCP HAS BREACHED CONTAINMENT.
|
||||
leash_pet.remove_movespeed_modifier(MOVESPEED_ID_LEASH)
|
||||
//mobhook_leash_freepet = leash_pet.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/on_freepet_move)))
|
||||
|
||||
@@ -69,45 +69,45 @@ GLOBAL_LIST_INIT(bondage_rope_slowdowns, list(
|
||||
switch(rope_target)
|
||||
if(ROPE_TARGET_HANDS_IN_FRONT, ROPE_TARGET_HANDS_BEHIND, ROPE_TARGET_HANDS_OBJECT)
|
||||
if(C.handcuffed != null && !istype(C.handcuffed, /obj/item/restraints/bondage_rope))
|
||||
to_chat(user, "<span class='warning'>[C] is already handcuffed...</span>")
|
||||
to_chat(user, span_warning("[C] is already handcuffed..."))
|
||||
return
|
||||
if(C.get_num_arms(FALSE) < 2 && !C.get_arm_ignore())
|
||||
to_chat(user, "<span class='warning'>[C] doesn't have two hands...</span>")
|
||||
to_chat(user, span_warning("[C] doesn't have two hands..."))
|
||||
return
|
||||
if(C.handcuffed == null)
|
||||
C.visible_message("<span class='danger'>[user] is trying to tie [C]'s hands [rope_target_text()]!</span>", \
|
||||
"<span class='userdanger'>[user] is trying to tie [C]'s hands [rope_target_text()]!</span>")
|
||||
C.visible_message(span_danger("[user] is trying to tie [C]'s hands [rope_target_text()]!"), \
|
||||
span_userdanger("[user] is trying to tie [C]'s hands [rope_target_text()]!"))
|
||||
else
|
||||
var/obj/item/restraints/bondage_rope/rope = C.handcuffed
|
||||
if(LAZYLEN(rope.rope_stack) >= ROPE_MAX_STACK)
|
||||
to_chat(user, "<span class='warning'>You cannot strengthen this rope anymore...</span>")
|
||||
to_chat(user, span_warning("You cannot strengthen this rope anymore..."))
|
||||
return
|
||||
C.visible_message("<span class='danger'>[user] is trying to strengthen the rope on [C]!</span>", \
|
||||
"<span class='userdanger'>[user] is trying to strengthen the rope on [C]!</span>")
|
||||
C.visible_message(span_danger("[user] is trying to strengthen the rope on [C]!"), \
|
||||
span_userdanger("[user] is trying to strengthen the rope on [C]!"))
|
||||
process_knot(C, user)
|
||||
|
||||
if(ROPE_TARGET_LEGS, ROPE_TARGET_LEGS_OBJECT)
|
||||
if(C.legcuffed != null && !istype(C.legcuffed, /obj/item/restraints/bondage_rope))
|
||||
to_chat(user, "<span class='warning'>[C] is already legcuffed...</span>")
|
||||
to_chat(user, span_warning("[C] is already legcuffed..."))
|
||||
return
|
||||
if(C.get_num_legs(FALSE) < 2 && !C.get_leg_ignore())
|
||||
to_chat(user, "<span class='warning'>[C] doesn't have two legs...</span>")
|
||||
to_chat(user, span_warning("[C] doesn't have two legs..."))
|
||||
return
|
||||
if(C.legcuffed == null)
|
||||
C.visible_message("<span class='danger'>[user] is trying to tie [C]'s legs!</span>", \
|
||||
"<span class='userdanger'>[user] is trying to tie [C]'s legs!</span>")
|
||||
C.visible_message(span_danger("[user] is trying to tie [C]'s legs!"), \
|
||||
span_userdanger("[user] is trying to tie [C]'s legs!"))
|
||||
else
|
||||
var/obj/item/restraints/bondage_rope/rope = C.legcuffed
|
||||
if(LAZYLEN(rope.rope_stack) >= ROPE_MAX_STACK)
|
||||
to_chat(user, "<span class='warning'>You cannot strengthen this rope anymore...</span>")
|
||||
to_chat(user, span_warning("You cannot strengthen this rope anymore..."))
|
||||
return
|
||||
C.visible_message("<span class='danger'>[user] is trying to strengthen the rope on [C]!</span>", \
|
||||
"<span class='userdanger'>[user] is trying to strengthen the rope on [C]!</span>")
|
||||
C.visible_message(span_danger("[user] is trying to strengthen the rope on [C]!"), \
|
||||
span_userdanger("[user] is trying to strengthen the rope on [C]!"))
|
||||
process_knot(C, user)
|
||||
|
||||
/obj/item/restraints/bondage_rope/attack_obj(obj/O, mob/user)
|
||||
if(rope_state != ROPE_STATE_DECIDING_OBJECT)
|
||||
to_chat(user, "<span class='notice'>You need to attach the rope to somebody first.</span>")
|
||||
to_chat(user, span_notice("You need to attach the rope to somebody first."))
|
||||
return
|
||||
process_object(O, user)
|
||||
|
||||
@@ -119,7 +119,7 @@ GLOBAL_LIST_INIT(bondage_rope_slowdowns, list(
|
||||
// Might be reduntant, since the roped mob gets pulled, but meh
|
||||
var/distance = get_dist(user, roped_mob)
|
||||
if(distance > ROPE_MAX_DISTANCE_MASTER)
|
||||
to_chat(user, "<span class='warning'>The rope isn't long enough to tie a knot.</span>")
|
||||
to_chat(user, span_warning("The rope isn't long enough to tie a knot."))
|
||||
return
|
||||
|
||||
for(var/type in GLOB.bondage_rope_objects)
|
||||
@@ -137,26 +137,26 @@ GLOBAL_LIST_INIT(bondage_rope_slowdowns, list(
|
||||
SSblackbox.record_feedback("tally", "handcuffs", 1, type)
|
||||
log_combat(user, C, "handcuffed")
|
||||
if(C.handcuffed == null)
|
||||
to_chat(user, "<span class='notice'>You tie [C]'s hands [rope_target_text()].</span>")
|
||||
to_chat(user, span_notice("You tie [C]'s hands [rope_target_text()]."))
|
||||
after_process_knot(C, user)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You strengthen the rope on [C].</span>")
|
||||
to_chat(user, span_notice("You strengthen the rope on [C]."))
|
||||
strengthen_rope(C, user)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You fail to tie [C]'s hands!</span>")
|
||||
to_chat(user, span_warning("You fail to tie [C]'s hands!"))
|
||||
if(ROPE_TARGET_LEGS, ROPE_TARGET_LEGS_OBJECT)
|
||||
if(do_mob(user, C, 30) && (C.get_num_legs(FALSE) >= 2 || C.get_leg_ignore()))
|
||||
playsound(loc, cuffsound, 30, 1, -2)
|
||||
SSblackbox.record_feedback("tally", "handcuffs", 1, type)
|
||||
log_combat(user, C, "handcuffed")
|
||||
if(C.legcuffed == null)
|
||||
to_chat(user, "<span class='notice'>You tie [C]'s legs.</span>")
|
||||
to_chat(user, span_notice("You tie [C]'s legs."))
|
||||
after_process_knot(C, user)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You strengthen the rope on [C].</span>")
|
||||
to_chat(user, span_notice("You strengthen the rope on [C]."))
|
||||
strengthen_rope(C, user)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You fail to tie [C]'s legs!</span>")
|
||||
to_chat(user, span_warning("You fail to tie [C]'s legs!"))
|
||||
|
||||
// > Using normal rope, calls finish_knot_normal
|
||||
// > Using object rope, handles the handcuffed effect (unless instant self apply is disabled) and sets state to ROPE_STATE_DECIDING_OBJECT
|
||||
@@ -176,7 +176,7 @@ GLOBAL_LIST_INIT(bondage_rope_slowdowns, list(
|
||||
set_roped_mob(C)
|
||||
set_roped_master(user)
|
||||
set_rope_slowdown(C)
|
||||
to_chat(roped_master, "<span class='notice'>Attach the rope to an object to finish the knot.</span>")
|
||||
to_chat(roped_master, span_notice("Attach the rope to an object to finish the knot."))
|
||||
while(1)
|
||||
sleep(2)
|
||||
if(rope_state == ROPE_STATE_UNTIED)
|
||||
@@ -229,8 +229,8 @@ GLOBAL_LIST_INIT(bondage_rope_slowdowns, list(
|
||||
|
||||
set_roped_master(null)
|
||||
set_roped_object(O, O_type)
|
||||
to_chat(roped_mob, "<span class='warning'>You are tied to [O].</span>")
|
||||
to_chat(roped_master, "<span class='notice'>You tie the rope to [O].</span>")
|
||||
to_chat(roped_mob, span_warning("You are tied to [O]."))
|
||||
to_chat(roped_master, span_notice("You tie the rope to [O]."))
|
||||
tugged_flag = TRUE
|
||||
apply_tug_mob_to_object(roped_mob, roped_object, ROPE_MAX_DISTANCE_OBJECT)
|
||||
|
||||
@@ -241,22 +241,22 @@ GLOBAL_LIST_INIT(bondage_rope_slowdowns, list(
|
||||
|
||||
if(roped_mob == null)
|
||||
if(roped_master != null)
|
||||
to_chat(roped_master, "<span class='warning'>Seems like whoever you were roping... Is gone?</span>")
|
||||
to_chat(roped_master, span_warning("Seems like whoever you were roping... Is gone?"))
|
||||
reset_rope_state()
|
||||
return FALSE
|
||||
if(rope_state == ROPE_STATE_TIED || (roped_master != roped_mob || ROPE_SELF_APPLY_INSTANT))
|
||||
if(rope_target == ROPE_TARGET_HANDS_OBJECT && roped_mob.handcuffed != src)
|
||||
if(roped_master != null)
|
||||
to_chat(roped_master, "<span class='warning'>[roped_mob] got out of your rope.</span>")
|
||||
to_chat(roped_master, span_warning("[roped_mob] got out of your rope."))
|
||||
reset_rope_state()
|
||||
return FALSE
|
||||
if(rope_target == ROPE_TARGET_LEGS_OBJECT && roped_mob.legcuffed != src)
|
||||
if(roped_master != null)
|
||||
to_chat(roped_master, "<span class='warning'>[roped_mob] got out of your rope.</span>")
|
||||
to_chat(roped_master, span_warning("[roped_mob] got out of your rope."))
|
||||
reset_rope_state()
|
||||
return FALSE
|
||||
if(rope_state == ROPE_STATE_TIED && roped_object == null)
|
||||
to_chat(roped_mob, "<span class='warning'>The thing you were tied to... Is gone?</span>")
|
||||
to_chat(roped_mob, span_warning("The thing you were tied to... Is gone?"))
|
||||
reset_rope_state()
|
||||
return FALSE
|
||||
|
||||
@@ -308,11 +308,11 @@ GLOBAL_LIST_INIT(bondage_rope_slowdowns, list(
|
||||
var/distance = get_dist(roped_mob.loc, roped_master.loc)
|
||||
if(distance > ROPE_MAX_DISTANCE_MASTER)
|
||||
if (prob(10))
|
||||
to_chat(roped_mob, "<span class='warning'>You tug the rope away from [roped_master].</span>")
|
||||
to_chat(roped_master, "<span class='warning'>[roped_mob] tugs the rope away from you.</span>")
|
||||
to_chat(roped_mob, span_warning("You tug the rope away from [roped_master]."))
|
||||
to_chat(roped_master, span_warning("[roped_mob] tugs the rope away from you."))
|
||||
forceMove(roped_mob.loc)
|
||||
else
|
||||
to_chat(roped_mob, "<span class='warning'>The rope doesn't let you go further.</span>")
|
||||
to_chat(roped_mob, span_warning("The rope doesn't let you go further."))
|
||||
tugged_flag = TRUE
|
||||
apply_tug_mob_to_mob(roped_mob, roped_master, ROPE_MAX_DISTANCE_MASTER)
|
||||
// Not reduntant, since the above line can tug the rope and make roped_master null
|
||||
@@ -336,7 +336,7 @@ GLOBAL_LIST_INIT(bondage_rope_slowdowns, list(
|
||||
if(can_move)
|
||||
apply_tug_object_to_mob(roped_object, roped_mob, ROPE_MAX_DISTANCE_OBJECT)
|
||||
else
|
||||
to_chat(roped_mob, "<span class='warning'>The rope doesn't let you go further.</span>")
|
||||
to_chat(roped_mob, span_warning("The rope doesn't let you go further."))
|
||||
tugged_flag = TRUE
|
||||
apply_tug_mob_to_object(roped_mob, roped_object, ROPE_MAX_DISTANCE_OBJECT)
|
||||
distance = get_dist(roped_mob.loc, roped_object.loc)
|
||||
@@ -346,10 +346,10 @@ GLOBAL_LIST_INIT(bondage_rope_slowdowns, list(
|
||||
/obj/item/restraints/bondage_rope/proc/snap_rope()
|
||||
var/loc = null
|
||||
if(roped_master != null)
|
||||
to_chat(roped_master, "<span class='warning'>The rope snaps.</span>")
|
||||
to_chat(roped_master, span_warning("The rope snaps."))
|
||||
loc = roped_master.loc
|
||||
if(roped_mob != null)
|
||||
to_chat(roped_mob, "<span class='warning'>The rope snaps.</span>")
|
||||
to_chat(roped_mob, span_warning("The rope snaps."))
|
||||
loc = roped_mob.loc
|
||||
reset_rope_state()
|
||||
forceMove(loc)
|
||||
@@ -416,7 +416,7 @@ GLOBAL_LIST_INIT(bondage_rope_slowdowns, list(
|
||||
|
||||
/obj/item/restraints/bondage_rope/proc/customize_rope(mob/living/user)
|
||||
if(rope_state != ROPE_STATE_UNTIED)
|
||||
to_chat(user, "<span class='warning'>You can only customize an untied rope.</span>")
|
||||
to_chat(user, span_warning("You can only customize an untied rope."))
|
||||
return
|
||||
|
||||
if(src && !user.incapacitated() && in_range(user, src))
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
/obj/item/strapon_strap/attackby(obj/item/I, mob/living/user, params)
|
||||
if(istype(I, /obj/item/dildo))
|
||||
to_chat(user, "<span class='userlove'>You attach the dildo to the strap.</span>")
|
||||
to_chat(user, span_userlove("You attach the dildo to the strap."))
|
||||
var/obj/item/dildo/dildo = I
|
||||
var/obj/item/clothing/underwear/briefs/strapon/new_strapon = new /obj/item/clothing/underwear/briefs/strapon(user.loc)
|
||||
new_strapon.dildo_color = dildo.color
|
||||
@@ -48,10 +48,10 @@
|
||||
/obj/item/clothing/underwear/briefs/strapon/examine(mob/user)
|
||||
. = ..()
|
||||
. += "There is a <span class='notice'>[GLOB.dildo_size_names[dildo_size]] [dildo_shape][dildo_can_customize ? " custom" : ""] dildo</span> attached to it."
|
||||
. += "<span class='notice'>Alt-Click \the [src.name] to separate the strap and dildo.</span>"
|
||||
. += span_notice("Alt-Click \the [src.name] to separate the strap and dildo.")
|
||||
|
||||
/obj/item/clothing/underwear/briefs/strapon/AltClick(mob/living/user, obj/item/I)
|
||||
to_chat(user, "<span class='userlove'>You separate the dildo from the strap.</span>")
|
||||
to_chat(user, span_userlove("You separate the dildo from the strap."))
|
||||
var/obj/item/strapon_strap/new_strapon_strap = new /obj/item/strapon_strap(user.loc)
|
||||
var/obj/item/dildo/new_dildo
|
||||
if(dildo_can_customize)
|
||||
@@ -105,7 +105,7 @@
|
||||
|
||||
if(istype(user, /mob/living/carbon))
|
||||
var/mob/living/carbon/C = user
|
||||
to_chat(C, "<span class='userlove'>You're now ready to bone someone!</span>")
|
||||
to_chat(C, span_userlove("You're now ready to bone someone!"))
|
||||
|
||||
/obj/item/clothing/underwear/briefs/strapon/mob_can_equip(M, equipper, slot, disable_warning, bypass_equip_delay_self)
|
||||
if(!..())
|
||||
@@ -114,7 +114,7 @@
|
||||
if(istype(M, /mob/living))
|
||||
var/mob/living/living = M
|
||||
if(living.has_penis(REQUIRE_ANY))
|
||||
to_chat(living, "<span class='notice'>\The [living] doesn't seem to need a strapon!</span>")
|
||||
to_chat(living, span_notice("\The [living] doesn't seem to need a strapon!"))
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -48,15 +48,15 @@ Code:
|
||||
switch(mode)
|
||||
if(1)
|
||||
mode = 2
|
||||
to_chat(user, "<span class='notice'>You twist the bottom of [src], setting it to the medium setting.</span>")
|
||||
to_chat(user, span_notice("You twist the bottom of [src], setting it to the medium setting."))
|
||||
return
|
||||
if(2)
|
||||
mode = 3
|
||||
to_chat(user, "<span class='warning'>You twist the bottom of [src], setting it to the high setting.</span>")
|
||||
to_chat(user, span_warning("You twist the bottom of [src], setting it to the high setting."))
|
||||
return
|
||||
if(3)
|
||||
mode = 1
|
||||
to_chat(user, "<span class='notice'>You twist the bottom of [src], setting it to the low setting.</span>")
|
||||
to_chat(user, span_notice("You twist the bottom of [src], setting it to the low setting."))
|
||||
return
|
||||
/*
|
||||
/obj/item/electropack/vibrator/attack(mob/living/carbon/C, mob/living/user)
|
||||
@@ -66,22 +66,22 @@ Code:
|
||||
var/mob/living/carbon/human/T = C
|
||||
picked_organ = S.pick_receiving_organ(T, HAS_EQUIPMENT, "Vibrator", "Where are you putting it in?")
|
||||
if(picked_organ)
|
||||
C.visible_message("<span class='warning'><b>\The [user]</b> is trying to attach [src] to <b>\The [T]</b>!</span>",\
|
||||
"<span class='warning'><b>\The [user]</b> is trying to put [src] on you!</span>")
|
||||
C.visible_message(span_warning("<b>\The [user]</b> is trying to attach [src] to <b>\The [T]</b>!"),\
|
||||
span_warning("<b>\The [user]</b> is trying to put [src] on you!"))
|
||||
if(!do_mob(user, C, 5 SECONDS))//warn them and have a delay of 5 seconds to apply.
|
||||
return
|
||||
|
||||
if(style == "long" && !(picked_organ.type == /obj/item/organ/genital/vagina)) //long vibrators dont fit on anything but vaginas, but small ones fit everywhere
|
||||
to_chat(user, "<span class='warning'>[src] is too big to fit there, use a smaller version.</span>")
|
||||
to_chat(user, span_warning("[src] is too big to fit there, use a smaller version."))
|
||||
return
|
||||
|
||||
if(!picked_organ.equipment[GENITAL_EQUIPMENT_VIBRATOR])
|
||||
if(!(style == "long"))
|
||||
to_chat(user, "<span class='love'>You attach [src] to <b>\The [T]</b>'s [picked_organ.name].</span>")
|
||||
to_chat(user, span_love("You attach [src] to <b>\The [T]</b>'s [picked_organ.name]."))
|
||||
else
|
||||
to_chat(user, "<span class='love'>You insert [src] into <b>\The <b>[T]</b>'s [picked_organ.name].</span>")
|
||||
to_chat(user, span_love("You insert [src] into <b>\The <b>[T]</b>'s [picked_organ.name]."))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>They already have a [picked_organ.equipment[GENITAL_EQUIPMENT_VIBRATOR].name] there.</span>")
|
||||
to_chat(user, span_notice("They already have a [picked_organ.equipment[GENITAL_EQUIPMENT_VIBRATOR].name] there."))
|
||||
return
|
||||
|
||||
if(!user.transferItemToLoc(src, picked_organ)) //check if you can put it in
|
||||
@@ -89,10 +89,10 @@ Code:
|
||||
playsound(C, 'modular_sand/sound/lewd/champ_fingering.ogg', 50, 1, -1)
|
||||
inside = TRUE
|
||||
picked_organ.equipment[GENITAL_EQUIPMENT_VIBRATOR] = src
|
||||
to_chat(user, "<span class='warning'>Done <b>Done</b></span>") //Will delete after testing
|
||||
to_chat(user, span_warning("Done <b>Done</b>")) //Will delete after testing
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You don't see anywhere to attach this.</span>")
|
||||
to_chat(user, span_notice("You don't see anywhere to attach this."))
|
||||
*/
|
||||
|
||||
|
||||
@@ -114,9 +114,9 @@ Code:
|
||||
if(G)
|
||||
switch(G.type) //just being fancy
|
||||
if(/obj/item/organ/genital/breasts)
|
||||
to_chat(U, "<span class='love'>[src] vibrates against your nipples!</span>")
|
||||
to_chat(U, span_love("[src] vibrates against your nipples!"))
|
||||
else
|
||||
to_chat(U, "<span class='love'>[src] vibrates against your [G.name]!</span>")
|
||||
to_chat(U, span_love("[src] vibrates against your [G.name]!"))
|
||||
|
||||
var/intencity = 6*mode
|
||||
U.handle_post_sex(intencity, null, src) //give pleasure
|
||||
@@ -125,13 +125,13 @@ Code:
|
||||
|
||||
switch(mode)
|
||||
if(1) //low, setting for RP, it wont force your character to do anything.
|
||||
to_chat(U, "<span class='love'>You feel pleasure surge through your [G.name]</span>")
|
||||
to_chat(U, span_love("You feel pleasure surge through your [G.name]"))
|
||||
U.do_jitter_animation() //do animation without heartbeat
|
||||
if(2) //med, can make you cum
|
||||
to_chat(U, "<span class='love'>You feel intense pleasure surge through your [G.name]</span>")
|
||||
to_chat(U, span_love("You feel intense pleasure surge through your [G.name]"))
|
||||
U.do_jitter_animation()
|
||||
if(3) //high, makes you stun
|
||||
to_chat(U, "<span class='userdanger'>You feel overpowering pleasure surge through your [G.name]</span>")
|
||||
to_chat(U, span_userdanger("You feel overpowering pleasure surge through your [G.name]"))
|
||||
U.Jitter(3)
|
||||
U.Stun(30)
|
||||
if(prob(50))
|
||||
|
||||
@@ -95,5 +95,5 @@
|
||||
"}
|
||||
|
||||
/obj/item/book/manual/splurt_space_law/suicide_act(mob/living/user)
|
||||
user.visible_message("<span class='suicide'>[user] pretends to read \the [src] intently... then promptly dies of laughter!</span>")
|
||||
user.visible_message(span_suicide("[user] pretends to read \the [src] intently... then promptly dies of laughter!"))
|
||||
return OXYLOSS
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
to_chat(user, "You can't hypnotize [H] whilst they're asleep!")
|
||||
return
|
||||
|
||||
user.visible_message("<span class='warning'>[user] begins to mesmerizingly wave [src] like a pendulum before [H]'s very eyes!</span>")
|
||||
user.visible_message(span_warning("[user] begins to mesmerizingly wave [src] like a pendulum before [H]'s very eyes!"))
|
||||
|
||||
if(!do_mob(user, H, 12 SECONDS))
|
||||
return
|
||||
@@ -34,7 +34,7 @@
|
||||
var/response = alert(H, "Do you wish to fall into a hypnotic sleep? (This will allow [user] to issue hypnotic suggestions)", "Hypnosis", "Yes", "No")
|
||||
|
||||
if(response == "Yes")
|
||||
H.visible_message("<span class='warning'>[H] falls into a deep slumber!</span>", "<span class ='danger'>Your eyelids gently shut as you fall into a deep slumber. All you can hear is [user]'s voice as you commit to following all of their suggestions</span>")
|
||||
H.visible_message(span_warning("[H] falls into a deep slumber!"), "<span class ='danger'>Your eyelids gently shut as you fall into a deep slumber. All you can hear is [user]'s voice as you commit to following all of their suggestions</span>")
|
||||
|
||||
H.SetSleeping(1200)
|
||||
H.drowsyness = max(H.drowsyness, 40)
|
||||
@@ -42,7 +42,7 @@
|
||||
return
|
||||
|
||||
//No
|
||||
H.visible_message("<span class='warning'>[H]'s attention breaks, despite your attempts to hypnotize them! They clearly don't want this</span>", "<span class ='warning'>Your concentration breaks as you realise you have no interest in following [user]'s words!</span>")
|
||||
H.visible_message(span_warning("[H]'s attention breaks, despite your attempts to hypnotize them! They clearly don't want this"), "<span class ='warning'>Your concentration breaks as you realise you have no interest in following [user]'s words!</span>")
|
||||
|
||||
|
||||
|
||||
@@ -76,11 +76,11 @@
|
||||
return
|
||||
|
||||
to_chat(user, "You whisper your suggestion in a smooth calming voice to [subject]")
|
||||
to_chat(subject, "<span class='hypnophrase'>...[text]...</span>")
|
||||
to_chat(subject, span_hypnophrase("...[text]..."))
|
||||
return
|
||||
//Release
|
||||
|
||||
subject.visible_message("<span class='warning'>[subject] wakes up from their deep slumber!</span>", "<span class ='danger'>Your eyelids gently open as you see [user]'s face staring back at you</span>")
|
||||
subject.visible_message(span_warning("[subject] wakes up from their deep slumber!"), "<span class ='danger'>Your eyelids gently open as you see [user]'s face staring back at you</span>")
|
||||
subject.SetSleeping(0)
|
||||
subject = null
|
||||
|
||||
|
||||
@@ -64,15 +64,15 @@
|
||||
|
||||
if(isnull(insults))
|
||||
playsound(get_turf(src), 'modular_splurt/sound/voice/halt.ogg', 100, 1, vary = 0)
|
||||
user.audible_message("<span class='warning'>[user]'s [name] rasps, \"[use_message]\"</span>", "<span class='warning'>\The [user] holds up \the [name].</span>")
|
||||
user.audible_message(span_warning("[user]'s [name] rasps, \"[use_message]\""), span_warning("\The [user] holds up \the [name]."))
|
||||
else
|
||||
if(insults > 0)
|
||||
playsound(get_turf(src), 'sound/voice/beepsky/insult.ogg', 100, 1, vary = 0)
|
||||
// Yes, it used to show the transcription of the sound clip. That was a) inaccurate b) immature as shit.
|
||||
user.audible_message("<span class='warning'>[user]'s [name] gurgles something indecipherable and deeply offensive.</span>", "<span class='warning'>\The [user] holds up \the [name].</span>")
|
||||
user.audible_message(span_warning("[user]'s [name] gurgles something indecipherable and deeply offensive."), span_warning("\The [user] holds up \the [name]."))
|
||||
insults--
|
||||
else
|
||||
user << "<span class='danger'>*BZZZZZZZZT*</span>"
|
||||
user << span_danger("*BZZZZZZZZT*")
|
||||
|
||||
spamcheck = 1
|
||||
spawn(20)
|
||||
@@ -80,7 +80,7 @@
|
||||
|
||||
/obj/item/device/hailer/emag_act(remaining_charges, mob/user)
|
||||
if(isnull(insults))
|
||||
user << "<span class='danger'>You overload \the [src]'s voice synthesizer.</span>"
|
||||
user << span_danger("You overload \the [src]'s voice synthesizer.")
|
||||
insults = rand(1, 3)//to prevent dickflooding
|
||||
return 1
|
||||
else
|
||||
@@ -170,20 +170,20 @@
|
||||
if(istype(C, /obj/item/card/id))
|
||||
var/obj/item/card/id/idcard = C
|
||||
if(!idcard.registered_name)
|
||||
to_chat(user, "<span class='warning'>\The [src] rejects the ID!</span>")
|
||||
to_chat(user, span_warning("\The [src] rejects the ID!"))
|
||||
return
|
||||
|
||||
if(!owner)
|
||||
owner = idcard.registered_name
|
||||
ownjob = idcard.assignment
|
||||
update_label()
|
||||
to_chat(user, "<span class='notice'>Badge updated.</span>")
|
||||
to_chat(user, span_notice("Badge updated."))
|
||||
|
||||
|
||||
/obj/item/clothing/accessory/badge/attack_self(mob/user)
|
||||
if(Adjacent(user))
|
||||
user.visible_message("<span class='notice'>[user] shows you: [icon2html(src, viewers(user))] [src.name].</span>", \
|
||||
"<span class='notice'>You show \the [src.name].</span>")
|
||||
user.visible_message(span_notice("[user] shows you: [icon2html(src, viewers(user))] [src.name]."), \
|
||||
span_notice("You show \the [src.name]."))
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/clothing/accessory/badge/holo
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
ExpandSize = 200
|
||||
if(ExpandSize <= 0)
|
||||
ExpandSize = 200
|
||||
to_chat(user, "<span class='notice'>Expand set to [ExpandSize] %.</span>")
|
||||
to_chat(user, span_notice("Expand set to [ExpandSize] %."))
|
||||
return ExpandSize
|
||||
|
||||
/obj/item/borg/upgrade/shrink
|
||||
@@ -25,5 +25,5 @@
|
||||
ShrinkSize = 50
|
||||
if(ShrinkSize <= 0)
|
||||
ShrinkSize = 50
|
||||
to_chat(user, "<span class='notice'>Shrink set to [ShrinkSize] %.</span>")
|
||||
to_chat(user, span_notice("Shrink set to [ShrinkSize] %."))
|
||||
return ShrinkSize
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
force = 10
|
||||
|
||||
/obj/item/bdsm_whip/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is getting just a little too kinky!</span>")
|
||||
user.visible_message(span_suicide("[user] is getting just a little too kinky!"))
|
||||
return (OXYLOSS)
|
||||
|
||||
/obj/item/bdsm_whip/attack(mob/M, mob/user)
|
||||
if(user.zone_selected == BODY_ZONE_PRECISE_GROIN)
|
||||
playsound(loc, 'sound/weapons/whip.ogg', 30)
|
||||
M.visible_message("<span class='userdanger'>[user] has [pick(attack_verb)] [M] on the ass!</span>")
|
||||
M.visible_message(span_userdanger("[user] has [pick(attack_verb)] [M] on the ass!"))
|
||||
else
|
||||
return ..(M, user)
|
||||
|
||||
@@ -54,5 +54,5 @@
|
||||
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
|
||||
|
||||
/obj/item/khopesh/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
user.visible_message(span_suicide("[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
|
||||
return(BRUTELOSS)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
/obj/item/armyknife/attack_self(mob/user)
|
||||
playsound(get_turf(user),'sound/weapons/batonextend.ogg',50,1)
|
||||
var/obj/item/armyknife/ak_screw = new /obj/item/armyknife/screw(drop_location())
|
||||
to_chat(user, "<span class='notice'>You unfold the screwdriver.</span>")
|
||||
to_chat(user, span_notice("You unfold the screwdriver."))
|
||||
qdel(src)
|
||||
user.put_in_active_hand(ak_screw)
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
/obj/item/armyknife/screw/attack_self(mob/user)
|
||||
playsound(get_turf(user),'sound/weapons/batonextend.ogg',50,1)
|
||||
var/obj/item/armyknife/ak_cut = new /obj/item/armyknife/cutter(drop_location())
|
||||
to_chat(user, "<span class='notice'>You fold the screwdriver and unfold the wirecutters.</span>")
|
||||
to_chat(user, span_notice("You fold the screwdriver and unfold the wirecutters."))
|
||||
qdel(src)
|
||||
user.put_in_active_hand(ak_cut)
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
/obj/item/armyknife/cutter/attack_self(mob/user)
|
||||
playsound(get_turf(user), 'sound/weapons/batonextend.ogg', 50, 1)
|
||||
var/obj/item/armyknife/ak_knife = new /obj/item/armyknife/blade(drop_location())
|
||||
to_chat(user, "<span class='notice'>You fold the wirecutters and unfold the knife.</span>")
|
||||
to_chat(user, span_notice("You fold the wirecutters and unfold the knife."))
|
||||
qdel(src)
|
||||
user.put_in_active_hand(ak_knife)
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
/obj/item/armyknife/blade/attack_self(mob/user)
|
||||
playsound(get_turf(user), 'sound/weapons/batonextend.ogg', 50, 1)
|
||||
var/obj/item/armyknife/ak_fold = new /obj/item/armyknife(drop_location())
|
||||
to_chat(user, "<span class='notice'>You fold the knife.</span>")
|
||||
to_chat(user, span_notice("You fold the knife."))
|
||||
qdel(src)
|
||||
user.put_in_active_hand(ak_fold)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
/obj/item/melee/baseball_bat/AltClick(mob/living/carbon/human/user as mob)
|
||||
hole = hole == CUM_TARGET_VAGINA ? CUM_TARGET_ANUS : CUM_TARGET_VAGINA
|
||||
to_chat(user, "<span class='notice'>Now targetting \the [hole].</span>")
|
||||
to_chat(user, span_notice("Now targetting \the [hole]."))
|
||||
|
||||
/obj/item/melee/baseball_bat/attack(mob/living/target, mob/living/user)
|
||||
if (BODY_ZONE_PRECISE_GROIN && user.a_intent != INTENT_HARM) //ROUGH PRISON HUMILATION YAY
|
||||
@@ -22,7 +22,7 @@
|
||||
message = (user == target) ? pick("fucks [possessive_verb] own ass with \the [src]","shoves \the [src] into [possessive_verb] ass", "jams \the [src] into [possessive_verb] ass") : pick("fucks [target]'s asshole with \the [src]", "jams \the [src] into [target]'s ass")
|
||||
lust_amt = NORMAL_LUST
|
||||
if(message)
|
||||
user.visible_message("<span class='lewd'>[user] [message].</span>")
|
||||
user.visible_message(span_lewd("[user] [message]."))
|
||||
target.handle_post_sex(lust_amt, null, user)
|
||||
playsound(loc, pick('modular_sand/sound/interactions/bang4.ogg',
|
||||
'modular_sand/sound/interactions/bang5.ogg',
|
||||
@@ -33,7 +33,7 @@
|
||||
return
|
||||
var/atom/throw_target = get_edge_target_turf(target, user.dir)
|
||||
if(homerun_ready)
|
||||
user.visible_message("<span class='userdanger'>It's a home run!</span>")
|
||||
user.visible_message(span_userdanger("It's a home run!"))
|
||||
target.throw_at(throw_target, rand(8,10), 14, user)
|
||||
target.ex_act(EXPLODE_HEAVY)
|
||||
playsound(get_turf(src), 'sound/weapons/homerun.ogg', 100, TRUE)
|
||||
|
||||
@@ -21,17 +21,17 @@
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(istype(I, /obj/item/soap))
|
||||
if(!istype(H.gloves, /obj/item/clothing/gloves/color/latex))
|
||||
to_chat(H, "<span class='warning'>No! No fucking way I'm touching this shit without at LEAST latex gloves!</span>")
|
||||
to_chat(H, span_warning("No! No fucking way I'm touching this shit without at LEAST latex gloves!"))
|
||||
return
|
||||
if(!istype(H.get_inactive_held_item(), /obj/item/storage/bag/trash))
|
||||
to_chat(H, "<span class='warning'>I'd.. need a trashbag or similar to stash all this shit.</span>")
|
||||
to_chat(H, span_warning("I'd.. need a trashbag or similar to stash all this shit."))
|
||||
return
|
||||
|
||||
H.visible_message("<span class='notice'>[H] starts cleaning \the [src]![prob(0.1) ? " All for free.." : ""]</span>", "<span class='notice'>You start.. scooping all the shit into the trash bag.. Eugh.</span>")
|
||||
H.visible_message(span_notice("[H] starts cleaning \the [src]![prob(0.1) ? " All for free.." : ""]"), span_notice("You start.. scooping all the shit into the trash bag.. Eugh."))
|
||||
if(!do_after(H, 130, target = src))
|
||||
H.visible_message("<span class='notice'>[H] gives up!</span>", "<span class='warning'>Fuck this shit.</span>")
|
||||
H.visible_message(span_notice("[H] gives up!"), span_warning("Fuck this shit."))
|
||||
return
|
||||
H.visible_message("<span class='notice'>[H] finishes cleaning \the [src]!</span>", "<span class='notice'>You're finally done. Thank fuck.'</span>")
|
||||
H.visible_message(span_notice("[H] finishes cleaning \the [src]!"), span_notice("You're finally done. Thank fuck.'"))
|
||||
new /obj/structure/urinal(loc, dir, TRUE)
|
||||
return
|
||||
return ..()
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
|
||||
/obj/structure/cannon/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>[src] accepts gunpowder or welding fuel.</span>"
|
||||
. += "<span class='warning'>Using welding fuel will weaken the force of the projectile fired.</span>"
|
||||
. += span_notice("[src] accepts gunpowder or welding fuel.")
|
||||
. += span_warning("Using welding fuel will weaken the force of the projectile fired.")
|
||||
|
||||
/obj/structure/cannon/proc/fire()
|
||||
for(var/mob/shaken_mob in urange(10, src))
|
||||
@@ -48,24 +48,24 @@
|
||||
|
||||
/obj/structure/cannon/attackby(obj/item/used_item, mob/user, params)
|
||||
if(charge_ignited)
|
||||
to_chat(user, "<span class='warning'>It's gonna fire!</span>")
|
||||
to_chat(user, span_warning("It's gonna fire!"))
|
||||
return
|
||||
var/ignition_message = used_item.ignition_effect(src, user)
|
||||
|
||||
if(istype(used_item, /obj/item/stack/cannonball))
|
||||
if(loaded_cannonball)
|
||||
to_chat(user, "<span class='warning'>[src] is already loaded!</span>")
|
||||
to_chat(user, span_warning("[src] is already loaded!"))
|
||||
else
|
||||
var/obj/item/stack/cannonball/cannoneers_balls = used_item
|
||||
loaded_cannonball = new cannoneers_balls.type(src, 1)
|
||||
loaded_cannonball.copy_evidences(cannoneers_balls)
|
||||
to_chat(user, "<span class='notice'>You load a [cannoneers_balls.singular_name] into \the [src].</span>")
|
||||
to_chat(user, span_notice("You load a [cannoneers_balls.singular_name] into \the [src]."))
|
||||
cannoneers_balls.use(1, transfer = TRUE)
|
||||
return
|
||||
|
||||
else if(ignition_message)
|
||||
if(!reagents.has_reagent(/datum/reagent/blackpowder,charge_size) && !reagents.has_reagent(/datum/reagent/fuel,charge_size))
|
||||
to_chat(user, "<span class='warning'>[src] needs [reagents.maximum_volume]u of charge!</span>")
|
||||
to_chat(user, span_warning("[src] needs [reagents.maximum_volume]u of charge!"))
|
||||
return
|
||||
visible_message(ignition_message)
|
||||
log_game("Cannon fired by [key_name(user)] in [AREACOORD(src)]")
|
||||
@@ -81,7 +81,7 @@
|
||||
return ..()
|
||||
|
||||
if(!powder_keg.reagents.total_volume)
|
||||
to_chat(user, "<span class='warning'>[powder_keg] is empty!</span>")
|
||||
to_chat(user, span_warning("[powder_keg] is empty!"))
|
||||
return
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
to_chat(user, "<span class='warning'[src] is full!</span>")
|
||||
@@ -89,15 +89,15 @@
|
||||
var/has_enough_gunpowder = powder_keg.reagents.has_reagent(/datum/reagent/blackpowder, charge_size)
|
||||
var/has_enough_alt_fuel = powder_keg.reagents.has_reagent(/datum/reagent/fuel, charge_size)
|
||||
if(!has_enough_gunpowder && !has_enough_alt_fuel)
|
||||
to_chat(user, "<span class='warning'>[powder_keg] doesn't have at least 15u of fuel to fill [src]!</span>")
|
||||
to_chat(user, span_warning("[powder_keg] doesn't have at least 15u of fuel to fill [src]!"))
|
||||
return
|
||||
if(has_enough_gunpowder)
|
||||
powder_keg.reagents.trans_id_to(src, /datum/reagent/blackpowder, amount = charge_size)
|
||||
to_chat(user, "<span class='notice'>You load [src] with gunpowder.</span>")
|
||||
to_chat(user, span_notice("You load [src] with gunpowder."))
|
||||
return
|
||||
if(has_enough_alt_fuel)
|
||||
powder_keg.reagents.trans_id_to(src, /datum/reagent/fuel, amount = charge_size)
|
||||
to_chat(user, "<span class='notice'>You load [src] with welding fuel.</span>")
|
||||
to_chat(user, span_notice("You load [src] with welding fuel."))
|
||||
return
|
||||
if(anchorable_cannon && used_item.tool_behaviour == TOOL_WRENCH)
|
||||
if(default_unfasten_wrench(user, used_item, time = 2 SECONDS))
|
||||
@@ -122,11 +122,11 @@
|
||||
if(used_alt_fuel)
|
||||
fires_before_deconstruction--
|
||||
if(prob(explode_chance))
|
||||
visible_message("<span class='warning'>[src] explodes!</span>")
|
||||
visible_message(span_warning("[src] explodes!"))
|
||||
explosion(src, heavy_impact_range = 1, light_impact_range = 5, flame_range = 5)
|
||||
return
|
||||
if(fires_before_deconstruction <= 0)
|
||||
visible_message("<span class='warning'>[src] falls apart from operation!</span>")
|
||||
visible_message(span_warning("[src] falls apart from operation!"))
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/cannon/trash/Destroy()
|
||||
|
||||
@@ -32,16 +32,16 @@
|
||||
if(health < maxhealth)
|
||||
switch(health / maxhealth)
|
||||
if(0.0 to 0.5)
|
||||
. += "<span class='warning'>It looks severely damaged!</span>"
|
||||
. += span_warning("It looks severely damaged!")
|
||||
if(0.25 to 0.5)
|
||||
. += "<span class='warning'>It looks damaged!</span>"
|
||||
. += span_warning("It looks damaged!")
|
||||
if(0.5 to 1.0)
|
||||
. += "<span class='notice'>It has a few scrapes and dents.</span>"
|
||||
. += span_notice("It has a few scrapes and dents.")
|
||||
|
||||
/obj/structure/fence/handrail/take_damage(amount)
|
||||
health -= amount
|
||||
if(health <= 0)
|
||||
visible_message("<span class='warning'>\The [src] breaks down!</span>")
|
||||
visible_message(span_warning("\The [src] breaks down!"))
|
||||
playsound(src, 'sound/effects/grillehit.ogg', 50, 1)
|
||||
new /obj/item/stack/rods(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
@@ -17,12 +17,12 @@
|
||||
return TRUE
|
||||
|
||||
if(istype(item, /obj/item/carpentry/glue))
|
||||
to_chat(user,"<span class='notice'>You glue the bricks to the floor.</span>")
|
||||
to_chat(user,span_notice("You glue the bricks to the floor."))
|
||||
anchored = TRUE
|
||||
return TRUE
|
||||
|
||||
if(istype(item, /obj/item/crowbar))
|
||||
to_chat(user,"<span class='notice'>You pry the bricks from the floor.</span>")
|
||||
to_chat(user,span_notice("You pry the bricks from the floor."))
|
||||
anchored = FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -78,9 +78,9 @@
|
||||
add_fingerprint(user)
|
||||
if(istype(P, /obj/item/wrench))
|
||||
if (!(item_flags & IN_INVENTORY))
|
||||
to_chat(user, "<span class='notice'>You start to fasten the frame to the floor and celing...</span>")
|
||||
to_chat(user, span_notice("You start to fasten the frame to the floor and celing..."))
|
||||
if(P.use_tool(src, user, 8 SECONDS, volume=50))
|
||||
to_chat(user, "<span class='notice'>You construct the stripper pole!</span>")
|
||||
to_chat(user, span_notice("You construct the stripper pole!"))
|
||||
var/obj/structure/pole/C = new
|
||||
C.loc = loc
|
||||
del(src)
|
||||
@@ -89,9 +89,9 @@
|
||||
/obj/structure/pole/attackby(obj/item/P, mob/user, params) //un-erecting a pole. :(
|
||||
add_fingerprint(user)
|
||||
if(istype(P, /obj/item/wrench))
|
||||
to_chat(user, "<span class='notice'>You start to unfastening the frame...</span>")
|
||||
to_chat(user, span_notice("You start to unfastening the frame..."))
|
||||
if(P.use_tool(src, user, 8 SECONDS, volume=50))
|
||||
to_chat(user, "<span class='notice'>You take down the stripper pole!</span>")
|
||||
to_chat(user, span_notice("You take down the stripper pole!"))
|
||||
var/obj/item/polepack/C = new
|
||||
C.loc = loc
|
||||
del(src)
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
petrified_mob = L
|
||||
if(L.buckled)
|
||||
L.buckled.unbuckle_mob(L,force=1)
|
||||
L.visible_message("<span class='warning'>[L]'s skin rapidly turns to stone!</span>", "<span class='warning'>Your skin abruptly hardens as you turn to stone once more!</span>")
|
||||
L.visible_message(span_warning("[L]'s skin rapidly turns to stone!"), span_warning("Your skin abruptly hardens as you turn to stone once more!"))
|
||||
dir = L.dir
|
||||
transform = L.transform
|
||||
pixel_x = L.pixel_x
|
||||
@@ -76,7 +76,7 @@
|
||||
. = ..()
|
||||
if (petrified_mob)
|
||||
SEND_SIGNAL(petrified_mob, COMSIG_PARENT_EXAMINE, user, .)
|
||||
. -= "<span class='notice'><i>You examine [src] closer, but find nothing of interest...</i></span>"
|
||||
. -= span_notice("<i>You examine [src] closer, but find nothing of interest...</i>")
|
||||
|
||||
/obj/structure/statue/gargoyle/handle_atom_del(atom/A)
|
||||
if(A == petrified_mob)
|
||||
@@ -119,7 +119,7 @@
|
||||
|
||||
/obj/structure/statue/gargoyle/deconstruct(disassembled = TRUE)
|
||||
deconstructed = TRUE
|
||||
visible_message("<span class='danger'>[src] shatters!</span>")
|
||||
visible_message(span_danger("[src] shatters!"))
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/statue/gargoyle/attackby(obj/item/W, mob/living/user, params)
|
||||
@@ -137,7 +137,7 @@
|
||||
user.visible_message(span_notice("[user] is slicing apart the [name]."), \
|
||||
span_notice("You are slicing apart the [name]..."))
|
||||
if (petrified_mob)
|
||||
to_chat(petrified_mob, "<span class='userdanger'>You are being sliced apart by [user]!</span>")
|
||||
to_chat(petrified_mob, span_userdanger("You are being sliced apart by [user]!"))
|
||||
if(W.use_tool(src, user, 40, volume=50))
|
||||
user.visible_message(span_notice("[user] slices apart the [name]."), \
|
||||
span_notice("You slice apart the [name]!"))
|
||||
|
||||
@@ -22,9 +22,9 @@
|
||||
|
||||
if (toConstruct)
|
||||
if(material.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one [material.name] sheet to do this!</span>")
|
||||
to_chat(user, span_warning("You need one [material.name] sheet to do this!"))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [material] to [src]...</span>")
|
||||
to_chat(user, span_notice("You start adding [material] to [src]..."))
|
||||
if(do_after(user, 20, target = src) && material.use(1))
|
||||
make_new_table(toConstruct)
|
||||
else
|
||||
@@ -54,9 +54,9 @@
|
||||
|
||||
if (toConstruct)
|
||||
if(material.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one [material.name] sheet to do this!</span>")
|
||||
to_chat(user, span_warning("You need one [material.name] sheet to do this!"))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [material] to [src]...</span>")
|
||||
to_chat(user, span_notice("You start adding [material] to [src]..."))
|
||||
if(do_after(user, 20, target = src) && material.use(1))
|
||||
make_new_table(toConstruct)
|
||||
else
|
||||
|
||||
@@ -100,7 +100,7 @@ GLOBAL_LIST_INIT(jobban_panel_data, list(
|
||||
if("Temporary")
|
||||
var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null
|
||||
if(mins <= 0)
|
||||
to_chat(usr, "<span class='danger'>[mins] is not a valid duration.</span>")
|
||||
to_chat(usr, span_danger("[mins] is not a valid duration."))
|
||||
return
|
||||
reason = input(usr,"Please State Reason For Banning [M.key].","Reason") as message|null
|
||||
if(!reason)
|
||||
@@ -111,7 +111,7 @@ GLOBAL_LIST_INIT(jobban_panel_data, list(
|
||||
var/msg
|
||||
for(var/job in notbannedlist)
|
||||
if(!DB_ban_record(BANTYPE_JOB_TEMP, M, mins, reason, job))
|
||||
to_chat(usr, "<span class='danger'>Failed to apply ban.</span>")
|
||||
to_chat(usr, span_danger("Failed to apply ban."))
|
||||
return
|
||||
if(M.client)
|
||||
jobban_buildcache(M.client)
|
||||
@@ -122,10 +122,10 @@ GLOBAL_LIST_INIT(jobban_panel_data, list(
|
||||
else
|
||||
msg += ", [job]"
|
||||
create_message("note", M.key, null, "Banned from [msg] - [reason]", null, null, 0, 0, null, 0, severity)
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes.</span>")
|
||||
to_chat(M, "<span class='boldannounce'><BIG>You have been [((msg == "ooc") || (msg == "appearance") || (msg == "pacifist")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg == "pacifist" ? "using violence" : msg].</BIG></span>")
|
||||
to_chat(M, "<span class='boldannounce'>The reason is: [reason]</span>")
|
||||
to_chat(M, "<span class='danger'>This jobban will be lifted in [mins] minutes.</span>")
|
||||
message_admins(span_adminnotice("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes."))
|
||||
to_chat(M, span_boldannounce("<BIG>You have been [((msg == "ooc") || (msg == "appearance") || (msg == "pacifist")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg == "pacifist" ? "using violence" : msg].</BIG>"))
|
||||
to_chat(M, span_boldannounce("The reason is: [reason]"))
|
||||
to_chat(M, span_danger("This jobban will be lifted in [mins] minutes."))
|
||||
|
||||
if("Permanent")
|
||||
reason = input(usr,"Please State Reason For Banning [M.key].","Reason") as message|null
|
||||
@@ -138,7 +138,7 @@ GLOBAL_LIST_INIT(jobban_panel_data, list(
|
||||
var/msg
|
||||
for(var/job in notbannedlist)
|
||||
if(!DB_ban_record(BANTYPE_JOB_PERMA, M, -1, reason, job))
|
||||
to_chat(usr, "<span class='danger'>Failed to apply ban.</span>")
|
||||
to_chat(usr, span_danger("Failed to apply ban."))
|
||||
return
|
||||
if(M.client)
|
||||
jobban_buildcache(M.client)
|
||||
@@ -149,10 +149,10 @@ GLOBAL_LIST_INIT(jobban_panel_data, list(
|
||||
else
|
||||
msg += ", [job]"
|
||||
create_message("note", M.key, null, "Banned from [msg] - [reason]", null, null, 0, 0, null, 0, severity)
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] banned [key_name_admin(M)] from [msg].</span>")
|
||||
to_chat(M, "<span class='boldannounce'><BIG>You have been [((msg == "ooc") || (msg == "appearance") || (msg == "pacifist")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg == "pacifist" ? "using violence" : msg].</BIG></span>")
|
||||
to_chat(M, "<span class='boldannounce'>The reason is: [reason]</span>")
|
||||
to_chat(M, "<span class='danger'>This jobban can be lifted only upon request.</span>")
|
||||
message_admins(span_adminnotice("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg]."))
|
||||
to_chat(M, span_boldannounce("<BIG>You have been [((msg == "ooc") || (msg == "appearance") || (msg == "pacifist")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg == "pacifist" ? "using violence" : msg].</BIG>"))
|
||||
to_chat(M, span_boldannounce("The reason is: [reason]"))
|
||||
to_chat(M, span_danger("This jobban can be lifted only upon request."))
|
||||
|
||||
// notbannedlist is just a list of strings of the job titles you want to unban.
|
||||
/datum/admins/proc/UnJobban(mob/M, list/bannedlist)
|
||||
@@ -175,5 +175,5 @@ GLOBAL_LIST_INIT(jobban_panel_data, list(
|
||||
else
|
||||
msg += ", [job]"
|
||||
if(msg)
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg].</span>")
|
||||
to_chat(M, "<span class='boldannounce'><BIG>You have been un-jobbanned by [usr.client.key] from [msg].</BIG></span>")
|
||||
message_admins(span_adminnotice("[key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg]."))
|
||||
to_chat(M, span_boldannounce("<BIG>You have been un-jobbanned by [usr.client.key] from [msg].</BIG>"))
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
/datum/admins/proc/kick(mob/M)
|
||||
if (!ismob(M) || !M.client)
|
||||
to_chat(usr, "<span class='danger'>Error: [M] has no client!</span>")
|
||||
to_chat(usr, span_danger("Error: [M] has no client!"))
|
||||
return
|
||||
|
||||
if(!check_if_greater_rights_than(M.client))
|
||||
to_chat(usr, "<span class='danger'>Error: They have more rights than you do.</span>")
|
||||
to_chat(usr, span_danger("Error: They have more rights than you do."))
|
||||
return
|
||||
|
||||
to_chat(M, "<span class='danger'>You have been kicked from the server by [usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"].</span>")
|
||||
to_chat(M, span_danger("You have been kicked from the server by [usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"]."))
|
||||
log_admin("[key_name(usr)] kicked [key_name(M)].")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] kicked [key_name_admin(M)].</span>")
|
||||
message_admins(span_adminnotice("[key_name_admin(usr)] kicked [key_name_admin(M)]."))
|
||||
qdel(M.client)
|
||||
|
||||
@@ -4,36 +4,36 @@
|
||||
|
||||
// var/mob/M = mob_to_ban
|
||||
if(!ismob(M) || !M.client)
|
||||
to_chat(usr, "<span class='danger'>Error: [M] has no client!</span>")
|
||||
to_chat(usr, span_danger("Error: [M] has no client!"))
|
||||
return
|
||||
|
||||
if(M.client && M.client.holder)
|
||||
to_chat(usr, "<span class='danger'>Error: You cannot ban admins!</span>")
|
||||
to_chat(usr, span_danger("Error: You cannot ban admins!"))
|
||||
return //admins cannot be banned. Even if they could, the ban doesn't affect them anyway
|
||||
|
||||
switch(tgui_alert(usr, "Ban type", buttons = list("Temporary", "Permanent", "Cancel")))
|
||||
if("Temporary")
|
||||
var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null
|
||||
if(mins <= 0)
|
||||
to_chat(usr, "<span class='danger'>[mins] is not a valid duration.</span>")
|
||||
to_chat(usr, span_danger("[mins] is not a valid duration."))
|
||||
return
|
||||
var/reason = input(usr,"Please State Reason For Banning [M.key].","Reason") as message|null
|
||||
if(!reason)
|
||||
return
|
||||
if(!DB_ban_record(BANTYPE_TEMP, M, mins, reason))
|
||||
to_chat(usr, "<span class='danger'>Failed to apply ban.</span>")
|
||||
to_chat(usr, span_danger("Failed to apply ban."))
|
||||
return
|
||||
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins)
|
||||
ban_unban_log_save("[key_name(usr)] has banned [key_name(M)]. - Reason: [reason] - This will be removed in [mins] minutes.")
|
||||
to_chat(M, "<span class='boldannounce'><BIG>You have been banned by [usr.client.key].\nReason: [reason]</BIG></span>")
|
||||
to_chat(M, "<span class='danger'>This is a temporary ban, it will be removed in [mins] minutes. The round ID is [GLOB.round_id].</span>")
|
||||
to_chat(M, span_boldannounce("<BIG>You have been banned by [usr.client.key].\nReason: [reason]</BIG>"))
|
||||
to_chat(M, span_danger("This is a temporary ban, it will be removed in [mins] minutes. The round ID is [GLOB.round_id]."))
|
||||
var/bran = CONFIG_GET(string/banappeals)
|
||||
if(bran)
|
||||
to_chat(M, "<span class='danger'>To try to resolve this matter head to [bran]</span>")
|
||||
to_chat(M, span_danger("To try to resolve this matter head to [bran]"))
|
||||
else
|
||||
to_chat(M, "<span class='danger'>No ban appeals URL has been set.</span>")
|
||||
to_chat(M, span_danger("No ban appeals URL has been set."))
|
||||
log_admin_private("[key_name(usr)] has banned [key_name(M)].\nReason: [key_name(M)]\nThis will be removed in [mins] minutes.")
|
||||
var/msg = "<span class='adminnotice'>[key_name_admin(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis will be removed in [mins] minutes.</span>"
|
||||
var/msg = span_adminnotice("[key_name_admin(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis will be removed in [mins] minutes.")
|
||||
message_admins(msg)
|
||||
var/datum/admin_help/AH = M.client ? M.client.current_ticket : null
|
||||
if(AH)
|
||||
@@ -50,19 +50,19 @@
|
||||
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0, M.lastKnownIP)
|
||||
if("No")
|
||||
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0)
|
||||
to_chat(M, "<span class='boldannounce'><BIG>You have been banned by [usr.client.key].\nReason: [reason]</BIG></span>")
|
||||
to_chat(M, "<span class='danger'>This is a permanent ban. The round ID is [GLOB.round_id].</span>")
|
||||
to_chat(M, span_boldannounce("<BIG>You have been banned by [usr.client.key].\nReason: [reason]</BIG>"))
|
||||
to_chat(M, span_danger("This is a permanent ban. The round ID is [GLOB.round_id]."))
|
||||
var/bran = CONFIG_GET(string/banappeals)
|
||||
if(bran)
|
||||
to_chat(M, "<span class='danger'>To try to resolve this matter head to [bran]</span>")
|
||||
to_chat(M, span_danger("To try to resolve this matter head to [bran]"))
|
||||
else
|
||||
to_chat(M, "<span class='danger'>No ban appeals URL has been set.</span>")
|
||||
to_chat(M, span_danger("No ban appeals URL has been set."))
|
||||
if(!DB_ban_record(BANTYPE_PERMA, M, -1, reason))
|
||||
to_chat(usr, "<span class='danger'>Failed to apply ban.</span>")
|
||||
to_chat(usr, span_danger("Failed to apply ban."))
|
||||
return
|
||||
ban_unban_log_save("[key_name(usr)] has permabanned [key_name(M)]. - Reason: [reason] - This is a permanent ban.")
|
||||
log_admin_private("[key_name(usr)] has banned [key_name(M)].\nReason: [reason]\nThis is a permanent ban.")
|
||||
var/msg = "<span class='adminnotice'>[key_name_admin(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis is a permanent ban.</span>"
|
||||
var/msg = span_adminnotice("[key_name_admin(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis is a permanent ban.")
|
||||
message_admins(msg)
|
||||
var/datum/admin_help/AH = M.client ? M.client.current_ticket : null
|
||||
if(AH)
|
||||
|
||||
@@ -118,7 +118,7 @@ GLOBAL_LIST_INIT(pp_transformables, list(
|
||||
newTypeName = newType
|
||||
|
||||
log_admin("[key_name(usr)] transformed [key_name(M)] into a [newTypeName].")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] transformed [key_name_admin(M)] into a [newTypeName].</span>")
|
||||
message_admins(span_adminnotice("[key_name_admin(usr)] transformed [key_name_admin(M)] into a [newTypeName]."))
|
||||
|
||||
var/mob/newMob = M.change_mob_type(newType, delete_old_mob = TRUE)
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ GLOBAL_VAR_INIT(next_command_message_id, 1)
|
||||
if ("orbit_sender")
|
||||
var/atom/movable/sender = get_mob_by_key(params["sender_ckey"])
|
||||
if(!sender)
|
||||
to_chat(usr, "<span class='notice'>This player cannot be observed.</span>")
|
||||
to_chat(usr, span_notice("This player cannot be observed."))
|
||||
return
|
||||
|
||||
if(!isobserver(admin.mob))
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
return
|
||||
|
||||
if(!CONFIG_GET(flag/use_exp_tracking))
|
||||
to_chat(usr, "<span class='warning'>Tracking is disabled in the server configuration file.</span>")
|
||||
to_chat(usr, span_warning("Tracking is disabled in the server configuration file."))
|
||||
return
|
||||
|
||||
if(!playtime_menu)
|
||||
@@ -120,7 +120,7 @@
|
||||
|
||||
var/atom/movable/target = get_mob_by_key(params["ckey"])
|
||||
if(!target)
|
||||
to_chat(usr, "<span class='notice'>This player cannot be observed.</span>")
|
||||
to_chat(usr, span_notice("This player cannot be observed."))
|
||||
return
|
||||
|
||||
var/client/C = usr.client
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
set category = "Server"
|
||||
set name = "Toggle Discord Bunker"
|
||||
if(!SSdbcore.IsConnected())
|
||||
to_chat(usr, "<span class='adminnotice'>The Database is not connected/enabled!</span>")
|
||||
to_chat(usr, span_adminnotice("The Database is not connected/enabled!"))
|
||||
return
|
||||
|
||||
var/new_dbun = !CONFIG_GET(flag/need_discord_to_join)
|
||||
@@ -18,13 +18,13 @@
|
||||
set name = "Add Discord Bypass"
|
||||
set desc = "Allows a given ckey to connect through the discord bunker for the round even if they haven't verified yet."
|
||||
if(!SSdbcore.IsConnected())
|
||||
to_chat(usr, "<span class='adminnotice'>The Database is not connected!</span>")
|
||||
to_chat(usr, span_adminnotice("The Database is not connected!"))
|
||||
return
|
||||
if(!SSdiscord)
|
||||
to_chat(usr, "<span class='adminnotice'>The discord subsystem hasn't initialized yet!</span>")
|
||||
to_chat(usr, span_adminnotice("The discord subsystem hasn't initialized yet!"))
|
||||
return
|
||||
if(!CONFIG_GET(flag/need_discord_to_join))
|
||||
to_chat(usr, "<span class='adminnotice'>The Discord Bunker is deactivated!</span>")
|
||||
to_chat(usr, span_adminnotice("The Discord Bunker is deactivated!"))
|
||||
return
|
||||
|
||||
GLOB.discord_passthrough |= ckey(ckeytobypass)
|
||||
@@ -38,13 +38,13 @@
|
||||
set name = "Revoke Discord Bypass"
|
||||
set desc = "Revoke's a ckey's permission to bypass the discord bunker for a given round."
|
||||
if(!SSdbcore.IsConnected())
|
||||
to_chat(usr, "<span class='adminnotice'>The Database is not connected!</span>")
|
||||
to_chat(usr, span_adminnotice("The Database is not connected!"))
|
||||
return
|
||||
if(!SSdiscord)
|
||||
to_chat(usr, "<span class='adminnotice'>The discord subsystem hasn't initialized yet!</span>")
|
||||
to_chat(usr, span_adminnotice("The discord subsystem hasn't initialized yet!"))
|
||||
return
|
||||
if(!CONFIG_GET(flag/need_discord_to_join))
|
||||
to_chat(usr, "<span class='adminnotice'>The Discord Bunker is deactivated!</span>")
|
||||
to_chat(usr, span_adminnotice("The Discord Bunker is deactivated!"))
|
||||
return
|
||||
|
||||
GLOB.discord_passthrough -= ckey(ckeytobypass)
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
|
||||
log_admin("SubtlePM ([sender]): [key_name(usr)] -> [key_name(M)] : [msg]")
|
||||
msg = "<span class='adminnotice'><b> SubtleMessage ([sender]): [key_name_admin(usr)] -> [key_name_admin(M)] :</b> [msg]</span>"
|
||||
msg = span_adminnotice("<b> SubtleMessage ([sender]): [key_name_admin(usr)] -> [key_name_admin(M)] :</b> [msg]")
|
||||
message_admins(msg)
|
||||
admin_ticket_log(M, msg)
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "Subtle Message") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
|
||||
/obj/item/antag_spawner/slaver_borg/proc/check_usability(mob/user)
|
||||
if(used)
|
||||
to_chat(user, "<span class='warning'>[src] is out of power!</span>")
|
||||
to_chat(user, span_warning("[src] is out of power!"))
|
||||
return FALSE
|
||||
if(!user.mind.has_antag_datum(/datum/antagonist/slaver,TRUE))
|
||||
to_chat(user, "<span class='danger'>AUTHENTICATION FAILURE. ACCESS DENIED.</span>")
|
||||
to_chat(user, span_danger("AUTHENTICATION FAILURE. ACCESS DENIED."))
|
||||
return FALSE
|
||||
var/area/A = get_area(get_turf(user))
|
||||
if (!istype(A, /area/slavers))
|
||||
to_chat(user, "<span class='warning'>[src] is out of range! It can only be used at your hideout!</span>")
|
||||
to_chat(user, span_warning("[src] is out of range! It can only be used at your hideout!"))
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
@@ -30,11 +30,11 @@
|
||||
return
|
||||
|
||||
if(!(next_attempt_allowed < world.time))
|
||||
to_chat(user, "<span class='warning'>A request has already been sent! Wait 1 minute.</span>")
|
||||
to_chat(user, span_warning("A request has already been sent! Wait 1 minute."))
|
||||
return
|
||||
next_attempt_allowed = world.time + 1 MINUTES
|
||||
|
||||
to_chat(user, "<span class='notice'>You activate [src] and wait for confirmation.</span>")
|
||||
to_chat(user, span_notice("You activate [src] and wait for confirmation."))
|
||||
var/list/borg_candidates = pollGhostCandidates("Do you want to play as a slaver [lowertext(borg_to_spawn)] cyborg?", ROLE_SLAVER, null, ROLE_SLAVER, 150, POLL_IGNORE_SLAVER)
|
||||
if(LAZYLEN(borg_candidates))
|
||||
if(QDELETED(src) || !check_usability(user))
|
||||
@@ -45,7 +45,7 @@
|
||||
do_sparks(4, TRUE, src)
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Unable to connect to Slaver command. Please wait and try again later.</span>")
|
||||
to_chat(user, span_warning("Unable to connect to Slaver command. Please wait and try again later."))
|
||||
|
||||
/obj/item/antag_spawner/slaver_borg/spawn_antag(client/C, turf/T, kind, datum/mind/user)
|
||||
var/mob/living/silicon/robot/R
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
/mob/living/simple_animal/qareen/Login()
|
||||
..()
|
||||
var/qareen_greet
|
||||
qareen_greet += "<span class='deadsay'><span class='big bold'>You are a qareen.</span></span>"
|
||||
qareen_greet += span_deadsay("<span class='big bold'>You are a qareen.</span>")
|
||||
qareen_greet += "<b>Your formerly mundane spirit has been infused with alien energies and empowered into a qareen.</b>"
|
||||
qareen_greet += "<b>You are not dead, not alive, but somewhere in between. You are capable of limited interaction with both worlds.</b>"
|
||||
qareen_greet += "<b>You are invincible and invisible to everyone but other ghosts. Most abilities will reveal you, rendering you vulnerable.</b>"
|
||||
@@ -128,11 +128,11 @@
|
||||
revealed = FALSE
|
||||
incorporeal_move = INCORPOREAL_MOVE_JAUNT
|
||||
invisibility = INVISIBILITY_QAREEN
|
||||
to_chat(src, "<span class='revenboldnotice'>You are once more concealed.</span>")
|
||||
to_chat(src, span_revenboldnotice("You are once more concealed."))
|
||||
if(unstun_time && world.time >= unstun_time)
|
||||
unstun_time = 0
|
||||
mob_transforming = FALSE
|
||||
to_chat(src, "<span class='revenboldnotice'>You can move again!</span>")
|
||||
to_chat(src, span_revenboldnotice("You can move again!"))
|
||||
if(essence_regenerating && !inhibited && essence < essence_regen_cap) //While inhibited, essence will not regenerate
|
||||
essence = min(essence_regen_cap, essence+essence_regen_amount)
|
||||
update_action_buttons_icon() //because we update something required by our spells in life, we need to update our buttons
|
||||
@@ -165,7 +165,7 @@
|
||||
if(!message)
|
||||
return
|
||||
src.log_talk(message, LOG_SAY)
|
||||
var/rendered = "<span class='revennotice'><b>[src]</b> says, \"[message]\"</span>"
|
||||
var/rendered = span_revennotice("<b>[src]</b> says, \"[message]\"")
|
||||
for(var/mob/M in GLOB.mob_list)
|
||||
if(isqareen(M))
|
||||
to_chat(M, rendered)
|
||||
@@ -199,8 +199,8 @@
|
||||
/mob/living/simple_animal/qareen/attackby(obj/item/W, mob/living/user, params)
|
||||
. = ..()
|
||||
if(istype(W, /obj/item/nullrod))
|
||||
visible_message("<span class='warning'>[src] violently flinches!</span>", \
|
||||
"<span class='revendanger'>As \the [W] passes through you, you feel your essence draining away!</span>")
|
||||
visible_message(span_warning("[src] violently flinches!"), \
|
||||
span_revendanger("As \the [W] passes through you, you feel your essence draining away!"))
|
||||
adjustBruteLoss(25) //hella effective
|
||||
inhibited = TRUE
|
||||
update_action_buttons_icon()
|
||||
@@ -230,17 +230,17 @@
|
||||
if(!revealed || stasis) //qareens cannot die if they aren't revealed //or are already dead
|
||||
return 0
|
||||
stasis = TRUE
|
||||
to_chat(src, "<span class='revendanger'>NO! No... it's too late, you can feel your essence [pick("spewing out", "bursting out")]...</span>")
|
||||
to_chat(src, span_revendanger("NO! No... it's too late, you can feel your essence [pick("spewing out", "bursting out")]..."))
|
||||
mob_transforming = TRUE
|
||||
revealed = TRUE
|
||||
invisibility = 0
|
||||
playsound(src, 'sound/effects/screech.ogg', 100, 1)
|
||||
visible_message("<span class='warning'>[src] lets out a waning screech as violet mist swirls around its dissolving body!</span>")
|
||||
visible_message(span_warning("[src] lets out a waning screech as violet mist swirls around its dissolving body!"))
|
||||
icon_state = icon_drain
|
||||
for(var/i = alpha, i > 0, i -= 10)
|
||||
stoplag()
|
||||
alpha = i
|
||||
visible_message("<span class='danger'>[src]'s body breaks apart into a fine pile of blue dust.</span>")
|
||||
visible_message(span_danger("[src]'s body breaks apart into a fine pile of blue dust."))
|
||||
var/reforming_essence = essence_regen_cap //retain the gained essence capacity
|
||||
var/obj/item/ectoplasm/qareen/R = new(get_turf(src))
|
||||
R.essence = max(reforming_essence - 15 * perfectsouls, 75) //minus any perfect souls
|
||||
@@ -261,10 +261,10 @@
|
||||
invisibility = 0
|
||||
incorporeal_move = FALSE
|
||||
if(!unreveal_time)
|
||||
to_chat(src, "<span class='revendanger'>You have been revealed!</span>")
|
||||
to_chat(src, span_revendanger("You have been revealed!"))
|
||||
unreveal_time = world.time + time
|
||||
else
|
||||
to_chat(src, "<span class='revenwarning'>You have been revealed!</span>")
|
||||
to_chat(src, span_revenwarning("You have been revealed!"))
|
||||
unreveal_time = unreveal_time + time
|
||||
update_spooky_icon()
|
||||
|
||||
@@ -275,10 +275,10 @@
|
||||
return
|
||||
mob_transforming = TRUE
|
||||
if(!unstun_time)
|
||||
to_chat(src, "<span class='revendanger'>You cannot move!</span>")
|
||||
to_chat(src, span_revendanger("You cannot move!"))
|
||||
unstun_time = world.time + time
|
||||
else
|
||||
to_chat(src, "<span class='revenwarning'>You cannot move!</span>")
|
||||
to_chat(src, span_revenwarning("You cannot move!"))
|
||||
unstun_time = unstun_time + time
|
||||
update_spooky_icon()
|
||||
|
||||
@@ -299,17 +299,17 @@
|
||||
return
|
||||
var/turf/T = get_turf(src)
|
||||
if(isclosedturf(T))
|
||||
to_chat(src, "<span class='revenwarning'>You cannot use abilities from inside of a wall.</span>")
|
||||
to_chat(src, span_revenwarning("You cannot use abilities from inside of a wall."))
|
||||
return FALSE
|
||||
for(var/obj/O in T)
|
||||
if(O.density && !O.CanPass(src, T))
|
||||
to_chat(src, "<span class='revenwarning'>You cannot use abilities inside of a dense object.</span>")
|
||||
to_chat(src, span_revenwarning("You cannot use abilities inside of a dense object."))
|
||||
return FALSE
|
||||
if(inhibited)
|
||||
to_chat(src, "<span class='revenwarning'>Your powers have been suppressed by nulling energy!</span>")
|
||||
to_chat(src, span_revenwarning("Your powers have been suppressed by nulling energy!"))
|
||||
return FALSE
|
||||
if(!change_essence_amount(essence_cost, TRUE))
|
||||
to_chat(src, "<span class='revenwarning'>You lack the essence to use that ability.</span>")
|
||||
to_chat(src, span_revenwarning("You lack the essence to use that ability."))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
@@ -333,9 +333,9 @@
|
||||
update_action_buttons_icon()
|
||||
if(!silent)
|
||||
if(essence_amt > 0)
|
||||
to_chat(src, "<span class='revennotice'>Gained [essence_amt]E[source ? " from [source]":""].</span>")
|
||||
to_chat(src, span_revennotice("Gained [essence_amt]E[source ? " from [source]":""]."))
|
||||
else
|
||||
to_chat(src, "<span class='revenminor'>Lost [essence_amt]E[source ? " from [source]":""].</span>")
|
||||
to_chat(src, span_revenminor("Lost [essence_amt]E[source ? " from [source]":""]."))
|
||||
return 1
|
||||
|
||||
/mob/living/simple_animal/qareen/proc/telekinesis_cooldown_end()
|
||||
@@ -383,13 +383,13 @@
|
||||
reform()
|
||||
else
|
||||
inert = TRUE
|
||||
visible_message("<span class='warning'>[src] settles down and seems lifeless.</span>")
|
||||
visible_message(span_warning("[src] settles down and seems lifeless."))
|
||||
|
||||
/obj/item/ectoplasm/qareen/attack_self(mob/user)
|
||||
if(!reforming || inert)
|
||||
return ..()
|
||||
user.visible_message("<span class='notice'>[user] scatters [src] in all directions.</span>", \
|
||||
"<span class='notice'>You scatter [src] across the area. The particles slowly fade away.</span>")
|
||||
user.visible_message(span_notice("[user] scatters [src] in all directions."), \
|
||||
span_notice("You scatter [src] across the area. The particles slowly fade away."))
|
||||
user.dropItemToGround(src)
|
||||
scatter()
|
||||
|
||||
@@ -397,15 +397,15 @@
|
||||
..()
|
||||
if(inert)
|
||||
return
|
||||
visible_message("<span class='notice'>[src] breaks into particles upon impact, which fade away to nothingness.</span>")
|
||||
visible_message(span_notice("[src] breaks into particles upon impact, which fade away to nothingness."))
|
||||
scatter()
|
||||
|
||||
/obj/item/ectoplasm/qareen/examine(mob/user)
|
||||
. = ..()
|
||||
if(inert)
|
||||
. += "<span class='revennotice'>It seems inert.</span>"
|
||||
. += span_revennotice("It seems inert.")
|
||||
else if(reforming)
|
||||
. += "<span class='revenwarning'>It is shifting and distorted. It would be wise to destroy this.</span>"
|
||||
. += span_revenwarning("It is shifting and distorted. It would be wise to destroy this.")
|
||||
|
||||
/obj/item/ectoplasm/qareen/proc/reform()
|
||||
if(QDELETED(src) || QDELETED(qareen) || inert)
|
||||
@@ -427,7 +427,7 @@
|
||||
qdel(qareen)
|
||||
message_admins("No candidates were found for the new qareen. Oh well!")
|
||||
inert = TRUE
|
||||
visible_message("<span class='revenwarning'>[src] settles down and seems lifeless.</span>")
|
||||
visible_message(span_revenwarning("[src] settles down and seems lifeless."))
|
||||
return
|
||||
var/mob/C = pick(candidates)
|
||||
C.transfer_ckey(qareen, FALSE)
|
||||
@@ -435,12 +435,12 @@
|
||||
qdel(qareen)
|
||||
message_admins("No ckey was found for the new qareen. Oh well!")
|
||||
inert = TRUE
|
||||
visible_message("<span class='revenwarning'>[src] settles down and seems lifeless.</span>")
|
||||
visible_message(span_revenwarning("[src] settles down and seems lifeless."))
|
||||
return
|
||||
|
||||
message_admins("[qareen.key] has been [old_key == qareen.key ? "re":""]made into a qareen by reforming ectoplasm.")
|
||||
log_game("[qareen.key] was [old_key == qareen.key ? "re":""]made as a qareen by reforming ectoplasm.")
|
||||
visible_message("<span class='revenboldnotice'>[src] suddenly rises into the air before fading away.</span>")
|
||||
visible_message(span_revenboldnotice("[src] suddenly rises into the air before fading away."))
|
||||
|
||||
qareen.essence = essence
|
||||
qareen.essence_regen_cap = essence
|
||||
@@ -449,7 +449,7 @@
|
||||
qdel(src)
|
||||
|
||||
/obj/item/ectoplasm/qareen/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the shadow realm!</span>")
|
||||
user.visible_message(span_suicide("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the shadow realm!"))
|
||||
scatter()
|
||||
return (OXYLOSS)
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
if(ishuman(A))
|
||||
if(A in drained_mobs)
|
||||
to_chat(src, "<span class='revenwarning'>[A]'s fluids are almost devoid of any essence, also very bland.. almost tasteless... but beggars can't be choosers.</span>" )
|
||||
to_chat(src, span_revenwarning("[A]'s fluids are almost devoid of any essence, also very bland.. almost tasteless... but beggars can't be choosers.") )
|
||||
if(in_range(src, A))
|
||||
Harvest(A)
|
||||
|
||||
@@ -20,19 +20,19 @@
|
||||
if(!castcheck(0))
|
||||
return
|
||||
if(draining)
|
||||
to_chat(src, "<span class='revenwarning'>You are already sucking up the essence!</span>")
|
||||
to_chat(src, span_revenwarning("You are already sucking up the essence!"))
|
||||
return
|
||||
if(target.stat)
|
||||
to_chat(src, "<span class='revennotice'>[target.p_their(TRUE)] essence is too faded to harvest.</span>")
|
||||
to_chat(src, span_revennotice("[target.p_their(TRUE)] essence is too faded to harvest."))
|
||||
return
|
||||
if(!target.ckey)
|
||||
to_chat(src, "<span class='revennotice'>[target.p_their(TRUE)] essence is lacking .. worthless.</span>")
|
||||
to_chat(src, span_revennotice("[target.p_their(TRUE)] essence is lacking .. worthless."))
|
||||
// return
|
||||
if(prob(10))
|
||||
to_chat(target, "You feel as if you are being watched.")
|
||||
face_atom(target)
|
||||
draining = TRUE
|
||||
to_chat(src, "<span class='revennotice'>You search for the lifespring of [target].</span>")
|
||||
to_chat(src, span_revennotice("You search for the lifespring of [target]."))
|
||||
if(do_after(src, rand(10, 20), 0, target)) //did they get deleted in that second?
|
||||
for(var/obj/item/organ/genital/G in target.internal_organs)
|
||||
if(!(G.genital_flags & GENITAL_FUID_PRODUCTION))
|
||||
@@ -43,9 +43,9 @@
|
||||
var/main_fluid = G.get_fluid_name()
|
||||
var/fluid_ammount = clamp((G.fluid_rate * ((world.time - G.last_orgasmed) / (10 SECONDS)) * G.fluid_mult),0,G.fluid_max_volume)
|
||||
if (fluid_ammount <= 2)
|
||||
to_chat(src, "<span class='revennotice'>[target.p_their(TRUE)] [G.name] spasms pitifully, almost nothing will come out.</span>")
|
||||
to_chat(src, span_revennotice("[target.p_their(TRUE)] [G.name] spasms pitifully, almost nothing will come out."))
|
||||
else
|
||||
to_chat(src, "<span class='revennotice'>[target.p_their(TRUE)] [G.name] are brimming with [main_fluid].</span>")
|
||||
to_chat(src, span_revennotice("[target.p_their(TRUE)] [G.name] are brimming with [main_fluid]."))
|
||||
if (fluid_ammount > 5)
|
||||
fluid_ammount = 5 // For balancing reasons
|
||||
if ((target in drained_mobs) || !target.ckey)
|
||||
@@ -60,33 +60,33 @@
|
||||
if(do_after(src, rand(15, 20), 0, target)) //did they get deleted NOW?
|
||||
switch(essence_drained)
|
||||
if(0 to 4)
|
||||
to_chat(src, "<span class='revennotice'>[target] is almost barren of essence. Still, every bit counts.</span>")
|
||||
to_chat(src, span_revennotice("[target] is almost barren of essence. Still, every bit counts."))
|
||||
if(5 to 10)
|
||||
to_chat(src, "<span class='revennotice'>[target] will yield an average amount of essence.</span>")
|
||||
to_chat(src, span_revennotice("[target] will yield an average amount of essence."))
|
||||
if(11 to 20)
|
||||
to_chat(src, "<span class='revenboldnotice'>Such a feast! [target] will yield much essence to you.</span>")
|
||||
to_chat(src, span_revenboldnotice("Such a feast! [target] will yield much essence to you."))
|
||||
if(30 to INFINITY)
|
||||
to_chat(src, "<span class='revenbignotice'>Ah, a sexually furstrated person. [target] will yield massive amounts of essence to you.</span>")
|
||||
to_chat(src, span_revenbignotice("Ah, a sexually furstrated person. [target] will yield massive amounts of essence to you."))
|
||||
if(do_after(src, rand(15, 25), 0, target)) //how about now
|
||||
if(target.stat)
|
||||
to_chat(src, "<span class='revenwarning'>[target.p_theyre(TRUE)] now too weak to provide anything of worth.</span>")
|
||||
to_chat(target, "<span class='boldannounce'>You feel something tugging across your body before subsiding.</span>")
|
||||
to_chat(src, span_revenwarning("[target.p_theyre(TRUE)] now too weak to provide anything of worth."))
|
||||
to_chat(target, span_boldannounce("You feel something tugging across your body before subsiding."))
|
||||
draining = 0
|
||||
essence_drained = 0
|
||||
return //hey, wait a minute...
|
||||
to_chat(src, "<span class='revenminor'>You begin sucking up essence from [target]'s genitals and body.</span>")
|
||||
to_chat(src, span_revenminor("You begin sucking up essence from [target]'s genitals and body."))
|
||||
if(target.stat != DEAD)
|
||||
to_chat(target, "<span class='warning'>You feel an unholy euphoria as as something sucks at every part your body, your fluids flowing out...</span>")
|
||||
to_chat(target, span_warning("You feel an unholy euphoria as as something sucks at every part your body, your fluids flowing out..."))
|
||||
if(target.stat == SOFT_CRIT)
|
||||
target.Stun(150)
|
||||
reveal(46)
|
||||
stun(100)
|
||||
target.visible_message("<span class='warning'>[target] suddenly rises slightly into the air, [target.p_their()] skin turning an ashy gray.</span>")
|
||||
target.visible_message(span_warning("[target] suddenly rises slightly into the air, [target.p_their()] skin turning an ashy gray."))
|
||||
if(target.anti_magic_check(FALSE, TRUE))
|
||||
to_chat(src, "<span class='revenminor'>Something's wrong! [target] seems to be resisting the sucking, leaving you vulnerable!</span>")
|
||||
to_chat(src, span_revenminor("Something's wrong! [target] seems to be resisting the sucking, leaving you vulnerable!"))
|
||||
target.set_resting(TRUE,TRUE)
|
||||
target.visible_message("<span class='warning'>[target] slumps onto the ground.</span>", \
|
||||
"<span class='revenwarning'>Violet lights, dancing in your vision, receding--</span>")
|
||||
target.visible_message(span_warning("[target] slumps onto the ground."), \
|
||||
span_revenwarning("Violet lights, dancing in your vision, receding--"))
|
||||
draining = FALSE
|
||||
return
|
||||
var/datum/beam/B = Beam(target,icon_state="drain_life",time=INFINITY)
|
||||
@@ -100,25 +100,25 @@
|
||||
if(essence_drained > 30)
|
||||
essence_regen_cap += 15
|
||||
perfectsouls++
|
||||
to_chat(src, "<span class='revenboldnotice'>The ammount of [target]'s fluids has increased your maximum essence level. Your new maximum essence is [essence_regen_cap].</span>")
|
||||
to_chat(src, span_revenboldnotice("The ammount of [target]'s fluids has increased your maximum essence level. Your new maximum essence is [essence_regen_cap]."))
|
||||
else if(essence_drained >= 5)
|
||||
essence_regen_cap += 5
|
||||
to_chat(src, "<span class='revenboldnotice'>The absorption of [target]'s fluids has increased your maximum essence level. Your new maximum essence is [essence_regen_cap].</span>")
|
||||
to_chat(src, span_revenboldnotice("The absorption of [target]'s fluids has increased your maximum essence level. Your new maximum essence is [essence_regen_cap]."))
|
||||
target.set_resting(TRUE,TRUE)
|
||||
target.visible_message("<span class='warning'>[target] slumps onto the ground.</span>", \
|
||||
"<span class='revenwarning'>Violets lights, dancing in your vision, getting clo--</span>")
|
||||
target.visible_message(span_warning("[target] slumps onto the ground."), \
|
||||
span_revenwarning("Violets lights, dancing in your vision, getting clo--"))
|
||||
drained_mobs.Add(target)
|
||||
target.setStaminaLoss(150)
|
||||
// target.death(0)
|
||||
else
|
||||
to_chat(src, "<span class='revenwarning'>[target ? "[target] has":"[target.p_theyve(TRUE)]"] been drawn out of your grasp. The link has been broken.</span>")
|
||||
to_chat(src, span_revenwarning("[target ? "[target] has":"[target.p_theyve(TRUE)]"] been drawn out of your grasp. The link has been broken."))
|
||||
if(target) //Wait, target is WHERE NOW?
|
||||
target.set_resting(TRUE,TRUE)
|
||||
target.visible_message("<span class='warning'>[target] slumps onto the ground.</span>", \
|
||||
"<span class='revenwarning'>Violets lights, dancing in your vision, receding--</span>")
|
||||
target.visible_message(span_warning("[target] slumps onto the ground."), \
|
||||
span_revenwarning("Violets lights, dancing in your vision, receding--"))
|
||||
qdel(B)
|
||||
else
|
||||
to_chat(src, "<span class='revenwarning'>You are not close enough to suck on [target ? "[target]'s":"[target.p_their()]"] fluids. The link has been broken.</span>")
|
||||
to_chat(src, span_revenwarning("You are not close enough to suck on [target ? "[target]'s":"[target.p_their()]"] fluids. The link has been broken."))
|
||||
draining = FALSE
|
||||
essence_drained = 0
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
/obj/effect/proc_holder/spell/targeted/night_vision/qareen
|
||||
charge_max = 0
|
||||
panel = "Qareen Abilities"
|
||||
message = "<span class='revennotice'>You toggle your night vision.</span>"
|
||||
message = span_revennotice("You toggle your night vision.")
|
||||
action_icon = 'icons/mob/actions/actions_revenant.dmi'
|
||||
action_icon_state = "r_nightvision"
|
||||
action_background_icon_state = "bg_qareen"
|
||||
@@ -188,7 +188,7 @@
|
||||
charge_counter = charge_max
|
||||
return FALSE
|
||||
name = "[initial(name)] ([cast_amount]E)"
|
||||
to_chat(user, "<span class='revennotice'>You have unlocked [initial(name)]!</span>")
|
||||
to_chat(user, span_revennotice("You have unlocked [initial(name)]!"))
|
||||
panel = "Qareen Abilities"
|
||||
locked = FALSE
|
||||
charge_counter = charge_max
|
||||
@@ -227,7 +227,7 @@
|
||||
L.flicker(20) //spooky
|
||||
continue
|
||||
L.flicker(20) //spooky
|
||||
L.visible_message("<span class='warning'><b>\The [L] suddenly flares brightly and begins to spark!</span>")
|
||||
L.visible_message(span_warning("<b>\The [L] suddenly flares brightly and begins to spark!"))
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
s.set_up(4, 0, L)
|
||||
s.start()
|
||||
@@ -335,7 +335,7 @@
|
||||
continue
|
||||
if(human.anti_magic_check(FALSE, TRUE))
|
||||
continue
|
||||
to_chat(human, "<span class='revenwarning'>You feel [pick("your sense of direction flicker out", "a stabbing pain in your head", "your mind fill with thought of servitude for a brief moment")].</span>")
|
||||
to_chat(human, span_revenwarning("You feel [pick("your sense of direction flicker out", "a stabbing pain in your head", "your mind fill with thought of servitude for a brief moment")]."))
|
||||
new /obj/effect/temp_visual/revenant(human.loc)
|
||||
// human.emp_act(80)
|
||||
// for(var/obj/thing in T)
|
||||
@@ -394,7 +394,7 @@
|
||||
if(!blissfound)
|
||||
H.ForceContractDisease(new /datum/disease/qarbliss(), FALSE, TRUE)
|
||||
mob.adjust_bodytemperature(5)
|
||||
to_chat(H, "<span class='revenminor'>You feel [pick("suddenly hot", "a surge of warmth", "like your crotch is <i>tingling</i>")].</span>")
|
||||
to_chat(H, span_revenminor("You feel [pick("suddenly hot", "a surge of warmth", "like your crotch is <i>tingling</i>")]."))
|
||||
mob.reagents.add_reagent(/datum/reagent/drug/aphrodisiac, 5)
|
||||
else
|
||||
mob.adjust_bodytemperature(5)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
/datum/disease/qarbliss/stage_act()
|
||||
if(prob(stage*2))
|
||||
if(prob(5))
|
||||
to_chat(affected_mob, "<span class='revennotice'>You feel [pick("hot and bothered", "horny", "lusty", "like you're in a rut", "the need to breed", "breedable", "slimy")]...</span>")
|
||||
to_chat(affected_mob, span_revennotice("You feel [pick("hot and bothered", "horny", "lusty", "like you're in a rut", "the need to breed", "breedable", "slimy")]..."))
|
||||
if(stage > 1 && prob(20))
|
||||
affected_mob.confused += 5
|
||||
if(stage > 2 && prob(20))
|
||||
@@ -56,14 +56,14 @@
|
||||
if(5)
|
||||
if (bliss_stage_2 == FALSE)
|
||||
bliss_stage_2 = TRUE
|
||||
to_chat(affected_mob, "<span class='revenbignotice'>It's too much! Brain.. fried..</span>")
|
||||
to_chat(affected_mob, span_revenbignotice("It's too much! Brain.. fried.."))
|
||||
if (ishuman(affected_mob))
|
||||
var/mob/living/carbon/human/H = affected_mob
|
||||
H.mob_climax(TRUE,"Bliss",src,TRUE)
|
||||
if(affected_mob.dna?.species)
|
||||
affected_mob.dna.species.handle_mutant_bodyparts(affected_mob,"#fff0ff")
|
||||
affected_mob.dna.species.handle_hair(affected_mob,"#da6eda")
|
||||
affected_mob.visible_message("<span class='warning'>[affected_mob] looks utterly depraved.</span>", "<span class='revennotice'>You suddenly feel like your skin is <i>tingling</i>...</span>")
|
||||
affected_mob.visible_message(span_warning("[affected_mob] looks utterly depraved."), span_revennotice("You suddenly feel like your skin is <i>tingling</i>..."))
|
||||
affected_mob.add_atom_colour("#ffdaf3", TEMPORARY_COLOUR_PRIORITY)
|
||||
new /obj/effect/temp_visual/revenant(affected_mob.loc)
|
||||
// addtimer(CALLBACK(src, .proc/blessings), 150)
|
||||
@@ -79,4 +79,4 @@
|
||||
if(QDELETED(affected_mob))
|
||||
return
|
||||
affected_mob.playsound_local(affected_mob, 'sound/effects/gib_step.ogg', 40, 1, -1)
|
||||
to_chat(affected_mob, "<span class='revendanger'>You sense the curse of a lustful ghost befall you...</span>")
|
||||
to_chat(affected_mob, span_revendanger("You sense the curse of a lustful ghost befall you..."))
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
/obj/item/slaver/gizmo/attack(mob/living/M, mob/user)
|
||||
var/datum/antagonist/slaver/S = locate() in user.mind.antag_datums
|
||||
if(!S) // Is not a slaver antag.
|
||||
to_chat(user, "<span class='warning'>You aren't sure how to use this tech!</span>")
|
||||
to_chat(user, span_warning("You aren't sure how to use this tech!"))
|
||||
return
|
||||
|
||||
if(user == M)
|
||||
to_chat(user, "<span class='warning'>You can't teleport yourself!</span>")
|
||||
to_chat(user, span_warning("You can't teleport yourself!"))
|
||||
return
|
||||
|
||||
// Find a location to teleport to
|
||||
@@ -32,19 +32,19 @@
|
||||
|
||||
// Check we are in range of the destination
|
||||
if(!mobLocation || mobLocation.z != teleportDestination.z)
|
||||
to_chat(user, "<span class='warning'>The mothership is out of range, you need to be on the same z-level!</span>")
|
||||
to_chat(user, span_warning("The mothership is out of range, you need to be on the same z-level!"))
|
||||
return
|
||||
|
||||
user.visible_message("<span class='notice'>[user] begins scanning [M] with [src].</span>", "<span class='notice'>You begin scanning [M] with [src].</span>")
|
||||
user.visible_message(span_notice("[user] begins scanning [M] with [src]."), span_notice("You begin scanning [M] with [src]."))
|
||||
if(do_mob(user, M, 15 SECONDS))
|
||||
// Teleport!
|
||||
playsound(get_turf(M.loc), 'sound/magic/blink.ogg', 50, 1)
|
||||
M.visible_message("<span class='notice'>[M] vanishes from sight!</span>", \
|
||||
"<span class='notice'>You feel a rush of energy as you are beamed to the slaver mothership!</span>")
|
||||
M.visible_message(span_notice("[M] vanishes from sight!"), \
|
||||
span_notice("You feel a rush of energy as you are beamed to the slaver mothership!"))
|
||||
new /obj/effect/temp_visual/dir_setting/ninja(get_turf(M), M.dir)
|
||||
M.forceMove(teleportDestination)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to stand still and uninterrupted for 15 seconds!</span>")
|
||||
to_chat(user, span_warning("You need to stand still and uninterrupted for 15 seconds!"))
|
||||
|
||||
// Buyable gear kits at the slaver console
|
||||
/obj/item/storage/box/slaver_teleport
|
||||
|
||||
@@ -199,7 +199,7 @@ GLOBAL_LIST_INIT(slavers_ransom_values, list(
|
||||
|
||||
/datum/team/slavers/roundend_report()
|
||||
var/list/parts = list()
|
||||
parts += "<span class='header'>Slave Traders:</span>"
|
||||
parts += span_header("Slave Traders:")
|
||||
|
||||
var/text = "<br><span class='header'>The crew were:</span>"
|
||||
var/slavesSold = GLOB.slavers_slaves_sold
|
||||
@@ -224,9 +224,9 @@ GLOBAL_LIST_INIT(slavers_ransom_values, list(
|
||||
|
||||
// var/datum/objective/slaver/O = locate() in objectives
|
||||
if(GLOB.slavers_credits_total >= 200000 && !all_dead)
|
||||
parts += "<span class='greentext'>The slaver crew were successful!</span>"
|
||||
parts += span_greentext("The slaver crew were successful!")
|
||||
else
|
||||
parts += "<span class='redtext'>The slaver crew have failed.</span>"
|
||||
parts += span_redtext("The slaver crew have failed.")
|
||||
|
||||
parts += text
|
||||
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
|
||||
/mob/living/carbon/wendigo/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
|
||||
if(incapacitated() || lying)
|
||||
to_chat(src, "<span class='warning'>You can't do that right now!</span>")
|
||||
to_chat(src, span_warning("You can't do that right now!"))
|
||||
return FALSE
|
||||
if(be_close && !in_range(M, src))
|
||||
to_chat(src, "<span class='warning'>You are too far away!</span>")
|
||||
to_chat(src, span_warning("You are too far away!"))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
. = list("<span class='info'>*---------*\nThis is [icon2html(src, user)] \a <EM>[src]</EM>!")
|
||||
|
||||
if(handcuffed)
|
||||
. += "<span class='warning'>[t_He] is [icon2html(handcuffed, user)] handcuffed!</span>"
|
||||
. += span_warning("[t_He] is [icon2html(handcuffed, user)] handcuffed!")
|
||||
if(legcuffed)
|
||||
. += "<span class='warning'>[t_He] has [icon2html(legcuffed, user)] leg cuffs!</span>"
|
||||
. += span_warning("[t_He] has [icon2html(legcuffed, user)] leg cuffs!")
|
||||
if(head)
|
||||
. += "[t_He] is wearing [head.get_examine_string(user)] on [t_his] head."
|
||||
if(wear_neck)
|
||||
@@ -23,7 +23,7 @@
|
||||
. += "[t_He] has [back.get_examine_string(user)] on [t_his] back."
|
||||
|
||||
if(stat == DEAD)
|
||||
. += "<span class='deadsay'>[t_He] is limp and unresponsive, with no signs of life.</span>"
|
||||
. += span_deadsay("[t_He] is limp and unresponsive, with no signs of life.")
|
||||
|
||||
var/list/msg = ("<span class='warning'>")
|
||||
var/temp_hp = getBruteLoss()
|
||||
@@ -66,7 +66,7 @@
|
||||
|
||||
if(connected_link)
|
||||
if(connected_link.souls.len > 5)
|
||||
. += "<span class='warning'><B>[t_His] eyes are glowing a deadly red.</B></span>"
|
||||
. += span_warning("<B>[t_His] eyes are glowing a deadly red.</B>")
|
||||
else
|
||||
var/A = "<span class='deadsay'>"
|
||||
switch(connected_link.souls.len)
|
||||
@@ -80,7 +80,7 @@
|
||||
A += "[t_His] eyes are glowing red."
|
||||
. += "[A]</span>"
|
||||
else
|
||||
. += "<span class='deadsay'>[t_He] looks lost.</span>"
|
||||
. += span_deadsay("[t_He] looks lost.")
|
||||
|
||||
SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, .)
|
||||
. += "*---------*</span>"
|
||||
|
||||
@@ -42,15 +42,15 @@
|
||||
if(round(fake_penis_size, 1) == fake_penis_size && fake_penis_size)
|
||||
switch(had_changed)
|
||||
if("penis_enlarger")
|
||||
to_chat(src, "<span class='warning'>Your [pick(GLOB.dick_nouns)] [pick("swells up to", "flourishes into", "expands into", "bursts forth into", "grows eagerly into", "amplifys into")] a [fake_penis_size] inch penis.</b></span>")
|
||||
to_chat(src, span_warning("Your [pick(GLOB.dick_nouns)] [pick("swells up to", "flourishes into", "expands into", "bursts forth into", "grows eagerly into", "amplifys into")] a [fake_penis_size] inch penis.</b>"))
|
||||
if("PEsmaller")
|
||||
if(fake_penis_size > 0)
|
||||
to_chat(src, "<span class='warning'>Your [pick(GLOB.dick_nouns)] [pick("shrinks down to", "decreases into", "diminishes into", "deflates into", "shrivels regretfully into", "contracts into")] a [fake_penis_size] inch penis.</b></span>")
|
||||
to_chat(src, span_warning("Your [pick(GLOB.dick_nouns)] [pick("shrinks down to", "decreases into", "diminishes into", "deflates into", "shrivels regretfully into", "contracts into")] a [fake_penis_size] inch penis.</b>"))
|
||||
else if(round(fake_breast_size, 1) == fake_breast_size && fake_breast_size)
|
||||
switch(had_changed)
|
||||
if("breast_enlarger")
|
||||
to_chat(src, "<span class='warning'>Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a [ascii2text(round(fake_breast_size)+63)]-cup.</b></span>")
|
||||
to_chat(src, span_warning("Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a [ascii2text(round(fake_breast_size)+63)]-cup.</b>"))
|
||||
if("BEsmaller)")
|
||||
if(fake_breast_size > 0)
|
||||
to_chat(src, "<span class='warning'>Your breasts [pick("shrink down to", "decrease into", "diminish into", "deflate into", "shrivel regretfully into", "contracts into")] a [ascii2text(round(fake_breast_size)+63)]-cup.</b></span>")
|
||||
to_chat(src, span_warning("Your breasts [pick("shrink down to", "decrease into", "diminish into", "deflate into", "shrivel regretfully into", "contracts into")] a [ascii2text(round(fake_breast_size)+63)]-cup.</b>"))
|
||||
return TRUE
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
var/obj/item/organ/genital/penis/bepis = sender
|
||||
if(locate(/obj/item/genital_equipment/sounding) in bepis.contents)
|
||||
spill = TRUE
|
||||
to_chat(src, "<span class='userlove'>You feel your sounding rod being pushed out of your cockhole with the burst of jizz!</span>")
|
||||
to_chat(src, span_userlove("You feel your sounding rod being pushed out of your cockhole with the burst of jizz!"))
|
||||
var/obj/item/genital_equipment/sounding/rod = locate(/obj/item/genital_equipment/sounding) in bepis.contents
|
||||
rod.forceMove(get_turf(src))
|
||||
|
||||
@@ -81,14 +81,14 @@
|
||||
return
|
||||
var/main_fluid = lowertext(fluid_source.get_master_reagent_name())
|
||||
if(mb_time)
|
||||
visible_message("<span class='love'>You hear a strong suction sound coming from the [M.name] on [src]'s [G.name].</span>", \
|
||||
"<span class='userlove'>The [M.name] pumps faster, trying to get you over the edge.</span>", \
|
||||
"<span class='userlove'>Something vacuums your [G.name] with a quiet but powerfull vrrrr.</span>")
|
||||
visible_message(span_love("You hear a strong suction sound coming from the [M.name] on [src]'s [G.name]."), \
|
||||
span_userlove("The [M.name] pumps faster, trying to get you over the edge."), \
|
||||
span_userlove("Something vacuums your [G.name] with a quiet but powerfull vrrrr."))
|
||||
if(!do_after(src, mb_time, target = src) || !in_range(src, container) || !G.climaxable(src, TRUE))
|
||||
return
|
||||
visible_message("<span class='love'>[src] twitches as [p_their()] [main_fluid] trickles into [container].</span>", \
|
||||
"<span class='userlove'>[M] sucks out all the [main_fluid] you had been saving up into [container].</span>", \
|
||||
"<span class='userlove'>You feel a vacuum sucking on your [G.name] as you climax!</span>")
|
||||
visible_message(span_love("[src] twitches as [p_their()] [main_fluid] trickles into [container]."), \
|
||||
span_userlove("[M] sucks out all the [main_fluid] you had been saving up into [container]."), \
|
||||
span_userlove("You feel a vacuum sucking on your [G.name] as you climax!"))
|
||||
do_climax(fluid_source, container, G, FALSE, cover = TRUE)
|
||||
emote("moan")
|
||||
|
||||
@@ -97,12 +97,12 @@
|
||||
if(!fluid_source)
|
||||
return
|
||||
if(mb_time) //Skip warning if this is an instant climax.
|
||||
to_chat(src,"<span class='userlove'>You're about to climax over [L]!</span>")
|
||||
to_chat(L,"<span class='userlove'>[src] is about to climax over you!</span>")
|
||||
to_chat(src,span_userlove("You're about to climax over [L]!"))
|
||||
to_chat(L,span_userlove("[src] is about to climax over you!"))
|
||||
if(!do_after(src, mb_time, target = src) || !in_range(src, L) || !G.climaxable(src, TRUE))
|
||||
return
|
||||
to_chat(src,"<span class='userlove'>You climax all over [L] using your [G.name]!</span>")
|
||||
to_chat(L, "<span class='userlove'>[src] climaxes all over you using [p_their()] [G.name]!</span>")
|
||||
to_chat(src,span_userlove("You climax all over [L] using your [G.name]!"))
|
||||
to_chat(L, span_userlove("[src] climaxes all over you using [p_their()] [G.name]!"))
|
||||
do_climax(fluid_source, L, G, spillage, cover = TRUE)
|
||||
|
||||
/atom/proc/add_cum_overlay() //This can go in a better spot, for now its here.
|
||||
|
||||
@@ -49,23 +49,23 @@
|
||||
/obj/item/organ/genital/proc/remove_equipment(mob/living/carbon/remover, selection)
|
||||
var/obj/item/selected = equipment[selection]
|
||||
if(!selected)
|
||||
to_chat(remover, "<span class='warning'>[remover != owner ? owner.p_their() : "Your"] [name] doesn't have that equipped</span>")
|
||||
to_chat(remover, span_warning("[remover != owner ? owner.p_their() : "Your"] [name] doesn't have that equipped"))
|
||||
return
|
||||
|
||||
if(remover == owner)
|
||||
owner.visible_message(message = "<span class='lewd'><b>\The [owner]</b> slides the [selected] out of [owner.p_their()] [name]</span>",
|
||||
self_message = "<span class='lewd'>You feel the [selected] slide out of your [name]</span>",
|
||||
owner.visible_message(message = span_lewd("<b>\The [owner]</b> slides the [selected] out of [owner.p_their()] [name]"),
|
||||
self_message = span_lewd("You feel the [selected] slide out of your [name]"),
|
||||
ignored_mobs = owner.get_unconsenting()
|
||||
)
|
||||
else
|
||||
owner.visible_message(message = "<span class='lewd'><b>\The [remover]</b> tries to remove the [selected] out of [owner]'s [name]",
|
||||
self_message = "<span class='lewd'><b>\The [remover]</b> gently takes your [name] and starts sliding the [selected] out of it</span>",
|
||||
self_message = span_lewd("<b>\The [remover]</b> gently takes your [name] and starts sliding the [selected] out of it"),
|
||||
ignored_mobs = owner.get_unconsenting()
|
||||
)
|
||||
if(!do_mob(remover, owner, 4 SECONDS))
|
||||
return
|
||||
owner.visible_message(message = "<span class='lewd'><b>\The [remover]</b> slides the [selected] out of [owner]'s [name]!</span>",
|
||||
self_message = "<span class='lewd'>You feel [remover]'s warm hand slide the [selected] out of your [name]</span></span>",
|
||||
owner.visible_message(message = span_lewd("<b>\The [remover]</b> slides the [selected] out of [owner]'s [name]!"),
|
||||
self_message = span_lewd("You feel [remover]'s warm hand slide the [selected] out of your [name]</span>"),
|
||||
ignored_mobs = owner.get_unconsenting()
|
||||
)
|
||||
switch(selected.type)
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
var/list/belly_names = list("stomach", "belly", "gut", "midsection", "rolls")
|
||||
if(size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!fixed
|
||||
if(owner)
|
||||
to_chat(owner, "<span class='warning'>You feel your [pick(belly_names)] go completely flat.</span>")
|
||||
to_chat(owner, span_warning("You feel your [pick(belly_names)] go completely flat."))
|
||||
QDEL_IN(src, 1)
|
||||
return
|
||||
|
||||
@@ -48,9 +48,9 @@
|
||||
var/mob/living/carbon/human/H = owner
|
||||
var/r_prev_size = round(prev_size)
|
||||
if (rounded_size > r_prev_size)
|
||||
to_chat(H, "<span class='warning'>Your guts [pick("swell up to", "gurgle into", "expand into", "plump up into", "grow eagerly into", "fatten up into", "distend into")] a larger midsection.</span>")
|
||||
to_chat(H, span_warning("Your guts [pick("swell up to", "gurgle into", "expand into", "plump up into", "grow eagerly into", "fatten up into", "distend into")] a larger midsection."))
|
||||
else if (rounded_size < r_prev_size)
|
||||
to_chat(H, "<span class='warning'>Your guts [pick("shrink down to", "decrease into", "wobble down into", "diminish into", "deflate into", "contracts into")] a smaller midsection.</span>")
|
||||
to_chat(H, span_warning("Your guts [pick("shrink down to", "decrease into", "wobble down into", "diminish into", "deflate into", "contracts into")] a smaller midsection."))
|
||||
|
||||
/obj/item/organ/genital/belly/update_appearance()
|
||||
var/lowershape = lowertext(shape)
|
||||
@@ -130,7 +130,7 @@
|
||||
var/growth_amount = climax_fluids.total_volume / (fluid_max_volume * GENITAL_INFLATION_THRESHOLD)
|
||||
modify_size(growth_amount)
|
||||
if(size > round(previous))
|
||||
owner.visible_message("<span class='lewd'>\The <b>[owner]</b>'s belly bloats outwards as it gets pumped full of[pick(" sweet", "")] [lowertext(source_gen.get_fluid_name())]!</span>", ignored_mobs = owner.get_unconsenting())
|
||||
owner.visible_message(span_lewd("\The <b>[owner]</b>'s belly bloats outwards as it gets pumped full of[pick(" sweet", "")] [lowertext(source_gen.get_fluid_name())]!"), ignored_mobs = owner.get_unconsenting())
|
||||
fluid_id = source_gen.get_fluid_id()
|
||||
if((growth_amount >= 3 || size >= 3) && (owner.client?.prefs.cit_toggles & BUTT_ENLARGEMENT))
|
||||
var/obj/item/organ/genital/butt/ass = owner.getorganslot(ORGAN_SLOT_BUTT)
|
||||
|
||||
@@ -45,6 +45,6 @@
|
||||
var/list/asscheeks = list("asscheeks", "buttcheeks", "ass buns", "booty pillows", "dumptruck spheres", "[pick(list("jiggly", "bouncy", "wobbly"))] buttocks")
|
||||
modify_size(growth_amount)
|
||||
if(size != previous)
|
||||
owner.visible_message("<span class='lewd'>\The <b>[owner]</b>'s [pick(GLOB.butt_nouns + asscheeks)] bounce\s outwards lewdly as [owner.p_they()] get[owner.p_s()] pumped full of [lowertext(source_gen.get_fluid_name())] from behind!</span>", ignored_mobs = owner.get_unconsenting())
|
||||
owner.visible_message(span_lewd("\The <b>[owner]</b>'s [pick(GLOB.butt_nouns + asscheeks)] bounce\s outwards lewdly as [owner.p_they()] get[owner.p_s()] pumped full of [lowertext(source_gen.get_fluid_name())] from behind!"), ignored_mobs = owner.get_unconsenting())
|
||||
fluid_id = source_gen.get_fluid_id()
|
||||
climax_fluids.clear_reagents()
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
var/previous = size
|
||||
modify_size(target.total_volume / (fluid_max_volume * GENITAL_INFLATION_THRESHOLD))
|
||||
if(size != previous)
|
||||
owner.visible_message("<span class='lewd'>\The <b>[owner]</b>'s [pick(GLOB.dick_nouns)][linked_organ ? " and [pick(list("nuts", "balls", "testicles", "ballsack", "sack"))]" : ""] swell and grow bigger as they get pumped full of \the <b>[partner]</b>'s [lowertext(source_gen.get_fluid_name())]!</span>", ignored_mobs = owner.get_unconsenting())
|
||||
owner.visible_message(span_lewd("\The <b>[owner]</b>'s [pick(GLOB.dick_nouns)][linked_organ ? " and [pick(list("nuts", "balls", "testicles", "ballsack", "sack"))]" : ""] swell and grow bigger as they get pumped full of \the <b>[partner]</b>'s [lowertext(source_gen.get_fluid_name())]!"), ignored_mobs = owner.get_unconsenting())
|
||||
if(linked_organ)
|
||||
linked_organ.fluid_id = source_gen.get_fluid_id()
|
||||
target.clear_reagents()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
/obj/item/dildo/flared/gigantic/suicide_act(mob/living/user)
|
||||
if(do_after(user,45,target=src))
|
||||
user.visible_message("<span class='suicide'>[user] tears-up and gags as they try to deepthroat the [src]! WHY WOULD THEY DO THAT? It looks like [user.p_theyre()] trying to commit suicide!!</span>")
|
||||
user.visible_message(span_suicide("[user] tears-up and gags as they try to deepthroat the [src]! WHY WOULD THEY DO THAT? It looks like [user.p_theyre()] trying to commit suicide!!"))
|
||||
playsound(loc, 'sound/weapons/gagging.ogg', 50, 2, -1)
|
||||
user.Stun(400)
|
||||
user.adjust_blurriness(24)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
// If true; Reject them and abort
|
||||
if (user in used_fingerprints)
|
||||
// Send a message implying someone else should roll
|
||||
visible_message("<span class='notice'>[user] rolls the dice, but it doesn't respond to [user.p_them()] again.</span>")
|
||||
visible_message(span_notice("[user] rolls the dice, but it doesn't respond to [user.p_them()] again."))
|
||||
return
|
||||
// If false; Add them to the user list and continue
|
||||
else
|
||||
|
||||
@@ -87,54 +87,54 @@
|
||||
//saw a plank into two platforms
|
||||
/obj/item/processed/wood/plank/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/carpentry/handsaw))
|
||||
to_chat(user,"<span class='notice'> You begin to saw [src] in half...</span>")
|
||||
to_chat(user,span_notice(" You begin to saw [src] in half..."))
|
||||
if(do_after(user, 40, target = src) && isturf(loc))
|
||||
new src.sawobj(loc)
|
||||
new src.sawobj(loc) //send help i dont know how to make two in the same line lmfao
|
||||
to_chat(user, "<span class='notice'> You saw [src] in half.</span>")
|
||||
to_chat(user, span_notice(" You saw [src] in half."))
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to hold still to saw [src]!</span>")
|
||||
to_chat(user, span_warning("You need to hold still to saw [src]!"))
|
||||
else
|
||||
..()
|
||||
//saw a platform into four blocks
|
||||
/obj/item/processed/wood/platform/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/carpentry/handsaw))
|
||||
to_chat(user,"<span class='notice'> You begin cut [src] into smaller pieces...</span>")
|
||||
to_chat(user,span_notice(" You begin cut [src] into smaller pieces..."))
|
||||
if(do_after(user, 20, target = src) && isturf(loc))
|
||||
new src.sawobj(loc)
|
||||
new src.sawobj(loc)
|
||||
new src.sawobj(loc)
|
||||
new src.sawobj(loc)
|
||||
to_chat(user, "<span class='notice'> You cut [src] into four pieces.</span>")
|
||||
to_chat(user, span_notice(" You cut [src] into four pieces."))
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to hold still to saw [src]!</span>")
|
||||
to_chat(user, span_warning("You need to hold still to saw [src]!"))
|
||||
else
|
||||
..()
|
||||
//sand a block into a peg
|
||||
/obj/item/processed/wood/block/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/carpentry/sandpaper))
|
||||
to_chat(user,"<span class='notice'> You carefully begin to sand down [src]...</span>")
|
||||
to_chat(user,span_notice(" You carefully begin to sand down [src]..."))
|
||||
if(do_after(user, 50, target = src) && isturf(loc))
|
||||
new src.sandobj(loc)
|
||||
to_chat(user, "<span class='notice'> You smooth [src] into a peg.</span>")
|
||||
to_chat(user, span_notice(" You smooth [src] into a peg."))
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to hold still to sand [src]!</span>")
|
||||
to_chat(user, span_warning("You need to hold still to sand [src]!"))
|
||||
else
|
||||
..()
|
||||
//cut heated metal into nails
|
||||
/obj/item/processed/metal/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/wirecutters))
|
||||
to_chat(user,"<span class='notice'> You tediously begin to cut [src] into several nails...</span>")
|
||||
to_chat(user,span_notice(" You tediously begin to cut [src] into several nails..."))
|
||||
if(do_after(user, 80, target = src) && isturf(loc))
|
||||
new /obj/item/nails(loc)
|
||||
new /obj/item/nails(loc)
|
||||
to_chat(user, "<span class='notice'> You make some crude metal nails.</span>")
|
||||
to_chat(user, span_notice(" You make some crude metal nails."))
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to hold still to process [src]!</span>")
|
||||
to_chat(user, span_warning("You need to hold still to process [src]!"))
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -142,25 +142,25 @@
|
||||
//cover a wooden block in glue
|
||||
/obj/item/processed/wood/block/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/carpentry/glue))
|
||||
to_chat(user,"<span class='notice'> You begin to glue down one end of [src]...</span>")
|
||||
to_chat(user,span_notice(" You begin to glue down one end of [src]..."))
|
||||
if(do_after(user, 10, target = src) && isturf(loc))
|
||||
new src.glueobj(loc)
|
||||
to_chat(user, "<span class='notice'> You slap some glue onto [src].</span>")
|
||||
to_chat(user, span_notice(" You slap some glue onto [src]."))
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to hold still to glue [src]!</span>")
|
||||
to_chat(user, span_warning("You need to hold still to glue [src]!"))
|
||||
else
|
||||
..()
|
||||
//cover a wooden peg in glue
|
||||
/obj/item/processed/wood/peg/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/carpentry/glue))
|
||||
to_chat(user,"<span class='notice'> You begin to glue down one end of the [src]...</span>")
|
||||
to_chat(user,span_notice(" You begin to glue down one end of the [src]..."))
|
||||
if(do_after(user, 10, target = src) && isturf(loc))
|
||||
new src.glueobj(loc)
|
||||
to_chat(user, "<span class='notice'> You slap some glue onto [src].</span>")
|
||||
to_chat(user, span_notice(" You slap some glue onto [src]."))
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to hold still to glue [src]!</span>")
|
||||
to_chat(user, span_warning("You need to hold still to glue [src]!"))
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -168,89 +168,89 @@
|
||||
//bore a platform into a seat
|
||||
/obj/item/processed/wood/platform/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/carpentry/borer))
|
||||
to_chat(user,"<span class='notice'> You begin to cut four holes into [src]...</span>")
|
||||
to_chat(user,span_notice(" You begin to cut four holes into [src]..."))
|
||||
if(do_after(user, 40, target = src) && isturf(loc))
|
||||
new src.boreobj(loc)
|
||||
to_chat(user, "<span class='notice'> You drill four holes into [src].</span>")
|
||||
to_chat(user, span_notice(" You drill four holes into [src]."))
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to hold still to refine [src]!</span>")
|
||||
to_chat(user, span_warning("You need to hold still to refine [src]!"))
|
||||
else
|
||||
..()
|
||||
|
||||
//Stools - Further crafting
|
||||
/obj/item/processed/wood/stool1/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/nails))
|
||||
to_chat(user,"<span class='notice'> You place nails into [src]...</span>")
|
||||
to_chat(user,span_notice(" You place nails into [src]..."))
|
||||
if(do_after(user, 20, target = src) && isturf(loc))
|
||||
new /obj/item/processed/wood/stool2(loc)
|
||||
to_chat(user, "<span class='notice'> The nails are ready to be hammered.</span>")
|
||||
to_chat(user, span_notice(" The nails are ready to be hammered."))
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to hold still to refine [src]!</span>")
|
||||
to_chat(user, span_warning("You need to hold still to refine [src]!"))
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/processed/wood/stool2/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/carpentry/hammer))
|
||||
to_chat(user,"<span class='notice'> You begin to hammer the [src]...</span>")
|
||||
to_chat(user,span_notice(" You begin to hammer the [src]..."))
|
||||
if(do_after(user, 30, target = src) && isturf(loc))
|
||||
new /obj/item/processed/wood/stool3(loc)
|
||||
to_chat(user, "<span class='notice'> The nails are hammered into place.</span>")
|
||||
to_chat(user, span_notice(" The nails are hammered into place."))
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to hold still to refine [src]!</span>")
|
||||
to_chat(user, span_warning("You need to hold still to refine [src]!"))
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/processed/wood/stool3/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/carpentry/sandpaper))
|
||||
to_chat(user,"<span class='notice'> You begin to sand the [src]...</span>")
|
||||
to_chat(user,span_notice(" You begin to sand the [src]..."))
|
||||
if(do_after(user, 30, target = src) && isturf(loc))
|
||||
new /obj/item/processed/wood/stool4(loc)
|
||||
to_chat(user, "<span class='notice'> You sand down the [src].</span>")
|
||||
to_chat(user, span_notice(" You sand down the [src]."))
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to hold still to refine [src]!</span>")
|
||||
to_chat(user, span_warning("You need to hold still to refine [src]!"))
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/processed/wood/stool4/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/processed/wood/glueblock))
|
||||
to_chat(user,"<span class='notice'> You add some finishing touches to the [src]...</span>")
|
||||
to_chat(user,span_notice(" You add some finishing touches to the [src]..."))
|
||||
if(do_after(user, 30, target = src) && isturf(loc))
|
||||
new /obj/item/processed/wood/stool(loc)
|
||||
to_chat(user, "<span class='notice'> You complete the [src].</span>")
|
||||
to_chat(user, span_notice(" You complete the [src]."))
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to hold still to refine [src]!</span>")
|
||||
to_chat(user, span_warning("You need to hold still to refine [src]!"))
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/processed/wood/stool/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/cushion))
|
||||
to_chat(user,"<span class='notice'> You secure a cloth cushion to [src]...</span>")
|
||||
to_chat(user,span_notice(" You secure a cloth cushion to [src]..."))
|
||||
if(do_after(user, 30, target = src) && isturf(loc))
|
||||
new /obj/item/processed/wood/stoolcloth(loc)
|
||||
to_chat(user, "<span class='notice'> You add a cushion to [src].</span>")
|
||||
to_chat(user, span_notice(" You add a cushion to [src]."))
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to hold still to detail [src]!</span>")
|
||||
to_chat(user, span_warning("You need to hold still to detail [src]!"))
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/processed/wood/stool/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/cushion/silk))
|
||||
to_chat(user,"<span class='notice'> You secure a silk cushion to [src]...</span>")
|
||||
to_chat(user,span_notice(" You secure a silk cushion to [src]..."))
|
||||
if(do_after(user, 30, target = src) && isturf(loc))
|
||||
new /obj/item/processed/wood/stoolsilk(loc)
|
||||
to_chat(user, "<span class='notice'> You add a cushion to [src].</span>")
|
||||
to_chat(user, span_notice(" You add a cushion to [src]."))
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to hold still to detail [src]!</span>")
|
||||
to_chat(user, span_warning("You need to hold still to detail [src]!"))
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
M.mind.AddSpell(new T)
|
||||
else
|
||||
M.AddSpell(new T)
|
||||
message_admins("<span class='danger'>Spells given to mindless mobs will not be transferred in mindswap or cloning!</span>")
|
||||
message_admins(span_danger("Spells given to mindless mobs will not be transferred in mindswap or cloning!"))
|
||||
|
||||
/client/proc/teach_martial_art(mob/living/carbon/C)
|
||||
if (!istype(C))
|
||||
@@ -99,7 +99,7 @@
|
||||
var/datum/martial_art/MA = new chosenart
|
||||
MA.teach(C)
|
||||
log_admin("[key_name(usr)] has taught [MA] to [key_name(C)].")
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] has taught [MA] to [key_name_admin(C)].</span>")
|
||||
message_admins(span_notice("[key_name_admin(usr)] has taught [MA] to [key_name_admin(C)]."))
|
||||
|
||||
/client/proc/set_species(mob/living/carbon/human/H)
|
||||
if (istype(H))
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
|
||||
/datum/brain_trauma/induced_hypnosis/on_gain()
|
||||
log_game("[key_name(owner)] was hypnogoggled'.")
|
||||
to_chat(owner, "<span class='reallybig hypnophrase'>[hypnotic_phrase]</span>")
|
||||
to_chat(owner, span_reallybig_hypnophrase("[hypnotic_phrase]"))
|
||||
to_chat(owner, span_notice(pick("You feel your thoughts focusing on this phrase... you can't seem to get it out of your head.",
|
||||
"Your head hurts, but this is all you can think of. It must be vitally important.",
|
||||
"You feel a part of your mind repeating this over and over. You need to follow these words.",
|
||||
|
||||
@@ -15,6 +15,6 @@
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
if(src == C.wear_mask)
|
||||
to_chat(user, "<span class='warning'>The mask is fastened tight! You'll need help taking this off!</span>")
|
||||
to_chat(user, span_warning("The mask is fastened tight! You'll need help taking this off!"))
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
if(src == C.wear_mask)
|
||||
to_chat(user, "<span class='warning'>You need help taking this off!</span>")
|
||||
to_chat(user, span_warning("You need help taking this off!"))
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
return ..()
|
||||
|
||||
if(user.GetComponent(/datum/component/size_normalized))
|
||||
to_chat(user, "<span class='warning'>\The [src] buzzes, being overwritten by another accessory.</span>")
|
||||
to_chat(user, span_warning("\The [src] buzzes, being overwritten by another accessory."))
|
||||
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1)
|
||||
else
|
||||
user.AddComponent(/datum/component/size_normalized, wear=src)
|
||||
@@ -44,7 +44,7 @@
|
||||
return ..()
|
||||
|
||||
if(user.GetComponent(/datum/component/size_normalized))
|
||||
to_chat(user, "<span class='warning'>\The [src] buzzes, being overwritten by another accessory.</span>")
|
||||
to_chat(user, span_warning("\The [src] buzzes, being overwritten by another accessory."))
|
||||
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1)
|
||||
else
|
||||
user.AddComponent(/datum/component/size_normalized, wear=src)
|
||||
@@ -72,7 +72,7 @@
|
||||
return ..()
|
||||
|
||||
if(user.GetComponent(/datum/component/size_normalized))
|
||||
to_chat(user, "<span class='warning'>\The [src] buzzes, being overwritten by another accessory.</span>")
|
||||
to_chat(user, span_warning("\The [src] buzzes, being overwritten by another accessory."))
|
||||
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1)
|
||||
else
|
||||
user.AddComponent(/datum/component/size_normalized, wear=src)
|
||||
|
||||
@@ -157,9 +157,9 @@
|
||||
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
|
||||
sparks.set_up(1, 1, src)
|
||||
sparks.start()
|
||||
owner.visible_message("<span class='danger'>The tesla capacitors on [owner]'s Tesla Power Armor are still recharging! The armor merely emits some sparks.</span>")
|
||||
owner.visible_message(span_danger("The tesla capacitors on [owner]'s Tesla Power Armor are still recharging! The armor merely emits some sparks."))
|
||||
return
|
||||
owner.visible_message("<span class='danger'>[src] blocks [attack_text], sending out arcs of lightning!</span>")
|
||||
owner.visible_message(span_danger("[src] blocks [attack_text], sending out arcs of lightning!"))
|
||||
if(!legacy)
|
||||
tesla_zap(owner, tesla_range, tesla_power, tesla_flags)
|
||||
else
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
|
||||
if(prob(10))
|
||||
playsound(src, 'sound/effects/bang.ogg', 50, 1)
|
||||
audible_message("<span class='danger'>You hear a BONK!</span>")
|
||||
audible_message(span_danger("You hear a BONK!"))
|
||||
|
||||
if(clong && prob(25))
|
||||
x = clong.x
|
||||
@@ -179,7 +179,7 @@
|
||||
atmos_spawn_air("water_vapor=75;TEMP=0") //brr
|
||||
|
||||
/obj/effect/crystalline_reentry/proc/penetrate(mob/living/L)
|
||||
L.visible_message("<span class='danger'>[L] is smashed by a crystalline asteroid!</span>" , "<span class='userdanger'>The crystalline asteroid smashes you!</span>" , "<span class ='danger'>You hear a BONK!</span>")
|
||||
L.visible_message(span_danger("[L] is smashed by a crystalline asteroid!") , span_userdanger("The crystalline asteroid smashes you!") , "<span class ='danger'>You hear a BONK!</span>")
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
H.adjustBruteLoss(160)
|
||||
@@ -209,14 +209,14 @@
|
||||
switch(rand(1,100))
|
||||
if(1 to 30)
|
||||
var/obj/structure/spawner/crystalline/M = new(src.loc)
|
||||
visible_message("<span class='danger'>A [M] emerges from the asteroid's rubble!</span>")
|
||||
visible_message(span_danger("A [M] emerges from the asteroid's rubble!"))
|
||||
if(prob(50) && tendrilnotify)
|
||||
priority_announce("Unknown organic entities have been detected in the vincinity of [station_name()]. General caution is advised.", "General Alert")
|
||||
if(31 to 99)
|
||||
visible_message("The asteroid collapses into nothing...")
|
||||
if(100)
|
||||
var/mob/living/simple_animal/bot/hugbot/M = new(src.loc)
|
||||
visible_message("<span class='danger'>A [M] emerges from the asteroid's rubble! Wait... What?</span>")
|
||||
visible_message(span_danger("A [M] emerges from the asteroid's rubble! Wait... What?"))
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/crystalline_reentry/notendrilalert
|
||||
@@ -289,8 +289,8 @@
|
||||
/obj/effect/cloud_collapse/Initialize()
|
||||
. = ..()
|
||||
emitted_light = new(loc)
|
||||
visible_message("<span class='boldannounce'>The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!</span>")
|
||||
visible_message("<span class='warning'>Something falls free of the tendril!</span>")
|
||||
visible_message(span_boldannounce("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!"))
|
||||
visible_message(span_warning("Something falls free of the tendril!"))
|
||||
playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, 0, 50, 1, 1)
|
||||
addtimer(CALLBACK(src, .proc/collapse), 50)
|
||||
|
||||
@@ -302,7 +302,7 @@
|
||||
for(var/mob/M in range(7,src))
|
||||
shake_camera(M, 15, 1)
|
||||
playsound(get_turf(src),'sound/effects/explosionfar.ogg', 200, 1)
|
||||
visible_message("<span class='boldannounce'>The tendril falls into the clouds below!</span>")
|
||||
visible_message(span_boldannounce("The tendril falls into the clouds below!"))
|
||||
for(var/turf/T in range(1,src))
|
||||
if(!T.density)
|
||||
T.TerraformTurf(/turf/open/chasm/cloud, /turf/open/chasm/cloud)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
cheeseoverlay.icon_state = "cheesed_snout"
|
||||
else
|
||||
cheeseoverlay.icon_state = "cheesed_human"
|
||||
H.visible_message("<span class='warning'>[H] is cheesed by [src]!</span>", "<span class='userdanger'>You've been cheesed by [src]!</span>")
|
||||
H.visible_message(span_warning("[H] is cheesed by [src]!"), span_userdanger("You've been cheesed by [src]!"))
|
||||
playsound(H, 'modular_splurt/sound/effects/slap.ogg')
|
||||
if(!H.is_mouth_covered())
|
||||
reagents.trans_to(H, 15, log = "cheesed hit") //Cream pie combat
|
||||
|
||||
@@ -151,7 +151,7 @@ Peacekeeper Hypospray
|
||||
/obj/item/reagent_containers/peacehypo/attack(mob/living/carbon/M, mob/user)
|
||||
var/datum/reagents/R = reagent_list[mode]
|
||||
if(!R.total_volume)
|
||||
to_chat(user, "<span class='notice'>The injector is empty.</span>")
|
||||
to_chat(user, span_notice("The injector is empty."))
|
||||
return
|
||||
if(!istype(M))
|
||||
return
|
||||
@@ -160,15 +160,15 @@ Peacekeeper Hypospray
|
||||
for(var/datum/reagent/RG in R.reagent_list)
|
||||
if(M.reagents.has_reagent(RG.type) && !RG.overdose_threshold == 0)
|
||||
if(((M.reagents.get_reagent_amount(RG.type)) + amount_per_transfer_from_this > RG.overdose_threshold))
|
||||
to_chat(user, "<span class='warning'>Injecting [M] with more [RG] would overdose them.</span>")
|
||||
to_chat(user, span_warning("Injecting [M] with more [RG] would overdose them."))
|
||||
return
|
||||
to_chat(M, "<span class='warning'>You feel a tiny prick!</span>")
|
||||
to_chat(user, "<span class='notice'>You inject [M] with the injector.</span>")
|
||||
to_chat(M, span_warning("You feel a tiny prick!"))
|
||||
to_chat(user, span_notice("You inject [M] with the injector."))
|
||||
var/fraction = min(amount_per_transfer_from_this/R.total_volume, 1)
|
||||
R.reaction(M, INJECT, fraction)
|
||||
if(M.reagents)
|
||||
var/trans = R.trans_to(M, amount_per_transfer_from_this)
|
||||
to_chat(user, "<span class='notice'>[trans] unit\s injected. [R.total_volume] unit\s remaining.</span>")
|
||||
to_chat(user, span_notice("[trans] unit\s injected. [R.total_volume] unit\s remaining."))
|
||||
|
||||
var/list/injected = list()
|
||||
for(var/datum/reagent/RG in R.reagent_list)
|
||||
@@ -182,7 +182,7 @@ Peacekeeper Hypospray
|
||||
mode = chosen_reagent
|
||||
playsound(loc, 'sound/effects/pop.ogg', 50, 0)
|
||||
var/datum/reagent/R = GLOB.chemical_reagents_list[reagent_ids[mode]]
|
||||
to_chat(user, "<span class='notice'>[src] is now dispensing '[R.name]'.</span>")
|
||||
to_chat(user, span_notice("[src] is now dispensing '[R.name]'."))
|
||||
return
|
||||
|
||||
/obj/item/reagent_containers/peacehypo/examine(mob/user)
|
||||
@@ -195,11 +195,11 @@ Peacekeeper Hypospray
|
||||
for(var/datum/reagents/RS in reagent_list)
|
||||
var/datum/reagent/R = locate() in RS.reagent_list
|
||||
if(R)
|
||||
. += "<span class='notice'>It currently has [R.volume] unit\s of [R.name] stored.</span>"
|
||||
. += span_notice("It currently has [R.volume] unit\s of [R.name] stored.")
|
||||
empty = 0
|
||||
|
||||
if(empty)
|
||||
. += "<span class='warning'>It is currently empty! Allow some time for the internal syntheszier to produce more.</span>"
|
||||
. += span_warning("It is currently empty! Allow some time for the internal syntheszier to produce more.")
|
||||
|
||||
/* End Peacekeeper Hypo
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/mob/dead/check_out(atom/A)
|
||||
if (!CONFIG_GET(flag/ghost_interaction))
|
||||
to_chat(usr, "<span class='notice'>You cannot check out people when dead!</span>")
|
||||
to_chat(usr, span_notice("You cannot check out people when dead!"))
|
||||
return
|
||||
. = ..()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
var/obj/item/restraints/bondage_rope/rope = I
|
||||
cuff_break = rope.prepare_resist(src)
|
||||
if(cuff_break == -1)
|
||||
to_chat(src, "<span class='danger'>You are not able to reach the rope.</span>")
|
||||
to_chat(src, span_danger("You are not able to reach the rope."))
|
||||
return
|
||||
. = ..()
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
if(istype(I, /obj/item/restraints/bondage_rope))
|
||||
var/obj/item/restraints/bondage_rope/rope = I
|
||||
if(LAZYLEN(rope.rope_stack) > 1)
|
||||
visible_message("<span class='danger'>[src] manages to loosen up their rope!</span>")
|
||||
to_chat(src, "<span class='notice'>You successfully loosen up your rope.</span>")
|
||||
visible_message(span_danger("[src] manages to loosen up their rope!"))
|
||||
to_chat(src, span_notice("You successfully loosen up your rope."))
|
||||
|
||||
var/obj/item/restraints/bondage_rope/new_rope = new rope.type()
|
||||
new_rope.color = pop(rope.rope_stack)
|
||||
@@ -55,7 +55,7 @@
|
||||
// When successfully disrobing a target
|
||||
if(user_disrobed)
|
||||
// Display a chat message
|
||||
target_user.visible_message("<span class='userlove'>[target_user] suddenly bursts out of [target_user.p_their()] clothes!</span>", "<span class='userlove'>You suddenly burst out of your clothes!</span>")
|
||||
target_user.visible_message(span_userlove("[target_user] suddenly bursts out of [target_user.p_their()] clothes!"), span_userlove("You suddenly burst out of your clothes!"))
|
||||
|
||||
// Play the ripped poster sound
|
||||
playsound(target_user.loc, 'sound/items/poster_ripped.ogg', 50, 1)
|
||||
|
||||
@@ -53,13 +53,13 @@
|
||||
if(!Proj)
|
||||
return
|
||||
if(prob(10))
|
||||
visible_message("<span class='danger'>\The [src] growls, enraged!</span>")
|
||||
visible_message(span_danger("\The [src] growls, enraged!"))
|
||||
sleep(3)
|
||||
Charge()
|
||||
if(prob(85) || Proj.damage > 26) //prob(x) = chance for proj to actually do something, adjust depending on how OP you want deathclaws to be
|
||||
return ..()
|
||||
else
|
||||
visible_message("<span class='danger'>\The [Proj] bounces off \the [src]'s thick hide!</span>")
|
||||
visible_message(span_danger("\The [Proj] bounces off \the [src]'s thick hide!"))
|
||||
return 0
|
||||
|
||||
/mob/living/simple_animal/hostile/deathclaw/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect)
|
||||
@@ -90,7 +90,7 @@
|
||||
if(!T || T == loc)
|
||||
return
|
||||
charging = TRUE
|
||||
visible_message("<span class='danger'>[src] charges!</span>")
|
||||
visible_message(span_danger("[src] charges!"))
|
||||
DestroySurroundings()
|
||||
walk(src, 0)
|
||||
setDir(get_dir(src, T))
|
||||
@@ -117,7 +117,7 @@
|
||||
|
||||
else if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
L.visible_message("<span class='danger'>[src] slams into [L]!</span>", "<span class='userdanger'>[src] slams into you!</span>")
|
||||
L.visible_message(span_danger("[src] slams into [L]!"), span_userdanger("[src] slams into you!"))
|
||||
L.apply_damage(melee_damage_lower/2, BRUTE)
|
||||
playsound(get_turf(L), 'sound/effects/meteorimpact.ogg', 100, 1)
|
||||
shake_camera(L, 4, 3)
|
||||
|
||||
@@ -46,8 +46,8 @@
|
||||
|
||||
start_pulling(M, supress_message = TRUE)
|
||||
log_combat(src, M, "grabbed")
|
||||
M.visible_message("<span class='warning'>[src] violently grabs [M]!</span>", \
|
||||
"<span class='userdanger'>[src] violently grabs you!</span>")
|
||||
M.visible_message(span_warning("[src] violently grabs [M]!"), \
|
||||
span_userdanger("[src] violently grabs you!"))
|
||||
setGrabState(GRAB_NECK) //Instant neck grab
|
||||
|
||||
return
|
||||
@@ -191,15 +191,15 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/deathclaw/funclaw/proc/slap(mob/living/M)
|
||||
playsound(loc, "modular_sand/sound/interactions/slap.ogg", 30, 1, -1)
|
||||
visible_message("<span class='danger'>\The [src]</b> slaps \the [M] right on the ass!</span>", \
|
||||
"<span class='userdanger'>\The [src]</b> slaps \the [M] right on the ass!</span>", null, COMBAT_MESSAGE_RANGE)
|
||||
visible_message(span_danger("\The [src]</b> slaps \the [M] right on the ass!"), \
|
||||
span_userdanger("\The [src]</b> slaps \the [M] right on the ass!"), null, COMBAT_MESSAGE_RANGE)
|
||||
|
||||
/mob/living/simple_animal/hostile/deathclaw/funclaw/proc/tearSlot(mob/living/M, slot)
|
||||
var/obj/item/W = M.get_item_by_slot(slot)
|
||||
if(W)
|
||||
M.dropItemToGround(W)
|
||||
playsound(loc, "sound/items/poster_ripped.ogg", 30, 1, -1)
|
||||
visible_message("<span class='danger'>\The [src]</b> tears off \the [M]'s clothes!</span>", \
|
||||
"<span class='userdanger'>\The [src]</b> tears off \the [M]'s clothes!</span>", null, COMBAT_MESSAGE_RANGE)
|
||||
visible_message(span_danger("\The [src]</b> tears off \the [M]'s clothes!"), \
|
||||
span_userdanger("\The [src]</b> tears off \the [M]'s clothes!"), null, COMBAT_MESSAGE_RANGE)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/species/althelp(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style)
|
||||
if(user == target && istype(user))
|
||||
if(HAS_TRAIT(user, TRAIT_FLOORED))
|
||||
to_chat(user, "<span class='warning'>You can't seem to force yourself up right now!</span>")
|
||||
to_chat(user, span_warning("You can't seem to force yourself up right now!"))
|
||||
return
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -13,23 +13,23 @@
|
||||
if(H.stat == "DEAD")
|
||||
return
|
||||
if(web_ready == FALSE)
|
||||
to_chat(H, "<span class='warning'>You need to wait a while to regenerate web fluid.</span>")
|
||||
to_chat(H, span_warning("You need to wait a while to regenerate web fluid."))
|
||||
return
|
||||
var/turf/T = get_turf(H)
|
||||
if(!T)
|
||||
to_chat(H, "<span class='warning'>There's no room to spin your web here!</span>")
|
||||
to_chat(H, span_warning("There's no room to spin your web here!"))
|
||||
return
|
||||
var/obj/structure/spider/stickyweb/W = locate() in T
|
||||
var/obj/structure/arachnid/W2 = locate() in T
|
||||
if(W || W2)
|
||||
to_chat(H, "<span class='warning'>There's already a web here!</span>")
|
||||
to_chat(H, span_warning("There's already a web here!"))
|
||||
return
|
||||
// Should have some minimum amount of food before trying to activate
|
||||
var/nutrition_threshold = NUTRITION_LEVEL_FED
|
||||
if (H.nutrition >= nutrition_threshold)
|
||||
to_chat(H, "<i>You begin spinning some web...</i>")
|
||||
if(!do_after(H, 10 SECONDS, 1, T))
|
||||
to_chat(H, "<span class='warning'>Your web spinning was interrupted!</span>")
|
||||
to_chat(H, span_warning("Your web spinning was interrupted!"))
|
||||
return
|
||||
H.adjust_nutrition(-spinner_rate)
|
||||
addtimer(VARSET_CALLBACK(src, web_ready, TRUE), web_cooldown)
|
||||
@@ -37,7 +37,7 @@
|
||||
new /obj/structure/arachnid(T, owner)
|
||||
|
||||
else
|
||||
to_chat(H, "<span class='warning'>You're too hungry to spin web right now, eat something first!</span>")
|
||||
to_chat(H, span_warning("You're too hungry to spin web right now, eat something first!"))
|
||||
return
|
||||
|
||||
/datum/action/innate/spin_cocoon/Activate()
|
||||
@@ -45,17 +45,17 @@
|
||||
if(H.stat == "DEAD")
|
||||
return
|
||||
if(web_ready == FALSE)
|
||||
to_chat(H, "<span class='warning'>You need to wait awhile to regenerate web fluid.</span>")
|
||||
to_chat(H, span_warning("You need to wait awhile to regenerate web fluid."))
|
||||
return
|
||||
var/nutrition_threshold = NUTRITION_LEVEL_FED
|
||||
if (H.nutrition >= nutrition_threshold)
|
||||
to_chat(H, "<span class='warning'>You pull out a strand from your spinneret, ready to wrap a target. (Press ALT+CLICK on the target to start wrapping.)</span>")
|
||||
to_chat(H, span_warning("You pull out a strand from your spinneret, ready to wrap a target. (Press ALT+CLICK on the target to start wrapping.)"))
|
||||
H.adjust_nutrition(spinner_rate * -0.5)
|
||||
addtimer(VARSET_CALLBACK(src, web_ready, TRUE), web_cooldown)
|
||||
RegisterSignal(H, list(COMSIG_MOB_ALTCLICKON), .proc/cocoonAtom)
|
||||
return
|
||||
else
|
||||
to_chat(H, "<span class='warning'>You're too hungry to spin web right now, eat something first!</span>")
|
||||
to_chat(H, span_warning("You're too hungry to spin web right now, eat something first!"))
|
||||
return
|
||||
|
||||
/datum/action/innate/spin_cocoon/cocoonAtom(mob/living/carbon/human/H, atom/movable/A)
|
||||
@@ -64,39 +64,39 @@
|
||||
return COMSIG_MOB_CANCEL_CLICKON
|
||||
else
|
||||
if(web_ready == FALSE)
|
||||
to_chat(H, "<span class='warning'>You need to wait awhile to regenerate web fluid.</span>")
|
||||
to_chat(H, span_warning("You need to wait awhile to regenerate web fluid."))
|
||||
return
|
||||
if(!H.Adjacent(A)) //No.
|
||||
return
|
||||
if(!isliving(A) && A.anchored)
|
||||
to_chat(H, "<span class='warning'>[A] is bolted to the floor!</span>")
|
||||
to_chat(H, span_warning("[A] is bolted to the floor!"))
|
||||
return
|
||||
if(istype(A, /obj/structure/arachnid))
|
||||
to_chat(H, "<span class='warning'>No double wrapping.</span>")
|
||||
to_chat(H, span_warning("No double wrapping."))
|
||||
return
|
||||
if(istype(A, /obj/effect))
|
||||
to_chat(H, "<span class='warning'>You cannot wrap this.</span>")
|
||||
to_chat(H, span_warning("You cannot wrap this."))
|
||||
return
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
if(L.key)
|
||||
to_chat(H, "<span class='warning'>You prepare to wrap [L] in a cocoon...</span>")
|
||||
to_chat(H, span_warning("You prepare to wrap [L] in a cocoon..."))
|
||||
var/response = alert(L, "Do you wish to be wrapped in a cocoon?", "Cocooning", "No", "Yes")
|
||||
if(response == "No")
|
||||
to_chat(H, "<span class='warning'>[L] resists your attempts to wrap [L.p_them()]!</span>")
|
||||
to_chat(H, span_warning("[L] resists your attempts to wrap [L.p_them()]!"))
|
||||
return
|
||||
H.visible_message("<span class='danger'>[H] starts to wrap [A] into a cocoon!</span>","<span class='warning'>You start to wrap [A] into a cocoon.</span>")
|
||||
H.visible_message(span_danger("[H] starts to wrap [A] into a cocoon!"),span_warning("You start to wrap [A] into a cocoon."))
|
||||
if(!do_after(H, 10 SECONDS, 1, A))
|
||||
to_chat(H, "<span class='warning'>Your web spinning was interrupted!</span>")
|
||||
to_chat(H, span_warning("Your web spinning was interrupted!"))
|
||||
return
|
||||
H.adjust_nutrition(spinner_rate * -3)
|
||||
var/obj/structure/arachnid/cocoon/C = new(A.loc)
|
||||
if(isliving(A))
|
||||
C.icon_state = pick("cocoon_large1","cocoon_large2","cocoon_large3")
|
||||
A.forceMove(C)
|
||||
H.visible_message("<span class='danger'>[H] wraps [A] into a large cocoon!</span>")
|
||||
H.visible_message(span_danger("[H] wraps [A] into a large cocoon!"))
|
||||
return
|
||||
else
|
||||
A.forceMove(C)
|
||||
H.visible_message("<span class='danger'>[H] wraps [A] into a cocoon!</span>")
|
||||
H.visible_message(span_danger("[H] wraps [A] into a cocoon!"))
|
||||
return
|
||||
|
||||
@@ -177,10 +177,10 @@
|
||||
desc = "A rotting mass of twisted viscera."
|
||||
organ_flags = ORGAN_EXTERNAL
|
||||
|
||||
low_threshold_passed = "<span class='info'>Something forgotten weakens within your chest.</span>"
|
||||
high_threshold_passed = "<span class='warning'>A chill of death stalks you.</span>"
|
||||
now_fixed = "<span class='cult'>It comforts you once more.</span>"
|
||||
high_threshold_cleared = "<span class='info'>The ghastly cold crawls back.</span>"
|
||||
low_threshold_passed = span_info("Something forgotten weakens within your chest.")
|
||||
high_threshold_passed = span_warning("A chill of death stalks you.")
|
||||
now_fixed = span_cult("It comforts you once more.")
|
||||
high_threshold_cleared = span_info("The ghastly cold crawls back.")
|
||||
|
||||
beating = FALSE
|
||||
var/reviving = FALSE
|
||||
@@ -224,7 +224,7 @@
|
||||
if(owner.health >= HEALTH_THRESHOLD_FULLCRIT)
|
||||
owner.revive()
|
||||
if(owner.stat == !DEAD) // incase any weird shit where they can't revive
|
||||
owner.visible_message("<span class='danger'>[owner] suddenly convulses back to life!</span>")
|
||||
owner.visible_message(span_danger("[owner] suddenly convulses back to life!"))
|
||||
owner.update_stat()
|
||||
owner.update_health_hud()
|
||||
if(owner.blood_volume <= BLOOD_VOLUME_SURVIVE)
|
||||
@@ -232,7 +232,7 @@
|
||||
return
|
||||
if(owner?.health <= HEALTH_THRESHOLD_DEAD && owner?.blood_volume >= BLOOD_VOLUME_SURVIVE)
|
||||
reviving = TRUE
|
||||
to_chat(owner, "<span class='alertwarning'>Your broken shell is stitching itself back together...</span>")
|
||||
to_chat(owner, span_alertwarning("Your broken shell is stitching itself back together..."))
|
||||
|
||||
/obj/item/organ/undead_infection
|
||||
name = "festering ooze"
|
||||
@@ -289,7 +289,7 @@
|
||||
if (causes_damage && !iszombie(owner) && owner.stat != DEAD)
|
||||
owner.adjustToxLoss(1)
|
||||
if (prob(10))
|
||||
to_chat(owner, "<span class='danger'>You feel sick...</span>")
|
||||
to_chat(owner, span_danger("You feel sick..."))
|
||||
if(timer_id)
|
||||
return
|
||||
if(owner.suiciding)
|
||||
@@ -335,12 +335,12 @@
|
||||
return
|
||||
|
||||
owner.grab_ghost()
|
||||
owner.visible_message("<span class='danger'>[owner] suddenly convulses, as [owner.p_they()][stand_up ? " stagger to [owner.p_their()] feet and" : ""] gain a ravenous hunger in [owner.p_their()] eyes!</span>", "<span class='cultlarge'>* But it refused</span>")
|
||||
owner.visible_message(span_danger("[owner] suddenly convulses, as [owner.p_they()][stand_up ? " stagger to [owner.p_their()] feet and" : ""] gain a ravenous hunger in [owner.p_their()] eyes!"), span_cultlarge("* But it refused"))
|
||||
playsound(owner.loc, 'sound/hallucinations/far_noise.ogg', 50, 1)
|
||||
owner.do_jitter_animation(living_transformation_time)
|
||||
owner.Stun(living_transformation_time)
|
||||
// to_chat(owner, "<span class='alertalien'>You are now a zombie! You claw and bite, turning your fellow crewmembers into friends that help spread the plague.</span>")
|
||||
// to_chat(owner, "<span class='alertwarning'>You are a zombie. Please act like one. Letting the crew remove the tumor inside your brain is a dick move to whoever infected you. Please do not do it.</span>")
|
||||
// to_chat(owner, span_alertalien("You are now a zombie! You claw and bite, turning your fellow crewmembers into friends that help spread the plague."))
|
||||
// to_chat(owner, span_alertwarning("You are a zombie. Please act like one. Letting the crew remove the tumor inside your brain is a dick move to whoever infected you. Please do not do it."))
|
||||
|
||||
/obj/item/organ/undead_infection/mammal
|
||||
old_species = /datum/species/mammal
|
||||
@@ -381,7 +381,7 @@
|
||||
infection = new()
|
||||
infection.Insert(H)
|
||||
|
||||
to_chat(H, "<span class='cult'>mors tua, vita mea.</span>")
|
||||
to_chat(H, span_cult("mors tua, vita mea."))
|
||||
H.playsound_local(H, 'sound/effects/singlebeat.ogg', 100, 0)
|
||||
return
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
// There's probably better way to do this but I am terrible at it --Nopeman
|
||||
/mob/living/proc/change_gender()
|
||||
if(stat != CONSCIOUS)
|
||||
to_chat(usr, "<span class='warning'>You cannot toggle your gender while unconcious!</span>")
|
||||
to_chat(usr, span_warning("You cannot toggle your gender while unconcious!"))
|
||||
return
|
||||
|
||||
var/choice = tgui_alert(usr, "Select Gender.", "Gender", list("Both", "Male", "Female", "None", "Toggle Breasts"))
|
||||
@@ -40,7 +40,7 @@
|
||||
SetStun(0, ignore_canstun = TRUE)
|
||||
|
||||
if(client && admin)
|
||||
to_chat(src, "<span class='userdanger'>An admin has [!admin_frozen ? "un" : ""]frozen you.</span>")
|
||||
to_chat(src, span_userdanger("An admin has [!admin_frozen ? "un" : ""]frozen you."))
|
||||
log_admin("[key_name(admin)] toggled admin-freeze on [key_name(src)].")
|
||||
message_admins("[key_name_admin(admin)] toggled admin-freeze on [key_name_admin(src)].")
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
SetSleeping(0, ignore_canstun = TRUE)
|
||||
|
||||
if(client && admin)
|
||||
to_chat(src, "<span class='userdanger'>An admin has [!admin_sleeping ? "un": ""]slept you.</span>")
|
||||
to_chat(src, span_userdanger("An admin has [!admin_sleeping ? "un": ""]slept you."))
|
||||
log_admin("[key_name(admin)] toggled admin-sleep on [key_name(src)].")
|
||||
message_admins("[key_name_admin(admin)] toggled admin-sleep on [key_name_admin(src)].")
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
force = 12
|
||||
attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced")
|
||||
status = 1
|
||||
to_chat(user, "<span class='notice'>Your jaws are now [status ? "Combat" : "Pup'd"].</span>")
|
||||
to_chat(user, span_notice("Your jaws are now [status ? "Combat" : "Pup'd"]."))
|
||||
else
|
||||
name = "puppy jaws"
|
||||
icon_state = "smalljaws"
|
||||
@@ -52,7 +52,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
|
||||
status = 0
|
||||
if(R.emagged)
|
||||
to_chat(user, "<span class='notice'>Your jaws are now [status ? "Combat" : "Pup'd"].</span>")
|
||||
to_chat(user, span_notice("Your jaws are now [status ? "Combat" : "Pup'd"]."))
|
||||
update_icon()
|
||||
|
||||
//Boop
|
||||
@@ -69,7 +69,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
w_class = 1
|
||||
|
||||
/obj/item/analyzer/nose/attack_self(mob/user)
|
||||
user.visible_message("[user] sniffs around the air.", "<span class='warning'>You sniff the air for gas traces.</span>")
|
||||
user.visible_message("[user] sniffs around the air.", span_warning("You sniff the air for gas traces."))
|
||||
|
||||
var/turf/location = user.loc
|
||||
if(!istype(location))
|
||||
@@ -80,11 +80,11 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
var/pressure = environment.return_pressure()
|
||||
var/total_moles = environment.total_moles()
|
||||
|
||||
to_chat(user, "<span class='info'><B>Results:</B></span>")
|
||||
to_chat(user, span_info("<B>Results:</B>"))
|
||||
if(abs(pressure - ONE_ATMOSPHERE) < 10)
|
||||
to_chat(user, "<span class='info'>Pressure: [round(pressure,0.1)] kPa</span>")
|
||||
to_chat(user, span_info("Pressure: [round(pressure,0.1)] kPa"))
|
||||
else
|
||||
to_chat(user, "<span class='alert'>Pressure: [round(pressure,0.1)] kPa</span>")
|
||||
to_chat(user, span_alert("Pressure: [round(pressure,0.1)] kPa"))
|
||||
if(total_moles)
|
||||
var/list/env_gases = environment.get_gases()
|
||||
|
||||
@@ -95,39 +95,39 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
GAS_GARBAGE_COLLECT(environment.get_gases())
|
||||
|
||||
if(abs(n2_concentration - N2STANDARD) < 20)
|
||||
to_chat(user, "<span class='info'>Nitrogen: [round(n2_concentration*100, 0.01)] %</span>")
|
||||
to_chat(user, span_info("Nitrogen: [round(n2_concentration*100, 0.01)] %"))
|
||||
else
|
||||
to_chat(user, "<span class='alert'>Nitrogen: [round(n2_concentration*100, 0.01)] %</span>")
|
||||
to_chat(user, span_alert("Nitrogen: [round(n2_concentration*100, 0.01)] %"))
|
||||
|
||||
if(abs(o2_concentration - O2STANDARD) < 2)
|
||||
to_chat(user, "<span class='info'>Oxygen: [round(o2_concentration*100, 0.01)] %</span>")
|
||||
to_chat(user, span_info("Oxygen: [round(o2_concentration*100, 0.01)] %"))
|
||||
else
|
||||
to_chat(user, "<span class='alert'>Oxygen: [round(o2_concentration*100, 0.01)] %</span>")
|
||||
to_chat(user, span_alert("Oxygen: [round(o2_concentration*100, 0.01)] %"))
|
||||
|
||||
if(co2_concentration > 0.01)
|
||||
to_chat(user, "<span class='alert'>CO2: [round(co2_concentration*100, 0.01)] %</span>")
|
||||
to_chat(user, span_alert("CO2: [round(co2_concentration*100, 0.01)] %"))
|
||||
else
|
||||
to_chat(user, "<span class='info'>CO2: [round(co2_concentration*100, 0.01)] %</span>")
|
||||
to_chat(user, span_info("CO2: [round(co2_concentration*100, 0.01)] %"))
|
||||
|
||||
if(plasma_concentration > 0.005)
|
||||
to_chat(user, "<span class='alert'>Plasma: [round(plasma_concentration*100, 0.01)] %</span>")
|
||||
to_chat(user, span_alert("Plasma: [round(plasma_concentration*100, 0.01)] %"))
|
||||
else
|
||||
to_chat(user, "<span class='info'>Plasma: [round(plasma_concentration*100, 0.01)] %</span>")
|
||||
to_chat(user, span_info("Plasma: [round(plasma_concentration*100, 0.01)] %"))
|
||||
|
||||
|
||||
for(var/id in env_gases)
|
||||
if(id in GLOB.hardcoded_gases)
|
||||
continue
|
||||
var/gas_concentration = env_gases[id]/total_moles
|
||||
to_chat(user, "<span class='alert'>[GLOB.gas_data.names[id]]: [round(gas_concentration*100, 0.01)] %</span>")
|
||||
to_chat(user, "<span class='info'>Temperature: [round(environment.return_temperature()-T0C)] °C</span>")
|
||||
to_chat(user, span_alert("[GLOB.gas_data.names[id]]: [round(gas_concentration*100, 0.01)] %"))
|
||||
to_chat(user, span_info("Temperature: [round(environment.return_temperature()-T0C)] °C"))
|
||||
|
||||
/obj/item/analyzer/nose/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
do_attack_animation(target, null, src)
|
||||
user.visible_message("<span class='notice'>[user] [pick(attack_verb)] \the [target.name] with their nose!</span>")
|
||||
user.visible_message(span_notice("[user] [pick(attack_verb)] \the [target.name] with their nose!"))
|
||||
|
||||
//Delivery
|
||||
/obj/item/storage/bag/borgdelivery
|
||||
@@ -170,7 +170,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
name = "energized tongue"
|
||||
desc = "Your tongue is energized for dangerously maximum efficency."
|
||||
icon_state = "syndietongue"
|
||||
to_chat(user, "<span class='notice'>Your tongue is now [status ? "Energized" : "Normal"].</span>")
|
||||
to_chat(user, span_notice("Your tongue is now [status ? "Energized" : "Normal"]."))
|
||||
cleanspeed = 10 //(nerf'd)tator soap stat
|
||||
else
|
||||
status = 0
|
||||
@@ -179,7 +179,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
icon_state = "synthtongue"
|
||||
cleanspeed = initial(cleanspeed)
|
||||
if(R.emagged)
|
||||
to_chat(user, "<span class='notice'>Your tongue is now [status ? "Energized" : "Normal"].</span>")
|
||||
to_chat(user, span_notice("Your tongue is now [status ? "Energized" : "Normal"]."))
|
||||
update_icon()
|
||||
|
||||
/obj/item/soap/tongue/afterattack(atom/target, mob/user, proximity)
|
||||
@@ -187,54 +187,54 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
if(!proximity || !check_allowed_items(target))
|
||||
return
|
||||
if(R.client && (target in R.client.screen))
|
||||
to_chat(R, "<span class='warning'>You need to take that [target.name] off before cleaning it!</span>")
|
||||
to_chat(R, span_warning("You need to take that [target.name] off before cleaning it!"))
|
||||
else if(is_cleanable(target))
|
||||
R.visible_message("[R] begins to lick off \the [target.name].", "<span class='warning'>You begin to lick off \the [target.name]...</span>")
|
||||
R.visible_message("[R] begins to lick off \the [target.name].", span_warning("You begin to lick off \the [target.name]..."))
|
||||
if(do_after(R, src.cleanspeed, target = target))
|
||||
if(!in_range(src, target)) //Proximity is probably old news by now, do a new check.
|
||||
return //If they moved away, you can't eat them.
|
||||
to_chat(R, "<span class='notice'>You finish licking off \the [target.name].</span>")
|
||||
to_chat(R, span_notice("You finish licking off \the [target.name]."))
|
||||
qdel(target)
|
||||
R.cell.give(50)
|
||||
else if(isobj(target)) //hoo boy. danger zone man
|
||||
if(istype(target,/obj/item/trash))
|
||||
R.visible_message("[R] nibbles away at \the [target.name].", "<span class='warning'>You begin to nibble away at \the [target.name]...</span>")
|
||||
R.visible_message("[R] nibbles away at \the [target.name].", span_warning("You begin to nibble away at \the [target.name]..."))
|
||||
if(!do_after(R, src.cleanspeed, target = target))
|
||||
return //If they moved away, you can't eat them.
|
||||
to_chat(R, "<span class='notice'>You finish off \the [target.name].</span>")
|
||||
to_chat(R, span_notice("You finish off \the [target.name]."))
|
||||
qdel(target)
|
||||
R.cell.give(250)
|
||||
return
|
||||
if(istype(target,/obj/item/stock_parts/cell))
|
||||
R.visible_message("[R] begins cramming \the [target.name] down its throat.", "<span class='warning'>You begin cramming \the [target.name] down your throat...</span>")
|
||||
R.visible_message("[R] begins cramming \the [target.name] down its throat.", span_warning("You begin cramming \the [target.name] down your throat..."))
|
||||
if(!do_after(R, 50, target = target))
|
||||
return //If they moved away, you can't eat them.
|
||||
to_chat(R, "<span class='notice'>You finish off \the [target.name].</span>")
|
||||
to_chat(R, span_notice("You finish off \the [target.name]."))
|
||||
var/obj/item/stock_parts/cell/C = target
|
||||
R.cell.charge = R.cell.charge + (C.charge / 3) //Instant full cell upgrades op idgaf
|
||||
qdel(target)
|
||||
return
|
||||
var/obj/item/I = target //HAHA FUCK IT, NOT LIKE WE ALREADY HAVE A SHITTON OF WAYS TO REMOVE SHIT
|
||||
if(!I.anchored && R.emagged)
|
||||
R.visible_message("[R] begins chewing up \the [target.name]. Looks like it's trying to loophole around its diet restriction!", "<span class='warning'>You begin chewing up \the [target.name]...</span>")
|
||||
R.visible_message("[R] begins chewing up \the [target.name]. Looks like it's trying to loophole around its diet restriction!", span_warning("You begin chewing up \the [target.name]..."))
|
||||
if(!do_after(R, 100, target = I)) //Nerf dat time yo
|
||||
return //If they moved away, you can't eat them.
|
||||
visible_message("<span class='warning'>[R] chews up \the [target.name] and cleans off the debris!</span>")
|
||||
to_chat(R, "<span class='notice'>You finish off \the [target.name].</span>")
|
||||
visible_message(span_warning("[R] chews up \the [target.name] and cleans off the debris!"))
|
||||
to_chat(R, span_notice("You finish off \the [target.name]."))
|
||||
qdel(I)
|
||||
R.cell.give(500)
|
||||
return
|
||||
R.visible_message("[R] begins to lick \the [target.name] clean...", "<span class='notice'>You begin to lick \the [target.name] clean...</span>")
|
||||
R.visible_message("[R] begins to lick \the [target.name] clean...", span_notice("You begin to lick \the [target.name] clean..."))
|
||||
else if(ishuman(target))
|
||||
var/mob/living/L = target
|
||||
if(status == 0 && check_zone(R.zone_selected) == "head")
|
||||
R.visible_message("<span class='warning'>\the [R] affectionally licks \the [L]'s face!</span>", "<span class='notice'>You affectionally lick \the [L]'s face!</span>")
|
||||
R.visible_message(span_warning("\the [R] affectionally licks \the [L]'s face!"), span_notice("You affectionally lick \the [L]'s face!"))
|
||||
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
|
||||
if(istype(L) && L.fire_stacks > 0)
|
||||
L.adjust_fire_stacks(-10)
|
||||
return
|
||||
else if(status == 0)
|
||||
R.visible_message("<span class='warning'>\the [R] affectionally licks \the [L]!</span>", "<span class='notice'>You affectionally lick \the [L]!</span>")
|
||||
R.visible_message(span_warning("\the [R] affectionally licks \the [L]!"), span_notice("You affectionally lick \the [L]!"))
|
||||
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
|
||||
if(istype(L) && L.fire_stacks > 0)
|
||||
L.adjust_fire_stacks(-10)
|
||||
@@ -246,22 +246,22 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
L.Stun(4) // normal stunbaton is force 7 gimme a break good sir!
|
||||
L.Knockdown(80)
|
||||
L.apply_effect(EFFECT_STUTTER, 4)
|
||||
L.visible_message("<span class='danger'>[R] has shocked [L] with its tongue!</span>", \
|
||||
"<span class='userdanger'>[R] has shocked you with its tongue!</span>")
|
||||
L.visible_message(span_danger("[R] has shocked [L] with its tongue!"), \
|
||||
span_userdanger("[R] has shocked you with its tongue!"))
|
||||
playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1)
|
||||
R.cell.use(666)
|
||||
log_combat(R, L, "tongue stunned")
|
||||
|
||||
else if(istype(target, /obj/structure/window))
|
||||
R.visible_message("[R] begins to lick \the [target.name] clean...", "<span class='notice'>You begin to lick \the [target.name] clean...</span>")
|
||||
R.visible_message("[R] begins to lick \the [target.name] clean...", span_notice("You begin to lick \the [target.name] clean..."))
|
||||
if(do_after(user, src.cleanspeed, target = target))
|
||||
to_chat(user, "<span class='notice'>You clean \the [target.name].</span>")
|
||||
to_chat(user, span_notice("You clean \the [target.name]."))
|
||||
target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
|
||||
target.set_opacity(initial(target.opacity))
|
||||
else
|
||||
R.visible_message("[R] begins to lick \the [target.name] clean...", "<span class='notice'>You begin to lick \the [target.name] clean...</span>")
|
||||
R.visible_message("[R] begins to lick \the [target.name] clean...", span_notice("You begin to lick \the [target.name] clean..."))
|
||||
if(do_after(user, src.cleanspeed, target = target))
|
||||
to_chat(user, "<span class='notice'>You clean \the [target.name].</span>")
|
||||
to_chat(user, span_notice("You clean \the [target.name]."))
|
||||
var/obj/effect/decal/cleanable/C = locate() in target
|
||||
qdel(C)
|
||||
target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
|
||||
@@ -323,19 +323,19 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
spawn(R.pounce_cooldown_time)
|
||||
R.pounce_cooldown = !R.pounce_cooldown
|
||||
else if(R && R.pounce_cooldown)
|
||||
to_chat(R, "<span class='danger'>Your leg actuators are still recharging!</span>")
|
||||
to_chat(R, span_danger("Your leg actuators are still recharging!"))
|
||||
|
||||
/mob/living/silicon/robot/proc/leap_at(atom/A)
|
||||
if(leaping || stat || buckled || lying)
|
||||
return
|
||||
|
||||
if(!has_gravity(src) || !has_gravity(A))
|
||||
to_chat(src,"<span class='danger'>It is unsafe to leap without gravity!</span>")
|
||||
to_chat(src,span_danger("It is unsafe to leap without gravity!"))
|
||||
//It's also extremely buggy visually, so it's balance+bugfix
|
||||
return
|
||||
|
||||
if(cell.charge <= 750)
|
||||
to_chat(src,"<span class='danger'>Insufficent reserves for jump actuators!</span>")
|
||||
to_chat(src,span_danger("Insufficent reserves for jump actuators!"))
|
||||
return
|
||||
|
||||
else
|
||||
@@ -408,12 +408,12 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
//start processing the regents in the container - and slowly use em up to create power
|
||||
toggle_process_regents = !toggle_process_regents
|
||||
if (toggle_process_regents)
|
||||
to_chat(user, "<span class='notice'>You start churning the sexual fluids from your [inserted_item.name] into energy.</span>")
|
||||
to_chat(user, span_notice("You start churning the sexual fluids from your [inserted_item.name] into energy."))
|
||||
borg_self = user
|
||||
START_PROCESSING(SSobj, src)
|
||||
else
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
to_chat(user, "<span class='notice'>You stop processing the fluids from the [inserted_item.name].</span>")
|
||||
to_chat(user, span_notice("You stop processing the fluids from the [inserted_item.name]."))
|
||||
return
|
||||
|
||||
/obj/item/milking_machine/pleasuremaw/process()
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
/mob/living/simple_animal/mouse/boommouse/death(gibbed, toast)
|
||||
var/turf/T = get_turf(src)
|
||||
message_admins("A boommouse explosion was triggered at [ADMIN_VERBOSEJMP(T)].")
|
||||
visible_message("<span class='danger'>The boommouse violently explodes!</span>")
|
||||
visible_message(span_danger("The boommouse violently explodes!"))
|
||||
atmos_spawn_air("plasma=15;TEMP=750")
|
||||
explosion(src.loc, 0, 0, 2, 0, 1, 0, 2, 0, 0)
|
||||
qdel(src)
|
||||
@@ -32,7 +32,7 @@
|
||||
if(istype(I, /obj/item/weldingtool))
|
||||
var/obj/item/weldingtool/W = I
|
||||
if(W.welding)
|
||||
user.visible_message("<span class='warning'>[user] burns the boommouse with [user.p_their()] [W.name]!</span>", "<span class='userdanger'>That was stupid of you.</span>")
|
||||
user.visible_message(span_warning("[user] burns the boommouse with [user.p_their()] [W.name]!"), span_userdanger("That was stupid of you."))
|
||||
var/message_admins = "[ADMIN_LOOKUPFLW(user)] triggered a boommouse explosion at [ADMIN_VERBOSEJMP(T)]."
|
||||
GLOB.bombers += message_admins
|
||||
message_admins(message_admins)
|
||||
|
||||
@@ -40,4 +40,4 @@
|
||||
. = examinate(A)
|
||||
if (.)
|
||||
return
|
||||
to_chat(A, "<span class='notice'>[src] seems to be checking you out.</span>")
|
||||
to_chat(A, span_notice("[src] seems to be checking you out."))
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
// Check for Distant (no touch head!)
|
||||
if(HAS_TRAIT(src, TRAIT_DISTANT))
|
||||
. += "<span class='warning'>You sense [t_He] might be disturbed by physical affection.</span>\n"
|
||||
. += span_warning("You sense [t_He] might be disturbed by physical affection.")
|
||||
// Check for Heatpat Slut (pls touch head!)
|
||||
if(HAS_TRAIT(src, TRAIT_HEADPAT_SLUT))
|
||||
. += "<span class='info'>You sense [t_He] appreciates receiving physical affection more than normal.</span>\n"
|
||||
. += span_info("You sense [t_He] appreciates receiving physical affection more than normal.")
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
/datum/emote/living/narrate/proc/check_invalid(mob/user, input)
|
||||
if(stop_bad_mime.Find(input, 1, 1))
|
||||
to_chat(user, "<span class='danger'>Invalid emote.</span>")
|
||||
to_chat(user, span_danger("Invalid emote."))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
return FALSE
|
||||
|
||||
user.log_message(message, LOG_EMOTE)
|
||||
message = "<span class='name'>([user])</span> <span class='pnarrate'>[message]</span>"
|
||||
message = span_name("([user])</span> <span class='pnarrate'>[message]")
|
||||
|
||||
for(var/mob/M in GLOB.dead_mob_list)
|
||||
if(!M.client || isnewplayer(M))
|
||||
@@ -44,7 +44,7 @@
|
||||
set name = "Narrate (Player)"
|
||||
set desc = "Narrate an action or event! An alternative to emoting, for when your emote shouldn't start with your name!"
|
||||
if(GLOB.say_disabled)
|
||||
to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>")
|
||||
to_chat(usr, span_danger("Speech is currently admin-disabled."))
|
||||
return
|
||||
message = trim(html_encode(message), MAX_MESSAGE_LEN)
|
||||
emote("narrate", message=message)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
/datum/emote/living/fart/run_emote(mob/living/user, params, type_override, intentional)
|
||||
if(TIMER_COOLDOWN_CHECK(user, COOLDOWN_EMOTE_FART))
|
||||
to_chat(user, "<span class='warning'>You try your hardest, but no shart comes out.</span>")
|
||||
to_chat(user, span_warning("You try your hardest, but no shart comes out."))
|
||||
return
|
||||
var/list/fart_emotes = list( //cope goonies
|
||||
"lets out a girly little 'toot' from [user.p_their()] butt.",
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
if(!iscarbon(T)) //not carbon.
|
||||
return
|
||||
if(!T.is_chest_exposed())
|
||||
to_chat(user, "<span class='warning'>You cannot write on someone with their clothes on.</span>")
|
||||
to_chat(user, span_warning("You cannot write on someone with their clothes on."))
|
||||
return
|
||||
|
||||
var/obj/item/G = user:pick_receiving_organ(T, NONE, "Pick a genital to write on", "Cancel to write on the targeted body part")
|
||||
@@ -27,20 +27,20 @@
|
||||
return
|
||||
|
||||
if(!(user==T))
|
||||
src.visible_message("<span class='notice'>[user] begins to write on [T]'s [BP:name].</span>")
|
||||
src.visible_message(span_notice("[user] begins to write on [T]'s [BP:name]."))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You begin to write on your [BP:name].</span>")
|
||||
to_chat(user, span_notice("You begin to write on your [BP:name]."))
|
||||
|
||||
if(do_mob(user, T, 4 SECONDS))
|
||||
if((length(BP:writtentext))+(length(writting)) < 100) //100 character limmit to stop spamming.
|
||||
BP:writtentext += html_encode(writting) //you can add to text, not remove it.
|
||||
else
|
||||
to_chat(user, "<span class='notice'>There isnt enough space to write that on [T]'s [BP:name].</span>")
|
||||
to_chat(user, span_notice("There isnt enough space to write that on [T]'s [BP:name]."))
|
||||
return
|
||||
|
||||
if(!(user==T))
|
||||
to_chat(user, "<span class='notice'>You write on [T]'s [BP:name].</span>")
|
||||
to_chat(user, span_notice("You write on [T]'s [BP:name]."))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You write on your [BP:name].</span>")
|
||||
to_chat(user, span_notice("You write on your [BP:name]."))
|
||||
else
|
||||
. = ..()
|
||||
|
||||
@@ -35,11 +35,11 @@
|
||||
/obj/item/gun/ballistic/automatic/m2a1/examine(mob/user)
|
||||
. = ..()
|
||||
if(cover_open && magazine)
|
||||
. += "<span class='notice'>It seems like you could use an <b>empty hand</b> to remove the magazine.</span>"
|
||||
. += span_notice("It seems like you could use an <b>empty hand</b> to remove the magazine.")
|
||||
|
||||
/obj/item/gun/ballistic/automatic/m2a1/attack_self(mob/user)
|
||||
cover_open = !cover_open
|
||||
to_chat(user, "<span class='notice'>You [cover_open ? "open" : "close"] [src]'s cover.</span>")
|
||||
to_chat(user, span_notice("You [cover_open ? "open" : "close"] [src]'s cover."))
|
||||
if(cover_open)
|
||||
playsound(user, 'sound/weapons/sawopen.ogg', 60, 1)
|
||||
else
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
/obj/item/gun/ballistic/automatic/m2a1/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params)
|
||||
if(cover_open)
|
||||
to_chat(user, "<span class='warning'>[src]'s cover is open! Close it before firing!</span>")
|
||||
to_chat(user, span_warning("[src]'s cover is open! Close it before firing!"))
|
||||
else
|
||||
. = ..()
|
||||
update_icon()
|
||||
@@ -70,12 +70,12 @@
|
||||
user.put_in_hands(magazine)
|
||||
magazine = null
|
||||
update_icon()
|
||||
to_chat(user, "<span class='notice'>You remove the magazine from [src].</span>")
|
||||
to_chat(user, span_notice("You remove the magazine from [src]."))
|
||||
playsound(user, 'sound/weapons/magout.ogg', 60, 1)
|
||||
|
||||
/obj/item/gun/ballistic/automatic/m2a1/attackby(obj/item/A, mob/user, params)
|
||||
if(!cover_open && istype(A, mag_type))
|
||||
to_chat(user, "<span class='warning'>[src]'s cover is closed! You can't insert a new mag.</span>")
|
||||
to_chat(user, span_warning("[src]'s cover is closed! You can't insert a new mag."))
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
if(auto_eject && magazine && magazine.stored_ammo && !magazine.stored_ammo.len && !chambered)
|
||||
magazine.dropped()
|
||||
user.visible_message(
|
||||
"<span class='warning'>[magazine] flies out and clatters on the floor!</span>",
|
||||
span_warning("[magazine] flies out and clatters on the floor!"),
|
||||
to_chat("[magazine] flies out and clatters on the floor!")
|
||||
)
|
||||
if(auto_eject_sound)
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
if(recentpump > world.time)
|
||||
return
|
||||
if(IS_STAMCRIT(user))//CIT CHANGE - makes pumping shotguns impossible in stamina softcrit
|
||||
to_chat(user, "<span class='warning'>You're too exhausted for that.</span>")//CIT CHANGE - ditto
|
||||
to_chat(user, span_warning("You're too exhausted for that."))//CIT CHANGE - ditto
|
||||
return//CIT CHANGE - ditto
|
||||
pump(user, TRUE)
|
||||
if(HAS_TRAIT(user, TRAIT_FAST_PUMP))
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
if(!M.undergoing_cardiac_arrest() && M.can_heartattack() && prob(1))
|
||||
M.set_heartattack(TRUE)
|
||||
if(M.stat == CONSCIOUS)
|
||||
M.visible_message("<span class='userdanger'>[M] clutches at [M.p_their()] chest as if [M.p_their()] heart stopped!</span>") // too much lean :(
|
||||
M.visible_message(span_userdanger("[M] clutches at [M.p_their()] chest as if [M.p_their()] heart stopped!")) // too much lean :(
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/cum_in_a_hot_tub
|
||||
@@ -355,4 +355,4 @@
|
||||
T.Remove()
|
||||
nT.Insert(M)
|
||||
T.moveToNullspace()//To valhalla
|
||||
to_chat(M, "<span class='big warning'>Your tongue feels... weally fwuffy!!</span>")
|
||||
to_chat(M, span_big_warning("Your tongue feels... weally fwuffy!!"))
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/datum/reagent/drug/aphrodisiacplus/overdose_process(mob/living/M)
|
||||
if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO))
|
||||
if(!HAS_TRAIT(M, TRAIT_IN_HEAT))
|
||||
to_chat(M, "<span class='userlove'>Your need for sex is overpowering!</span>")
|
||||
to_chat(M, span_userlove("Your need for sex is overpowering!"))
|
||||
M.log_message("Made In Heat by hexacrocin.", LOG_EMOTE)
|
||||
ADD_TRAIT(M, TRAIT_IN_HEAT, APHRO_TRAIT)
|
||||
. = ..()
|
||||
@@ -47,20 +47,20 @@
|
||||
return
|
||||
var/mob/living/carbon/human/H = M
|
||||
if (prob(10))
|
||||
to_chat(H, "<span class='notice'>You feel like you can cope!</span>")
|
||||
to_chat(H, span_notice("You feel like you can cope!"))
|
||||
H.adjust_disgust(-10)
|
||||
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "copium", /datum/mood_event/cope, name)
|
||||
. = 1
|
||||
|
||||
/datum/reagent/drug/copium/overdose_start(mob/living/M)
|
||||
to_chat(M, "<span class='userdanger'>What the fuck.</span>")
|
||||
to_chat(M, span_userdanger("What the fuck."))
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name)
|
||||
|
||||
/datum/reagent/drug/copium/overdose_process(mob/living/M)
|
||||
var/mob/living/carbon/human/H = M
|
||||
if (prob(5))
|
||||
H.adjust_disgust(20)
|
||||
to_chat(H, "<span class='warning'>I can't stand it anymore!</span>")
|
||||
to_chat(H, span_warning("I can't stand it anymore!"))
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/copium/reaction_obj(obj/O, volume)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user