[MIRROR] Mime care package (#12773)

Co-authored-by: Guti <32563288+TheCaramelion@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2026-05-21 11:30:47 -04:00
committed by GitHub
co-authored by Guti Cameron Lennox
parent fef241645b
commit 1128c0cd18
30 changed files with 304 additions and 4 deletions
@@ -0,0 +1,31 @@
/datum/action/innate/vow_of_silence
name = "Break Vow"
desc = "Break your vow of silence. Permanently."
button_icon = 'icons/inventory/face/item.dmi'
button_icon_state = "mime"
/datum/action/innate/vow_of_silence/Grant(mob/grant_to)
. = ..()
ADD_TRAIT(grant_to, TRAIT_MIMING, "[type]")
/datum/action/innate/vow_of_silence/Remove(mob/remove_from)
. = ..()
REMOVE_TRAIT(remove_from, TRAIT_MIMING, "[type]")
/datum/action/innate/vow_of_silence/Activate()
if(tgui_alert(target, "Are you sure? There's no going back.", "Break Vow", list("I'm Sure", "Abort")) != "I'm Sure")
return
break_silence()
/datum/action/innate/vow_of_silence/proc/break_silence()
to_chat(target, span_notice("You break your vow of silence."))
REMOVE_TRAIT(target, TRAIT_MIMING, "[type]")
var/datum/job/mime/mime_job = SSjob.get_job(JOB_MIME)
mime_job.total_positions += 1
remove_mimery(target)
qdel(src)
/datum/action/innate/vow_of_silence/proc/remove_mimery(mob/living/user)
for(var/datum/spell/spell in user.mind.learned_spells)
if(spell.school == "mime")
user.remove_spell(spell)
+5 -1
View File
@@ -49,9 +49,13 @@
shoes = /obj/item/clothing/shoes/mime
head = /obj/item/clothing/head/soft/mime
mask = /obj/item/clothing/mask/gas/mime
backpack_contents = list(/obj/item/pen/crayon/mime = 1)
backpack_contents = list(
/obj/item/reagent_containers/food/drinks/bottle/bottleofnothing = 1,
/obj/item/stamp/mime = 1, //CHOMPEdit - Enable Mimery book
/obj/item/spellbook/oneuse/mime/mimery = 1) //Disabled on Virgo - No magic //ChompEdit - Enable Mimery book
id_type = /obj/item/card/id/civilian/mime
pda_type = /obj/item/pda/mime
l_hand = /obj/item/storage/backpack/mime
/datum/decl/hierarchy/outfit/job/mime/post_equip(mob/living/carbon/human/H)
..()
+4 -2
View File
@@ -275,7 +275,7 @@
)
mail_color = COMMS_COLOR_SERVICE
/datum/alt_title/clown
/datum/job/clown
mail_goodies = list(
/obj/fruitspawner/banana = 200,
/obj/item/pen/crayon/rainbow = 200,
@@ -286,13 +286,15 @@
/obj/item/reagent_containers/food/snacks/pie = 100
)
/datum/alt_title/mime
/datum/job/mime
mail_goodies = list(
/obj/item/reagent_containers/food/drinks/bottle/wine = 250,
/obj/item/reagent_containers/glass/bottle/nothing = 250,
/obj/item/reagent_containers/food/snacks/baguette = 200,
/obj/item/pen/crayon/mime = 200
)
mail_color = COLOR_WHITE
/datum/job/entrepreneur // Same for these guys! What could they get?
mail_goodies = list(
/obj/item/entrepreneur/crystal_ball = 40,
+6
View File
@@ -149,6 +149,12 @@
outfit_type = /datum/decl/hierarchy/outfit/job/mime
pto_type = PTO_CIVILIAN
/datum/job/mime/equip(mob/living/carbon/human/H, alt_title)
. = ..()
if(H.mind)
var/datum/action/innate/vow_of_silence/vow = new(H)
vow.Grant(H)
/datum/alt_title/poseur
title = JOB_ALT_PASEUR
@@ -110,6 +110,11 @@
desc = "It's a backpack made by Honk! Co."
icon_state = "backpack_clown"
/obj/item/storage/backpack/mime
name = "Parcel Parceaux"
desc = "A silent backpack made for those silent workers. Silence Co."
icon_state = "backpack_mime"
/obj/item/storage/backpack/white
name = "white backpack"
icon_state = "backpack_white"
@@ -644,3 +644,20 @@
desc = "A box full of weapon power cells. For all your portable energy storage needs."
icon_state = "secbox"
starts_with = list(/obj/item/cell/device/weapon = 7)
/obj/item/storage/box/mime
name = "invisible box"
desc = "Unfortunately not large enough to trap the mime."
foldable = null
icon_state = "box"
alpha = 0
/obj/item/storage/box/mime/attack_hand(mob/user)
..()
if(HAS_MIND_TRAIT(user, TRAIT_MIMING))
alpha = 255
/obj/item/storage/box/mime/Moved(atom/old_loc, direction, forced, movetime)
if(iscarbon(old_loc))
alpha = 0
return ..()
@@ -519,3 +519,10 @@
/obj/structure/bed/chair/sofa/corner/orange
sofa_material = MAT_CLOTH_ORANGE
/obj/structure/bed/chair/mime
name = "invisible chair"
desc = "The mime needs to sit down and shut up."
anchored = FALSE
icon_state = null
alpha = 0
@@ -18,10 +18,12 @@
/datum/decl/emote/audible/whimper
key = "whimper"
emote_message_3p = "whimpers."
emote_message_mute_3p = "whimpers silently."
/datum/decl/emote/audible/gasp
key = "gasp"
emote_message_3p = "gasps."
emote_message_mute_3p = "gasps silently!"
conscious = FALSE
/datum/decl/emote/audible/gasp/get_emote_sound(atom/user)
@@ -48,6 +50,7 @@
/datum/decl/emote/audible/choke
key = "choke"
emote_message_3p = "chokes."
emote_message_mute_3p = "chokes silently."
conscious = FALSE
/datum/decl/emote/audible/gnarl
@@ -57,6 +60,7 @@
/datum/decl/emote/audible/multichirp
key = "mchirp"
emote_message_3p = "chirps a chorus of notes!"
emote_message_mute_3p = "acts out a chirp a chorus of notes."
emote_sound = 'sound/voice/multichirp.ogg'
/datum/decl/emote/audible/alarm
@@ -88,15 +92,18 @@
/datum/decl/emote/audible/sniff
key = "sniff"
emote_message_3p = "sniffs."
emote_message_mute_3p = "sniffs silently."
/datum/decl/emote/audible/snore
key = "snore"
emote_message_3p = "snores."
emote_message_mute_3p = "sleeps soundly."
conscious = FALSE
/datum/decl/emote/audible/whimper
key = "whimper"
emote_message_3p = "whimpers."
emote_message_mute_3p = "whimpers silently."
/datum/decl/emote/audible/yawn
key = "yawn"
@@ -109,126 +116,153 @@
'sound/misc/clap2.ogg',
'sound/misc/clap3.ogg',
'sound/misc/clap4.ogg') //ChompEDIT END
able_mute = TRUE
/datum/decl/emote/audible/chuckle
key = "chuckle"
emote_message_3p = "chuckles."
emote_message_mute_3p = "acts out chuckling."
/datum/decl/emote/audible/cry
key = "cry"
emote_message_3p = "cries."
emote_message_mute_3p = "sobs silently."
/datum/decl/emote/audible/sigh
key = "sigh"
emote_message_3p = "sighs."
emote_message_mute_3p = "sighs silently."
/datum/decl/emote/audible/laugh
key = "laugh"
emote_message_3p_target = "laughs at TARGET."
emote_message_3p = "laughs."
emote_message_mute_3p = "acts out a laugh."
/datum/decl/emote/audible/mumble
key = "mumble"
emote_message_3p = "mumbles!"
emote_message_mute_3p = "silently mumbles!"
/datum/decl/emote/audible/grumble
key = "grumble"
emote_message_3p = "grumbles!"
emote_message_mute_3p = "silently grumbles!"
/datum/decl/emote/audible/groan
key = "groan"
emote_message_3p = "groans!"
emote_message_mute_3p = "silently groans!"
conscious = FALSE
/datum/decl/emote/audible/moan
key = "moan"
emote_message_3p = "moans!"
emote_message_mute_3p = "silently moans!"
conscious = FALSE
/datum/decl/emote/audible/giggle
key = "giggle"
emote_message_3p = "giggles."
emote_message_mute_3p = "acts out a giggle."
/datum/decl/emote/audible/grunt
key = "grunt"
emote_message_3p = "grunts."
emote_message_mute_3p = "silently grunts!"
/datum/decl/emote/audible/bug_hiss
key = "bhiss"
emote_message_3p_target = "hisses at TARGET."
emote_message_3p = "hisses."
emote_message_mute_3p = "hisses silently."
emote_sound = 'sound/voice/bughiss.ogg'
/datum/decl/emote/audible/bug_buzz
key = "bbuzz"
emote_message_3p = "buzzes USER_THEIR wings."
emote_sound = 'sound/voice/BugBuzz.ogg'
able_mute = TRUE
/datum/decl/emote/audible/bug_chitter
key = "chitter"
emote_message_3p = "chitters."
emote_message_mute_3p = "chitters silently."
emote_sound = 'sound/voice/bug.ogg'
/datum/decl/emote/audible/roar
key = "roar"
emote_message_mute_3p = "acts out a roar!!"
emote_message_3p = "roars!"
/datum/decl/emote/audible/bellow
key = "bellow"
emote_message_mute_3p = "bellows silently!"
emote_message_3p = "bellows!"
/datum/decl/emote/audible/howl
key = "howl"
emote_message_3p = "howls!"
emote_message_mute_3p = "howls silently!"
/datum/decl/emote/audible/wheeze
key = "wheeze"
emote_message_3p = "wheezes."
emote_message_mute_3p = "wheezes silently."
/datum/decl/emote/audible/hiss
key = "hiss"
emote_message_3p_target = "hisses softly at TARGET."
emote_message_3p = "hisses softly."
emote_message_mute_3p = "hisses silently."
/datum/decl/emote/audible/chirp
key = "chirp"
emote_message_3p = "chirps!"
emote_message_mute_3p = "chirps silently."
emote_sound = 'sound/misc/nymphchirp.ogg'
/datum/decl/emote/audible/crack
key = "crack"
emote_message_3p = "cracks USER_THEIR knuckles."
emote_sound = 'sound/voice/knuckles.ogg'
able_mute = TRUE
/datum/decl/emote/audible/squish
key = "squish"
emote_sound = 'sound/effects/slime_squish.ogg' //Credit to DrMinky (freesound.org) for the sound.
emote_message_3p = "squishes."
emote_message_mute_3p = "squishes silently."
sound_vary = FALSE
/datum/decl/emote/audible/warble
key = "warble"
emote_sound = 'sound/effects/warble.ogg' // Copyright CC BY 3.0 alienistcog (freesound.org) for the sound.
emote_message_3p = "warbles."
emote_message_mute_3p = "warbles silently."
/datum/decl/emote/audible/croon
key = "croon"
emote_message_3p = "croons..."
emote_message_mute_3p = "silently croons..."
emote_sound = list('sound/voice/croon1.ogg', 'sound/voice/croon2.ogg')
/datum/decl/emote/audible/lwarble
key = "lwarble"
emote_message_3p = "lets out a low, throaty warble!"
emote_message_mute_3p = "warbles silently!"
emote_sound = 'sound/voice/lwarble.ogg'
/datum/decl/emote/audible/croak_skrell
key = "scroak"
emote_message_3p = "croaks!"
emote_message_mute_3p = "silently croaks!"
emote_sound = 'sound/voice/croak_skrell.ogg'
/datum/decl/emote/audible/vox_shriek
key = "shriek"
emote_message_3p = "SHRIEKS!"
emote_message_mute_3p = "acts out a SHRIEK!"
emote_sound = 'sound/voice/shriek1.ogg'
/datum/decl/emote/audible/caw
@@ -237,38 +271,45 @@
emote_message_3p = "caws!"
emote_message_1p_target = "You caw at TARGET."
emote_message_3p_target = "caws at TARGET."
emote_message_mute_3p = "caws silently."
emote_sound = 'sound/voice/emotes/caw1.ogg' // Copyright Sampling+ 1.0 Vixuxx (freesound.org) for the source audio.
/datum/decl/emote/audible/caw2
key = "caw2"
emote_message_3p = "caws."
emote_message_mute_3p = "caws silently."
emote_sound = 'sound/voice/emotes/caw2.ogg' // Copyright CC0 1.0 Universal, by Jofae on freesound.org.
/datum/decl/emote/audible/caw_m
key = "caw_m"
emote_message_3p = "caws multiple times."
emote_message_mute_3p = "acts out multiple caws."
emote_sound = 'sound/voice/emotes/caw_multiple.ogg' // Copyright CC0 1.0 Universal, by Ambientsoundapp on freesound.org.
/datum/decl/emote/audible/gwah
key = "gwah"
emote_message_3p = "gwah."
emote_message_mute_3p = "silently gwahs."
emote_sound = 'sound/voice/emotes/gwah.ogg' // Copyright CC0 1.0 Universal, by Ambientsoundapp on freesound.org.
/datum/decl/emote/audible/purr
key = "purr"
emote_message_3p = "purrs."
emote_message_mute_3p = "silently purrs."
emote_sound = 'sound/voice/cat_purr.ogg'
/datum/decl/emote/audible/purrlong
key = "purrl"
emote_message_3p = "purrs."
emote_message_mute_3p = "silently purrs."
emote_sound = 'sound/voice/cat_purr_long.ogg'
/datum/decl/emote/audible/fennecscream
key = "fennecscream"
emote_message_3p = "screeches!"
emote_message_mute_3p = "screeches silently!"
/datum/decl/emote/audible/zoom
key = "zoom"
@@ -280,6 +321,7 @@
emote_message_3p = "chirps in surprise!"
emote_message_1p_target = "You chirp in surprise at TARGET!"
emote_message_3p_target = "chirps in surprise at TARGET!"
emote_message_mute_3p = "lets out a silent chirp!"
emote_sound = 'sound/voice/teshsqueak.ogg' // Copyright CC BY 3.0 InspectorJ (freesound.org) for the source audio.
sound_vary = FALSE
@@ -289,6 +331,7 @@
emote_message_3p = "chirps!"
emote_message_1p_target = "You chirp at TARGET!"
emote_message_3p_target = "chirps at TARGET!"
emote_message_mute_3p = "chirps silently!"
emote_sound = 'sound/voice/teshchirp.ogg' // Copyright Sampling+ 1.0 Incarnidine (freesound.org) for the source audio.
/datum/decl/emote/audible/teshtrill
@@ -297,12 +340,15 @@
emote_message_3p = "trills."
emote_message_1p_target = "You trill at TARGET."
emote_message_3p_target = "trills at TARGET."
emote_message_mute_3p = "trills silently."
emote_sound = 'sound/voice/teshtrill.ogg' // Copyright CC BY-NC 3.0 Arnaud Coutancier (freesound.org) for the source audio.
/datum/decl/emote/audible/teshscream
key = "teshscream"
emote_message_1p = "You scream!"
emote_message_3p = "screams!"
emote_message_mute_1p = "You scream silently!"
emote_message_mute_3p = "screams silently!"
emote_sound = 'sound/voice/teshscream.ogg'
/datum/decl/emote/audible/prbt
@@ -311,17 +357,20 @@
emote_message_3p = "prbts."
emote_message_1p_target = "You prbt at TARGET."
emote_message_3p_target = "prbts at TARGET."
emote_message_mute_3p = "prbts silently."
emote_sound = 'sound/voice/prbt.ogg'
//Some Spooky sounds.
/datum/decl/emote/audible/evil_laugh
key = "evillaugh"
emote_message_3p = "laughs!"
emote_message_mute_3p = "acts out a laugh."
emote_sound = 'sound/mob/spooky/laugh.ogg'
/datum/decl/emote/audible/evil_no
key = "evilno"
emote_message_3p = "says no!"
emote_message_mute_3p = "shakes their head."
emote_sound = 'sound/mob/spooky/no.ogg'
/datum/decl/emote/audible/evil_breathing
@@ -1,6 +1,7 @@
/datum/decl/emote/audible/belch
key = "belch"
emote_message_3p = "belches."
emote_message_mute_3p = "acts out a belch."
message_type = AUDIBLE_MESSAGE
sound_preferences = list(/datum/preference/toggle/emote_noises, /datum/preference/toggle/belch_noises)
@@ -4,6 +4,8 @@
emote_message_1p_target = "You cough on TARGET!"
emote_message_3p = "coughs!"
emote_message_3p_target = "coughs on TARGET!"
emote_message_mute_1p = "You cough silently!"
emote_message_mute_3p = "coughs silently!"
emote_message_synthetic_1p_target = "You emit a robotic cough towards TARGET."
emote_message_synthetic_1p = "You emit a robotic cough."
emote_message_synthetic_3p_target = "emits a robotic cough towards TARGET."
@@ -1,95 +1,118 @@
/datum/decl/emote/audible/awoo
key = "awoo"
emote_message_3p = "lets out an awoo."
emote_message_mute_3p = "lets out a silent awoo."
emote_sound = 'sound/voice/awoo.ogg'
/datum/decl/emote/audible/awoo2
key = "awoo2"
emote_message_3p = "lets out an awoo."
emote_message_mute_3p = "lets out a silent awoo."
emote_sound = 'sound/voice/long_awoo.ogg'
/datum/decl/emote/audible/growl
key = "growl"
emote_message_3p = "lets out a growl."
emote_message_mute_3p = "lets out a silent growl."
emote_sound = 'sound/voice/growl.ogg'
/datum/decl/emote/audible/woof
key = "woof"
emote_message_3p = "lets out a woof."
emote_message_mute_3p = "lets out a silent woof."
emote_sound = 'sound/voice/woof.ogg'
/datum/decl/emote/audible/woof2
key = "woof2"
emote_message_3p = "lets out a woof."
emote_message_mute_3p = "lets out a silent woof."
emote_sound = 'sound/voice/woof2.ogg'
/datum/decl/emote/audible/nya
key = "nya"
emote_message_3p = "lets out a nya."
emote_message_mute_3p = "lets out a silent nya."
emote_sound = 'sound/voice/nya.ogg'
/datum/decl/emote/audible/mrowl
key = "mrowl"
emote_message_3p = "mrowls."
emote_message_mute_3p = "mrowls quietly."
emote_sound = 'sound/voice/mrow.ogg'
/datum/decl/emote/audible/peep
key = "peep"
emote_message_3p = "peeps like a bird."
emote_message_mute_3p = "peeps silently like a bird."
emote_sound = 'sound/voice/peep.ogg'
/datum/decl/emote/audible/chirp
key = "chirp"
emote_message_3p = "chirps!"
emote_message_mute_3p = "silently chirps!"
emote_sound = 'sound/misc/nymphchirp.ogg'
sound_vary = FALSE
/datum/decl/emote/audible/hoot
key = "hoot"
emote_message_3p = "hoots!"
emote_message_mute_3p = "silently hoots!"
emote_sound = 'sound/voice/hoot.ogg'
/datum/decl/emote/audible/weh
key = "weh"
emote_message_3p = "lets out a weh."
emote_message_mute_3p = "lets out a silent weh."
emote_sound = 'sound/voice/weh.ogg'
/datum/decl/emote/audible/merp
key = "merp"
emote_message_3p = "lets out a merp."
emote_message_mute_3p = "lets out a silent merp."
emote_sound = 'sound/voice/merp.ogg'
/datum/decl/emote/audible/myarp
key = "myarp"
emote_message_3p = "lets out a myarp."
emote_message_mute_3p = "lets out a silent myarp."
emote_sound = 'sound/voice/myarp.ogg'
/datum/decl/emote/audible/bark
key = "bark"
emote_message_3p = "lets out a bark."
emote_message_mute_3p = "lets out a silent bark."
emote_sound = 'sound/voice/bark2.ogg'
/datum/decl/emote/audible/bork
key = "bork"
emote_message_3p = "lets out a bork."
emote_message_mute_3p = "lets out a silent bork."
emote_sound = 'sound/voice/bork.ogg'
/datum/decl/emote/audible/mrow
key = "mrow"
emote_message_3p = "lets out a mrow."
emote_message_mute_3p = "lets out a silent mrow."
emote_sound = 'sound/voice/mrow.ogg'
/datum/decl/emote/audible/hypno
key = "hypno"
emote_message_3p = "lets out a mystifying tone."
emote_message_mute_3p = "lets out a silent, mystifying tone."
emote_sound = 'sound/voice/hypno.ogg'
/datum/decl/emote/audible/hiss
key = "hiss"
emote_message_3p = "lets out a hiss."
emote_message_mute_3p = "lets out a silent hiss."
emote_sound = 'sound/voice/hiss.ogg'
/datum/decl/emote/audible/rattle
key = "rattle"
emote_message_3p = "rattles!"
able_mute = TRUE
emote_sound = 'sound/voice/rattle.ogg'
/datum/decl/emote/audible/squeak
key = "squeak"
emote_message_3p = "lets out a squeak."
emote_message_mute_3p = "lets out a silent squeak."
emote_sound = 'sound/effects/mouse_squeak.ogg'
/datum/decl/emote/audible/geck
key = "geck"
emote_message_3p = "geckers!"
emote_message_mute_3p = "geckers silently!"
emote_sound = 'sound/voice/geck.ogg'
/datum/decl/emote/audible/baa
key = "baa"
emote_message_3p = "lets out a baa."
emote_message_mute_3p = "lets out a silent baa."
emote_sound = 'sound/voice/baa.ogg'
/datum/decl/emote/audible/baa2
key = "baa2"
emote_message_3p = "bleats."
emote_message_mute_3p = "bleats silently."
emote_sound = 'sound/voice/baa2.ogg'
/*
/datum/decl/emote/audible/deathgasp2
@@ -101,68 +124,83 @@
/datum/decl/emote/audible/mar
key = "mar"
emote_message_3p = "lets out a mar."
emote_message_mute_3p = "lets out a silent mar."
emote_sound = 'sound/voice/mar.ogg'
/datum/decl/emote/audible/wurble
key = "wurble"
emote_message_3p = "lets out a wurble."
emote_message_mute_3p = "lets out a silent wurble."
emote_sound = 'sound/voice/wurble.ogg'
/datum/decl/emote/audible/snort
key = "snort"
emote_message_3p = "snorts!"
able_mute = TRUE
emote_sound = 'sound/voice/snort.ogg'
sound_vary = FALSE
/datum/decl/emote/audible/meow
key = "meow"
emote_message_3p = "gently meows!"
emote_message_mute_3p = "silently meows!"
emote_sound = 'sound/voice/meow.ogg'
sound_vary = FALSE
/datum/decl/emote/audible/moo
key = "moo"
emote_message_3p = "takes a breath and lets out a moo."
emote_message_mute_3p = "takes a breath and lets out a silent moo."
emote_sound = 'sound/voice/moo.ogg'
/datum/decl/emote/audible/croak
key = "croak"
emote_message_3p = "rumbles their throat, puffs their cheeks and croaks."
emote_message_mute_3p = "rumbles their throat and puffs their cheeks."
emote_sound = 'sound/voice/croak_frog.ogg'
/datum/decl/emote/audible/gao
key = "gao"
emote_message_3p = "lets out a gao."
emote_message_mute_3p = "lets out a silent gao."
emote_sound = 'sound/voice/gao.ogg'
/datum/decl/emote/audible/cackle
key = "cackle"
emote_message_3p = "cackles hysterically!"
emote_message_mute_3p = "mimics a hysteric cackle!"
emote_sound = 'sound/voice/yeencackle.ogg'
/datum/decl/emote/audible/spiderchitter
key = "spiderchitter"
emote_message_3p = "chitters."
emote_message_mute_3p = "chitters silently."
emote_sound = 'sound/voice/spiderchitter.ogg'
/datum/decl/emote/audible/spiderpurr
key = "spiderpurr"
emote_message_3p = "purrs."
emote_message_mute_3p = "purrs silently."
emote_sound = 'sound/voice/spiderpurr.ogg'
/datum/decl/emote/audible/squeaky
key = "squeaky"
emote_message_3p = "squeaks."
emote_message_mute_3p = "squeaks silently."
emote_sound = 'sound/items/drop/plushie.ogg'
/datum/decl/emote/audible/mothscream
key = "mothscream"
emote_message_3p ="screams"
emote_message_mute_3p = "screams silently"
emote_sound = 'sound/voice/moth/scream_moth.ogg'
/datum/decl/emote/audible/mothchitter
key = "mothchitter"
emote_message_3p = "chitters"
emote_message_mute_3p = "chitters silently"
emote_sound = 'sound/voice/moth/moth_chitter.ogg'
/datum/decl/emote/audible/mothlaugh
key = "mothlaugh"
emote_message_3p = "laughs"
emote_message_mute_3p = "laughs silently!"
emote_sound = 'sound/voice/moth/moth_laugh.ogg'
/datum/decl/emote/audible/gyoh
key = "gyoh"
emote_message_3p = "gyohs."
emote_message_mute_3p = "gyohs silently."
emote_sound = 'sound/voice/teppi/whine1.ogg'
var/list/bigsound = list('sound/voice/teppi/gyooh1.ogg', 'sound/voice/teppi/gyooh2.ogg', 'sound/voice/teppi/gyooh3.ogg', 'sound/voice/teppi/gyooh4.ogg', 'sound/voice/teppi/gyooh5.ogg','sound/voice/teppi/gyooh6.ogg')
var/list/smolsound = list('sound/voice/teppi/whine1.ogg', 'sound/voice/teppi/whine2.ogg')
@@ -190,6 +228,7 @@
/datum/decl/emote/audible/rumble
key = "rumble"
emote_message_3p = "rumbles contentedly."
emote_message_mute_3p = "rumbles silently."
emote_sound = 'sound/voice/teppi/whine1.ogg'
var/list/bigsound = list('sound/voice/teppi/rumble.ogg')
var/list/smolsound = list('sound/voice/teppi/cute_rumble.ogg')
@@ -217,34 +256,41 @@
/datum/decl/emote/audible/coyawoo
key = "coyawoo"
emote_message_3p = "lets out a scraggly awoo."
emote_message_mute_3p = "lets out a silent awoo."
emote_sound = 'sound/voice/coyoteawoo.ogg'
/datum/decl/emote/audible/coyawoo2
key = "coyawoo2"
emote_message_3p = "lets out a pronounced, scraggly awoo."
emote_message_mute_3p = "lets out a silent awoo."
emote_sound = 'sound/voice/coyoteawoo2.ogg'
/datum/decl/emote/audible/coyawoo3
key = "coyawoo3"
emote_message_3p = "yaps and lets out a scraggly awoo."
emote_message_mute_3p = "lets out a silent awoo."
emote_sound = 'sound/voice/coyoteawoo3.ogg'
/datum/decl/emote/audible/coyawoo4
key = "coyawoo4"
emote_message_3p = "yaps several times, and lets out a short, scraggly awoo."
emote_message_mute_3p = "lets out a silent awoo."
emote_sound = 'sound/voice/coyoteawoo4.ogg'
/datum/decl/emote/audible/coyawoo5
key = "coyawoo5"
emote_message_3p = "lets out a scraggly, whine-awoo."
emote_message_mute_3p = "lets out a silent awoo."
emote_sound = 'sound/voice/coyoteawoo5.ogg'
/datum/decl/emote/audible/roarbark // Upstream port from CHOMP
key = "roarbark"
emote_message_3p = "lets out a roar-bark!"
emote_message_mute_3p = "lets out a silent roar-bark!"
emote_sound = 'sound/voice/roarbark.ogg'
/datum/decl/emote/audible/dook
key = "dook"
emote_message_3p = "dooks."
emote_message_mute_3p = "dooks silently."
emote_sound = 'sound/voice/ferretdook.ogg'
@@ -2,6 +2,8 @@
key = "pain"
emote_message_1p = "You yell in pain!"
emote_message_3p = "yells in pain!"
emote_message_mute_1p = "You yell silently in pain!"
emote_message_mute_3p = "yells silently in pain!"
/datum/decl/emote/audible/pain/get_emote_message_1p(atom/user, atom/target, extra_params)
if(ishuman(user))
@@ -2,6 +2,8 @@
key = "scream"
emote_message_1p = "You scream!"
emote_message_3p = "screams!"
emote_message_mute_1p = "You scream silently!"
emote_message_mute_3p = "screams silently!"
/datum/decl/emote/audible/scream/get_emote_sound(atom/user)
if(ishuman(user))
@@ -17,11 +19,15 @@
/datum/decl/emote/audible/scream/get_emote_message_1p(atom/user, atom/target, extra_params)
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(HAS_MIND_TRAIT(H, TRAIT_MIMING))
return emote_message_mute_1p
return "You [H.species.scream_verb_1p]!"
. = ..()
/datum/decl/emote/audible/scream/get_emote_message_3p(atom/user, atom/target, extra_params)
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(HAS_MIND_TRAIT(H, TRAIT_MIMING))
return emote_message_mute_3p
return "[H.species.scream_verb_3p]!"
. = ..()
@@ -13,4 +13,5 @@
/datum/decl/emote/audible/malehumanscream
key = "malehumanscream"
emote_message_3p = "screams!"
emote_message_mute_3p = "screams silently!"
emote_sound = 'sound/voice/malescream_2.ogg'
@@ -7,6 +7,7 @@
emote_sound = 'sound/effects/snap.ogg'
check_restraints = TRUE
check_range = 1
able_mute = TRUE
/datum/decl/emote/audible/slap/New()
..()
@@ -5,6 +5,7 @@
emote_message_1p_target = "You snap your fingers at TARGET."
emote_message_3p_target = "snaps USER_THEIR fingers at TARGET."
emote_sound = 'sound/effects/fingersnap.ogg'
able_mute = TRUE
/datum/decl/emote/audible/snap/proc/can_snap(atom/user)
if(ishuman(user))
@@ -6,6 +6,8 @@
emote_message_synthetic_1p_target = "You emit a robotic sneeze towards TARGET."
emote_message_synthetic_3p = "emits a robotic sneeze."
emote_message_synthetic_3p_target = "emits a robotic sneeze towards TARGET."
emote_message_mute_1p = "You act out an exaggerated silent sneeze."
emote_message_mute_3p = "acts out an exaggerated silent sneeze."
/datum/decl/emote/audible/sneeze/get_emote_sound(atom/user)
if(ishuman(user) && !check_synthetic(user))
@@ -7,6 +7,7 @@
emote_sound_synthetic = 'sound/voice/longwhistle_robot.ogg'
emote_message_synthetic_1p = "You whistle a robotic tune."
emote_message_synthetic_3p = "whistles a robotic tune."
able_mute = TRUE
/datum/decl/emote/audible/whistle/quiet
key = "qwhistle"
@@ -16,6 +17,7 @@
emote_message_synthetic_1p = "You whistle robotically."
emote_message_synthetic_3p = "whistles robotically."
emote_sound_synthetic = 'sound/voice/shortwhistle_robot.ogg'
able_mute = TRUE
/datum/decl/emote/audible/whistle/wolf
key = "wwhistle"
@@ -25,6 +27,7 @@
emote_message_synthetic_1p = "You beep inappropriately."
emote_message_synthetic_3p = "beeps inappropriately."
emote_sound_synthetic = 'sound/voice/wolfwhistle_robot.ogg'
able_mute = TRUE
/datum/decl/emote/audible/whistle/summon
key = "swhistle"
@@ -34,3 +37,4 @@
emote_message_synthetic_1p = "You whistle a robotic tune."
emote_message_synthetic_3p = "whistles a robotic tune."
emote_sound_synthetic = 'sound/voice/summon_whistle_robot.ogg'
able_mute = TRUE
@@ -25,6 +25,7 @@
emote_message_1p = "You do a flip!"
emote_message_3p = "does a flip!"
emote_sound = 'sound/effects/bodyfall4.ogg'
able_mute = TRUE
/datum/decl/emote/visible/flip/do_extra(mob/user)
. = ..()
+18 -1
View File
@@ -16,6 +16,9 @@
var/emote_message_synthetic_1p // First person message for robits.
var/emote_message_synthetic_3p // Third person message for robits.
var/emote_message_mute_1p // First person message for mutes.
var/emote_message_mute_3p // Third person message for mutes.
var/emote_message_impaired // Deaf/blind message ('You hear someone flipping out.', 'You see someone opening and closing their mouth')
var/emote_message_1p_target // 'You do a flip at Urist McTarget!'
@@ -40,6 +43,7 @@
var/check_range // falsy, or a range outside which the emote will not work
var/conscious = TRUE // Do we need to be awake to emote this?
var/emote_range = 0 // If >0, restricts emote visibility to viewers within range.
var/able_mute = FALSE // If it this emote doesn't require vocal chords.
var/sound_preferences = list(/datum/preference/toggle/emote_noises) // Default emote sound_preferences is just emote_noises. Belch emote overrides this list for pref-checks.
var/sound_vary = FALSE
@@ -54,6 +58,11 @@
if(emote_message_synthetic_1p_target && check_synthetic(user))
return emote_message_synthetic_1p_target
return emote_message_1p_target
var/mob/living/mob
if(isliving(user))
mob = user
if(emote_message_mute_1p && HAS_MIND_TRAIT(mob, TRAIT_MIMING))
return emote_message_mute_1p
if(emote_message_synthetic_1p && check_synthetic(user))
return emote_message_synthetic_1p
return emote_message_1p
@@ -63,6 +72,11 @@
if(emote_message_synthetic_3p_target && check_synthetic(user))
return emote_message_synthetic_3p_target
return emote_message_3p_target
var/mob/living/mob
if(isliving(user))
mob = user
if(emote_message_mute_3p && HAS_MIND_TRAIT(mob, TRAIT_MIMING))
return emote_message_mute_3p
if(emote_message_synthetic_3p && check_synthetic(user))
return emote_message_synthetic_3p
return emote_message_3p
@@ -146,7 +160,10 @@
M.visible_message(message = use_3p, self_message = use_1p, blind_message = emote_message_impaired, range = use_range, runemessage = prefinal_3p)
do_extra(user, target)
do_sound(user)
if(isliving(user))
var/mob/living/mob = user
if(!(HAS_MIND_TRAIT(mob, TRAIT_MIMING) && !able_mute))
do_sound(user)
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_EMOTE_PERFORMED, user, extra_params)
/datum/decl/emote/proc/replace_target_tokens(msg, atom/target)
+7
View File
@@ -209,6 +209,9 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key)
var/list/message_pieces = parse_languages(message)
if(istype(message_pieces, /datum/multilingual_say_piece)) // Little quark for dealing with hivemind/signlang languages.
var/datum/multilingual_say_piece/S = message_pieces // Yay for BYOND's hilariously broken typecasting for allowing us to do this.
if(HAS_MIND_TRAIT(src, TRAIT_MIMING))
to_chat(src, span_green("You stop yourself from signing in favor of the art of mimery!"))
return FALSE
S.speaking.broadcast(src, S.message)
return 1
@@ -216,6 +219,10 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key)
log_runtime(EXCEPTION("Message failed to generate pieces. [message] - [json_encode(message_pieces)]"))
return 0
if(HAS_MIND_TRAIT(src, TRAIT_MIMING))
to_chat(src, span_green("Your vow of silence prevents you from speaking!"))
return
// If you're muzzled, you can only speak sign language
// However, sign language is handled above.
if(is_muzzled())
+4
View File
@@ -61,6 +61,10 @@
name = "clown's rubber stamp"
icon_state = "stamp-clown"
/obj/item/stamp/mime
name = "mime's rubber stamp"
icon_state = "stamp-mime"
/obj/item/stamp/internalaffairs
name = "internal affairs rubber stamp"
icon_state = "stamp-intaff"
@@ -2664,6 +2664,11 @@
glass_name = REAGENT_ID_NOTHING
glass_desc = "Absolutely nothing."
/datum/reagent/drink/nothing/affect_ingest(mob/living/carbon/M, alien, removed)
..()
if(HAS_MIND_TRAIT(M, TRAIT_MIMING))
M.heal_organ_damage(1 * removed, 1 * removed)
/datum/reagent/drink/dreamcream
name = REAGENT_DREAMCREAM
id = REAGENT_ID_DREAMCREAM
@@ -0,0 +1,28 @@
/datum/spell/aoe_turf/conjure/invisible_box
name = "Invisible box"
desc = "The mime's performance transmutates a box into physical reality."
cast_sound = null
charge_max = 30 SECONDS
duration = 50 SECONDS
charge_max = 300
override_base = "grey"
hud_state = "box"
school = "mime"
/datum/spell/aoe_turf/conjure/invisible_box/cast(list/targets, mob/user)
if(!HAS_MIND_TRAIT(user, TRAIT_MIMING))
to_chat(user, "Your performance is not good enough!")
return
var/obj/item/storage/box/mime/mimebox = new /obj/item/storage/box/mime(get_turf(user))
user.put_in_any_hand_if_possible(mimebox)
mimebox.alpha = 255
addtimer(CALLBACK(src, PROC_REF(cleanup_box), mimebox), duration)
/datum/spell/aoe_turf/conjure/invisible_box/proc/cleanup_box(obj/item/storage/box/box)
if(QDELETED(box) || !istype(box))
return
for(var/obj/thing in box)
thing.forceMove(get_turf(thing))
qdel(box)
@@ -0,0 +1,23 @@
/datum/spell/aoe_turf/conjure/invisible_chair
name = "Invisible chair"
desc = "The mime's performance transmutates a chair into physical reality."
invocation_type = SpI_EMOTE
invocation = "pulls out an invisible chair and sits down."
charge_max = 30 SECONDS
cast_sound = null
duration = 25 SECONDS
override_base = "grey"
hud_state = "chair"
school = "mime"
/datum/spell/aoe_turf/conjure/invisible_chair/cast(list/targets, mob/user)
if(!HAS_MIND_TRAIT(user, TRAIT_MIMING))
to_chat(user, "Your performance is not good enough!")
return
var/obj/structure/bed/chair/mime/chair = new /obj/structure/bed/chair/mime(get_turf(user))
chair.set_dir(user.dir)
chair.buckle_mob(user)
if(duration)
QDEL_IN(chair, duration)
+25
View File
@@ -441,3 +441,28 @@
..()
to_chat(user, span_warning("[src] suddenly feels very warm!"))
empulse(src, 1, 1, 1, 1)
/obj/item/spellbook/oneuse/mime
name = "Guide to Mimery Vol 0"
desc = "The missing entry into the legendary saga. Unfortunately it doesn't teach you anything."
icon_state ="bookmime"
/obj/item/spellbook/oneuse/mime/mimery
name = "Guide to Dank Mimery"
desc = "Teaches three classic pantomime routines, allowing a practiced mime to conjure invisible objects into corporeal existence. One use only."
spell = /datum/spell/aoe_turf/conjure/forcewall/mime
spellname = ""
/obj/item/spellbook/oneuse/mime/mimery/onlearned(mob/user)
if(ishuman(user))
var/mob/living/carbon/human/human = user
var/datum/spell/chair = new /datum/spell/aoe_turf/conjure/invisible_chair
var/datum/spell/box = new /datum/spell/aoe_turf/conjure/invisible_box
human.add_spell(chair)
human.add_spell(box)
var/datum/action/innate/vow_of_silence/vow = locate() in human.actions
if(!vow && human.mind)
vow = new(human.mind)
vow.Grant(human)
to_chat(user, span_warning("The book disappears into thin air."))
qdel(src)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

+3
View File
@@ -515,6 +515,7 @@
#include "code\_onclick\hud\action\item_action.dm"
#include "code\_onclick\hud\action\positioning.dm"
#include "code\_onclick\hud\action\types\item.dm"
#include "code\_onclick\hud\action\types\mime_vow.dm"
#include "code\ATMOSPHERICS\_atmos_setup.dm"
#include "code\ATMOSPHERICS\_atmospherics_helpers.dm"
#include "code\ATMOSPHERICS\atmospherics.dm"
@@ -4905,6 +4906,8 @@
#include "code\modules\spells\aoe_turf\conjure\conjure.dm"
#include "code\modules\spells\aoe_turf\conjure\construct.dm"
#include "code\modules\spells\aoe_turf\conjure\forcewall.dm"
#include "code\modules\spells\aoe_turf\conjure\invisible_box.dm"
#include "code\modules\spells\aoe_turf\conjure\invisible_chair.dm"
#include "code\modules\spells\general\area_teleport.dm"
#include "code\modules\spells\general\rune_write.dm"
#include "code\modules\spells\targeted\ethereal_jaunt.dm"