mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 21:12:24 +01:00
Ports emote decls from Bay + automatic pain emotes. (#9215)
This commit is contained in:
+10
-1
@@ -1493,6 +1493,16 @@
|
||||
#include "code\modules\effects\sparks\procs.dm"
|
||||
#include "code\modules\effects\sparks\spawner.dm"
|
||||
#include "code\modules\effects\sparks\visuals.dm"
|
||||
#include "code\modules\emotes\emote_define.dm"
|
||||
#include "code\modules\emotes\emote_mob.dm"
|
||||
#include "code\modules\emotes\definitions\_mob.dm"
|
||||
#include "code\modules\emotes\definitions\_species.dm"
|
||||
#include "code\modules\emotes\definitions\audible.dm"
|
||||
#include "code\modules\emotes\definitions\exertion.dm"
|
||||
#include "code\modules\emotes\definitions\human.dm"
|
||||
#include "code\modules\emotes\definitions\slime.dm"
|
||||
#include "code\modules\emotes\definitions\synthetics.dm"
|
||||
#include "code\modules\emotes\definitions\visible.dm"
|
||||
#include "code\modules\events\apc_damage.dm"
|
||||
#include "code\modules\events\blob.dm"
|
||||
#include "code\modules\events\brand_intelligence.dm"
|
||||
@@ -1841,7 +1851,6 @@
|
||||
#include "code\modules\mob\living\carbon\alien\alien_attacks.dm"
|
||||
#include "code\modules\mob\living\carbon\alien\alien_damage.dm"
|
||||
#include "code\modules\mob\living\carbon\alien\death.dm"
|
||||
#include "code\modules\mob\living\carbon\alien\emote.dm"
|
||||
#include "code\modules\mob\living\carbon\alien\life.dm"
|
||||
#include "code\modules\mob\living\carbon\alien\progression.dm"
|
||||
#include "code\modules\mob\living\carbon\alien\update_icons.dm"
|
||||
|
||||
@@ -314,6 +314,10 @@
|
||||
#define TASTE_DULL 0.5 //anything below 30%
|
||||
#define TASTE_NUMB 0.1 //anything below 150%
|
||||
|
||||
//Used by emotes
|
||||
#define VISIBLE_MESSAGE 1
|
||||
#define AUDIBLE_MESSAGE 2
|
||||
|
||||
//helper for inverting armor blocked values into a multiplier
|
||||
#define BLOCKED_MULT(blocked) max(1 - (blocked/100), 0)
|
||||
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
/mob
|
||||
var/list/default_emotes = list()
|
||||
var/list/usable_emotes = list()
|
||||
|
||||
/mob/proc/update_emotes(var/skip_sort)
|
||||
usable_emotes.Cut()
|
||||
for(var/emote in default_emotes)
|
||||
var/decl/emote/emote_datum = decls_repository.get_decl(emote)
|
||||
if(emote_datum.check_user(src))
|
||||
usable_emotes[emote_datum.key] = emote_datum
|
||||
if(!skip_sort)
|
||||
usable_emotes = sortAssoc(usable_emotes)
|
||||
|
||||
/mob/Initialize()
|
||||
. = ..()
|
||||
update_emotes()
|
||||
|
||||
// Specific defines follow.
|
||||
/mob/living/carbon/alien
|
||||
default_emotes = list(
|
||||
/decl/emote/visible,
|
||||
/decl/emote/visible/scratch,
|
||||
/decl/emote/visible/drool,
|
||||
/decl/emote/visible/nod,
|
||||
/decl/emote/visible/sway,
|
||||
/decl/emote/visible/sulk,
|
||||
/decl/emote/visible/twitch,
|
||||
/decl/emote/visible/dance,
|
||||
/decl/emote/visible/roll,
|
||||
/decl/emote/visible/shake,
|
||||
/decl/emote/visible/jump,
|
||||
/decl/emote/visible/shiver,
|
||||
/decl/emote/visible/collapse,
|
||||
/decl/emote/audible/hiss,
|
||||
/decl/emote/audible,
|
||||
/decl/emote/audible/deathgasp_alien,
|
||||
/decl/emote/audible/whimper,
|
||||
/decl/emote/audible/gasp,
|
||||
/decl/emote/audible/scretch,
|
||||
/decl/emote/audible/choke,
|
||||
/decl/emote/audible/moan,
|
||||
/decl/emote/audible/gnarl
|
||||
)
|
||||
|
||||
/mob/living/carbon/alien/diona
|
||||
default_emotes = list(
|
||||
/decl/emote/visible,
|
||||
/decl/emote/visible/scratch,
|
||||
/decl/emote/visible/drool,
|
||||
/decl/emote/visible/nod,
|
||||
/decl/emote/visible/sway,
|
||||
/decl/emote/visible/sulk,
|
||||
/decl/emote/visible/twitch,
|
||||
/decl/emote/visible/dance,
|
||||
/decl/emote/visible/roll,
|
||||
/decl/emote/visible/shake,
|
||||
/decl/emote/visible/jump,
|
||||
/decl/emote/visible/shiver,
|
||||
/decl/emote/visible/collapse,
|
||||
/decl/emote/audible/hiss,
|
||||
/decl/emote/audible,
|
||||
/decl/emote/audible/scretch,
|
||||
/decl/emote/audible/choke,
|
||||
/decl/emote/audible/gnarl,
|
||||
/decl/emote/audible/chirp
|
||||
)
|
||||
|
||||
/mob/living/carbon/brain/can_emote()
|
||||
return (istype(container, /obj/item/device/mmi) && ..())
|
||||
|
||||
/mob/living/carbon/brain
|
||||
default_emotes = list(
|
||||
/decl/emote/audible/alarm,
|
||||
/decl/emote/audible/alert,
|
||||
/decl/emote/audible/notice,
|
||||
/decl/emote/audible/whistle,
|
||||
/decl/emote/audible/synth,
|
||||
/decl/emote/audible/boop,
|
||||
/decl/emote/visible/blink,
|
||||
/decl/emote/visible/flash
|
||||
)
|
||||
|
||||
/mob/living/carbon/human
|
||||
default_emotes = list(
|
||||
/decl/emote/visible/blink,
|
||||
/decl/emote/audible/synth,
|
||||
/decl/emote/audible/synth/ping,
|
||||
/decl/emote/audible/synth/buzz,
|
||||
/decl/emote/audible/synth/confirm,
|
||||
/decl/emote/audible/synth/deny,
|
||||
/decl/emote/visible/nod,
|
||||
/decl/emote/visible/shake,
|
||||
/decl/emote/visible/shiver,
|
||||
/decl/emote/visible/collapse,
|
||||
/decl/emote/audible/gasp,
|
||||
/decl/emote/audible/sneeze,
|
||||
/decl/emote/audible/sniff,
|
||||
/decl/emote/audible/snore,
|
||||
/decl/emote/audible/whimper,
|
||||
/decl/emote/audible/yawn,
|
||||
/decl/emote/audible/clap,
|
||||
/decl/emote/audible/golfclap,
|
||||
/decl/emote/audible/chuckle,
|
||||
/decl/emote/audible/cough,
|
||||
/decl/emote/audible/cry,
|
||||
/decl/emote/audible/sigh,
|
||||
/decl/emote/audible/laugh,
|
||||
/decl/emote/audible/mumble,
|
||||
/decl/emote/audible/grumble,
|
||||
/decl/emote/audible/groan,
|
||||
/decl/emote/audible/moan,
|
||||
/decl/emote/audible/grunt,
|
||||
/decl/emote/audible/slap,
|
||||
/decl/emote/audible/snap,
|
||||
/decl/emote/human,
|
||||
/decl/emote/human/deathgasp,
|
||||
/decl/emote/audible/giggle,
|
||||
/decl/emote/audible/scream,
|
||||
/decl/emote/visible/airguitar,
|
||||
/decl/emote/visible/blink_r,
|
||||
/decl/emote/visible/bow,
|
||||
/decl/emote/visible/salute,
|
||||
/decl/emote/visible/flap,
|
||||
/decl/emote/visible/aflap,
|
||||
/decl/emote/visible/drool,
|
||||
/decl/emote/visible/eyebrow,
|
||||
/decl/emote/visible/twitch,
|
||||
/decl/emote/visible/twitch_v,
|
||||
/decl/emote/visible/faint,
|
||||
/decl/emote/visible/frown,
|
||||
/decl/emote/visible/blush,
|
||||
/decl/emote/visible/wave,
|
||||
/decl/emote/visible/glare,
|
||||
/decl/emote/visible/stare,
|
||||
/decl/emote/visible/look,
|
||||
/decl/emote/visible/point,
|
||||
/decl/emote/visible/raise,
|
||||
/decl/emote/visible/grin,
|
||||
/decl/emote/visible/shrug,
|
||||
/decl/emote/visible/smile,
|
||||
/decl/emote/visible/pale,
|
||||
/decl/emote/visible/tremble,
|
||||
/decl/emote/visible/wink,
|
||||
/decl/emote/visible/hug,
|
||||
/decl/emote/visible/dap,
|
||||
/decl/emote/visible/signal,
|
||||
/decl/emote/visible/handshake,
|
||||
/decl/emote/visible/afold,
|
||||
/decl/emote/visible/alook,
|
||||
/decl/emote/visible/eroll,
|
||||
/decl/emote/visible/hbow,
|
||||
/decl/emote/visible/hip,
|
||||
/decl/emote/visible/holdup,
|
||||
/decl/emote/visible/hshrug,
|
||||
/decl/emote/visible/crub,
|
||||
/decl/emote/visible/erub,
|
||||
/decl/emote/visible/fslap,
|
||||
/decl/emote/visible/ftap,
|
||||
/decl/emote/visible/hrub,
|
||||
/decl/emote/visible/hspread,
|
||||
/decl/emote/visible/pocket,
|
||||
/decl/emote/visible/rsalute,
|
||||
/decl/emote/visible/rshoulder,
|
||||
/decl/emote/visible/squint,
|
||||
/decl/emote/visible/tfist,
|
||||
/decl/emote/visible/tilt
|
||||
)
|
||||
|
||||
/mob/living/silicon/robot
|
||||
default_emotes = list(
|
||||
/decl/emote/audible/clap,
|
||||
/decl/emote/visible/bow,
|
||||
/decl/emote/visible/salute,
|
||||
/decl/emote/visible/flap,
|
||||
/decl/emote/visible/aflap,
|
||||
/decl/emote/visible/twitch,
|
||||
/decl/emote/visible/twitch_v,
|
||||
/decl/emote/visible/nod,
|
||||
/decl/emote/visible/shake,
|
||||
/decl/emote/visible/glare,
|
||||
/decl/emote/visible/look,
|
||||
/decl/emote/visible/stare,
|
||||
/decl/emote/visible/deathgasp_robot,
|
||||
/decl/emote/audible/synth,
|
||||
/decl/emote/audible/synth/ping,
|
||||
/decl/emote/audible/synth/buzz,
|
||||
/decl/emote/audible/synth/confirm,
|
||||
/decl/emote/audible/synth/deny,
|
||||
)
|
||||
|
||||
/mob/living/carbon/slime
|
||||
default_emotes = list(
|
||||
/decl/emote/audible/moan,
|
||||
/decl/emote/visible/twitch,
|
||||
/decl/emote/visible/sway,
|
||||
/decl/emote/visible/shiver,
|
||||
/decl/emote/visible/bounce,
|
||||
/decl/emote/visible/jiggle,
|
||||
/decl/emote/visible/lightup,
|
||||
/decl/emote/visible/vibrate,
|
||||
/decl/emote/slime,
|
||||
/decl/emote/slime/pout,
|
||||
/decl/emote/slime/sad,
|
||||
/decl/emote/slime/angry,
|
||||
/decl/emote/slime/frown,
|
||||
/decl/emote/slime/smile
|
||||
)
|
||||
@@ -0,0 +1,79 @@
|
||||
/datum/species
|
||||
var/list/default_emotes = list()
|
||||
|
||||
/mob/living/carbon/update_emotes()
|
||||
. = ..(skip_sort=1)
|
||||
if(species)
|
||||
for(var/emote in species.default_emotes)
|
||||
var/decl/emote/emote_datum = decls_repository.get_decl(emote)
|
||||
if(emote_datum.check_user(src))
|
||||
usable_emotes[emote_datum.key] = emote_datum
|
||||
usable_emotes = sortAssoc(usable_emotes)
|
||||
|
||||
// Specific defines follow.
|
||||
/datum/species/slime
|
||||
default_emotes = list(
|
||||
/decl/emote/visible/bounce,
|
||||
/decl/emote/visible/jiggle,
|
||||
/decl/emote/visible/lightup,
|
||||
/decl/emote/visible/vibrate
|
||||
)
|
||||
|
||||
/datum/species/unathi
|
||||
default_emotes = list(
|
||||
/decl/emote/human/swish,
|
||||
/decl/emote/human/wag,
|
||||
/decl/emote/human/sway,
|
||||
/decl/emote/human/qwag,
|
||||
/decl/emote/human/fastsway,
|
||||
/decl/emote/human/swag,
|
||||
/decl/emote/human/stopsway,
|
||||
/decl/emote/audible/lizard_bellow
|
||||
)
|
||||
pain_emotes_with_pain_level = list(
|
||||
list(/decl/emote/audible/roar, /decl/emote/audible/whimper, /decl/emote/audible/moan) = 70,
|
||||
list(/decl/emote/audible/grunt, /decl/emote/audible/groan, /decl/emote/audible/moan) = 40,
|
||||
list(/decl/emote/audible/grunt, /decl/emote/audible/groan) = 10,
|
||||
)
|
||||
|
||||
/datum/species/diona
|
||||
default_emotes = list(
|
||||
/decl/emote/audible/chirp,
|
||||
/decl/emote/audible/multichirp,
|
||||
/decl/emote/audible/nymphsqueal,
|
||||
/decl/emote/audible/painrustle,
|
||||
/decl/emote/audible/paincreak
|
||||
)
|
||||
pain_emotes_with_pain_level = list(
|
||||
list(/decl/emote/audible/painrustle, /decl/emote/audible/paincreak, /decl/emote/audible/nymphsqueal) = 70,
|
||||
list(/decl/emote/audible/painrustle, /decl/emote/audible/nymphsqueal) = 40,
|
||||
list(/decl/emote/audible/paincreak) = 10,
|
||||
)
|
||||
|
||||
/datum/species/bug
|
||||
default_emotes = list(
|
||||
/decl/emote/audible/hiss,
|
||||
/decl/emote/audible/chitter,
|
||||
/decl/emote/audible/shriek,
|
||||
/decl/emote/audible/screech
|
||||
)
|
||||
pain_emotes_with_pain_level = list(
|
||||
list(/decl/emote/audible/screech, /decl/emote/audible/shriek) = 70,
|
||||
list(/decl/emote/audible/shriek, /decl/emote/audible/hiss) = 40,
|
||||
list(/decl/emote/audible/hiss) = 10,
|
||||
)
|
||||
|
||||
/datum/species/tajaran
|
||||
default_emotes = list(
|
||||
/decl/emote/audible/howl,
|
||||
/decl/emote/audible/hiss
|
||||
)
|
||||
pain_emotes_with_pain_level = list(
|
||||
list(/decl/emote/audible/scream, /decl/emote/audible/whimper, /decl/emote/audible/moan, /decl/emote/audible/cry, /decl/emote/audible/howl) = 70,
|
||||
list(/decl/emote/audible/grunt, /decl/emote/audible/groan, /decl/emote/audible/moan, /decl/emote/audible/hiss) = 40,
|
||||
list(/decl/emote/audible/grunt, /decl/emote/audible/groan, /decl/emote/audible/hiss) = 10,
|
||||
)
|
||||
|
||||
/mob/living/carbon/human/set_species(var/new_species, var/default_colour = 1)
|
||||
UNLINT(. = ..())
|
||||
update_emotes()
|
||||
@@ -0,0 +1,223 @@
|
||||
/decl/emote/audible
|
||||
key = "burp"
|
||||
emote_message_3p = "USER burps."
|
||||
message_type = AUDIBLE_MESSAGE
|
||||
var/emote_sound
|
||||
|
||||
/decl/emote/audible/do_extra(var/atom/user)
|
||||
var/sound_to_play
|
||||
if(emote_sound)
|
||||
if(islist(emote_sound))
|
||||
sound_to_play = pick(emote_sound)
|
||||
else
|
||||
sound_to_play = emote_sound
|
||||
playsound(user.loc, sound_to_play, 50, 0, vary = FALSE)
|
||||
|
||||
/decl/emote/audible/deathgasp_alien
|
||||
key = "deathgasp"
|
||||
emote_message_3p = "USER lets out a waning guttural screech, green blood bubbling from its maw."
|
||||
|
||||
/decl/emote/audible/whimper
|
||||
key ="whimper"
|
||||
emote_message_3p = "USER whimpers."
|
||||
|
||||
/decl/emote/audible/gasp
|
||||
key ="gasp"
|
||||
emote_message_3p = "USER gasps."
|
||||
conscious = 0
|
||||
|
||||
/decl/emote/audible/scretch
|
||||
key ="scretch"
|
||||
emote_message_3p = "USER scretches."
|
||||
|
||||
/decl/emote/audible/choke
|
||||
key ="choke"
|
||||
emote_message_3p = "USER chokes."
|
||||
conscious = 0
|
||||
|
||||
/decl/emote/audible/gnarl
|
||||
key ="gnarl"
|
||||
emote_message_3p = "USER gnarls and shows its teeth.."
|
||||
|
||||
/decl/emote/audible/chirp
|
||||
key ="chirp"
|
||||
emote_message_3p = "USER chirps!"
|
||||
emote_sound = 'sound/misc/nymphchirp.ogg'
|
||||
|
||||
/decl/emote/audible/multichirp
|
||||
key ="mchirp"
|
||||
emote_message_3p = "USER chirps a chorus of notes!"
|
||||
emote_sound = 'sound/misc/multichirp.ogg'
|
||||
|
||||
/decl/emote/audible/paincreak
|
||||
key ="pcreak"
|
||||
emote_message_3p = "USER creaks in pain!"
|
||||
|
||||
/decl/emote/audible/painrustle
|
||||
key ="prustle"
|
||||
emote_message_3p = "USER rustles in agony!"
|
||||
|
||||
/decl/emote/audible/nymphsqueal
|
||||
key ="psqueal"
|
||||
emote_message_3p = "USER's nymphs squeal in pain!"
|
||||
|
||||
/decl/emote/audible/chitter
|
||||
key = "chitter"
|
||||
emote_message_3p = "USER chitters."
|
||||
emote_sound = list('sound/misc/zapsplat/chitter1.ogg', 'sound/misc/zapsplat/chitter2.ogg', 'sound/misc/zapsplat/chitter3.ogg')
|
||||
|
||||
/decl/emote/audible/shriek
|
||||
key = "shriek"
|
||||
emote_message_3p = "USER shrieks!"
|
||||
|
||||
/decl/emote/audible/screech
|
||||
key = "screech"
|
||||
emote_message_3p = "USER screeches!"
|
||||
|
||||
/decl/emote/audible/alarm
|
||||
key = "alarm"
|
||||
emote_message_1p = "You sound an alarm."
|
||||
emote_message_3p = "USER sounds an alarm."
|
||||
|
||||
/decl/emote/audible/alert
|
||||
key = "alert"
|
||||
emote_message_1p = "You let out a distressed noise."
|
||||
emote_message_3p = "USER lets out a distressed noise."
|
||||
|
||||
/decl/emote/audible/notice
|
||||
key = "notice"
|
||||
emote_message_1p = "You play a loud tone."
|
||||
emote_message_3p = "USER plays a loud tone."
|
||||
|
||||
/decl/emote/audible/whistle
|
||||
key = "whistle"
|
||||
emote_message_1p = "You whistle."
|
||||
emote_message_3p = "USER whistles."
|
||||
|
||||
/decl/emote/audible/boop
|
||||
key = "boop"
|
||||
emote_message_1p = "You boop."
|
||||
emote_message_3p = "USER boops."
|
||||
|
||||
/decl/emote/audible/sneeze
|
||||
key = "sneeze"
|
||||
emote_message_3p = "USER sneezes."
|
||||
|
||||
/decl/emote/audible/sniff
|
||||
key = "sniff"
|
||||
emote_message_3p = "USER sniffs."
|
||||
|
||||
/decl/emote/audible/snore
|
||||
key = "snore"
|
||||
emote_message_3p = "USER snores."
|
||||
conscious = 0
|
||||
|
||||
/decl/emote/audible/whimper
|
||||
key = "whimper"
|
||||
emote_message_3p = "USER whimpers."
|
||||
|
||||
/decl/emote/audible/yawn
|
||||
key = "yawn"
|
||||
emote_message_3p = "USER yawns."
|
||||
|
||||
/decl/emote/audible/clap
|
||||
key = "clap"
|
||||
emote_message_3p = "USER claps!"
|
||||
emote_sound = 'sound/effects/clap.ogg'
|
||||
|
||||
/decl/emote/audible/golfclap
|
||||
key = "golfclap"
|
||||
emote_message_3p = "USER claps, clearly unimpressed."
|
||||
emote_sound = 'sound/effects/golfclap.ogg'
|
||||
|
||||
/decl/emote/audible/chuckle
|
||||
key = "chuckle"
|
||||
emote_message_3p = "USER chuckles."
|
||||
|
||||
/decl/emote/audible/cough
|
||||
key = "cough"
|
||||
emote_message_3p = "USER coughs!"
|
||||
conscious = 0
|
||||
|
||||
/decl/emote/audible/cry
|
||||
key = "cry"
|
||||
emote_message_3p = "USER cries."
|
||||
|
||||
/decl/emote/audible/sigh
|
||||
key = "sigh"
|
||||
emote_message_3p = "USER sighs."
|
||||
|
||||
/decl/emote/audible/laugh
|
||||
key = "laugh"
|
||||
emote_message_3p_target = "USER laughs at TARGET."
|
||||
emote_message_3p = "USER laughs."
|
||||
|
||||
/decl/emote/audible/mumble
|
||||
key = "mumble"
|
||||
emote_message_3p = "USER mumbles!"
|
||||
|
||||
/decl/emote/audible/grumble
|
||||
key = "grumble"
|
||||
emote_message_3p = "USER grumbles!"
|
||||
|
||||
/decl/emote/audible/groan
|
||||
key = "groan"
|
||||
emote_message_3p = "USER groans!"
|
||||
conscious = 0
|
||||
|
||||
/decl/emote/audible/moan
|
||||
key = "moan"
|
||||
emote_message_3p = "USER moans!"
|
||||
conscious = 0
|
||||
|
||||
/decl/emote/audible/giggle
|
||||
key = "giggle"
|
||||
emote_message_3p = "USER giggles."
|
||||
|
||||
/decl/emote/audible/scream
|
||||
key = "scream"
|
||||
emote_message_3p = "USER screams!"
|
||||
|
||||
/decl/emote/audible/grunt
|
||||
key = "grunt"
|
||||
emote_message_3p = "USER grunts."
|
||||
|
||||
/decl/emote/audible/slap
|
||||
key = "slap"
|
||||
emote_message_1p_target = "<span class='warning'>You slap TARGET across the face!</span>"
|
||||
emote_message_1p = "You slap yourself across the face!"
|
||||
emote_message_3p_target = "<span class='warning'>USER slaps TARGET across the face!</span>"
|
||||
emote_message_3p = "USER slaps USER_SELF across the face!"
|
||||
emote_sound = 'sound/effects/snap.ogg'
|
||||
|
||||
/decl/emote/audible/snap
|
||||
key = "snap"
|
||||
emote_message_3p = "USER snaps USER_THEIR fingers."
|
||||
emote_sound = 'sound/effects/fingersnap.ogg'
|
||||
|
||||
/decl/emote/audible/roar
|
||||
key = "roar"
|
||||
emote_message_3p = "USER roars!"
|
||||
|
||||
/decl/emote/audible/bellow
|
||||
key = "bellow"
|
||||
emote_message_3p = "USER bellows!"
|
||||
|
||||
/decl/emote/audible/howl
|
||||
key = "howl"
|
||||
emote_message_3p = "USER howls!"
|
||||
|
||||
/decl/emote/audible/wheeze
|
||||
key = "wheeze"
|
||||
emote_message_3p = "USER wheezes."
|
||||
|
||||
/decl/emote/audible/hiss
|
||||
key ="hiss_"
|
||||
emote_message_3p_target = "USER hisses softly at TARGET."
|
||||
emote_message_3p = "USER hisses softly."
|
||||
|
||||
/decl/emote/audible/lizard_bellow
|
||||
key = "bellow"
|
||||
emote_message_3p_target = "USER bellows deeply at TARGET!"
|
||||
emote_message_3p = "USER bellows!"
|
||||
emote_sound = 'sound/voice/LizardBellow.ogg'
|
||||
@@ -0,0 +1,41 @@
|
||||
|
||||
/decl/emote/exertion/biological
|
||||
key = "esweat"
|
||||
emote_range = 4
|
||||
emote_message_1p = "You are sweating heavily."
|
||||
emote_message_3p = "USER is sweating heavily."
|
||||
|
||||
/decl/emote/exertion/biological/check_user(mob/living/user)
|
||||
if(istype(user) && !user.isSynthetic())
|
||||
return ..()
|
||||
return FALSE
|
||||
|
||||
/decl/emote/exertion/biological/breath
|
||||
key = "ebreath"
|
||||
emote_message_1p = "You feel out of breath."
|
||||
emote_message_3p = "USER looks out of breath."
|
||||
|
||||
/decl/emote/exertion/biological/pant
|
||||
key = "epant"
|
||||
emote_range = 3
|
||||
message_type = AUDIBLE_MESSAGE
|
||||
emote_message_1p = "You pant to catch your breath."
|
||||
emote_message_3p = "USER pants for air."
|
||||
emote_message_impaired = "You can see USER breathing heavily."
|
||||
|
||||
/decl/emote/exertion/synthetic
|
||||
key = "ewhine"
|
||||
emote_range = 3
|
||||
message_type = AUDIBLE_MESSAGE
|
||||
emote_message_1p = "You overstress your actuators."
|
||||
emote_message_3p = "USER's actuators whine with strain."
|
||||
|
||||
/decl/emote/exertion/synthetic/check_user(mob/living/user)
|
||||
if(istype(user) && user.isSynthetic())
|
||||
return ..()
|
||||
return FALSE
|
||||
|
||||
/decl/emote/exertion/synthetic/creak
|
||||
key = "ecreak"
|
||||
emote_message_1p = "Your chassis stress indicators spike."
|
||||
emote_message_3p = "USER's joints creak with stress."
|
||||
@@ -0,0 +1,56 @@
|
||||
/decl/emote/human
|
||||
key = "vomit"
|
||||
|
||||
/decl/emote/human/check_user(var/mob/living/carbon/human/user)
|
||||
return (istype(user) && user.check_has_mouth() && !user.isSynthetic())
|
||||
|
||||
/decl/emote/human/do_emote(var/mob/living/carbon/human/user)
|
||||
user.vomit(deliberate = TRUE)
|
||||
|
||||
/decl/emote/human/deathgasp
|
||||
key = "deathgasp"
|
||||
|
||||
/decl/emote/human/deathgasp/get_emote_message_3p(var/mob/living/carbon/human/user)
|
||||
return "USER [user.species.death_message]"
|
||||
|
||||
/decl/emote/human/swish
|
||||
key = "swish"
|
||||
|
||||
/decl/emote/human/swish/do_emote(var/mob/living/carbon/human/user)
|
||||
user.animate_tail_once()
|
||||
|
||||
/decl/emote/human/wag
|
||||
key = "wag"
|
||||
|
||||
/decl/emote/human/wag/do_emote(var/mob/living/carbon/human/user)
|
||||
user.animate_tail_start()
|
||||
|
||||
/decl/emote/human/sway
|
||||
key = "sway"
|
||||
|
||||
/decl/emote/human/sway/do_emote(var/mob/living/carbon/human/user)
|
||||
user.animate_tail_start()
|
||||
|
||||
/decl/emote/human/qwag
|
||||
key = "qwag"
|
||||
|
||||
/decl/emote/human/qwag/do_emote(var/mob/living/carbon/human/user)
|
||||
user.animate_tail_fast()
|
||||
|
||||
/decl/emote/human/fastsway
|
||||
key = "fastsway"
|
||||
|
||||
/decl/emote/human/fastsway/do_emote(var/mob/living/carbon/human/user)
|
||||
user.animate_tail_fast()
|
||||
|
||||
/decl/emote/human/swag
|
||||
key = "swag"
|
||||
|
||||
/decl/emote/human/swag/do_emote(var/mob/living/carbon/human/user)
|
||||
user.animate_tail_stop()
|
||||
|
||||
/decl/emote/human/stopsway
|
||||
key = "stopsway"
|
||||
|
||||
/decl/emote/human/stopsway/do_emote(var/mob/living/carbon/human/user)
|
||||
user.animate_tail_stop()
|
||||
@@ -0,0 +1,30 @@
|
||||
/decl/emote/slime
|
||||
key = "nomood"
|
||||
var/mood
|
||||
|
||||
/decl/emote/slime/do_extra(var/mob/living/carbon/slime/user)
|
||||
user.mood = mood
|
||||
user.regenerate_icons()
|
||||
|
||||
/decl/emote/slime/check_user(var/atom/user)
|
||||
return istype(user, /mob/living/carbon/slime)
|
||||
|
||||
/decl/emote/slime/pout
|
||||
key = "pout"
|
||||
mood = "pout"
|
||||
|
||||
/decl/emote/slime/sad
|
||||
key = "sad"
|
||||
mood = "sad"
|
||||
|
||||
/decl/emote/slime/angry
|
||||
key = "angry"
|
||||
mood = "angry"
|
||||
|
||||
/decl/emote/slime/frown
|
||||
key = "frown"
|
||||
mood = "mischevous"
|
||||
|
||||
/decl/emote/slime/smile
|
||||
key = "smile"
|
||||
mood = ":3"
|
||||
@@ -0,0 +1,29 @@
|
||||
/decl/emote/audible/synth
|
||||
key = "beep"
|
||||
emote_message_3p = "USER beeps."
|
||||
emote_sound = 'sound/machines/twobeep.ogg'
|
||||
|
||||
/decl/emote/audible/synth/check_user(var/mob/living/user)
|
||||
if(istype(user) && user.isSynthetic())
|
||||
return ..()
|
||||
return FALSE
|
||||
|
||||
/decl/emote/audible/synth/ping
|
||||
key = "ping"
|
||||
emote_message_3p = "USER pings."
|
||||
emote_sound = 'sound/machines/ping.ogg'
|
||||
|
||||
/decl/emote/audible/synth/buzz
|
||||
key = "buzz"
|
||||
emote_message_3p = "USER buzzes."
|
||||
emote_sound = 'sound/machines/buzz-sigh.ogg'
|
||||
|
||||
/decl/emote/audible/synth/confirm
|
||||
key = "confirm"
|
||||
emote_message_3p = "USER emits an affirmative blip."
|
||||
emote_sound = 'sound/machines/synth_yes.ogg'
|
||||
|
||||
/decl/emote/audible/synth/deny
|
||||
key = "deny"
|
||||
emote_message_3p = "USER emits a negative blip."
|
||||
emote_sound = 'sound/machines/synth_no.ogg'
|
||||
@@ -0,0 +1,336 @@
|
||||
/decl/emote/visible
|
||||
key ="tail"
|
||||
emote_message_3p = "USER waves USER_THEIR tail."
|
||||
message_type = VISIBLE_MESSAGE
|
||||
|
||||
/decl/emote/visible/scratch
|
||||
key = "scratch"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER scratches."
|
||||
|
||||
/decl/emote/visible/drool
|
||||
key ="drool"
|
||||
emote_message_3p = "USER drools."
|
||||
conscious = 0
|
||||
|
||||
/decl/emote/visible/nod
|
||||
key ="nod"
|
||||
emote_message_3p_target = "USER nods USER_THEIR head at TARGET."
|
||||
emote_message_3p = "USER nods USER_THEIR head."
|
||||
|
||||
/decl/emote/visible/sway
|
||||
key ="sway"
|
||||
emote_message_3p = "USER sways around dizzily."
|
||||
|
||||
/decl/emote/visible/sulk
|
||||
key ="sulk"
|
||||
emote_message_3p = "USER sulks down sadly."
|
||||
|
||||
/decl/emote/visible/dance
|
||||
key ="dance"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER dances around happily."
|
||||
|
||||
/decl/emote/visible/roll
|
||||
key ="roll"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER rolls."
|
||||
|
||||
/decl/emote/visible/shake
|
||||
key ="shake"
|
||||
emote_message_3p = "USER shakes USER_THEIR head."
|
||||
|
||||
/decl/emote/visible/jump
|
||||
key ="jump"
|
||||
emote_message_3p = "USER jumps!"
|
||||
|
||||
/decl/emote/visible/shiver
|
||||
key ="shiver"
|
||||
emote_message_3p = "USER shivers."
|
||||
conscious = 0
|
||||
|
||||
/decl/emote/visible/collapse
|
||||
key ="collapse"
|
||||
emote_message_3p = "USER collapses!"
|
||||
|
||||
/decl/emote/visible/collapse/do_extra(var/mob/user)
|
||||
if(istype(user))
|
||||
user.Paralyse(2)
|
||||
|
||||
/decl/emote/visible/flash
|
||||
key = "flash"
|
||||
emote_message_3p = "The lights on USER flash quickly."
|
||||
|
||||
/decl/emote/visible/blink
|
||||
key = "blink"
|
||||
emote_message_3p = "USER blinks."
|
||||
|
||||
/decl/emote/visible/airguitar
|
||||
key = "airguitar"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER is strumming the air and headbanging like a safari chimp."
|
||||
|
||||
/decl/emote/visible/blink_r
|
||||
key = "blink_r"
|
||||
emote_message_3p = "USER blinks rapidly."
|
||||
|
||||
/decl/emote/visible/bow
|
||||
key = "bow"
|
||||
emote_message_3p_target = "USER bows to TARGET."
|
||||
emote_message_3p = "USER bows."
|
||||
|
||||
/decl/emote/visible/salute
|
||||
key = "salute"
|
||||
emote_message_3p_target = "USER salutes TARGET."
|
||||
emote_message_3p = "USER salutes."
|
||||
|
||||
/decl/emote/visible/flap
|
||||
key = "flap"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER flaps USER_THEIR wings."
|
||||
|
||||
/decl/emote/visible/aflap
|
||||
key = "aflap"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER flaps USER_THEIR wings ANGRILY!"
|
||||
|
||||
/decl/emote/visible/eyebrow
|
||||
key = "eyebrow"
|
||||
emote_message_3p = "USER raises an eyebrow."
|
||||
|
||||
/decl/emote/visible/twitch
|
||||
key = "twitch"
|
||||
emote_message_3p = "USER twitches."
|
||||
conscious = 0
|
||||
|
||||
/decl/emote/visible/twitch_v
|
||||
key = "twitch_v"
|
||||
emote_message_3p = "USER twitches violently."
|
||||
conscious = 0
|
||||
|
||||
/decl/emote/visible/faint
|
||||
key = "faint"
|
||||
emote_message_3p = "USER faints."
|
||||
|
||||
/decl/emote/visible/faint/do_extra(var/mob/user)
|
||||
if(istype(user) && user.sleeping <= 0)
|
||||
user.sleeping += 10
|
||||
|
||||
/decl/emote/visible/frown
|
||||
key = "frown"
|
||||
emote_message_3p = "USER frowns."
|
||||
|
||||
/decl/emote/visible/blush
|
||||
key = "blush"
|
||||
emote_message_3p = "USER blushes."
|
||||
|
||||
/decl/emote/visible/wave
|
||||
key = "wave"
|
||||
emote_message_3p_target = "USER waves at TARGET."
|
||||
emote_message_3p = "USER waves."
|
||||
|
||||
/decl/emote/visible/glare
|
||||
key = "glare"
|
||||
emote_message_3p_target = "USER glares at TARGET."
|
||||
emote_message_3p = "USER glares."
|
||||
|
||||
/decl/emote/visible/stare
|
||||
key = "stare"
|
||||
emote_message_3p_target = "USER stares at TARGET."
|
||||
emote_message_3p = "USER stares."
|
||||
|
||||
/decl/emote/visible/look
|
||||
key = "look"
|
||||
emote_message_3p_target = "USER looks at TARGET."
|
||||
emote_message_3p = "USER looks."
|
||||
|
||||
/decl/emote/visible/point
|
||||
key = "point"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p_target = "USER points to TARGET."
|
||||
emote_message_3p = "USER points."
|
||||
|
||||
/decl/emote/visible/raise
|
||||
key = "raise"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER raises a hand."
|
||||
|
||||
/decl/emote/visible/grin
|
||||
key = "grin"
|
||||
emote_message_3p_target = "USER grins at TARGET."
|
||||
emote_message_3p = "USER grins."
|
||||
|
||||
/decl/emote/visible/shrug
|
||||
key = "shrug"
|
||||
emote_message_3p = "USER shrugs."
|
||||
|
||||
/decl/emote/visible/smile
|
||||
key = "smile"
|
||||
emote_message_3p_target = "USER smiles at TARGET."
|
||||
emote_message_3p = "USER smiles."
|
||||
|
||||
/decl/emote/visible/pale
|
||||
key = "pale"
|
||||
emote_message_3p = "USER goes pale for a second."
|
||||
|
||||
/decl/emote/visible/tremble
|
||||
key = "tremble"
|
||||
emote_message_3p = "USER trembles in fear!"
|
||||
|
||||
/decl/emote/visible/wink
|
||||
key = "wink"
|
||||
emote_message_3p_target = "USER winks at TARGET."
|
||||
emote_message_3p = "USER winks."
|
||||
|
||||
/decl/emote/visible/hug
|
||||
key = "hug"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p_target = "USER hugs TARGET."
|
||||
emote_message_3p = "USER hugs USER_SELF."
|
||||
|
||||
/decl/emote/visible/dap
|
||||
key = "dap"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p_target = "USER gives daps to TARGET."
|
||||
emote_message_3p = "USER sadly can't find anybody to give daps to, and daps USER_SELF."
|
||||
|
||||
/decl/emote/visible/signal
|
||||
key = "signal"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER signals."
|
||||
|
||||
/decl/emote/visible/signal/check_user(var/atom/user)
|
||||
return ismob(user)
|
||||
|
||||
/decl/emote/visible/bounce
|
||||
key = "bounce"
|
||||
emote_message_3p = "USER bounces in place."
|
||||
|
||||
/decl/emote/visible/jiggle
|
||||
key = "jiggle"
|
||||
emote_message_3p = "USER jiggles!"
|
||||
|
||||
/decl/emote/visible/lightup
|
||||
key = "light"
|
||||
emote_message_3p = "USER lights up for a bit, then stops."
|
||||
|
||||
/decl/emote/visible/vibrate
|
||||
key = "vibrate"
|
||||
emote_message_3p = "USER vibrates!"
|
||||
|
||||
/decl/emote/visible/deathgasp_robot
|
||||
key = "deathgasp"
|
||||
emote_message_3p = "USER shudders violently for a moment, then becomes motionless, USER_THEIR eyes slowly darkening."
|
||||
|
||||
/decl/emote/visible/handshake
|
||||
key = "handshake"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p_target = "USER shakes hands with TARGET."
|
||||
emote_message_3p = "USER shakes hands with USER_SELF."
|
||||
message_type = VISIBLE_MESSAGE
|
||||
|
||||
/decl/emote/visible/handshake/get_emote_message_3p(var/atom/user, var/atom/target, var/extra_params)
|
||||
if(target && !user.Adjacent(target))
|
||||
return "USER holds out USER_THEIR hand out to TARGET."
|
||||
return ..()
|
||||
|
||||
/decl/emote/visible/signal
|
||||
key = "signal"
|
||||
emote_message_3p_target = "USER signals at TARGET."
|
||||
emote_message_3p = "USER signals."
|
||||
message_type = VISIBLE_MESSAGE
|
||||
|
||||
/decl/emote/visible/signal/get_emote_message_3p(var/mob/user, var/atom/target, var/extra_params)
|
||||
if(istype(user) && !(user.r_hand && user.l_hand))
|
||||
var/t1 = round(text2num(extra_params))
|
||||
if(isnum(t1) && t1 <= 5)
|
||||
return "USER raises [t1] finger\s."
|
||||
return .. ()
|
||||
|
||||
/decl/emote/visible/afold
|
||||
key = "afold"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER folds USER_THEIR arms."
|
||||
|
||||
/decl/emote/visible/alook
|
||||
key = "alook"
|
||||
emote_message_3p = "USER looks away."
|
||||
|
||||
/decl/emote/visible/hbow
|
||||
key = "hbow"
|
||||
emote_message_3p = "USER bows USER_THEIR head."
|
||||
|
||||
/decl/emote/visible/hip
|
||||
key = "hip"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER puts USER_THEIR hands on USER_THEIR hips."
|
||||
|
||||
/decl/emote/visible/holdup
|
||||
key = "holdup"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER holds up USER_THEIR palms."
|
||||
|
||||
/decl/emote/visible/hshrug
|
||||
key = "hshrug"
|
||||
emote_message_3p = "USER gives a half shrug."
|
||||
|
||||
/decl/emote/visible/crub
|
||||
key = "crub"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER rubs USER_THEIR chin."
|
||||
|
||||
/decl/emote/visible/eroll
|
||||
key = "eroll"
|
||||
emote_message_3p = "USER rolls USER_THEIR eyes."
|
||||
emote_message_3p_target = "USER rolls USER_THEIR eyes at TARGET."
|
||||
|
||||
/decl/emote/visible/erub
|
||||
key = "erub"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER rubs USER_THEIR eyes."
|
||||
|
||||
/decl/emote/visible/fslap
|
||||
key = "fslap"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER slaps USER_THEIR forehead."
|
||||
|
||||
/decl/emote/visible/ftap
|
||||
key = "ftap"
|
||||
emote_message_3p = "USER taps USER_THEIR foot."
|
||||
|
||||
/decl/emote/visible/hrub
|
||||
key = "hrub"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER rubs USER_THEIR hands together."
|
||||
|
||||
/decl/emote/visible/hspread
|
||||
key = "hspread"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER spreads USER_THEIR hands."
|
||||
|
||||
/decl/emote/visible/pocket
|
||||
key = "pocket"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER shoves USER_THEIR hands in USER_THEIR pockets."
|
||||
|
||||
/decl/emote/visible/rsalute
|
||||
key = "rsalute"
|
||||
check_restraints = TRUE
|
||||
emote_message_3p = "USER returns the salute."
|
||||
|
||||
/decl/emote/visible/rshoulder
|
||||
key = "rshoulder"
|
||||
emote_message_3p = "USER rolls USER_THEIR shoulders."
|
||||
|
||||
/decl/emote/visible/squint
|
||||
key = "squint"
|
||||
emote_message_3p = "USER squints."
|
||||
emote_message_3p_target = "USER squints at TARGET."
|
||||
|
||||
/decl/emote/visible/tfist
|
||||
key = "tfist"
|
||||
emote_message_3p = "USER tightens USER_THEIR hands into fists."
|
||||
|
||||
/decl/emote/visible/tilt
|
||||
key = "tilt"
|
||||
emote_message_3p = "USER tilts USER_THEIR head."
|
||||
@@ -0,0 +1,105 @@
|
||||
// Note about emote messages:
|
||||
// - USER / TARGET will be replaced with the relevant name, in bold.
|
||||
// - USER_THEM / TARGET_THEM / USER_THEIR / TARGET_THEIR will be replaced with a
|
||||
// gender-appropriate version of the same.
|
||||
// - Impaired messages do not do any substitutions.
|
||||
|
||||
/decl/emote
|
||||
|
||||
var/key // Command to use emote ie. '*[key]'
|
||||
var/emote_message_1p // First person message ('You do a flip!')
|
||||
var/emote_message_3p // Third person message ('Urist McShitter does a flip!')
|
||||
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!'
|
||||
var/emote_message_3p_target // 'Urist McShitter does a flip at Urist McTarget!'
|
||||
|
||||
var/message_type = VISIBLE_MESSAGE // Audible/visual flag
|
||||
var/targetted_emote // Whether or not this emote needs a target.
|
||||
var/check_restraints // Can this emote be used while restrained?
|
||||
var/conscious = 1 // Do we need to be awake to emote this?
|
||||
var/emote_range = 0 // If >0, restricts emote visibility to viewers within range.
|
||||
|
||||
/decl/emote/proc/get_emote_message_1p(var/atom/user, var/atom/target, var/extra_params)
|
||||
if(target)
|
||||
return emote_message_1p_target
|
||||
return emote_message_1p
|
||||
|
||||
/decl/emote/proc/get_emote_message_3p(var/atom/user, var/atom/target, var/extra_params)
|
||||
if(target)
|
||||
return emote_message_3p_target
|
||||
return emote_message_3p
|
||||
|
||||
/decl/emote/proc/do_emote(var/atom/user, var/extra_params)
|
||||
|
||||
if(ismob(user) && check_restraints)
|
||||
var/mob/M = user
|
||||
if(M.restrained())
|
||||
to_chat(user, "<span class='warning'>You are restrained and cannot do that.</span>")
|
||||
return
|
||||
|
||||
var/atom/target
|
||||
if(can_target() && extra_params)
|
||||
extra_params = lowertext(extra_params)
|
||||
for(var/atom/thing in view(user))
|
||||
if(extra_params == lowertext(thing.name))
|
||||
target = thing
|
||||
break
|
||||
|
||||
var/datum/gender/user_gender = gender_datums[user.gender]
|
||||
var/datum/gender/target_gender
|
||||
if(target)
|
||||
target_gender = gender_datums[target.gender]
|
||||
|
||||
var/use_3p
|
||||
var/use_1p
|
||||
if(emote_message_1p)
|
||||
if(target && emote_message_1p_target)
|
||||
use_1p = get_emote_message_1p(user, target, extra_params)
|
||||
use_1p = replacetext(use_1p, "TARGET_THEM", target_gender.him)
|
||||
use_1p = replacetext(use_1p, "TARGET_THEIR", target_gender.his)
|
||||
use_1p = replacetext(use_1p, "TARGET_SELF", target_gender.self)
|
||||
use_1p = replacetext(use_1p, "TARGET", "<b>\the [target]</b>")
|
||||
else
|
||||
use_1p = get_emote_message_1p(user, null, extra_params)
|
||||
use_1p = capitalize(use_1p)
|
||||
|
||||
if(emote_message_3p)
|
||||
if(target && emote_message_3p_target)
|
||||
use_3p = get_emote_message_3p(user, target, extra_params)
|
||||
use_3p = replacetext(use_3p, "TARGET_THEM", target_gender.him)
|
||||
use_3p = replacetext(use_3p, "TARGET_THEIR", target_gender.his)
|
||||
use_3p = replacetext(use_3p, "TARGET_SELF", target_gender.self)
|
||||
use_3p = replacetext(use_3p, "TARGET", "<b>\the [target]</b>")
|
||||
else
|
||||
use_3p = get_emote_message_3p(user, null, extra_params)
|
||||
use_3p = replacetext(use_3p, "USER_THEM", user_gender.him)
|
||||
use_3p = replacetext(use_3p, "USER_THEIR", user_gender.his)
|
||||
use_3p = replacetext(use_3p, "USER_SELF", user_gender.self)
|
||||
use_3p = replacetext(use_3p, "USER", "<b>\the [user]</b>")
|
||||
use_3p = capitalize(use_3p)
|
||||
|
||||
var/use_range = emote_range
|
||||
if (!use_range)
|
||||
use_range = world.view
|
||||
|
||||
if(ismob(user))
|
||||
var/mob/M = user
|
||||
if(message_type == AUDIBLE_MESSAGE)
|
||||
M.audible_message(message = use_3p, self_message = use_1p, deaf_message = emote_message_impaired, hearing_distance = use_range)
|
||||
else
|
||||
M.visible_message(message = use_3p, self_message = use_1p, blind_message = emote_message_impaired, range = use_range)
|
||||
|
||||
do_extra(user, target)
|
||||
|
||||
/decl/emote/proc/do_extra(var/atom/user, var/atom/target)
|
||||
return
|
||||
|
||||
/decl/emote/proc/check_user(var/atom/user)
|
||||
return TRUE
|
||||
|
||||
/decl/emote/proc/can_target()
|
||||
return (emote_message_1p_target || emote_message_3p_target)
|
||||
|
||||
/decl/emote/dd_SortValue()
|
||||
return key
|
||||
@@ -0,0 +1,167 @@
|
||||
/mob/proc/can_emote(var/emote_type)
|
||||
return (stat == CONSCIOUS)
|
||||
|
||||
/mob/living/can_emote(var/emote_type)
|
||||
return (..() && !(silent && emote_type == AUDIBLE_MESSAGE))
|
||||
|
||||
/mob/proc/emote(var/act, var/m_type, var/message)
|
||||
// s-s-snowflake
|
||||
if(src.stat == DEAD && act != "deathgasp")
|
||||
return
|
||||
if(usr == src) //client-called emote
|
||||
if (client && (client.prefs.muted & MUTE_IC))
|
||||
to_chat(src, "<span class='warning'>You cannot send IC messages (muted).</span>")
|
||||
return
|
||||
|
||||
if(act == "help")
|
||||
to_chat(src,"<b>Usable emotes:</b> [english_list(usable_emotes)]")
|
||||
return
|
||||
|
||||
if(!can_emote(m_type))
|
||||
to_chat(src, "<span class='warning'>You cannot currently [m_type == AUDIBLE_MESSAGE ? "audibly" : "visually"] emote!</span>")
|
||||
return
|
||||
|
||||
if(act == "me")
|
||||
return custom_emote(m_type, message)
|
||||
|
||||
if(act == "custom")
|
||||
if(!message)
|
||||
message = sanitize(input("Enter an emote to display.") as text|null)
|
||||
if(!message)
|
||||
return
|
||||
if (!m_type)
|
||||
if(alert(src, "Is this an audible emote?", "Emote", "Yes", "No") == "No")
|
||||
m_type = VISIBLE_MESSAGE
|
||||
else
|
||||
m_type = AUDIBLE_MESSAGE
|
||||
return custom_emote(m_type, message)
|
||||
|
||||
var/splitpoint = findtext(act, " ")
|
||||
if(splitpoint > 0)
|
||||
var/tempstr = act
|
||||
act = copytext(tempstr,1,splitpoint)
|
||||
message = copytext(tempstr,splitpoint+1,0)
|
||||
|
||||
var/decl/emote/use_emote = usable_emotes[act]
|
||||
if(!use_emote)
|
||||
to_chat(src, "<span class='warning'>Unknown emote '[act]'. Type <b>say *help</b> for a list of usable emotes.</span>")
|
||||
return
|
||||
|
||||
if(m_type != use_emote.message_type && use_emote.conscious && stat != CONSCIOUS)
|
||||
return
|
||||
|
||||
if(use_emote.message_type == AUDIBLE_MESSAGE && is_muzzled())
|
||||
audible_message("<b>\The [src]</b> makes a muffled sound.")
|
||||
return
|
||||
else
|
||||
use_emote.do_emote(src, message)
|
||||
|
||||
for (var/obj/item/implant/I in src)
|
||||
if (I.implanted)
|
||||
I.trigger(act, src)
|
||||
|
||||
/mob/proc/format_emote(var/emoter = null, var/message = null)
|
||||
var/pretext
|
||||
var/subtext
|
||||
var/nametext
|
||||
var/end_char
|
||||
var/start_char
|
||||
var/name_anchor
|
||||
var/anchor_char = "!"
|
||||
|
||||
if(!message || !emoter)
|
||||
return
|
||||
|
||||
message = html_decode(message)
|
||||
|
||||
name_anchor = findtext(message, anchor_char)
|
||||
if(name_anchor > 0) // User supplied emote with visible_emote token (default ^)
|
||||
pretext = copytext(message, 1, name_anchor)
|
||||
subtext = copytext(message, name_anchor + 1, length(message) + 1)
|
||||
else
|
||||
// No token. Just the emote as usual.
|
||||
subtext = message
|
||||
|
||||
// Oh shit, we got this far! Let's see... did the user attempt to use more than one token?
|
||||
if(findtext(subtext, anchor_char))
|
||||
// abort abort!
|
||||
to_chat(emoter, "<span class='warning'>You may use only one \"[anchor_char]\" symbol in your emote.</span>")
|
||||
return
|
||||
|
||||
if(pretext)
|
||||
// Add a space at the end if we didn't already supply one.
|
||||
end_char = copytext(pretext, length(pretext), length(pretext) + 1)
|
||||
if(end_char != " ")
|
||||
pretext += " "
|
||||
|
||||
// Grab the last character of the emote message.
|
||||
end_char = copytext(subtext, length(subtext), length(subtext) + 1)
|
||||
if(!(end_char in list(".", "?", "!", "\"", "-", "~"))) // gotta include ~ for all you fucking weebs
|
||||
// No punctuation supplied. Tack a period on the end.
|
||||
subtext += "."
|
||||
|
||||
// Add a space to the subtext, unless it begins with an apostrophe or comma.
|
||||
if(subtext != ".")
|
||||
// First, let's get rid of any existing space, to account for sloppy emoters ("X, ^ , Y")
|
||||
subtext = trim_left(subtext)
|
||||
start_char = copytext(subtext, 1, 2)
|
||||
if(start_char != "," && start_char != "'")
|
||||
subtext = " " + subtext
|
||||
|
||||
pretext = capitalize(html_encode(pretext))
|
||||
nametext = html_encode(nametext)
|
||||
subtext = html_encode(subtext)
|
||||
// Store the player's name in a nice bold, naturalement
|
||||
nametext = "<B>[emoter]</B>"
|
||||
return pretext + nametext + subtext
|
||||
|
||||
/mob/proc/custom_emote(var/m_type = VISIBLE_MESSAGE, var/message = null)
|
||||
|
||||
if((usr && stat) || (!use_me && usr == src))
|
||||
to_chat(src, "You are unable to emote.")
|
||||
return
|
||||
|
||||
var/input
|
||||
if(!message)
|
||||
input = sanitize(input(src,"Choose an emote to display.") as text|null)
|
||||
else
|
||||
input = message
|
||||
|
||||
if(input)
|
||||
message = format_emote(src, message)
|
||||
else
|
||||
return
|
||||
|
||||
if (message)
|
||||
log_emote("[name]/[key] : [message]")
|
||||
if(m_type == VISIBLE_MESSAGE)
|
||||
visible_message(message)
|
||||
else
|
||||
audible_message(message)
|
||||
|
||||
// Specific mob type exceptions below.
|
||||
/mob/living/silicon/ai/emote(var/act, var/type, var/message)
|
||||
var/obj/machinery/hologram/holopad/T = src.holo
|
||||
if(T && T.masters[src]) //Is the AI using a holopad?
|
||||
src.holopad_emote(message)
|
||||
else //Emote normally, then.
|
||||
..()
|
||||
|
||||
/mob/living/captive_brain/emote(var/message)
|
||||
return
|
||||
|
||||
/mob/abstract/observer/emote(var/act, var/type, var/message)
|
||||
if(!message)
|
||||
return
|
||||
|
||||
if(act != "me")
|
||||
return
|
||||
|
||||
log_emote("Ghost/[src.key] : [message]",ckey=key_name(src))
|
||||
|
||||
if(src.client)
|
||||
if(src.client.prefs.muted & (MUTE_DEADCHAT|MUTE_IC))
|
||||
to_chat(src, "<span class='warning'>You cannot emote in deadchat (muted).</span>")
|
||||
return
|
||||
|
||||
. = src.emote_dead(message)
|
||||
@@ -12,20 +12,3 @@
|
||||
return
|
||||
|
||||
. = src.say_dead(message)
|
||||
|
||||
|
||||
/mob/abstract/observer/emote(var/act, var/type, var/message)
|
||||
if(!message)
|
||||
return
|
||||
|
||||
if(act != "me")
|
||||
return
|
||||
|
||||
log_emote("Ghost/[src.key] : [message]",ckey=key_name(src))
|
||||
|
||||
if(src.client)
|
||||
if(src.client.prefs.muted & (MUTE_DEADCHAT|MUTE_IC))
|
||||
to_chat(src, "<span class='warning'>You cannot emote in deadchat (muted).</span>")
|
||||
return
|
||||
|
||||
. = src.emote_dead(message)
|
||||
|
||||
@@ -1,30 +1,6 @@
|
||||
// All mobs should have custom emote, really..
|
||||
//m_type == 1 --> visual.
|
||||
//m_type == 2 --> audible
|
||||
/mob/proc/custom_emote(var/m_type=1,var/message = null, var/log_emote = 1)
|
||||
if(usr && stat || !use_me && usr == src)
|
||||
to_chat(src, "You are unable to emote.")
|
||||
return
|
||||
|
||||
var/muzzled = istype(src.wear_mask, /obj/item/clothing/mask/muzzle)
|
||||
if(m_type == 2 && muzzled) return
|
||||
|
||||
var/input
|
||||
if(!message)
|
||||
input = sanitize(input(src,"Choose an emote to display.") as text|null)
|
||||
else
|
||||
input = message
|
||||
if(input)
|
||||
message = "<B>[src]</B> [input]"
|
||||
else
|
||||
return
|
||||
|
||||
|
||||
if (message)
|
||||
send_emote(message, m_type)
|
||||
if (log_emote)
|
||||
log_emote("[name]/[key] : [message]",ckey=key_name(key))
|
||||
|
||||
/mob/proc/emote_dead(var/message)
|
||||
|
||||
if(client.prefs.muted & MUTE_DEADCHAT)
|
||||
|
||||
@@ -18,6 +18,7 @@ var/list/datum/gender/gender_datums = list()
|
||||
var/has = "have"
|
||||
var/is = "are"
|
||||
var/does = "do"
|
||||
var/self = "themselves"
|
||||
|
||||
/datum/gender/male
|
||||
key = "male"
|
||||
@@ -30,6 +31,7 @@ var/list/datum/gender/gender_datums = list()
|
||||
has = "has"
|
||||
is = "is"
|
||||
does = "does"
|
||||
self = "himself"
|
||||
|
||||
/datum/gender/female
|
||||
key = "female"
|
||||
@@ -42,6 +44,7 @@ var/list/datum/gender/gender_datums = list()
|
||||
has = "has"
|
||||
is = "is"
|
||||
does = "does"
|
||||
self = "herself"
|
||||
|
||||
/datum/gender/neuter
|
||||
key = "neuter"
|
||||
@@ -54,3 +57,4 @@ var/list/datum/gender/gender_datums = list()
|
||||
has = "has"
|
||||
is = "is"
|
||||
does = "does"
|
||||
self = "itself"
|
||||
|
||||
@@ -1,121 +0,0 @@
|
||||
/mob/living/carbon/alien/emote(var/act,var/m_type=1,var/message = null)
|
||||
|
||||
var/param = null
|
||||
if (findtext(act, "-", 1, null))
|
||||
var/t1 = findtext(act, "-", 1, null)
|
||||
param = copytext(act, t1 + 1, length(act) + 1)
|
||||
act = copytext(act, 1, t1)
|
||||
|
||||
if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_'
|
||||
act = copytext(act,1,length(act))
|
||||
var/muzzled = istype(src.wear_mask, /obj/item/clothing/mask/muzzle)
|
||||
|
||||
switch(act)
|
||||
if ("me")
|
||||
if(silent)
|
||||
return
|
||||
if (src.client)
|
||||
if (client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "<span class='warning'>You cannot send IC messages (muted).</span>")
|
||||
return
|
||||
if (stat)
|
||||
return
|
||||
if(!(message))
|
||||
return
|
||||
return custom_emote(m_type, message)
|
||||
|
||||
if ("custom")
|
||||
return custom_emote(m_type, message)
|
||||
if("sign")
|
||||
if (!src.restrained())
|
||||
message = text("<B>The alien</B> signs[].", (text2num(param) ? text(" the number []", text2num(param)) : null))
|
||||
m_type = 1
|
||||
if ("burp")
|
||||
if (!muzzled)
|
||||
message = "<B>[src]</B> burps."
|
||||
m_type = 2
|
||||
if("deathgasp")
|
||||
message = "<B>The [src.name]</B> lets out a waning guttural screech, green blood bubbling from its maw."
|
||||
m_type = 2
|
||||
if("scratch")
|
||||
if (!src.restrained())
|
||||
message = "<B>The [src.name]</B> scratches."
|
||||
m_type = 1
|
||||
if("whimper")
|
||||
if (!muzzled)
|
||||
message = "<B>The [src.name]</B> whimpers."
|
||||
m_type = 2
|
||||
if("tail")
|
||||
message = "<B>The [src.name]</B> waves its tail."
|
||||
m_type = 1
|
||||
if("gasp")
|
||||
message = "<B>The [src.name]</B> gasps."
|
||||
m_type = 2
|
||||
if("shiver")
|
||||
message = "<B>The [src.name]</B> shivers."
|
||||
m_type = 2
|
||||
if("drool")
|
||||
message = "<B>The [src.name]</B> drools."
|
||||
m_type = 1
|
||||
if("scretch")
|
||||
if (!muzzled)
|
||||
message = "<B>The [src.name]</B> scretches."
|
||||
m_type = 2
|
||||
if("choke")
|
||||
message = "<B>The [src.name]</B> chokes."
|
||||
m_type = 2
|
||||
if("moan")
|
||||
message = "<B>The [src.name]</B> moans!"
|
||||
m_type = 2
|
||||
if("nod")
|
||||
message = "<B>The [src.name]</B> nods its head."
|
||||
m_type = 1
|
||||
// if("sit")
|
||||
// message = "<B>The [src.name]</B> sits down." //Larvan can't sit down, /N
|
||||
// m_type = 1
|
||||
if("sway")
|
||||
message = "<B>The [src.name]</B> sways around dizzily."
|
||||
m_type = 1
|
||||
if("sulk")
|
||||
message = "<B>The [src.name]</B> sulks down sadly."
|
||||
m_type = 1
|
||||
if("twitch")
|
||||
message = "<B>The [src.name]</B> twitches violently."
|
||||
m_type = 1
|
||||
if("dance")
|
||||
if (!src.restrained())
|
||||
message = "<B>The [src.name]</B> dances around happily."
|
||||
m_type = 1
|
||||
if("roll")
|
||||
if (!src.restrained())
|
||||
message = "<B>The [src.name]</B> rolls."
|
||||
m_type = 1
|
||||
if("shake")
|
||||
message = "<B>The [src.name]</B> shakes its head."
|
||||
m_type = 1
|
||||
if("gnarl")
|
||||
if (!muzzled)
|
||||
message = "<B>The [src.name]</B> gnarls and shows its teeth.."
|
||||
m_type = 2
|
||||
if("jump")
|
||||
message = "<B>The [src.name]</B> jumps!"
|
||||
m_type = 1
|
||||
if("hiss_")
|
||||
message = "<B>The [src.name]</B> hisses softly."
|
||||
m_type = 1
|
||||
if("collapse")
|
||||
Paralyse(2)
|
||||
message = text("<B>[]</B> collapses!", src)
|
||||
m_type = 2
|
||||
if("chirp")
|
||||
message = "<B>The [src.name]</B> chirps!"
|
||||
playsound(src.loc, 'sound/misc/nymphchirp.ogg', 50, 0)
|
||||
m_type = 2
|
||||
if("help")
|
||||
to_chat(src, "burp, chirp, choke, collapse, dance, drool, gasp, shiver, gnarl, jump, moan, nod, roll, scratch,\nscretch, shake, sign-#, sulk, sway, tail, twitch, whimper")
|
||||
else
|
||||
to_chat(src, text("Invalid Emote: []", act))
|
||||
if ((message && src.stat == 0))
|
||||
log_emote("[name]/[key] : [message]",ckey=key_name(key))
|
||||
send_emote(message, m_type)
|
||||
return
|
||||
@@ -1,735 +1,9 @@
|
||||
/mob/living/carbon/human/emote(var/act,var/m_type=1,var/message = null)
|
||||
var/param = null
|
||||
if (findtext(act, "-", 1, null))
|
||||
var/t1 = findtext(act, "-", 1, null)
|
||||
param = copytext(act, t1 + 1, length(act) + 1)
|
||||
act = copytext(act, 1, t1)
|
||||
|
||||
if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_'
|
||||
act = copytext(act,1,length(act))
|
||||
|
||||
var/muzzled = istype(src.wear_mask, /obj/item/clothing/mask/muzzle)
|
||||
//var/m_type = 1
|
||||
|
||||
for (var/obj/item/implant/I in src)
|
||||
if (I.implanted)
|
||||
I.trigger(act, src)
|
||||
|
||||
if(stat == DEAD && (act != "deathgasp"))
|
||||
return
|
||||
switch(act)
|
||||
if ("airguitar")
|
||||
if (!src.restrained())
|
||||
message = "is strumming the air and headbanging like a safari chimp."
|
||||
m_type = 1
|
||||
|
||||
if ("blink")
|
||||
message = "blinks."
|
||||
m_type = 1
|
||||
|
||||
if ("blink_r")
|
||||
message = "blinks rapidly."
|
||||
m_type = 1
|
||||
|
||||
if ("bow")
|
||||
if (!src.buckled)
|
||||
var/M = null
|
||||
if (param)
|
||||
for (var/mob/A in view(null, null))
|
||||
if (param == A.name)
|
||||
M = A
|
||||
break
|
||||
if (!M)
|
||||
param = null
|
||||
|
||||
if (param)
|
||||
message = "bows to [param]."
|
||||
else
|
||||
message = "bows."
|
||||
m_type = 1
|
||||
|
||||
if ("custom")
|
||||
var/input = sanitize(input("Choose an emote to display.") as text|null)
|
||||
if (!input)
|
||||
return
|
||||
var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable")
|
||||
if (input2 == "Visible")
|
||||
m_type = 1
|
||||
else if (input2 == "Hearable")
|
||||
if (src.miming)
|
||||
return
|
||||
m_type = 2
|
||||
else
|
||||
alert("Unable to use this emote, must be either hearable or visible.")
|
||||
return
|
||||
return custom_emote(m_type, message)
|
||||
|
||||
if ("me")
|
||||
|
||||
//if(silent && silent > 0 && findtext(message,"\"",1, null) > 0)
|
||||
// return //This check does not work and I have no idea why, I'm leaving it in for reference.
|
||||
|
||||
if (src.client)
|
||||
if (client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "<span class='danger'>You cannot send IC messages (muted).</span>")
|
||||
return
|
||||
if (stat)
|
||||
return
|
||||
if(!(message))
|
||||
return
|
||||
return custom_emote(m_type, message)
|
||||
|
||||
if ("salute")
|
||||
if (!src.buckled)
|
||||
var/M = null
|
||||
if (param)
|
||||
for (var/mob/A in view(null, null))
|
||||
if (param == A.name)
|
||||
M = A
|
||||
break
|
||||
if (!M)
|
||||
param = null
|
||||
|
||||
if (param)
|
||||
message = "salutes to [param]."
|
||||
else
|
||||
message = "salutes."
|
||||
m_type = 1
|
||||
|
||||
if ("choke")
|
||||
if(miming)
|
||||
message = "clutches [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] throat desperately!"
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
message = "chokes!"
|
||||
m_type = 2
|
||||
else
|
||||
message = "makes a strong noise."
|
||||
m_type = 2
|
||||
|
||||
if ("clap")
|
||||
if (!src.restrained())
|
||||
message = "claps."
|
||||
playsound(loc, 'sound/effects/clap.ogg', 50, 1)
|
||||
m_type = 2
|
||||
if(miming)
|
||||
m_type = 1
|
||||
|
||||
if ("golfclap")
|
||||
if (!src.restrained())
|
||||
message = "claps, clearly unimpressed."
|
||||
playsound(loc, 'sound/effects/golfclap.ogg', 50, 1)
|
||||
m_type = 2
|
||||
if(miming)
|
||||
m_type = 1
|
||||
|
||||
if ("flap")
|
||||
if (!src.restrained())
|
||||
message = "flaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] wings."
|
||||
m_type = 2
|
||||
if(miming)
|
||||
m_type = 1
|
||||
|
||||
if ("aflap")
|
||||
if (!src.restrained())
|
||||
message = "flaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] wings ANGRILY!"
|
||||
m_type = 2
|
||||
if(miming)
|
||||
m_type = 1
|
||||
|
||||
if ("drool")
|
||||
message = "drools."
|
||||
m_type = 1
|
||||
|
||||
if ("eyebrow")
|
||||
message = "raises an eyebrow."
|
||||
m_type = 1
|
||||
|
||||
if ("chuckle")
|
||||
if(miming)
|
||||
message = "appears to chuckle."
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
message = "chuckles."
|
||||
m_type = 2
|
||||
else
|
||||
message = "makes a noise."
|
||||
m_type = 2
|
||||
|
||||
if ("twitch")
|
||||
message = "twitches violently."
|
||||
m_type = 1
|
||||
|
||||
if ("twitch_s")
|
||||
message = "twitches."
|
||||
m_type = 1
|
||||
|
||||
if ("faint")
|
||||
message = "faints."
|
||||
if(src.sleeping)
|
||||
return //Can't faint while asleep
|
||||
src.sleeping += 10 //Short-short nap
|
||||
m_type = 1
|
||||
|
||||
if ("cough")
|
||||
if(miming)
|
||||
message = "appears to cough!"
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
message = "coughs!"
|
||||
m_type = 2
|
||||
else
|
||||
message = "makes a strong noise."
|
||||
m_type = 2
|
||||
|
||||
if ("frown")
|
||||
message = "frowns."
|
||||
m_type = 1
|
||||
|
||||
if ("nod")
|
||||
message = "nods."
|
||||
m_type = 1
|
||||
|
||||
if ("blush")
|
||||
message = "blushes."
|
||||
m_type = 1
|
||||
|
||||
if ("wave")
|
||||
message = "waves."
|
||||
m_type = 1
|
||||
|
||||
if ("gasp")
|
||||
if(miming)
|
||||
message = "appears to be gasping!"
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
message = "gasps!"
|
||||
m_type = 2
|
||||
else
|
||||
message = "makes a weak noise."
|
||||
m_type = 2
|
||||
|
||||
if ("deathgasp")
|
||||
message = "[species.death_message]"
|
||||
m_type = 1
|
||||
|
||||
if ("giggle")
|
||||
if(miming)
|
||||
message = "giggles silently!"
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
message = "giggles."
|
||||
m_type = 2
|
||||
else
|
||||
message = "makes a noise."
|
||||
m_type = 2
|
||||
|
||||
if ("glare")
|
||||
var/M = null
|
||||
if (param)
|
||||
for (var/mob/A in view(null, null))
|
||||
if (param == A.name)
|
||||
M = A
|
||||
break
|
||||
if (!M)
|
||||
param = null
|
||||
|
||||
if (param)
|
||||
message = "glares at [param]."
|
||||
else
|
||||
message = "glares."
|
||||
|
||||
if ("stare")
|
||||
var/M = null
|
||||
if (param)
|
||||
for (var/mob/A in view(null, null))
|
||||
if (param == A.name)
|
||||
M = A
|
||||
break
|
||||
if (!M)
|
||||
param = null
|
||||
|
||||
if (param)
|
||||
message = "stares at [param]."
|
||||
else
|
||||
message = "stares."
|
||||
|
||||
if ("look")
|
||||
var/M = null
|
||||
if (param)
|
||||
for (var/mob/A in view(null, null))
|
||||
if (param == A.name)
|
||||
M = A
|
||||
break
|
||||
|
||||
if (!M)
|
||||
param = null
|
||||
|
||||
if (param)
|
||||
message = "looks at [param]."
|
||||
else
|
||||
message = "looks."
|
||||
m_type = 1
|
||||
|
||||
if ("grin")
|
||||
message = "grins."
|
||||
m_type = 1
|
||||
|
||||
if ("cry")
|
||||
if(miming)
|
||||
message = "cries."
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
message = "cries."
|
||||
m_type = 2
|
||||
else
|
||||
message = "makes a weak noise. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"] [get_visible_gender() == NEUTER ? "frown" : "frowns"]."
|
||||
m_type = 2
|
||||
|
||||
if ("sigh")
|
||||
if(miming)
|
||||
message = "sighs."
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
message = "sighs."
|
||||
m_type = 2
|
||||
else
|
||||
message = "makes a weak noise."
|
||||
m_type = 2
|
||||
|
||||
if("slap", "slaps")
|
||||
m_type = 1
|
||||
if(!restrained())
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(1, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(M)
|
||||
|
||||
playsound(loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
var/show_ssd
|
||||
var/mob/living/carbon/human/H
|
||||
if(ishuman(src))
|
||||
H = src
|
||||
show_ssd = H.species.show_ssd
|
||||
if(H && show_ssd && !H.client && !H.teleop)
|
||||
if(H.bg)
|
||||
to_chat(H, span("danger", "You sense some disturbance to your physical body!"))
|
||||
else if(!vr_mob)
|
||||
message = "<span class='danger'>slaps [M] across the face, but they do not respond... Maybe they have S.S.D?</span>"
|
||||
else if(H.client && H.willfully_sleeping)
|
||||
message = "<span class='danger'>slaps [M] across the face, waking them up. Ouch!</span>"
|
||||
H.sleeping = 0
|
||||
H.willfully_sleeping = FALSE
|
||||
else
|
||||
message = "<span class='danger'>slaps [M] across the face. Ouch!</span>"
|
||||
else
|
||||
message = "<span class='danger'>slaps [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]!</span>"
|
||||
playsound(loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
SSfeedback.IncrementSimpleStat("selfslap")
|
||||
|
||||
if("snap", "snaps")
|
||||
m_type = 2
|
||||
var/mob/living/carbon/human/H = src
|
||||
var/obj/item/organ/external/L = H.get_organ(BP_L_HAND)
|
||||
var/obj/item/organ/external/R = H.get_organ(BP_R_HAND)
|
||||
var/left_hand_good = 0
|
||||
var/right_hand_good = 0
|
||||
if(L && (!(L.status & ORGAN_DESTROYED)) && (!(L.status & ORGAN_BROKEN)))
|
||||
left_hand_good = 1
|
||||
if(R && (!(R.status & ORGAN_DESTROYED)) && (!(R.status & ORGAN_BROKEN)))
|
||||
right_hand_good = 1
|
||||
|
||||
if(!left_hand_good && !right_hand_good)
|
||||
to_chat(usr, "You need at least one hand in good working order to snap your fingers.")
|
||||
return
|
||||
|
||||
message = "snaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] fingers."
|
||||
playsound(loc, 'sound/effects/fingersnap.ogg', 50, 1, -3)
|
||||
|
||||
if ("laugh")
|
||||
if(miming)
|
||||
message = "acts out a laugh."
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
message = "laughs."
|
||||
m_type = 2
|
||||
else
|
||||
message = "makes a noise."
|
||||
m_type = 2
|
||||
|
||||
if ("mumble")
|
||||
message = "mumbles!"
|
||||
m_type = 2
|
||||
if(miming)
|
||||
m_type = 1
|
||||
|
||||
if ("grumble")
|
||||
if(miming)
|
||||
message = "grumbles!"
|
||||
m_type = 1
|
||||
if (!muzzled)
|
||||
message = "grumbles!"
|
||||
m_type = 2
|
||||
else
|
||||
message = "makes a noise."
|
||||
m_type = 2
|
||||
|
||||
if ("groan")
|
||||
if(miming)
|
||||
message = "appears to groan!"
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
message = "groans!"
|
||||
m_type = 2
|
||||
else
|
||||
message = "makes a loud noise."
|
||||
m_type = 2
|
||||
|
||||
if ("moan")
|
||||
if(miming)
|
||||
message = "appears to moan!"
|
||||
m_type = 1
|
||||
else
|
||||
message = "moans!"
|
||||
m_type = 2
|
||||
|
||||
if ("johnny")
|
||||
var/M
|
||||
if (param)
|
||||
M = param
|
||||
if (!M)
|
||||
param = null
|
||||
else
|
||||
if(miming)
|
||||
message = "takes a drag from a cigarette and blows \"[M]\" out in smoke."
|
||||
m_type = 1
|
||||
else
|
||||
message = "says, \"[M], please. He had a family.\" [src.name] takes a drag from a cigarette and blows his name out in smoke."
|
||||
m_type = 2
|
||||
|
||||
if ("point")
|
||||
if (!src.restrained())
|
||||
var/mob/M = null
|
||||
if (param)
|
||||
for (var/atom/A as mob|obj|turf|area in view(null, null))
|
||||
if (param == A.name)
|
||||
M = A
|
||||
break
|
||||
|
||||
if (!M)
|
||||
message = "points."
|
||||
else
|
||||
pointed(M)
|
||||
|
||||
if (M)
|
||||
message = "points to [M]."
|
||||
else
|
||||
m_type = 1
|
||||
|
||||
if ("raise")
|
||||
if (!src.restrained())
|
||||
message = "raises a hand."
|
||||
m_type = 1
|
||||
|
||||
if("shake")
|
||||
message = "shakes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] head."
|
||||
m_type = 1
|
||||
|
||||
if ("shrug")
|
||||
message = "shrugs."
|
||||
m_type = 1
|
||||
|
||||
if ("signal")
|
||||
if (!src.restrained())
|
||||
var/t1 = round(text2num(param))
|
||||
if (isnum(t1))
|
||||
if (t1 <= 5 && (!src.r_hand || !src.l_hand))
|
||||
message = "raises [t1] finger\s."
|
||||
else if (t1 <= 10 && (!src.r_hand && !src.l_hand))
|
||||
message = "raises [t1] finger\s."
|
||||
m_type = 1
|
||||
|
||||
if ("smile")
|
||||
message = "smiles."
|
||||
m_type = 1
|
||||
|
||||
if ("shiver")
|
||||
message = "shivers."
|
||||
m_type = 2
|
||||
if(miming)
|
||||
m_type = 1
|
||||
|
||||
if ("pale")
|
||||
message = "goes pale for a second."
|
||||
m_type = 1
|
||||
|
||||
if ("tremble")
|
||||
message = "trembles in fear!"
|
||||
m_type = 1
|
||||
|
||||
if ("sneeze")
|
||||
if (miming)
|
||||
message = "sneezes."
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
message = "sneezes."
|
||||
m_type = 2
|
||||
else
|
||||
message = "makes a strange noise."
|
||||
m_type = 2
|
||||
|
||||
if ("sniff")
|
||||
message = "sniffs."
|
||||
m_type = 2
|
||||
if(miming)
|
||||
m_type = 1
|
||||
|
||||
if ("snore")
|
||||
if (miming)
|
||||
message = "sleeps soundly."
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
message = "snores."
|
||||
m_type = 2
|
||||
else
|
||||
message = "makes a noise."
|
||||
m_type = 2
|
||||
|
||||
if ("whimper")
|
||||
if (miming)
|
||||
message = "appears hurt."
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
message = "whimpers."
|
||||
m_type = 2
|
||||
else
|
||||
message = "makes a weak noise."
|
||||
m_type = 2
|
||||
|
||||
if ("wink")
|
||||
message = "winks."
|
||||
m_type = 1
|
||||
|
||||
if ("yawn")
|
||||
if (!muzzled)
|
||||
message = "yawns."
|
||||
m_type = 2
|
||||
if(miming)
|
||||
m_type = 1
|
||||
|
||||
if ("collapse")
|
||||
Paralyse(2)
|
||||
message = "collapses!"
|
||||
m_type = 2
|
||||
if(miming)
|
||||
m_type = 1
|
||||
|
||||
if("hug")
|
||||
m_type = 1
|
||||
if (!src.restrained())
|
||||
var/M = null
|
||||
if (param)
|
||||
for (var/mob/A in view(1, null))
|
||||
if (param == A.name)
|
||||
M = A
|
||||
break
|
||||
if (M == src)
|
||||
M = null
|
||||
|
||||
if (M)
|
||||
message = "hugs [M]."
|
||||
else
|
||||
message = "hugs [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]."
|
||||
|
||||
if ("handshake")
|
||||
m_type = 1
|
||||
if (!src.restrained() && !src.r_hand)
|
||||
var/mob/M = null
|
||||
if (param)
|
||||
for (var/mob/A in view(1, null))
|
||||
if (param == A.name)
|
||||
M = A
|
||||
break
|
||||
if (M == src)
|
||||
M = null
|
||||
|
||||
if (M)
|
||||
if (M.canmove && !M.r_hand && !M.restrained())
|
||||
message = "shakes hands with [M]."
|
||||
else
|
||||
message = "holds out [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] hand to [M]."
|
||||
|
||||
if("dap")
|
||||
m_type = 1
|
||||
if (!src.restrained())
|
||||
var/M = null
|
||||
if (param)
|
||||
for (var/mob/A in view(1, null))
|
||||
if (param == A.name)
|
||||
M = A
|
||||
break
|
||||
if (M)
|
||||
message = "gives daps to [M]."
|
||||
else
|
||||
message = "sadly can't find anybody to give daps to, and daps [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]. Shameful."
|
||||
|
||||
if ("scream")
|
||||
if(stat >= UNCONSCIOUS)
|
||||
return
|
||||
if (miming)
|
||||
message = "acts out a scream!"
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
message = pick(species.scream_emote)
|
||||
else
|
||||
message = "makes a very loud noise."
|
||||
m_type = 2
|
||||
if("swish")
|
||||
src.animate_tail_once()
|
||||
|
||||
if("idle")
|
||||
src.animate_tail_reset()
|
||||
|
||||
if("wag", "sway")
|
||||
src.animate_tail_start()
|
||||
|
||||
if("qwag", "fastsway")
|
||||
src.animate_tail_fast()
|
||||
|
||||
if("swag", "stopsway")
|
||||
src.animate_tail_stop()
|
||||
|
||||
if("beep")
|
||||
if (!isipc(src))
|
||||
to_chat(src, span("notice", "You're not a Machine!"))
|
||||
else
|
||||
var/M = null
|
||||
if(param)
|
||||
for (var/mob/A in view(null, null))
|
||||
if (param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
|
||||
if (param)
|
||||
message = "beeps at [param]."
|
||||
else
|
||||
message = "beeps."
|
||||
playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0)
|
||||
m_type = 1
|
||||
|
||||
if("ping")
|
||||
if (!isipc(src))
|
||||
to_chat(src, span("notice", "You're not a machine!"))
|
||||
else
|
||||
var/M = null
|
||||
if(param)
|
||||
for (var/mob/A in view(null, null))
|
||||
if (param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
|
||||
if (param)
|
||||
message = "pings at [param]."
|
||||
else
|
||||
message = "pings."
|
||||
playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
|
||||
m_type = 1
|
||||
|
||||
if("buzz")
|
||||
if (!isipc(src))
|
||||
to_chat(src, span("notice", "You're not a machine!"))
|
||||
else
|
||||
var/M = null
|
||||
if(param)
|
||||
for (var/mob/A in view(null, null))
|
||||
if (param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
|
||||
if (param)
|
||||
message = "buzzes at [param]."
|
||||
else
|
||||
message = "buzzes."
|
||||
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
|
||||
m_type = 1
|
||||
|
||||
if("chirp")
|
||||
if(!is_diona(src))
|
||||
to_chat(src, "<span class='warning'>You are not a Diona!</span>")
|
||||
return
|
||||
message = "chirps!"
|
||||
playsound(src.loc, 'sound/misc/nymphchirp.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("chirp_song")
|
||||
if(!is_diona(src))
|
||||
to_chat(src, "<span class='warning'>You are not a Diona!</span>")
|
||||
return
|
||||
message = "chirps a song!"
|
||||
for(var/mob/living/carbon/alien/diona/D in src)
|
||||
playsound(src.loc, 'sound/misc/nymphchirp.ogg', pick(list(5, 10, 20, 40)), 0)
|
||||
sleep(pick(list(5, 10, 15, 20)))
|
||||
m_type = 2
|
||||
|
||||
if("chitter")
|
||||
if(!isvaurca(src))
|
||||
to_chat(src, "<span class='warning'>You don't have the means to do this!</span>")
|
||||
return
|
||||
message = "chitters."
|
||||
playsound(src.loc, pick('sound/misc/zapsplat/chitter1.ogg', 'sound/misc/zapsplat/chitter2.ogg', 'sound/misc/zapsplat/chitter3.ogg'), 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("vomit")
|
||||
if (!check_has_mouth(src))
|
||||
to_chat(src, "<span class='warning'>You are unable to vomit.</span>")
|
||||
return
|
||||
delayed_vomit()
|
||||
return
|
||||
|
||||
|
||||
if ("help")
|
||||
to_chat(src, "blink, blink_r, blush, bow-(none)/mob, burp, choke, chuckle, clap, golfclap, collapse, cough, cry, custom, deathgasp, drool, eyebrow, frown, gasp, giggle, groan, grumble, handshake, hug-(none)/mob, glare-(none)/mob, grin, laugh, look-(none)/mob, moan, mumble, nod, pale, point-atom, raise, salute, shake, shiver, shrug, sigh, signal-#1-10, smile, sneeze, sniff, snore, stare-(none)/mob, tremble, twitch, twitch_s, whimper, wink, yawn, swish, sway/wag, fastsway/qwag, stopsway/swag, beep, ping, buzz, slap, snap, chitter, vomit")
|
||||
|
||||
else
|
||||
to_chat(src, span("notice", "Unusable emote '[act]'. Say *help for a list."))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (message)
|
||||
log_emote("[name]/[key] : [message]",ckey=key_name(src))
|
||||
custom_emote(m_type,message)
|
||||
|
||||
|
||||
/mob/living/carbon/human/verb/pose()
|
||||
set name = "Set Pose"
|
||||
set desc = "Sets a description which will be shown when someone examines you."
|
||||
set category = "IC"
|
||||
|
||||
pose = sanitize(input(usr, "This is [src]. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"]...", "Pose", html_decode(pose)) as message)
|
||||
pose = sanitize(input(usr, "This is [src]. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"]...", "Pose", html_decode(pose)) as message)
|
||||
|
||||
/mob/living/carbon/human/verb/set_flavor()
|
||||
set name = "Set Flavour Text"
|
||||
|
||||
@@ -105,8 +105,7 @@
|
||||
if(!(lying || resting))
|
||||
if(can_feel_pain())
|
||||
emote("scream")
|
||||
custom_emote(1, "collapses!")
|
||||
Weaken(5) //can't emote while weakened, apparently.
|
||||
emote("collapse")
|
||||
|
||||
/mob/living/carbon/human/proc/handle_grasp()
|
||||
if(!l_hand && !r_hand)
|
||||
|
||||
@@ -97,7 +97,6 @@
|
||||
var/death_sound
|
||||
var/death_message = "falls limp and stops moving..."
|
||||
var/death_message_range = 2
|
||||
var/list/scream_emote = list("screams!")
|
||||
var/knockout_message = "has been knocked unconscious!"
|
||||
var/halloss_message = "slumps to the ground, too weak to continue fighting."
|
||||
var/halloss_message_self = "You're in too much pain to keep going..."
|
||||
@@ -150,6 +149,13 @@
|
||||
"Your chilly flesh stands out in goosebumps."
|
||||
)
|
||||
|
||||
// Order matters, higher pain level should be higher up
|
||||
var/list/pain_emotes_with_pain_level = list(
|
||||
list(/decl/emote/audible/scream, /decl/emote/audible/whimper, /decl/emote/audible/moan, /decl/emote/audible/cry) = 70,
|
||||
list(/decl/emote/audible/grunt, /decl/emote/audible/groan, /decl/emote/audible/moan) = 40,
|
||||
list(/decl/emote/audible/grunt, /decl/emote/audible/groan) = 10,
|
||||
)
|
||||
|
||||
// HUD data vars.
|
||||
var/datum/hud_data/hud
|
||||
var/hud_type
|
||||
@@ -615,3 +621,13 @@
|
||||
|
||||
/datum/species/proc/handle_despawn()
|
||||
return
|
||||
|
||||
/datum/species/proc/get_pain_emote(var/mob/living/carbon/human/H, var/pain_power)
|
||||
if(flags & NO_PAIN)
|
||||
return
|
||||
for(var/pain_emotes in pain_emotes_with_pain_level)
|
||||
var/pain_level = pain_emotes_with_pain_level[pain_emotes]
|
||||
if(pain_level >= pain_power)
|
||||
// This assumes that if a pain-level has been defined it also has a list of emotes to go with it
|
||||
var/decl/emote/E = decls_repository.get_decl(pick(pain_emotes))
|
||||
return E.key
|
||||
|
||||
@@ -52,8 +52,6 @@
|
||||
organ_med_burn_message = "<span class='danger'><font size=3>The nymph making up our %PARTNAME% burns terribly!</font></span>"
|
||||
organ_high_burn_message = "<span class='danger'><font size=3>The nymph making up our %PARTNAME% screams in agony at the burning!</font></span>"
|
||||
|
||||
scream_emote = list("creaks in pain!", "rustles in agony!")
|
||||
scream_emote = "screams!"
|
||||
halloss_message = "creaks and crumbles to the floor."
|
||||
halloss_message_self = "We can't take this much pain..."
|
||||
pain_messages = list("We're in pain", "We hurt so much", "We can't stand the pain")
|
||||
|
||||
@@ -88,6 +88,12 @@
|
||||
"Your scales bristle against the cold."
|
||||
)
|
||||
|
||||
pain_emotes_with_pain_level = list(
|
||||
list(/decl/emote/audible/wheeze, /decl/emote/audible/roar, /decl/emote/audible/bellow) = 80,
|
||||
list(/decl/emote/audible/grunt, /decl/emote/audible/groan, /decl/emote/audible/wheeze, /decl/emote/audible/hiss) = 50,
|
||||
list(/decl/emote/audible/grunt, /decl/emote/audible/groan, /decl/emote/audible/hiss) = 20,
|
||||
)
|
||||
|
||||
pain_messages = list("It hurts so much", "You really need some painkillers", "Ancestors, it hurts")
|
||||
|
||||
move_trail = /obj/effect/decal/cleanable/blood/tracks/claw
|
||||
|
||||
@@ -95,8 +95,8 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
/mob/living/proc/get_default_language()
|
||||
return default_language
|
||||
|
||||
/mob/living/proc/is_muzzled()
|
||||
return 0
|
||||
/mob/proc/is_muzzled()
|
||||
return istype(wear_mask, /obj/item/clothing/mask/muzzle)
|
||||
|
||||
/mob/living/proc/handle_speech_problems(var/message, var/verb, var/message_mode)
|
||||
var/list/returns[4]
|
||||
|
||||
@@ -120,11 +120,6 @@
|
||||
|
||||
return verb
|
||||
|
||||
|
||||
/mob/proc/emote(var/act, var/type, var/message)
|
||||
if(act == "me")
|
||||
return custom_emote(type, message)
|
||||
|
||||
/mob/proc/get_ear()
|
||||
// returns an atom representing a location on the map from which this
|
||||
// mob can hear things
|
||||
|
||||
@@ -43,6 +43,12 @@ mob/var/next_pain_time = 0
|
||||
else
|
||||
to_chat(src, "<span class='warning'>[message]</span>")
|
||||
|
||||
var/force_emote = species.get_pain_emote(src, power)
|
||||
if(force_emote && prob(power))
|
||||
var/decl/emote/use_emote = usable_emotes[force_emote]
|
||||
if(!(use_emote.message_type == AUDIBLE_MESSAGE && silent))
|
||||
emote(force_emote)
|
||||
|
||||
next_pain_time = world.time + (100-power)
|
||||
|
||||
/mob/living/carbon/human/proc/handle_pain()
|
||||
@@ -81,7 +87,7 @@ mob/var/next_pain_time = 0
|
||||
if(70 to 10000)
|
||||
msg = "[burning ? species.organ_high_burn_message : species.organ_high_pain_message]"
|
||||
msg = replacetext(msg, "%PARTNAME%", damaged_organ.name)
|
||||
custom_pain(msg, maxdam, prob(10), damaged_organ, TRUE)
|
||||
custom_pain(msg, maxdam, prob(30), damaged_organ, TRUE)
|
||||
|
||||
// Damage to internal organs hurts a lot.
|
||||
for(var/obj/item/organ/internal/I in internal_organs)
|
||||
|
||||
@@ -261,10 +261,6 @@
|
||||
if(isanimal(target))
|
||||
target.visible_message("<b>[target]</b> twitches, foaming at the mouth.")
|
||||
L.apply_damage(35, TOX) //temporary until simple_mob paralysis actually works.
|
||||
/* var/mob/living/simple_animal/M = target
|
||||
spawn(60)
|
||||
target.visible_message("<b>[target]</b> collapses.")
|
||||
M.Sleeping(1200)*/ //commented out until simple_mob paralysis actually works.
|
||||
..()
|
||||
|
||||
/* Miscellaneous */
|
||||
|
||||
@@ -525,7 +525,7 @@ CARGO_LOAD_ITEMS_FROM json
|
||||
|
||||
|
||||
# Forces the maploader to load the specified map path. Valid options: aurora, runtime
|
||||
FORCE_MAP aurora
|
||||
FORCE_MAP runtime
|
||||
|
||||
# Reminds ticket handlers/all admin staff of not-closed tickets after this many SECONDS.
|
||||
#TICKET_REMINDER_PERIOD 600
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
# balance
|
||||
# admin
|
||||
# backend
|
||||
# security
|
||||
# refactor
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: MattAtlas
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- rscadd: "Ported an overhauled emote backend."
|
||||
- rscadd: "Added automatic pain messages for all species."
|
||||
- rscadd: "Added a multichirp emote for dionae."
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user