diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index da1b941bae..53de44a385 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -91,13 +91,13 @@ }, /area/holodeck/rec_center/lounge) "ap" = ( -/turf/open/floor/holofloor/plating, +/turf/open/floor/holofloor/basalt, /area/holodeck/rec_center/wildlife) "aq" = ( /turf/open/floor/holofloor/plating, /area/holodeck/rec_center/offline) "ar" = ( -/turf/open/floor/holofloor/plating/burnmix, +/turf/open/indestructible/binary, /area/holodeck/rec_center/burn) "as" = ( /obj/effect/turf_decal/tile/red{ @@ -178,12 +178,12 @@ }, /area/holodeck/rec_center/lounge) "aB" = ( -/obj/effect/holodeck_effect/mobspawner, -/turf/open/floor/holofloor/plating, +/obj/effect/holodeck_effect/mobspawner/funclaw, +/turf/open/floor/holofloor/basalt, /area/holodeck/rec_center/wildlife) "aC" = ( /obj/effect/holodeck_effect/sparks, -/turf/open/floor/holofloor/plating/burnmix, +/turf/open/indestructible/binary, /area/holodeck/rec_center/burn) "aD" = ( /obj/effect/turf_decal/tile/red{ @@ -413,7 +413,7 @@ /turf/closed/indestructible/riveted, /area/space) "bk" = ( -/obj/effect/holodeck_effect/mobspawner/bee, +/obj/effect/holodeck_effect/mobspawner/bumbles, /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/anthophila) "bl" = ( @@ -752,7 +752,7 @@ }, /area/holodeck/rec_center/medical) "ce" = ( -/obj/effect/holodeck_effect/mobspawner/bee, +/obj/effect/holodeck_effect/mobspawner/bumbles, /obj/item/clothing/head/beekeeper_head, /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/anthophila) @@ -856,13 +856,13 @@ /turf/open/floor/holofloor, /area/holodeck/rec_center/dodgeball) "cq" = ( -/obj/effect/holodeck_effect/mobspawner/bee, +/obj/effect/holodeck_effect/mobspawner/bumbles, /obj/effect/decal/remains/human, /obj/item/clothing/suit/beekeeper_suit, /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/anthophila) "cr" = ( -/obj/effect/holodeck_effect/mobspawner/bee, +/obj/effect/holodeck_effect/mobspawner/bumbles, /obj/item/melee/flyswatter, /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/anthophila) @@ -20270,6 +20270,9 @@ }, /turf/open/space, /area/space) +"Vy" = ( +/turf/open/chasm/lavaland, +/area/holodeck/rec_center/wildlife) "Vz" = ( /obj/machinery/vending/wallmed{ name = "Emergency NanoMed"; @@ -80911,16 +80914,16 @@ aa "} (232,1,1) = {" ac +Vy +Vy +Vy ap ap ap ap -ap -ap -ap -ap -ap -ap +Vy +Vy +Vy bj bt bI @@ -81168,7 +81171,7 @@ aa "} (233,1,1) = {" ac -ap +Vy aB ap ap @@ -81177,7 +81180,7 @@ ap ap ap aB -ap +Vy bj Xg TF @@ -81425,7 +81428,7 @@ aa "} (234,1,1) = {" ac -ap +Vy ap ap ap @@ -81434,7 +81437,7 @@ aB ap ap ap -ap +Vy bj bu bJ @@ -81682,16 +81685,16 @@ aa "} (235,1,1) = {" ac -ap -aB +Vy ap ap ap ap ap ap -aB ap +ap +Vy bj bv bK @@ -81939,16 +81942,16 @@ aa "} (236,1,1) = {" ac -ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +Vy +Vy +Vy +Vy +Vy +Vy +Vy +Vy +Vy +Vy bj RD Va diff --git a/code/__DEFINES/spans.dm b/code/__DEFINES/spans.dm index c54af39d56..b6b633d91a 100644 --- a/code/__DEFINES/spans.dm +++ b/code/__DEFINES/spans.dm @@ -114,6 +114,3 @@ #define span_warning(str) ("" + str + "") #define span_yell(str) ("" + str + "") #define span_yellowteamradio(str) ("" + str + "") - -//SANDSTORM DEFINES -#define span_love(str) ("" + str + "") diff --git a/code/__SANDCODE/DEFINES/spans.dm b/code/__SANDCODE/DEFINES/spans.dm new file mode 100644 index 0000000000..f8002c5e5a --- /dev/null +++ b/code/__SANDCODE/DEFINES/spans.dm @@ -0,0 +1,3 @@ +#define span_lewd(str) ("" + str + "") +#define span_love(str) ("" + str + "") +#define span_userlove(str) ("" + str + "") diff --git a/code/__SPLURTCODE/DEFINES/spans.dm b/code/__SPLURTCODE/DEFINES/spans.dm index 3a26809294..1a8c5a73ac 100644 --- a/code/__SPLURTCODE/DEFINES/spans.dm +++ b/code/__SPLURTCODE/DEFINES/spans.dm @@ -1,2 +1,5 @@ -#define span_userlove(str) ("" + str + "") -#define span_lewd(str) ("" + str + "") +// This file is maintained for exotic span types +#define span_reallybig_hypnophrase(str) ("" + str + "") +#define span_big_warning(str) ("" + str + "") +#define span_header(str) ("" + str + "") +#define span_umbra(str) ("" + str + "") diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index c5802b5086..d62528ebf8 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -15,9 +15,12 @@ var/obj/structure/chair/C = new /obj/structure/chair(loc) W.play_tool_sound(src) C.setDir(dir) - part.forceMove(loc) - part.master = null - part = null + + if (part) + part.forceMove(loc) + part.master = null + part = null + qdel(src) /obj/structure/chair/e_chair/proc/shock() @@ -44,3 +47,9 @@ to_chat(buckled_mob, "You feel a deep shock course through your body!") addtimer(CALLBACK(buckled_mob, /mob/living.proc/electrocute_act, 85, src, 1), 1) visible_message("The electric chair went off!", "You hear a deep sharp shock!") + +/obj/structure/chair/e_chair/Destroy() + if(part) + QDEL_NULL(part) + + return ..() diff --git a/code/modules/arousal/arousal.dm b/code/modules/arousal/arousal.dm index c4abf94043..b1d8815696 100644 --- a/code/modules/arousal/arousal.dm +++ b/code/modules/arousal/arousal.dm @@ -99,10 +99,10 @@ to_chat(src,"Your [G.name] cannot cum.") return if(mb_time) //as long as it's not instant, give a warning - to_chat(src,"You feel yourself about to orgasm.") + to_chat(src, span_userlove("You feel yourself about to orgasm.")) if(!do_after(src, mb_time, target = src) || !G.climaxable(src, TRUE)) return - to_chat(src,"You climax[isturf(loc) ? " onto [loc]" : ""] with your [G.name].") + to_chat(src, span_userlove("You climax[isturf(loc) ? " onto [loc]" : ""] with your [G.name].")) do_climax(fluid_source, loc, G) /mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, mob/living/L, spillage = TRUE, mb_time = 30, obj/item/organ/genital/Lgen = null) //Used for climaxing with any living thing @@ -110,16 +110,16 @@ if(!fluid_source) return if(mb_time) //Skip warning if this is an instant climax. - to_chat(src,"You're about to climax [(Lgen) ? "in [L]'s [Lgen.name]" : "with [L]"]!") - to_chat(L,"[src] is about to climax [(Lgen) ? "in your [Lgen.name]" : "with you"]!") + to_chat(src, span_userlove("You're about to climax [(Lgen) ? "in [L]'s [Lgen.name]" : "with [L]"]!")) + to_chat(L, span_userlove("[src] is about to climax [(Lgen) ? "in your [Lgen.name]" : "with you"]!")) if(!do_after(src, mb_time, target = src) || !in_range(src, L) || !G.climaxable(src, TRUE)) return if(spillage) - to_chat(src,"You orgasm with [L], spilling out of [(Lgen) ? "[L.p_their()] [Lgen.name]" : "[L.p_them()]"], using your [G.name].") - to_chat(L,"[src] climaxes [(Lgen) ? "in your [Lgen.name]" : "with you"], overflowing and spilling, using [p_their()] [G.name]!") + to_chat(src, span_userlove("You orgasm with [L], spilling out of [(Lgen) ? "[L.p_their()] [Lgen.name]" : "[L.p_them()]"], using your [G.name].")) + to_chat(L, span_userlove("[src] climaxes [(Lgen) ? "in your [Lgen.name]" : "with you"], overflowing and spilling, using [p_their()] [G.name]!")) else //knots and other non-spilling orgasms - to_chat(src,"You climax [(Lgen) ? "in [L]'s [Lgen.name]" : "with [L]"], your [G.name] spilling nothing.") - to_chat(L,"[src] climaxes [(Lgen) ? "in your [Lgen.name]" : "with you"], [p_their()] [G.name] spilling nothing!") + to_chat(src, span_userlove("You climax [(Lgen) ? "in [L]'s [Lgen.name]" : "with [L]"], your [G.name] spilling nothing.")) + to_chat(L, span_userlove("[src] climaxes [(Lgen) ? "in your [Lgen.name]" : "with you"], [p_their()] [G.name] spilling nothing!")) //SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) //Sandstorm edit do_climax(fluid_source, spillage ? loc : L, G, spillage,, Lgen) //L.receive_climax(src, Lgen, G, spillage) @@ -129,10 +129,10 @@ if(!fluid_source) return if(mb_time) - to_chat(src,"You start to [G.masturbation_verb] your [G.name] over [container].") + to_chat(src, span_userlove("You start to [G.masturbation_verb] your [G.name] over [container].")) if(!do_after(src, mb_time, target = src) || !in_range(src, container) || !G.climaxable(src, TRUE)) return - to_chat(src,"You used your [G.name] to fill [container].") + to_chat(src, span_userlove("You used your [G.name] to fill [container].")) message_admins("[ADMIN_LOOKUPFLW(src)] used [p_their()] [G.name] to fill [container] with [G.get_fluid_name()].") log_consent("[key_name(src)] used their [G.name] to fill [container].") do_climax(fluid_source, container, G, FALSE, cover = TRUE) diff --git a/code/modules/arousal/genitals.dm b/code/modules/arousal/genitals.dm index 142e036562..ffe2e1ce42 100644 --- a/code/modules/arousal/genitals.dm +++ b/code/modules/arousal/genitals.dm @@ -167,9 +167,9 @@ var/original_state = picked_organ.aroused_state picked_organ.set_aroused_state(!picked_organ.aroused_state) if(original_state != picked_organ.aroused_state) - to_chat(src,"[picked_organ.aroused_state ? picked_organ.arousal_verb : picked_organ.unarousal_verb].") + to_chat(src, span_userlove("[picked_organ.aroused_state ? picked_organ.arousal_verb : picked_organ.unarousal_verb].")) else - to_chat(src,"You can't make that genital [picked_organ.aroused_state ? "unaroused" : "aroused"]!") + to_chat(src, span_userlove("You can't make that genital [picked_organ.aroused_state ? "unaroused" : "aroused"]!")) picked_organ.update_appearance() if(ishuman(src)) var/mob/living/carbon/human/human = src diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index e18909c9a2..d9bc80761b 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -27,8 +27,10 @@ return TRUE /obj/item/assembly/shock_kit/attack_self(mob/user) - part1.attack_self(user) - part2.attack_self(user) + if (part1) + part1.attack_self(user) + if (part2) + part2.attack_self(user) add_fingerprint(user) return diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 5fdf4574f4..348556c337 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -1088,7 +1088,7 @@ var/list/adjusted = H.adjust_arousal(5,aphro = TRUE) for(var/g in adjusted) var/obj/item/organ/genital/G = g - to_chat(M, "You feel like playing with your [G.name]!") + to_chat(M, span_userlove("You feel like playing with your [G.name]!")) ..() /datum/reagent/consumable/monkey_energy diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 4848347df2..c709fd09a7 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -570,13 +570,13 @@ M.emote(pick("moan","blush")) if(prob(min(current_cycle/4,10))) var/aroused_message = pick("You feel frisky.", "You're having trouble suppressing your urges.", "You feel in the mood.") - to_chat(M, "[aroused_message]") + to_chat(M, span_userlove("[aroused_message]")) if(ishuman(M)) var/mob/living/carbon/human/H = M var/list/genits = H.adjust_arousal(current_cycle, "crocin", aphro = TRUE) // redundant but should still be here for(var/g in genits) var/obj/item/organ/genital/G = g - to_chat(M, "[G.arousal_verb]!") + to_chat(M, span_userlove("[G.arousal_verb]!")) ..() /datum/reagent/drug/aphrodisiacplus @@ -603,14 +603,14 @@ aroused_message = pick("You need to fuck someone!", "You're bursting with sexual tension!", "You can't get sex off your mind!") else aroused_message = pick("You feel a bit hot.", "You feel strong sexual urges.", "You feel in the mood.", "You're ready to go down on someone.") - to_chat(M, "[aroused_message]") + to_chat(M, span_userlove("[aroused_message]")) REMOVE_TRAIT(M,TRAIT_NEVERBONER,APHRO_TRAIT) if(ishuman(M)) var/mob/living/carbon/human/H = M var/list/genits = H.adjust_arousal(100, "hexacrocin", aphro = TRUE) // redundant but should still be here for(var/g in genits) var/obj/item/organ/genital/G = g - to_chat(M, "[G.arousal_verb]!") + to_chat(M, span_userlove("[G.arousal_verb]!")) ..() /datum/reagent/drug/aphrodisiacplus/addiction_act_stage2(mob/living/M) @@ -631,7 +631,7 @@ if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO) && prob(33)) if(prob(5) && ishuman(M) && M.has_dna() && (M.client?.prefs.cit_toggles & BIMBOFICATION)) if(!HAS_TRAIT(M,TRAIT_PERMABONER)) - to_chat(M, "Your libido is going haywire!") + to_chat(M, span_userlove("Your libido is going haywire!")) M.log_message("Made perma-horny by hexacrocin.",LOG_EMOTE) ADD_TRAIT(M,TRAIT_PERMABONER,APHRO_TRAIT) ..() @@ -677,6 +677,6 @@ /datum/reagent/drug/anaphrodisiacplus/overdose_process(mob/living/M) if(M && M.client?.prefs.arousable && prob(5)) - to_chat(M, "You feel like you'll never feel aroused again...") + to_chat(M, span_userlove("You feel like you'll never feel aroused again...")) ADD_TRAIT(M,TRAIT_NEVERBONER,APHRO_TRAIT) ..() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 589c1df3af..f68c925d74 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -2428,7 +2428,7 @@ var/list/adjusted = H.adjust_arousal(2,"catnip", aphro = TRUE) for(var/g in adjusted) var/obj/item/organ/genital/G = g - to_chat(M, "You feel like playing with your [G.name]!") + to_chat(M, span_userlove("You feel like playing with your [G.name]!")) ..() /datum/reagent/preservahyde diff --git a/html/changelogs/archive/2023-01.yml b/html/changelogs/archive/2023-01.yml index 878e6f0e6e..08135fae64 100644 --- a/html/changelogs/archive/2023-01.yml +++ b/html/changelogs/archive/2023-01.yml @@ -50,3 +50,40 @@ LeDrascol: - refactor: Moved quirk action datums to a new file - rscadd: Added a Plushmium Crate to cargo +2023-01-13: + Guatolipo: + - rscadd: Added CART_CHEMISTRY access to cart-cmo + LeDrascol: + - tweak: Replaced three dangerous holodeck modes with harmless alternatives +2023-01-14: + LeDrascol: + - bugfix: Fixed spelling mistakes in the interaction system + - rscadd: Added the Love to Life spray bottle + - tweak: Updated Plushmium Crate contents + - rscadd: 'Added implant: Rapid Disrobe' + - tweak: Nudists now start with a Rapid Disrobe implant + - rscadd: Added the Wallet of Holding +2023-01-15: + BongaTheProto: + - rscadd: Adds nobl donator plushie + - rscadd: Adds a *poyo emote + Casper: + - bugfix: fixes telekinetic users from teleporting to stripper poles + - bugfix: infinite metal exploit + SandPoot: + - spellcheck: fixed a few typos. + - refactor: refactored skirt peeking. + - tweak: examine someone twice to actually peek their panties. +2023-01-16: + SandPoot: + - rscadd: You can now allow interacting with your genitals through clothes. + - tweak: Modified sandstorm's spans (`"...`) with the defines (`span_x("...`) +2023-01-17: + LeDrascol: + - code_imp: Added span defines for 'reallybig hypnophrase', 'big warning', 'header', + and 'umbra' + - refactor: All HTML spans are now defines-based + SishTis: + - rscadd: Addead keybinds to put/take items in/from suit storage and pockets slots. + zeroisthebiggay: + - spellcheck: You diff --git a/modular_sand/code/controllers/subsystem/language.dm b/modular_sand/code/controllers/subsystem/language.dm index faa3fa3e1d..c0abd0b720 100644 --- a/modular_sand/code/controllers/subsystem/language.dm +++ b/modular_sand/code/controllers/subsystem/language.dm @@ -24,7 +24,7 @@ continue if(valid_languages.len) var/list/sorted_valid = sortList(valid_languages) - to_chat(user, "You are able to speak in [sorted_valid.Join(", ")]. If you're actually good at [valid_languages.len > 1 ? "them" : "it"] or not, it's up to you.") + to_chat(user, span_notice("You are able to speak in [sorted_valid.Join(", ")]. If you're actually good at [valid_languages.len > 1 ? "them" : "it"] or not, it's up to you.")) if(invalid_languages.len) var/list/sorted_invalid = sortList(invalid_languages) - to_chat(user, "[sorted_invalid.Join(", ")] [invalid_languages.len > 1 ? "are" : "is a"] restricted language[invalid_languages.len > 1 ? "s" : ""], and ha[invalid_languages.len > 1 ? "ve" : "s"] not been assigned.") + to_chat(user, span_warning("[sorted_invalid.Join(", ")] [invalid_languages.len > 1 ? "are" : "is a"] restricted language[invalid_languages.len > 1 ? "s" : ""], and ha[invalid_languages.len > 1 ? "ve" : "s"] not been assigned.")) diff --git a/modular_sand/code/datums/components/container_item/tank_holder.dm b/modular_sand/code/datums/components/container_item/tank_holder.dm index b68c413519..765335987c 100644 --- a/modular_sand/code/datums/components/container_item/tank_holder.dm +++ b/modular_sand/code/datums/components/container_item/tank_holder.dm @@ -17,12 +17,12 @@ var/obj/item/I = parent if(container.contents.len) if(user) - to_chat(user, "There's already something in [container].") + to_chat(user, span_warning("There's already something in [container].")) return TRUE if(user) if(!user.transferItemToLoc(I, container)) return TRUE - to_chat(user, "You put [I] into [container].") + to_chat(user, span_notice("You put [I] into [container].")) else I.forceMove(container) container.tank = I diff --git a/modular_sand/code/datums/elements/holder_micro.dm b/modular_sand/code/datums/elements/holder_micro.dm index d4d3b34d84..f264ded3b5 100644 --- a/modular_sand/code/datums/elements/holder_micro.dm +++ b/modular_sand/code/datums/elements/holder_micro.dm @@ -26,7 +26,7 @@ /datum/element/mob_holder/micro/on_examine(mob/living/source, mob/user, list/examine_list) if(ishuman(user) && !istype(source.loc, /obj/item/clothing/head/mob_holder) && (abs(get_size(source)/get_size(user)) <= CONFIG_GET(number/max_pick_ratio))) - examine_list += "Looks like [source.p_they(FALSE)] can be picked up using Alt+Click and grab intent!" + examine_list += span_notice("Looks like [source.p_they(FALSE)] can be picked up using Alt+Click and grab intent!") /datum/element/mob_holder/micro/proc/mob_pickup_micro(mob/living/source, mob/user) var/obj/item/clothing/head/mob_holder/micro/holder = new(get_turf(source), source, worn_state, alt_worn, right_hand, left_hand, inv_slots) @@ -50,41 +50,41 @@ if(!ishuman(user) || !user.Adjacent(source) || user.incapacitated()) return FALSE if(source == user) - to_chat(user, "You can't pick yourself up.") + to_chat(user, span_warning("You can't pick yourself up.")) source.balloon_alert(user, "cannot pick yourself!") return FALSE if(abs(get_size(source)/get_size(user)) > CONFIG_GET(number/max_pick_ratio)) - to_chat(user, "They're too big to pick up!") + to_chat(user, span_warning("They're too big to pick up!")) source.balloon_alert(user, "too big to pick up!") return FALSE if(user.get_active_held_item()) - to_chat(user, "Your hands are full!") + to_chat(user, span_warning("Your hands are full!")) source.balloon_alert(user, "hands are full!") return FALSE if(source.buckled) - to_chat(user, "[source] is buckled to something!") + to_chat(user, span_warning("[source] is buckled to something!")) source.balloon_alert(user, "buckled to something!") return FALSE - source.visible_message("[user] starts picking up [source].", \ - "[user] starts picking you up!") + source.visible_message(span_warning("[user] starts picking up [source]."), \ + span_userdanger("[user] starts picking you up!")) source.balloon_alert(user, "picking up") var/p = abs(get_size(source)/get_size(user) * 40) //Scale how fast the pickup will be depending on size difference if(!do_after(user, p, target = source)) return FALSE if(user.get_active_held_item()) - to_chat(user, "Your hands are full!") + to_chat(user, span_warning("Your hands are full!")) source.balloon_alert(user, "hands full!") return FALSE if(source.buckled) - to_chat(user, "[source] is buckled to something!") + to_chat(user, span_warning("[source] is buckled to something!")) source.balloon_alert(user, "buckled!") return FALSE - source.visible_message("[user] picks up [source]!", - "[user] picks you up!", + source.visible_message(span_warning("[user] picks up [source]!"), + span_userdanger("[user] picks you up!"), target = user, - target_message = "You pick [source] up.") + target_message = span_notice("You pick [source] up.")) source.drop_all_held_items() mob_pickup_micro(source, user) return TRUE @@ -100,14 +100,14 @@ //TODO: add a timer to escape someone's grip dependant on size diff /obj/item/clothing/head/mob_holder/micro/container_resist(mob/living/user) if(user.incapacitated()) - to_chat(user, "You can't escape while you're restrained like this!") + to_chat(user, span_warning("You can't escape while you're restrained like this!")) return var/mob/living/L = loc - visible_message("[src] begins to squirm in [L]'s grasp!") + visible_message(span_warning("[src] begins to squirm in [L]'s grasp!")) if(!do_after(user, 12 SECONDS, target = src, required_mobility_flags = MOBILITY_RESIST)) if(!user || user.stat != CONSCIOUS || user.loc != src) return - to_chat(loc, "[src] stops resisting.") + to_chat(loc, span_warning("[src] stops resisting.")) return visible_message("[src] escapes [L]!") release() @@ -133,17 +133,17 @@ var/mob/living/carbon/human/M = held_mob if(istype(M)) if(user.a_intent == "harm") //TO:DO, rework all of these interactions to be a lot more in depth - visible_message("[user] slams their fist down on [M]!", runechat_popup = TRUE, rune_msg = " slams their fist down on [M]!") + visible_message(span_danger("[user] slams their fist down on [M]!"), runechat_popup = TRUE, rune_msg = " slams their fist down on [M]!") playsound(loc, 'sound/weapons/punch1.ogg', 50, 1) M.adjustBruteLoss(5) return if(user.a_intent == "disarm") - visible_message("[user] pins [M] down with a finger!", runechat_popup = TRUE, rune_msg = " pins [M] down with a finger!") + visible_message(span_danger("[user] pins [M] down with a finger!"), runechat_popup = TRUE, rune_msg = " pins [M] down with a finger!") playsound(loc, 'sound/effects/bodyfall1.ogg', 50, 1) M.adjustStaminaLoss(10) return if(user.a_intent == "grab") - visible_message("[user] squeezes their fist around [M]!", runechat_popup = TRUE, rune_msg = " squeezes their fist around [M]!") + visible_message(span_danger("[user] squeezes their fist around [M]!"), runechat_popup = TRUE, rune_msg = " squeezes their fist around [M]!") playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1) M.adjustOxyLoss(5) return diff --git a/modular_sand/code/datums/interactions/_interaction.dm b/modular_sand/code/datums/interactions/_interaction.dm index c46ce23784..b7077ae80d 100644 --- a/modular_sand/code/datums/interactions/_interaction.dm +++ b/modular_sand/code/datums/interactions/_interaction.dm @@ -46,17 +46,17 @@ if(require_user_mouth) if(!user.has_mouth() && !issilicon(user)) //Again, silicons do not have the required parts normally. if(!silent) - to_chat(user, "You don't have a mouth.") + to_chat(user, span_warning("You don't have a mouth.")) return FALSE if(!user.mouth_is_free() && !issilicon(user)) //Borgs cannot wear mouthgear, bypassing the check. if(!silent) - to_chat(user, "Your mouth is covered.") + to_chat(user, span_warning("Your mouth is covered.")) return FALSE if(require_user_hands && !user.has_hands() && !issilicon(user)) //Edited to allow silicons to interact. if(!silent) - to_chat(user, "You don't have hands.") + to_chat(user, span_warning("You don't have hands.")) return FALSE if(COOLDOWN_FINISHED(user, last_interaction_time)) @@ -100,13 +100,13 @@ /datum/interaction/proc/do_action(mob/living/user, mob/living/target) if(!user_is_target) if(user == target) //tactical href fix - to_chat(user, "You cannot target yourself.") + to_chat(user, span_warning("You cannot target yourself.")) return if(get_dist(user, target) > max_distance) - to_chat(user, "They are too far away.") + to_chat(user, span_warning("They are too far away.")) return if(needs_physical_contact && !(user.Adjacent(target) && target.Adjacent(user))) - to_chat(user, "You cannot get to them.") + to_chat(user, span_warning("You cannot get to them.")) return if(!evaluate_user(user, silent = FALSE)) return diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/breasts.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/breasts.dm index 6fdd1df0c8..fdd4e5bf82 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/breasts.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/breasts.dm @@ -30,7 +30,7 @@ "lets a large stream of [u_His] own abundant [lowertext(milktext)] coat the back of \the [target]'s throat" ) - message = "\The [user] [pick(lines)]" + message = span_lewd("\The [user] [pick(lines)]") user.visible_message(message, ignored_mobs = user.get_unconsenting()) playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/oral1.ogg', 'modular_sand/sound/interactions/oral2.ogg'), 70, 1, -1) @@ -59,56 +59,56 @@ /datum/interaction/lewd/titgrope/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target) if(user.a_intent == INTENT_HELP) user.visible_message( - pick("\The [user] gently gropes \the [target]'s breast.", - "\The [user] softly squeezes \the [target]'s breasts.", - "\The [user] grips \the [target]'s breasts.", - "\The [user] runs a few fingers over \the [target]'s breast.", - "\The [user] delicately teases \the [target]'s nipple.", - "\The [user] traces a touch across \the [target]'s breast.")) + pick(span_lewd("\The [user] gently gropes \the [target]'s breast."), + span_lewd("\The [user] softly squeezes \the [target]'s breasts."), + span_lewd("\The [user] grips \the [target]'s breasts."), + span_lewd("\The [user] runs a few fingers over \the [target]'s breast."), + span_lewd("\The [user] delicately teases \the [target]'s nipple."), + span_lewd("\The [user] traces a touch across \the [target]'s breast."))) if(user.a_intent == INTENT_HARM) user.visible_message( - pick("\The [user] aggressively gropes \the [target]'s breast.", - "\The [user] grabs \the [target]'s breasts.", - "\The [user] tightly squeezes \the [target]'s breasts.", - "\The [user] slaps at \the [target]'s breasts.", - "\The [user] gropes \the [target]'s breasts roughly.")) + pick(span_lewd("\The [user] aggressively gropes \the [target]'s breast."), + span_lewd("\The [user] grabs \the [target]'s breasts."), + span_lewd("\The [user] tightly squeezes \the [target]'s breasts."), + span_lewd("\The [user] slaps at \the [target]'s breasts."), + span_lewd("\The [user] gropes \the [target]'s breasts roughly."))) if(prob(5 + target.get_lust())) if(target.a_intent == INTENT_HELP) user.visible_message( - pick("\The [target] shivers in arousal.", - "\The [target] moans quietly.", - "\The [target] breathes out a soft moan.", - "\The [target] gasps.", - "\The [target] shudders softly.", - "\The [target] trembles as hands run across bare skin.")) + pick(span_lewd("\The [target] shivers in arousal."), + span_lewd("\The [target] moans quietly."), + span_lewd("\The [target] breathes out a soft moan."), + span_lewd("\The [target] gasps."), + span_lewd("\The [target] shudders softly."), + span_lewd("\The [target] trembles as hands run across bare skin."))) if(target.get_lust() < 5) target.set_lust(5) if(target.a_intent == INTENT_DISARM) if (target.restrained()) user.visible_message( - pick("\The [target] twists playfully against the restraints.", - "\The [target] squirms away from [user]'s hand.", - "\The [target] slides back from [user]'s roaming hand.", - "\The [target] thrusts bare breasts forward into [user]'s hands.")) + pick(span_lewd("\The [target] twists playfully against the restraints."), + span_lewd("\The [target] squirms away from [user]'s hand."), + span_lewd("\The [target] slides back from [user]'s roaming hand."), + span_lewd("\The [target] thrusts bare breasts forward into [user]'s hands."))) else user.visible_message( - pick("\The [target] playfully bats at [user]'s hand.", - "\The [target] squirms away from [user]'s hand.", - "\The [target] guides [user]'s hand across bare breasts.", - "\The [target] teasingly laces a few fingers over [user]'s knuckles.")) + pick(span_lewd("\The [target] playfully bats at [user]'s hand."), + span_lewd("\The [target] squirms away from [user]'s hand."), + span_lewd("\The [target] guides [user]'s hand across bare breasts."), + span_lewd("\The [target] teasingly laces a few fingers over [user]'s knuckles."))) if(target.get_lust() < 10) target.add_lust(1) if(target.a_intent == INTENT_GRAB) user.visible_message( - pick("\The [target] grips [user]'s wrist tight.", - "\The [target] digs nails into [user]'s arm.", - "\The [target] grabs [user]'s wrist for a second.")) + pick(span_lewd("\The [target] grips [user]'s wrist tight."), + span_lewd("\The [target] digs nails into [user]'s arm."), + span_lewd("\The [target] grabs [user]'s wrist for a second."))) if(target.a_intent == INTENT_HARM) user.adjustBruteLoss(1) user.visible_message( - pick("\The [target] pushes [user] roughly away.", - "\The [target] digs nails angrily into [user]'s arm.", - "\The [target] fiercely struggles against [user].", - "\The [target] claws [user]'s forearm, drawing blood.", - "\The [target] slaps [user]'s hand away.")) + pick(span_lewd("\The [target] pushes [user] roughly away."), + span_lewd("\The [target] digs nails angrily into [user]'s arm."), + span_lewd("\The [target] fiercely struggles against [user]."), + span_lewd("\The [target] claws [user]'s forearm, drawing blood."), + span_lewd("\The [target] slaps [user]'s hand away."))) return diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/cursed/earfuck.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/cursed/earfuck.dm index 096acf97d0..50a259bc9c 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/cursed/earfuck.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/cursed/earfuck.dm @@ -41,7 +41,7 @@ playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/champ1.ogg', 'modular_sand/sound/interactions/champ2.ogg'), 50, 1, -1) - user.visible_message(message = "\The [user] [message]", ignored_mobs = user.get_unconsenting(TRUE)) + user.visible_message(message = span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting(TRUE)) if(user.can_penetrating_genital_cum()) user.handle_post_sex(NORMAL_LUST, CUM_TARGET_EARS, partner) partner.handle_post_sex(LOW_LUST, null, user) diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/cursed/eyefuck.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/cursed/eyefuck.dm index 862be9dec1..caa51bb1c8 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/cursed/eyefuck.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/cursed/eyefuck.dm @@ -41,7 +41,7 @@ playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/champ1.ogg', 'modular_sand/sound/interactions/champ2.ogg'), 50, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting(TRUE)) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting(TRUE)) if(user.can_penetrating_genital_cum()) user.handle_post_sex(NORMAL_LUST, CUM_TARGET_EYES, partner) partner.handle_post_sex(LOW_LUST, null, user) diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/facefuck.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/facefuck.dm index d3f25b10ec..3c8dc2a72f 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/facefuck.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/facefuck.dm @@ -105,7 +105,7 @@ playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/oral1.ogg', 'modular_sand/sound/interactions/oral2.ogg'), 70, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(retaliation_message) user.visible_message("\The [partner] [retaliation_message]", ignored_mobs = user.get_unconsenting()) if(fucktarget != "penis" || user.can_penetrating_genital_cum()) @@ -158,7 +158,7 @@ playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/oral1.ogg', 'modular_sand/sound/interactions/oral2.ogg'), 70, 1, -1) - user.visible_message(message = "\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(message = span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(retaliation_message) user.visible_message(message = "\The [partner] [retaliation_message]", ignored_mobs = user.get_unconsenting()) if(user.can_penetrating_genital_cum()) diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/feet.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/feet.dm index 990802a538..0bf1be224b 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/feet.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/feet.dm @@ -50,7 +50,7 @@ 'modular_sand/sound/interactions/foot_dry2.ogg', 'modular_sand/sound/interactions/foot_dry3.ogg', 'modular_sand/sound/interactions/foot_dry4.ogg'), 70, 1, -1) - user.visible_message(message = "\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(message = span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) partner.handle_post_sex(LOW_LUST, null, user) /datum/interaction/lewd/grindmouth @@ -105,7 +105,7 @@ playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/foot_wet1.ogg', 'modular_sand/sound/interactions/foot_wet2.ogg', 'modular_sand/sound/interactions/foot_wet3.ogg'), 70, 1, -1) - user.visible_message(message = "\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(message = span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) partner.handle_post_sex(LOW_LUST, null, user) /datum/interaction/lewd/footjob @@ -135,7 +135,7 @@ 'modular_sand/sound/interactions/foot_dry3.ogg', 'modular_sand/sound/interactions/foot_wet1.ogg', 'modular_sand/sound/interactions/foot_wet2.ogg'), 70, 1, -1) - user.visible_message(message = "\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(message = span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(partner.can_penetrating_genital_cum()) partner.handle_post_sex(NORMAL_LUST, CUM_TARGET_FEET, user) @@ -163,7 +163,7 @@ 'modular_sand/sound/interactions/foot_dry3.ogg', 'modular_sand/sound/interactions/foot_wet1.ogg', 'modular_sand/sound/interactions/foot_wet2.ogg'), 70, 1, -1) - user.visible_message(message = "\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(message = span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(partner.can_penetrating_genital_cum()) partner.handle_post_sex(NORMAL_LUST, CUM_TARGET_FEET, user) @@ -193,5 +193,5 @@ 'modular_sand/sound/interactions/foot_dry3.ogg', 'modular_sand/sound/interactions/foot_wet1.ogg', 'modular_sand/sound/interactions/foot_wet2.ogg'), 70, 1, -1) - user.visible_message(message = "\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(message = span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) partner.handle_post_sex(NORMAL_LUST, CUM_TARGET_FEET, user) diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/frotting.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/frotting.dm index 252ed112ff..774b11f48a 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/frotting.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/frotting.dm @@ -14,7 +14,7 @@ message = "rubs [t_His] [genital_name] against [partner]'s." user.set_is_fucking(partner, CUM_TARGET_PENIS, user.getorganslot(ORGAN_SLOT_PENIS)) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(user.can_penetrating_genital_cum()) user.handle_post_sex(NORMAL_LUST, CUM_TARGET_PENIS, partner) if(partner.can_penetrating_genital_cum()) @@ -43,6 +43,6 @@ playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/squelch1.ogg', 'modular_sand/sound/interactions/squelch2.ogg', 'modular_sand/sound/interactions/squelch3.ogg'), 70, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) partner.handle_post_sex(NORMAL_LUST, CUM_TARGET_VAGINA, user) user.handle_post_sex(NORMAL_LUST, CUM_TARGET_VAGINA, partner) diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/fuck.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/fuck.dm index dc451559a5..d3d0b7751c 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/fuck.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/fuck.dm @@ -24,7 +24,7 @@ playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/champ1.ogg', 'modular_sand/sound/interactions/champ2.ogg'), 50, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(user.can_penetrating_genital_cum()) user.handle_post_sex(NORMAL_LUST, CUM_TARGET_VAGINA, partner) partner.handle_post_sex(NORMAL_LUST, CUM_TARGET_PENIS, user) @@ -56,7 +56,7 @@ playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/bang1.ogg', 'modular_sand/sound/interactions/bang2.ogg', 'modular_sand/sound/interactions/bang3.ogg'), 70, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(user.can_penetrating_genital_cum()) user.handle_post_sex(NORMAL_LUST, CUM_TARGET_ANUS, partner) partner.handle_post_sex(NORMAL_LUST, null, user) @@ -86,7 +86,7 @@ playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/bang1.ogg', 'modular_sand/sound/interactions/bang2.ogg', 'modular_sand/sound/interactions/bang3.ogg'), 70, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(user.can_penetrating_genital_cum()) user.handle_post_sex(NORMAL_LUST, CUM_TARGET_BREASTS, partner) @@ -119,7 +119,7 @@ 'modular_sand/sound/interactions/foot_dry3.ogg', 'modular_sand/sound/interactions/foot_wet1.ogg', 'modular_sand/sound/interactions/foot_wet2.ogg'), 70, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(user.can_penetrating_genital_cum()) user.handle_post_sex(NORMAL_LUST, CUM_TARGET_FEET, partner) @@ -148,7 +148,7 @@ 'modular_sand/sound/interactions/foot_dry3.ogg', 'modular_sand/sound/interactions/foot_wet1.ogg', 'modular_sand/sound/interactions/foot_wet2.ogg'), 70, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(user.can_penetrating_genital_cum()) user.handle_post_sex(NORMAL_LUST, CUM_TARGET_FEET, partner) @@ -182,5 +182,5 @@ 'modular_sand/sound/interactions/foot_dry3.ogg', 'modular_sand/sound/interactions/foot_wet1.ogg', 'modular_sand/sound/interactions/foot_wet2.ogg'), 70, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) user.handle_post_sex(NORMAL_LUST, CUM_TARGET_FEET, partner) diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/handjob.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/handjob.dm index 78e530c8ed..1c36e61823 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/handjob.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/handjob.dm @@ -22,6 +22,6 @@ playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/bang1.ogg', 'modular_sand/sound/interactions/bang2.ogg', 'modular_sand/sound/interactions/bang3.ogg'), 70, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(partner.can_penetrating_genital_cum()) partner.handle_post_sex(NORMAL_LUST, CUM_TARGET_HAND, user) diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/kiss.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/kiss.dm index 7f49fd21dd..8e196c8a19 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/kiss.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/kiss.dm @@ -16,6 +16,6 @@ /datum/interaction/lewd/kiss/display_interaction(mob/living/user, mob/living/partner) if(user.get_lust() >= 3) - user.visible_message("\The [user] gives an intense, lingering kiss to \the [partner].") + user.visible_message(span_lewd("\The [user] gives an intense, lingering kiss to \the [partner].")) else - user.visible_message("\The [user] kisses \the [partner] deeply.") + user.visible_message(span_lewd("\The [user] kisses \the [partner] deeply.")) diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/lick.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/lick.dm index 807d7f39af..6798d07d62 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/lick.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/lick.dm @@ -6,7 +6,7 @@ max_distance = 1 /datum/interaction/lewd/rimjob/display_interaction(mob/living/user, mob/living/partner) - user.visible_message("\The [user] licks \the [partner]'s asshole.", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] licks \the [partner]'s asshole."), ignored_mobs = user.get_unconsenting()) playlewdinteractionsound(get_turf(user), 'modular_sand/sound/interactions/champ_fingering.ogg', 50, 1, -1) partner.handle_post_sex(NORMAL_LUST, null, user) @@ -29,5 +29,5 @@ message = "licks \the [partner]'s [partner.has_feet() == 1 ? "foot" : "feet"]." playlewdinteractionsound(get_turf(user), 'modular_sand/sound/interactions/champ_fingering.ogg', 50, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) user.handle_post_sex(LOW_LUST, null, user) diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/mount.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/mount.dm index 92ee546967..2caa4f53c7 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/mount.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/mount.dm @@ -19,7 +19,7 @@ playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/bang1.ogg', 'modular_sand/sound/interactions/bang2.ogg', 'modular_sand/sound/interactions/bang3.ogg'), 70, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(partner.can_penetrating_genital_cum()) partner.handle_post_sex(NORMAL_LUST, CUM_TARGET_VAGINA, user) user.handle_post_sex(NORMAL_LUST, CUM_TARGET_PENIS, partner) @@ -45,7 +45,7 @@ playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/bang1.ogg', 'modular_sand/sound/interactions/bang2.ogg', 'modular_sand/sound/interactions/bang3.ogg'), 70, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(partner.can_penetrating_genital_cum()) partner.handle_post_sex(NORMAL_LUST, CUM_TARGET_ANUS, user) user.handle_post_sex(NORMAL_LUST, null, partner) @@ -74,7 +74,7 @@ playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/squelch1.ogg', 'modular_sand/sound/interactions/squelch2.ogg', 'modular_sand/sound/interactions/squelch3.ogg'), 70, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) user.handle_post_sex(LOW_LUST, null, partner) /datum/interaction/lewd/thighs @@ -157,7 +157,7 @@ 'modular_sand/sound/interactions/foot_wet1.ogg', 'modular_sand/sound/interactions/foot_dry3.ogg') playlewdinteractionsound(get_turf(user), file, 70, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) user.handle_post_sex(lust_increase, THIGH_SMOTHERING, partner) playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/oral1.ogg', 'modular_sand/sound/interactions/oral2.ogg'), 70, 1, -1) diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/nipsuck.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/nipsuck.dm index 617821e111..e5a0b8911e 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/nipsuck.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/nipsuck.dm @@ -10,9 +10,9 @@ /datum/interaction/lewd/nipsuck/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target) if((user.a_intent == INTENT_HELP) || (user.a_intent == INTENT_DISARM)) user.visible_message( - pick("\The [user] gently sucks on \the [target]'s [pick("nipple", "nipples")].", - "\The [user] gently nibs \the [target]'s [pick("nipple", "nipples")].", - "\The [user] licks \the [target]'s [pick("nipple", "nipples")].")) + pick(span_lewd("\The [user] gently sucks on \the [target]'s [pick("nipple", "nipples")]."), + span_lewd("\The [user] gently nibs \the [target]'s [pick("nipple", "nipples")]."), + span_lewd("\The [user] licks \the [target]'s [pick("nipple", "nipples")]."))) if(target.has_breasts(REQUIRE_EXPOSED)) var/modifier = 1 var/obj/item/organ/genital/breasts/B = target.getorganslot(ORGAN_SLOT_BREASTS) @@ -31,8 +31,8 @@ if(user.a_intent == INTENT_HARM) user.visible_message( - pick("\The [user] bites \the [target]'s [pick("nipple", "nipples")].", - "\The [user] aggressively sucks \the [target]'s [pick("nipple", "nipples")].")) + pick(span_lewd("\The [user] bites \the [target]'s [pick("nipple", "nipples")]."), + span_lewd("\The [user] aggressively sucks \the [target]'s [pick("nipple", "nipples")]."))) if(target.has_breasts(REQUIRE_EXPOSED)) var/modifier = 1 var/obj/item/organ/genital/breasts/B = target.getorganslot(ORGAN_SLOT_BREASTS) @@ -51,9 +51,9 @@ if(user.a_intent == INTENT_GRAB) user.visible_message( - pick("\The [user] sucks \the [target]'s [pick("nipple", "nipples")] intently.", - "\The [user] feasts \the [target]'s [pick("nipple", "nipples")].", - "\The [user] glomps \the [target]'s [pick("nipple", "nipples")].")) + pick(span_lewd("\The [user] sucks \the [target]'s [pick("nipple", "nipples")] intently."), + span_lewd("\The [user] feasts \the [target]'s [pick("nipple", "nipples")]."), + span_lewd("\The [user] glomps \the [target]'s [pick("nipple", "nipples")]."))) if(target.has_breasts(REQUIRE_EXPOSED)) var/modifier = 1 var/obj/item/organ/genital/breasts/B = target.getorganslot(ORGAN_SLOT_BREASTS) @@ -74,66 +74,66 @@ if(target.a_intent == INTENT_HELP) if(!target.has_breasts()) user.visible_message( - pick("\The [target] shivers in arousal.", - "\The [target] moans quietly.", - "\The [target] breathes out a soft moan.", - "\The [target] gasps.", - "\The [target] shudders softly.", - "\The [target] trembles as their chest gets molested.")) + pick(span_lewd("\The [target] shivers in arousal."), + span_lewd("\The [target] moans quietly."), + span_lewd("\The [target] breathes out a soft moan."), + span_lewd("\The [target] gasps."), + span_lewd("\The [target] shudders softly."), + span_lewd("\The [target] trembles as their chest gets molested."))) else user.visible_message( - pick("\The [target] shivers in arousal.", - "\The [target] moans quietly.", - "\The [target] breathes out a soft moan.", - "\The [target] gasps.", - "\The [target] shudders softly.", - "\The [target] trembles as their breasts get molested.", - "\The [target] quivers in arousal as \the [user] delights themselves on their milk.")) + pick(span_lewd("\The [target] shivers in arousal."), + span_lewd("\The [target] moans quietly."), + span_lewd("\The [target] breathes out a soft moan."), + span_lewd("\The [target] gasps."), + span_lewd("\The [target] shudders softly."), + span_lewd("\The [target] trembles as their breasts get molested."), + span_lewd("\The [target] quivers in arousal as \the [user] delights themselves on their milk."))) if(target.get_lust() < 5) target.set_lust(5) if(target.a_intent == INTENT_DISARM) if (target.restrained()) if(!target.has_breasts()) user.visible_message( - pick("\The [target] twists playfully against the restraints.", - "\The [target] squirms away from \the [user]'s mouth.", - "\The [target] slides back from \the [user]'s mouth.", - "\The [target] thrusts their bare chest forward into \the [user]'s mouth.")) + pick(span_lewd("\The [target] twists playfully against the restraints."), + span_lewd("\The [target] squirms away from \the [user]'s mouth."), + span_lewd("\The [target] slides back from \the [user]'s mouth."), + span_lewd("\The [target] thrusts their bare chest forward into \the [user]'s mouth."))) else user.visible_message( - pick("\The [target] twists playfully against the restraints.", - "\The [target] squirms away from \the [user]'s mouth.", - "\The [target] slides back from \the [user]'s mouth.", - "\The [target] thrust their bare breasts forward into \the [user]'s mouth.")) + pick(span_lewd("\The [target] twists playfully against the restraints."), + span_lewd("\The [target] squirms away from \the [user]'s mouth."), + span_lewd("\The [target] slides back from \the [user]'s mouth."), + span_lewd("\The [target] thrust their bare breasts forward into \the [user]'s mouth."))) else if(!target.has_breasts()) user.visible_message( - pick("\The [target] playfully shoos away \the [user]'s head.", - "\The [target] squirms away from \the [user]'s mouth.", - "\The [target] holds \the [user]'s head against their chest.", - "\The [target] teasingly caresses \the [user]'s neck.")) + pick(span_lewd("\The [target] playfully shoos away \the [user]'s head."), + span_lewd("\The [target] squirms away from \the [user]'s mouth."), + span_lewd("\The [target] holds \the [user]'s head against their chest."), + span_lewd("\The [target] teasingly caresses \the [user]'s neck."))) else user.visible_message( - pick("\The [target] playfully shoos away \the [user]'s head.", - "\The [target] squirms away from \the [user]'s mouth.", - "\The [target] holds \the [user]'s head against their breast.", - "\The [target] teasingly caresses \the [user]'s neck.", - "\The [target] rubs their breasts against \the [user]'s head.")) + pick(span_lewd("\The [target] playfully shoos away \the [user]'s head."), + span_lewd("\The [target] squirms away from \the [user]'s mouth."), + span_lewd("\The [target] holds \the [user]'s head against their breast."), + span_lewd("\The [target] teasingly caresses \the [user]'s neck."), + span_lewd("\The [target] rubs their breasts against \the [user]'s head."))) if(target.get_lust() < 10) target.add_lust(1) if(target.a_intent == INTENT_GRAB) user.visible_message( - pick("\The [target] grips \the [user]'s head tight.", - "\The [target] digs nails into \the [user]'s scalp.", - "\The [target] grabs and shoves \the [user]'s head away.")) + pick(span_lewd("\The [target] grips \the [user]'s head tight."), + span_lewd("\The [target] digs nails into \the [user]'s scalp."), + span_lewd("\The [target] grabs and shoves \the [user]'s head away."))) if(target.a_intent == INTENT_HARM) user.adjustBruteLoss(1) user.visible_message( - pick("\The [target] slaps \the [user] away.", - "\The [target] scratches [user]'s face.", - "\The [target] fiercely struggles against [user].", - "\The [target] claws [user]'s face, drawing blood.", - "\The [target] elbows [user]'s mouth away.")) + pick(span_lewd("\The [target] slaps \the [user] away."), + span_lewd("\The [target] scratches [user]'s face."), + span_lewd("\The [target] fiercely struggles against [user]."), + span_lewd("\The [target] claws [user]'s face, drawing blood."), + span_lewd("\The [target] elbows [user]'s mouth away."))) target.dir = get_dir(target, user) user.dir = get_dir(user, target) playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/oral1.ogg', diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/nuts.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/nuts.dm index 912b227915..3210d01ed3 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/nuts.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/nuts.dm @@ -29,7 +29,7 @@ 'modular_sand/sound/interactions/nuts2.ogg', 'modular_sand/sound/interactions/nuts3.ogg', 'modular_sand/sound/interactions/nuts4.ogg'), 70, 1, -1)*/ //These files don't even exist but nobody noticed because double-quotes were used instead of single. - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) user.handle_post_sex(lust_increase, CUM_TARGET_MOUTH, partner) /datum/interaction/lewd/nut_smack diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/oral.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/oral.dm index ece5e1c49b..59ab08f85d 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/oral.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/oral.dm @@ -123,6 +123,6 @@ 'modular_sand/sound/interactions/bj9.ogg', 'modular_sand/sound/interactions/bj10.ogg', 'modular_sand/sound/interactions/bj11.ogg'), 50, 1, -1) - user.visible_message("\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(fucktarget != "penis" || partner.can_penetrating_genital_cum()) partner.handle_post_sex(lust_increase, CUM_TARGET_MOUTH, user) diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/self/breasts.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/self/breasts.dm index f4d4599d3d..5c91e50a3c 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/self/breasts.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/self/breasts.dm @@ -32,7 +32,7 @@ "gasps.", "shudders softly.", "trembles as [t_His] hands run across bare skin.")]") - user.visible_message(message = "\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(message = span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) playlewdinteractionsound(get_turf(user), 'modular_sand/sound/interactions/squelch1.ogg', 50, 1, -1) user.handle_post_sex(NORMAL_LUST, CUM_TARGET_HAND, user) @@ -68,7 +68,7 @@ "fills [u_His] own mouth with a big gulp of [u_His] warm [lowertext(milktext)]" ) - message = "\The [user] [pick(lines)]" + message = span_lewd("\The [user] [pick(lines)]") user.visible_message(message, ignored_mobs = user.get_unconsenting()) playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/oral1.ogg', 'modular_sand/sound/interactions/oral2.ogg'), 70, 1, -1) diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/self/jack.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/self/jack.dm index f07e3a7c72..5213c5fe4c 100644 --- a/modular_sand/code/datums/interactions/interaction_datums/lewd/self/jack.dm +++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/self/jack.dm @@ -28,6 +28,6 @@ playlewdinteractionsound(get_turf(user), pick('modular_sand/sound/interactions/bang1.ogg', 'modular_sand/sound/interactions/bang2.ogg', 'modular_sand/sound/interactions/bang3.ogg'), 70, 1, -1) - user.visible_message(message = "\The [user] [message]", ignored_mobs = user.get_unconsenting()) + user.visible_message(message = span_lewd("\The [user] [message]"), ignored_mobs = user.get_unconsenting()) if(user.can_penetrating_genital_cum()) user.handle_post_sex(NORMAL_LUST, CUM_TARGET_HAND, user) diff --git a/modular_sand/code/datums/interactions/interaction_interface.dm b/modular_sand/code/datums/interactions/interaction_interface.dm index 9cf8fb2e1f..2d7f794132 100644 --- a/modular_sand/code/datums/interactions/interaction_interface.dm +++ b/modular_sand/code/datums/interactions/interaction_interface.dm @@ -12,6 +12,28 @@ usr.mind.interaction_holder.target = src usr.mind.interaction_holder.ui_interact(usr) +/* +/// Allows "cyborg" players to change gender at will +/mob/living/silicon/robot/verb/toggle_gender() + set name = "Set Gender" + set desc = "Allows you to set your gender." + + if(stat != CONSCIOUS) + 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")) + switch(choice) + if("Both") + has_penis = TRUE + has_vagina = TRUE + if("Male") + has_penis = TRUE + has_vagina = FALSE + if("Female") + has_penis = FALSE + has_vagina = TRUE +*/ #define INTERACTION_NORMAL 0 #define INTERACTION_LEWD 1 @@ -112,6 +134,7 @@ && !(HAS_TRAIT(get_genitals, TRAIT_PERMABONER) \ || HAS_TRAIT(get_genitals, TRAIT_NEVERBONER))) genital_entry["arousal_state"] = genital.aroused_state + genital_entry["always_accessible"] = genital.always_accessible genitals += list(genital_entry) if(iscarbon(self) && !self.getorganslot(ORGAN_SLOT_ANUS)) var/simulated_ass = list() @@ -127,6 +150,7 @@ visibility = "Always hidden" simulated_ass["visibility"] = visibility simulated_ass["possible_choices"] = GLOB.genitals_visibility_toggles - GEN_VISIBLE_NO_CLOTHES + simulated_ass["always_accessible"] = self.anus_always_accessible genitals += list(simulated_ass) .["genitals"] = genitals @@ -233,16 +257,25 @@ var/original_state = genital.aroused_state genital.set_aroused_state(params["set_arousal"])// i'm not making it just `!aroused_state` because if(original_state != genital.aroused_state) // someone just might port skyrat's new genitals - to_chat(self, "[genital.aroused_state ? genital.arousal_verb : genital.unarousal_verb].") + to_chat(self, span_userlove("[genital.aroused_state ? genital.arousal_verb : genital.unarousal_verb].")) . = TRUE else - to_chat(self, "You can't make that genital [genital.aroused_state ? "unaroused" : "aroused"]!") + to_chat(self, span_userlove("You can't make that genital [genital.aroused_state ? "unaroused" : "aroused"]!")) . = FALSE genital.update_appearance() if(ishuman(self)) var/mob/living/carbon/human/human = self human.update_genitals() return + if("set_accessibility" in params) + if(!self.getorganslot(ORGAN_SLOT_ANUS) && params["genital"] == "anus") + self.toggle_anus_always_accessible() + return TRUE + var/obj/item/organ/genital/genital = locate(params["genital"], self.internal_organs) + if(!genital) + return FALSE + genital.toggle_accessibility() + return TRUE else return FALSE if("genital_interaction") diff --git a/modular_sand/code/datums/interactions/lewd_definitions.dm b/modular_sand/code/datums/interactions/lewd_definitions.dm index e674722e45..643dfeafb8 100644 --- a/modular_sand/code/datums/interactions/lewd_definitions.dm +++ b/modular_sand/code/datums/interactions/lewd_definitions.dm @@ -21,8 +21,9 @@ var/has_balls = FALSE var/has_vagina = FALSE var/has_anus = TRUE - var/has_breasts = FALSE var/has_butt = FALSE + var/anus_always_accessible = FALSE + var/has_breasts = FALSE var/anus_exposed = FALSE var/last_partner var/last_orifice @@ -85,6 +86,9 @@ lust = num lastlusttime = world.time +/mob/living/proc/toggle_anus_always_accessible() + anus_always_accessible = !anus_always_accessible + /mob/living/proc/has_genital(slot, visibility = REQUIRE_ANY) var/mob/living/carbon/C = src if(istype(C)) @@ -94,7 +98,7 @@ if(REQUIRE_ANY) return TRUE if(REQUIRE_EXPOSED) - return genital.is_exposed() + return genital.is_exposed() || genital.always_accessible if(REQUIRE_UNEXPOSED) return !genital.is_exposed() else @@ -127,9 +131,9 @@ for(var/obj/item/clothing/cloth in get_equipped_items()) if(istype(cloth, /obj/item/clothing/underwear/briefs/strapon)) return cloth - + return null - + /mob/living/proc/can_penetrating_genital_cum() return has_penis() @@ -161,6 +165,8 @@ if(REQUIRE_ANY) return TRUE if(REQUIRE_EXPOSED) + if (has_anus && anus_always_accessible) + return TRUE switch(anus_exposed) if(-1) return FALSE @@ -340,29 +346,11 @@ return TRUE return FALSE -/mob/living/proc/has_butt(var/nintendo = REQUIRE_ANY) +/mob/living/proc/has_butt(visibility = REQUIRE_ANY) var/mob/living/carbon/C = src if(has_butt && !istype(C)) return TRUE - if(istype(C)) - var/obj/item/organ/genital/peepee = C.getorganslot(ORGAN_SLOT_BUTT) - if(peepee) - switch(nintendo) - if(REQUIRE_ANY) - return TRUE - if(REQUIRE_EXPOSED) - if(peepee.is_exposed()) - return TRUE - else - return FALSE - if(REQUIRE_UNEXPOSED) - if(!peepee.is_exposed()) - return TRUE - else - return FALSE - else - return TRUE - return FALSE + return has_genital(ORGAN_SLOT_BUTT, visibility) ///Are we wearing something that covers our chest? /mob/living/proc/is_topless() @@ -413,9 +401,9 @@ if(moan == lastmoan) moan-- if(!is_muzzled()) - visible_message(message = "\The [src] [pick("moans", "moans in pleasure")].", ignored_mobs = get_unconsenting()) + visible_message(message = span_lewd("\The [src] [pick("moans", "moans in pleasure")]."), ignored_mobs = get_unconsenting()) if(is_muzzled())//immursion - audible_message("[src] [pick("mimes a pleasured moan","moans in silence")].") + audible_message(span_lewd("[src] [pick("mimes a pleasured moan","moans in silence")].")) lastmoan = moan /mob/living/proc/cum(mob/living/partner, target_orifice) @@ -776,7 +764,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 = "\The [src] [message]", ignored_mobs = get_unconsenting()) + visible_message(message = span_userlove("\The [src] [message]"), ignored_mobs = get_unconsenting()) multiorgasms += 1 COOLDOWN_START(src, refractory_period, (rand(300, 900) - get_sexual_potency()))//sex cooldown diff --git a/modular_sand/code/datums/interactions/lewd_interactions.dm b/modular_sand/code/datums/interactions/lewd_interactions.dm index 43199355d2..2171ec0b7f 100644 --- a/modular_sand/code/datums/interactions/lewd_interactions.dm +++ b/modular_sand/code/datums/interactions/lewd_interactions.dm @@ -74,17 +74,17 @@ return FALSE if(user_not_tired && !COOLDOWN_FINISHED(user, refractory_period)) if(!silent) //bye spam - to_chat(user, "You're still exhausted from the last time. You need to wait [DisplayTimeText(COOLDOWN_TIMELEFT(user, refractory_period), 1)] until you can do that!") + to_chat(user, span_warning("You're still exhausted from the last time. You need to wait [DisplayTimeText(COOLDOWN_TIMELEFT(user, refractory_period), 1)] until you can do that!")) return FALSE if(require_user_bottomless && !user.is_bottomless()) if(!silent) - to_chat(user, "Your pants are in the way.") + to_chat(user, span_warning("Your pants are in the way.")) return FALSE if(require_user_topless && !user.is_topless()) if(!silent) - to_chat(user, "Your top is in the way.") + to_chat(user, span_warning("Your top is in the way.")) return FALSE if(require_user_penis) @@ -92,17 +92,17 @@ if(REQUIRE_EXPOSED) if(!user.has_penis(REQUIRE_EXPOSED) && !user.has_strapon(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Your penis need to be exposed.") + to_chat(user, span_warning("Your penis need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!user.has_penis(REQUIRE_ANY) && !user.has_strapon(REQUIRE_ANY)) if(!silent) - to_chat(user, "You don't have a penis.") + to_chat(user, span_warning("You don't have a penis.")) return FALSE if(REQUIRE_UNEXPOSED) if(!user.has_penis(REQUIRE_UNEXPOSED) && !user.has_strapon(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Your penis need to be unexposed.") + to_chat(user, span_warning("Your penis need to be unexposed.")) return FALSE if(require_user_balls) @@ -110,17 +110,17 @@ if(REQUIRE_EXPOSED) if(!user.has_balls(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Your balls need to be exposed.") + to_chat(user, span_warning("Your balls need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!user.has_balls(REQUIRE_ANY)) if(!silent) - to_chat(user, "You don't have balls.") + to_chat(user, span_warning("You don't have balls.")) return FALSE if(REQUIRE_UNEXPOSED) if(!user.has_balls(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Your balls need to be unexposed.") + to_chat(user, span_warning("Your balls need to be unexposed.")) return FALSE if(require_user_anus) @@ -128,17 +128,17 @@ if(REQUIRE_EXPOSED) if(!user.has_anus(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Your anus need to be exposed.") + to_chat(user, span_warning("Your anus need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!user.has_anus(REQUIRE_ANY)) if(!silent) - to_chat(user, "You don't have an anus.") + to_chat(user, span_warning("You don't have an anus.")) return FALSE if(REQUIRE_UNEXPOSED) if(!user.has_anus(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Your anus need to be unexposed.") + to_chat(user, span_warning("Your anus need to be unexposed.")) return FALSE if(require_user_vagina) @@ -146,17 +146,17 @@ if(REQUIRE_EXPOSED) if(!user.has_vagina(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Your vagina need to be exposed.") + to_chat(user, span_warning("Your vagina need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!user.has_vagina(REQUIRE_ANY)) if(!silent) - to_chat(user, "You don't have a vagina.") + to_chat(user, span_warning("You don't have a vagina.")) return FALSE if(REQUIRE_UNEXPOSED) if(!user.has_vagina(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Your vagina need to be unexposed.") + to_chat(user, span_warning("Your vagina need to be unexposed.")) return FALSE if(require_user_breasts) @@ -164,17 +164,17 @@ if(REQUIRE_EXPOSED) if(!user.has_breasts(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Your breasts need to be exposed.") + to_chat(user, span_warning("Your breasts need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!user.has_breasts(REQUIRE_ANY)) if(!silent) - to_chat(user, "You don't have breasts.") + to_chat(user, span_warning("You don't have breasts.")) return FALSE if(REQUIRE_UNEXPOSED) if(!user.has_breasts(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Your breasts need to be unexposed.") + to_chat(user, span_warning("Your breasts need to be unexposed.")) return FALSE if(require_user_feet) @@ -182,22 +182,22 @@ if(REQUIRE_EXPOSED) if(!user.has_feet(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Your feet need to be exposed.") + to_chat(user, span_warning("Your feet need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!user.has_feet(REQUIRE_ANY)) if(!silent) - to_chat(user, "You don't have enough feet.") + to_chat(user, span_warning("You don't have enough feet.")) return FALSE if(REQUIRE_UNEXPOSED) if(!user.has_feet(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Your feet need to be unexposed.") + to_chat(user, span_warning("Your feet need to be unexposed.")) return FALSE if(require_user_num_feet && (user.get_num_feet() < require_user_num_feet)) if(!silent) - to_chat(user, "You don't have enough feet.") + to_chat(user, span_warning("You don't have enough feet.")) return FALSE if(require_user_eyes) @@ -205,17 +205,17 @@ if(REQUIRE_EXPOSED) if(!user.has_eyes(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Your eyes need to be exposed.") + to_chat(user, span_warning("Your eyes need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!user.has_eyes(REQUIRE_ANY)) if(!silent) - to_chat(user, "You don't have eyes.") + to_chat(user, span_warning("You don't have eyes.")) return FALSE if(REQUIRE_UNEXPOSED) if(!user.has_eyes(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Your eyes need to be unexposed.") + to_chat(user, span_warning("Your eyes need to be unexposed.")) return FALSE if(require_user_eyesockets) @@ -223,17 +223,17 @@ if(REQUIRE_EXPOSED) if(!user.has_eyesockets(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Your eyesockets need to be exposed.") + to_chat(user, span_warning("Your eyesockets need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!user.has_eyesockets(REQUIRE_ANY)) if(!silent) - to_chat(user, "You still have eyes.") + to_chat(user, span_warning("You still have eyes.")) return FALSE if(REQUIRE_UNEXPOSED) if(!user.has_eyesockets(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Your eyesockets need to be unexposed.") + to_chat(user, span_warning("Your eyesockets need to be unexposed.")) return FALSE if(require_user_ears) @@ -241,17 +241,17 @@ if(REQUIRE_EXPOSED) if(!user.has_ears(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Your ears need to be exposed.") + to_chat(user, span_warning("Your ears need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!user.has_ears(REQUIRE_ANY)) if(!silent) - to_chat(user, "You don't have ears.") + to_chat(user, span_warning("You don't have ears.")) return FALSE if(REQUIRE_UNEXPOSED) if(!user.has_ears(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Your ears need to be unexposed.") + to_chat(user, span_warning("Your ears need to be unexposed.")) return FALSE if(require_user_earsockets) @@ -259,17 +259,17 @@ if(REQUIRE_EXPOSED) if(!user.has_earsockets(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Your earsockets need to be exposed.") + to_chat(user, span_warning("Your earsockets need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!user.has_earsockets(REQUIRE_ANY)) if(!silent) - to_chat(user, "You still have eyes.") + to_chat(user, span_warning("You still have eyes.")) return FALSE if(REQUIRE_UNEXPOSED) if(!user.has_earsockets(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Your earsockets need to be unexposed.") + to_chat(user, span_warning("Your earsockets need to be unexposed.")) return FALSE if(extreme) @@ -277,7 +277,7 @@ if(cli) if(cli.prefs.extremepref == "No") if(!silent) - to_chat(user, "That's way too much for you.") + to_chat(user, span_warning("That's way too much for you.")) return FALSE if(require_ooc_consent) @@ -293,17 +293,17 @@ return FALSE if(target_not_tired && !COOLDOWN_FINISHED(target, refractory_period)) if(!silent) //same with this - to_chat(user, "They're still exhausted from the last time. They need to wait [DisplayTimeText(COOLDOWN_TIMELEFT(target, refractory_period), 1)] until you can do that!") + to_chat(user, span_warning("They're still exhausted from the last time. They need to wait [DisplayTimeText(COOLDOWN_TIMELEFT(target, refractory_period), 1)] until you can do that!")) return FALSE if(require_target_bottomless && !target.is_bottomless()) if(!silent) - to_chat(user, "Their pants are in the way.") + to_chat(user, span_warning("Their pants are in the way.")) return FALSE if(require_target_topless && !target.is_topless()) if(!silent) - to_chat(user, "Their clothes are in the way.") + to_chat(user, span_warning("Their clothes are in the way.")) return FALSE if(require_target_penis) @@ -311,17 +311,17 @@ if(REQUIRE_EXPOSED) if(!target.has_penis(REQUIRE_EXPOSED) && !target.has_strapon(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Their penis needs to be exposed.") + to_chat(user, span_warning("Their penis needs to be exposed.")) return FALSE if(REQUIRE_ANY) if(!target.has_penis(REQUIRE_ANY) && !target.has_strapon(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "They don't have a penis.") + to_chat(user, span_warning("They don't have a penis.")) return FALSE if(REQUIRE_UNEXPOSED) if(!target.has_penis(REQUIRE_UNEXPOSED) && !target.has_strapon(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Their penis needs to be unexposed.") + to_chat(user, span_warning("Their penis needs to be unexposed.")) return FALSE if(require_target_balls) @@ -329,17 +329,17 @@ if(REQUIRE_EXPOSED) if(!target.has_balls(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Their balls need to be exposed.") + to_chat(user, span_warning("Their balls need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!target.has_balls(REQUIRE_ANY)) if(!silent) - to_chat(user, "They don't have balls.") + to_chat(user, span_warning("They don't have balls.")) return FALSE if(REQUIRE_UNEXPOSED) if(!target.has_balls(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Their balls need to be unexposed.") + to_chat(user, span_warning("Their balls need to be unexposed.")) return FALSE if(require_target_anus) @@ -347,17 +347,17 @@ if(REQUIRE_EXPOSED) if(!target.has_anus(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Their anus needs to be exposed.") + to_chat(user, span_warning("Their anus needs to be exposed.")) return FALSE if(REQUIRE_ANY) if(!target.has_anus(REQUIRE_ANY)) if(!silent) - to_chat(user, "They don't have an anus.") + to_chat(user, span_warning("They don't have an anus.")) return FALSE if(REQUIRE_UNEXPOSED) if(!target.has_anus(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Their anus needs to be unexposed.") + to_chat(user, span_warning("Their anus needs to be unexposed.")) return FALSE if(require_target_vagina) @@ -365,17 +365,17 @@ if(REQUIRE_EXPOSED) if(!target.has_vagina(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Their vagina needs to be exposed.") + to_chat(user, span_warning("Their vagina needs to be exposed.")) return FALSE if(REQUIRE_ANY) if(!target.has_vagina(REQUIRE_ANY)) if(!silent) - to_chat(user, "They don't have a vagina.") + to_chat(user, span_warning("They don't have a vagina.")) return FALSE if(REQUIRE_UNEXPOSED) if(!target.has_vagina(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Their vagina needs to be unexposed.") + to_chat(user, span_warning("Their vagina needs to be unexposed.")) return FALSE if(require_target_breasts) @@ -383,17 +383,17 @@ if(REQUIRE_EXPOSED) if(!target.has_breasts(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Their breasts need to be exposed.") + to_chat(user, span_warning("Their breasts need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!target.has_breasts(REQUIRE_ANY)) if(!silent) - to_chat(user, "They don't have breasts.") + to_chat(user, span_warning("They don't have breasts.")) return FALSE if(REQUIRE_UNEXPOSED) if(!target.has_breasts(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Their breasts need to be unexposed.") + to_chat(user, span_warning("Their breasts need to be unexposed.")) return FALSE if(require_target_feet) @@ -401,22 +401,22 @@ if(REQUIRE_EXPOSED) if(!target.has_feet(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Their feet need to be exposed.") + to_chat(user, span_warning("Their feet need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!target.has_feet(REQUIRE_ANY)) if(!silent) - to_chat(user, "They don't have enough feet.") + to_chat(user, span_warning("They don't have enough feet.")) return FALSE if(REQUIRE_UNEXPOSED) if(!target.has_feet(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Their feet need to be unexposed.") + to_chat(user, span_warning("Their feet need to be unexposed.")) return FALSE if(require_target_num_feet && (target.get_num_feet() < require_target_num_feet)) if(!silent) - to_chat(user, "They don't have enough feet.") + to_chat(user, span_warning("They don't have enough feet.")) return FALSE if(require_target_eyes) @@ -424,17 +424,17 @@ if(REQUIRE_EXPOSED) if(!target.has_eyes(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Their eyes need to be exposed.") + to_chat(user, span_warning("Their eyes need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!target.has_eyes(REQUIRE_ANY)) if(!silent) - to_chat(user, "They don't have eyes.") + to_chat(user, span_warning("They don't have eyes.")) return FALSE if(REQUIRE_UNEXPOSED) if(!target.has_eyes(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Their eyes need to be unexposed.") + to_chat(user, span_warning("Their eyes need to be unexposed.")) return FALSE if(require_target_eyesockets) @@ -442,17 +442,17 @@ if(REQUIRE_EXPOSED) if(!target.has_eyesockets(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Their eyesockets need to be exposed.") + to_chat(user, span_warning("Their eyesockets need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!target.has_eyesockets(REQUIRE_ANY)) if(!silent) - to_chat(user, "They still have eyes.") + to_chat(user, span_warning("They still have eyes.")) return FALSE if(REQUIRE_UNEXPOSED) if(!target.has_eyesockets(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Their eyesockets need to be unexposed.") + to_chat(user, span_warning("Their eyesockets need to be unexposed.")) return FALSE if(require_target_ears) @@ -460,17 +460,17 @@ if(REQUIRE_EXPOSED) if(!target.has_ears(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Their ears need to be exposed.") + to_chat(user, span_warning("Their ears need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!target.has_ears(REQUIRE_ANY)) if(!silent) - to_chat(user, "They don't have ears.") + to_chat(user, span_warning("They don't have ears.")) return FALSE if(REQUIRE_UNEXPOSED) if(!target.has_ears(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Their ears need to be unexposed.") + to_chat(user, span_warning("Their ears need to be unexposed.")) return FALSE if(require_target_earsockets) @@ -478,17 +478,17 @@ if(REQUIRE_EXPOSED) if(!target.has_earsockets(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Their earsockets need to be exposed.") + to_chat(user, span_warning("Their earsockets need to be exposed.")) return FALSE if(REQUIRE_ANY) if(!target.has_earsockets(REQUIRE_ANY)) if(!silent) - to_chat(user, "They still have eyes.") + to_chat(user, span_warning("They still have eyes.")) return FALSE if(REQUIRE_UNEXPOSED) if(!target.has_earsockets(REQUIRE_UNEXPOSED)) if(!silent) - to_chat(user, "Their earsockets need to be unexposed.") + to_chat(user, span_warning("Their earsockets need to be unexposed.")) return FALSE if(extreme) @@ -496,7 +496,7 @@ if(cli) if(target.client.prefs.extremepref == "No") if(!silent) - to_chat(user, "For some reason, you don't want to do this to [target].") + to_chat(user, span_warning("For some reason, you don't want to do this to [target].")) return FALSE if(require_ooc_consent) diff --git a/modular_sand/code/datums/interactions/lewd_objects.dm b/modular_sand/code/datums/interactions/lewd_objects.dm index e90b76abc7..c2bb19045a 100644 --- a/modular_sand/code/datums/interactions/lewd_objects.dm +++ b/modular_sand/code/datums/interactions/lewd_objects.dm @@ -22,7 +22,7 @@ if(M.has_mouth() && !M.is_mouth_covered()) message = (user == M) ? pick("fucks [possessive_verb] own mouth with \the [src]", "shoves \the [src] into [possessive_verb] mouth", "jams \the [src] into [possessive_verb] mouth") : pick("fucks [M]'s mouth with \the [src]", "jams \the [src] into [M]'s mouth") if(message) - user.visible_message("[user] [message].") + user.visible_message(span_lewd("[user] [message].")) M.handle_post_sex(lust_amt, null, user) playsound(loc, pick('modular_sand/sound/interactions/bang4.ogg', 'modular_sand/sound/interactions/bang5.ogg', @@ -32,7 +32,7 @@ /obj/item/dildo/attack_self(mob/living/carbon/human/user as mob) hole = hole == CUM_TARGET_VAGINA ? CUM_TARGET_ANUS : CUM_TARGET_VAGINA - to_chat(user, "Now targetting \the [hole].") + to_chat(user, span_notice("Now targetting \the [hole].")) //begin redds code /obj/item/dildo/cyborg diff --git a/modular_sand/code/datums/traits/negative.dm b/modular_sand/code/datums/traits/negative.dm index 4b4f158ef8..3a50591875 100644 --- a/modular_sand/code/datums/traits/negative.dm +++ b/modular_sand/code/datums/traits/negative.dm @@ -3,8 +3,8 @@ desc = "For one reason or another, you either can't or haven't learned the common tongue." value = 0 mob_trait = TRAIT_SHELTERED - gain_text = "The words of others begin to blur together..." - lose_text = "You start putting together what people are saying!" + gain_text = span_danger("The words of others begin to blur together...") + lose_text = span_notice("You start putting together what people are saying!") medical_record_text = "Patient has shown an inability to use common speaking languages." /datum/quirk/sheltered/on_spawn() diff --git a/modular_sand/code/datums/traits/neutral.dm b/modular_sand/code/datums/traits/neutral.dm index 33cc31da0d..89486dc153 100644 --- a/modular_sand/code/datums/traits/neutral.dm +++ b/modular_sand/code/datums/traits/neutral.dm @@ -18,7 +18,7 @@ value = 0 human_only = TRUE mob_trait = TRAIT_INFERTILE - gain_text = "Your womb starts feeling dry and empty, all the life in it begins to fade away..." - lose_text = "You feel the warm blow of life flooding your womb, full of newfound, vibrant fertility!" + gain_text = span_notice("Your womb starts feeling dry and empty, all the life in it begins to fade away...") + lose_text = span_love("You feel the warm blow of life flooding your womb, full of newfound, vibrant fertility!") medical_record_text = "Patient doesn't seem able to ovulate properly..." */ diff --git a/modular_sand/code/game/machinery/autodoc.dm b/modular_sand/code/game/machinery/autodoc.dm index 5d8fa2429e..fcd00555c4 100644 --- a/modular_sand/code/game/machinery/autodoc.dm +++ b/modular_sand/code/game/machinery/autodoc.dm @@ -26,11 +26,11 @@ /obj/machinery/autodoc/examine(mob/user) . = ..() if((obj_flags & EMAGGED) && panel_open) - . += "[src]'s surgery protocols have been corrupted!" + . += span_warning("[src]'s surgery protocols have been corrupted!") if(processing) - . += "[src] is currently inserting [storedorgan] into [occupant]." + . += span_notice("[src] is currently inserting [storedorgan] into [occupant].") else if(storedorgan) - . += "[src] is prepared to insert [storedorgan]." + . += span_notice("[src] is prepared to insert [storedorgan].") /obj/machinery/autodoc/close_machine(mob/user) ..() @@ -40,16 +40,16 @@ occupant.forceMove(drop_location()) occupant = null return - to_chat(occupant, "You enter [src].") + to_chat(occupant, span_notice("You enter [src].")) dosurgery() /obj/machinery/autodoc/proc/dosurgery() if(!storedorgan && !(obj_flags & EMAGGED)) - to_chat(occupant, "[src] currently has no implant stored.") + to_chat(occupant, span_notice("[src] currently has no implant stored.")) return - occupant.visible_message("[occupant] presses a button on [src], and you hear a mechanical noise.", "You feel a sharp sting as [src] starts inserting the organ into your body.") + occupant.visible_message(span_notice("[occupant] presses a button on [src], and you hear a mechanical noise."), span_notice("You feel a sharp sting as [src] starts inserting the organ into your body.")) playsound(get_turf(occupant), 'sound/weapons/circsawhit.ogg', 50, 1) processing = TRUE update_icon() @@ -66,7 +66,7 @@ if(!processing) return - occupant.visible_message("[src] dismembers [occupant]!", "[src] saws up your body!") + occupant.visible_message(span_warning("[src] dismembers [occupant]!"), span_warning("[src] saws up your body!")) else sleep(surgerytime) @@ -78,14 +78,14 @@ currentorgan.forceMove(get_turf(src)) storedorgan.Insert(occupant)//insert stored organ into the user storedorgan = null - occupant.visible_message("[src] completes the surgery procedure.", "[src] inserts the organ into your body.") + occupant.visible_message(span_notice("[src] completes the surgery procedure."), span_notice("[src] inserts the organ into your body.")) playsound(src, 'sound/machines/microwave/microwave-end.ogg', 100, 0) processing = FALSE open_machine() /obj/machinery/autodoc/open_machine(mob/user) if(processing) - occupant.visible_message("[user] cancels [src]'s procedure.", "[src] stops inserting the organ into your body.") + occupant.visible_message(span_notice("[user] cancels [src]'s procedure."), span_notice("[src] stops inserting the organ into your body.")) processing = FALSE if(occupant) occupant.forceMove(drop_location()) @@ -94,7 +94,7 @@ /obj/machinery/autodoc/interact(mob/user) if(panel_open) - to_chat(user, "Close the maintenance panel first.") + to_chat(user, span_notice("Close the maintenance panel first.")) return if(state_open) @@ -106,13 +106,13 @@ /obj/machinery/autodoc/attackby(obj/item/I, mob/user, params) if(istype(I, organ_type)) if(storedorgan) - to_chat(user, "[src] already has an implant stored.") + to_chat(user, span_notice("[src] already has an implant stored.")) return if(!user.transferItemToLoc(I, src)) return storedorgan = I I.forceMove(src) - to_chat(user, "You insert the [I] into [src].") + to_chat(user, span_notice("You insert the [I] into [src].")) else return ..() @@ -121,10 +121,10 @@ if(..()) return if(occupant) - to_chat(user, "[src] is currently occupied!") + to_chat(user, span_warning("[src] is currently occupied!")) return if(state_open) - to_chat(user, "[src] must be closed to [panel_open ? "close" : "open"] its maintenance hatch!") + to_chat(user, span_warning("[src] must be closed to [panel_open ? "close" : "open"] its maintenance hatch!")) return if(default_deconstruction_screwdriver(user, icon_state, icon_state, I)) if(storedorgan) @@ -164,4 +164,4 @@ if(obj_flags & EMAGGED) return obj_flags |= EMAGGED - to_chat(user, "You reprogram [src]'s surgery procedures.") + to_chat(user, span_warning("You reprogram [src]'s surgery procedures.")) diff --git a/modular_sand/code/game/machinery/cryptominers.dm b/modular_sand/code/game/machinery/cryptominers.dm index a3c6eccac9..33f87a8e9f 100644 --- a/modular_sand/code/game/machinery/cryptominers.dm +++ b/modular_sand/code/game/machinery/cryptominers.dm @@ -52,19 +52,19 @@ if(id_card) var/obj/item/card/id/CARD = id_card if(CARD.bank_support != ID_FREE_BANK_ACCOUNT) - to_chat(user, "This ID has no banking support whatsover, must be an older model...") + to_chat(user, span_warning("This ID has no banking support whatsover, must be an older model...")) return if(!CARD.registered_account) - to_chat(user, "ERROR: No bank account found.") + to_chat(user, span_warning("ERROR: No bank account found.")) return - to_chat(user, "You link \the [CARD] to \the [src].") + to_chat(user, span_notice("You link \the [CARD] to \the [src].")) pay_me = CARD.registered_account - say("Now using [pay_me.account_holder ? "[pay_me.account_holder]'s" : "ERROR"] account.") + say("Now using [pay_me.account_holder ? "[pay_me.account_holder]'s" : span_boldwarning("ERROR")] account.") return /obj/machinery/cryptominer/AltClick(mob/user) - user.visible_message("[user] begins resetting \the [src].", - "You begin resetting \the [src].") + user.visible_message(span_warning("[user] begins resetting \the [src]."), + span_warning("You begin resetting \the [src].")) balloon_alert(user, "resetting") if(do_after(user, 5 SECONDS, target = src)) pay_me = SSeconomy.get_dep_account(ACCOUNT_CAR) @@ -73,7 +73,7 @@ /obj/machinery/cryptominer/examine(mob/user) . = ..() if(in_range(user, src) || isobserver(user)) - . += "A little screen on the machine reads: Currently the linked bank account is [pay_me.account_holder ? "[pay_me.account_holder]'s" : "ERROR"]." + . += span_notice("A little screen on the machine reads: Currently the linked bank account is [pay_me.account_holder ? "[pay_me.account_holder]'s" : span_boldwarning("ERROR")].") . += "Modify the destination of the credits using your id on it while it is inactive and has it's panel open." . += "Alt-Click to reset to the Cargo budget." @@ -101,17 +101,17 @@ var/datum/gas_mixture/env = T.return_air() if(!env) return - + // Get temp var/env_temp = env.return_temperature() - + // Check for temperature effects // Minimum (most likely) if(env_temp <= mintemp) produce_points(3) // Mid else if((env_temp <= midtemp) && (env_temp >= mintemp)) - produce_points(1) + produce_points(1) // Maximum else if((env_temp <= maxtemp) && (env_temp >= midtemp)) produce_points(0.20) @@ -120,7 +120,7 @@ say("Critical overheating detected! Shutting off!") playsound(loc, 'sound/machines/beep.ogg', 50, TRUE, -1) set_mining(FALSE) - + // Increase heat by heatingPower env.set_temperature(env_temp + heatingPower) @@ -135,13 +135,13 @@ /obj/machinery/cryptominer/attack_hand(mob/living/user) . = ..() if(!is_operational()) - to_chat(user, "[src] has to be on to do this!") + to_chat(user, span_warning("[src] has to be on to do this!")) balloon_alert(user, "no power!") return FALSE if(mining) set_mining(FALSE) - visible_message("[src] slowly comes to a halt.", - "You turn off [src].") + visible_message(span_warning("[src] slowly comes to a halt."), + span_warning("You turn off [src].")) balloon_alert(user, "turned off") return balloon_alert(user, "turned on") diff --git a/modular_sand/code/game/mecha/mecha_construction_paths.dm b/modular_sand/code/game/mecha/mecha_construction_paths.dm index 4459823bc0..5b55ec5221 100644 --- a/modular_sand/code/game/mecha/mecha_construction_paths.dm +++ b/modular_sand/code/game/mecha/mecha_construction_paths.dm @@ -102,45 +102,45 @@ switch(index) if(1) - user.visible_message("[user] wrenches [parent]'s parts.", "You wrench [parent]'s parts.") + user.visible_message("[user] wrenches [parent]'s parts.", span_notice("You wrench [parent]'s parts.")) if(2) if(diff==FORWARD) - user.visible_message("[user] welds [parent]'s parts.", "You weld [parent]'s parts") + user.visible_message("[user] welds [parent]'s parts.", span_notice("You weld [parent]'s parts")) else - user.visible_message("[user] unwrenches [parent]'s parts.", "You unwrench [parent]'s parts.") + user.visible_message("[user] unwrenches [parent]'s parts.", span_notice("You unwrench [parent]'s parts.")) if(3) if(diff==FORWARD) - user.visible_message("[user] slots bluespace crystals onto [parent].", "You slot the bluespace crystals onto [parent].") + user.visible_message("[user] slots bluespace crystals onto [parent].", span_notice("You slot the bluespace crystals onto [parent].")) else - user.visible_message("[user] unwelds [parent]'s parts.", "You unweld [parent]'s parts.") + user.visible_message("[user] unwelds [parent]'s parts.", span_notice("You unweld [parent]'s parts.")) if(4) if(diff==FORWARD) - user.visible_message("[user] secures the [parent]'s bluespace crystal slots.", "You secure the [parent]'s bluespace crystal slots") + user.visible_message("[user] secures the [parent]'s bluespace crystal slots.", span_notice("You secure the [parent]'s bluespace crystal slots")) else - user.visible_message("[user] removes the bluespace crystals from [parent].", "You remove [parent]'s bluespace crystals.") + user.visible_message("[user] removes the bluespace crystals from [parent].", span_notice("You remove [parent]'s bluespace crystals.")) if(5) if(diff==FORWARD) - user.visible_message("[user] slots the capacitor onto [parent].", "You slot the capacitor onto [parent].") + user.visible_message("[user] slots the capacitor onto [parent].", span_notice("You slot the capacitor onto [parent].")) else - user.visible_message("[user] unsecures the bluespace crystal slots from [parent].", "You unsecure [parent]'s bluespace crystal slots.") + user.visible_message("[user] unsecures the bluespace crystal slots from [parent].", span_notice("You unsecure [parent]'s bluespace crystal slots.")) if(6) if(diff==FORWARD) - user.visible_message("[user] secures [parent]'s capacitor.", "You secure [parent]'s capacitor.") + user.visible_message("[user] secures [parent]'s capacitor.", span_notice("You secure [parent]'s capacitor.")) else - user.visible_message("[user] removes the [parent]'s capacitor.", "You remove the [parent]'s capacitor.") + user.visible_message("[user] removes the [parent]'s capacitor.", span_notice("You remove the [parent]'s capacitor.")) if(7) if(diff==FORWARD) - user.visible_message("[user] wires the [parent].", "You wire the [parent].") + user.visible_message("[user] wires the [parent].", span_notice("You wire the [parent].")) else - user.visible_message("[user] unsecures [parent]'s capacitor.", "You unsecure [parent]'s capacitor.") + user.visible_message("[user] unsecures [parent]'s capacitor.", span_notice("You unsecure [parent]'s capacitor.")) if(8) if(diff==FORWARD) - user.visible_message("[user] links [parent]'s wires to the limbs.", "You link [parent]'s wires to the limbs.") + user.visible_message("[user] links [parent]'s wires to the limbs.", span_notice("You link [parent]'s wires to the limbs.")) else - user.visible_message("[user] snips off [parent]'s wires.", "You snip off [parent]'s wires.") + user.visible_message("[user] snips off [parent]'s wires.", span_notice("You snip off [parent]'s wires.")) if(9) if(diff==FORWARD) - user.visible_message("[user] welds [parent]'s external armor layer.", "You weld [parent]'s external armor layer.") + user.visible_message("[user] welds [parent]'s external armor layer.", span_notice("You weld [parent]'s external armor layer.")) else - user.visible_message("[user] unlinks [parent]'s wires from the limbs.", "You unlink [parent]'s wires from the limbs.") + user.visible_message("[user] unlinks [parent]'s wires from the limbs.", span_notice("You unlink [parent]'s wires from the limbs.")) return TRUE diff --git a/modular_sand/code/game/objects/items/borg_shapeshifter.dm b/modular_sand/code/game/objects/items/borg_shapeshifter.dm index 64878711b6..0216524d69 100644 --- a/modular_sand/code/game/objects/items/borg_shapeshifter.dm +++ b/modular_sand/code/game/objects/items/borg_shapeshifter.dm @@ -111,18 +111,18 @@ if(isturf(user.loc)) toggle(user) else - to_chat(user, "You can't use [src] while inside something!") + to_chat(user, span_warning("You can't use [src] while inside something!")) else - to_chat(user, "You need at least [activationCost] charge in your cell to use [src]!") + to_chat(user, span_warning("You need at least [activationCost] charge in your cell to use [src]!")) /obj/item/borg_shapeshifter/proc/toggle(mob/living/silicon/robot/user) if(active) playsound(src, 'sound/effects/pop.ogg', 100, TRUE, -6) - to_chat(user, "You deactivate \the [src].") + to_chat(user, span_notice("You deactivate \the [src].")) deactivate(user) else if(animation_playing) - to_chat(user, "\the [src] is recharging.") + to_chat(user, span_notice("\the [src] is recharging.")) return var/mob/living/silicon/robot/R = loc var/static/list/module_icons = sortList(list( @@ -574,7 +574,7 @@ return FALSE animation_playing = TRUE - to_chat(user, "You activate \the [src].") + to_chat(user, span_notice("You activate \the [src].")) playsound(src, 'sound/effects/seedling_chargeup.ogg', 100, TRUE, -6) var/start = user.filters.len var/X,Y,rsq,i,f @@ -591,10 +591,10 @@ animate(offset=f:offset-1, time=rand()*20+10) if (do_after(user, 50, target=user) && user.cell.use(activationCost)) playsound(src, 'sound/effects/bamf.ogg', 100, TRUE, -6) - to_chat(user, "You are now disguised as the Nanotrasen cyborg \"[friendlyName]\".") + to_chat(user, span_notice("You are now disguised as the Nanotrasen cyborg \"[friendlyName]\".")) activate(user, module_selection) else - to_chat(user, "The chameleon field fizzles.") + to_chat(user, span_warning("The chameleon field fizzles.")) do_sparks(3, FALSE, user) for(i=1, i<=min(7, user.filters.len), ++i) // removing filters that are animating does nothing, we gotta stop the animations first f = user.filters[start+i] @@ -656,7 +656,7 @@ /obj/item/borg_shapeshifter/proc/disrupt(mob/living/silicon/robot/user) if(active) - to_chat(user, "Your chameleon field deactivates.") + to_chat(user, span_danger("Your chameleon field deactivates.")) deactivate(user) /obj/item/borg_shapeshifter/stable diff --git a/modular_sand/code/game/objects/items/chrono_eraser.dm b/modular_sand/code/game/objects/items/chrono_eraser.dm index d3f803e38f..a168920e1d 100644 --- a/modular_sand/code/game/objects/items/chrono_eraser.dm +++ b/modular_sand/code/game/objects/items/chrono_eraser.dm @@ -86,7 +86,7 @@ var/mob/living/user = loc if(F.gun) if(isliving(user) && F.captured) - to_chat(user, "FAIL: [F.captured] already has an existing connection.") + to_chat(user, span_alert("FAIL: [F.captured] already has an existing connection.")) field_disconnect(F) else startpos = get_turf(src) @@ -94,7 +94,7 @@ F.gun = src if(isliving(user) && F.captured) playsound(user,'sound/effects/clock_tick.ogg' , 50, 1) - to_chat(user, "Connection established with target: [F.captured]") + to_chat(user, span_notice("Connection established with target: [F.captured]")) /obj/item/gun/energy/chrono_gun/proc/field_disconnect(obj/structure/chrono_field/F) @@ -104,7 +104,7 @@ F.gun = null if(isliving(user) && F.captured) F.captured.adjustOrganLoss(ORGAN_SLOT_BRAIN, 199, 199) //not so fast! - to_chat(user, "Disconnected from target: [F.captured]") + to_chat(user, span_alert("Disconnected from target: [F.captured]")) field = null startpos = null @@ -215,9 +215,9 @@ AM.forceMove(drop_location()) qdel(src) else if(tickstokill <= 0) - to_chat(captured, "As the last essence of your being is erased from time, you are taken back to your most enjoyable memory. You feel happy...") + to_chat(captured, span_boldnotice("As the last essence of your being is erased from time, you are taken back to your most enjoyable memory. You feel happy...")) playsound(captured,'sound/effects/lingreadapt.ogg' , 50, 1) - captured.visible_message("[captured] dematerialises out of the timestream!") + captured.visible_message(span_danger("[captured] dematerialises out of the timestream!")) var/mob/dead/observer/ghost = captured.ghostize(1) if(captured.mind) if(ghost) diff --git a/modular_sand/code/game/objects/items/computermath.dm b/modular_sand/code/game/objects/items/computermath.dm index 19a3e17512..2188f05ff9 100644 --- a/modular_sand/code/game/objects/items/computermath.dm +++ b/modular_sand/code/game/objects/items/computermath.dm @@ -240,7 +240,7 @@ // me fail arithmetic, me brian hurt playsound(src, 'sound/machines/buzz-sigh.ogg', 30, 1) if(difficulty == "Easy") // me fail arithmetic, me brian hurt //nice one, brain damage for it, very cool. - to_chat(user,"You feel sad after failing such an easy question...") + to_chat(user,span_warning("You feel sad after failing such an easy question...")) SEND_SIGNAL(LM, COMSIG_ADD_MOOD_EVENT, "failed_easy", /datum/mood_event/failed_easy) return diff --git a/modular_sand/code/game/objects/items/cosmetics.dm b/modular_sand/code/game/objects/items/cosmetics.dm index b43112c55c..10db30229e 100644 --- a/modular_sand/code/game/objects/items/cosmetics.dm +++ b/modular_sand/code/game/objects/items/cosmetics.dm @@ -4,7 +4,7 @@ /obj/item/razor/proc/new_hairstyle(mob/living/carbon/human/H, mob/user, mirror) var/location = user.zone_selected if (H == user && !mirror) - to_chat(user, "You need a mirror to properly style your own hair!") + to_chat(user, span_warning("You need a mirror to properly style your own hair!")) balloon_alert(user, "need mirror!") return if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) @@ -13,12 +13,12 @@ if(!new_style) return if(!get_location_accessible(H, location)) - to_chat(user, "The headgear is in the way!") + to_chat(user, span_warning("The headgear is in the way!")) balloon_alert(user, "headgear in the way!") return - user.visible_message("[user] tries to change [H]'s hairstyle using [src].", "You try to change [H]'s hairstyle using [src].") + user.visible_message(span_notice("[user] tries to change [H]'s hairstyle using [src]."), span_notice("You try to change [H]'s hairstyle using [src].")) if(new_style && do_after(user, 60, target = H)) - user.visible_message("[user] successfully changes [H]'s hairstyle using [src].", "You successfully change [H]'s hairstyle using [src].") + user.visible_message(span_notice("[user] successfully changes [H]'s hairstyle using [src]."), span_notice("You successfully change [H]'s hairstyle using [src].")) H.balloon_alert(user, "changed hairstyle") H.hair_style = new_style H.update_hair() @@ -26,7 +26,7 @@ /obj/item/razor/proc/new_facial_hairstyle(mob/living/carbon/human/H, mob/user, var/mirror) var/location = user.zone_selected if(H == user && !mirror) - to_chat(user, "You need a mirror to properly style your own facial hair!") + to_chat(user, span_warning("You need a mirror to properly style your own facial hair!")) balloon_alert(user, "need mirror!") return if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) @@ -35,12 +35,12 @@ if(!new_style) return if(!get_location_accessible(H, location)) - to_chat(user, "The mask is in the way!") + to_chat(user, span_warning("The mask is in the way!")) balloon_alert(user, "mask in the way!") return - user.visible_message("[user] tries to change [H]'s facial hair style using [src].", "You try to change [H]'s facial hair style using [src].") + user.visible_message(span_notice("[user] tries to change [H]'s facial hair style using [src]."), span_notice("You try to change [H]'s facial hair style using [src].")) if(new_style && do_after(user, 60, target = H)) - user.visible_message("[user] successfully changes [H]'s facial hair style using [src].", "You successfully change [H]'s facial hair style using [src].") + user.visible_message(span_notice("[user] successfully changes [H]'s facial hair style using [src]."), span_notice("You successfully change [H]'s facial hair style using [src].")) H.balloon_alert(user, "changed facial hair style") H.facial_hair_style = new_style H.update_hair() @@ -64,7 +64,7 @@ var/extended_icon_state = "straightrazor_open" /obj/item/razor/straightrazor/suicide_act(mob/user) - user.visible_message("[user] is slitting [user.p_their()] own throat with [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] is slitting [user.p_their()] own throat with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return (BRUTELOSS) /obj/item/razor/straightrazor/attack_self(mob/user) @@ -102,6 +102,6 @@ /obj/item/handmirror/attack_self(mob/user) ADD_TRAIT(user, TRAIT_SELF_AWARE, "mirror_trait") - to_chat(user, "You look into the mirror") + to_chat(user, span_notice("You look into the mirror")) sleep(15 SECONDS) REMOVE_TRAIT(user, TRAIT_SELF_AWARE, "mirror_trait") diff --git a/modular_sand/code/game/objects/items/devices/dogborg_sleeper.dm b/modular_sand/code/game/objects/items/devices/dogborg_sleeper.dm index 00f94fa31e..c0dbc0d4a4 100644 --- a/modular_sand/code/game/objects/items/devices/dogborg_sleeper.dm +++ b/modular_sand/code/game/objects/items/devices/dogborg_sleeper.dm @@ -25,20 +25,20 @@ if(!hound || !istype(target) || !proximity || target.anchored) return if(length(contents) > (max_item_count - 1)) - to_chat(user,"Your [src] is full. Eject or process contents to continue.") + to_chat(user,span_warning("Your [src] is full. Eject or process contents to continue.")) return if(isitem(target)) var/obj/item/I = target if(CheckAccepted(I)) - to_chat(user,"[I] registers an error code to your [src]") + to_chat(user,span_warning("[I] registers an error code to your [src]")) return if(I.w_class > WEIGHT_CLASS_NORMAL) - to_chat(user,"[I] is too large to fit into your [src]") + to_chat(user,span_warning("[I] is too large to fit into your [src]")) return - user.visible_message("[hound.name] is ingesting [I] into their [src.name].", "You start ingesting [target] into your [src.name]...") + user.visible_message(span_warning("[hound.name] is ingesting [I] into their [src.name]."), span_notice("You start ingesting [target] into your [src.name]...")) if(do_after(user, 15, target = target) && length(contents) < max_item_count) I.forceMove(src) - I.visible_message("[hound.name]'s garbage processor groans lightly as [I] slips inside.", "Your garbage compactor groans lightly as [I] slips inside.") + I.visible_message(span_warning("[hound.name]'s garbage processor groans lightly as [I] slips inside."), span_notice("Your garbage compactor groans lightly as [I] slips inside.")) playsound(hound, 'sound/machines/disposalflush.ogg', 50, 1) if(length(contents) > 11) //grow that tum after a certain junk amount hound.sleeper_r = 1 @@ -51,18 +51,18 @@ if(iscarbon(target) || issilicon(target)) var/mob/living/trashman = target if(!CHECK_BITFIELD(trashman.vore_flags,DEVOURABLE)) - to_chat(user, "[target] registers an error code to your [src]") + to_chat(user, span_warning("[target] registers an error code to your [src]")) return if(patient) - to_chat(user,"Your [src] is already occupied.") + to_chat(user,span_warning("Your [src] is already occupied.")) return if(trashman.buckled) - to_chat(user,"[trashman] is buckled and can not be put into your [src].") + to_chat(user,span_warning("[trashman] is buckled and can not be put into your [src].")) return - user.visible_message("[hound.name] is ingesting [trashman] into their [src].", "You start ingesting [trashman] into your [src.name]...") + user.visible_message(span_warning("[hound.name] is ingesting [trashman] into their [src]."), span_notice("You start ingesting [trashman] into your [src.name]...")) if(do_after(user, 30, target = trashman) && !patient && !trashman.buckled && length(contents) < max_item_count) trashman.forceMove(src) trashman.reset_perspective(src) update_gut(user) - user.visible_message("[hound.name]'s garbage processor groans lightly as [trashman] slips inside.", "Your garbage compactor groans lightly as [trashman] slips inside.") + user.visible_message(span_warning("[hound.name]'s garbage processor groans lightly as [trashman] slips inside."), span_notice("Your garbage compactor groans lightly as [trashman] slips inside.")) playsound(hound, 'sound/effects/bin_close.ogg', 80, 1) diff --git a/modular_sand/code/game/objects/items/devices/extra_arm.dm b/modular_sand/code/game/objects/items/devices/extra_arm.dm index 55a40eb163..35949fc463 100644 --- a/modular_sand/code/game/objects/items/devices/extra_arm.dm +++ b/modular_sand/code/game/objects/items/devices/extra_arm.dm @@ -11,8 +11,8 @@ M.change_number_of_hands(limbs+1) used = TRUE icon_state = "extra_arm_none" - M.visible_message("[M] presses a button on [src], and you hear a disgusting noise.", "You feel a sharp sting as [src] plunges into your body.") + M.visible_message(span_notice("[M] presses a button on [src], and you hear a disgusting noise."), span_notice("You feel a sharp sting as [src] plunges into your body.")) M.balloon_alert(M, "arm implanted") - to_chat(M, "You feel more dexterous.") + to_chat(M, span_notice("You feel more dexterous.")) playsound(get_turf(M), 'sound/misc/splort.ogg', 50, 1) desc += "Looks like it's been used up." diff --git a/modular_sand/code/game/objects/items/fleshlight.dm b/modular_sand/code/game/objects/items/fleshlight.dm index 5142ab1469..344d3eecd2 100644 --- a/modular_sand/code/game/objects/items/fleshlight.dm +++ b/modular_sand/code/game/objects/items/fleshlight.dm @@ -20,7 +20,7 @@ /obj/item/fleshlight/examine(mob/user) . = ..() - . += "Alt-Click \the [name] to customize it." + . += span_notice("Alt-Click \the [name] to customize it.") /obj/item/fleshlight/update_appearance(updates) . = ..() @@ -61,7 +61,7 @@ message = (user == M) ? "pumps [src] on [possessive_verb] [genital_name]" : "pumps \the [src] on [M]'s [genital_name]" lust_amt = NORMAL_LUST if(message) - user.visible_message("[user] [message].") + user.visible_message(span_lewd("[user] [message].")) M.handle_post_sex(lust_amt, null, user) playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/bang4.ogg', 'modular_sand/sound/interactions/bang5.ogg', @@ -107,9 +107,9 @@ /obj/item/portallight/examine(mob/user) . = ..() if(!portalunderwear) - . += "The device is unpaired. To pair, swipe against a pair of portal panties." + . += span_notice("The device is unpaired. To pair, swipe against a pair of portal panties.") else - . += "The device is paired, and awaiting input. " + . += span_notice("The device is paired, and awaiting input. ") /obj/item/portallight/update_appearance(updates) . = ..() @@ -122,7 +122,7 @@ var/target_lust_amt = NONE var/target var/mob/living/carbon/human/portal_target = ishuman(portalunderwear.loc) && (portalunderwear.current_equipped_slot & (ITEM_SLOT_UNDERWEAR | ITEM_SLOT_MASK)) ? portalunderwear.loc : null - + // This list is structured as [M's longname, M's shortname, wearer's longname, wearer's shortname] var/penis_names = list() for(var/mob/living/carbon/human/person in list(M, portal_target)) @@ -137,7 +137,7 @@ else LAZYADD(penis_names, "none") LAZYADD(penis_names, "none") - + if(ishuman(M) && (M?.client?.prefs?.toggles & VERB_CONSENT) && useable) // I promise all those checks are worth it! switch(user.zone_selected) if(BODY_ZONE_PRECISE_GROIN) @@ -416,7 +416,7 @@ else to_chat(user, "There is no [user.zone_selected == BODY_ZONE_R_LEG ? "right" : "left"] feet!") if(!useable) - to_chat(user, "It seems the device has failed or your partner is not wearing their device.") + to_chat(user, span_notice("It seems the device has failed or your partner is not wearing their device.")) if(user_message) if(portal_target && (portal_target?.client?.prefs.toggles & VERB_CONSENT || !portal_target.ckey)) user.visible_message("[user] [user_message].") @@ -514,7 +514,7 @@ to_chat(M, "urethra fleshlight cumming on dick") portal_target.do_jitter_animation() //make your partner shake too! else - user.visible_message("\The [src] beeps and does not let [M] through.") + user.visible_message(span_warning("\The [src] beeps and does not let [M] through.")) else if(user.a_intent == INTENT_HARM) return ..() @@ -607,7 +607,7 @@ if(isliving(portalunderwear.loc)) portalunderwear.audible_message("[icon2html(portalunderwear, hearers(portalunderwear))] *beep* *beep* *beep*") playsound(portalunderwear, 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE) - to_chat(portalunderwear.loc, "The panties beep as the link to the [src] is lost.") + to_chat(portalunderwear.loc, span_notice("The panties beep as the link to the [src] is lost.")) . = ..() /** @@ -652,9 +652,9 @@ /obj/item/clothing/underwear/briefs/panties/portalpanties/examine(mob/user) . = ..() if(!portallight) - . += "The device is unpaired, to pair, swipe the fleshlight against this pair of portal panties(TM). " + . += span_notice("The device is unpaired, to pair, swipe the fleshlight against this pair of portal panties(TM). ") else - . += "The device is paired, and awaiting attachment. " + . += span_notice("The device is paired, and awaiting attachment. ") /obj/item/clothing/underwear/briefs/panties/portalpanties/attackby(obj/item/I, mob/living/user) //pairing if(istype(I, /obj/item/portallight)) @@ -680,11 +680,11 @@ switch(targetting) if(CUM_TARGET_VAGINA) if(!human.has_vagina(REQUIRE_EXPOSED)) - to_chat(human, "The vagina is covered or there is none!") + to_chat(human, span_warning("The vagina is covered or there is none!")) return FALSE if(CUM_TARGET_ANUS) if(!human.has_anus(REQUIRE_EXPOSED)) - to_chat(human, "The anus is covered or there is none!") + to_chat(human, span_warning("The anus is covered or there is none!")) return FALSE if(CUM_TARGET_PENIS) if(!human.has_penis(REQUIRE_EXPOSED) && !human.has_strapon(REQUIRE_EXPOSED)) @@ -707,7 +707,7 @@ if(!portallight) audible_message("[icon2html(src, hearers(src))] *beep* *beep* *beep*") playsound(src, 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE) - to_chat(user, "The panties are not linked to a portal fleshlight.") + to_chat(user, span_notice("The panties are not linked to a portal fleshlight.")) else update_portal() RegisterSignal(user, COMSIG_PARENT_QDELETING, .proc/drop_out) diff --git a/modular_sand/code/game/objects/items/plushes/goat_boss.dm b/modular_sand/code/game/objects/items/plushes/goat_boss.dm index 9209390bba..a754f936f8 100644 --- a/modular_sand/code/game/objects/items/plushes/goat_boss.dm +++ b/modular_sand/code/game/objects/items/plushes/goat_boss.dm @@ -26,27 +26,27 @@ if (!targets_to_pick_from.len) return target = pick(targets_to_pick_from) - visible_message("[src] stares at [target].") + visible_message(span_notice("[src] stares at [target].")) if (world.time > cooldown && target) ram() /obj/item/toy/plush/goatplushie/angry/proc/ram() if(prob((obj_flags & EMAGGED) ? 98:90) && isturf(loc) && considered_alive(target.mind) && !faction_check(list("goat"), target.faction, FALSE)) throw_at(target, 10, 10) - visible_message("[src] rams [target]!") + visible_message(span_danger("[src] rams [target]!")) cooldown = world.time + cooldown_modifier target = null - visible_message("[src] looks disinterested.") + visible_message(span_notice("[src] looks disinterested.")) /obj/item/toy/plush/goatplushie/angry/emag_act(mob/user) if (obj_flags&EMAGGED) - visible_message("[src] already looks angry enough, you shouldn't anger it more.") + visible_message(span_notice("[src] already looks angry enough, you shouldn't anger it more.")) return cooldown_modifier = cooldown_modifier/2 * 0.75 throwforce = 12.5 force = 10 obj_flags |= EMAGGED - visible_message("[src] stares at [user] angrily before going docile.") + visible_message(span_danger("[src] stares at [user] angrily before going docile.")) /obj/item/toy/plush/goatplushie/angry/Destroy() STOP_PROCESSING(SSprocessing, src) @@ -85,14 +85,14 @@ /obj/item/toy/plush/goatplushie/angry/kinggoat/ascendedkinggoat/attackby(obj/item/I,mob/living/user,params) if(I.get_sharpness()) - user.visible_message("[user] attempts to destroy [src]!", "[I] bounces off [src]'s back before breaking into millions of pieces... [src] glares at [user]!") // You fucked up now son + user.visible_message(span_notice("[user] attempts to destroy [src]!"), span_suicide("[I] bounces off [src]'s back before breaking into millions of pieces... [src] glares at [user]!")) // You fucked up now son I.play_tool_sound(src) qdel(I) user.gib() /obj/item/toy/plush/goatplushie/angry/kinggoat/attackby(obj/item/I,mob/living/user,params) if(I.get_sharpness()) - user.visible_message("[user] rips [src] to shreds!", "[src]'s death has attracted the attention of the king goat plushie guards!") + user.visible_message(span_notice("[user] rips [src] to shreds!"), span_notice("[src]'s death has attracted the attention of the king goat plushie guards!")) I.play_tool_sound(src) qdel(src) var/turf/location = get_turf(user) @@ -109,7 +109,7 @@ new/obj/item/toy/plush/goatplushie/angry/guardgoat(location) new/obj/item/toy/plush/goatplushie/angry/guardgoat(location) if(istype(I, /obj/item/reagent_containers/food/snacks/grown/cabbage)) - user.visible_message("[user] watches as [src] takes a bite out of the cabbage!", "[src]'s fur starts glowing. It seems they have ascended!") + user.visible_message(span_notice("[user] watches as [src] takes a bite out of the cabbage!"), span_notice("[src]'s fur starts glowing. It seems they have ascended!")) playsound(src, 'sound/items/eatfood.ogg', 50, 1) qdel(I) qdel(src) diff --git a/modular_sand/code/game/objects/items/robot/robot_upgrades.dm b/modular_sand/code/game/objects/items/robot/robot_upgrades.dm index 5306894298..1dcdf6deff 100644 --- a/modular_sand/code/game/objects/items/robot/robot_upgrades.dm +++ b/modular_sand/code/game/objects/items/robot/robot_upgrades.dm @@ -16,7 +16,7 @@ if(!XW) XW = locate() in R.module if(XW) - to_chat(user, "This unit is already equipped with an experimental welding tool module.") + to_chat(user, span_warning("This unit is already equipped with an experimental welding tool module.")) return FALSE XW = new(R.module) qdel(WT) @@ -83,7 +83,7 @@ if(!BD) BD = locate() in R.module //There's gotta be a smarter way to do this. if(BD) - to_chat(user, "This unit is already equipped with a BSRPD module.") + to_chat(user, span_warning("This unit is already equipped with a BSRPD module.")) return FALSE BD = new(R.module) @@ -138,11 +138,11 @@ if(.) if(R.hasExpanded) - to_chat(usr, "This unit already has an expand module installed!") + to_chat(usr, span_notice("This unit already has an expand module installed!")) return FALSE if(R.hasShrunk) - to_chat(usr, "This unit already has an shrink module installed!") + to_chat(usr, span_notice("This unit already has an shrink module installed!")) return FALSE if(ExpandSize <= 0) @@ -184,11 +184,11 @@ if(.) if(R.hasShrunk) - to_chat(usr, "This unit already has an shrink module installed!") + to_chat(usr, span_notice("This unit already has an shrink module installed!")) return FALSE if(R.hasExpanded) - to_chat(usr, "This unit already has an expand module installed!") + to_chat(usr, span_notice("This unit already has an expand module installed!")) return FALSE if(ShrinkSize == 0) @@ -246,7 +246,7 @@ if(!shuttle_maker) shuttle_maker = locate() in R.module if(shuttle_maker) - to_chat(user, "This unit is already equipped with a rapid shuttle designator module.") + to_chat(user, span_warning("This unit is already equipped with a rapid shuttle designator module.")) return FALSE shuttle_maker = new(R.module) R.module.basic_modules += shuttle_maker diff --git a/modular_sand/code/game/objects/items/stacks/tiles/tile_reskinning.dm b/modular_sand/code/game/objects/items/stacks/tiles/tile_reskinning.dm index 7f240548e6..2feb8f236a 100644 --- a/modular_sand/code/game/objects/items/stacks/tiles/tile_reskinning.dm +++ b/modular_sand/code/game/objects/items/stacks/tiles/tile_reskinning.dm @@ -39,4 +39,4 @@ GLOBAL_LIST_EMPTY(tile_reskin_lists) /obj/item/stack/tile/examine(mob/user) . = ..() if(tile_reskin_types) - . += "These kinds of tiles can be re-skinned! Use it on hand to reskin." + . += span_notice("These kinds of tiles can be re-skinned! Use it on hand to reskin.") diff --git a/modular_sand/code/game/objects/structures/ghost_role_spawners.dm b/modular_sand/code/game/objects/structures/ghost_role_spawners.dm index d1c2ab7ce0..89b7c20ef5 100644 --- a/modular_sand/code/game/objects/structures/ghost_role_spawners.dm +++ b/modular_sand/code/game/objects/structures/ghost_role_spawners.dm @@ -36,7 +36,7 @@ ADD_TRAIT(new_spawn, TRAIT_SIXTHSENSE, GHOSTROLE_TRAIT) ADD_TRAIT(new_spawn, TRAIT_EXEMPT_HEALTH_EVENTS, GHOSTROLE_TRAIT) ADD_TRAIT(new_spawn, TRAIT_NO_MIDROUND_ANTAG, GHOSTROLE_TRAIT) //The mob can't be made into a random antag, they are still eligible for ghost roles popups. - to_chat(new_spawn,"Ghosting is free!") + to_chat(new_spawn,span_boldwarning("Ghosting is free!")) var/datum/action/toggle_dead_chat_mob/D = new(new_spawn) D.Grant(new_spawn) var/datum/action/disguise/disguise_action = new(new_spawn) diff --git a/modular_sand/code/game/objects/structures/tank_holder.dm b/modular_sand/code/game/objects/structures/tank_holder.dm index 5f88eceed9..b0a720af7f 100644 --- a/modular_sand/code/game/objects/structures/tank_holder.dm +++ b/modular_sand/code/game/objects/structures/tank_holder.dm @@ -30,13 +30,13 @@ /obj/structure/tank_holder/examine(mob/user) . = ..() - . += "It is held together by some screws." + . += span_notice("It is held together by some screws.") /obj/structure/tank_holder/attackby(obj/item/W, mob/user, params) if(user.a_intent == INTENT_HARM) return ..() if(!SEND_SIGNAL(W, COMSIG_CONTAINER_TRY_ATTACH, src, user)) - to_chat(user, "[W] does not fit in [src].") + to_chat(user, span_warning("[W] does not fit in [src].")) /obj/structure/tank_holder/screwdriver_act(mob/living/user, obj/item/I) if(..()) @@ -63,7 +63,7 @@ return ..() if(!Adjacent(user) || issilicon(user)) return ..() - to_chat(user, "You take [tank] from [src].") + to_chat(user, span_notice("You take [tank] from [src].")) add_fingerprint(user) tank.add_fingerprint(user) user.put_in_hands(tank) diff --git a/modular_sand/code/game/turfs/open.dm b/modular_sand/code/game/turfs/open.dm index 13f7e25990..5e66692c37 100644 --- a/modular_sand/code/game/turfs/open.dm +++ b/modular_sand/code/game/turfs/open.dm @@ -7,7 +7,7 @@ /obj/item/wallframe/light_fixture/small/proc/attach_floor(turf/a_floor, mob/user) playsound(src.loc, 'sound/machines/click.ogg', 75, 1) user.visible_message("[user.name] attaches [src] to \the [a_floor].", - "You attach [src] to \the [a_floor].", + span_notice("You attach [src] to \the [a_floor]."), "You hear clicking.") a_floor.balloon_alert(user, "attached to floor") var/obj/O = new /obj/structure/light_construct/floor(a_floor, 1, TRUE) diff --git a/modular_sand/code/game/turfs/simulated/floor/plating.dm b/modular_sand/code/game/turfs/simulated/floor/plating.dm index 4393ff0180..75235f067a 100644 --- a/modular_sand/code/game/turfs/simulated/floor/plating.dm +++ b/modular_sand/code/game/turfs/simulated/floor/plating.dm @@ -4,25 +4,25 @@ /turf/open/floor/plating/examine(mob/user) . = ..() if(!(baseturfs == /turf/baseturf_bottom || istype(baseturfs, /turf/open/space))) - . += "\The [src] cannot be removed from the floor." + . += span_notice("\The [src] cannot be removed from the floor.") else if(unfastened) - . += "\The [src] could be welded off the floor." - . += "The screws on [src] appear loose." + . += span_notice("\The [src] could be welded off the floor.") + . += span_warning("The screws on [src] appear loose.") else - . += "The screws on [src] could be loosened with a screwdriver." + . += span_notice("The screws on [src] could be loosened with a screwdriver.") /turf/open/floor/plating/screwdriver_act(mob/living/user, obj/item/I) if(type == /turf/open/floor/plating) if(baseturfs == /turf/baseturf_bottom || istype(baseturfs, /turf/open/space)) - to_chat(user, "You start [unfastened ? "fastening" : "unfastening"] [src].") + to_chat(user, span_notice("You start [unfastened ? "fastening" : "unfastening"] [src].")) balloon_alert(user, "[unfastened ? "fastening" : "unfastening"]") if(!I.use_tool(src, user, 20, volume = 80)) return - to_chat(user, "You [unfastened ? "fasten" : "unfasten"] [src].") + to_chat(user, span_notice("You [unfastened ? "fasten" : "unfasten"] [src].")) balloon_alert(user, "[unfastened ? "fastened" : "unfastened"]") unfastened = !unfastened else - to_chat(user, "You cannot remove this plating.") + to_chat(user, span_warning("You cannot remove this plating.")) balloon_alert(user, "can't remove!") return @@ -30,13 +30,13 @@ . = ..() if(type == /turf/open/floor/plating && unfastened) if(baseturfs == /turf/baseturf_bottom || istype(baseturfs, /turf/open/space)) - to_chat(user, "You start removing [src], exposing space after you're done!") + to_chat(user, span_warning("You start removing [src], exposing space after you're done!")) balloon_alert(user, "removing") if(!I.use_tool(src, user, 50, volume = 160)) //extra loud to let people know something's going down return new /obj/item/stack/tile/plasteel(get_turf(src)) ReplaceWithLattice() - to_chat(user, "You remove [src].") + to_chat(user, span_notice("You remove [src].")) balloon_alert(user, "removed") return else diff --git a/modular_sand/code/modules/admin/verbs/randomverbs.dm b/modular_sand/code/modules/admin/verbs/randomverbs.dm index 5bb62c4415..ac491b22be 100644 --- a/modular_sand/code/modules/admin/verbs/randomverbs.dm +++ b/modular_sand/code/modules/admin/verbs/randomverbs.dm @@ -16,5 +16,5 @@ SSshuttle.autoEnd() SSblackbox.record_feedback("tally", "admin_verb", 1, "End Shift") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] ended the shift.") - message_admins("[key_name_admin(usr)] ended the shift.") + message_admins(span_adminnotice("[key_name_admin(usr)] ended the shift.")) return diff --git a/modular_sand/code/modules/arousal/arousal.dm b/modular_sand/code/modules/arousal/arousal.dm index 6b7df9b07c..f46707e884 100644 --- a/modular_sand/code/modules/arousal/arousal.dm +++ b/modular_sand/code/modules/arousal/arousal.dm @@ -32,7 +32,7 @@ if(prob(30 + clamp((70*(rand() + (h_self.sexual_potency + h_partner.sexual_potency)/200)), 0, 70)) && !W.impregnated && !Sp.equipment[GENITAL_EQUIPEMENT_CONDOM] && (Sp.linked_organ.fluid_id == /datum/reagent/consumable/semen)) W.impregnated = TRUE log_game("Debug: [h_self] has been impregnated by [h_partner]") - to_chat(src, "You feel your hormones change, and a motherly instinct take over.") + to_chat(src, span_userlove("You feel your hormones change, and a motherly instinct take over.")) var/obj/item/organ/genital/breasts/B = h_self.getorganslot(ORGAN_SLOT_BREASTS) if(B) B.fluid_rate *= 2 diff --git a/modular_sand/code/modules/arousal/genitals.dm b/modular_sand/code/modules/arousal/genitals.dm new file mode 100644 index 0000000000..78eb513a88 --- /dev/null +++ b/modular_sand/code/modules/arousal/genitals.dm @@ -0,0 +1,7 @@ +/obj/item/organ/genital + /// Controls whenever a genital is always accessible + var/always_accessible = FALSE + +/// Toggles whether such genital can always be accessed +/obj/item/organ/genital/proc/toggle_accessibility() + always_accessible = !always_accessible diff --git a/modular_sand/code/modules/client/preferences.dm b/modular_sand/code/modules/client/preferences.dm index 611f3b41d6..3efa0eefee 100644 --- a/modular_sand/code/modules/client/preferences.dm +++ b/modular_sand/code/modules/client/preferences.dm @@ -50,9 +50,9 @@ language -= lang else if(check_language_maxhit()) if(CONFIG_GET(number/max_languages) == 1) - to_chat(usr, "You can only have 1 additional language!") + to_chat(usr, span_danger("You can only have 1 additional language!")) else - to_chat(usr, "You can only have up to [CONFIG_GET(number/max_languages)] additional languages!") + to_chat(usr, span_danger("You can only have up to [CONFIG_GET(number/max_languages)] additional languages!")) else language += lang diff --git a/modular_sand/code/modules/clothing/gloves/_gloves.dm b/modular_sand/code/modules/clothing/gloves/_gloves.dm index 65f7de4825..092e25511d 100644 --- a/modular_sand/code/modules/clothing/gloves/_gloves.dm +++ b/modular_sand/code/modules/clothing/gloves/_gloves.dm @@ -50,11 +50,11 @@ var/obj/item/clothing/accessory/ring/A = I if(length(attached_accessories) >= max_accessories) if(user) - to_chat(user, "[src] already has [length(attached_accessories)] accessories.") + to_chat(user, span_warning("[src] already has [length(attached_accessories)] accessories.")) return if(dummy_thick) if(user) - to_chat(user, "[src] is too bulky and cannot have accessories attached to it!") + to_chat(user, span_warning("[src] is too bulky and cannot have accessories attached to it!")) return else if(user && !user.temporarilyRemoveItemFromInventory(I)) @@ -63,7 +63,7 @@ return if(user && notifyAttach) - to_chat(user, "You attach [I] to [src].") + to_chat(user, span_notice("You attach [I] to [src].")) if((flags_inv & HIDEACCESSORY) || (A.flags_inv & HIDEACCESSORY)) return TRUE @@ -95,9 +95,9 @@ var/obj/item/clothing/accessory/ring/A = attached_accessories[length(attached_accessories)] A.detach(src, user) if(user.put_in_hands(A)) - to_chat(user, "You detach [A] from [src].") + to_chat(user, span_notice("You detach [A] from [src].")) else - to_chat(user, "You detach [A] from [src] and it falls on the floor.") + to_chat(user, span_notice("You detach [A] from [src] and it falls on the floor.")) if(ishuman(loc)) var/mob/living/carbon/human/H = loc diff --git a/modular_sand/code/modules/clothing/gloves/accessories.dm b/modular_sand/code/modules/clothing/gloves/accessories.dm index 8356e9fd9e..1c3986de1f 100644 --- a/modular_sand/code/modules/clothing/gloves/accessories.dm +++ b/modular_sand/code/modules/clothing/gloves/accessories.dm @@ -15,11 +15,11 @@ var/strip_silence = FALSE /obj/item/clothing/accessory/ring/suicide_act(mob/living/carbon/user) - user.visible_message("\[user] is putting the [src] in [user.p_their()] mouth! It looks like [user] is trying to choke on the [src]!") + user.visible_message(span_suicide("\[user] is putting the [src] in [user.p_their()] mouth! It looks like [user] is trying to choke on the [src]!")) return OXYLOSS /obj/item/clothing/accessory/ring/attack_self(mob/user) - user.visible_message("\The [user] gets down on one knee, presenting \the [src].","You get down on one knee, presenting \the [src].") + user.visible_message(span_warning("\The [user] gets down on one knee, presenting \the [src]."),span_warning("You get down on one knee, presenting \the [src].")) /obj/item/clothing/accessory/ring/proc/Touch(atom/A, proximity) return FALSE // return TRUE to cancel attack_hand() diff --git a/modular_sand/code/modules/clothing/spacesuits/chronosuit.dm b/modular_sand/code/modules/clothing/spacesuits/chronosuit.dm index aa4cdcc530..fd6ce75120 100644 --- a/modular_sand/code/modules/clothing/spacesuits/chronosuit.dm +++ b/modular_sand/code/modules/clothing/spacesuits/chronosuit.dm @@ -70,8 +70,8 @@ switch(severity) if(1) if(activated && user && ishuman(user) && (user.wear_suit == src)) - to_chat(user, "E:FATAL:RAM_READ_FAIL\nE:FATAL:STACK_EMPTY\nE:FATAL:READ_NULL_POINT\nE:FATAL:PWR_BUS_OVERLOAD") - to_chat(user, "An electromagnetic pulse disrupts your [name] and violently tears you out of time-bluespace!") + to_chat(user, span_danger("E:FATAL:RAM_READ_FAIL\nE:FATAL:STACK_EMPTY\nE:FATAL:READ_NULL_POINT\nE:FATAL:PWR_BUS_OVERLOAD")) + to_chat(user, span_userdanger("An electromagnetic pulse disrupts your [name] and violently tears you out of time-bluespace!")) user.emote("scream") deactivate(1, 1) diff --git a/modular_sand/code/modules/clothing/spacesuits/hardsuit.dm b/modular_sand/code/modules/clothing/spacesuits/hardsuit.dm index d48f9b16a1..63777f7482 100644 --- a/modular_sand/code/modules/clothing/spacesuits/hardsuit.dm +++ b/modular_sand/code/modules/clothing/spacesuits/hardsuit.dm @@ -101,7 +101,7 @@ var/mob/living/carbon/human/user = src.loc playsound(src.loc, 'modular_sand/sound/misc/suitmalf.ogg', 60, 1, 10) if (ishuman(user) && (user.wear_suit == src)) - to_chat(user, "The motors on your armor cease to function, causing the full weight of the suit to weigh on you all at once!") + to_chat(user, span_danger("The motors on your armor cease to function, causing the full weight of the suit to weigh on you all at once!")) user.emote("scream") user.adjustStaminaLoss(stamdamageemp) user.adjustBruteLoss(brutedamageemp) diff --git a/modular_sand/code/modules/clothing/under/_under.dm b/modular_sand/code/modules/clothing/under/_under.dm new file mode 100644 index 0000000000..fe6dcc8fba --- /dev/null +++ b/modular_sand/code/modules/clothing/under/_under.dm @@ -0,0 +1,8 @@ +GLOBAL_LIST_INIT(skirt_peekable, list( + /obj/item/clothing/under/rank/civilian/janitor/maid = TRUE /* This one hangs about because no skirt in path */ + )) + +/obj/item/clothing/under/Initialize(mapload) + . = ..() + if(!is_type_in_typecache(type, GLOB.skirt_peekable) && findlasttext("[type]", "skirt")) + LAZYSET(GLOB.skirt_peekable, type, TRUE) diff --git a/modular_sand/code/modules/clothing/under/jobs/cargo.dm b/modular_sand/code/modules/clothing/under/jobs/cargo.dm deleted file mode 100644 index e0ad328399..0000000000 --- a/modular_sand/code/modules/clothing/under/jobs/cargo.dm +++ /dev/null @@ -1,5 +0,0 @@ -/obj/item/clothing/under/rank/cargo/qm/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/cargo/tech/skirt - is_skirt = TRUE diff --git a/modular_sand/code/modules/clothing/under/jobs/civilian.dm b/modular_sand/code/modules/clothing/under/jobs/civilian.dm deleted file mode 100644 index 12917d8a2f..0000000000 --- a/modular_sand/code/modules/clothing/under/jobs/civilian.dm +++ /dev/null @@ -1,47 +0,0 @@ -/obj/item/clothing/under/rank/civilian/bartender/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/chaplain/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/chef/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/head_of_personnel/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/head_of_personnel/suit/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/hydroponics/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/janitor/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/janitor/maid //i believe this one is a dress, not gonna check - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/lawyer/black/alt/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/lawyer/really_black/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/lawyer/black/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/lawyer/female/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/lawyer/red/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/lawyer/blue/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/lawyer/bluesuit/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/civilian/lawyer/purpsuit/skirt - is_skirt = TRUE diff --git a/modular_sand/code/modules/clothing/under/jobs/command.dm b/modular_sand/code/modules/clothing/under/jobs/command.dm deleted file mode 100644 index cff9bd3339..0000000000 --- a/modular_sand/code/modules/clothing/under/jobs/command.dm +++ /dev/null @@ -1,5 +0,0 @@ -/obj/item/clothing/under/rank/captain/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/captain/suit/skirt - is_skirt = TRUE diff --git a/modular_sand/code/modules/clothing/under/jobs/curator.dm b/modular_sand/code/modules/clothing/under/jobs/curator.dm deleted file mode 100644 index 85966ab452..0000000000 --- a/modular_sand/code/modules/clothing/under/jobs/curator.dm +++ /dev/null @@ -1,2 +0,0 @@ -/obj/item/clothing/under/rank/civilian/curator/skirt - is_skirt = TRUE diff --git a/modular_sand/code/modules/clothing/under/jobs/engineering.dm b/modular_sand/code/modules/clothing/under/jobs/engineering.dm deleted file mode 100644 index 56e4263ae7..0000000000 --- a/modular_sand/code/modules/clothing/under/jobs/engineering.dm +++ /dev/null @@ -1,8 +0,0 @@ -/obj/item/clothing/under/rank/engineering/chief_engineer/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/engineering/atmospheric_technician/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/engineering/engineer/skirt - is_skirt = TRUE diff --git a/modular_sand/code/modules/clothing/under/jobs/medical.dm b/modular_sand/code/modules/clothing/under/jobs/medical.dm deleted file mode 100644 index 03c124449c..0000000000 --- a/modular_sand/code/modules/clothing/under/jobs/medical.dm +++ /dev/null @@ -1,17 +0,0 @@ -/obj/item/clothing/under/rank/medical/chief_medical_officer/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/medical/geneticist/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/medical/virologist/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/medical/chemist/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/medical/paramedic/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/medical/doctor/skirt - is_skirt = TRUE diff --git a/modular_sand/code/modules/clothing/under/jobs/research.dm b/modular_sand/code/modules/clothing/under/jobs/research.dm deleted file mode 100644 index 1243dfb9ee..0000000000 --- a/modular_sand/code/modules/clothing/under/jobs/research.dm +++ /dev/null @@ -1,14 +0,0 @@ -/obj/item/clothing/under/rank/rnd/research_director/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/rnd/research_director/alt/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/rnd/research_director/turtleneck/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/rnd/scientist/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/rnd/roboticist/skirt - is_skirt = TRUE diff --git a/modular_sand/code/modules/clothing/under/jobs/security.dm b/modular_sand/code/modules/clothing/under/jobs/security.dm deleted file mode 100644 index ee8331c5b6..0000000000 --- a/modular_sand/code/modules/clothing/under/jobs/security.dm +++ /dev/null @@ -1,29 +0,0 @@ -/obj/item/clothing/under/rank/security/officer/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/security/warden/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/security/detective/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/security/detective/grey/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/security/head_of_security/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/security/head_of_security/alt/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/brigdoc/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/blueshield/formal/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/blueshield/skirt - is_skirt = TRUE - -/obj/item/clothing/under/rank/bridgeofficer/skirt - is_skirt = TRUE diff --git a/modular_sand/code/modules/clothing/under/jobs/theater.dm b/modular_sand/code/modules/clothing/under/jobs/theater.dm deleted file mode 100644 index 1de3d44407..0000000000 --- a/modular_sand/code/modules/clothing/under/jobs/theater.dm +++ /dev/null @@ -1,2 +0,0 @@ -/obj/item/clothing/under/rank/civilian/mime/skirt - is_skirt = TRUE diff --git a/modular_sand/code/modules/hydroponics/hydroponics.dm b/modular_sand/code/modules/hydroponics/hydroponics.dm index fbe22b96ea..e383980184 100644 --- a/modular_sand/code/modules/hydroponics/hydroponics.dm +++ b/modular_sand/code/modules/hydroponics/hydroponics.dm @@ -1,7 +1,7 @@ /obj/machinery/hydroponics/proc/harvest_dead(mob/user) dead = FALSE if(user) - to_chat(user, "You remove the dead plant from [src].") + to_chat(user, span_notice("You remove the dead plant from [src].")) qdel(myseed) myseed = null update_icon() diff --git a/modular_sand/code/modules/integrated_electronics/subtypes/output.dm b/modular_sand/code/modules/integrated_electronics/subtypes/output.dm index 45e991aad7..1c16cb3445 100644 --- a/modular_sand/code/modules/integrated_electronics/subtypes/output.dm +++ b/modular_sand/code/modules/integrated_electronics/subtypes/output.dm @@ -51,7 +51,7 @@ user.transferItemToLoc(O,src) encryption_keys += O recalculate_channels() - to_chat(user, "You slide \the [O] inside the circuit.") + to_chat(user, span_notice("You slide \the [O] inside the circuit.")) else ..() @@ -75,10 +75,10 @@ O.forceMove(drop_location()) encryption_keys.Cut() set_pin_data(IC_OUTPUT, 1, WEAKREF(null)) - to_chat(user, "You slide the encryption keys out of the circuit.") + to_chat(user, span_notice("You slide the encryption keys out of the circuit.")) recalculate_channels() else - to_chat(user, "There are no encryption keys to remove from the mechanism.") + to_chat(user, span_notice("There are no encryption keys to remove from the mechanism.")) /obj/item/radio/headset/integrated diff --git a/modular_sand/code/modules/mining/equipment/kinetic_crusher.dm b/modular_sand/code/modules/mining/equipment/kinetic_crusher.dm index a4e6e39a66..7cedccf6ff 100644 --- a/modular_sand/code/modules/mining/equipment/kinetic_crusher.dm +++ b/modular_sand/code/modules/mining/equipment/kinetic_crusher.dm @@ -30,7 +30,7 @@ L.loot = null L.crusher_loot = null L.faction = user.faction.Copy() - user.visible_message("[user] revives [target] with [src], as a friendly fauna") + user.visible_message(span_notice("[user] revives [target] with [src], as a friendly fauna")) playsound(src,'sound/effects/supermatter.ogg',50,1) /obj/item/crusher_trophy/golden_skull/on_melee_hit(mob/living/target, mob/living/user) @@ -53,10 +53,10 @@ L.attack_same = 0 L.loot = null L.crusher_loot = null - user.visible_message("[user] revives [target] with [src], as a friendly legion.") + user.visible_message(span_notice("[user] revives [target] with [src], as a friendly legion.")) playsound(src,'sound/effects/supermatter.ogg',50,1) else - (to_chat(user, "You cancel turning [target] into a legion.")) + (to_chat(user, span_notice("You cancel turning [target] into a legion."))) //rogue process /obj/item/crusher_trophy/brokentech @@ -344,22 +344,22 @@ /obj/item/melee/zweihander/examine(mob/living/user) . = ..() - . += "Mark a large creature with the destabilizing force, then hit them in melee to do [force + detonation_damage] damage." - . += "Does [force + detonation_damage + backstab_bonus] damage if the target is backstabbed, instead of [force + detonation_damage]." + . += span_notice("Mark a large creature with the destabilizing force, then hit them in melee to do [force + detonation_damage] damage.") + . += span_notice("Does [force + detonation_damage + backstab_bonus] damage if the target is backstabbed, instead of [force + detonation_damage].") for(var/t in trophies) var/obj/item/crusher_trophy/T = t - . += "It has \a [T] attached, which causes [T.effect_desc()]." + . += span_notice("It has \a [T] attached, which causes [T.effect_desc()].") /obj/item/melee/zweihander/attackby(obj/item/I, mob/living/user) if(istype(I, /obj/item/crowbar)) if(LAZYLEN(trophies)) - to_chat(user, "You remove [src]'s trophies.") + to_chat(user, span_notice("You remove [src]'s trophies.")) I.play_tool_sound(src) for(var/t in trophies) var/obj/item/crusher_trophy/T = t T.remove_from(src, user) else - to_chat(user, "There are no trophies on [src].") + to_chat(user, span_warning("There are no trophies on [src].")) else if(istype(I, /obj/item/crusher_trophy)) var/obj/item/crusher_trophy/T = I T.add_to(src, user) diff --git a/modular_sand/code/modules/mining/equipment/regenerative_core.dm b/modular_sand/code/modules/mining/equipment/regenerative_core.dm index 4d508dd6c1..b9fc7acfd3 100644 --- a/modular_sand/code/modules/mining/equipment/regenerative_core.dm +++ b/modular_sand/code/modules/mining/equipment/regenerative_core.dm @@ -12,16 +12,16 @@ return var/mob/living/carbon/human/H = target if(inert) - to_chat(user, "[src] has decayed and can no longer be used to heal.") + to_chat(user, span_notice("[src] has decayed and can no longer be used to heal.")) return if(H.stat == DEAD) - to_chat(user, "[src] are useless on the dead.") + to_chat(user, span_notice("[src] are useless on the dead.")) return if(H != user) H.visible_message("[user] forces [H] to apply [src]... Black tendrils entangle and reinforce [H.p_them()]!") SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "other")) else - to_chat(user, "You start to smear [src] on yourself. Disgusting tendrils hold you together and allow you to keep moving, but for how long?") + to_chat(user, span_notice("You start to smear [src] on yourself. Disgusting tendrils hold you together and allow you to keep moving, but for how long?")) SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self")) if(is_station_level(H.z)) H.adjustBruteLoss(-25, 0) diff --git a/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm b/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm index aaca5e7faa..09d5b00d97 100644 --- a/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm +++ b/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm @@ -156,7 +156,7 @@ /obj/item/projectile/heckhook/on_hit(atom/target) . = ..() var/atom/A = target - A.visible_message("[A] is snagged by [firer]'s hook!") + A.visible_message(span_danger("[A] is snagged by [firer]'s hook!")) new /datum/forced_movement(firer, get_turf(A), 1, TRUE) /obj/item/projectile/heckhook/Destroy() @@ -184,7 +184,7 @@ to_chat(user, "You will now fire normal shotgun rounds.") /obj/item/gun/ballistic/revolver/doublebarrel/super/sawoff(mob/user) - to_chat(user, "Why would you mutilate this work of art?") + to_chat(user, span_warning("Why would you mutilate this work of art?")) return /obj/item/gun/ballistic/revolver/doublebarrel/super/upgraded @@ -235,7 +235,7 @@ /obj/item/crucible/suicide_act(mob/living/carbon/user) if(wielded) - user.visible_message("[user] DOOMs themselves with the [src]!") + user.visible_message(span_suicide("[user] DOOMs themselves with the [src]!")) var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)//stole from chainsaw code var/obj/item/organ/brain/B = user.getorganslot(ORGAN_SLOT_BRAIN) @@ -250,12 +250,12 @@ myhead.drop_limb() sleep(3) else - user.visible_message("[user] panics and starts choking to death!") + user.visible_message(span_suicide("[user] panics and starts choking to death!")) return OXYLOSS else - user.visible_message("[user] begins beating [user.p_them()]self to death with \the [src]'s handle! It probably would've been cooler if [user.p_they()] turned it on first!") + user.visible_message(span_suicide("[user] begins beating [user.p_them()]self to death with \the [src]'s handle! It probably would've been cooler if [user.p_they()] turned it on first!")) return BRUTELOSS /obj/item/crucible/update_icon_state() @@ -336,7 +336,7 @@ var/mob/living/carbon/C = user if(C.wear_mask) in_mouth = ", barely missing [user.p_their()] nose" - . = "[user] swings [user.p_their()] [name][in_mouth]. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [A.name] in the process." + . = span_warning("[user] swings [user.p_their()] [name][in_mouth]. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [A.name] in the process.") playsound(loc, hitsound, get_clamped_volume(), 1, -1) add_fingerprint(user) @@ -437,12 +437,12 @@ sharpness = SHARP_NONE if(ghost_counter >= 4) sharpness = SHARP_POINTY - user.visible_message("[user] strikes with the force of [ghost_counter] vengeful spirits!") + user.visible_message(span_danger("[user] strikes with the force of [ghost_counter] vengeful spirits!")) /obj/item/melee/ghost_sword/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) var/ghost_counter = ghost_check() final_block_chance = clamp((ghost_counter * 5), 10, 50) - owner.visible_message("[owner] is protected by a ring of [ghost_counter] ghosts!") + owner.visible_message(span_danger("[owner] is protected by a ring of [ghost_counter] ghosts!")) return ..() /obj/item/clothing/neck/necklace/memento_mori/king @@ -503,7 +503,7 @@ var/choosey = choices[choice] var/obj/machinery/anomalous_crystal/A = new choosey(user.loc) A.activation_method = method - to_chat(user, "[A] appears under your feet as the [src] breaks apart!") + to_chat(user, span_userdanger("[A] appears under your feet as the [src] breaks apart!")) qdel(src) //normal chests @@ -744,7 +744,7 @@ /obj/item/stock_parts/cell/high/plus/argent/attack_self(mob/user) ..() - user.visible_message("[user] crushes the [src] in his hands, absorbing it's energy!") + user.visible_message(span_danger("[user] crushes the [src] in his hands, absorbing it's energy!")) playsound(user.loc, 'sound/effects/hit_on_shattered_glass.ogg', 100, TRUE) var/mob/living/M = user M.apply_status_effect(onuse) @@ -822,13 +822,13 @@ /obj/item/clothing/mask/gas/dagoth/ui_action_click(mob/user, action) if(istype(action, /datum/action/item_action/ashstorm)) if(storm_cooldown > world.time) - to_chat(user, "The [src] is still recharging!") + to_chat(user, span_warning("The [src] is still recharging!")) return var/area/user_area = get_base_area(user) var/turf/user_turf = get_turf(user) if(!user_area || !user_turf || (user_area.type in excluded_areas)) - to_chat(user, "Something is preventing you from using the [src] here.") + to_chat(user, span_warning("Something is preventing you from using the [src] here.")) return var/datum/weather/A for(var/V in SSweather.processing) @@ -840,10 +840,10 @@ if(A) if(A.stage != END_STAGE) if(A.stage == WIND_DOWN_STAGE) - to_chat(user, "The storm is already ending! It would be a waste to use the [src] now.") + to_chat(user, span_warning("The storm is already ending! It would be a waste to use the [src] now.")) return - user.visible_message("[user] gazes into the sky with [src], seemingly repelling the current storm!", \ - "You gaze intently skyward, dispelling the storm!") + user.visible_message(span_warning("[user] gazes into the sky with [src], seemingly repelling the current storm!"), \ + span_notice("You gaze intently skyward, dispelling the storm!")) playsound(user, 'sound/magic/staff_change.ogg', 200, 0) A.wind_down() log_game("[user] ([key_name(user)]) has dispelled a storm at [AREACOORD(user_turf)]") @@ -858,8 +858,8 @@ A.telegraph_duration = 100 A.end_duration = 100 - user.visible_message("[user] gazes skyward with his [src], terrible red lightning strikes seem to accompany them!", \ - "You gaze skyward with [src], calling down a terrible storm!") + user.visible_message(span_warning("[user] gazes skyward with his [src], terrible red lightning strikes seem to accompany them!"), \ + span_notice("You gaze skyward with [src], calling down a terrible storm!")) playsound(user, 'sound/magic/staff_change.ogg', 200, 0) A.telegraph() storm_cooldown = world.time + 200 @@ -973,9 +973,9 @@ //Apply a temp buff until the necklace is used /obj/item/clothing/neck/necklace/necklace_of_the_forsaken/proc/temp_buff(mob/living/carbon/human/user) - to_chat(user, "You feel as if you have a second chance at something, but you're not sure what.") + to_chat(user, span_warning("You feel as if you have a second chance at something, but you're not sure what.")) if(do_after(user, 40, target = user)) - to_chat(user, "The ember warms you...") + to_chat(user, span_notice("The ember warms you...")) ADD_TRAIT(user, TRAIT_NOHARDCRIT, "necklace_of_the_forsaken")//less chance of being gibbed active_owner = user @@ -986,7 +986,7 @@ return var/mob/living/carbon/C = active_owner active_owner = null - to_chat(C, "You feel a scorching burn fill your body and limbs!") + to_chat(C, span_userdanger("You feel a scorching burn fill your body and limbs!")) C.revive(TRUE, FALSE) remove_necklace() //remove buffs @@ -1013,7 +1013,7 @@ if(iscarbon(owner)) MM.temp_buff(owner) src.desc = "Revive or fully heal yourself, but you can only do this once! Can be used when knocked out or dead." - to_chat(MM.active_owner, "You have binded the ember to yourself! The next time you use the necklace it will heal you!") + to_chat(MM.active_owner, span_userdanger("You have binded the ember to yourself! The next time you use the necklace it will heal you!")) else if(MM.numUses >= 1 && MM.active_owner)//revive / heal then remove usage MM.second_chance() MM.numUses = 0 diff --git a/modular_sand/code/modules/mining/machine_bluespaceminer.dm b/modular_sand/code/modules/mining/machine_bluespaceminer.dm index 513a22e4cc..9241f8745e 100644 --- a/modular_sand/code/modules/mining/machine_bluespaceminer.dm +++ b/modular_sand/code/modules/mining/machine_bluespaceminer.dm @@ -19,15 +19,15 @@ /obj/machinery/mineral/bluespace_miner/examine(mob/user) . = ..() if(in_range(user, src) || isobserver(user)) - . += "A small screen on the machine reads, \"Efficiency at [multiplier * 100]%\"" + . += span_notice("A small screen on the machine reads, \"Efficiency at [multiplier * 100]%\"") if(multiplier >= 5) - . += "Bluespace generation is active." + . += span_notice("Bluespace generation is active.") if(!anchored) - . += "The machine won't work while not firmly secured to the ground." + . += span_warning("The machine won't work while not firmly secured to the ground.") if(!materials?.silo) - . += "No ore silo connected. Use a multi-tool to link an ore silo to this machine." + . += span_notice("No ore silo connected. Use a multi-tool to link an ore silo to this machine.") else if(materials?.on_hold()) - . += "Ore silo access is on hold, please contact the quartermaster." + . += span_warning("Ore silo access is on hold, please contact the quartermaster.") /obj/machinery/mineral/bluespace_miner/RefreshParts() multiplier = 0 @@ -50,7 +50,7 @@ /obj/machinery/mineral/bluespace_miner/multitool_act(mob/living/user, obj/item/M) . = ..() if(!M.buffer || !istype(M.buffer, /obj/machinery/ore_silo)) - to_chat(user, "You need to multitool the ore silo first.") + to_chat(user, span_warning("You need to multitool the ore silo first.")) balloon_alert(user, "invalid buffer!") return TRUE diff --git a/modular_sand/code/modules/mob/living/carbon/human/examine.dm b/modular_sand/code/modules/mob/living/carbon/human/examine.dm index 421de3dd8f..5e0b39bce8 100644 --- a/modular_sand/code/modules/mob/living/carbon/human/examine.dm +++ b/modular_sand/code/modules/mob/living/carbon/human/examine.dm @@ -1,23 +1,30 @@ -#define PAIRLESS_PANTIES list(\ - /obj/item/clothing/underwear/briefs/jockstrap,\ - /obj/item/clothing/underwear/briefs/panties/thong,\ - /obj/item/clothing/underwear/briefs/panties/thong/babydoll,\ - /obj/item/clothing/underwear/briefs/mankini\ -) +GLOBAL_LIST_INIT(pairless_panties, list( + /obj/item/clothing/underwear/briefs/jockstrap = TRUE, + /obj/item/clothing/underwear/briefs/panties/thong = TRUE, + /obj/item/clothing/underwear/briefs/panties/thong/babydoll = TRUE, + /obj/item/clothing/underwear/briefs/mankini = TRUE +)) /mob/living/carbon/human/examine(mob/user) . = ..() - if(!isliving(user)) - return - var/mob/living/living = user - var/obj/item/clothing/under/worn_uniform = w_uniform - if((user != src) && !(living.mobility_flags & MOBILITY_STAND) && (mobility_flags & MOBILITY_STAND) && (src.loc == living.loc) && (istype(worn_uniform))) //SPLURT edit - var/string = "Peeking under [src]'s [w_uniform], you can see " - var/obj/item/clothing/underwear/worn_underwear = src.w_underwear + var/obj/item/clothing/under/worn_uniform = get_item_by_slot(ITEM_SLOT_ICLOTHING) + if(worn_uniform && is_type_in_typecache(worn_uniform.type, GLOB.skirt_peekable) && (isobserver(user) || (isliving(user) && (user != src) && !(living.mobility_flags & MOBILITY_STAND) && (mobility_flags & MOBILITY_STAND) && (loc == living.loc) && (istype(worn_uniform))))) + . += span_purple("[p_theyre(TRUE)] wearing a [worn_uniform.name]! You can probably give it a little peek by looking closer.") + +/mob/living/carbon/human/Initialize(mapload) + . = ..() + RegisterSignal(src, COMSIG_PARENT_EXAMINE_MORE, .proc/peek_skirt) + +/mob/living/carbon/human/proc/peek_skirt(mob/examined, mob/examiner, list/examine_content) + var/mob/living/living = examiner + var/obj/item/clothing/under/worn_uniform = get_item_by_slot(ITEM_SLOT_ICLOTHING) + if(worn_uniform && is_type_in_typecache(worn_uniform.type, GLOB.skirt_peekable) && (isobserver(examiner) || (isliving(examiner) && (examiner != src) && !(living.mobility_flags & MOBILITY_STAND) && (mobility_flags & MOBILITY_STAND) && (loc == living.loc) && (istype(worn_uniform))))) + var/string = "Peeking under [src]'s [worn_uniform.name], you can see " + var/obj/item/clothing/underwear/worn_underwear = get_item_by_slot(ITEM_SLOT_UNDERWEAR) if(worn_underwear) string += "a " - if(!(worn_underwear.type in PAIRLESS_PANTIES)) //a pair of thong + if(!is_type_in_typecache(worn_underwear.type, GLOB.pairless_panties)) //a pair of thong string += "pair of " if(worn_underwear.color) string += "[worn_underwear.name]." @@ -27,12 +34,12 @@ var/obj/item/organ/genital/penis/penis = getorganslot(ORGAN_SLOT_PENIS) var/obj/item/organ/genital/vagina/vagina = getorganslot(ORGAN_SLOT_VAGINA) if(penis?.aroused_state) - string += span_love(" There's a visible bulge on it's front.") + string += span_love(" There's a visible bulge on [p_their()] front.") else if(vagina?.aroused_state) - string += span_love(" They're wet with arousal.") + string += span_love(" [p_theyre(TRUE)] wet with arousal.") else - string += "[p_theyre()] not wearing anything! - [p_their()] " + string += "[p_theyre()] not wearing anything!\n[p_their(TRUE)]" var/list/genitals = list() for(var/obj/item/organ/genital/genital in internal_organs) if(genital.genital_flags & (GENITAL_INTERNAL|GENITAL_HIDDEN)) @@ -42,29 +49,29 @@ switch(genital.type) if(/obj/item/organ/genital/vagina) if(genital.aroused_state) - appended += "wet " + appended += " wet" if(lowertext(genital.shape) != "human") - appended += lowertext(genital.shape) - if(lowertext(genital.shape) != "cloaca") //their wet cloaca pussy - appended += " pussy" + appended += " [lowertext(genital.shape)]" + if(lowertext(genital.shape) != "cloaca") //their wet cloaca vagina + appended += " [lowertext(genital.name)]" // goodbye pussy if(/obj/item/organ/genital/testicles) - appended += "nuts" + var/obj/item/organ/genital/testicles/nuts = genital + appended += " [lowertext(nuts.size_name)] [lowertext(nuts.name)]" if(/obj/item/organ/genital/penis) if(genital.aroused_state) - appended += "fully erect" + appended += " fully erect" if(lowertext(genital.shape) != "human") - appended += ", [lowertext(genital.shape)]" - if(appended) - appended += " " //double spaces - appended += "penis" + appended += " [lowertext(genital.shape)]" + appended += " [lowertext(genital.name)]" // Name it something funny, i dare you. + if(/obj/item/organ/genital/butt) + var/obj/item/organ/genital/butt/booty = genital + appended += " [booty.size_name] [lowertext(booty.name)]" // Maybe " average butt pair" isn't the best for now else continue genitals += appended - string += english_list(genitals, "featureless groin") + string += english_list(genitals, " featureless groin", " and", ",") string += " on full display." - . += span_purple(string) - -#undef PAIRLESS_PANTIES + examine_content += span_purple(string) diff --git a/modular_sand/code/modules/mob/living/carbon/show.dm b/modular_sand/code/modules/mob/living/carbon/show.dm index edd752ed8a..7e96c07c77 100644 --- a/modular_sand/code/modules/mob/living/carbon/show.dm +++ b/modular_sand/code/modules/mob/living/carbon/show.dm @@ -15,6 +15,6 @@ if(!I && arm) usr.show_message("[usr] holds up [arm].", 1) else if(!arm && !I) - to_chat(usr, "You frown because now there's nothing you can show.") + to_chat(usr, span_notice("You frown because now there's nothing you can show.")) else if(!HAS_TRAIT(I, ABSTRACT_ITEM_TRAIT)) I.showoff(src) diff --git a/modular_sand/code/modules/mob/living/silicon/silicon.dm b/modular_sand/code/modules/mob/living/silicon/silicon.dm index 6109a0c8fc..af295e91c1 100644 --- a/modular_sand/code/modules/mob/living/silicon/silicon.dm +++ b/modular_sand/code/modules/mob/living/silicon/silicon.dm @@ -10,6 +10,6 @@ set desc = "Allows you to eat someone." if(!CHECK_BITFIELD(T.vore_flags, DEVOURABLE)) - to_chat(src, "System error: Unauthorized operation.") + to_chat(src, span_warning("System error: Unauthorized operation.")) return return feed_grabbed_to_self(src,T) diff --git a/modular_sand/code/modules/mob/living/simple_animal/bot/hugbot.dm b/modular_sand/code/modules/mob/living/simple_animal/bot/hugbot.dm index 0822ec540e..5250ceaffc 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/bot/hugbot.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/bot/hugbot.dm @@ -145,7 +145,7 @@ /mob/living/simple_animal/bot/hugbot/attack_hand(mob/living/carbon/human/H) if(H.a_intent == INTENT_DISARM && mode != BOT_TIPPED) - H.visible_message("[H] begins tipping over [src].", "You begin tipping over [src]...") + H.visible_message(span_danger("[H] begins tipping over [src]."), span_warning("You begin tipping over [src]...")) balloon_alert(H, "tipping over") if(world.time > last_tipping_action_voice + 15 SECONDS) @@ -159,7 +159,7 @@ tip_over(H) else if(H.a_intent == INTENT_HELP && mode == BOT_TIPPED) - H.visible_message("[H] begins righting [src].", "You begin righting [src]...") + H.visible_message(span_notice("[H] begins righting [src]."), span_notice("You begin righting [src]...")) balloon_alert(H, "righting") if(do_after(H, 3 SECONDS, target=src)) set_right(H) @@ -170,8 +170,8 @@ ..() if(emagged == 2) if(user) - to_chat(user, "You short out [src]'s manipulator pressure sensors.") - visible_message("[src]'s arm twitches violently!") + to_chat(user, span_notice("You short out [src]'s manipulator pressure sensors.")) + visible_message(span_danger("[src]'s arm twitches violently!")) flick("medibot_spark", src) playsound(src, "sparks", 75, 1) @@ -347,9 +347,9 @@ // Hey, didyah know that you Han't hug people as non-carbon? Well you can't hug people as non-carbon. Hence this mess if(zone_selected == BODY_ZONE_PRECISE_MOUTH) visible_message( \ - "[src] boops [H]'s nose.", \ - "You boop [H] on the nose.", target = H, - target_message = "[src] boops your nose.") + span_notice("[src] boops [H]'s nose."), \ + span_notice("You boop [H] on the nose."), target = H, + target_message = span_notice("[src] boops your nose.")) playsound(H, 'sound/items/Nose_boop.ogg', 50, 0) SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat) else if(check_zone(zone_selected) == BODY_ZONE_HEAD) @@ -357,9 +357,9 @@ if(ishuman(H)) S = H.dna.species - visible_message("[src] gives [H] a pat on the head to make [H.p_them()] feel better!", \ - "You give [src] a pat on the head to make [H.p_them()] feel better!", target = H, - target_message = "[src] gives you a pat on the head to make you feel better!") + visible_message(span_notice("[src] gives [H] a pat on the head to make [H.p_them()] feel better!"), \ + span_notice("You give [src] a pat on the head to make [H.p_them()] feel better!"), target = H, + target_message = span_notice("[src] gives you a pat on the head to make you feel better!")) SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat) if(S?.can_wag_tail(src) && !H.dna.species.is_wagging_tail()) var/static/list/many_tails = list("tail_human", "tail_lizard", "mam_tail") @@ -368,9 +368,9 @@ H.emote("wag") break else - visible_message("[src] hugs [H] to make [H.p_them()] feel better!", \ - "You hug [H] to make [H.p_them()] feel better!", target = H,\ - target_message = "[src] hugs you to make you feel better!") + visible_message(span_notice("[src] hugs [H] to make [H.p_them()] feel better!"), \ + span_notice("You hug [H] to make [H.p_them()] feel better!"), target = H,\ + target_message = span_notice("[src] hugs you to make you feel better!")) SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "hug", /datum/mood_event/hug) playsound(H.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) @@ -390,7 +390,7 @@ /mob/living/simple_animal/bot/hugbot/explode() on = FALSE - visible_message("[src] blows apart!") + visible_message(span_boldannounce("[src] blows apart!")) do_sparks(3, TRUE, src) var/atom/Tsec = drop_location() drop_part(/obj/item/storage/box/hug, Tsec) @@ -416,19 +416,19 @@ var/mob/living/simple_animal/bot/hugbot/A = new(drop_location()) A.name = created_name A.robot_arm = W.type - to_chat(user, "You add [W] to [src]. Beep boop!") + to_chat(user, span_notice("You add [W] to [src]. Beep boop!")) qdel(W) qdel(src) /obj/item/storage/box/hug/attackby(obj/item/I, mob/user, params) if((istype(I, /obj/item/bodypart/l_arm/robot)) || (istype(I, /obj/item/bodypart/r_arm/robot))) if(contents.len) //prevent accidently deleting contents - to_chat(user, "You need to empty [src] out first!") + to_chat(user, span_warning("You need to empty [src] out first!")) return if(!user.temporarilyRemoveItemFromInventory(I)) return qdel(I) - to_chat(user, "You add [I] to the [src]! You've got a hugbot assembly now!") + to_chat(user, span_notice("You add [I] to the [src]! You've got a hugbot assembly now!")) var/obj/item/bot_assembly/hugbot/A = new qdel(src) user.put_in_hands(A) @@ -438,7 +438,7 @@ // Skyrat exclusive: Tipping over hugbots. Because fuck medbots. /mob/living/simple_animal/bot/hugbot/proc/tip_over(mob/user) mobility_flags &= ~MOBILITY_MOVE - user.visible_message("[user] tips over [src]!", "You tip [src] over!") + user.visible_message(span_danger("[user] tips over [src]!"), span_danger("You tip [src] over!")) balloon_alert(user, "tipped over") mode = BOT_TIPPED tipper_name = user.name // Skyrat fix @@ -449,14 +449,14 @@ mobility_flags &= MOBILITY_MOVE var/list/messagevoice if(user) - user.visible_message("[user] sets [src] right-side up!", "You set [src] right-side up!") + user.visible_message(span_notice("[user] sets [src] right-side up!"), span_green("You set [src] right-side up!")) balloon_alert(user, "set right") if(user.name == tipper_name) messagevoice = list("I forgive you." = 'sound/voice/medbot/forgive.ogg') else messagevoice = list("Thank you!" = 'sound/voice/medbot/thank_you.ogg', "You are a good person." = 'sound/voice/medbot/youre_good.ogg') else - visible_message("[src] manages to writhe wiggle enough to right itself.") + visible_message(span_notice("[src] manages to writhe wiggle enough to right itself.")) messagevoice = list("Fuck you." = 'sound/voice/medbot/fuck_you.ogg', "Your behavior has been reported, have a nice day." = 'sound/voice/medbot/reported.ogg') tipper_name = null diff --git a/modular_sand/code/modules/mob/living/simple_animal/friendly/doges.dm b/modular_sand/code/modules/mob/living/simple_animal/friendly/doges.dm index ef6991e2d5..fa3b49613a 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/friendly/doges.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/friendly/doges.dm @@ -22,7 +22,7 @@ . = ..() if(.) for(var/obj/item/reagent_containers/food/snacks/burger/burbger in view(1, src)) - visible_message("\The [src] consumes the [burbger]!") + visible_message(span_danger("\The [src] consumes the [burbger]!")) qdel(burbger) revive(full_heal = 1) @@ -33,7 +33,7 @@ qdel(I) if(stat == DEAD) visible_message("\The [src] stands right back up after nibbling the [I]!") - else + else visible_message("\The [src] swallows the [I] whole!") revive(full_heal = 1) diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/gladiator.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/gladiator.dm index 9fd110873a..db5c805d2a 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/gladiator.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/gladiator.dm @@ -187,11 +187,11 @@ They deal 35 brute (armor is considered). if(isliving(A)) var/mob/living/LM = A forceMove(LM.loc) - visible_message("[src] knocks [LM] down!") + visible_message(span_userdanger("[src] knocks [LM] down!")) LM.DefaultCombatKnockdown(60) discharge() else if(istype(A, /turf/closed)) - visible_message("[src] crashes headfirst into [A]!") + visible_message(span_userdanger("[src] crashes headfirst into [A]!")) discharge(1.33) /mob/living/simple_animal/hostile/megafauna/gladiator/proc/update_phase() @@ -223,7 +223,7 @@ They deal 35 brute (armor is considered). move_to_delay = move_to_charge /mob/living/simple_animal/hostile/megafauna/gladiator/proc/zweispin() - visible_message("[src] lifts his zweihander, and prepares to spin!") + visible_message(span_boldwarning("[src] lifts his zweihander, and prepares to spin!")) speen = TRUE animate(src, color = "#ff6666", 10) sleep(5) @@ -277,7 +277,7 @@ They deal 35 brute (armor is considered). /mob/living/simple_animal/hostile/megafauna/gladiator/proc/chargeattack(atom/target, var/range) face_atom(target) - visible_message("[src] lifts his shield, and prepares to charge!") + visible_message(span_boldwarning("[src] lifts his shield, and prepares to charge!")) animate(src, color = "#ff6666", 3) sleep(4) face_atom(target) diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/glaurung.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/glaurung.dm index d9b730eb28..1e1efc4609 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/glaurung.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/glaurung.dm @@ -102,7 +102,7 @@ Difficulty: Medium /mob/living/simple_animal/hostile/megafauna/dragon/glaurung/AltClickOn(atom/movable/A) if(!istype(A)) - to_chat(src, "Your wings are too damaged for old swoop maneuvers.") + to_chat(src, span_warning("Your wings are too damaged for old swoop maneuvers.")) return /obj/item/gps/internal/glaurung diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/king_of_goats.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/king_of_goats.dm index f3980bc9fd..4b78bb7dbf 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/king_of_goats.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/king_of_goats.dm @@ -164,7 +164,7 @@ Difficulty: Insanely Hard /mob/living/simple_animal/hostile/megafauna/king/Retaliate() ..() if(stat == CONSCIOUS && prob(5)) - visible_message("\The [src] bellows indignantly, with a judgemental gleam in his eye.") + visible_message(span_warning("\The [src] bellows indignantly, with a judgemental gleam in his eye.")) /mob/living/simple_animal/hostile/megafauna/king/phase2/Retaliate() set waitfor = FALSE @@ -172,16 +172,16 @@ Difficulty: Insanely Hard if(spellscast < 5) if(prob(5) && move_to_delay >= 3) //speed buff spellscast++ - visible_message("\The [src] shimmers and seems to phase in and out of reality itself!") + visible_message(span_cult("\The [src] shimmers and seems to phase in and out of reality itself!")) move_to_delay = 1 else if(prob(5) && melee_damage_lower != 50) //damage buff spellscast++ - visible_message("\The [src]' horns grow larger and more menacing!") + visible_message(span_cult("\The [src]' horns grow larger and more menacing!")) melee_damage_lower = 50 else if(prob(5)) //spawn adds spellscast++ - visible_message("\The [src] summons the imperial guard to his aid, and they appear in a flash!") + visible_message(span_cult("\The [src] summons the imperial guard to his aid, and they appear in a flash!")) var/mob/living/simple_animal/hostile/retaliate/goat/guard/master/M = new(get_step(src,pick(GLOB.cardinals))) M.enemies |= enemies var/mob/living/simple_animal/hostile/retaliate/goat/guard/G = new(get_step(src,pick(GLOB.cardinals))) @@ -191,12 +191,12 @@ Difficulty: Insanely Hard else if(prob(5)) //EMP blast spellscast++ - visible_message("\The [src] disrupts nearby electrical equipment!") + visible_message(span_cult("\The [src] disrupts nearby electrical equipment!")) empulse(get_turf(src), 5, 2, 0) else if(prob(5) && melee_damage_type == BRUTE && !special_attacks) //elemental attacks spellscast++ - visible_message("\The [src]' horns flicker with holy white flames!") + visible_message(span_cult("\The [src]' horns flicker with holy white flames!")) melee_damage_type = BURN else if(prob(5)) //earthquake spell @@ -213,7 +213,7 @@ Difficulty: Insanely Hard if(!(getBruteLoss() > health_holder)) adjustBruteLoss(health_holder - getBruteLoss()) //our own magicks cannot harm us else - visible_message("\The [src] loses concentration and huffs haughtily.") + visible_message(span_notice("\The [src] loses concentration and huffs haughtily.")) stop_automated_movement = FALSE else return @@ -225,7 +225,7 @@ Difficulty: Insanely Hard revive(TRUE) stun_chance = 10 update_icon() - visible_message("\The [src]' wounds close with a flash, and when he emerges, he's even larger than before!") + visible_message(span_cult("\The [src]' wounds close with a flash, and when he emerges, he's even larger than before!")) /mob/living/simple_animal/hostile/megafauna/king/phase2/update_icon() @@ -248,20 +248,20 @@ Difficulty: Insanely Hard if(!.) return FALSE if(special_attacks >= 5 && melee_damage_type != BRUTE) - visible_message("The energy surrounding \the [src]'s horns dissipates.") + visible_message(span_cult("The energy surrounding \the [src]'s horns dissipates.")) melee_damage_type = BRUTE if(special_attacks >= 5 && melee_damage_lower == 50) - visible_message("The [src]' horns shrink back down to normal size.") + visible_message(span_cult("The [src]' horns shrink back down to normal size.")) melee_damage_lower = 40 /mob/living/simple_animal/hostile/megafauna/king/proc/OnDeath() - visible_message("\The [src] lets loose a terrific wail as its wounds close shut with a flash of light, and its eyes glow even brighter than before!") + visible_message(span_cult("\The [src] lets loose a terrific wail as its wounds close shut with a flash of light, and its eyes glow even brighter than before!")) new /mob/living/simple_animal/hostile/megafauna/king/phase2(get_turf(src)) qdel(src) /mob/living/simple_animal/hostile/megafauna/king/phase2/OnDeath() if(phase3) - visible_message("\The [src] shrieks as the seal on his power breaks and he starts to break apart!") + visible_message(span_cult("\The [src] shrieks as the seal on his power breaks and he starts to break apart!")) new /obj/structure/ladder/unbreakable/goat(loc) new /obj/item/gun/energy/goatgun(loc) new /obj/item/toy/plush/goatplushie/angry/kinggoat(loc) //If someone dies from this after beating the king goat im going to laugh @@ -278,7 +278,7 @@ Difficulty: Insanely Hard L.gib() if(prob(stun_chance)) L.Stun(5) - visible_message("\The [L] is bowled over by the impact of [src]'s attack!") + visible_message(span_warning("\The [L] is bowled over by the impact of [src]'s attack!")) /mob/living/simple_animal/hostile/megafauna/king/phase2/AttackingTarget() . = ..() diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm index f671e2f9eb..ed66903f0f 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -33,7 +33,7 @@ L.GiveTarget(target) - visible_message("[src] splits in twain!") + visible_message(span_boldannounce("[src] splits in twain!")) else var/last_legion = TRUE for(var/mob/living/simple_animal/hostile/megafauna/legion/other in GLOB.mob_living_list) diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 0f062d21b1..b7476832fe 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -48,7 +48,7 @@ if((faction_check_mob(M) && attack_same) || (!faction_check_mob(M)) || (!ismegafauna(M))) enemies |= M if(!retaliated) - src.visible_message("[src] seems pretty pissed off at [M]!") + src.visible_message(span_userdanger("[src] seems pretty pissed off at [M]!")) retaliated = TRUE retaliatedcooldown = world.time + retaliatedcooldowntime else if(ismecha(A)) @@ -61,7 +61,7 @@ continue enemies |= living if(!retaliated) - visible_message("[src] seems pretty pissed off at [M]!") + visible_message(span_userdanger("[src] seems pretty pissed off at [M]!")) retaliated = TRUE retaliatedcooldown = world.time + retaliatedcooldowntime @@ -129,9 +129,9 @@ if(KA && KA.bayonet) message = pick(glorymessagespka | glorymessagespkabayonet) if(message) - visible_message("[slayer] [message]") + visible_message(span_danger("[slayer] [message]")) else - visible_message("[slayer] does something generally considered brutal to [src]... Whatever that may be!") + visible_message(span_danger("[slayer] does something generally considered brutal to [src]... Whatever that may be!")) adjustHealth(maxHealth, TRUE, TRUE) if(mob_biotypes & MOB_ORGANIC) new /obj/effect/gibspawner/generic(src.loc) @@ -139,14 +139,14 @@ new /obj/effect/gibspawner/robot(src.loc) slayer.heal_overall_damage(gloryhealth,gloryhealth) else - to_chat(slayer, "You fail to glory kill [src]!") + to_chat(slayer, span_danger("You fail to glory kill [src]!")) /mob/living/simple_animal/hostile/megafauna/devour(mob/living/L) if(!L) return visible_message( - "[src] devours [L]!", - "You feast on [L], restoring your health!") + span_danger("[src] devours [L]!"), + span_userdanger("You feast on [L], restoring your health!")) if(!is_station_level(z) || client) //NPC monsters won't heal while on station adjustBruteLoss(-L.maxHealth/2) L.gib() diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/rogueprocess.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/rogueprocess.dm index f1df97f500..fb49b7fa98 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/rogueprocess.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/rogueprocess.dm @@ -170,7 +170,7 @@ if(path > 2) if(!target) return - visible_message("[src] raises it's plasma cutter!") + visible_message(span_boldwarning("[src] raises it's plasma cutter!")) sleep(3) var/turf/startloc = get_turf(src) var/obj/item/projectile/P = new /obj/item/projectile/plasma/rogue(startloc) @@ -186,7 +186,7 @@ if(theline > 2) if(!target) return - visible_message("[src] raises it's tri-shot plasma cutter!") + visible_message(span_boldwarning("[src] raises it's tri-shot plasma cutter!")) var/ogangle = Get_Angle(src, target) sleep(7) var/turf/startloc = get_turf(src) @@ -212,7 +212,7 @@ Y.fire(otherangle2) /mob/living/simple_animal/hostile/megafauna/rogueprocess/proc/knockdown(range = 2) - visible_message("[src] smashes into the ground!") + visible_message(span_boldwarning("[src] smashes into the ground!")) playsound(src,'sound/misc/crunch.ogg', 200, 1) var/list/hit_things = list() sleep(7) @@ -231,7 +231,7 @@ sleep(3) /mob/living/simple_animal/hostile/megafauna/rogueprocess/proc/shockwave(direction, range, wave_duration = 1.5) - visible_message("[src] smashes the ground in a general direction!!") + visible_message(span_boldwarning("[src] smashes the ground in a general direction!!")) playsound(src,'sound/misc/crunch.ogg', 200, 1) sleep(7) var/list/hit_things = list() @@ -272,7 +272,7 @@ sleep(wave_duration) /mob/living/simple_animal/hostile/megafauna/rogueprocess/proc/ultishockwave(range, iteration_duration = 5) - visible_message("[src] smashes the ground around them!!") + visible_message(span_boldwarning("[src] smashes the ground around them!!")) playsound(src,'sound/misc/crunch.ogg', 200, 1) sleep(10) var/list/hit_things = list() diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/sif.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/sif.dm index 1411b2ad4b..56c05a748c 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/sif.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/sif.dm @@ -122,7 +122,7 @@ Difficulty: Medium spawn(30) if(!QDELETED(src)) new /mob/living/simple_animal/hostile/megafauna/sif(get_turf(src.loc)) - visible_message("The ground shakes.") + visible_message(span_notice("The ground shakes.")) playsound(get_turf(src.loc), 'sound/effects/curse3.ogg', 100, 1) playsound(get_turf(src.loc), 'sound/effects/meteorimpact.ogg', 100, 1) qdel(src) @@ -223,7 +223,7 @@ Difficulty: Medium else if(passed == 1) - visible_message("[src] dodged the projectile!", "You dodge the projectile!") + visible_message(span_danger("[src] dodged the projectile!"), span_userdanger("You dodge the projectile!")) playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 300, 1) return 0 @@ -233,7 +233,7 @@ Difficulty: Medium /mob/living/simple_animal/hostile/megafauna/sif/proc/angered() src.angered = TRUE src.stageTwo = TRUE - src.visible_message("[src] lets out a ear ripping howl!", "[src] lets out an ear ripping roar!") + src.visible_message(span_userdanger("[src] lets out a ear ripping howl!"), span_userdanger("[src] lets out an ear ripping roar!")) playsound(src, 'modular_sand/sound/sif/howl.ogg', 100, 1) var/mob/living/L = target shake_camera(L, 4, 3) @@ -247,7 +247,7 @@ Difficulty: Medium /mob/living/simple_animal/hostile/megafauna/sif/proc/enraged() src.stageThree = TRUE src.enraged = TRUE - src.visible_message("[src] lets out a ear ripping yelp!", "[src] lets out an ear ripping yelp!") + src.visible_message(span_userdanger("[src] lets out a ear ripping yelp!"), span_userdanger("[src] lets out an ear ripping yelp!")) playsound(src, 'modular_sand/sound/sif/howl.ogg', 100, 1) var/mob/living/L = target shake_camera(L, 8, 6) @@ -355,7 +355,7 @@ Difficulty: Medium DestroySurroundings() if(isliving(A)) var/mob/living/L = A - L.visible_message("[src] stomps on [L]!", "[src] stomps on you!") + L.visible_message(span_danger("[src] stomps on [L]!"), span_userdanger("[src] stomps on you!")) src.forceMove(get_turf(L)) L.apply_damage(20, BRUTE) playsound(get_turf(L), 'modular_sand/sound/sif/sif_stomp.ogg', 400, 1) diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/candy.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/candy.dm index 82ccc551ee..63ad4d8cf0 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/candy.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/candy.dm @@ -51,28 +51,28 @@ name = "Blood Charge" icon_icon = 'modular_sand/icons/mob/actions/actions_elites.dmi' button_icon_state = "blood_charge" - chosen_message = "You will attempt to charge your target." + chosen_message = span_boldwarning("You will attempt to charge your target.") chosen_attack_num = BLOOD_CHARGE /datum/action/innate/elite_attack/bloody_trap name = "Bloody Trap" icon_icon = 'modular_sand/icons/mob/actions/actions_elites.dmi' button_icon_state = "bloody_trap" - chosen_message = "You will attempt to trap your target." + chosen_message = span_boldwarning("You will attempt to trap your target.") chosen_attack_num = BLOODY_TRAP /datum/action/innate/elite_attack/meat_shield name = "Meat Shield" icon_icon = 'modular_sand/icons/mob/actions/actions_elites.dmi' button_icon_state = "meat_shield" - chosen_message = "You will attempt to shield yourself." + chosen_message = span_boldwarning("You will attempt to shield yourself.") chosen_attack_num = MEAT_SHIELD /datum/action/innate/elite_attack/knockdown name = "Knockdown" icon_icon = 'modular_sand/icons/mob/actions/actions_elites.dmi' button_icon_state = "knockdown" - chosen_message = "You will knock down every mob around you." + chosen_message = span_boldwarning("You will knock down every mob around you.") chosen_attack_num = KNOCKDOWN @@ -105,7 +105,7 @@ var/dir_to_target = get_dir(get_turf(src), get_turf(target)) var/turf/T = get_turf(src) playsound(src,'sound/magic/demon_attack1.ogg', 200, 1) - visible_message("[src] prepares to charge!") + visible_message(span_boldwarning("[src] prepares to charge!")) for(var/i in 1 to 6) new /obj/effect/temp_visual/dir_setting/bloodsplatter/candy(T, get_dir(T, target)) T = get_step(T, dir_to_target) @@ -120,7 +120,7 @@ if(bline.len > 6) return FALSE ranged_cooldown = world.time + 100 - visible_message("[src] traps [target]!") + visible_message(span_boldwarning("[src] traps [target]!")) for(var/turf/J in view(1, target) - get_turf(target)) new /obj/effect/temp_visual/bloodwall(J, src) sleep(5) @@ -134,13 +134,13 @@ for(var/obj/effect/temp_visual/bloodwall/B in N.contents) bloodwalls += B var/obj/effect/temp_visual/bloodwall/chosen = pick(bloodwalls) - visible_message("One of the blood walls disappear!") + visible_message(span_boldwarning("One of the blood walls disappear!")) qdel(chosen) /mob/living/simple_animal/hostile/asteroid/elite/candy/proc/meatshield() ranged_cooldown = world.time + 25 playsound(src,'sound/magic/Blind.ogg', 200, 1) - visible_message("[src] raises a wall!") + visible_message(span_boldwarning("[src] raises a wall!")) var/turf/T = get_turf(get_step(src, src.dir)) var/list/hit_things = list() new /obj/effect/temp_visual/bloodwall(T, src) @@ -172,7 +172,7 @@ /mob/living/simple_animal/hostile/asteroid/elite/candy/proc/knockdown() ranged_cooldown = world.time + 100 playsound(src,'sound/misc/crunch.ogg', 200, 1) - visible_message("[src] clenches his fists and smashes the ground!") + visible_message(span_boldwarning("[src] clenches his fists and smashes the ground!")) var/list/hit_things = list() sleep(10) for(var/turf/T in view(1, src)) @@ -217,8 +217,8 @@ if(faction_check_mob(L)) return hit_things += L - visible_message("[src] attacks [L] with much force!") - to_chat(L, "[src] grabs you and throws you with much force!") + visible_message(span_boldwarning("[src] attacks [L] with much force!")) + to_chat(L, span_userdanger("[src] grabs you and throws you with much force!")) L.safe_throw_at(throwtarget, 10, 1, src) //L.Paralyze(20) L.Stun(20) //substituting this for the Paralyze from the line above, because we don't have tg paralysis stuff @@ -270,7 +270,7 @@ icon_state = "vial" /obj/item/bloodcrawlbottle/attack_self(mob/user) - to_chat(user, "You drink the bottle's contents.") + to_chat(user, span_notice("You drink the bottle's contents.")) var/obj/effect/proc_holder/spell/bloodcrawl/S = new /obj/effect/proc_holder/spell/bloodcrawl/ user.mind.AddSpell(S) user.log_message("learned the spell bloodcrawl ([S])", LOG_ATTACK, color="orange") diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.dm index 66e5997888..a59927c59e 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.dm @@ -51,28 +51,28 @@ name = "Lava Moat" icon_icon = 'modular_sand/icons/mob/actions/actions_elites.dmi' button_icon_state = "lava_moat" - chosen_message = "You will attempt to create a lava moat around you." + chosen_message = span_boldwarning("You will attempt to create a lava moat around you.") chosen_attack_num = LAVA_MOAT /datum/action/innate/elite_attack/lavaaround name = "Lava Rivers" icon_icon = 'modular_sand/icons/mob/actions/actions_elites.dmi' button_icon_state = "lava_around" - chosen_message = "You will now create lava rivers at your cardinal directions." + chosen_message = span_boldwarning("You will now create lava rivers at your cardinal directions.") chosen_attack_num = LAVA_AROUND /datum/action/innate/elite_attack/firespew name = "Fire Spew" icon_icon = 'modular_sand/icons/mob/actions/actions_elites.dmi' button_icon_state = "fire_spew" - chosen_message = "You will now spew fire at your target." + chosen_message = span_boldwarning("You will now spew fire at your target.") chosen_attack_num = FIRE_SPEW /datum/action/innate/elite_attack/firemoat name = "Fire Moat" icon_icon = 'modular_sand/icons/mob/actions/actions_elites.dmi' button_icon_state = "fire_moat" - chosen_message = "You will now spew fire at all cardinal directions." + chosen_message = span_boldwarning("You will now spew fire at all cardinal directions.") chosen_attack_num = FIRE_MOAT /mob/living/simple_animal/hostile/asteroid/elite/drakeling/OpenFire() @@ -101,7 +101,7 @@ //Drakeling actions /mob/living/simple_animal/hostile/asteroid/elite/drakeling/proc/lava_moat() ranged_cooldown = world.time + 25 - visible_message("[src] spews lava around themselves! Get back!") + visible_message(span_boldwarning("[src] spews lava around themselves! Get back!")) for(var/turf/T in oview(1, src)) new /obj/effect/temp_visual/lava_warning/drakeling(T, 40) @@ -112,7 +112,7 @@ /mob/living/simple_animal/hostile/asteroid/elite/drakeling/proc/fire_spew() ranged_cooldown = world.time + 25 - visible_message("[src] spews fire!") + visible_message(span_boldwarning("[src] spews fire!")) playsound(src,'sound/magic/Fireball.ogg', 200, 1) sleep(5) fire_wall(src.dir, 10) @@ -120,7 +120,7 @@ /mob/living/simple_animal/hostile/asteroid/elite/drakeling/proc/fire_moat() ranged_cooldown = world.time + 100 playsound(src,'sound/magic/Fireball.ogg', 200, 1) - visible_message("[src] violently puffs smoke!They're going to make a fire moat!") + visible_message(span_boldwarning("[src] violently puffs smoke!They're going to make a fire moat!")) sleep(5) for(var/d in GLOB.alldirs) INVOKE_ASYNC(src, .proc/fire_wall, d, 10) @@ -139,7 +139,7 @@ else hitlist += L L.adjustFireLoss(20) - to_chat(L, "You're hit by [src]'s fire breath!") + to_chat(L, span_userdanger("You're hit by [src]'s fire breath!")) T = get_step(T, dir) sleep(1) diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index ccba5d65a6..f47f7d8a9d 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -25,14 +25,14 @@ obj/item/tumor_shard/afterattack(atom/target, mob/user, proximity_flag) if(istype(target, /mob/living/simple_animal/hostile/asteroid/elite) && proximity_flag) var/mob/living/simple_animal/hostile/asteroid/elite/E = target if(E.stat != DEAD || E.sentience_type != SENTIENCE_BOSS || !E.key) - user.visible_message("It appears [E] is unable to be revived right now. Perhaps try again later.") + user.visible_message(span_notice("It appears [E] is unable to be revived right now. Perhaps try again later.")) return E.faction = list("neutral") E.revive(full_heal = TRUE, admin_revive = TRUE) - user.visible_message("[user] stabs [E] with [src], reviving it.") + user.visible_message(span_notice("[user] stabs [E] with [src], reviving it.")) E.playsound_local(get_turf(E), 'sound/effects/magic.ogg', 40, 0) to_chat(E, "You have been revived by [user]. You owe [user] a great debt. Assist [user.p_them()] in achieving [user.p_their()] goals, regardless of risk.Note that you now share the loyalties of [user]. You are expected not to intentionally sabotage their faction unless commanded to!") + to_chat(E, span_big bold("Note that you now share the loyalties of [user]. You are expected not to intentionally sabotage their faction unless commanded to!")) E.maxHealth = E.maxHealth * 0.5 E.health = E.maxHealth E.desc = "[E.desc] However, this one appears appears less wild in nature, and calmer around people." @@ -40,4 +40,4 @@ obj/item/tumor_shard/afterattack(atom/target, mob/user, proximity_flag) E.owner = user qdel(src) else - to_chat(user, "[src] only works on the corpse of a sentient lavaland elite.") + to_chat(user, span_info("[src] only works on the corpse of a sentient lavaland elite.")) diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/fanaticminer.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/fanaticminer.dm index cd81e17cc3..5a07d9aa66 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/fanaticminer.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/fanaticminer.dm @@ -52,28 +52,28 @@ name = "Axe Slam" icon_icon = 'modular_sand/icons/mob/actions/actions_elites.dmi' button_icon_state = "axe_slam" - chosen_message = "You will attempt to slam your axe." + chosen_message = span_boldwarning("You will attempt to slam your axe.") chosen_attack_num = AXE_SLAM /datum/action/innate/elite_attack/summon_shambler name = "Summon Shambler" icon_icon = 'modular_sand/icons/mob/actions/actions_elites.dmi' button_icon_state = "summon_shambler" - chosen_message = "You will attempt to summon a shambling miner." + chosen_message = span_boldwarning("You will attempt to summon a shambling miner.") chosen_attack_num = SUMMON_SHAMBLER /datum/action/innate/elite_attack/dash name = "Dash" icon_icon = 'modular_sand/icons/mob/actions/actions_elites.dmi' button_icon_state = "dash" - chosen_message = "You will attempt to dash near your target." + chosen_message = span_boldwarning("You will attempt to dash near your target.") chosen_attack_num = DASH /datum/action/innate/elite_attack/axe_throw name = "Axe Throw" icon_icon = 'modular_sand/icons/mob/actions/actions_elites.dmi' button_icon_state = "axe_throw" - chosen_message = "You will attempt to throw your axe." + chosen_message = span_boldwarning("You will attempt to throw your axe.") chosen_attack_num = AXE_THROW /mob/living/simple_animal/hostile/asteroid/elite/minerpriest/OpenFire() @@ -107,26 +107,26 @@ for(var/i in 1 to 3) new /obj/effect/temp_visual/dragon_swoop/priest(T) T = get_step(T, dir_to_target) - visible_message("[src] prepares to slam his axe!") + visible_message(span_boldwarning("[src] prepares to slam his axe!")) sleep(5) playsound(src,'sound/misc/crunch.ogg', 200, 1) T = get_step(get_turf(src), dir_to_target) var/list/hit_things = list() - visible_message("[src] slams his axe!") + visible_message(span_boldwarning("[src] slams his axe!")) for(var/i in 1 to 3) for(var/mob/living/L in T.contents) if(faction_check_mob(L)) return hit_things += L - visible_message("[src] slams his axe on [L]!") - to_chat(L, "[src] slams his axe on you!") + visible_message(span_boldwarning("[src] slams his axe on [L]!")) + to_chat(L, span_userdanger("[src] slams his axe on you!")) L.Stun(15) L.adjustBruteLoss(30) T = get_step(T, dir_to_target) /mob/living/simple_animal/hostile/asteroid/elite/minerpriest/proc/summon_shambler(target) ranged_cooldown = world.time + 150 - visible_message("[src] summons a minion!") + visible_message(span_boldwarning("[src] summons a minion!")) playsound(src,'sound/magic/CastSummon.ogg', 200, 1) var/list/turfs = list() for(var/turf/T in oview(2, src)) @@ -139,7 +139,7 @@ /mob/living/simple_animal/hostile/asteroid/elite/minerpriest/proc/dash(atom/dash_target) ranged_cooldown = world.time + 20 - visible_message("[src] dashes into the air!") + visible_message(span_boldwarning("[src] dashes into the air!")) playsound(src,'sound/magic/blink.ogg', 200, 1) var/list/accessable_turfs = list() var/self_dist_to_target = 0 @@ -179,7 +179,7 @@ /mob/living/simple_animal/hostile/asteroid/elite/minerpriest/proc/axe_throw(target) ranged_cooldown = world.time + 20 - visible_message("[src] prepares to throw his axe!") + visible_message(span_boldwarning("[src] prepares to throw his axe!")) var/turf/targetturf = get_turf(target) playsound(src,'sound/weapons/fwoosh.wav', 200, 1) Shoot(targetturf) @@ -189,8 +189,8 @@ var/mob/living/carbon/human/H = new /mob/living/carbon/human(src.loc) if(src.client) H.client = src.client - to_chat(H, "You have been finally enlightened. Serving the necropolis is not your duty anymore, thanks to whoever defeated you. You owe them a great debt.Note that you now share the loyalties of the one who defeated you. You are expected not to intentionally sabotage their faction unless commanded to!") + to_chat(H, span_userdanger("You have been finally enlightened. Serving the necropolis is not your duty anymore, thanks to whoever defeated you. You owe them a great debt.")) + to_chat(H, span_big(span_bold("Note that you now share the loyalties of the one who defeated you. You are expected not to intentionally sabotage their faction unless commanded to!"))) else H.adjustBruteLoss(200) H.equipOutfit(/datum/outfit/job/miner/equipped/priest) diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/miningmobs.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/miningmobs.dm index fe050ab3ec..5fce2c9ed7 100644 --- a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/miningmobs.dm +++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/miningmobs.dm @@ -49,9 +49,9 @@ if(KA && KA.bayonet) message = pick(glorymessagespka | glorymessagespkabayonet) if(message) - visible_message("[slayer] [message]") + visible_message(span_danger("[slayer] [message]")) else - visible_message("[slayer] does something generally considered brutal to [src]... Whatever that may be!") + visible_message(span_danger("[slayer] does something generally considered brutal to [src]... Whatever that may be!")) slayer.heal_overall_damage(gloryhealth,gloryhealth) playsound(src.loc, death_sound, 150, TRUE, -1) crusher_drop_mod *= 2 @@ -61,4 +61,4 @@ else if(mob_biotypes & MOB_ROBOTIC) new /obj/effect/gibspawner/robot(src.loc) else - to_chat(slayer, "You fail to glory kill [src]!") + to_chat(slayer, span_danger("You fail to glory kill [src]!")) diff --git a/modular_sand/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/modular_sand/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index dccf94c0a9..ac51d7e5ec 100644 --- a/modular_sand/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/modular_sand/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -8,7 +8,7 @@ if(!suppressed) playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) else - to_chat(loc, "[src] silently charges up.") + to_chat(loc, span_warning("[src] silently charges up.")) update_icon() overheat = FALSE else //this is a terrible solution, but it ensures that it wont be stuck on dischaged if it fails to reload in an obj @@ -32,16 +32,16 @@ var/obj/item/borg/upgrade/modkit/MK = I switch(MK.type) if(/obj/item/borg/upgrade/modkit/chassis_mod) - to_chat(user, "This modkit is unsuitable for [src]!") + to_chat(user, span_userdanger("This modkit is unsuitable for [src]!")) return FALSE if(/obj/item/borg/upgrade/modkit/chassis_mod/orange) - to_chat(user, "This modkit is unsuitable for [src]!") + to_chat(user, span_userdanger("This modkit is unsuitable for [src]!")) return FALSE if(/obj/item/borg/upgrade/modkit/tracer) - to_chat(user, "This modkit is unsuitable for [src]!") + to_chat(user, span_userdanger("This modkit is unsuitable for [src]!")) return FALSE if(/obj/item/borg/upgrade/modkit/tracer/adjustable) - to_chat(user, "This modkit is unsuitable for [src]!") + to_chat(user, span_userdanger("This modkit is unsuitable for [src]!")) return FALSE MK.install(src, user) else @@ -53,16 +53,16 @@ var/obj/item/borg/upgrade/modkit/MK = src switch(MK.type) if(/obj/item/borg/upgrade/modkit/chassis_mod) - to_chat(user, "This modkit is unsuitable for [A]!") + to_chat(user, span_userdanger("This modkit is unsuitable for [A]!")) return FALSE if(/obj/item/borg/upgrade/modkit/chassis_mod/orange) - to_chat(user, "This modkit is unsuitable for [A]!") + to_chat(user, span_userdanger("This modkit is unsuitable for [A]!")) return FALSE if(/obj/item/borg/upgrade/modkit/tracer) - to_chat(user, "This modkit is unsuitable for [A]!") + to_chat(user, span_userdanger("This modkit is unsuitable for [A]!")) return FALSE if(/obj/item/borg/upgrade/modkit/tracer/adjustable) - to_chat(user, "This modkit is unsuitable for [A]!") + to_chat(user, span_userdanger("This modkit is unsuitable for [A]!")) return FALSE install(A, user) else @@ -391,7 +391,7 @@ /mob/living/simple_animal/hostile/asteroid/hivelordbrood/explosivelegion/death() explosion(src.loc, 0, 0, 1, 2, 0, FALSE, 2) - src.visible_message("The [src] explodes!") + src.visible_message(span_danger("The [src] explodes!")) ..() /obj/item/borg/upgrade/modkit/skull @@ -435,7 +435,7 @@ else hitlist += L L.adjustFireLoss(src.modifier) - to_chat(L, "You're hit by [KA]'s fire breath!") + to_chat(L, span_userdanger("You're hit by [KA]'s fire breath!")) //king goat /obj/item/borg/upgrade/modkit/cooldown/cooler name = "cooler modification kit" diff --git a/modular_sand/code/modules/reagents/chemistry/reagents/other_reagents.dm b/modular_sand/code/modules/reagents/chemistry/reagents/other_reagents.dm index e5dcebcbdb..344087f408 100644 --- a/modular_sand/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/modular_sand/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -25,7 +25,7 @@ /datum/reagent/dragons_blood/admin/reaction_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection)))) - to_chat(user, "Power courses through you! You can now shift your form at will.") + to_chat(user, span_danger("Power courses through you! You can now shift your form at will.")) var/obj/effect/proc_holder/spell/targeted/shapeshift/dragon/D = new var/user.mind.AddSpell(D) */ //FIX THIS SHIT diff --git a/modular_sand/code/modules/resize/resizing.dm b/modular_sand/code/modules/resize/resizing.dm index f00762bb04..9d0302561d 100644 --- a/modular_sand/code/modules/resize/resizing.dm +++ b/modular_sand/code/modules/resize/resizing.dm @@ -26,9 +26,9 @@ //Smaller person being stepped on if(get_size(user) > get_size(target) && iscarbon(src)) if(istype(user) && user.dna.features["taur"] == "Naga" || user.dna.features["taur"] == "Tentacle") - target.visible_message("[src] carefully slithers around [target].", "[src]'s huge tail slithers besides you.") + target.visible_message(span_notice("[src] carefully slithers around [target]."), span_notice("[src]'s huge tail slithers besides you.")) else - target.visible_message("[src] carefully steps over [target].", "[src] steps over you carefully.") + target.visible_message(span_notice("[src] carefully steps over [target]."), span_notice("[src] steps over you carefully.")) return TRUE //Smaller person stepping under a larger person @@ -69,9 +69,9 @@ addtimer(CALLBACK(user, /mob/.proc/remove_movespeed_modifier, MOVESPEED_ID_STOMP, TRUE), 3) //0.3 seconds if(get_size(user) > get_size(target) && iscarbon(user)) if(istype(user) && user.dna.features["taur"] == "Naga" || user.dna.features["taur"] == "Tentacle") - target.visible_message("[src] carefully rolls their tail over [target]!", "[src]'s huge tail rolls over you!") + target.visible_message(span_danger("[src] carefully rolls their tail over [target]!"), span_danger("[src]'s huge tail rolls over you!")) else - target.visible_message("[src] carefully steps on [target]!", "[src] steps onto you with force!") + target.visible_message(span_danger("[src] carefully steps on [target]!"), span_danger("[src] steps onto you with force!")) return TRUE if(user.a_intent == "harm" && CHECK_MOBILITY(user, MOBILITY_MOVE) && !user.buckled) @@ -85,9 +85,9 @@ //user.Stun(20) if(get_size(user) > get_size(target) && iscarbon(user)) if(istype(user) && (user.dna.features["taur"] == "Naga" || user.dna.features["taur"] == "Tentacle")) - target.visible_message("[src] mows down [target] under their tail!", "[src] plows their tail over you mercilessly!") + target.visible_message(span_danger("[src] mows down [target] under their tail!"), span_userdanger("[src] plows their tail over you mercilessly!")) else - target.visible_message("[src] slams their foot down on [target], crushing them!", "[src] crushes you under their foot!") + target.visible_message(span_danger("[src] slams their foot down on [target], crushing them!"), span_userdanger("[src] crushes you under their foot!")) return TRUE if(user.a_intent == "grab" && CHECK_MOBILITY(user, MOBILITY_MOVE) && !user.buckled) @@ -101,17 +101,17 @@ var/feetCover = (user.wear_suit && (user.wear_suit.body_parts_covered & FEET)) || (user.w_uniform && (user.w_uniform.body_parts_covered & FEET) || (user.shoes && (user.shoes.body_parts_covered & FEET))) if(feetCover) if(user?.dna?.features["taur"] == "Naga" || user?.dna?.features["taur"] == "Tentacle") - target.visible_message("[src] pins [target] under their tail!", "[src] pins you beneath their tail!") + target.visible_message(span_danger("[src] pins [target] under their tail!"), span_danger("[src] pins you beneath their tail!")) else - target.visible_message("[src] pins [target] helplessly underfoot!", "[src] pins you underfoot!") + target.visible_message(span_danger("[src] pins [target] helplessly underfoot!"), span_danger("[src] pins you underfoot!")) return TRUE else if(user?.dna?.features["taur"] == "Naga" || user?.dna?.features["taur"] == "Tentacle") - target.visible_message("[user] snatches up [target] underneath their tail!", "[src]'s tail winds around you and snatches you in its coils!") + target.visible_message(span_danger("[user] snatches up [target] underneath their tail!"), span_userdanger("[src]'s tail winds around you and snatches you in its coils!")) //target.mob_pickup_micro_feet(user) SEND_SIGNAL(target, COMSIG_MICRO_PICKUP_FEET, user) else - target.visible_message("[user] stomps down on [target], curling their toes and picking them up!", "[src]'s toes pin you down and curl around you, picking you up!") + target.visible_message(span_danger("[user] stomps down on [target], curling their toes and picking them up!"), span_userdanger("[src]'s toes pin you down and curl around you, picking you up!")) //target.mob_pickup_micro_feet(user) SEND_SIGNAL(target, COMSIG_MICRO_PICKUP_FEET, user) return TRUE @@ -126,18 +126,18 @@ if(ishuman(src)) var/mob/living/carbon/human/validmob = src if(validmob?.dna?.features["taur"] == "Naga" || validmob?.dna?.features["taur"] == "Tentacle") - visible_message("[validmob] carefully slithers around [target].", "You carefully slither around [target].") + visible_message(span_notice("[validmob] carefully slithers around [target]."), span_notice("You carefully slither around [target].")) else - visible_message("[validmob] carefully steps around [target].", "You carefully steps around [target].") + visible_message(span_notice("[validmob] carefully steps around [target]."), span_notice("You carefully steps around [target].")) //smaller person stepping under another person... TO DO, fix and allow special interactions with naga legs to be seen /mob/living/proc/micro_step_under(mob/living/target) if(ishuman(src)) var/mob/living/carbon/human/validmob = src if(validmob?.dna?.features["taur"] == "Naga" || validmob?.dna?.features["taur"] == "Tentacle") - visible_message("[validmob] bounds over [target]'s tail.", "You jump over [target]'s thick tail.") + visible_message(span_notice("[validmob] bounds over [target]'s tail."), span_notice("You jump over [target]'s thick tail.")) else - visible_message("[validmob] runs between [target]'s legs.", "You run between [target]'s legs.") + visible_message(span_notice("[validmob] runs between [target]'s legs."), span_notice("You run between [target]'s legs.")) //Proc for scaling stamina damage on size difference /mob/living/carbon/proc/sizediffStamLoss(mob/living/carbon/target) diff --git a/modular_sand/code/modules/resize/sizechems.dm b/modular_sand/code/modules/resize/sizechems.dm index c914a5e370..61d80f81ca 100644 --- a/modular_sand/code/modules/resize/sizechems.dm +++ b/modular_sand/code/modules/resize/sizechems.dm @@ -78,7 +78,7 @@ var/size = get_size(M) if(size < RESIZE_MACRO) M.update_size(size + 0.025) - M.visible_message("[pick("[M] grows!", "[M] expands in size!", "[M] pushes outwards in stature!")]", "[pick("You feel your body fighting for space and growing!", "The world contracts inwards in every direction!", "You feel your muscles expand, and your surroundings shrink!")]") + M.visible_message(span_danger("[pick("[M] grows!", "[M] expands in size!", "[M] pushes outwards in stature!")]"), span_danger("[pick("You feel your body fighting for space and growing!", "The world contracts inwards in every direction!", "You feel your muscles expand, and your surroundings shrink!")]")) ..() . = 1 @@ -125,6 +125,6 @@ var/size = get_size(M) if(size > RESIZE_MICRO) M.update_size(size - 0.025) - M.visible_message("[pick("[M] shrinks down!", "[M] dwindles in size!", "[M] compresses down!")]", "[pick("You feel your body compressing in size!", "The world pushes outwards in every direction!", "You feel your muscles contract, and your surroundings grow!")]") + M.visible_message(span_danger("[pick("[M] shrinks down!", "[M] dwindles in size!", "[M] compresses down!")]"), span_danger("[pick("You feel your body compressing in size!", "The world pushes outwards in every direction!", "You feel your muscles contract, and your surroundings grow!")]")) ..() . = 1 diff --git a/modular_sand/code/modules/ruins/lavalandruin_code/doom.dm b/modular_sand/code/modules/ruins/lavalandruin_code/doom.dm index 8d31ecefce..0384a10c14 100644 --- a/modular_sand/code/modules/ruins/lavalandruin_code/doom.dm +++ b/modular_sand/code/modules/ruins/lavalandruin_code/doom.dm @@ -35,14 +35,14 @@ /obj/effect/mine/pickup/bloodbath/berserk/mineEffect(mob/living/carbon/victim) if(!victim.client || !istype(victim)) return - to_chat(victim, "RIP AND TEAR") + to_chat(victim, span_reallybig(span_redtext("RIP AND TEAR"))) var/old_color = victim.client.color var/static/list/red_splash = list(1,0,0,0.8,0.2,0, 0.8,0,0.2,0.1,0,0) var/static/list/pure_red = list(0,0,0,0,0,0,0,0,0,1,0,0) victim.log_message("entered a berserk frenzy", LOG_ATTACK) victim.reagents.add_reagent(/datum/reagent/medicine/adminordrazine,50) - to_chat(victim, "KILL, KILL, KILL!") + to_chat(victim, span_warning("KILL, KILL, KILL!")) victim.client.color = pure_red animate(victim.client,color = red_splash, time = 10, easing = SINE_EASING|EASE_OUT) sleep(duration) diff --git a/modular_sand/code/modules/ruins/lavalandruin_code/misc.dm b/modular_sand/code/modules/ruins/lavalandruin_code/misc.dm index 7a4e6c40f4..ecf4bf0f91 100644 --- a/modular_sand/code/modules/ruins/lavalandruin_code/misc.dm +++ b/modular_sand/code/modules/ruins/lavalandruin_code/misc.dm @@ -33,7 +33,7 @@ if(M.stat != DEAD) ourmegafauna |= M if(!length(ourmegafauna)) - visible_message("[src] shines brightly, turning into [upgradedname]!") + visible_message(span_warning("[src] shines brightly, turning into [upgradedname]!")) name = upgradedname desc = upgradeddesc block_chance = 66 @@ -87,10 +87,10 @@ if(ishuman(mover)) var/mob/living/carbon/human/H = mover if(cmegalist.len <= megalist.len - 2) - H.visible_message("[H] pushes through [src]!", "You deserve your reward. Reap your hunt.") + H.visible_message(span_warning("[H] pushes through [src]!"), span_notice("You deserve your reward. Reap your hunt.")) return TRUE else - to_chat(H, "Just touching the door burns your hand... You're not ready.") + to_chat(H, span_warning("Just touching the door burns your hand... You're not ready.")) H.apply_damage(damage = 5,damagetype = BURN, def_zone = H.get_bodypart(BODY_ZONE_R_ARM), blocked = FALSE, forced = FALSE) /area/ruin/powered/wrath diff --git a/modular_sand/code/modules/shuttle/shuttle_creation/shuttle_upgrades.dm b/modular_sand/code/modules/shuttle/shuttle_creation/shuttle_upgrades.dm index 028f384600..ddb1a84fd8 100644 --- a/modular_sand/code/modules/shuttle/shuttle_creation/shuttle_upgrades.dm +++ b/modular_sand/code/modules/shuttle/shuttle_creation/shuttle_upgrades.dm @@ -11,14 +11,14 @@ if(!istype(O, /obj/machinery/computer)) return if(!istype(O, /obj/machinery/computer/custom_shuttle)) - to_chat(user, "This upgrade only works on a custom shuttle flight console.") + to_chat(user, span_warning("This upgrade only works on a custom shuttle flight console.")) return if(!user.transferItemToLoc(src, get_turf(O))) return var/obj/machinery/computer/custom_shuttle/link_comp = O if(link_comp.smooth_sailing) - to_chat(usr, "The shuttle is already sailing smoothly!") + to_chat(usr, span_notice("The shuttle is already sailing smoothly!")) return link_comp.smooth_sailing = TRUE playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) - to_chat(usr, "You insert the disk into the flight computer, allowing you to not be thrown around like a ragdoll when launching.") + to_chat(usr, span_notice("You insert the disk into the flight computer, allowing you to not be thrown around like a ragdoll when launching.")) diff --git a/modular_sand/code/modules/surgery/organs/augments_arms.dm b/modular_sand/code/modules/surgery/organs/augments_arms.dm index 115755da4a..3fff77b3ed 100644 --- a/modular_sand/code/modules/surgery/organs/augments_arms.dm +++ b/modular_sand/code/modules/surgery/organs/augments_arms.dm @@ -18,7 +18,7 @@ if(obj_flags & EMAGGED) return obj_flags |= EMAGGED - to_chat(usr, "You unlock [src]'s integrated dagger!") + to_chat(usr, span_notice("You unlock [src]'s integrated dagger!")) items_list += new /obj/item/pen/edagger(src) return TRUE @@ -38,6 +38,6 @@ if(obj_flags & EMAGGED) return obj_flags |= EMAGGED - to_chat(usr, "You unlock [src]'s integrated dagger!") + to_chat(usr, span_notice("You unlock [src]'s integrated dagger!")) items_list += new /obj/item/pen/edagger(src) return TRUE diff --git a/modular_sand/code/modules/telescience/telesci_computer.dm b/modular_sand/code/modules/telescience/telesci_computer.dm index a6ea1c57ff..456ff83891 100644 --- a/modular_sand/code/modules/telescience/telesci_computer.dm +++ b/modular_sand/code/modules/telescience/telesci_computer.dm @@ -48,7 +48,7 @@ /obj/machinery/computer/telescience/examine(mob/user) . = ..() - . += "There are [crystals ? crystals : "no"] bluespace crystal\s in the crystal slots." + . += span_notice("There are [crystals ? crystals : "no"] bluespace crystal\s in the crystal slots.") /obj/machinery/computer/telescience/Initialize(mapload) . = ..() @@ -56,18 +56,18 @@ crystals = starting_crystals /obj/machinery/computer/telescience/attack_paw(mob/user) - to_chat(user, "You are too primitive to use this computer!") + to_chat(user, span_warning("You are too primitive to use this computer!")) return /obj/machinery/computer/telescience/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/stack/ore/bluespace_crystal)) var/obj/item/stack/ore/bluespace_crystal/CRYSTAL = W if(crystals >= max_crystals) - to_chat(user, "There are not enough crystal slots.") + to_chat(user, span_warning("There are not enough crystal slots.")) return if(!user.dropItemToGround(user.get_active_held_item())) return - user.visible_message("[user] inserts [CRYSTAL] into \the [src]'s crystal slot.", "You insert [CRYSTAL] into \the [src]'s crystal slot.") + user.visible_message("[user] inserts [CRYSTAL] into \the [src]'s crystal slot.", span_notice("You insert [CRYSTAL] into \the [src]'s crystal slot.")) balloon_alert(user, "inserted bluespace") CRYSTAL.use(1) crystals++ @@ -79,7 +79,7 @@ if(!user.transferItemToLoc(W, src)) return inserted_gps = W - user.visible_message("[user] inserts [W] into \the [src]'s GPS device slot.", "You insert [W] into \the [src]'s GPS device slot.") + user.visible_message("[user] inserts [W] into \the [src]'s GPS device slot.", span_notice("You insert [W] into \the [src]'s GPS device slot.")) balloon_alert(user, "inserted GPS") else if(W.tool_behaviour == TOOL_MULTITOOL) if(W.buffer && istype(W.buffer, /obj/machinery/telepad)) @@ -180,7 +180,7 @@ /obj/machinery/computer/telescience/proc/telefail() sparks() - visible_message("The telepad weakly fizzles.") + visible_message(span_warning("The telepad weakly fizzles.")) /obj/machinery/computer/telescience/proc/doteleport(mob/user) diff --git a/modular_sand/code/modules/tgs/chat_commands.dm b/modular_sand/code/modules/tgs/chat_commands.dm index e502eb3acc..c87de31a3d 100644 --- a/modular_sand/code/modules/tgs/chat_commands.dm +++ b/modular_sand/code/modules/tgs/chat_commands.dm @@ -20,6 +20,6 @@ /datum/tgs_chat_command/restart/Run(datum/tgs_chat_user/sender) . = "Restarting." - to_chat(world, "Server restart - Initialized by [sender.friendly_name] on Discord.") + to_chat(world, span_boldwarning("Server restart - Initialized by [sender.friendly_name] on Discord.")) send2adminchat("Server", "[sender.friendly_name] forced a restart.") addtimer(CALLBACK(src, world.TgsEndProcess()), 1 SECONDS) diff --git a/modular_splurt/code/_onclick/observer.dm b/modular_splurt/code/_onclick/observer.dm index 3a25bab19b..dee0e57799 100644 --- a/modular_splurt/code/_onclick/observer.dm +++ b/modular_splurt/code/_onclick/observer.dm @@ -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, "You feel something bounce off your steely asscheeks, but nothing is there...") - to_chat(user, "You slap \The [src]'s ass, but your ethereal hand bounces right off!") + 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(\ - "You hear someone slap \The [src]'s ass, but nobody's there...",\ - "Somebody slaps your ass, but nobody is around...",\ - "You hear a slap.", target=user, target_message="You manage to will your ethereal hand to slap \The [src]'s ass.") + 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 diff --git a/modular_splurt/code/datums/components/size_normalized.dm b/modular_splurt/code/datums/components/size_normalized.dm index cc2525c908..f3d675d187 100644 --- a/modular_splurt/code/datums/components/size_normalized.dm +++ b/modular_splurt/code/datums/components/size_normalized.dm @@ -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("A flash of purple light engulfs \the [wearer], before [wearer.p_they()] jump[wearer.p_s()] to a more average size!","You feel warm for a moment, before everything scales to your size...") + 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("Golden light engulfs \the [wearer], and [wearer.p_they()] shoot[wearer.p_s()] back to [wearer.p_their()] default height!","Energy rushes through your body, and you return to normal.") + 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 diff --git a/modular_splurt/code/datums/interactions/lewd/_lewd.dm b/modular_splurt/code/datums/interactions/lewd/_lewd.dm index b63256db39..a5579511b5 100644 --- a/modular_splurt/code/datums/interactions/lewd/_lewd.dm +++ b/modular_splurt/code/datums/interactions/lewd/_lewd.dm @@ -74,7 +74,7 @@ if(CUM_TARGET_NIPPLE) cumin = TRUE if(partner.has_breasts()) - message = "cums iside \the [partner]'s nipple!." + message = "cums inside \the [partner]'s nipple!." target_gen = partner.getorganslot(ORGAN_SLOT_BREASTS) else message = "cums on \the [partner]'s chest and neck." @@ -136,7 +136,7 @@ if(CUM_TARGET_NIPPLE) cumin = TRUE if(partner.has_breasts()) - message = "cums iside \the [partner]'s nipple!." + message = "cums inside \the [partner]'s nipple!." target_gen = partner.getorganslot(ORGAN_SLOT_BREASTS) else message = "cums on \the [partner]'s chest and neck." @@ -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 = "\The [src] [message]", ignored_mobs = get_unconsenting()) + visible_message(message = span_userlove("\The [src] [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 = "\The [src] [message]", ignored_mobs = get_unconsenting()) + visible_message(message = span_lewd("\The [src] [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 = "\The [src] [message]", ignored_mobs = get_unconsenting()) + visible_message(message = span_lewd("\The [src] [message]"), ignored_mobs = get_unconsenting()) handle_post_sex(NORMAL_LUST, CUM_TARGET_BREASTS, user) /* @@ -397,7 +397,7 @@ to_chat(src, " You need exposed genitals!") return if(!LAZYLEN(holder.equipment)) - to_chat(src, "You'll have to put something in it first, since it seems to be clean") + 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 @@ -411,13 +411,13 @@ var/u_His = p_their() var/list/belly_names = list("stomach", "belly", "gut", "midsection", "rolls") var/list/nuzzles = list( - "rubs [u_His] face all accross [target]'s [pick(belly_names)]", + "rubs [u_His] face all across [target]'s [pick(belly_names)]", "nuzzles [target]'s [pick(belly_names)][pick(list(" lovingly", ""))]", "shoves [u_His] face into [target]'s [pick(belly_names)] and gives it kisses all over", "licks right into [target]'s [pick(list("belly button", "navel"))]" ) - message = "\The [src] [pick(nuzzles)]. " + message = span_lewd("\The [src] [pick(nuzzles)]. ") visible_message(message, ignored_mobs = get_unconsenting()) /mob/living/proc/do_bellyfuck(mob/living/partner) @@ -436,10 +436,10 @@ playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/champ1.ogg', 'modular_sand/sound/interactions/champ2.ogg'), 50, 1, -1) - visible_message(message = "\The [src] [message]", ignored_mobs = get_unconsenting()) + visible_message(message = span_lewd("\The [src] [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 fo dis one + //partner.handle_post_sex(NORMAL_LUST, null, src) //don't think we need it for this one /mob/living/proc/do_breastsmother(mob/living/target) var/message @@ -450,7 +450,7 @@ "shoves \the [target]'s whole head into [u_His] cleavage" ) - message = "\The [src] [pick(lines)]" + message = span_lewd("\The [src] [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 [target]'s drenched body", "takes a whiff of \the [target]'s musk and drinks [t_His] warm sweat") - message = "\The [src] [pick(lines)]" + message = span_lewd("\The [src] [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 [target]'s face well under [u_His] [pick(musk)] armpit and let them take a whiff" ) - message = "\The [src] [pick(lines)]" + message = span_lewd("\The [src] [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 [target] [pick(musk)] armpit, worshipping it with [u_His] tongue and nose" ) - message = "\The [src] [pick(lines)]" + message = span_lewd("\The [src] [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 = "\The [src][pick(lines)]" + message = span_lewd("\The [src][pick(lines)]") visible_message(message, ignored_mobs = get_unconsenting()) playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/bang1.ogg', 'modular_sand/sound/interactions/bang2.ogg', @@ -547,7 +547,7 @@ lines = list( "squeezes [u_His] armpit right into \the [target]'s throbbing [genital_name], massaging its length using [u_His] [pick(musk)]armpit!", "presses [u_His] arm down all over \the [target]'s leaking [genital_name], milking it with [u_His] [pick(musk)] pit!", - "rubs and grinds [u_His] [pick(musk)] arpit back and forth through \the [target]'s [genital_name], deeply squeezing it to the base!" + "rubs and grinds [u_His] [pick(musk)] armpit back and forth through \the [target]'s [genital_name], deeply squeezing it to the base!" ) else if(target.is_topless()) @@ -556,11 +556,11 @@ ) else // https://cdn.discordapp.com/attachments/802990353883070474/962478553117622322/NoName-480p.mp4 lines = list( - "softly tears a hole in the cloth on the back of [u_His] armpit, suffing \the [target]'s whole rod right into it with a [pick(musk)] embrace!" + "softly tears a hole in the cloth on the back of [u_His] armpit, stuffing \the [target]'s whole rod right into it with a [pick(musk)] embrace!" ) target.set_is_fucking(src, CUM_TARGET_ARMPIT, target.getorganslot(ORGAN_SLOT_PENIS)) - message = "\The [src] [pick(lines)]" + message = span_lewd("\The [src] [pick(lines)]") visible_message(message, ignored_mobs = get_unconsenting()) playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/bang1.ogg', 'modular_sand/sound/interactions/bang2.ogg', @@ -577,7 +577,7 @@ if(target.is_fucking(src, CUM_TARGET_BREASTS)) lines = list( "slides [u_His] [pick(GLOB.breast_nouns)], up and down through \the [target]'s throbbing [genital_name]", - "squeezes [u_His] [pick(GLOB.breast_nouns)] through all of \the [target]'s lenght", + "squeezes [u_His] [pick(GLOB.breast_nouns)] through all of \the [target]'s length", "jerks \the [target] off lustfully with [u_His] supple [pick(GLOB.breast_nouns)]" ) else @@ -588,7 +588,7 @@ ) target.set_is_fucking(src, CUM_TARGET_BREASTS, getorganslot(ORGAN_SLOT_PENIS)) - message = "\The [src] [pick(lines)]" + message = span_lewd("\The [src] [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 = "\The [src] [pick(lines)]" + message = span_lewd("\The [src] [pick(lines)]") visible_message(message, ignored_mobs = get_unconsenting()) target.handle_post_sex(lust_increase, CUM_TARGET_MOUTH, src) @@ -640,7 +640,7 @@ if(is_fucking(target, CUM_TARGET_URETHRA)) lines = list( - "humps right into \the [target]'s [t_genital_name], stretiching it as their balls slam together", + "humps right into \the [target]'s [t_genital_name], stretching it as their balls slam together", "slides [u_His] [u_genital_name] all the way down \the [target]'s own throbbing [t_genital_name], [t_His] urethra is so tight!", "rams [u_His] [u_genital_name] back and forth through \the [target]'s urethra, giving it a very nice fucking" ) @@ -652,7 +652,7 @@ ) set_is_fucking(target, CUM_TARGET_URETHRA, getorganslot(ORGAN_SLOT_PENIS)) - message = "\The [src] [pick(lines)]" + message = span_lewd("\The [src] [pick(lines)]") visible_message(message, ignored_mobs = get_unconsenting()) playlewdinteractionsound(src, pick(noises), 70, 1, -1) if(can_penetrating_genital_cum()) @@ -674,7 +674,7 @@ ) else if(target.has_breasts(REQUIRE_EXPOSED)) lines = list( - "presses [u_His] throbbing tip against \the [target]'s puffy nipple, forcing the whole lenght all the way in with a wet smack", + "presses [u_His] throbbing tip against \the [target]'s puffy nipple, forcing the whole length all the way in with a wet smack", "stretches \the [target]'s nipple with his fingers, before forcing it open with the whole girth of [u_His] twitching [genital_name]" ) else @@ -687,7 +687,7 @@ if(!is_fucking(target, CUM_TARGET_NIPPLE)) set_is_fucking(target, CUM_TARGET_NIPPLE, getorganslot(ORGAN_SLOT_PENIS)) - message = "\The [src] [pick(lines)]!" + message = span_lewd("\The [src] [pick(lines)]!") visible_message(message, ignored_mobs = get_unconsenting()) playlewdinteractionsound(src, pick('modular_sand/sound/interactions/bang1.ogg', 'modular_sand/sound/interactions/bang2.ogg', @@ -711,13 +711,13 @@ ) else lines = list( - "presses [u_His] tip against \the [target]'s [pick("pudgy ", "soft ", "")] thighs, soon shoving [u_His] whole lenght right in between them", + "presses [u_His] tip against \the [target]'s [pick("pudgy ", "soft ", "")] thighs, soon shoving [u_His] whole length right in between them", "presents [u_His] [genital_name] to \the [target]'s legs, ramming its full size right into [t_His] thigh lock", "smooches \the [target]'s crotch with [u_His] throbbing tip, right before piercing between [t_His] thighs with [u_His] full [genital_name]" ) set_is_fucking(target, CUM_TARGET_THIGHS, getorganslot(ORGAN_SLOT_PENIS)) - message = "\The [src] [pick(lines)]!" + message = span_lewd("\The [src] [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 = "\The [src] [pick(lines)]!" + message = span_lewd("\The [src] [pick(lines)]!") visible_message(message, ignored_mobs = get_unconsenting()) playlewdinteractionsound(loc, pick('modular_sand/sound/interactions/bang1.ogg', 'modular_sand/sound/interactions/bang2.ogg', @@ -779,12 +779,12 @@ ) var/list/hell = list( "'s asshole squints as she shoves \the [target]'s face in between [u_His] sweaty [pick(asscheeks)], letting hell go loose!", - " pushes [u_His] [pick(ass)] into \the [target]'s face, [pick(list("[t_His] nose shoved deep in [src]'s musky butthole", "[u_His] asshole sqints"))] as [u_He] [pick(braps)][pick(list("", ", [jiggle]"))]", + " pushes [u_His] [pick(ass)] into \the [target]'s face, [pick(list("[t_His] nose shoved deep in [src]'s musky butthole", "[u_His] asshole squints"))] as [u_He] [pick(braps)][pick(list("", ", [jiggle]"))]", " smothers \the [target]'s whole head in between [u_His][pick(list(" sweaty", "", " musky"))] [pick(asscheeks)], pushing out gallons of pure braps. [pick(list("", "[jiggle]"))]", "'s [pick(ass)] claps against \the [target]'s nose, right before [u_He] [pick(braps)]" ) - message = "\The [src][pick(hell)]" + message = span_lewd("\The [src][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 [target]'s [genital_name]" ) - message = "\The [src][pick(hell)]" + message = span_lewd("\The [src][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 [target]'s [pick(ass)], [t_He] [pick(braps)][pick("", ". [jiggle]")]") set_is_fucking(target, CUM_TARGET_ANUS, getorganslot(ORGAN_SLOT_PENIS)) - message = "\The [src] [pick(hell)]" + message = span_lewd("\The [src] [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 = "\The [src] [pick(hell)]" + message = span_lewd("\The [src] [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 [target]'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 = "\The [src] [pick(hell)]" + message = span_lewd("\The [src] [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 [target]'s [genital_name][prob(50) ? "" : ". [jiggle]"]" ) - message = "\The [src] [pick(hell)]" + message = span_lewd("\The [src] [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)) @@ -985,11 +985,11 @@ else hell = list( "can already smell the stench as [u_He] works [u_His] [genital_name] into \the [target]'s dung hole, being received by warm, wet and nasty feeling all over it.", - "grabs the base of [u_His] twitching [genital_name] and presses the tip into \the [target]'s asshole, immediately shoving it right into a fat and moisty log", + "grabs the base of [u_His] twitching [genital_name] and presses the tip into \the [target]'s asshole, immediately shoving it right into a fat and moist log", "shoves [genital_name] deep inside of \the [target]'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 = "\The [src] [pick(hell)]" + message = span_lewd("\The [src] [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 = "\The [src] [pick(hell)]" + message = span_lewd("\The [src] [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 [target]" ) - message = "\The [src] [pick(hell)]" + message = span_lewd("\The [src] [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 [target]'s lips" ) - message = "\The [src] [pick(hell)]" + message = span_lewd("\The [src] [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) diff --git a/modular_splurt/code/datums/interactions/lewd/lewd_datums.dm b/modular_splurt/code/datums/interactions/lewd/lewd_datums.dm index 88f41ce811..ca6fddf6e8 100644 --- a/modular_splurt/code/datums/interactions/lewd/lewd_datums.dm +++ b/modular_splurt/code/datums/interactions/lewd/lewd_datums.dm @@ -6,7 +6,7 @@ return if(prob(50)) - target.visible_message("\The [target]'s ass honks!") + target.visible_message(span_lewd("\The [target]'s ass honks!")) playlewdinteractionsound(target, 'sound/items/bikehorn.ogg', 40, 1, -1) @@ -20,7 +20,7 @@ "\The [user]'s grope squeezes a honk out of \the [target]'s [pick(GLOB.breast_nouns)]!" ) if(prob(50)) - target.visible_message("[pick(honks)]") + 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("\The [target]'s clussy honks[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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("\The [target]'s [genital_name] honks[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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("\The [target]'s clussy honks[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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("\The [target]'s fun hole honks[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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("\The [target]'s clussy honks[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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("\The [target]'s fun hole honks[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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("\The [user]'s [genital_name] honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [user]'s [genital_name] honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [user]'s [genital_name] honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [target]'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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("\The [user]'s clussy honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [user]'s fun hole honks[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [user]'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("\The [user]'s fun hole honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [user]'s [genital_name] honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [user]'s [genital_name] honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [target]'s [genital_name] honks[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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("\The [target]'s [genital_name] honks[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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("\The [user]'s balls honk[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [target]'s balls honk[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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("\The [user]'s [genital_name] honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [user]'s [genital_name] honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [user]'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [user]'s [genital_name] honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [user]'s fun hole honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [user]'s clussy honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'s clussy honks[pick(" loudly", "")]!")) playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1) @@ -319,7 +319,7 @@ "\The [user]'s grope squeezes a honk out of [u_His] own [pick(GLOB.breast_nouns)]!" ) if(prob(50)) - user.visible_message("[pick(honks)]") + user.visible_message(span_lewd("[pick(honks)]")) playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1) @@ -345,7 +345,7 @@ "\The [user]'s suck squeezes a honk out of [u_His] own [pick(GLOB.breast_nouns)]!" ) if(prob(50)) - user.visible_message("[pick(honks)]") + user.visible_message(span_lewd("[pick(honks)]")) playlewdinteractionsound(user, 'sound/items/bikehorn.ogg', 40, 1, -1) @@ -370,7 +370,7 @@ "\The [user]'s suck squeezes a honk out of \the [target]'s [pick(GLOB.breast_nouns)]!" ) if(prob(50)) - user.visible_message("[pick(honks)]") + 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("\The [user]'s [genital_name] honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [user]'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [target]'s belly button honks[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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("\The [user]'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [user]'s [genital_name] honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [user]'s [genital_name] honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [user]'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [target]'s [pick(GLOB.breast_nouns)] honk[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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("\The [user]'s [genital_name] honks[pick(" loudly", "")]!") + user.visible_message(span_lewd("\The [user]'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("\The [target]'s [genital_name] honks[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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("\The [target]'s fun hole honks[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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("\The [target]'s fun hole honks[pick(" loudly", "")]!") + target.visible_message(span_lewd("\The [target]'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, "Erm, you may wanna be a carbon entity fo dat") + to_chat(user, span_warning("Erm, you may wanna be a carbon entity fo dat")) return user.piss_mouth(target) diff --git a/modular_splurt/code/datums/interactions/lewd/lewd_interactions.dm b/modular_splurt/code/datums/interactions/lewd/lewd_interactions.dm index 9be4344e52..bb1f66e7ea 100644 --- a/modular_splurt/code/datums/interactions/lewd/lewd_interactions.dm +++ b/modular_splurt/code/datums/interactions/lewd/lewd_interactions.dm @@ -18,17 +18,17 @@ if(REQUIRE_EXPOSED) if(!user.has_belly(REQUIRE_EXPOSED)) if(!silent) - to_chat(user, "Your belly needs to be exposed.") + 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, "Your belly seems to be too flat for that.") + 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, "Your belly needs to be unexposed.") + 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, "Your legs need to be exposed.") + 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, "Your legs need to be unexposed.") + 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, "You don't have enough legs.") + 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, "Your don't have enough legs.") + 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, "That's way too much for you.") + 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, "Their belly needs to be exposed.") + 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, "Their belly seems to be too flat for that.") + 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, "Their belly needs to be unexposed.") + 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, "[target.p_their()] legs need to be exposed.") + 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, "[target.p_their()] legs need to be unexposed.") + 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, "[target.p_they()] [target.p_do()]n't have enough legs.") + 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, "[target.p_they()] [target.p_do()]n't have enough legs.") + 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, "For some reason, you don't want to do this to [target].") + to_chat(user, span_warning("For some reason, you don't want to do this to [target].")) return FALSE . = ..() diff --git a/modular_splurt/code/datums/mood_events/drug_events.dm b/modular_splurt/code/datums/mood_events/drug_events.dm index 419d39f3d9..3cbe25cf67 100644 --- a/modular_splurt/code/datums/mood_events/drug_events.dm +++ b/modular_splurt/code/datums/mood_events/drug_events.dm @@ -1,8 +1,8 @@ /datum/mood_event/cope mood_change = 10 - description = "I feel like I\'m finally coping!" + description = span_nicegreen("I feel like I\'m finally coping!") /datum/mood_event/moth_in_chief - description = "The mantle rests well upon your shoulders?\n" + description = span_nicegreen("The mantle rests well upon your shoulders?") mood_change = 10 timeout = 5 MINUTES diff --git a/modular_splurt/code/datums/mood_events/generic_negative_events.dm b/modular_splurt/code/datums/mood_events/generic_negative_events.dm index c1e3ec1ef7..72b0de1fec 100644 --- a/modular_splurt/code/datums/mood_events/generic_negative_events.dm +++ b/modular_splurt/code/datums/mood_events/generic_negative_events.dm @@ -1,5 +1,5 @@ /datum/mood_event/masked_mook_incomplete - description = "I feel incomplete without a gas mask...\n" + description = span_warning("I feel incomplete without a gas mask...") mood_change = -4 /datum/mood_event/creampie/cheesed diff --git a/modular_splurt/code/datums/mood_events/generic_positive_events.dm b/modular_splurt/code/datums/mood_events/generic_positive_events.dm index f360580c39..0696042bd2 100644 --- a/modular_splurt/code/datums/mood_events/generic_positive_events.dm +++ b/modular_splurt/code/datums/mood_events/generic_positive_events.dm @@ -1,22 +1,22 @@ /datum/mood_event/lewd_headpat - description = "I love headpats so much!\n" + description = span_nicegreen("I love headpats so much!") mood_change = 3 timeout = 2 MINUTES /datum/mood_event/qareen_bliss - description = "So.. horny...\n" + description = span_umbra("So.. horny...") mood_change = 5 /datum/mood_event/qareen_bliss/add_effects() - description = "Must.. breed. , [pick("Nngggghh", "Can't.. think.", "It feels so good.", "Need.. fuck.")]...\n" + description = span_umbra("Must.. breed. , [pick("Nngggghh", "Can't.. think.", "It feels so good.", "Need.. fuck.")]...") /datum/mood_event/masked_mook - description = "I feel more complete with gas mask on.\n" + description = span_nicegreen("I feel more complete with gas mask on.") mood_change = 1 /datum/mood_event/nudist_positive - description = "I'm delighted to not be constricted by clothing.\n" + description = span_nicegreen("I'm delighted to not be constricted by clothing.") mood_change = 1 /datum/mood_event/dorsualiphobic_mood_positive - description = "Nobody will know if I'm wearing a backpack or not.\n" + description = span_nicegreen("Nobody will know if I'm wearing a backpack or not.") mood_change = 1 diff --git a/modular_splurt/code/datums/mood_events/needs_events.dm b/modular_splurt/code/datums/mood_events/needs_events.dm index 3cce41244d..6b92548f72 100644 --- a/modular_splurt/code/datums/mood_events/needs_events.dm +++ b/modular_splurt/code/datums/mood_events/needs_events.dm @@ -11,6 +11,6 @@ mood_change = -20 /datum/mood_event/cum_stuffed - description = "It feels so good inside me!\n" + description = span_nicegreen("It feels so good inside me!") mood_change = 8 timeout = 5 MINUTES diff --git a/modular_splurt/code/datums/mood_events/preg_events.dm b/modular_splurt/code/datums/mood_events/preg_events.dm index 35dcadfcd4..b5ccd1444f 100644 --- a/modular_splurt/code/datums/mood_events/preg_events.dm +++ b/modular_splurt/code/datums/mood_events/preg_events.dm @@ -1,8 +1,8 @@ /datum/mood_event/pregnant_negative - description = "THE BABY IS COMING OUT...\n" + description = span_boldwarning("THE BABY IS COMING OUT...") mood_change = -7 /datum/mood_event/pregnant_positive - description = "The baby came out...phew\n" + description = span_nicegreen("The baby came out...phew") mood_change = 3 timeout = 2 MINUTES diff --git a/modular_splurt/code/datums/traits/good.dm b/modular_splurt/code/datums/traits/good.dm index e23f92cfe3..b305c79997 100644 --- a/modular_splurt/code/datums/traits/good.dm +++ b/modular_splurt/code/datums/traits/good.dm @@ -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 = "You feel very sturdy." - lose_text = "You feel less sturdy." + 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 = "You feel resistant to burning brimstone." - lose_text = "You feel less as if your flesh is more flamamble." + 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 = "You feel like making someone your pet." - lose_text = "You feel less assertive." + 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 = "You feel a strange sensation near your anus..." - lose_text = "You feel like you can't spin webs anymore..." + 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, "As an arachnid, this quirk does nothing for you, as these abilities are innate to your species.") + 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 diff --git a/modular_splurt/code/datums/traits/negative.dm b/modular_splurt/code/datums/traits/negative.dm index a7a72f4f7a..04a1c1825d 100644 --- a/modular_splurt/code/datums/traits/negative.dm +++ b/modular_splurt/code/datums/traits/negative.dm @@ -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 = "Your fingers feel... thick." - lose_text = "Your fingers feel normal again." + 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 = "The knowledge of how to read seems to escape from you." + gain_text = span_notice("The knowledge of how to read seems to escape from you.") lose_text = "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 = "You seem to make a big deal out of everything." - lose_text = "You don't seem to make a big deal out of everything anymore." + 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 = "You suddenly start craving some seed inside of you!" - lose_text = "Cum didn't even taste that good, anyways." + 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, "[pick(hungry_phrases)]") + 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 = "You're starting to feel hungrier and thirstier a lot faster." - lose_text = "Your craving for food and water begins dying down." + 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() diff --git a/modular_splurt/code/datums/traits/neutral.dm b/modular_splurt/code/datums/traits/neutral.dm index 398e1ba08a..7f2c7e0f5a 100644 --- a/modular_splurt/code/datums/traits/neutral.dm +++ b/modular_splurt/code/datums/traits/neutral.dm @@ -5,15 +5,15 @@ desc = "You are aroused by suffocation." value = 0 mob_trait = TRAIT_CHOKE_SLUT - gain_text = "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 = "Seems you don't have a kink for suffocation anymore." + 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 = "Your liver feels... different, somehow." + 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 = "Your ass rivals those of golems." - lose_text = "Your butt feels more squishy and slappable." + 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 = "A curse from a land where men return as beasts runs deep in your blood." - lose_text = "You feel the weight of the curse in your blood finally gone." + 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 = "Others' touches begin to make your blood boil..." - lose_text = "Having your head pet doesn't sound so bad right about now..." + 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 = "You crave headpats immensely!" - lose_text = "Your headpats addiction wanes." + 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 = "You body burns with the desire to be bred." - lose_text = "You feel more in control of your body and thoughts." + 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 = "Your eyes glimmer hypnotically..." - lose_text = "Your eyes return to normal." + 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 = "You feel your senses adjust, allowing a animalistic sense of others' fertility." - lose_text = "You feel your sense of others' fertility fade." + 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 = "You feel a bit chubby!" + 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 = "You feel repulsion at the idea of eating meat." - lose_text = "You feel like eating meat isn't that bad." + 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 = "You feel pressure in your groin." - lose_text = "You feel a weight lifted from your groin." + 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 = "You feel like being someone's pet..." - lose_text = "You no longer feel like being a pet..." + 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 = "You hear two other voices inside of your head(s)." - lose_text = "All of your minds become singular." + 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 = "You begin sensing peculiar smells from people's bits..." - lose_text = "People's genitals start smelling all the same to you..." + 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 @@ -366,14 +366,14 @@ H.adjust_nutrition(-0.09)//increases their nutrition loss rate to encourage them to gain a partner they can essentially leech off of /datum/quirk/bloodfledge - name = "Bloodsucker Fledgling" - desc = "You are a fledgling belonging to ancient Bloodsucker bloodline. While the blessing has yet to fully convert you, some things have changed. Only blood will sate your hungers, and holy energies will cause your flesh to char. This is NOT an antagonist role!" - value = 2 - medical_record_text = "Patient exhibits onset symptoms of a sanguine curse." - mob_trait = TRAIT_BLOODFLEDGE - gain_text = "You feel a sanguine thirst." - lose_text = "You feel the sanguine thirst fade away." - processing_quirk = TRUE + name = "Bloodsucker Fledgling" + desc = "You are a fledgling belonging to ancient Bloodsucker bloodline. While the blessing has yet to fully convert you, some things have changed. Only blood will sate your hungers, and holy energies will cause your flesh to char. This is NOT an antagonist role!" + value = 2 + medical_record_text = "Patient exhibits onset symptoms of a sanguine curse." + mob_trait = TRAIT_BLOODFLEDGE + gain_text = span_notice("You feel a sanguine thirst.") + lose_text = span_notice("You feel the sanguine thirst fade away.") + processing_quirk = TRUE /datum/quirk/bloodfledge/add() . = ..() @@ -635,8 +635,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 = "You feel spiritually connected to your natural form." - lose_text = "It feels like clothing could fit you comfortably." + 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 @@ -651,11 +651,19 @@ else SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, mood_category, /datum/mood_event/nudist_negative) +/datum/quirk/nudist/on_spawn() + . = ..() + // Spawn a Rapid Disrobe Implant + var/obj/item/implant/disrobe/quirk_implant = new + + // Implant into quirk holder + quirk_implant.implant(quirk_holder, null, TRUE, TRUE) + /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 = "You start feeling unwell without any gas mask on." - lose_text = "You no longer have a need to wear some gas mask." + 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." diff --git a/modular_splurt/code/datums/traits/trait_actions.dm b/modular_splurt/code/datums/traits/trait_actions.dm index e8d98b6196..91ff0df5ba 100644 --- a/modular_splurt/code/datums/traits/trait_actions.dm +++ b/modular_splurt/code/datums/traits/trait_actions.dm @@ -18,7 +18,7 @@ var/mob/living/carbon/human/H = owner if(!H.pulling || !isliving(H.pulling) || H.grab_state < GRAB_AGGRESSIVE) - to_chat(H, "You need to aggressively grab someone to hypnotize them!") + to_chat(H, span_warning("You need to aggressively grab someone to hypnotize them!")) return var/mob/living/carbon/T = H.pulling @@ -27,8 +27,8 @@ to_chat(H, "You can't hypnotize [T] whilst they're asleep!") return - to_chat(H, "You stare deeply into [T]'s eyes...") - to_chat(T, "[H] stares intensely into your eyes...") + 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 @@ -44,7 +44,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("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.") + T.visible_message(span_warning("[T] falls into a deep slumber!"), "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.") T.SetSleeping(1200) T.drowsyness = max(T.drowsyness, 40) @@ -62,9 +62,9 @@ return to_chat(H, "You whisper your suggestion in a smooth calming voice to [T]") - to_chat(T, "...[text]...") + to_chat(T, span_hypnophrase("...[text]...")) - T.visible_message("[T] wakes up from their deep slumber!", "Your eyelids gently open as you see [H]'s face staring back at you.") + T.visible_message(span_warning("[T] wakes up from their deep slumber!"), "Your eyelids gently open as you see [H]'s face staring back at you.") T.SetSleeping(0) T = null return @@ -73,7 +73,7 @@ T.SetSleeping(0) return else - T.visible_message("[T]'s attention breaks, despite the attempt to hypnotize them! They clearly don't want this!", "Your concentration breaks as you realise you have no interest in following [H]'s words!") + T.visible_message(span_warning("[T]'s attention breaks, despite the attempt to hypnotize them! They clearly don't want this!"), "Your concentration breaks as you realise you have no interest in following [H]'s words!") return // @@ -95,16 +95,16 @@ /datum/action/innate/hydrareset/Activate() var/mob/living/carbon/human/hydra = owner hydra.real_name = hydra.name_archive - hydra.visible_message("[hydra.name] pushes all three heads forwards; they seem to be talking as a collective.", \ - "You are now talking as [hydra.name_archive]!", 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("[hydra.name] pulls the rest of their heads back; and puts [selhead]'s forward.", \ - "You are now talking as [selhead]!", 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 @@ -650,7 +650,7 @@ .=..() var/mob/living/carbon/human/H = owner var/datum/quirk/gargoyle/T = locate() in H.roundstart_quirks - to_chat(H, "You have [T.energy]/100 energy remaining!") + to_chat(H, span_warning("You have [T.energy]/100 energy remaining!")) /datum/action/gargoyle/pause name = "Preserve" @@ -666,7 +666,7 @@ if(!T.paused) T.paused = 1 T.position = H.loc - to_chat(H, "You are now conserving your energy; this effect will end the moment you move from your current position!") + 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, "You are already conserving your energy!") + to_chat(H, span_warning("You are already conserving your energy!")) diff --git a/modular_splurt/code/game/area/areas/holodeck.dm b/modular_splurt/code/game/area/areas/holodeck.dm new file mode 100644 index 0000000000..2e60a0e247 --- /dev/null +++ b/modular_splurt/code/game/area/areas/holodeck.dm @@ -0,0 +1,7 @@ +// Replacement for holodeck plasma module +/area/holodeck/rec_center/burn + name = "Holodeck - CRITICAL ERROR" + +// Replacement for holodeck carp module +/area/holodeck/rec_center/wildlife + name = "Holodeck - Wasteland Simulation" diff --git a/modular_splurt/code/game/machinery/computer/slavery.dm b/modular_splurt/code/game/machinery/computer/slavery.dm index 2466ef3b67..303078cbc7 100644 --- a/modular_splurt/code/game/machinery/computer/slavery.dm +++ b/modular_splurt/code/game/machinery/computer/slavery.dm @@ -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, "You find yourself unable to speak.") + 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("[collar.loc] vanishes into the droppod.", \ - "You are taken by the droppod.") + 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 diff --git a/modular_splurt/code/game/machinery/research_table.dm b/modular_splurt/code/game/machinery/research_table.dm index 19b1e9f3a0..c984bec303 100644 --- a/modular_splurt/code/game/machinery/research_table.dm +++ b/modular_splurt/code/game/machinery/research_table.dm @@ -25,21 +25,21 @@ /obj/machinery/research_table/examine(mob/user) . = ..() if(configured) - . += "The same person can be used up to [max_repeat_usage * tier] time\s." + . += span_notice("The same person can be used up to [max_repeat_usage * tier] time\s.") switch(point_type) if(POINT_TYPE_SCIENCE) - . += "The table is set to generate science points." + . += span_notice("The table is set to generate science points.") else - . += "The table is set to generate money for cargo." + . += span_notice("The table is set to generate money for cargo.") if(!configured && !panel_open) - . += "It's not configured yet, you could use a multitool to configure it." + . += span_notice("It's not configured yet, you could use a multitool to configure it.") if(panel_open) - . += "The panel is screwed open and you could change generation type with a multitool." + . += span_notice("The panel is screwed open and you could change generation type with a multitool.") /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("[user] begins changing the generation type on \the [src].", "You begin changing the generation type on \the [src].") + 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("[user] finished changing the generation type on \the [src].", "You change the generation type on \the [src] to [generation_message].") + 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, "You need to stand still and uninterrupted for 5 seconds!") + to_chat(user, span_warning("You need to stand still and uninterrupted for 5 seconds!")) return STOP_ATTACK_PROC_CHAIN else - user.visible_message("[user] begins reconfiguring \the [src].", "You begin reconfiguring \the [src].") + 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("[user] finished reconfiguring \the [src].", "The research table is now [configured ? "configured" : "not configured"].") + 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, "You need to stand still and uninterrupted for 5 seconds!") + 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, "You fail to unbuckle yourself.") + to_chat(user, span_warning("You fail to unbuckle yourself.")) else - to_chat(user, "You fail to unbuckle [buckled_mob].") + to_chat(user, span_warning("You fail to unbuckle [buckled_mob].")) return UnregisterSignal(buckled_mob, COMSIG_MOB_CAME) say("User left, resetting scanners.") diff --git a/modular_splurt/code/game/objects/items.dm b/modular_splurt/code/game/objects/items.dm index b45807289f..c320da9586 100644 --- a/modular_splurt/code/game/objects/items.dm +++ b/modular_splurt/code/game/objects/items.dm @@ -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, "[src] is too big to fit there, use a smaller version.") + 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) diff --git a/modular_splurt/code/game/objects/items/RCD.dm b/modular_splurt/code/game/objects/items/RCD.dm index bf27d44f12..e8bc24ae5b 100644 --- a/modular_splurt/code/game/objects/items/RCD.dm +++ b/modular_splurt/code/game/objects/items/RCD.dm @@ -54,7 +54,7 @@ structure_data["cost"][blueprint] = 20 playsound(src, 'sound/effects/pop.ogg', 50, FALSE) - to_chat(user, "You change [name]s blueprint to '[choice]'.") + 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("[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.") + 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) diff --git a/modular_splurt/code/game/objects/items/RTL.dm b/modular_splurt/code/game/objects/items/RTL.dm index d3637ab2f0..6db6eb7306 100644 --- a/modular_splurt/code/game/objects/items/RTL.dm +++ b/modular_splurt/code/game/objects/items/RTL.dm @@ -58,7 +58,7 @@ /obj/item/rtl/examine(mob/user) . = ..() - . += "Alt-click to set what tile to lay." + . += span_notice("Alt-click to set what tile to lay.") if(loaded) . += span_info("It contains [loaded.amount]/[max_amount] metal.") diff --git a/modular_splurt/code/game/objects/items/cosmetics.dm b/modular_splurt/code/game/objects/items/cosmetics.dm index 972c7d0d7a..0a4b28c3c6 100644 --- a/modular_splurt/code/game/objects/items/cosmetics.dm +++ b/modular_splurt/code/game/objects/items/cosmetics.dm @@ -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, "Remove the old nail polish first!") + to_chat(user, span_warning("Remove the old nail polish first!")) if(H == user) - user.visible_message("[user] does [user.p_their()] nails with \the [src].", \ - "You take a moment to apply \the [src]. Perfect!") + 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("[user] begins to do [H]'s nails with \the [src].", \ - "You begin to apply \the [src] on [H]'s nails...") + 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].", \ - "You apply \the [src] on [H]'s nails.") + 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, "Where are the nail on that?") + to_chat(user, span_warning("Where are the nail on that?")) diff --git a/modular_splurt/code/game/objects/items/devices/PDA/radio.dm b/modular_splurt/code/game/objects/items/devices/PDA/radio.dm new file mode 100644 index 0000000000..016d1f10ef --- /dev/null +++ b/modular_splurt/code/game/objects/items/devices/PDA/radio.dm @@ -0,0 +1,4 @@ +/obj/item/cartridge/cmo/Initialize(mapload) + //adds chemistry access + access |= CART_CHEMISTRY + . = ..() diff --git a/modular_splurt/code/game/objects/items/devices/radio/electropack.dm b/modular_splurt/code/game/objects/items/devices/radio/electropack.dm index 6ac56d7020..283605b9bc 100644 --- a/modular_splurt/code/game/objects/items/devices/radio/electropack.dm +++ b/modular_splurt/code/game/objects/items/devices/radio/electropack.dm @@ -65,8 +65,8 @@ /obj/item/electropack/shockcollar/slave/Destroy() - visible_message("The [src] detaches from [src.loc]'s neck.", \ - "The [src] detaches from your neck.") + 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 diff --git a/modular_splurt/code/game/objects/items/implants/implant_aphropumps.dm b/modular_splurt/code/game/objects/items/implants/implant_aphropumps.dm index ecaec5bfbe..f900dcba28 100644 --- a/modular_splurt/code/game/objects/items/implants/implant_aphropumps.dm +++ b/modular_splurt/code/game/objects/items/implants/implant_aphropumps.dm @@ -93,7 +93,7 @@ /obj/item/storage/box/aphrodisiac_pump/examine(mob/user) . = ..() - . += "Click the implant case while with the implant inside to change the desired dosage amounts." + . += span_notice("Click the implant case while with the implant inside to change the desired dosage amounts.") /obj/item/storage/box/aphrodisiac_pump/ComponentInitialize() . = ..() diff --git a/modular_splurt/code/game/objects/items/implants/implant_disrobe.dm b/modular_splurt/code/game/objects/items/implants/implant_disrobe.dm new file mode 100644 index 0000000000..e8656ab155 --- /dev/null +++ b/modular_splurt/code/game/objects/items/implants/implant_disrobe.dm @@ -0,0 +1,67 @@ +/obj/item/implant/disrobe + name = "rapid disrobe implant" + icon = 'icons/obj/clothing/uniforms.dmi' + icon_state = "grey" + + // Custom action for extra customization + actions_types = list(/datum/action/item_action/disrobe) + +// Implant flavor text +/obj/item/implant/disrobe_ultra/get_data() + // Define text variable + var/dat = {" + Implant Specifications:
+ Name: Rapid Disrobe Implant
+ Important Notes: Nanotransen requires employees to follow workplace safety standards, including protective clothing.
+
+ Implant Details:
+ Function: Lines the subject's epidermis with high power static charge nodes, allowing the rapid removal of worn clothing.
+ Special Features: Will not cause drunkenness in most subjects.
+ Integrity: Implant will last so long as it is inside the host. + "} + + // Return text + return dat + +// Only allow use on "human" targets +/obj/item/implant/disrobe/can_be_implanted_in(mob/living/target) + if(!ishuman(target)) + return FALSE + . = ..() + +// Runs on toggling the implant +/obj/item/implant/disrobe/activate() + . = ..() + + // Define target + var/mob/living/carbon/target_user = imp_in + + // Perform LPD effect + target_user.clothing_burst(target_user) + +/* + * Action datums +*/ + +// Action for rapid wardrobe removal +/datum/action/item_action/disrobe + name = "Rapid Disrobe" + desc = "Instantly eject all covering clothing from your body." + icon_icon = 'modular_splurt/icons/mob/actions/misc_actions.dmi' + button_icon_state = "no_uniform" + background_icon_state = "bg_tech" + +/* + * Implant items +*/ + +// Implanter item +/obj/item/implanter/disrobe + name = "implanter (rapid disrobe)" + imp_type = /obj/item/implant/disrobe + +// Implant case item +/obj/item/implantcase/disrobe + name = "implant case - 'rapid disrobe'" + desc = "A glass case containing a rapid disrobe implant." + imp_type = /obj/item/implant/disrobe diff --git a/modular_splurt/code/game/objects/items/implants/implant_hide_backpack.dm b/modular_splurt/code/game/objects/items/implants/implant_hide_backpack.dm index a4c02279a2..5a0d4ada8f 100644 --- a/modular_splurt/code/game/objects/items/implants/implant_hide_backpack.dm +++ b/modular_splurt/code/game/objects/items/implants/implant_hide_backpack.dm @@ -99,7 +99,7 @@ var/implant_toggle_text_2 = (!ability_active ? "dis" : "") // Engage or Disengage // Display a chat message - action_owner.visible_message("The equipment worn on [action_owner]'s back-region flickers momentarily, before becoming [implant_toggle_text].", "You [implant_toggle_text_2]engage the Storage Concealment Implant, causing your backpack to be [implant_toggle_text].") + 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 diff --git a/modular_splurt/code/game/objects/items/implants/implant_slave.dm b/modular_splurt/code/game/objects/items/implants/implant_slave.dm index eb3cf71a93..bfddecea22 100644 --- a/modular_splurt/code/game/objects/items/implants/implant_slave.dm +++ b/modular_splurt/code/game/objects/items/implants/implant_slave.dm @@ -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("[target] seems to resist the implant! You can't enslave a member of security!", "You feel something interfering with your mental conditioning, but you resist it!") + 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("[target] seems to resist the implant!", "You feel something interfering with your mental conditioning, but you resist it!") + 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, "You feel something interfering with your mental conditioning, but you resist it!") + to_chat(target, span_warning("You feel something interfering with your mental conditioning, but you resist it!")) else - to_chat(target, "You feel a sense of peace and security. You are now enslaved!") + 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, "Your mind suddenly feels free from burden. You are no longer enslaved!") + to_chat(target, span_boldnotice("Your mind suddenly feels free from burden. You are no longer enslaved!")) return 1 return 0 diff --git a/modular_splurt/code/game/objects/items/implants/implant_slaver.dm b/modular_splurt/code/game/objects/items/implants/implant_slaver.dm index afa70e3e21..54ec564bd6 100644 --- a/modular_splurt/code/game/objects/items/implants/implant_slaver.dm +++ b/modular_splurt/code/game/objects/items/implants/implant_slaver.dm @@ -7,11 +7,11 @@ /obj/item/implant/slaver/activate() . = ..() - imp_in.visible_message("[imp_in] begins fiddling with a subtle bump on their arm.", "You prepare to teleport.") + 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("[imp_in] vanishes from sight!", \ - "You activate [src], sending you to the slaver mothership!") + 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, "You need to stand still and uninterrupted for 5 seconds!") + to_chat(imp_in, span_warning("You need to stand still and uninterrupted for 5 seconds!")) /obj/item/implant/slaver/get_data() var/dat = {"Implant Specifications:
diff --git a/modular_splurt/code/game/objects/items/implants/implantcase.dm b/modular_splurt/code/game/objects/items/implants/implantcase.dm index e4b8f51284..0cb8594b7b 100644 --- a/modular_splurt/code/game/objects/items/implants/implantcase.dm +++ b/modular_splurt/code/game/objects/items/implants/implantcase.dm @@ -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, "[src] has no functional safeties to emag.") + to_chat(user, span_warning("[src] has no functional safeties to emag.")) return - to_chat(user, "You short out [src]'s safeties.") + to_chat(user, span_notice("You short out [src]'s safeties.")) name = "implant case - 'Genital Fluid (Hacked)'" I.emag_act() diff --git a/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/condom.dm b/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/condom.dm index 8f35fdd9d8..072ba15541 100644 --- a/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/condom.dm +++ b/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/condom.dm @@ -36,7 +36,7 @@ if(unwrapped == 0) icon_state = "b_condom" unwrapped = 1 - to_chat(user, "You unwrap the condom.") + 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, "You roll the condom out.") +// 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, "You must remove the condom from the package first!") + 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, "\The [C] already has condom on!") + to_chat(user, span_notice("\The [C] already has condom on!")) return if(isliving(C) && isliving(user) && unwrapped == 1) - C.visible_message("\The [user] is trying to put a condom on \the [C]!",\ - "\The [user] is trying to put a condom on you!") + C.visible_message(span_warning("\The [user] is trying to put a condom on \the [C]!"),\ + span_warning("\The [user] 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, "Your penis feels more safe!") + to_chat(C, span_userlove("Your penis feels more safe!")) else - to_chat(C, "Your strapon feels more safe... Not sure why would that matter though.") + to_chat(C, span_userlove("Your strapon feels more safe... Not sure why would that matter though.")) return - to_chat(user, "You can't find anywhere to put the condom on.") //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, "The condom bubbles outwards and fills with your cum.") + 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) */ diff --git a/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/sounding.dm b/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/sounding.dm index d3aa33c6a9..b150dd378c 100644 --- a/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/sounding.dm +++ b/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/sounding.dm @@ -15,23 +15,23 @@ if(unwrapped == 0) icon_state = "sounding_rod" unwrapped = 1 - to_chat(user, "You unwrap the rod.") + 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, "You must remove the rod from the package first!") + 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, "\The [C] already has a rod inside!") + to_chat(user, span_notice("\The [C] already has a rod inside!")) return if(isliving(C) && isliving(user) && unwrapped == 1) - C.visible_message("\The [user] is trying to insert a rod inside \The [C]!",\ - "\The [user] is trying to insert a rod inside you!") + C.visible_message(span_warning("\The [user] is trying to insert a rod inside \The [C]!"),\ + span_warning("\The [user] 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, "Your penis feels stuffed and stretched!") + to_chat(C, span_userlove("Your penis feels stuffed and stretched!")) owner = C return - to_chat(user, "You can't find anywhere to put the rod inside.") + 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, "The rod falls off from your penis.") + to_chat(src, span_lewd("The rod falls off from your penis.")) /obj/item/genital_equipment/sounding/used_sounding name = "sounding rod" diff --git a/modular_splurt/code/game/objects/items/lewd_items/leash.dm b/modular_splurt/code/game/objects/items/lewd_items/leash.dm index 64bbd65ebb..88ed837f87 100644 --- a/modular_splurt/code/game/objects/items/lewd_items/leash.dm +++ b/modular_splurt/code/game/objects/items/lewd_items/leash.dm @@ -49,7 +49,7 @@ Icons, maybe? RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/owner_resist) redirect_component = owner if(!owner.stat) - to_chat(owner, "You have been leashed!") + 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, "[owner] has removed their leash!") + 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, "[C] has already been leashed.") + 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, "You have hooked a leash onto [leash_pet]!") + to_chat(leash_master, span_warning("You have hooked a leash onto [leash_pet]!")) else - viewing.show_message("[leash_pet] has been leashed by [leash_master]!", 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("[leash_pet] has slipped out of their collar!!", 1) - to_chat(leash_pet, "You have slipped out of your collar!") - to_chat(loc, "[leash_pet] has slipped out of their collar!") + 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, "[leash_message]") + 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, "[leash_knockdown_message]") - //to_chat(leash_pet, "[leash_knockdown_message]") + //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, "The leash snapped free from your pet!") + to_chat(leash_master, span_warning("The leash snapped free from your pet!")) if(viewing == leash_pet) - to_chat(leash_pet, "Your leash has popped from your collar!") + to_chat(leash_pet, span_warning("Your leash has popped from your collar!")) else - viewing.show_message("[leash_break_message]", 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, "Your leash has popped from your collar!") + to_chat(leash_pet, span_warning("Your leash has popped from your collar!")) else - viewing.show_message("[leash_break_message]", 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("[leash_master] has dropped the leash.", 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))) diff --git a/modular_splurt/code/game/objects/items/lewd_items/rope.dm b/modular_splurt/code/game/objects/items/lewd_items/rope.dm index 7811d209b2..7400b68552 100644 --- a/modular_splurt/code/game/objects/items/lewd_items/rope.dm +++ b/modular_splurt/code/game/objects/items/lewd_items/rope.dm @@ -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, "[C] is already handcuffed...") + to_chat(user, span_warning("[C] is already handcuffed...")) return if(C.get_num_arms(FALSE) < 2 && !C.get_arm_ignore()) - to_chat(user, "[C] doesn't have two hands...") + to_chat(user, span_warning("[C] doesn't have two hands...")) return if(C.handcuffed == null) - C.visible_message("[user] is trying to tie [C]'s hands [rope_target_text()]!", \ - "[user] is trying to tie [C]'s hands [rope_target_text()]!") + 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, "You cannot strengthen this rope anymore...") + to_chat(user, span_warning("You cannot strengthen this rope anymore...")) return - C.visible_message("[user] is trying to strengthen the rope on [C]!", \ - "[user] is trying to strengthen the rope on [C]!") + 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, "[C] is already legcuffed...") + to_chat(user, span_warning("[C] is already legcuffed...")) return if(C.get_num_legs(FALSE) < 2 && !C.get_leg_ignore()) - to_chat(user, "[C] doesn't have two legs...") + to_chat(user, span_warning("[C] doesn't have two legs...")) return if(C.legcuffed == null) - C.visible_message("[user] is trying to tie [C]'s legs!", \ - "[user] is trying to tie [C]'s legs!") + 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, "You cannot strengthen this rope anymore...") + to_chat(user, span_warning("You cannot strengthen this rope anymore...")) return - C.visible_message("[user] is trying to strengthen the rope on [C]!", \ - "[user] is trying to strengthen the rope on [C]!") + 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, "You need to attach the rope to somebody first.") + 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, "The rope isn't long enough to tie a knot.") + 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, "You tie [C]'s hands [rope_target_text()].") + to_chat(user, span_notice("You tie [C]'s hands [rope_target_text()].")) after_process_knot(C, user) else - to_chat(user, "You strengthen the rope on [C].") + to_chat(user, span_notice("You strengthen the rope on [C].")) strengthen_rope(C, user) else - to_chat(user, "You fail to tie [C]'s hands!") + 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, "You tie [C]'s legs.") + to_chat(user, span_notice("You tie [C]'s legs.")) after_process_knot(C, user) else - to_chat(user, "You strengthen the rope on [C].") + to_chat(user, span_notice("You strengthen the rope on [C].")) strengthen_rope(C, user) else - to_chat(user, "You fail to tie [C]'s legs!") + 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, "Attach the rope to an object to finish the knot.") + 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, "You are tied to [O].") - to_chat(roped_master, "You tie the rope to [O].") + 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, "Seems like whoever you were roping... Is gone?") + 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, "[roped_mob] got out of your rope.") + 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, "[roped_mob] got out of your rope.") + 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, "The thing you were tied to... Is gone?") + 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, "You tug the rope away from [roped_master].") - to_chat(roped_master, "[roped_mob] tugs the rope away from you.") + 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, "The rope doesn't let you go further.") + 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, "The rope doesn't let you go further.") + 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, "The rope snaps.") + to_chat(roped_master, span_warning("The rope snaps.")) loc = roped_master.loc if(roped_mob != null) - to_chat(roped_mob, "The rope snaps.") + 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, "You can only customize an untied rope.") + to_chat(user, span_warning("You can only customize an untied rope.")) return if(src && !user.incapacitated() && in_range(user, src)) diff --git a/modular_splurt/code/game/objects/items/lewd_items/strapon.dm b/modular_splurt/code/game/objects/items/lewd_items/strapon.dm index f21d3e3e5d..3385468c2d 100644 --- a/modular_splurt/code/game/objects/items/lewd_items/strapon.dm +++ b/modular_splurt/code/game/objects/items/lewd_items/strapon.dm @@ -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, "You attach the dildo to the strap.") + 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 [GLOB.dildo_size_names[dildo_size]] [dildo_shape][dildo_can_customize ? " custom" : ""] dildo attached to it." - . += "Alt-Click \the [src.name] to separate the strap and dildo." + . += 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, "You separate the dildo from the strap.") + 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, "You're now ready to bone someone!") + 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, "\The [living] doesn't seem to need a strapon!") + to_chat(living, span_notice("\The [living] doesn't seem to need a strapon!")) return FALSE return TRUE diff --git a/modular_splurt/code/game/objects/items/lewd_items/vibrator.dm b/modular_splurt/code/game/objects/items/lewd_items/vibrator.dm index 6d8a813c00..95339ce1a4 100644 --- a/modular_splurt/code/game/objects/items/lewd_items/vibrator.dm +++ b/modular_splurt/code/game/objects/items/lewd_items/vibrator.dm @@ -48,15 +48,15 @@ Code: switch(mode) if(1) mode = 2 - to_chat(user, "You twist the bottom of [src], setting it to the medium setting.") + 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, "You twist the bottom of [src], setting it to the high setting.") + 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, "You twist the bottom of [src], setting it to the low setting.") + 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("\The [user] is trying to attach [src] to \The [T]!",\ - "\The [user] is trying to put [src] on you!") + C.visible_message(span_warning("\The [user] is trying to attach [src] to \The [T]!"),\ + span_warning("\The [user] 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, "[src] is too big to fit there, use a smaller version.") + 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, "You attach [src] to \The [T]'s [picked_organ.name].") + to_chat(user, span_love("You attach [src] to \The [T]'s [picked_organ.name].")) else - to_chat(user, "You insert [src] into \The [T]'s [picked_organ.name].") + to_chat(user, span_love("You insert [src] into \The [T]'s [picked_organ.name].")) else - to_chat(user, "They already have a [picked_organ.equipment[GENITAL_EQUIPMENT_VIBRATOR].name] there.") + 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, "Done Done") //Will delete after testing + to_chat(user, span_warning("Done Done")) //Will delete after testing else - to_chat(user, "You don't see anywhere to attach this.") + 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, "[src] vibrates against your nipples!") + to_chat(U, span_love("[src] vibrates against your nipples!")) else - to_chat(U, "[src] vibrates against your [G.name]!") + 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, "You feel pleasure surge through your [G.name]") + 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, "You feel intense pleasure surge through your [G.name]") + 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, "You feel overpowering pleasure surge through your [G.name]") + to_chat(U, span_userdanger("You feel overpowering pleasure surge through your [G.name]")) U.Jitter(3) U.Stun(30) if(prob(50)) diff --git a/modular_splurt/code/game/objects/items/manuals.dm b/modular_splurt/code/game/objects/items/manuals.dm index d0daae4424..b3e648bf97 100644 --- a/modular_splurt/code/game/objects/items/manuals.dm +++ b/modular_splurt/code/game/objects/items/manuals.dm @@ -95,5 +95,5 @@ "} /obj/item/book/manual/splurt_space_law/suicide_act(mob/living/user) - user.visible_message("[user] pretends to read \the [src] intently... then promptly dies of laughter!") + user.visible_message(span_suicide("[user] pretends to read \the [src] intently... then promptly dies of laughter!")) return OXYLOSS diff --git a/modular_splurt/code/game/objects/items/mesmetron.dm b/modular_splurt/code/game/objects/items/mesmetron.dm index d42913aa17..b156ee7c9e 100644 --- a/modular_splurt/code/game/objects/items/mesmetron.dm +++ b/modular_splurt/code/game/objects/items/mesmetron.dm @@ -21,7 +21,7 @@ to_chat(user, "You can't hypnotize [H] whilst they're asleep!") return - user.visible_message("[user] begins to mesmerizingly wave [src] like a pendulum before [H]'s very eyes!") + 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("[H] falls into a deep slumber!", "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") + H.visible_message(span_warning("[H] falls into a deep slumber!"), "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") H.SetSleeping(1200) H.drowsyness = max(H.drowsyness, 40) @@ -42,7 +42,7 @@ return //No - H.visible_message("[H]'s attention breaks, despite your attempts to hypnotize them! They clearly don't want this", "Your concentration breaks as you realise you have no interest in following [user]'s words!") + H.visible_message(span_warning("[H]'s attention breaks, despite your attempts to hypnotize them! They clearly don't want this"), "Your concentration breaks as you realise you have no interest in following [user]'s words!") @@ -76,11 +76,11 @@ return to_chat(user, "You whisper your suggestion in a smooth calming voice to [subject]") - to_chat(subject, "...[text]...") + to_chat(subject, span_hypnophrase("...[text]...")) return //Release - subject.visible_message("[subject] wakes up from their deep slumber!", "Your eyelids gently open as you see [user]'s face staring back at you") + subject.visible_message(span_warning("[subject] wakes up from their deep slumber!"), "Your eyelids gently open as you see [user]'s face staring back at you") subject.SetSleeping(0) subject = null diff --git a/modular_splurt/code/game/objects/items/miscellaneous.dm b/modular_splurt/code/game/objects/items/miscellaneous.dm index d2eb377e0f..72cd6781e5 100644 --- a/modular_splurt/code/game/objects/items/miscellaneous.dm +++ b/modular_splurt/code/game/objects/items/miscellaneous.dm @@ -64,15 +64,15 @@ if(isnull(insults)) playsound(get_turf(src), 'modular_splurt/sound/voice/halt.ogg', 100, 1, vary = 0) - user.audible_message("[user]'s [name] rasps, \"[use_message]\"", "\The [user] holds up \the [name].") + 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("[user]'s [name] gurgles something indecipherable and deeply offensive.", "\The [user] holds up \the [name].") + 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 << "*BZZZZZZZZT*" + 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 << "You overload \the [src]'s voice synthesizer." + 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, "\The [src] rejects the ID!") + 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, "Badge updated.") + to_chat(user, span_notice("Badge updated.")) /obj/item/clothing/accessory/badge/attack_self(mob/user) if(Adjacent(user)) - user.visible_message("[user] shows you: [icon2html(src, viewers(user))] [src.name].", \ - "You show \the [src.name].") + 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 diff --git a/modular_splurt/code/game/objects/items/plushes.dm b/modular_splurt/code/game/objects/items/plushes.dm index 33a6a2f1f1..588e204edb 100644 --- a/modular_splurt/code/game/objects/items/plushes.dm +++ b/modular_splurt/code/game/objects/items/plushes.dm @@ -20,3 +20,11 @@ icon = 'modular_splurt/icons/obj/plushes.dmi' icon_state = "plushie_mal0" item_state = "plushie_mal0" + +/obj/item/toy/plush/nobl + name = "Nobl plushie" + desc = "It seems to be a small canine, not necessarily latex like you would suspect for some reason, but extremely squishy." + icon = 'modular_splurt/icons/obj/plushes.dmi' + icon_state = "nobl_plush" + item_state = "nobl_plush" + squeak_override = list('modular_splurt/sound/misc/dog_toy.ogg' = 1) diff --git a/modular_splurt/code/game/objects/items/robot/robot_upgrades.dm b/modular_splurt/code/game/objects/items/robot/robot_upgrades.dm index cdee195096..4d1662b642 100644 --- a/modular_splurt/code/game/objects/items/robot/robot_upgrades.dm +++ b/modular_splurt/code/game/objects/items/robot/robot_upgrades.dm @@ -10,7 +10,7 @@ ExpandSize = 200 if(ExpandSize <= 0) ExpandSize = 200 - to_chat(user, "Expand set to [ExpandSize] %.") + 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, "Shrink set to [ShrinkSize] %.") + to_chat(user, span_notice("Shrink set to [ShrinkSize] %.")) return ShrinkSize diff --git a/modular_splurt/code/game/objects/items/storage/boxes.dm b/modular_splurt/code/game/objects/items/storage/boxes.dm index 08e2b03e48..29fe86ebcc 100644 --- a/modular_splurt/code/game/objects/items/storage/boxes.dm +++ b/modular_splurt/code/game/objects/items/storage/boxes.dm @@ -14,3 +14,40 @@ new /obj/item/reagent_containers/hypospray/medipen/bellygrowth(src) new /obj/item/reagent_containers/hypospray/medipen/prospacillin(src) new /obj/item/reagent_containers/hypospray/medipen/lewdbomb(src) + +// Kinkmate listing for the rapid disrobe implant +/obj/item/storage/box/implant_disrobe + name = "rapid disrobe implant box" + desc = "Comes with an implanter and an implant case for quick application!" + icon = 'modular_sand/icons/obj/fleshlight.dmi' + icon_state = "box" + +/obj/item/storage/box/implant_disrobe/ComponentInitialize() + . = ..() + var/datum/component/storage/str = GetComponent(/datum/component/storage) + str.max_items = 2 + +/obj/item/storage/box/implant_disrobe/PopulateContents() + new /obj/item/implanter(src) + new /obj/item/implantcase/disrobe(src) + +// Shipment box for Plushmium +/obj/item/storage/box/shipment_plushmium + name = "plushmium backer rewards box" + desc = "Comes with a spray bottle quick application!" + icon = 'modular_sand/icons/obj/fleshlight.dmi' + icon_state = "box" + +/obj/item/storage/box/shipment_plushmium/ComponentInitialize() + . = ..() + var/datum/component/storage/str = GetComponent(/datum/component/storage) + str.max_items = 2 + +/obj/item/storage/box/shipment_plushmium/PopulateContents() + new /obj/item/reagent_containers/spray/plushmium(src) + new /obj/item/paper/fluff/shipment_plushmium(src) + +// Plushmium box's note +/obj/item/paper/fluff/shipment_plushmium + name = "plushmium backer note" + info = "

Plushmium Instructions

Dear esteemed customer,

Thank for backing the Stuffing For Spessmen© crowd funding initiative. We at Donk Co. pride ourselves on making a wide variety of engaging toys for our loyal customers to enjoy. Now, we're bringing the toy making process directly to your home or workplace! Included in this box is:
  • A spray bottle of Love to Lifeâ„¢ solution
  • A carefully packaged plushie
To begin enjoying your new friend, start by unpacking the included plushie. Our selection process goes through rigorous quality testing to ensure you'll always get the best toy for the job. With so many choices, you'll want to get the whole family in on the action.

Once you have everything ready, it's time to make the patented Donk Co. magic happen! Spray your new best friend with Love to Lifeâ„¢ solution, included in the complimentary spray bottle, and watch the stunning transformation!

But don't leave your new best friend hanging! Give them a big warm hug to celebrate the long and intimate friendship you'll be sharing.


Donk Co. is not responsible for any injury or loss of life that may occur while using the Love to Lifeâ„¢ solution. Do not allow access to children or adults without supervision by a chemist.

Do not drink, splash, inject, or otherwise handle the solution. Do not come into direct physical contact with the solution, or any object the solution has been applied to, under any circumstances." diff --git a/modular_splurt/code/game/objects/items/storage/wallets.dm b/modular_splurt/code/game/objects/items/storage/wallets.dm new file mode 100644 index 0000000000..8e08e7b456 --- /dev/null +++ b/modular_splurt/code/game/objects/items/storage/wallets.dm @@ -0,0 +1,20 @@ +// Bluespace wallet +/obj/item/storage/wallet/bluespace + name = "\improper wallet of holding" + desc = "A testament to science's hubris. It holds thrice as many stolen ID cards." + icon = 'modular_splurt/icons/obj/storage.dmi' + icon_state = "wallet_bluespace" + + // Copied from bag of holding + resistance_flags = FIRE_PROOF + item_flags = NO_MAT_REDEMPTION + rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE + +/obj/item/storage/wallet/bluespace/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_items = 12 + +/obj/item/storage/wallet/bluespace/update_icon_state() + // Don't update icons + return diff --git a/modular_splurt/code/game/objects/items/weaponry.dm b/modular_splurt/code/game/objects/items/weaponry.dm index 6490b81444..522326cad1 100644 --- a/modular_splurt/code/game/objects/items/weaponry.dm +++ b/modular_splurt/code/game/objects/items/weaponry.dm @@ -22,13 +22,13 @@ force = 10 /obj/item/bdsm_whip/suicide_act(mob/user) - user.visible_message("[user] is getting just a little too kinky!") + 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("[user] has [pick(attack_verb)] [M] on the ass!") + 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("[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return(BRUTELOSS) diff --git a/modular_splurt/code/game/objects/items/weaponry/armyknife.dm b/modular_splurt/code/game/objects/items/weaponry/armyknife.dm index 268ad386aa..a7274198d9 100644 --- a/modular_splurt/code/game/objects/items/weaponry/armyknife.dm +++ b/modular_splurt/code/game/objects/items/weaponry/armyknife.dm @@ -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, "You unfold the screwdriver.") + 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, "You fold the screwdriver and unfold the wirecutters.") + 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, "You fold the wirecutters and unfold the knife.") + 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, "You fold the knife.") + to_chat(user, span_notice("You fold the knife.")) qdel(src) user.put_in_active_hand(ak_fold) diff --git a/modular_splurt/code/game/objects/items/weaponry/melee.dm b/modular_splurt/code/game/objects/items/weaponry/melee.dm index 2ad3ab7506..6750b10e31 100644 --- a/modular_splurt/code/game/objects/items/weaponry/melee.dm +++ b/modular_splurt/code/game/objects/items/weaponry/melee.dm @@ -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, "Now targetting \the [hole].") + 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("[user] [message].") + 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("It's a home run!") + 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) diff --git a/modular_splurt/code/game/objects/structures/bathroom.dm b/modular_splurt/code/game/objects/structures/bathroom.dm index 8ba710f406..d43c5597a3 100644 --- a/modular_splurt/code/game/objects/structures/bathroom.dm +++ b/modular_splurt/code/game/objects/structures/bathroom.dm @@ -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, "No! No fucking way I'm touching this shit without at LEAST latex gloves!") + 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, "I'd.. need a trashbag or similar to stash all this shit.") + to_chat(H, span_warning("I'd.. need a trashbag or similar to stash all this shit.")) return - H.visible_message("[H] starts cleaning \the [src]![prob(0.1) ? " All for free.." : ""]", "You start.. scooping all the shit into the trash bag.. Eugh.") + 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("[H] gives up!", "Fuck this shit.") + H.visible_message(span_notice("[H] gives up!"), span_warning("Fuck this shit.")) return - H.visible_message("[H] finishes cleaning \the [src]!", "You're finally done. Thank fuck.'") + 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 ..() diff --git a/modular_splurt/code/game/objects/structures/cannons/cannon.dm b/modular_splurt/code/game/objects/structures/cannons/cannon.dm index ff31f69626..a4e01395da 100644 --- a/modular_splurt/code/game/objects/structures/cannons/cannon.dm +++ b/modular_splurt/code/game/objects/structures/cannons/cannon.dm @@ -25,8 +25,8 @@ /obj/structure/cannon/examine(mob/user) . = ..() - . += "[src] accepts gunpowder or welding fuel." - . += "Using welding fuel will weaken the force of the projectile fired." + . += 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, "It's gonna fire!") + 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, "[src] is already loaded!") + 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, "You load a [cannoneers_balls.singular_name] into \the [src].") + 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, "[src] needs [reagents.maximum_volume]u of charge!") + 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, "[powder_keg] is empty!") + to_chat(user, span_warning("[powder_keg] is empty!")) return if(reagents.total_volume >= reagents.maximum_volume) to_chat(user, "") @@ -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, "[powder_keg] doesn't have at least 15u of fuel to fill [src]!") + 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, "You load [src] with gunpowder.") + 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, "You load [src] with welding fuel.") + 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("[src] explodes!") + 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("[src] falls apart from operation!") + visible_message(span_warning("[src] falls apart from operation!")) qdel(src) /obj/structure/cannon/trash/Destroy() diff --git a/modular_splurt/code/game/objects/structures/fence.dm b/modular_splurt/code/game/objects/structures/fence.dm index 0ad3ea5f90..b0b679c7a9 100644 --- a/modular_splurt/code/game/objects/structures/fence.dm +++ b/modular_splurt/code/game/objects/structures/fence.dm @@ -32,16 +32,16 @@ if(health < maxhealth) switch(health / maxhealth) if(0.0 to 0.5) - . += "It looks severely damaged!" + . += span_warning("It looks severely damaged!") if(0.25 to 0.5) - . += "It looks damaged!" + . += span_warning("It looks damaged!") if(0.5 to 1.0) - . += "It has a few scrapes and dents." + . += span_notice("It has a few scrapes and dents.") /obj/structure/fence/handrail/take_damage(amount) health -= amount if(health <= 0) - visible_message("\The [src] breaks down!") + 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) diff --git a/modular_splurt/code/game/objects/structures/micro_bricks.dm b/modular_splurt/code/game/objects/structures/micro_bricks.dm index 0c167c87bd..bbd5ad77f6 100644 --- a/modular_splurt/code/game/objects/structures/micro_bricks.dm +++ b/modular_splurt/code/game/objects/structures/micro_bricks.dm @@ -17,12 +17,12 @@ return TRUE if(istype(item, /obj/item/carpentry/glue)) - to_chat(user,"You glue the bricks to the floor.") + 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,"You pry the bricks from the floor.") + to_chat(user,span_notice("You pry the bricks from the floor.")) anchored = FALSE return TRUE diff --git a/modular_splurt/code/game/objects/structures/pole.dm b/modular_splurt/code/game/objects/structures/pole.dm index 9d8a96456f..21442124bd 100644 --- a/modular_splurt/code/game/objects/structures/pole.dm +++ b/modular_splurt/code/game/objects/structures/pole.dm @@ -16,6 +16,11 @@ . = ..() if(.) return + + // Don't teleport telekinetic users to the pole. + if (get_dist(src,user) > 1) + return + if(obj_flags & IN_USE) to_chat(user, "It's already in use - wait a bit.") return @@ -73,9 +78,9 @@ add_fingerprint(user) if(istype(P, /obj/item/wrench)) if (!(item_flags & IN_INVENTORY)) - to_chat(user, "You start to fasten the frame to the floor and celing...") + 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, "You construct the stripper pole!") + to_chat(user, span_notice("You construct the stripper pole!")) var/obj/structure/pole/C = new C.loc = loc del(src) @@ -84,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, "You start to unfastening the frame...") + to_chat(user, span_notice("You start to unfastening the frame...")) if(P.use_tool(src, user, 8 SECONDS, volume=50)) - to_chat(user, "You take down the stripper pole!") + to_chat(user, span_notice("You take down the stripper pole!")) var/obj/item/polepack/C = new C.loc = loc del(src) diff --git a/modular_splurt/code/game/objects/structures/statues.dm b/modular_splurt/code/game/objects/structures/statues.dm index 21551ea3b0..865929ed5a 100644 --- a/modular_splurt/code/game/objects/structures/statues.dm +++ b/modular_splurt/code/game/objects/structures/statues.dm @@ -36,7 +36,7 @@ petrified_mob = L if(L.buckled) L.buckled.unbuckle_mob(L,force=1) - L.visible_message("[L]'s skin rapidly turns to stone!", "Your skin abruptly hardens as you turn to stone once more!") + 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, .) - . -= "You examine [src] closer, but find nothing of interest..." + . -= span_notice("You examine [src] closer, but find nothing of interest...") /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("[src] shatters!") + 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, "You are being sliced apart by [user]!") + 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]!")) diff --git a/modular_splurt/code/game/objects/structures/table_frames.dm b/modular_splurt/code/game/objects/structures/table_frames.dm index 2cae0e49c1..6150d8c221 100644 --- a/modular_splurt/code/game/objects/structures/table_frames.dm +++ b/modular_splurt/code/game/objects/structures/table_frames.dm @@ -22,9 +22,9 @@ if (toConstruct) if(material.get_amount() < 1) - to_chat(user, "You need one [material.name] sheet to do this!") + to_chat(user, span_warning("You need one [material.name] sheet to do this!")) return - to_chat(user, "You start adding [material] to [src]...") + 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, "You need one [material.name] sheet to do this!") + to_chat(user, span_warning("You need one [material.name] sheet to do this!")) return - to_chat(user, "You start adding [material] to [src]...") + 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 diff --git a/modular_splurt/code/modules/admin/JobBan.dm b/modular_splurt/code/modules/admin/JobBan.dm index 98b2fe27d2..ba4e107cff 100644 --- a/modular_splurt/code/modules/admin/JobBan.dm +++ b/modular_splurt/code/modules/admin/JobBan.dm @@ -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, "[mins] is not a valid duration.") + 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, "Failed to apply ban.") + 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("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes.") - to_chat(M, "You have been [((msg == "ooc") || (msg == "appearance") || (msg == "pacifist")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg == "pacifist" ? "using violence" : msg].") - to_chat(M, "The reason is: [reason]") - to_chat(M, "This jobban will be lifted in [mins] minutes.") + message_admins(span_adminnotice("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes.")) + to_chat(M, span_boldannounce("You have been [((msg == "ooc") || (msg == "appearance") || (msg == "pacifist")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg == "pacifist" ? "using violence" : msg].")) + 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, "Failed to apply ban.") + 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("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg].") - to_chat(M, "You have been [((msg == "ooc") || (msg == "appearance") || (msg == "pacifist")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg == "pacifist" ? "using violence" : msg].") - to_chat(M, "The reason is: [reason]") - to_chat(M, "This jobban can be lifted only upon request.") + message_admins(span_adminnotice("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg].")) + to_chat(M, span_boldannounce("You have been [((msg == "ooc") || (msg == "appearance") || (msg == "pacifist")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg == "pacifist" ? "using violence" : msg].")) + 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("[key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg].") - to_chat(M, "You have been un-jobbanned by [usr.client.key] from [msg].") + message_admins(span_adminnotice("[key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg].")) + to_chat(M, span_boldannounce("You have been un-jobbanned by [usr.client.key] from [msg].")) diff --git a/modular_splurt/code/modules/admin/Kick.dm b/modular_splurt/code/modules/admin/Kick.dm index 19c0f77de2..12bda65b2c 100644 --- a/modular_splurt/code/modules/admin/Kick.dm +++ b/modular_splurt/code/modules/admin/Kick.dm @@ -1,13 +1,13 @@ /datum/admins/proc/kick(mob/M) if (!ismob(M) || !M.client) - to_chat(usr, "Error: [M] has no client!") + to_chat(usr, span_danger("Error: [M] has no client!")) return if(!check_if_greater_rights_than(M.client)) - to_chat(usr, "Error: They have more rights than you do.") + to_chat(usr, span_danger("Error: They have more rights than you do.")) return - to_chat(M, "You have been kicked from the server by [usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"].") + 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("[key_name_admin(usr)] kicked [key_name_admin(M)].") + message_admins(span_adminnotice("[key_name_admin(usr)] kicked [key_name_admin(M)].")) qdel(M.client) diff --git a/modular_splurt/code/modules/admin/NewBan.dm b/modular_splurt/code/modules/admin/NewBan.dm index 9a42461c34..709d6cc095 100644 --- a/modular_splurt/code/modules/admin/NewBan.dm +++ b/modular_splurt/code/modules/admin/NewBan.dm @@ -4,36 +4,36 @@ // var/mob/M = mob_to_ban if(!ismob(M) || !M.client) - to_chat(usr, "Error: [M] has no client!") + to_chat(usr, span_danger("Error: [M] has no client!")) return if(M.client && M.client.holder) - to_chat(usr, "Error: You cannot ban admins!") + 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, "[mins] is not a valid duration.") + 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, "Failed to apply ban.") + 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, "You have been banned by [usr.client.key].\nReason: [reason]") - to_chat(M, "This is a temporary ban, it will be removed in [mins] minutes. The round ID is [GLOB.round_id].") + to_chat(M, span_boldannounce("You have been banned by [usr.client.key].\nReason: [reason]")) + 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, "To try to resolve this matter head to [bran]") + to_chat(M, span_danger("To try to resolve this matter head to [bran]")) else - to_chat(M, "No ban appeals URL has been set.") + 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 = "[key_name_admin(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis will be removed in [mins] minutes." + 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, "You have been banned by [usr.client.key].\nReason: [reason]") - to_chat(M, "This is a permanent ban. The round ID is [GLOB.round_id].") + to_chat(M, span_boldannounce("You have been banned by [usr.client.key].\nReason: [reason]")) + 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, "To try to resolve this matter head to [bran]") + to_chat(M, span_danger("To try to resolve this matter head to [bran]")) else - to_chat(M, "No ban appeals URL has been set.") + to_chat(M, span_danger("No ban appeals URL has been set.")) if(!DB_ban_record(BANTYPE_PERMA, M, -1, reason)) - to_chat(usr, "Failed to apply ban.") + 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 = "[key_name_admin(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis is a permanent ban." + 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) diff --git a/modular_splurt/code/modules/admin/Transform.dm b/modular_splurt/code/modules/admin/Transform.dm index 5fbc48be22..239d17f774 100644 --- a/modular_splurt/code/modules/admin/Transform.dm +++ b/modular_splurt/code/modules/admin/Transform.dm @@ -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("[key_name_admin(usr)] transformed [key_name_admin(M)] into a [newTypeName].") + 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) diff --git a/modular_splurt/code/modules/admin/centcom_communications.dm b/modular_splurt/code/modules/admin/centcom_communications.dm index 3a172a4725..2c99fe9b0e 100644 --- a/modular_splurt/code/modules/admin/centcom_communications.dm +++ b/modular_splurt/code/modules/admin/centcom_communications.dm @@ -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, "This player cannot be observed.") + to_chat(usr, span_notice("This player cannot be observed.")) return if(!isobserver(admin.mob)) diff --git a/modular_splurt/code/modules/admin/playtimes.dm b/modular_splurt/code/modules/admin/playtimes.dm index 8dbdf7b22e..bcf3e0fee6 100644 --- a/modular_splurt/code/modules/admin/playtimes.dm +++ b/modular_splurt/code/modules/admin/playtimes.dm @@ -22,7 +22,7 @@ return if(!CONFIG_GET(flag/use_exp_tracking)) - to_chat(usr, "Tracking is disabled in the server configuration file.") + 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, "This player cannot be observed.") + to_chat(usr, span_notice("This player cannot be observed.")) return var/client/C = usr.client diff --git a/modular_splurt/code/modules/admin/verbs/discordbunker.dm b/modular_splurt/code/modules/admin/verbs/discordbunker.dm index 149479289a..446520aeec 100644 --- a/modular_splurt/code/modules/admin/verbs/discordbunker.dm +++ b/modular_splurt/code/modules/admin/verbs/discordbunker.dm @@ -2,7 +2,7 @@ set category = "Server" set name = "Toggle Discord Bunker" if(!SSdbcore.IsConnected()) - to_chat(usr, "The Database is not connected/enabled!") + 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, "The Database is not connected!") + to_chat(usr, span_adminnotice("The Database is not connected!")) return if(!SSdiscord) - to_chat(usr, "The discord subsystem hasn't initialized yet!") + to_chat(usr, span_adminnotice("The discord subsystem hasn't initialized yet!")) return if(!CONFIG_GET(flag/need_discord_to_join)) - to_chat(usr, "The Discord Bunker is deactivated!") + 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, "The Database is not connected!") + to_chat(usr, span_adminnotice("The Database is not connected!")) return if(!SSdiscord) - to_chat(usr, "The discord subsystem hasn't initialized yet!") + to_chat(usr, span_adminnotice("The discord subsystem hasn't initialized yet!")) return if(!CONFIG_GET(flag/need_discord_to_join)) - to_chat(usr, "The Discord Bunker is deactivated!") + to_chat(usr, span_adminnotice("The Discord Bunker is deactivated!")) return GLOB.discord_passthrough -= ckey(ckeytobypass) diff --git a/modular_splurt/code/modules/admin/verbs/randomverbs.dm b/modular_splurt/code/modules/admin/verbs/randomverbs.dm index 00c97dddcf..a0c81e3f19 100644 --- a/modular_splurt/code/modules/admin/verbs/randomverbs.dm +++ b/modular_splurt/code/modules/admin/verbs/randomverbs.dm @@ -42,7 +42,7 @@ log_admin("SubtlePM ([sender]): [key_name(usr)] -> [key_name(M)] : [msg]") - msg = " SubtleMessage ([sender]): [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]" + msg = span_adminnotice(" SubtleMessage ([sender]): [key_name_admin(usr)] -> [key_name_admin(M)] : [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! diff --git a/modular_splurt/code/modules/antagonists/_common/antag_spawner.dm b/modular_splurt/code/modules/antagonists/_common/antag_spawner.dm index ebb077ff11..b7d76290db 100644 --- a/modular_splurt/code/modules/antagonists/_common/antag_spawner.dm +++ b/modular_splurt/code/modules/antagonists/_common/antag_spawner.dm @@ -13,14 +13,14 @@ /obj/item/antag_spawner/slaver_borg/proc/check_usability(mob/user) if(used) - to_chat(user, "[src] is out of power!") + 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, "AUTHENTICATION FAILURE. ACCESS DENIED.") + 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, "[src] is out of range! It can only be used at your hideout!") + 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, "A request has already been sent! Wait 1 minute.") + 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, "You activate [src] and wait for confirmation.") + 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, "Unable to connect to Slaver command. Please wait and try again later.") + 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 diff --git a/modular_splurt/code/modules/antagonists/qareen/qareen.dm b/modular_splurt/code/modules/antagonists/qareen/qareen.dm index 24110b2f44..77189708d9 100644 --- a/modular_splurt/code/modules/antagonists/qareen/qareen.dm +++ b/modular_splurt/code/modules/antagonists/qareen/qareen.dm @@ -100,7 +100,7 @@ /mob/living/simple_animal/qareen/Login() ..() var/qareen_greet - qareen_greet += "You are a qareen." + qareen_greet += span_deadsay("You are a qareen.") qareen_greet += "Your formerly mundane spirit has been infused with alien energies and empowered into a qareen." qareen_greet += "You are not dead, not alive, but somewhere in between. You are capable of limited interaction with both worlds." qareen_greet += "You are invincible and invisible to everyone but other ghosts. Most abilities will reveal you, rendering you vulnerable." @@ -128,11 +128,11 @@ revealed = FALSE incorporeal_move = INCORPOREAL_MOVE_JAUNT invisibility = INVISIBILITY_QAREEN - to_chat(src, "You are once more concealed.") + 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, "You can move again!") + 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 = "[src] says, \"[message]\"" + var/rendered = span_revennotice("[src] 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("[src] violently flinches!", \ - "As \the [W] passes through you, you feel your essence draining away!") + 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, "NO! No... it's too late, you can feel your essence [pick("spewing out", "bursting out")]...") + 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("[src] lets out a waning screech as violet mist swirls around its dissolving body!") + 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("[src]'s body breaks apart into a fine pile of blue dust.") + 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, "You have been revealed!") + to_chat(src, span_revendanger("You have been revealed!")) unreveal_time = world.time + time else - to_chat(src, "You have been revealed!") + 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, "You cannot move!") + to_chat(src, span_revendanger("You cannot move!")) unstun_time = world.time + time else - to_chat(src, "You cannot move!") + 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, "You cannot use abilities from inside of a wall.") + 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, "You cannot use abilities inside of a dense object.") + to_chat(src, span_revenwarning("You cannot use abilities inside of a dense object.")) return FALSE if(inhibited) - to_chat(src, "Your powers have been suppressed by nulling energy!") + 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, "You lack the essence to use that ability.") + 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, "Gained [essence_amt]E[source ? " from [source]":""].") + to_chat(src, span_revennotice("Gained [essence_amt]E[source ? " from [source]":""].")) else - to_chat(src, "Lost [essence_amt]E[source ? " from [source]":""].") + 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("[src] settles down and seems lifeless.") + 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("[user] scatters [src] in all directions.", \ - "You scatter [src] across the area. The particles slowly fade away.") + 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("[src] breaks into particles upon impact, which fade away to nothingness.") + 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) - . += "It seems inert." + . += span_revennotice("It seems inert.") else if(reforming) - . += "It is shifting and distorted. It would be wise to destroy this." + . += 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("[src] settles down and seems lifeless.") + 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("[src] settles down and seems lifeless.") + 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("[src] suddenly rises into the air before fading away.") + 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("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the shadow realm!") + user.visible_message(span_suicide("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the shadow realm!")) scatter() return (OXYLOSS) diff --git a/modular_splurt/code/modules/antagonists/qareen/qareen_abilities.dm b/modular_splurt/code/modules/antagonists/qareen/qareen_abilities.dm index d3080936a7..8963ea6379 100644 --- a/modular_splurt/code/modules/antagonists/qareen/qareen_abilities.dm +++ b/modular_splurt/code/modules/antagonists/qareen/qareen_abilities.dm @@ -9,7 +9,7 @@ if(ishuman(A)) if(A in drained_mobs) - to_chat(src, "[A]'s fluids are almost devoid of any essence, also very bland.. almost tasteless... but beggars can't be choosers." ) + 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, "You are already sucking up the essence!") + to_chat(src, span_revenwarning("You are already sucking up the essence!")) return if(target.stat) - to_chat(src, "[target.p_their(TRUE)] essence is too faded to harvest.") + to_chat(src, span_revennotice("[target.p_their(TRUE)] essence is too faded to harvest.")) return if(!target.ckey) - to_chat(src, "[target.p_their(TRUE)] essence is lacking .. worthless.") + 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, "You search for the lifespring of [target].") + 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, "[target.p_their(TRUE)] [G.name] spasms pitifully, almost nothing will come out.") + to_chat(src, span_revennotice("[target.p_their(TRUE)] [G.name] spasms pitifully, almost nothing will come out.")) else - to_chat(src, "[target.p_their(TRUE)] [G.name] are brimming with [main_fluid].") + 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, "[target] is almost barren of essence. Still, every bit counts.") + to_chat(src, span_revennotice("[target] is almost barren of essence. Still, every bit counts.")) if(5 to 10) - to_chat(src, "[target] will yield an average amount of essence.") + to_chat(src, span_revennotice("[target] will yield an average amount of essence.")) if(11 to 20) - to_chat(src, "Such a feast! [target] will yield much essence to you.") + to_chat(src, span_revenboldnotice("Such a feast! [target] will yield much essence to you.")) if(30 to INFINITY) - to_chat(src, "Ah, a sexually furstrated person. [target] will yield massive amounts of essence to you.") + 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, "[target.p_theyre(TRUE)] now too weak to provide anything of worth.") - to_chat(target, "You feel something tugging across your body before subsiding.") + 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, "You begin sucking up essence from [target]'s genitals and body.") + to_chat(src, span_revenminor("You begin sucking up essence from [target]'s genitals and body.")) if(target.stat != DEAD) - to_chat(target, "You feel an unholy euphoria as as something sucks at every part your body, your fluids flowing out...") + 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("[target] suddenly rises slightly into the air, [target.p_their()] skin turning an ashy gray.") + 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, "Something's wrong! [target] seems to be resisting the sucking, leaving you vulnerable!") + 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("[target] slumps onto the ground.", \ - "Violet lights, dancing in your vision, receding--") + 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, "The ammount of [target]'s fluids has increased your maximum essence level. Your new maximum essence is [essence_regen_cap].") + 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, "The absorption of [target]'s fluids has increased your maximum essence level. Your new maximum essence is [essence_regen_cap].") + 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("[target] slumps onto the ground.", \ - "Violets lights, dancing in your vision, getting clo--") + 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, "[target ? "[target] has":"[target.p_theyve(TRUE)]"] been drawn out of your grasp. The link has been broken.") + 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("[target] slumps onto the ground.", \ - "Violets lights, dancing in your vision, receding--") + 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, "You are not close enough to suck on [target ? "[target]'s":"[target.p_their()]"] fluids. The link has been broken.") + 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 = "You toggle your night vision." + 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, "You have unlocked [initial(name)]!") + 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("\The [L] suddenly flares brightly and begins to spark!") + L.visible_message(span_warning("\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, "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")].") + 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, "You feel [pick("suddenly hot", "a surge of warmth", "like your crotch is tingling")].") + to_chat(H, span_revenminor("You feel [pick("suddenly hot", "a surge of warmth", "like your crotch is tingling")].")) mob.reagents.add_reagent(/datum/reagent/drug/aphrodisiac, 5) else mob.adjust_bodytemperature(5) diff --git a/modular_splurt/code/modules/antagonists/qareen/qareen_bliss.dm b/modular_splurt/code/modules/antagonists/qareen/qareen_bliss.dm index 5a0a657ea5..4b9fd83cd6 100644 --- a/modular_splurt/code/modules/antagonists/qareen/qareen_bliss.dm +++ b/modular_splurt/code/modules/antagonists/qareen/qareen_bliss.dm @@ -27,7 +27,7 @@ /datum/disease/qarbliss/stage_act() if(prob(stage*2)) if(prob(5)) - to_chat(affected_mob, "You feel [pick("hot and bothered", "horny", "lusty", "like you're in a rut", "the need to breed", "breedable", "slimy")]...") + 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, "It's too much! Brain.. fried..") + 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("[affected_mob] looks utterly depraved.", "You suddenly feel like your skin is tingling...") + affected_mob.visible_message(span_warning("[affected_mob] looks utterly depraved."), span_revennotice("You suddenly feel like your skin is tingling...")) 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, "You sense the curse of a lustful ghost befall you...") + to_chat(affected_mob, span_revendanger("You sense the curse of a lustful ghost befall you...")) diff --git a/modular_splurt/code/modules/antagonists/slaver/equipment/slaver_items.dm b/modular_splurt/code/modules/antagonists/slaver/equipment/slaver_items.dm index 76c1810a9e..d3880bda09 100644 --- a/modular_splurt/code/modules/antagonists/slaver/equipment/slaver_items.dm +++ b/modular_splurt/code/modules/antagonists/slaver/equipment/slaver_items.dm @@ -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, "You aren't sure how to use this tech!") + to_chat(user, span_warning("You aren't sure how to use this tech!")) return if(user == M) - to_chat(user, "You can't teleport yourself!") + 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, "The mothership is out of range, you need to be on the same z-level!") + to_chat(user, span_warning("The mothership is out of range, you need to be on the same z-level!")) return - user.visible_message("[user] begins scanning [M] with [src].", "You begin scanning [M] with [src].") + 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("[M] vanishes from sight!", \ - "You feel a rush of energy as you are beamed to the slaver mothership!") + 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, "You need to stand still and uninterrupted for 15 seconds!") + 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 diff --git a/modular_splurt/code/modules/antagonists/slaver/slaver.dm b/modular_splurt/code/modules/antagonists/slaver/slaver.dm index 5b680707e0..610e12b74d 100644 --- a/modular_splurt/code/modules/antagonists/slaver/slaver.dm +++ b/modular_splurt/code/modules/antagonists/slaver/slaver.dm @@ -199,7 +199,7 @@ GLOBAL_LIST_INIT(slavers_ransom_values, list( /datum/team/slavers/roundend_report() var/list/parts = list() - parts += "Slave Traders:" + parts += span_header("Slave Traders:") var/text = "
The crew were:" 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 += "The slaver crew were successful!" + parts += span_greentext("The slaver crew were successful!") else - parts += "The slaver crew have failed." + parts += span_redtext("The slaver crew have failed.") parts += text diff --git a/modular_splurt/code/modules/antagonists/wendigo/mob/_on_click.dm b/modular_splurt/code/modules/antagonists/wendigo/mob/_on_click.dm index 13257de9e9..f5cccf49d8 100644 --- a/modular_splurt/code/modules/antagonists/wendigo/mob/_on_click.dm +++ b/modular_splurt/code/modules/antagonists/wendigo/mob/_on_click.dm @@ -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, "You can't do that right now!") + to_chat(src, span_warning("You can't do that right now!")) return FALSE if(be_close && !in_range(M, src)) - to_chat(src, "You are too far away!") + to_chat(src, span_warning("You are too far away!")) return FALSE return TRUE diff --git a/modular_splurt/code/modules/antagonists/wendigo/mob/examine.dm b/modular_splurt/code/modules/antagonists/wendigo/mob/examine.dm index c3d1fe26e9..9427a91018 100644 --- a/modular_splurt/code/modules/antagonists/wendigo/mob/examine.dm +++ b/modular_splurt/code/modules/antagonists/wendigo/mob/examine.dm @@ -7,9 +7,9 @@ . = list("*---------*\nThis is [icon2html(src, user)] \a [src]!") if(handcuffed) - . += "[t_He] is [icon2html(handcuffed, user)] handcuffed!" + . += span_warning("[t_He] is [icon2html(handcuffed, user)] handcuffed!") if(legcuffed) - . += "[t_He] has [icon2html(legcuffed, user)] leg cuffs!" + . += 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) - . += "[t_He] is limp and unresponsive, with no signs of life." + . += span_deadsay("[t_He] is limp and unresponsive, with no signs of life.") var/list/msg = ("") var/temp_hp = getBruteLoss() @@ -66,7 +66,7 @@ if(connected_link) if(connected_link.souls.len > 5) - . += "[t_His] eyes are glowing a deadly red." + . += span_warning("[t_His] eyes are glowing a deadly red.") else var/A = "" switch(connected_link.souls.len) @@ -80,7 +80,7 @@ A += "[t_His] eyes are glowing red." . += "[A]" else - . += "[t_He] looks lost." + . += span_deadsay("[t_He] looks lost.") SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, .) . += "*---------*" diff --git a/modular_splurt/code/modules/antagonists/wendigo/mob/metabolization.dm b/modular_splurt/code/modules/antagonists/wendigo/mob/metabolization.dm index 33a2869bdc..7293047456 100644 --- a/modular_splurt/code/modules/antagonists/wendigo/mob/metabolization.dm +++ b/modular_splurt/code/modules/antagonists/wendigo/mob/metabolization.dm @@ -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, "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.
") + 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.")) if("PEsmaller") if(fake_penis_size > 0) - to_chat(src, "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.") + 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.
")) else if(round(fake_breast_size, 1) == fake_breast_size && fake_breast_size) switch(had_changed) if("breast_enlarger") - to_chat(src, "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.") + 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.
")) if("BEsmaller)") if(fake_breast_size > 0) - to_chat(src, "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.") + 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.")) return TRUE diff --git a/modular_splurt/code/modules/arousal/arousal.dm b/modular_splurt/code/modules/arousal/arousal.dm index aaee27e37b..b60b8e95e1 100644 --- a/modular_splurt/code/modules/arousal/arousal.dm +++ b/modular_splurt/code/modules/arousal/arousal.dm @@ -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, "You feel your sounding rod being pushed out of your cockhole with the burst of jizz!") + 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("You hear a strong suction sound coming from the [M.name] on [src]'s [G.name].", \ - "The [M.name] pumps faster, trying to get you over the edge.", \ - "Something vacuums your [G.name] with a quiet but powerfull vrrrr.") + 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("[src] twitches as [p_their()] [main_fluid] trickles into [container].", \ - "[M] sucks out all the [main_fluid] you had been saving up into [container].", \ - "You feel a vacuum sucking on your [G.name] as you climax!") + 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,"You're about to climax over [L]!") - to_chat(L,"[src] is about to climax over you!") + 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,"You climax all over [L] using your [G.name]!") - to_chat(L, "[src] climaxes all over you using [p_their()] [G.name]!") + 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. diff --git a/modular_splurt/code/modules/arousal/genitals.dm b/modular_splurt/code/modules/arousal/genitals.dm index 0b639672c0..2305968913 100644 --- a/modular_splurt/code/modules/arousal/genitals.dm +++ b/modular_splurt/code/modules/arousal/genitals.dm @@ -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, "[remover != owner ? owner.p_their() : "Your"] [name] doesn't have that equipped") + 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 = "\The [owner] slides the [selected] out of [owner.p_their()] [name]", - self_message = "You feel the [selected] slide out of your [name]", + owner.visible_message(message = span_lewd("\The [owner] 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 = "\The [remover] tries to remove the [selected] out of [owner]'s [name]", - self_message = "\The [remover] gently takes your [name] and starts sliding the [selected] out of it", + self_message = span_lewd("\The [remover] 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 = "\The [remover] slides the [selected] out of [owner]'s [name]!", - self_message = "You feel [remover]'s warm hand slide the [selected] out of your [name]", + owner.visible_message(message = span_lewd("\The [remover] 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]
"), ignored_mobs = owner.get_unconsenting() ) switch(selected.type) diff --git a/modular_splurt/code/modules/arousal/organs/belly.dm b/modular_splurt/code/modules/arousal/organs/belly.dm index ffcd3e3661..44ae1ffafa 100644 --- a/modular_splurt/code/modules/arousal/organs/belly.dm +++ b/modular_splurt/code/modules/arousal/organs/belly.dm @@ -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, "You feel your [pick(belly_names)] go completely flat.") + 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, "Your guts [pick("swell up to", "gurgle into", "expand into", "plump up into", "grow eagerly into", "fatten up into", "distend into")] a larger midsection.") + 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, "Your guts [pick("shrink down to", "decrease into", "wobble down into", "diminish into", "deflate into", "contracts into")] a smaller midsection.") + 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("\The [owner]'s belly bloats outwards as it gets pumped full of[pick(" sweet", "")] [lowertext(source_gen.get_fluid_name())]!", ignored_mobs = owner.get_unconsenting()) + owner.visible_message(span_lewd("\The [owner]'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) diff --git a/modular_splurt/code/modules/arousal/organs/butt.dm b/modular_splurt/code/modules/arousal/organs/butt.dm index bc37f4aef2..45622e77e1 100644 --- a/modular_splurt/code/modules/arousal/organs/butt.dm +++ b/modular_splurt/code/modules/arousal/organs/butt.dm @@ -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("\The [owner]'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()) + owner.visible_message(span_lewd("\The [owner]'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() diff --git a/modular_splurt/code/modules/arousal/organs/penis.dm b/modular_splurt/code/modules/arousal/organs/penis.dm index d09680b312..78e015ea0b 100644 --- a/modular_splurt/code/modules/arousal/organs/penis.dm +++ b/modular_splurt/code/modules/arousal/organs/penis.dm @@ -31,7 +31,7 @@ var/previous = size modify_size(target.total_volume / (fluid_max_volume * GENITAL_INFLATION_THRESHOLD)) if(size != previous) - owner.visible_message("\The [owner]'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 [partner]'s [lowertext(source_gen.get_fluid_name())]!", ignored_mobs = owner.get_unconsenting()) + owner.visible_message(span_lewd("\The [owner]'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 [partner]'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() diff --git a/modular_splurt/code/modules/arousal/toys/dildos.dm b/modular_splurt/code/modules/arousal/toys/dildos.dm index 7c12e5ab64..0dd77f4583 100644 --- a/modular_splurt/code/modules/arousal/toys/dildos.dm +++ b/modular_splurt/code/modules/arousal/toys/dildos.dm @@ -6,7 +6,7 @@ /obj/item/dildo/flared/gigantic/suicide_act(mob/living/user) if(do_after(user,45,target=src)) - user.visible_message("[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!!") + 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) diff --git a/modular_splurt/code/modules/awaymissions/mission_code/academy.dm b/modular_splurt/code/modules/awaymissions/mission_code/academy.dm index b9fadc051e..b29a64d948 100644 --- a/modular_splurt/code/modules/awaymissions/mission_code/academy.dm +++ b/modular_splurt/code/modules/awaymissions/mission_code/academy.dm @@ -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("[user] rolls the dice, but it doesn't respond to [user.p_them()] again.") + 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 diff --git a/modular_splurt/code/modules/cargo/packs/misc.dm b/modular_splurt/code/modules/cargo/packs/misc.dm index f80de923b2..bf5eec556d 100644 --- a/modular_splurt/code/modules/cargo/packs/misc.dm +++ b/modular_splurt/code/modules/cargo/packs/misc.dm @@ -217,10 +217,10 @@ /datum/supply_pack/misc/plushmium name = "Plushmium Crate" - desc = "Contains a small sample of an experimental chemical known as Plushmium, and a plushie to use it on." + desc = "Surplus shipment of Stuffing For Spessmen backer rewards. Contains a pre-packaged spray bottle of Plushmium, and toy to use it on." cost = 5000 // Cost of an expensive animal contains = list( - /obj/item/reagent_containers/glass/bottle/plushmium, + /obj/item/storage/box/shipment_plushmium, /obj/item/choice_beacon/box/plushie ) diff --git a/modular_splurt/code/modules/cargo/sweatshop/sweatshop.dm b/modular_splurt/code/modules/cargo/sweatshop/sweatshop.dm index b3d6189391..09c40bfcfc 100644 --- a/modular_splurt/code/modules/cargo/sweatshop/sweatshop.dm +++ b/modular_splurt/code/modules/cargo/sweatshop/sweatshop.dm @@ -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," You begin to saw [src] in half...") + 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, " You saw [src] in half.") + to_chat(user, span_notice(" You saw [src] in half.")) qdel(src) else - to_chat(user, "You need to hold still to saw [src]!") + 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," You begin cut [src] into smaller pieces...") + 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, " You cut [src] into four pieces.") + to_chat(user, span_notice(" You cut [src] into four pieces.")) qdel(src) else - to_chat(user, "You need to hold still to saw [src]!") + 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," You carefully begin to sand down [src]...") + 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, " You smooth [src] into a peg.") + to_chat(user, span_notice(" You smooth [src] into a peg.")) qdel(src) else - to_chat(user, "You need to hold still to sand [src]!") + 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," You tediously begin to cut [src] into several nails...") + 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, " You make some crude metal nails.") + to_chat(user, span_notice(" You make some crude metal nails.")) qdel(src) else - to_chat(user, "You need to hold still to process [src]!") + 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," You begin to glue down one end of [src]...") + 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, " You slap some glue onto [src].") + to_chat(user, span_notice(" You slap some glue onto [src].")) qdel(src) else - to_chat(user, "You need to hold still to glue [src]!") + 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," You begin to glue down one end of the [src]...") + 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, " You slap some glue onto [src].") + to_chat(user, span_notice(" You slap some glue onto [src].")) qdel(src) else - to_chat(user, "You need to hold still to glue [src]!") + 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," You begin to cut four holes into [src]...") + 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, " You drill four holes into [src].") + to_chat(user, span_notice(" You drill four holes into [src].")) qdel(src) else - to_chat(user, "You need to hold still to refine [src]!") + 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," You place nails into [src]...") + 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, " The nails are ready to be hammered.") + to_chat(user, span_notice(" The nails are ready to be hammered.")) qdel(src) qdel(I) else - to_chat(user, "You need to hold still to refine [src]!") + 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," You begin to hammer the [src]...") + 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, " The nails are hammered into place.") + to_chat(user, span_notice(" The nails are hammered into place.")) qdel(src) else - to_chat(user, "You need to hold still to refine [src]!") + 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," You begin to sand the [src]...") + 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, " You sand down the [src].") + to_chat(user, span_notice(" You sand down the [src].")) qdel(src) else - to_chat(user, "You need to hold still to refine [src]!") + 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," You add some finishing touches to the [src]...") + 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, " You complete the [src].") + to_chat(user, span_notice(" You complete the [src].")) qdel(src) qdel(I) else - to_chat(user, "You need to hold still to refine [src]!") + 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," You secure a cloth cushion to [src]...") + 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, " You add a cushion to [src].") + to_chat(user, span_notice(" You add a cushion to [src].")) qdel(src) qdel(I) else - to_chat(user, "You need to hold still to detail [src]!") + 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," You secure a silk cushion to [src]...") + 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, " You add a cushion to [src].") + to_chat(user, span_notice(" You add a cushion to [src].")) qdel(src) qdel(I) else - to_chat(user, "You need to hold still to detail [src]!") + to_chat(user, span_warning("You need to hold still to detail [src]!")) else ..() diff --git a/modular_splurt/code/modules/client/client_procs.dm b/modular_splurt/code/modules/client/client_procs.dm index 7f82c94449..d2e67c65bf 100644 --- a/modular_splurt/code/modules/client/client_procs.dm +++ b/modular_splurt/code/modules/client/client_procs.dm @@ -77,7 +77,7 @@ M.mind.AddSpell(new T) else M.AddSpell(new T) - message_admins("Spells given to mindless mobs will not be transferred in mindswap or cloning!") + 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("[key_name_admin(usr)] has taught [MA] to [key_name_admin(C)].") + 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)) diff --git a/modular_splurt/code/modules/clothing/lewd_clothing/eyes/hypnogoggles.dm b/modular_splurt/code/modules/clothing/lewd_clothing/eyes/hypnogoggles.dm index 35f2b71b0b..58c5b5281f 100644 --- a/modular_splurt/code/modules/clothing/lewd_clothing/eyes/hypnogoggles.dm +++ b/modular_splurt/code/modules/clothing/lewd_clothing/eyes/hypnogoggles.dm @@ -114,7 +114,7 @@ /datum/brain_trauma/induced_hypnosis/on_gain() log_game("[key_name(owner)] was hypnogoggled'.") - to_chat(owner, "[hypnotic_phrase]") + 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.", diff --git a/modular_splurt/code/modules/clothing/masks/hailer.dm b/modular_splurt/code/modules/clothing/masks/hailer.dm index d1edb5c00b..2f32917196 100644 --- a/modular_splurt/code/modules/clothing/masks/hailer.dm +++ b/modular_splurt/code/modules/clothing/masks/hailer.dm @@ -15,6 +15,6 @@ if(iscarbon(user)) var/mob/living/carbon/C = user if(src == C.wear_mask) - to_chat(user, "The mask is fastened tight! You'll need help taking this off!") + to_chat(user, span_warning("The mask is fastened tight! You'll need help taking this off!")) return ..() diff --git a/modular_splurt/code/modules/clothing/masks/miscellaneous.dm b/modular_splurt/code/modules/clothing/masks/miscellaneous.dm index b253001735..8e89fd9f8e 100644 --- a/modular_splurt/code/modules/clothing/masks/miscellaneous.dm +++ b/modular_splurt/code/modules/clothing/masks/miscellaneous.dm @@ -3,7 +3,7 @@ if(iscarbon(user)) var/mob/living/carbon/C = user if(src == C.wear_mask) - to_chat(user, "You need help taking this off!") + to_chat(user, span_warning("You need help taking this off!")) return ..() diff --git a/modular_splurt/code/modules/clothing/sizeaccessories.dm b/modular_splurt/code/modules/clothing/sizeaccessories.dm index 2161ee92ba..4fefb9e277 100644 --- a/modular_splurt/code/modules/clothing/sizeaccessories.dm +++ b/modular_splurt/code/modules/clothing/sizeaccessories.dm @@ -18,7 +18,7 @@ return ..() if(user.GetComponent(/datum/component/size_normalized)) - to_chat(user, "\The [src] buzzes, being overwritten by another accessory.") + 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, "\The [src] buzzes, being overwritten by another accessory.") + 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, "\The [src] buzzes, being overwritten by another accessory.") + 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) diff --git a/modular_splurt/code/modules/clothing/spacesuits/hardsuit.dm b/modular_splurt/code/modules/clothing/spacesuits/hardsuit.dm index daebd17455..c0ebab45ee 100644 --- a/modular_splurt/code/modules/clothing/spacesuits/hardsuit.dm +++ b/modular_splurt/code/modules/clothing/spacesuits/hardsuit.dm @@ -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("The tesla capacitors on [owner]'s Tesla Power Armor are still recharging! The armor merely emits some sparks.") + 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("[src] blocks [attack_text], sending out arcs of lightning!") + 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 diff --git a/modular_splurt/code/modules/clothing/under/_under.dm b/modular_splurt/code/modules/clothing/under/_under.dm index 5dedecd802..847ba40c3c 100644 --- a/modular_splurt/code/modules/clothing/under/_under.dm +++ b/modular_splurt/code/modules/clothing/under/_under.dm @@ -1,3 +1,8 @@ +/obj/item/clothing/under/Initialize(mapload) + . = ..() + if(!is_type_in_typecache(type, GLOB.skirt_peekable)) + LAZYSET(GLOB.skirt_peekable, type, TRUE) + /obj/item/clothing/under/Destroy() QDEL_LIST(attached_accessories) return ..() diff --git a/modular_splurt/code/modules/events/crystalline_reentry.dm b/modular_splurt/code/modules/events/crystalline_reentry.dm index 97378c781a..02f8ff68ae 100644 --- a/modular_splurt/code/modules/events/crystalline_reentry.dm +++ b/modular_splurt/code/modules/events/crystalline_reentry.dm @@ -149,7 +149,7 @@ if(prob(10)) playsound(src, 'sound/effects/bang.ogg', 50, 1) - audible_message("You hear a BONK!") + 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("[L] is smashed by a crystalline asteroid!" , "The crystalline asteroid smashes you!" , "You hear a BONK!") + L.visible_message(span_danger("[L] is smashed by a crystalline asteroid!") , span_userdanger("The crystalline asteroid smashes you!") , "You hear a BONK!") 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("A [M] emerges from the asteroid's rubble!") + 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("A [M] emerges from the asteroid's rubble! Wait... What?") + 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("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!") - visible_message("Something falls free of the tendril!") + 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("The tendril falls into the clouds below!") + 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) diff --git a/modular_splurt/code/modules/food_and_drinks/food/snacks_other.dm b/modular_splurt/code/modules/food_and_drinks/food/snacks_other.dm index d04a6eca55..7e15394479 100644 --- a/modular_splurt/code/modules/food_and_drinks/food/snacks_other.dm +++ b/modular_splurt/code/modules/food_and_drinks/food/snacks_other.dm @@ -15,7 +15,7 @@ cheeseoverlay.icon_state = "cheesed_snout" else cheeseoverlay.icon_state = "cheesed_human" - H.visible_message("[H] is cheesed by [src]!", "You've been cheesed by [src]!") + 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 diff --git a/modular_splurt/code/modules/holodeck/holo_effect.dm b/modular_splurt/code/modules/holodeck/holo_effect.dm new file mode 100644 index 0000000000..349ca781f1 --- /dev/null +++ b/modular_splurt/code/modules/holodeck/holo_effect.dm @@ -0,0 +1,7 @@ +// Holodeck mob: Funclaw +/obj/effect/holodeck_effect/mobspawner/funclaw + mobtype = /mob/living/simple_animal/hostile/deathclaw/funclaw/gentle + +// Holodeck mob: Friendly Bee +/obj/effect/holodeck_effect/mobspawner/bumbles + mobtype = /mob/living/simple_animal/pet/bumbles diff --git a/modular_splurt/code/modules/jobs/job_types/peacekeeper.dm b/modular_splurt/code/modules/jobs/job_types/peacekeeper.dm index d2b1c4b206..0936c46c12 100644 --- a/modular_splurt/code/modules/jobs/job_types/peacekeeper.dm +++ b/modular_splurt/code/modules/jobs/job_types/peacekeeper.dm @@ -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, "The injector is empty.") + 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, "Injecting [M] with more [RG] would overdose them.") + to_chat(user, span_warning("Injecting [M] with more [RG] would overdose them.")) return - to_chat(M, "You feel a tiny prick!") - to_chat(user, "You inject [M] with the injector.") + 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, "[trans] unit\s injected. [R.total_volume] unit\s remaining.") + 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, "[src] is now dispensing '[R.name]'.") + 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) - . += "It currently has [R.volume] unit\s of [R.name] stored." + . += span_notice("It currently has [R.volume] unit\s of [R.name] stored.") empty = 0 if(empty) - . += "It is currently empty! Allow some time for the internal syntheszier to produce more." + . += span_warning("It is currently empty! Allow some time for the internal syntheszier to produce more.") /* End Peacekeeper Hypo */ diff --git a/modular_splurt/code/modules/keybindings/keybind/human.dm b/modular_splurt/code/modules/keybindings/keybind/human.dm new file mode 100644 index 0000000000..951ce686e2 --- /dev/null +++ b/modular_splurt/code/modules/keybindings/keybind/human.dm @@ -0,0 +1,32 @@ +/datum/keybinding/human/quick_equip_suitstorage + hotkey_keys = list("ShiftQ") + name = "quick_equipsuitstorage" + full_name = "Quick suit storage" + description = "Put held thing in suit storage or take the item from it" + +/datum/keybinding/human/quick_equip_suitstorage/down(client/user) + var/mob/living/carbon/human/H = user.mob + H.smart_equip_suitstorage() + return TRUE + +/datum/keybinding/human/quick_equip_lpocket + hotkey_keys = list("Unbound") + name = "quick_equip_lpocket" + full_name = "Quick left pocket" + description = "Put held thing in left pocket or take the item from it" + +/datum/keybinding/human/quick_equip_lpocket/down(client/user) + var/mob/living/carbon/human/H = user.mob + H.smart_equip_lpocket() + return TRUE + +/datum/keybinding/human/quick_equip_rpocket + hotkey_keys = list("Unbound") + name = "quick_equip_rpocket" + full_name = "Quick right pocket" + description = "Put held thing in right pocket or take the item from it" + +/datum/keybinding/human/quick_equip_rpocket/down(client/user) + var/mob/living/carbon/human/H = user.mob + H.smart_equip_rpocket() + return TRUE diff --git a/modular_splurt/code/modules/mob/dead/dead.dm b/modular_splurt/code/modules/mob/dead/dead.dm index f314076f72..f3fcd1d528 100644 --- a/modular_splurt/code/modules/mob/dead/dead.dm +++ b/modular_splurt/code/modules/mob/dead/dead.dm @@ -1,5 +1,5 @@ /mob/dead/check_out(atom/A) if (!CONFIG_GET(flag/ghost_interaction)) - to_chat(usr, "You cannot check out people when dead!") + to_chat(usr, span_notice("You cannot check out people when dead!")) return . = ..() diff --git a/modular_splurt/code/modules/mob/living/carbon/carbon.dm b/modular_splurt/code/modules/mob/living/carbon/carbon.dm index a81da1e44b..aae89ee26f 100644 --- a/modular_splurt/code/modules/mob/living/carbon/carbon.dm +++ b/modular_splurt/code/modules/mob/living/carbon/carbon.dm @@ -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, "You are not able to reach the rope.") + 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("[src] manages to loosen up their rope!") - to_chat(src, "You successfully loosen up your rope.") + 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("[target_user] suddenly bursts out of [target_user.p_their()] clothes!", "You suddenly burst out of your clothes!") + 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) diff --git a/modular_splurt/code/modules/mob/living/carbon/human/inventory.dm b/modular_splurt/code/modules/mob/living/carbon/human/inventory.dm new file mode 100644 index 0000000000..ffc8a50b73 --- /dev/null +++ b/modular_splurt/code/modules/mob/living/carbon/human/inventory.dm @@ -0,0 +1,92 @@ +/mob/living/carbon/human/proc/smart_equip_suitstorage() // put held thing in suit storage or take the item from it + if(incapacitated()) + return + var/obj/item/thing = get_active_held_item() + var/obj/item/equipped_suitstorage = get_item_by_slot(ITEM_SLOT_SUITSTORE) + if(!equipped_suitstorage) // We also let you equip another storage like this + if(!thing) + to_chat(src, "You haven't anything on your suit!") + return + if(equip_to_slot_if_possible(thing, ITEM_SLOT_SUITSTORE)) + update_inv_hands() + return + if(!SEND_SIGNAL(equipped_suitstorage, COMSIG_CONTAINS_STORAGE)) // not a storage item + if(!thing) + equipped_suitstorage.attack_hand(src) + else + to_chat(src, "You can't fit anything in!") + return + if(thing) // put thing in suit storage + if(!SEND_SIGNAL(equipped_suitstorage, COMSIG_TRY_STORAGE_INSERT, thing, src)) + to_chat(src, "You can't fit anything in!") + return + if(!equipped_suitstorage.contents.len) // nothing to take out + to_chat(src, "There's nothing in your belt to take out!") + return + var/obj/item/stored = equipped_suitstorage.contents[equipped_suitstorage.contents.len] + if(!stored || stored.on_found(src)) + return + stored.attack_hand(src) // take out thing from suit storage + return + +/mob/living/carbon/human/proc/smart_equip_rpocket() // put held thing in right pocket or take the item from it + if(incapacitated()) + return + var/obj/item/thing = get_active_held_item() + var/obj/item/equipped_rpocket = get_item_by_slot(ITEM_SLOT_RPOCKET) + if(!equipped_rpocket) // We also let you equip another storage like this + if(!thing) + to_chat(src, "You haven't anything on your suit!") + return + if(equip_to_slot_if_possible(thing, ITEM_SLOT_RPOCKET)) + update_inv_hands() + return + if(!SEND_SIGNAL(equipped_rpocket, COMSIG_CONTAINS_STORAGE)) // not a storage item + if(!thing) + equipped_rpocket.attack_hand(src) + else + to_chat(src, "You can't fit anything in!") + return + if(thing) // put thing in suit storage + if(!SEND_SIGNAL(equipped_rpocket, COMSIG_TRY_STORAGE_INSERT, thing, src)) + to_chat(src, "You can't fit anything in!") + return + if(!equipped_rpocket.contents.len) // nothing to take out + to_chat(src, "There's nothing in your belt to take out!") + return + var/obj/item/stored = equipped_rpocket.contents[equipped_rpocket.contents.len] + if(!stored || stored.on_found(src)) + return + stored.attack_hand(src) // take out thing from right pocket + return + +/mob/living/carbon/human/proc/smart_equip_lpocket() // put held thing in left pocket or take the item from it + if(incapacitated()) + return + var/obj/item/thing = get_active_held_item() + var/obj/item/equipped_lpocket = get_item_by_slot(ITEM_SLOT_LPOCKET) + if(!equipped_lpocket) // We also let you equip another storage like this + if(!thing) + to_chat(src, "You haven't anything on your suit!") + return + if(equip_to_slot_if_possible(thing, ITEM_SLOT_LPOCKET)) + update_inv_hands() + return + if(!SEND_SIGNAL(equipped_lpocket, COMSIG_CONTAINS_STORAGE)) // not a storage item + if(!thing) + equipped_lpocket.attack_hand(src) + else + to_chat(src, "You can't fit anything in!") + return + if(thing) // put thing in + if(!SEND_SIGNAL(equipped_lpocket, COMSIG_TRY_STORAGE_INSERT, thing, src)) + to_chat(src, "You can't fit anything in!") + return + if(!equipped_lpocket.contents.len) // nothing to take out + to_chat(src, "There's nothing in your belt to take out!") + return + var/obj/item/stored = equipped_lpocket.contents[equipped_lpocket.contents.len] + if(!stored || stored.on_found(src)) + return + stored.attack_hand(src) // take out thing from left pocket + return diff --git a/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/deathclaw.dm b/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/deathclaw.dm index a4f1ff53d4..d2afb4f5af 100644 --- a/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/deathclaw.dm +++ b/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/deathclaw.dm @@ -53,13 +53,13 @@ if(!Proj) return if(prob(10)) - visible_message("\The [src] growls, enraged!") + 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("\The [Proj] bounces off \the [src]'s thick hide!") + 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("[src] charges!") + 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("[src] slams into [L]!", "[src] slams into you!") + 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) diff --git a/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/funclaw.dm b/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/funclaw.dm index 2ec84e7cd7..7c1738ae95 100644 --- a/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/funclaw.dm +++ b/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/funclaw.dm @@ -46,8 +46,8 @@ start_pulling(M, supress_message = TRUE) log_combat(src, M, "grabbed") - M.visible_message("[src] violently grabs [M]!", \ - "[src] violently grabs you!") + 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("\The [src] slaps \the [M] right on the ass!", \ - "\The [src] slaps \the [M] right on the ass!", null, COMBAT_MESSAGE_RANGE) + visible_message(span_danger("\The [src] slaps \the [M] right on the ass!"), \ + span_userdanger("\The [src] 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("\The [src] tears off \the [M]'s clothes!", \ - "\The [src] tears off \the [M]'s clothes!", null, COMBAT_MESSAGE_RANGE) + visible_message(span_danger("\The [src] tears off \the [M]'s clothes!"), \ + span_userdanger("\The [src] tears off \the [M]'s clothes!"), null, COMBAT_MESSAGE_RANGE) return TRUE return FALSE diff --git a/modular_splurt/code/modules/mob/living/carbon/human/species.dm b/modular_splurt/code/modules/mob/living/carbon/human/species.dm index 3ffad4c2b4..5fec507149 100644 --- a/modular_splurt/code/modules/mob/living/carbon/human/species.dm +++ b/modular_splurt/code/modules/mob/living/carbon/human/species.dm @@ -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, "You can't seem to force yourself up right now!") + to_chat(user, span_warning("You can't seem to force yourself up right now!")) return . = ..() diff --git a/modular_splurt/code/modules/mob/living/carbon/human/species_types/arachnid.dm b/modular_splurt/code/modules/mob/living/carbon/human/species_types/arachnid.dm index 3cc48b3236..e3553f13c8 100644 --- a/modular_splurt/code/modules/mob/living/carbon/human/species_types/arachnid.dm +++ b/modular_splurt/code/modules/mob/living/carbon/human/species_types/arachnid.dm @@ -13,23 +13,23 @@ if(H.stat == "DEAD") return if(web_ready == FALSE) - to_chat(H, "You need to wait a while to regenerate web fluid.") + 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, "There's no room to spin your web here!") + 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, "There's already a web here!") + 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, "You begin spinning some web...") if(!do_after(H, 10 SECONDS, 1, T)) - to_chat(H, "Your web spinning was interrupted!") + 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, "You're too hungry to spin web right now, eat something first!") + 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, "You need to wait awhile to regenerate web fluid.") + 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, "You pull out a strand from your spinneret, ready to wrap a target. (Press ALT+CLICK on the target to start wrapping.)") + 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, "You're too hungry to spin web right now, eat something first!") + 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, "You need to wait awhile to regenerate web fluid.") + 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, "[A] is bolted to the floor!") + to_chat(H, span_warning("[A] is bolted to the floor!")) return if(istype(A, /obj/structure/arachnid)) - to_chat(H, "No double wrapping.") + to_chat(H, span_warning("No double wrapping.")) return if(istype(A, /obj/effect)) - to_chat(H, "You cannot wrap this.") + to_chat(H, span_warning("You cannot wrap this.")) return if(isliving(A)) var/mob/living/L = A if(L.key) - to_chat(H, "You prepare to wrap [L] in a cocoon...") + 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, "[L] resists your attempts to wrap [L.p_them()]!") + to_chat(H, span_warning("[L] resists your attempts to wrap [L.p_them()]!")) return - H.visible_message("[H] starts to wrap [A] into a cocoon!","You start to wrap [A] into a cocoon.") + 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, "Your web spinning was interrupted!") + 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("[H] wraps [A] into a large cocoon!") + H.visible_message(span_danger("[H] wraps [A] into a large cocoon!")) return else A.forceMove(C) - H.visible_message("[H] wraps [A] into a cocoon!") + H.visible_message(span_danger("[H] wraps [A] into a cocoon!")) return diff --git a/modular_splurt/code/modules/mob/living/carbon/human/species_types/zombies2.dm b/modular_splurt/code/modules/mob/living/carbon/human/species_types/zombies2.dm index 9d1f04d453..53e887e98c 100644 --- a/modular_splurt/code/modules/mob/living/carbon/human/species_types/zombies2.dm +++ b/modular_splurt/code/modules/mob/living/carbon/human/species_types/zombies2.dm @@ -177,10 +177,10 @@ desc = "A rotting mass of twisted viscera." organ_flags = ORGAN_EXTERNAL - low_threshold_passed = "Something forgotten weakens within your chest." - high_threshold_passed = "A chill of death stalks you." - now_fixed = "It comforts you once more." - high_threshold_cleared = "The ghastly cold crawls back." + 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("[owner] suddenly convulses back to life!") + 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, "Your broken shell is stitching itself back together...") + 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, "You feel sick...") + 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("[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!", "* But it refused") + 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, "You are now a zombie! You claw and bite, turning your fellow crewmembers into friends that help spread the plague.") -// to_chat(owner, "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.") +// 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, "mors tua, vita mea.") + to_chat(H, span_cult("mors tua, vita mea.")) H.playsound_local(H, 'sound/effects/singlebeat.ogg', 100, 0) return diff --git a/modular_splurt/code/modules/mob/living/living.dm b/modular_splurt/code/modules/mob/living/living.dm index be2bb9949e..c2b04a0d84 100644 --- a/modular_splurt/code/modules/mob/living/living.dm +++ b/modular_splurt/code/modules/mob/living/living.dm @@ -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, "You cannot toggle your gender while unconcious!") + 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, "An admin has [!admin_frozen ? "un" : ""]frozen you.") + 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, "An admin has [!admin_sleeping ? "un": ""]slept you.") + 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)].") diff --git a/modular_splurt/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_splurt/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index 1e361c362a..ca571dbae6 100644 --- a/modular_splurt/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_splurt/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -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, "Your jaws are now [status ? "Combat" : "Pup'd"].") + 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, "Your jaws are now [status ? "Combat" : "Pup'd"].") + 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.", "You sniff the air for gas traces.") + 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, "Results:") + to_chat(user, span_info("Results:")) if(abs(pressure - ONE_ATMOSPHERE) < 10) - to_chat(user, "Pressure: [round(pressure,0.1)] kPa") + to_chat(user, span_info("Pressure: [round(pressure,0.1)] kPa")) else - to_chat(user, "Pressure: [round(pressure,0.1)] kPa") + 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, "Nitrogen: [round(n2_concentration*100, 0.01)] %") + to_chat(user, span_info("Nitrogen: [round(n2_concentration*100, 0.01)] %")) else - to_chat(user, "Nitrogen: [round(n2_concentration*100, 0.01)] %") + to_chat(user, span_alert("Nitrogen: [round(n2_concentration*100, 0.01)] %")) if(abs(o2_concentration - O2STANDARD) < 2) - to_chat(user, "Oxygen: [round(o2_concentration*100, 0.01)] %") + to_chat(user, span_info("Oxygen: [round(o2_concentration*100, 0.01)] %")) else - to_chat(user, "Oxygen: [round(o2_concentration*100, 0.01)] %") + to_chat(user, span_alert("Oxygen: [round(o2_concentration*100, 0.01)] %")) if(co2_concentration > 0.01) - to_chat(user, "CO2: [round(co2_concentration*100, 0.01)] %") + to_chat(user, span_alert("CO2: [round(co2_concentration*100, 0.01)] %")) else - to_chat(user, "CO2: [round(co2_concentration*100, 0.01)] %") + to_chat(user, span_info("CO2: [round(co2_concentration*100, 0.01)] %")) if(plasma_concentration > 0.005) - to_chat(user, "Plasma: [round(plasma_concentration*100, 0.01)] %") + to_chat(user, span_alert("Plasma: [round(plasma_concentration*100, 0.01)] %")) else - to_chat(user, "Plasma: [round(plasma_concentration*100, 0.01)] %") + 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, "[GLOB.gas_data.names[id]]: [round(gas_concentration*100, 0.01)] %") - to_chat(user, "Temperature: [round(environment.return_temperature()-T0C)] °C") + 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("[user] [pick(attack_verb)] \the [target.name] with their nose!") + 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, "Your tongue is now [status ? "Energized" : "Normal"].") + 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, "Your tongue is now [status ? "Energized" : "Normal"].") + 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, "You need to take that [target.name] off before cleaning it!") + 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].", "You begin to lick off \the [target.name]...") + 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, "You finish licking off \the [target.name].") + 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].", "You begin to nibble away at \the [target.name]...") + 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, "You finish off \the [target.name].") + 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.", "You begin cramming \the [target.name] down your throat...") + 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, "You finish off \the [target.name].") + 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!", "You begin chewing up \the [target.name]...") + 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("[R] chews up \the [target.name] and cleans off the debris!") - to_chat(R, "You finish off \the [target.name].") + 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...", "You begin to lick \the [target.name] clean...") + 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("\the [R] affectionally licks \the [L]'s face!", "You affectionally lick \the [L]'s face!") + 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("\the [R] affectionally licks \the [L]!", "You affectionally lick \the [L]!") + 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("[R] has shocked [L] with its tongue!", \ - "[R] has shocked you with its tongue!") + 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...", "You begin to lick \the [target.name] clean...") + 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, "You clean \the [target.name].") + 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...", "You begin to lick \the [target.name] clean...") + 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, "You clean \the [target.name].") + 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, "Your leg actuators are still recharging!") + 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,"It is unsafe to leap without gravity!") + 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,"Insufficent reserves for jump actuators!") + 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, "You start churning the sexual fluids from your [inserted_item.name] into energy.") + 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, "You stop processing the fluids from the [inserted_item.name].") + to_chat(user, span_notice("You stop processing the fluids from the [inserted_item.name].")) return /obj/item/milking_machine/pleasuremaw/process() diff --git a/modular_splurt/code/modules/mob/living/simple_animal/friendly/mouse.dm b/modular_splurt/code/modules/mob/living/simple_animal/friendly/mouse.dm index 509129a1ad..27129ba0db 100644 --- a/modular_splurt/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/modular_splurt/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -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("The boommouse violently explodes!") + 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("[user] burns the boommouse with [user.p_their()] [W.name]!", "That was stupid of you.") + 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) diff --git a/modular_splurt/code/modules/mob/mob.dm b/modular_splurt/code/modules/mob/mob.dm index c9a70933d3..2621165e97 100644 --- a/modular_splurt/code/modules/mob/mob.dm +++ b/modular_splurt/code/modules/mob/mob.dm @@ -40,4 +40,4 @@ . = examinate(A) if (.) return - to_chat(A, "[src] seems to be checking you out.") + to_chat(A, span_notice("[src] seems to be checking you out.")) diff --git a/modular_splurt/code/modules/mob/mob_helpers.dm b/modular_splurt/code/modules/mob/mob_helpers.dm index 111f9c35b7..f486b3a24c 100644 --- a/modular_splurt/code/modules/mob/mob_helpers.dm +++ b/modular_splurt/code/modules/mob/mob_helpers.dm @@ -16,7 +16,7 @@ // Check for Distant (no touch head!) if(HAS_TRAIT(src, TRAIT_DISTANT)) - . += "You sense [t_He] might be disturbed by physical affection.\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)) - . += "You sense [t_He] appreciates receiving physical affection more than normal.\n" + . += span_info("You sense [t_He] appreciates receiving physical affection more than normal.") diff --git a/modular_splurt/code/modules/mob/say_vr.dm b/modular_splurt/code/modules/mob/say_vr.dm index cd49dd200c..56be623e0f 100644 --- a/modular_splurt/code/modules/mob/say_vr.dm +++ b/modular_splurt/code/modules/mob/say_vr.dm @@ -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, "Invalid emote.") + to_chat(user, span_danger("Invalid emote.")) return TRUE return FALSE @@ -28,7 +28,7 @@ return FALSE user.log_message(message, LOG_EMOTE) - message = "([user]) [message]" + message = span_name("([user])
[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, "Speech is currently admin-disabled.") + to_chat(usr, span_danger("Speech is currently admin-disabled.")) return message = trim(html_encode(message), MAX_MESSAGE_LEN) emote("narrate", message=message) diff --git a/modular_splurt/code/modules/mob/splurt_emotes.dm b/modular_splurt/code/modules/mob/splurt_emotes.dm index e7984093f1..e6af828c5f 100644 --- a/modular_splurt/code/modules/mob/splurt_emotes.dm +++ b/modular_splurt/code/modules/mob/splurt_emotes.dm @@ -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, "You try your hardest, but no shart comes out.") + 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.", @@ -911,3 +911,21 @@ key = "facehoof" // For horse enthusiasts key_third_person = "facehoofs" metacarpus_type = "hoof" + +/datum/emote/living/poyo + key = "poyo" + key_third_person = "poyos" + message = "%SAYS, \"Poyo!\"" + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/poyo/run_emote(mob/user, params, type_override, intentional) + var/datum/dna/D = user.has_dna() + var/say_mod = (D ? D.species.say_mod : "says") + message = replacetextEx(message, "%SAYS", say_mod) + . = ..() + if(!.) + return + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 1 SECONDS + playsound(user, 'modular_splurt/sound/voice/barks/poyo.ogg', 50, 1, -1) diff --git a/modular_splurt/code/modules/paperwork/pen.dm b/modular_splurt/code/modules/paperwork/pen.dm index e9e4d7c435..9176c4503c 100644 --- a/modular_splurt/code/modules/paperwork/pen.dm +++ b/modular_splurt/code/modules/paperwork/pen.dm @@ -12,7 +12,7 @@ if(!iscarbon(T)) //not carbon. return if(!T.is_chest_exposed()) - to_chat(user, "You cannot write on someone with their clothes on.") + 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("[user] begins to write on [T]'s [BP:name].") + src.visible_message(span_notice("[user] begins to write on [T]'s [BP:name].")) else - to_chat(user, "You begin to write on your [BP:name].") + 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, "There isnt enough space to write that on [T]'s [BP:name].") + to_chat(user, span_notice("There isnt enough space to write that on [T]'s [BP:name].")) return if(!(user==T)) - to_chat(user, "You write on [T]'s [BP:name].") + to_chat(user, span_notice("You write on [T]'s [BP:name].")) else - to_chat(user, "You write on your [BP:name].") + to_chat(user, span_notice("You write on your [BP:name].")) else . = ..() diff --git a/modular_splurt/code/modules/projectiles/guns/ballistic/automatic.dm b/modular_splurt/code/modules/projectiles/guns/ballistic/automatic.dm index 661f589d78..4ddd1b861e 100644 --- a/modular_splurt/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/modular_splurt/code/modules/projectiles/guns/ballistic/automatic.dm @@ -35,11 +35,11 @@ /obj/item/gun/ballistic/automatic/m2a1/examine(mob/user) . = ..() if(cover_open && magazine) - . += "It seems like you could use an empty hand to remove the magazine." + . += span_notice("It seems like you could use an empty hand to remove the magazine.") /obj/item/gun/ballistic/automatic/m2a1/attack_self(mob/user) cover_open = !cover_open - to_chat(user, "You [cover_open ? "open" : "close"] [src]'s cover.") + 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, "[src]'s cover is open! Close it before firing!") + 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, "You remove the magazine from [src].") + 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, "[src]'s cover is closed! You can't insert a new mag.") + 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( - "[magazine] flies out and clatters on the floor!", + span_warning("[magazine] flies out and clatters on the floor!"), to_chat("[magazine] flies out and clatters on the floor!") ) if(auto_eject_sound) diff --git a/modular_splurt/code/modules/projectiles/guns/ballistic/shotgun.dm b/modular_splurt/code/modules/projectiles/guns/ballistic/shotgun.dm index fe51069541..480051c15a 100644 --- a/modular_splurt/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/modular_splurt/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -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, "You're too exhausted for that.")//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)) diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index ca488e2741..a0e7dfbe58 100644 --- a/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -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("[M] clutches at [M.p_their()] chest as if [M.p_their()] heart stopped!") // 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, "Your tongue feels... weally fwuffy!!") + to_chat(M, span_big_warning("Your tongue feels... weally fwuffy!!")) diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 2eae220ba9..f483f1ec83 100644 --- a/modular_splurt/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/modular_splurt/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -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, "Your need for sex is overpowering!") + 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, "You feel like you can cope!") + 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, "What the fuck.") + 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, "I can't stand it anymore!") + to_chat(H, span_warning("I can't stand it anymore!")) ..() /datum/reagent/drug/copium/reaction_obj(obj/O, volume) diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/enlargement.dm index e0bca79db0..863f93f7a8 100644 --- a/modular_splurt/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_splurt/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -68,7 +68,7 @@ B.color = SKINTONE2HEX(H.skin_tone) B.size = 1 B.size_cached = B.size - to_chat(M, "You feel your midsection get warmer... bubbling softly as it seems to start distending") + to_chat(M, span_warning("You feel your midsection get warmer... bubbling softly as it seems to start distending")) M.reagents.remove_reagent(type, 5) //If they have, increase size. if(B.size_cached < BELLY_SIZE_MAX) //just in case diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm index 1657f6f48b..e327fc1409 100644 --- a/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -59,7 +59,7 @@ return // Character has a seisure - M.visible_message("[M] starts having a seizure!", "You have a seizure!") + M.visible_message(span_danger("[M] starts having a seizure!"), span_userdanger("You have a seizure!")) M.Unconscious(120) to_chat(M, "[pick("The moon is close. It will be a long hunt tonight.", "Ludwig, why have you forsaken me?", \ "The night is near its end...", "Fear the blood...")]") diff --git a/modular_splurt/code/modules/reagents/reagent_containers/bottle.dm b/modular_splurt/code/modules/reagents/reagent_containers/bottle.dm index bf363ef31a..0aab11e5ec 100644 --- a/modular_splurt/code/modules/reagents/reagent_containers/bottle.dm +++ b/modular_splurt/code/modules/reagents/reagent_containers/bottle.dm @@ -8,4 +8,6 @@ name = "\improper Plushmium Bottle" desc = "A small bottle of Plushmium. Seems almost fluffy, if not for it being a liquid." icon_state = "bottle20" - list_reagents = list(/datum/reagent/fermi/plushmium = 30) + list_reagents = list(/datum/reagent/fermi/plushmium = 5) + possible_transfer_amounts = list(5) + volume = 5 diff --git a/modular_splurt/code/modules/reagents/reagent_containers/spray.dm b/modular_splurt/code/modules/reagents/reagent_containers/spray.dm index df8895c430..01d0dbf5fc 100644 --- a/modular_splurt/code/modules/reagents/reagent_containers/spray.dm +++ b/modular_splurt/code/modules/reagents/reagent_containers/spray.dm @@ -1,2 +1,25 @@ /obj/item/reagent_containers/spray/chemsprayer/sleeper list_reagents = list(/datum/reagent/toxin/sodium_thiopental = 100, /datum/reagent/consumable/condensedcapsaicin = 100, /datum/reagent/toxin/chloralhydrate = 100) + +/obj/item/reagent_containers/spray/plushmium + name = "\improper Love to Life spray bottle" + desc = "A toy spray bottle marked with the Donk Co. Stuffing For Spessmen branding. Must be applied directly to a plush, and only contains enough for one." + icon_state = "cleaner_drying" + // Single use item! + volume = 5 + spray_range = 1 + can_fill_from_container = FALSE + amount_per_transfer_from_this = 5 + possible_transfer_amounts = list(5) + list_reagents = list(/datum/reagent/fermi/plushmium = 5) + +// Custom interaction to prevent wasting the item +/obj/item/reagent_containers/spray/plushmium/afterattack(atom/target, mob/user) + // Check for plush toy + if(!istype(target, /obj/item/toy/plush)) + // Alert user and return + to_chat(user, span_warning("You don't want to waste the solution on a non-plushie.")) + return + + // Return normally + . = ..() diff --git a/modular_splurt/code/modules/research/designs/bluespace_designs.dm b/modular_splurt/code/modules/research/designs/bluespace_designs.dm new file mode 100644 index 0000000000..e44e566a18 --- /dev/null +++ b/modular_splurt/code/modules/research/designs/bluespace_designs.dm @@ -0,0 +1,9 @@ +/datum/design/wallet_holding + name = "Wallet of Holding" + desc = "A wallet that opens into a tiny bluespace pocket." + id = "wallet_holding" + build_type = PROTOLATHE + materials = list(/datum/material/gold = 300, /datum/material/diamond = 100, /datum/material/bluespace = 200) + build_path = /obj/item/storage/wallet/bluespace + category = list("Bluespace Designs") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE diff --git a/modular_splurt/code/modules/research/techweb/nodes/bluespace_nodes.dm b/modular_splurt/code/modules/research/techweb/nodes/bluespace_nodes.dm index f623c07465..e31c788453 100644 --- a/modular_splurt/code/modules/research/techweb/nodes/bluespace_nodes.dm +++ b/modular_splurt/code/modules/research/techweb/nodes/bluespace_nodes.dm @@ -6,3 +6,16 @@ prereq_ids = list("adv_power", "adv_bluespace","bluespace_power") design_ids = list("bluespace_cell_reactor") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) + +// Bags of holding node +/datum/techweb_node/bluespace_holding/New() + // Define extra designs + var/list/added_designs = list( + "wallet_holding" + ) + + // Add designs to the list + LAZYADD(design_ids, added_designs) + + // Return + . = ..() diff --git a/modular_splurt/code/modules/ruins/objects_and_mobs/ash_walker_den.dm b/modular_splurt/code/modules/ruins/objects_and_mobs/ash_walker_den.dm index 8db7b84798..4222037096 100644 --- a/modular_splurt/code/modules/ruins/objects_and_mobs/ash_walker_den.dm +++ b/modular_splurt/code/modules/ruins/objects_and_mobs/ash_walker_den.dm @@ -8,7 +8,7 @@ if(meat_counter < ASH_WALKER_SPAWN_THRESHOLD) return new spawned_obj(get_step(loc, pick(GLOB.alldirs)), ashies) - visible_message("One of the eggs swells to an unnatural size and tumbles free. It's ready to hatch!") + visible_message(span_danger("One of the eggs swells to an unnatural size and tumbles free. It's ready to hatch!")) meat_counter -= ASH_WALKER_SPAWN_THRESHOLD /obj/structure/lavaland/ash_walker/western diff --git a/modular_splurt/code/modules/smithing/anvil.dm b/modular_splurt/code/modules/smithing/anvil.dm index 60d323f7b8..497fb9db51 100644 --- a/modular_splurt/code/modules/smithing/anvil.dm +++ b/modular_splurt/code/modules/smithing/anvil.dm @@ -11,4 +11,4 @@ if(isdwarf(user)) return ..() else - to_chat(user, "Ugh! This anvil smells of mushroom beer, and the design is weird. It is inconvenient to use it!") + to_chat(user, span_warning("Ugh! This anvil smells of mushroom beer, and the design is weird. It is inconvenient to use it!")) diff --git a/modular_splurt/code/modules/toys/cards.dm b/modular_splurt/code/modules/toys/cards.dm index 83796639e5..2a0d13b780 100644 --- a/modular_splurt/code/modules/toys/cards.dm +++ b/modular_splurt/code/modules/toys/cards.dm @@ -4,7 +4,7 @@ /obj/item/toy/cards/deck/examine() . = ..() - . += "Alt-click [src] to remove joker cards." + . += span_notice("Alt-click [src] to remove joker cards.") /obj/item/toy/cards/deck/populate_deck() . = ..() @@ -16,9 +16,9 @@ return var/jokermono = cards.Remove("Monochrome Joker") var/jokercolor = cards.Remove("Colorful Joker") - user.visible_message("[user] searches through the deck to remove joker cards.", "You search through the deck to remove joker cards.") + user.visible_message("[user] searches through the deck to remove joker cards.", span_notice("You search through the deck to remove joker cards.")) if(!(jokermono || jokercolor)) - to_chat(user, "There are no joker cards to remove!") + to_chat(user, span_warning("There are no joker cards to remove!")) return if(jokermono && jokercolor) var/obj/item/toy/cards/singlecard/H1 = new/obj/item/toy/cards/singlecard(user.loc) diff --git a/modular_splurt/code/modules/vehicles/mecha/mecha_construction_paths.dm b/modular_splurt/code/modules/vehicles/mecha/mecha_construction_paths.dm index 62fda40862..4892cc940a 100644 --- a/modular_splurt/code/modules/vehicles/mecha/mecha_construction_paths.dm +++ b/modular_splurt/code/modules/vehicles/mecha/mecha_construction_paths.dm @@ -33,100 +33,100 @@ //TODO: better messages. switch(index) if(1) - user.visible_message("[user] connects [parent] hydraulic systems.", "You connect [parent] hydraulic systems.") + user.visible_message(span_notice("[user] connects [parent] hydraulic systems."), span_notice("You connect [parent] hydraulic systems.")) if(2) if(diff==FORWARD) - user.visible_message("[user] activates [parent] hydraulic systems.", "You activate [parent] hydraulic systems.") + user.visible_message(span_notice("[user] activates [parent] hydraulic systems."), span_notice("You activate [parent] hydraulic systems.")) else - user.visible_message("[user] disconnects [parent] hydraulic systems.", "You disconnect [parent] hydraulic systems.") + user.visible_message(span_notice("[user] disconnects [parent] hydraulic systems."), span_notice("You disconnect [parent] hydraulic systems.")) if(3) if(diff==FORWARD) - user.visible_message("[user] adds the wiring to [parent].", "You add the wiring to [parent].") + user.visible_message(span_notice("[user] adds the wiring to [parent]."), span_notice("You add the wiring to [parent].")) else - user.visible_message("[user] deactivates [parent] hydraulic systems.", "You deactivate [parent] hydraulic systems.") + user.visible_message(span_notice("[user] deactivates [parent] hydraulic systems."), span_notice("You deactivate [parent] hydraulic systems.")) if(4) if(diff==FORWARD) - user.visible_message("[user] adjusts the wiring of [parent].", "You adjust the wiring of [parent].") + user.visible_message(span_notice("[user] adjusts the wiring of [parent]."), span_notice("You adjust the wiring of [parent].")) else - user.visible_message("[user] removes the wiring from [parent].", "You remove the wiring from [parent].") + user.visible_message(span_notice("[user] removes the wiring from [parent]."), span_notice("You remove the wiring from [parent].")) if(5) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message(span_notice("[user] installs [I] into [parent]."), span_notice("You install [I] into [parent].")) else - user.visible_message("[user] disconnects the wiring of [parent].", "You disconnect the wiring of [parent].") + user.visible_message(span_notice("[user] disconnects the wiring of [parent]."), span_notice("You disconnect the wiring of [parent].")) if(6) if(diff==FORWARD) - user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + user.visible_message(span_notice("[user] secures the mainboard."), span_notice("You secure the mainboard.")) else - user.visible_message("[user] removes the central control module from [parent].", "You remove the central computer mainboard from [parent].") + user.visible_message(span_notice("[user] removes the central control module from [parent]."), span_notice("You remove the central computer mainboard from [parent].")) if(7) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message(span_notice("[user] installs [I] into [parent]."), span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + user.visible_message(span_notice("[user] unfastens the mainboard."), span_notice("You unfasten the mainboard.")) if(8) if(diff==FORWARD) - user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + user.visible_message(span_notice("[user] secures the peripherals control module."), span_notice("You secure the peripherals control module.")) else - user.visible_message("[user] removes the peripherals control module from [parent].", "You remove the peripherals control module from [parent].") + user.visible_message(span_notice("[user] removes the peripherals control module from [parent]."), span_notice("You remove the peripherals control module from [parent].")) if(9) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message(span_notice("[user] installs [I] into [parent]."), span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + user.visible_message(span_notice("[user] unfastens the peripherals control module."), span_notice("You unfasten the peripherals control module.")) if(10) if(diff==FORWARD) - user.visible_message("[user] secures the scanner module.", "You secure the scanner module.") + user.visible_message(span_notice("[user] secures the scanner module."), span_notice("You secure the scanner module.")) else - user.visible_message("[user] removes the scanner module from [parent].", "You remove the scanner module from [parent].") + user.visible_message(span_notice("[user] removes the scanner module from [parent]."), span_notice("You remove the scanner module from [parent].")) if(11) if(diff==FORWARD) - user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].") + user.visible_message(span_notice("[user] installs [I] to [parent]."), span_notice("You install [I] to [parent].")) else - user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.") + user.visible_message(span_notice("[user] unfastens the scanner module."), span_notice("You unfasten the scanner module.")) if(12) if(diff==FORWARD) - user.visible_message("[user] secures the capacitor.", "You secure the capacitor.") + user.visible_message(span_notice("[user] secures the capacitor."), span_notice("You secure the capacitor.")) else - user.visible_message("[user] removes the capacitor from [parent].", "You remove the capacitor from [parent].") + user.visible_message(span_notice("[user] removes the capacitor from [parent]."), span_notice("You remove the capacitor from [parent].")) if(13) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message(span_notice("[user] installs [I] into [parent]."), span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the capacitor.", "You unfasten the capacitor.") + user.visible_message(span_notice("[user] unfastens the capacitor."), span_notice("You unfasten the capacitor.")) if(14) if(diff==FORWARD) - user.visible_message("[user] secures the power cell.", "You secure the power cell.") + user.visible_message(span_notice("[user] secures the power cell."), span_notice("You secure the power cell.")) else - user.visible_message("[user] pries the power cell from [parent].", "You pry the power cell from [parent].") + user.visible_message(span_notice("[user] pries the power cell from [parent]."), span_notice("You pry the power cell from [parent].")) if(15) if(diff==FORWARD) - user.visible_message("[user] installs the internal armor layer to [parent].", "You install the internal armor layer to [parent].") + user.visible_message(span_notice("[user] installs the internal armor layer to [parent]."), span_notice("You install the internal armor layer to [parent].")) else - user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.") + user.visible_message(span_notice("[user] unfastens the power cell."), span_notice("You unfasten the power cell.")) if(16) if(diff==FORWARD) - user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.") + user.visible_message(span_notice("[user] secures the internal armor layer."), span_notice("You secure the internal armor layer.")) else - user.visible_message("[user] pries internal armor layer from [parent].", "You pry internal armor layer from [parent].") + user.visible_message(span_notice("[user] pries internal armor layer from [parent]."), span_notice("You pry internal armor layer from [parent].")) if(17) if(diff==FORWARD) - user.visible_message("[user] welds the internal armor layer to [parent].", "You weld the internal armor layer to [parent].") + user.visible_message(span_notice("[user] welds the internal armor layer to [parent]."), span_notice("You weld the internal armor layer to [parent].")) else - user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.") + user.visible_message(span_notice("[user] unfastens the internal armor layer."), span_notice("You unfasten the internal armor layer.")) if(18) if(diff==FORWARD) - user.visible_message("[user] installs the external armor layer to [parent].", "You install the external reinforced armor layer to [parent].") + user.visible_message(span_notice("[user] installs the external armor layer to [parent]."), span_notice("You install the external reinforced armor layer to [parent].")) else - user.visible_message("[user] cuts the internal armor layer from [parent].", "You cut the internal armor layer from [parent].") + user.visible_message(span_notice("[user] cuts the internal armor layer from [parent]."), span_notice("You cut the internal armor layer from [parent].")) if(19) if(diff==FORWARD) - user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.") + user.visible_message(span_notice("[user] secures the external armor layer."), span_notice("You secure the external reinforced armor layer.")) else - user.visible_message("[user] pries the external armor layer from [parent].", "You pry the external armor layer from [parent].") + user.visible_message(span_notice("[user] pries the external armor layer from [parent]."), span_notice("You pry the external armor layer from [parent].")) if(20) if(diff==FORWARD) - user.visible_message("[user] welds the external armor layer to [parent].", "You weld the external armor layer to [parent].") + user.visible_message(span_notice("[user] welds the external armor layer to [parent]."), span_notice("You weld the external armor layer to [parent].")) else - user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.") + user.visible_message(span_notice("[user] unfastens the external armor layer."), span_notice("You unfasten the external armor layer.")) return TRUE diff --git a/modular_splurt/code/modules/vending/kinkmate.dm b/modular_splurt/code/modules/vending/kinkmate.dm index 69c67b15cc..c8a626b0c5 100644 --- a/modular_splurt/code/modules/vending/kinkmate.dm +++ b/modular_splurt/code/modules/vending/kinkmate.dm @@ -40,7 +40,8 @@ /obj/item/mesmetron = 3, /obj/item/dildo/flared/huge = 3, /obj/item/clothing/neck/petcollar/locked/holo = 2, - /obj/item/storage/box/aphrodisiac_pump/plus = 3 + /obj/item/storage/box/aphrodisiac_pump/plus = 3, + /obj/item/storage/box/implant_disrobe = 3 ) var/list/extra_premium = list( /obj/item/clothing/mask/muzzle/ballgag = 3 diff --git a/modular_splurt/icons/mob/actions/misc_actions.dmi b/modular_splurt/icons/mob/actions/misc_actions.dmi index 17b53a319a..dc254301e7 100644 Binary files a/modular_splurt/icons/mob/actions/misc_actions.dmi and b/modular_splurt/icons/mob/actions/misc_actions.dmi differ diff --git a/modular_splurt/icons/obj/plushes.dmi b/modular_splurt/icons/obj/plushes.dmi index fce9b88804..a8ce5f21fd 100644 Binary files a/modular_splurt/icons/obj/plushes.dmi and b/modular_splurt/icons/obj/plushes.dmi differ diff --git a/modular_splurt/icons/obj/storage.dmi b/modular_splurt/icons/obj/storage.dmi index 69e728cc22..6ff028b18c 100644 Binary files a/modular_splurt/icons/obj/storage.dmi and b/modular_splurt/icons/obj/storage.dmi differ diff --git a/modular_splurt/sound/misc/dog_toy.ogg b/modular_splurt/sound/misc/dog_toy.ogg new file mode 100644 index 0000000000..de295dc148 Binary files /dev/null and b/modular_splurt/sound/misc/dog_toy.ogg differ diff --git a/tgstation.dme b/tgstation.dme index 9fd1e9e362..0e0154c6d6 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -240,6 +240,7 @@ #include "code\__SANDCODE\DEFINES\runechat_defines.dm" #include "code\__SANDCODE\DEFINES\signals.dm" #include "code\__SANDCODE\DEFINES\sizecode.dm" +#include "code\__SANDCODE\DEFINES\spans.dm" #include "code\__SANDCODE\DEFINES\status_effects.dm" #include "code\__SANDCODE\DEFINES\strippable.dm" #include "code\__SANDCODE\DEFINES\subsystems.dm" @@ -4058,6 +4059,7 @@ #include "modular_sand\code\modules\arousal\arousal.dm" #include "modular_sand\code\modules\arousal\creampie.dm" #include "modular_sand\code\modules\arousal\genital_sprite_accessories.dm" +#include "modular_sand\code\modules\arousal\genitals.dm" #include "modular_sand\code\modules\arousal\organs\breasts.dm" #include "modular_sand\code\modules\arousal\organs\womb.dm" #include "modular_sand\code\modules\atmospherics\machinery\pipes\bluespace.dm" @@ -4096,6 +4098,7 @@ #include "modular_sand\code\modules\clothing\spacesuits\chronosuit.dm" #include "modular_sand\code\modules\clothing\spacesuits\hardsuit.dm" #include "modular_sand\code\modules\clothing\suits\miscellaneous.dm" +#include "modular_sand\code\modules\clothing\under\_under.dm" #include "modular_sand\code\modules\clothing\under\color.dm" #include "modular_sand\code\modules\clothing\under\costumes.dm" #include "modular_sand\code\modules\clothing\under\misc.dm" @@ -4103,15 +4106,6 @@ #include "modular_sand\code\modules\clothing\under\suits.dm" #include "modular_sand\code\modules\clothing\under\syndicate.dm" #include "modular_sand\code\modules\clothing\under\uniform.dm" -#include "modular_sand\code\modules\clothing\under\jobs\cargo.dm" -#include "modular_sand\code\modules\clothing\under\jobs\civilian.dm" -#include "modular_sand\code\modules\clothing\under\jobs\command.dm" -#include "modular_sand\code\modules\clothing\under\jobs\curator.dm" -#include "modular_sand\code\modules\clothing\under\jobs\engineering.dm" -#include "modular_sand\code\modules\clothing\under\jobs\medical.dm" -#include "modular_sand\code\modules\clothing\under\jobs\research.dm" -#include "modular_sand\code\modules\clothing\under\jobs\security.dm" -#include "modular_sand\code\modules\clothing\under\jobs\theater.dm" #include "modular_sand\code\modules\clothing\underwear\_underwear.dm" #include "modular_sand\code\modules\clothing\underwear\boxers.dm" #include "modular_sand\code\modules\clothing\underwear\shirts.dm" @@ -4343,6 +4337,7 @@ #include "modular_splurt\code\game\say.dm" #include "modular_splurt\code\game\area\areas\centcom.dm" #include "modular_splurt\code\game\area\areas\commons.dm" +#include "modular_splurt\code\game\area\areas\holodeck.dm" #include "modular_splurt\code\game\area\areas\layenia.dm" #include "modular_splurt\code\game\area\areas\maintenance.dm" #include "modular_splurt\code\game\area\areas\shuttles.dm" @@ -4385,9 +4380,11 @@ #include "modular_splurt\code\game\objects\items\circuitboards\computer_circuitboards.dm" #include "modular_splurt\code\game\objects\items\circuitboards\machine_circuitboards.dm" #include "modular_splurt\code\game\objects\items\circuitboards\miner_circuitboards.dm" +#include "modular_splurt\code\game\objects\items\devices\PDA\radio.dm" #include "modular_splurt\code\game\objects\items\devices\radio\electropack.dm" #include "modular_splurt\code\game\objects\items\devices\radio\headset.dm" #include "modular_splurt\code\game\objects\items\implants\implant_aphropumps.dm" +#include "modular_splurt\code\game\objects\items\implants\implant_disrobe.dm" #include "modular_splurt\code\game\objects\items\implants\implant_gfluid.dm" #include "modular_splurt\code\game\objects\items\implants\implant_hide_backpack.dm" #include "modular_splurt\code\game\objects\items\implants\implant_slave.dm" @@ -4414,6 +4411,7 @@ #include "modular_splurt\code\game\objects\items\storage\boxes.dm" #include "modular_splurt\code\game\objects\items\storage\firstaid.dm" #include "modular_splurt\code\game\objects\items\storage\secure.dm" +#include "modular_splurt\code\game\objects\items\storage\wallets.dm" #include "modular_splurt\code\game\objects\items\weaponry\armyknife.dm" #include "modular_splurt\code\game\objects\items\weaponry\melee.dm" #include "modular_splurt\code\game\objects\structures\barricades.dm" @@ -4602,6 +4600,7 @@ #include "modular_splurt\code\modules\food_and_drinks\recipes\tablecraft\recipes_burger.dm" #include "modular_splurt\code\modules\food_and_drinks\recipes\tablecraft\recipes_donut.dm" #include "modular_splurt\code\modules\holiday\holidays.dm" +#include "modular_splurt\code\modules\holodeck\holo_effect.dm" #include "modular_splurt\code\modules\hydroponics\grown\towercap.dm" #include "modular_splurt\code\modules\jobs\job_types\_job_alt_titles.dm" #include "modular_splurt\code\modules\jobs\job_types\atmospheric_technician.dm" @@ -4623,6 +4622,7 @@ #include "modular_splurt\code\modules\jobs\job_types\security_officer.dm" #include "modular_splurt\code\modules\jobs\job_types\service.dm" #include "modular_splurt\code\modules\jobs\job_types\station_engineer.dm" +#include "modular_splurt\code\modules\keybindings\keybind\human.dm" #include "modular_splurt\code\modules\keybindings\keybind\movement.dm" #include "modular_splurt\code\modules\language\xenocommon.dm" #include "modular_splurt\code\modules\mapping\mapping_helpers\baseturf.dm" @@ -4662,6 +4662,7 @@ #include "modular_splurt\code\modules\mob\living\carbon\carbon.dm" #include "modular_splurt\code\modules\mob\living\carbon\human\human.dm" #include "modular_splurt\code\modules\mob\living\carbon\human\human_defines.dm" +#include "modular_splurt\code\modules\mob\living\carbon\human\inventory.dm" #include "modular_splurt\code\modules\mob\living\carbon\human\physiology.dm" #include "modular_splurt\code\modules\mob\living\carbon\human\species.dm" #include "modular_splurt\code\modules\mob\living\carbon\human\update_icons.dm" @@ -4731,6 +4732,7 @@ #include "modular_splurt\code\modules\research\designs\AI_module_designs.dm" #include "modular_splurt\code\modules\research\designs\autoylathe_designs.dm" #include "modular_splurt\code\modules\research\designs\biogenerator_designs.dm" +#include "modular_splurt\code\modules\research\designs\bluespace_designs.dm" #include "modular_splurt\code\modules\research\designs\limbgrower_designs.dm" #include "modular_splurt\code\modules\research\designs\mecha_designs.dm" #include "modular_splurt\code\modules\research\designs\mechfabricator_designs.dm" diff --git a/tgui/packages/tgui/interfaces/MobInteraction.tsx b/tgui/packages/tgui/interfaces/MobInteraction.tsx index a1db0d6efd..3aba47c5fc 100644 --- a/tgui/packages/tgui/interfaces/MobInteraction.tsx +++ b/tgui/packages/tgui/interfaces/MobInteraction.tsx @@ -36,6 +36,7 @@ type GenitalData = { possible_choices: string[], can_arouse: boolean, arousal_state: boolean, + always_accessible: boolean, } type GenitalManagerInfo = { @@ -283,12 +284,12 @@ const GenitalTab = (props, context) => { Actions