Merge remote-tracking branch 'VOREStation/master' into upstream-merge-8058

This commit is contained in:
Unknown
2021-05-05 14:12:03 -04:00
88 changed files with 2440 additions and 1770 deletions
+1 -1
View File
@@ -73,7 +73,7 @@
if(src.loc && istype(loc,/obj/belly) || istype(loc,/obj/item/device/dogborg/sleeper)) deathmessage = "no message" //VOREStation Add - Prevents death messages from inside mobs
facing_dir = null
if(!gibbed && deathmessage != "no message") // This is gross, but reliable. Only brains use it.
if(!gibbed && deathmessage != DEATHGASP_NO_MESSAGE)
src.visible_message("<b>\The [src.name]</b> [deathmessage]")
set_stat(DEAD)
+2 -57
View File
@@ -1,64 +1,9 @@
// 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/range=world.view)
if(stat || !use_me && usr == src)
to_chat(src, "You are unable to emote.")
return
var/muzzled = is_muzzled()
if(m_type == 2 && muzzled) return
var/input
if(!message)
input = sanitize_or_reflect(input(src,"Choose an emote to display.") as text|null, src) //VOREStation Edit - Reflect too long messages, within reason
else
input = message
if(input)
log_emote(message,src) //Log before we add junk
message = "<span class='emote'><B>[src]</B> [input]</span>"
else
return
if (message)
message = encode_html_emphasis(message)
// Hearing gasp and such every five seconds is not good emotes were not global for a reason.
// Maybe some people are okay with that.
var/turf/T = get_turf(src)
if(!T) return
var/list/in_range = get_mobs_and_objs_in_view_fast(T,range,2,remote_ghosts = client ? TRUE : FALSE)
var/list/m_viewers = in_range["mobs"]
var/list/o_viewers = in_range["objs"]
for(var/mob in m_viewers)
var/mob/M = mob
spawn(0) // It's possible that it could be deleted in the meantime, or that it runtimes.
if(M)
if(isobserver(M))
//VOREStation Edit Start
var/mob/observer/dead/D = M
if(ckey || (src in view(D)))
M.show_message(message, m_type)
message = "<span class='emote'><B>[src]</B> ([ghost_follow_link(src, M)]) [input]</span>"
else
M.show_message(message, m_type)
//VOREStation Edit End
for(var/obj in o_viewers)
var/obj/O = obj
spawn(0)
if(O)
O.see_emote(src, message, m_type)
// Shortcuts for above proc
/mob/proc/visible_emote(var/act_desc)
custom_emote(1, act_desc)
custom_emote(VISIBLE_MESSAGE, act_desc)
/mob/proc/audible_emote(var/act_desc)
custom_emote(2, act_desc)
custom_emote(AUDIBLE_MESSAGE, act_desc)
/mob/proc/emote_dead(var/message)
@@ -1,3 +1,29 @@
var/list/_nymph_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/visible/spin,
/decl/emote/visible/sidestep,
/decl/emote/audible/hiss,
/decl/emote/audible,
/decl/emote/audible/scretch,
/decl/emote/audible/choke,
/decl/emote/audible/gnarl,
/decl/emote/audible/bug_hiss,
/decl/emote/audible/bug_chitter,
/decl/emote/audible/chirp
)
/mob/living/carbon/alien/diona
name = "diona nymph"
voice_name = "diona nymph"
@@ -20,6 +46,9 @@
holder_type = /obj/item/weapon/holder/diona
var/obj/item/hat
/mob/living/carbon/alien/diona/get_default_emotes()
return global._nymph_default_emotes
/mob/living/carbon/alien/diona/Initialize()
. = ..()
species = GLOB.all_species[SPECIES_DIONA]
+30 -107
View File
@@ -1,108 +1,31 @@
/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)
var/list/_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/twitch_v,
/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/visible/spin,
/decl/emote/visible/sidestep,
/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,
/decl/emote/audible/chirp
)
var/muzzled = is_muzzled()
act = lowertext(act)
switch(act)
if("sign")
if(!restrained())
var/num = null
if(text2num(param))
num = "the number [text2num(param)]"
if(num)
message = "<B>[src]</B> signs [num]."
m_type = 1
if("burp")
if(!muzzled)
message = "<B>[src]</B> burps."
m_type = 2
if("deathgasp")
message = "<B>[src]</B> lets out a waning guttural screech, green blood bubbling from its maw."
m_type = 2
if("scratch")
if(!restrained())
message = "<B>[src]</B> scratches."
m_type = 1
if("whimper")
if(!muzzled)
message = "<B>[src]</B> whimpers."
m_type = 2
if("tail")
message = "<B>[src]</B> waves its tail."
m_type = 1
if("gasp")
message = "<B>[src]</B> gasps."
m_type = 2
if("shiver")
message = "<B>[src]</B> shivers."
m_type = 2
if("drool")
message = "<B>[src]</B> drools."
m_type = 1
if("scretch")
if(!muzzled)
message = "<B>[src]</B> scretches."
m_type = 2
if("choke")
message = "<B>[src]</B> chokes."
m_type = 2
if("moan")
message = "<B>[src]</B> moans!"
m_type = 2
if("nod")
message = "<B>[src]</B> nods its head."
m_type = 1
// if("sit")
// message = "<B>[src]</B> sits down." //Larvan can't sit down, /N
// m_type = 1
if("sway")
message = "<B>[src]</B> sways around dizzily."
m_type = 1
if("sulk")
message = "<B>[src]</B> sulks down sadly."
m_type = 1
if("twitch")
message = "<B>[src]</B> twitches."
m_type = 1
if("twitch_v")
message = "<B>[src]</B> twitches violently."
m_type = 1
if("dance")
if(!restrained())
message = "<B>[src]</B> dances around happily."
m_type = 1
if("roll")
if(!restrained())
message = "<B>[src]</B> rolls."
m_type = 1
if("shake")
message = "<B>[src]</B> shakes its head."
m_type = 1
if("gnarl")
if(!muzzled)
message = "<B>[src]</B> gnarls and shows its teeth.."
m_type = 2
if("jump")
message = "<B>[src]</B> jumps!"
m_type = 1
if("hiss_")
message = "<B>[src]</B> hisses softly."
m_type = 1
if("collapse")
Paralyse(2)
message = "<B>[src]</B> collapses!"
m_type = 2
if("chirp")
message = "<B>[src]</B> chirps!"
playsound(src, 'sound/misc/nymphchirp.ogg', 50, 0)
m_type = 2
if("help")
to_chat(src, "<span class='filter_say'>burp, chirp, choke, collapse, dance, drool, gasp, shiver, gnarl, jump, moan, nod, roll, scratch,\nscretch, shake, sign-#, sulk, sway, tail, twitch, whimper</span>")
if(!stat)
..(act, m_type, message)
/mob/living/carbon/alien/get_default_emotes()
. = global._alien_default_emotes
@@ -3,7 +3,7 @@
container.icon_state = "mmi_dead"
return ..(gibbed,"beeps shrilly as the MMI flatlines!")
else
return ..(gibbed,"no message")
return ..(gibbed, DEATHGASP_NO_MESSAGE)
/mob/living/carbon/brain/gib()
if(istype(container, /obj/item/device/mmi))
+15 -45
View File
@@ -1,47 +1,17 @@
/mob/living/carbon/brain/emote(var/act,var/m_type=1,var/message = null)
if(!(container && istype(container, /obj/item/device/mmi)))//No MMI, no emotes
return
var/list/_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/beep,
/decl/emote/audible/boop,
/decl/emote/visible/blink,
/decl/emote/visible/flash
)
if(findtext(act, "-", 1, null))
var/t1 = findtext(act, "-", 1, null)
act = copytext(act, 1, t1)
/mob/living/carbon/brain/can_emote()
return (istype(container, /obj/item/device/mmi) && ..())
if(stat == DEAD)
return
switch(act)
if("alarm")
to_chat(src, "You sound an alarm.")
message = "<B>[src]</B> sounds an alarm."
m_type = 2
if("alert")
to_chat(src, "You let out a distressed noise.")
message = "<B>[src]</B> lets out a distressed noise."
m_type = 2
if("notice")
to_chat(src, "You play a loud tone.")
message = "<B>[src]</B> plays a loud tone."
m_type = 2
if("flash")
message = "The lights on <B>[src]</B> flash quickly."
m_type = 1
if("blink")
message = "<B>[src]</B> blinks."
m_type = 1
if("whistle")
to_chat(src, "You whistle.")
message = "<B>[src]</B> whistles."
m_type = 2
if("beep")
to_chat(src, "You beep.")
message = "<B>[src]</B> beeps."
m_type = 2
if("boop")
to_chat(src, "You boop.")
message = "<B>[src]</B> boops."
m_type = 2
if("help")
to_chat(src, "<span class='filter_say'>alarm, alert, notice, flash, blink, whistle, beep, boop</span>")
if(!stat)
..(act, m_type, message)
/mob/living/carbon/brain/get_default_emotes()
return global._brain_default_emotes
+137 -840
View File
@@ -1,843 +1,140 @@
/mob/living/carbon/human/emote(var/act,var/m_type=1,var/message = null)
var/param = null
var/datum/gender/T = gender_datums[get_visible_gender()]
if(findtext(act, "-", 1, null))
var/t1 = findtext(act, "-", 1, null)
param = copytext(act, t1 + 1, length(act) + 1)
act = copytext(act, 1, t1)
var/muzzled = is_muzzled()
//var/m_type = 1
for(var/obj/item/organ/O in organs)
for(var/obj/item/weapon/implant/I in O)
if(I.implanted)
I.trigger(act, src)
if(stat == DEAD && (act != "deathgasp"))
return
if(attempt_vr(src, "handle_emote_vr", list(act, m_type, message))) return //VOREStation Add - Custom Emote Handler
switch(act)
if("airguitar")
if(!restrained())
message = "is strumming the air and headbanging like a safari chimp."
m_type = 1
//Machine-only emotes
if("ping", "beep", "buzz", "yes", "ye", "dwoop", "no", "rcough", "rsneeze")
if(!isSynthetic())
to_chat(src, "<span class='warning'>You are not a synthetic.</span>")
return
var/M = null
if(param)
for(var/mob/A in view(null, null))
if(param == A.name)
M = A
break
if(!M)
param = null
var/display_msg = "beeps"
var/use_sound = 'sound/machines/twobeep.ogg'
if(act == "buzz")
display_msg = "buzzes"
use_sound = 'sound/machines/buzz-sigh.ogg'
else if(act == "ping")
display_msg = "pings"
use_sound = 'sound/machines/ping.ogg'
else if(act == "yes" || act == "ye")
display_msg = "emits an affirmative blip"
use_sound = 'sound/machines/synth_yes.ogg'
else if(act == "dwoop")
display_msg = "chirps happily"
use_sound = 'sound/machines/dwoop.ogg'
else if(act == "no")
display_msg = "emits a negative blip"
use_sound = 'sound/machines/synth_no.ogg'
else if(act == "rcough")
display_msg = "emits a robotic cough"
if(get_gender() == FEMALE)
use_sound = pick('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg')
else
use_sound = pick('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg')
else if(act == "rsneeze")
display_msg = "emits a robotic sneeze"
if(get_gender() == FEMALE)
use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg'
else
use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg'
if(param)
message = "[display_msg] at [param]."
else
message = "[display_msg]."
playsound(src, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add
m_type = 1
//Promethean-only emotes
if("squish")
/* VOREStation Removal Start - Eh. People can squish maybe.
if(species.bump_flag != SLIME) //This should definitely do it.
to_chat(src, "<span class='warning'>You are not a slime thing!</span>")
return
*/ //VOREStation Removal End
playsound(src, 'sound/effects/slime_squish.ogg', 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add //Credit to DrMinky (freesound.org) for the sound.
message = "squishes."
m_type = 1
if("chirp")
/* VOREStation Removal Start - Eh. People can chirp maybe.
if ((species.bump_flag != SLIME) && (species.name != SPECIES_DIONA))
to_chat(src, "<span class='warning'>You are not a diona or slime!</span>")
return
*/ //VOREStation Removal End
playsound(src, 'sound/misc/nymphchirp.ogg', 50, 0)
message = "chirps."
m_type = 2
//Skrell-only emotes
if("warble")
if(species.name != SPECIES_SKRELL)
to_chat(src, "<span class='warning'>You are not a Skrell!</span>")
return
playsound(src, 'sound/effects/warble.ogg', 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add // Copyright CC BY 3.0 alienistcog (freesound.org) for the sound.
message = "warbles."
m_type = 2
if("blink")
message = "blinks."
m_type = 1
if("blink_r")
message = "blinks rapidly."
m_type = 1
if("bow")
if(!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(miming)
return
m_type = 2
else
alert("Unable to use this emote, must be either hearable or visible.")
return
return custom_emote(m_type, input)
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(client)
if(client.prefs.muted & MUTE_IC)
to_chat(src, "<font color='red'>You cannot send IC messages (muted).</font>")
return
if(stat)
return
if(!(message))
return
return custom_emote(m_type, message)
if("salute")
if(!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 [T.his] 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(!restrained())
message = "claps."
playsound(src, 'sound/misc/clapping.ogg')
m_type = 2
if(miming)
m_type = 1
if("flap")
if(!restrained())
message = "flaps [T.his] wings."
m_type = 2
if(miming)
m_type = 1
if("aflap")
if(!restrained())
message = "flaps [T.his] 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."
m_type = 1
if("twitch_v")
message = "twitches violently."
m_type = 1
if("faint")
message = "faints."
if(sleeping)
return //Can't faint while asleep
Sleeping(10)
m_type = 1
if("cough", "coughs")
if(miming)
message = "appears to cough!"
m_type = 1
else
if(!muzzled)
var/robotic = 0
m_type = 2
if(should_have_organ(O_LUNGS))
var/obj/item/organ/internal/lungs/L = internal_organs_by_name[O_LUNGS]
if(L && L.robotic == 2) //Hard-coded to 2, incase we add lifelike robotic lungs
robotic = 1
if(!robotic && !isSynthetic())
message = "coughs!"
if(get_gender() == FEMALE)
if(species.female_cough_sounds)
playsound(src, pick(species.female_cough_sounds), 120, preference = /datum/client_preference/emote_noises) //VOREStation Add
else
if(species.male_cough_sounds)
playsound(src, pick(species.male_cough_sounds), 120, preference = /datum/client_preference/emote_noises) //VOREStation Add
else
message = "emits a robotic cough"
var/use_sound
if(get_gender() == FEMALE)
use_sound = pick('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg')
else
use_sound = pick('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg')
playsound(src, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add
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.get_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. [T.he] [get_visible_gender() == NEUTER ? "frown" : "frowns"]." // no good, non-unwieldy alternative to this ternary at the moment
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("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.\" [name] takes a drag from a cigarette and blows his name out in smoke."
m_type = 2
if("point")
if(!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("crack")
if(!restrained())
message = "cracks [T.his] knuckles."
playsound(src, 'sound/voice/knuckles.ogg', 50, 1, preference = /datum/client_preference/emote_noises)
m_type = 1
if("raise")
if(!restrained())
message = "raises a hand."
m_type = 1
if("shake")
message = "shakes [T.his] head."
m_type = 1
if("shrug")
message = "shrugs."
m_type = 1
if("signal")
if(!restrained())
var/t1 = round(text2num(param))
if(isnum(t1))
if(t1 <= 5 && (!r_hand || !l_hand))
message = "raises [t1] finger\s."
else if(t1 <= 10 && (!r_hand && !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", "sneezes")
if(miming)
message = "sneezes."
m_type = 1
else
if(!muzzled)
var/robotic = 0
m_type = 2
if(should_have_organ(O_LUNGS))
var/obj/item/organ/internal/lungs/L = internal_organs_by_name[O_LUNGS]
if(L && L.robotic == 2) //Hard-coded to 2, incase we add lifelike robotic lungs
robotic = 1
if(!robotic && !isSynthetic())
message = "sneezes."
if(get_gender() == FEMALE)
playsound(src, species.female_sneeze_sound, 70, preference = /datum/client_preference/emote_noises) //VOREStation Add
else
playsound(src, species.male_sneeze_sound, 70, preference = /datum/client_preference/emote_noises) //VOREStation Add
m_type = 2
else
message = "emits a robotic sneeze"
var/use_sound
if(get_gender() == FEMALE)
use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg'
else
use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg'
playsound(src, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add
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(!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 [T.himself]."
if("handshake")
m_type = 1
if(!restrained() && !r_hand)
var/mob/living/M = null
if(param)
for(var/mob/living/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 [T.his] hand to [M]."
if("dap")
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)
message = "gives daps to [M]."
else
message = "sadly can't find anybody to give daps to, and daps [T.himself]. Shameful."
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)
message = "<span class='danger'>slaps [M] across the face. Ouch!</span>"
playsound(src, 'sound/effects/snap.ogg', 50, 1, preference = /datum/client_preference/emote_noises) //VOREStation Add
if(ishuman(M)) //Snowflakey!
var/mob/living/carbon/human/H = M
if(istype(H.wear_mask,/obj/item/clothing/mask/smokable))
H.drop_from_inventory(H.wear_mask)
else
message = "<span class='danger'>slaps [T.himself]!</span>"
playsound(src, 'sound/effects/snap.ogg', 50, 1, preference = /datum/client_preference/emote_noises) //VOREStation Add
if("scream", "screams")
if(miming)
message = "acts out a scream!"
m_type = 1
else
if(!muzzled)
message = "[species.scream_verb]!"
m_type = 2
/* Removed, pending the location of some actually good, properly licensed sounds.
if(get_gender() == FEMALE)
playsound(src, "[species.female_scream_sound]", 80, 1)
else
playsound(src, "[species.male_scream_sound]", 80, 1) //default to male screams if no gender is present.
*/
else
message = "makes a very loud noise."
m_type = 2
if("snap", "snaps")
m_type = 2
var/mob/living/carbon/human/H = src
var/obj/item/organ/external/L = H.get_organ("l_hand")
var/obj/item/organ/external/R = H.get_organ("r_hand")
var/left_hand_good = 0
var/right_hand_good = 0
if(L && (!(L.status & ORGAN_DESTROYED)) && (!(L.splinted)) && (!(L.status & ORGAN_BROKEN)))
left_hand_good = 1
if(R && (!(R.status & ORGAN_DESTROYED)) && (!(R.splinted)) && (!(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 [T.his] fingers."
playsound(src, 'sound/effects/fingersnap.ogg', 50, 1, -3, preference = /datum/client_preference/emote_noises) //VOREStation Add
if("swish")
animate_tail_once()
if("wag", "sway")
animate_tail_start()
if("qwag", "fastsway")
animate_tail_fast()
if("swag", "stopsway")
animate_tail_stop()
if("vomit")
if(isSynthetic())
to_chat(src, "<span class='warning'>You are unable to vomit.</span>")
return
vomit()
return
if("whistle" || "whistles")
if(!muzzled)
if(!isSynthetic())
message = "whistles a tune."
playsound(src, 'sound/voice/longwhistle.ogg', 50, 1, preference = /datum/client_preference/emote_noises) //praying this doesn't get abused
else
message = "whistles a robotic tune."
playsound(src, 'sound/voice/longwhistle_robot.ogg', 50, 1, preference = /datum/client_preference/emote_noises)
else
message = "makes a light spitting noise, a poor attempt at a whistle."
if("qwhistle")
if(!muzzled)
if(!isSynthetic())
message = "whistles quietly."
playsound(src, 'sound/voice/shortwhistle.ogg', 50, 1, preference = /datum/client_preference/emote_noises)
else
message = "whistles robotically."
playsound(src, 'sound/voice/shortwhistle_robot.ogg', 50, 1, preference = /datum/client_preference/emote_noises)
else
message = "makes a light spitting noise, a poor attempt at a whistle."
if("wwhistle")
if(!muzzled)
if(!isSynthetic())
message = "whistles inappropriately."
playsound(src, 'sound/voice/wolfwhistle.ogg', 50, 1, preference = /datum/client_preference/emote_noises)
else
message = "beeps inappropriately."
playsound(src, 'sound/voice/wolfwhistle_robot.ogg', 50, 1, preference = /datum/client_preference/emote_noises)
else
message = "makes a light spitting noise, a poor attempt at a whistle."
if("swhistle")
if(!muzzled)
if(!isSynthetic())
message = "summon whistles."
playsound(src, 'sound/voice/summon_whistle.ogg', 50, 1, preference = /datum/client_preference/emote_noises)
else
message = "summon whistles robotically."
playsound(src, 'sound/voice/summon_whistle_robot.ogg', 50, 1, preference = /datum/client_preference/emote_noises)
else
message = "makes a light spitting noise, a poor attempt at a whistle."
if("flip")
m_type = 1
if (!src.restrained())
//message = "performs an amazing, gravity-defying backflip before landing skillfully back to the ground."
playsound(src.loc, 'sound/effects/bodyfall4.ogg', 50, 1)
src.SpinAnimation(7,1)
else
to_chat(usr, "You can't quite do something as difficult as a backflip while so... restricted.")
if("spin")
m_type = 1
if (!src.restrained())
//message = "spins in a dance smoothly on their feet. Wow!"
src.spin(20, 1)
else
to_chat(usr, "You can't quite do something as difficult as a spin while so... restricted.")
if("floorspin")
m_type = 1
if (!src.restrained())
//message = "gets down on the floor and spins their entire body around!"
spawn(0)
for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2))
set_dir(i)
sleep(1)
src.SpinAnimation(20,1)
else
to_chat(usr, "You can't quite do something as difficult as a spin while so... restricted.")
if("sidestep")
m_type = 1
if (!src.restrained())
//message = "steps rhymatically and conservatively as they move side to side."
playsound(src.loc, 'sound/effects/bodyfall4.ogg', 50, 1)
var/default_pixel_x = initial(pixel_x)
var/default_pixel_y = initial(pixel_y)
default_pixel_x = src.default_pixel_x
default_pixel_y = src.default_pixel_y
animate(src, pixel_x = 5, time = 20)
sleep(3)
animate(src, pixel_x = -5, time = 20)
animate(pixel_x = default_pixel_x, pixel_y = default_pixel_y, time = 2)
else
to_chat(usr, "Sidestepping sure seems unachieveable when you're this restricted.")
if("help")
to_chat(src, "<span class='filter_say'>blink, blink_r, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, cry, custom, deathgasp, drool, eyebrow, fastsway/qwag, \
frown, gasp, giggle, glare-(none)/mob, grin, groan, grumble, handshake, hug-(none)/mob, laugh, look-(none)/mob, moan, mumble, nod, pale, point-atom, \
qwhistle, raise, salute, scream, sneeze, shake, shiver, shrug, sigh, signal-#1-10, slap-(none)/mob, smile, sneeze, sniff, snore, stare-(none)/mob, stopsway/swag, sway/wag, swish, swhistle, \
tremble, twitch, twitch_v, vomit, whimper, wink, whistle, wwhistle, yawn. Prometheans: squish Synthetics: beep, buzz, dwoop, yes, no, rcough, rsneeze, ping. Skrell: warble</span>")
else
to_chat(src, "<span class='filter_say'><font color='blue'>Unusable emote '[act]'. Say *help or *vhelp for a list.</font></span>") //VOREStation Edit, mention *vhelp for Virgo-specific emotes located in emote_vr.dm.
if(message)
custom_emote(m_type,message)
var/list/_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/choke,
/decl/emote/audible/sneeze,
/decl/emote/audible/sniff,
/decl/emote/audible/snore,
/decl/emote/audible/whimper,
/decl/emote/audible/whistle,
/decl/emote/audible/whistle/quiet,
/decl/emote/audible/whistle/wolf,
/decl/emote/audible/whistle/summon,
/decl/emote/audible/yawn,
/decl/emote/audible/clap,
/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/crack,
/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/dance,
/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,
/decl/emote/visible/spin,
/decl/emote/visible/sidestep,
/decl/emote/audible/snap,
/decl/emote/visible/vomit,
/decl/emote/visible/floorspin,
/decl/emote/visible/flip,
//VOREStation Add
/decl/emote/audible/awoo,
/decl/emote/audible/awoo2,
/decl/emote/audible/growl,
/decl/emote/audible/woof,
/decl/emote/audible/woof2,
/decl/emote/audible/nya,
/decl/emote/audible/mrowl,
/decl/emote/audible/peep,
/decl/emote/audible/chirp,
/decl/emote/audible/hoot,
/decl/emote/audible/weh,
/decl/emote/audible/merp,
/decl/emote/audible/myarp,
/decl/emote/audible/bark,
/decl/emote/audible/bork,
/decl/emote/audible/mrow,
/decl/emote/audible/hypno,
/decl/emote/audible/hiss,
/decl/emote/audible/rattle,
/decl/emote/audible/squeak,
/decl/emote/audible/geck,
/decl/emote/audible/baa,
/decl/emote/audible/baa2,
/decl/emote/audible/mar,
/decl/emote/audible/wurble,
/decl/emote/audible/snort,
/decl/emote/audible/meow,
/decl/emote/audible/moo,
/decl/emote/audible/croak,
/decl/emote/audible/gao,
/decl/emote/audible/cackle,
/decl/emote/visible/mlem,
/decl/emote/visible/blep,
/decl/emote/helper/vwag,
/decl/emote/helper/vflap
//VOREStation Add End
)
/mob/living/carbon/human/get_default_emotes()
return global._human_default_emotes
/mob/living/carbon/human/verb/pose()
set name = "Set Pose"
@@ -1,185 +1,11 @@
/mob
var/nextemote = 1
/mob/living/carbon/human/verb/toggle_resizing_immunity()
set name = "Toggle Resizing Immunity"
set desc = "Toggles your ability to resist resizing attempts"
set category = "IC"
/mob/living/carbon/human/proc/handle_emote_vr(var/act,var/m_type=1,var/message = null)
//Reduces emote spamming
if(nextemote >= world.time)// || user.stat != CONSCIOUS
return 1
nextemote = world.time + 12
resizable = !resizable
to_chat(src, "<span class='notice'>You are now [resizable ? "susceptible" : "immune"] to being resized.</span>")
switch(act)
if("vwag")
if(toggle_tail(message = 1))
m_type = 1
message = "[wagging ? "starts" : "stops"] wagging their tail."
else
return 1
if("vflap")
if(toggle_wing(message = 1))
m_type = 1
message = "[flapping ? "starts" : "stops"] flapping their wings."
else
return 1
if("mlem")
message = "mlems [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] tongue up over [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] nose. Mlem."
m_type = 1
if("blep")
message = "bleps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] tongue out. Blep."
m_type = 1
if("awoo")
m_type = 2
message = "lets out an awoo."
playsound(src, 'sound/voice/awoo.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("awoo2")
m_type = 2
message = "lets out an awoo."
playsound(src, 'sound/voice/long_awoo.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("growl")
m_type = 2
message = "lets out a growl."
playsound(src, 'sound/voice/growl.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("woof")
m_type = 2
message = "lets out a woof."
playsound(src, 'sound/voice/woof.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("woof2")
m_type = 2
message = "lets out a woof."
playsound(src, 'sound/voice/woof2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("nya")
message = "lets out a nya."
m_type = 2
playsound(src, 'sound/voice/nya.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("mrowl")
message = "mrowls."
m_type = 2
playsound(src, 'sound/voice/mrow.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("peep")
message = "peeps like a bird."
m_type = 2
playsound(src, 'sound/voice/peep.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("chirp")
message = "chirps!"
playsound(src, 'sound/misc/nymphchirp.ogg', 50, 0, preference = /datum/client_preference/emote_noises)
m_type = 2
if("hoot")
message = "hoots!"
playsound(src, 'sound/voice/hoot.ogg', 50, 1, ,-1, preference = /datum/client_preference/emote_noises)
m_type = 2
if("weh")
message = "lets out a weh."
m_type = 2
playsound(src, 'sound/voice/weh.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("merp")
message = "lets out a merp."
m_type = 2
playsound(src, 'sound/voice/merp.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("myarp")
message = "lets out a myarp."
m_type = 2
playsound(src, 'sound/voice/myarp.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("bark")
message = "lets out a bark."
m_type = 2
playsound(src, 'sound/voice/bark2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("bork")
m_type = 2
message = "lets out a bork."
playsound(src, 'sound/voice/bork.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if ("mrow")
m_type = 2
message = "lets out a mrow."
playsound(src, 'sound/voice/mrow.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if ("hypno")
m_type = 2
message = "lets out a mystifying tone."
playsound(src, 'sound/voice/hypno.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("hiss")
message = "lets out a hiss."
m_type = 2
playsound(src, 'sound/voice/hiss.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("rattle")
message = "rattles!"
m_type = 2
playsound(src, 'sound/voice/rattle.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("squeak")
message = "lets out a squeak."
m_type = 2
playsound(src, 'sound/effects/mouse_squeak.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("geck")
message = "geckers!"
m_type = 2
playsound(src, 'sound/voice/geck.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("baa")
message = "lets out a baa."
m_type = 2
playsound(src, 'sound/voice/baa.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("baa2")
message = "bleats."
m_type = 2
playsound(src, 'sound/voice/baa2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("deathgasp2")
message = "[species.get_death_message()]"
m_type = 1
playsound(src, 'sound/voice/deathgasp2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("mar")
message = "lets out a mar."
m_type = 2
playsound(src, 'sound/voice/mar.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("wurble")
message = "lets out a wurble."
m_type = 2
playsound(src, 'sound/voice/wurble.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
if("snort")
message = "snorts!"
m_type = 2
playsound(src, 'sound/voice/Snort.ogg', 50, 0, preference = /datum/client_preference/emote_noises)
if("meow")
message = "gently meows!"
m_type = 2
playsound(src, 'sound/voice/Meow.ogg', 50, 0, preference = /datum/client_preference/emote_noises)
if("moo")
message = "takes a breath and lets out a moo."
m_type = 2
playsound(src, 'sound/voice/Moo.ogg', 50, 0, preference = /datum/client_preference/emote_noises)
if("croak")
message = "rumbles their throat, puffs their cheeks and croaks."
m_type = 2
playsound(src, 'sound/voice/Croak.ogg', 50, 0, preference = /datum/client_preference/emote_noises)
if("gao")
message = "lets out a gao."
m_type = 2
playsound(src, 'sound/voice/gao.ogg', 50, 0, preference = /datum/client_preference/emote_noises)
if("cackle")
message = "cackles hysterically!"
m_type = 2
playsound(src, 'sound/voice/YeenCackle.ogg', 50, 0, preference = /datum/client_preference/emote_noises)
if("nsay")
nsay()
return TRUE
if("nme")
nme()
return TRUE
if("flip")
var/list/involved_parts = list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT)
//Check if they are physically capable
if(sleeping || resting || buckled || weakened || restrained() || involved_parts.len < 2)
to_chat(src, "<span class='warning'>You can't *flip in your current state!</span>")
return 1
else
nextemote += 12 //Double delay
handle_flip_vr()
message = "does a flip!"
m_type = 1
if("vhelp") //Help for Virgo-specific emotes.
to_chat(src, "vwag, vflap, mlem, blep, awoo, awoo2, growl, nya, peep, chirp, hoot, weh, merp, myarp, bark, bork, mrow, mrowl, hypno, hiss, rattle, squeak, geck, baa, baa2, mar, wurble, snort, meow, moo, croak, gao, cackle, nsay, nme, flip")
return TRUE
if(message)
custom_emote(m_type,message)
return TRUE
return FALSE
/mob/living/carbon/human/proc/handle_flip_vr()
var/original_density = density
@@ -1162,6 +1162,9 @@
//A slew of bits that may be affected by our species change
regenerate_icons()
// Update our available emote list.
update_emotes()
if(species)
//if(mind) //VOREStation Removal
//apply_traits() //VOREStation Removal
@@ -81,7 +81,6 @@
var/voice = "" //Instead of new say code calling GetVoice() over and over and over, we're just going to ask this variable, which gets updated in Life()
var/miming = null //Toggle for the mime's abilities.
var/special_voice = "" // For changing our voice. Used by a symptom.
var/last_dam = -1 //Used for determining if we need to process all organs or just some or even none.
@@ -156,4 +155,3 @@
// Custom Species Name
var/custom_species
@@ -98,7 +98,8 @@
// This is the 'mechanical' check for synthetic-ness, not appearance
// Returns the company that made the synthetic
/mob/living/carbon/human/isSynthetic()
if(synthetic) return synthetic //Your synthetic-ness is not going away
if(synthetic)
return synthetic //Your synthetic-ness is not going away
var/obj/item/organ/external/T = organs_by_name[BP_TORSO]
if(T && T.robotic >= ORGAN_ROBOT)
src.verbs += /mob/living/carbon/human/proc/self_diagnostics
@@ -106,9 +107,9 @@
src.verbs += /mob/living/carbon/human/proc/setmonitor_state
var/datum/robolimb/R = all_robolimbs[T.model]
synthetic = R
update_emotes()
return synthetic
return 0
return FALSE
// Would an onlooker know this person is synthetic?
// Based on sort of logical reasoning, 'Look at head, look at torso'
@@ -25,7 +25,8 @@
speech_sounds = list('sound/voice/shriek1.ogg')
speech_chance = 20
scream_verb = "shrieks"
scream_verb_1p = "shriek"
scream_verb_3p = "shrieks"
male_scream_sound = 'sound/voice/shriek1.ogg'
female_scream_sound = 'sound/voice/shriek1.ogg'
male_cough_sounds = list('sound/voice/shriekcough.ogg')
@@ -86,7 +87,11 @@
/datum/mob_descriptor/height = -1,
/datum/mob_descriptor/build = 1,
/datum/mob_descriptor/vox_markings = 0
)
)
default_emotes = list(
/decl/emote/audible/vox_shriek
)
/datum/species/vox/get_random_name(var/gender)
var/datum/language/species_language = GLOB.all_languages[default_language]
@@ -2,7 +2,7 @@
allowed_species = list(SPECIES_SHADEKIN)
var/color = BLUE_EYES
name = "Shadekin Blue Adaptation"
desc = "Makes your shadekin adapted as a Blue eyed kin! This gives you decreased energy regeneration in darkness, decreased regeneration in the light amd unchanged health!"
desc = "Makes your shadekin adapted as a Blue eyed kin! This gives you decreased energy regeneration in darkness, decreased regeneration in the light and unchanged health!"
cost = 0
var_changes = list( "total_health" = 100,
"energy_light" = 0.5,
@@ -13,7 +13,7 @@
/datum/trait/kintype/red
name = "Shadekin Red Adaptation"
color = RED_EYES
desc = "Makes your shadekin adapted as a Red eyed kin! This gives you minimal energy regeneration in darkness, moderate regeneration in the light amd increased health!"
desc = "Makes your shadekin adapted as a Red eyed kin! This gives you minimal energy regeneration in darkness, moderate degeneration in the light and increased health!"
var_changes = list( "total_health" = 200,
"energy_light" = -1,
"energy_dark" = 0.1,
@@ -22,37 +22,37 @@
/datum/trait/kintype/purple
name = "Shadekin Purple Adaptation"
color = PURPLE_EYES
desc = "Makes your shadekin adapted as a Purple eyed kin! This gives you moderate energy regeneration in darkness, minor degeneration in the light amd increased health!"
desc = "Makes your shadekin adapted as a Purple eyed kin! This gives you moderate energy regeneration in darkness, minor degeneration in the light and increased health!"
var_changes = list( "total_health" = 150,
"energy_light" = 1,
"energy_dark" = -0.5,
"energy_light" = -0.5,
"energy_dark" = 1,
"unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap))
/datum/trait/kintype/yellow
name = "Shadekin Yellow Adaptation"
color = YELLOW_EYES
desc = "Makes your shadekin adapted as a Yellow eyed kin! This gives you the highest energy regeneration in darkness, high degeneration in the light amd unchanged health!"
desc = "Makes your shadekin adapted as a Yellow eyed kin! This gives you the highest energy regeneration in darkness, high degeneration in the light and unchanged health!"
var_changes = list( "total_health" = 100,
"energy_light" = 3,
"energy_dark" = -2,
"energy_light" = -2,
"energy_dark" = 3,
"unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap))
/datum/trait/kintype/green
name = "Shadekin Green Adaptation"
color = GREEN_EYES
desc = "Makes your shadekin adapted as a Green eyed kin! This gives you high energy regeneration in darkness, minor regeneration in the light amd unchanged health!"
desc = "Makes your shadekin adapted as a Green eyed kin! This gives you high energy regeneration in darkness, minor regeneration in the light and unchanged health!"
var_changes = list( "total_health" = 100,
"energy_light" = 2,
"energy_dark" = 0.125,
"energy_light" = 0.125,
"energy_dark" = 2,
"unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap))
/datum/trait/kintype/orange
name = "Shadekin Orange Adaptation"
color = ORANGE_EYES
desc = "Makes your shadekin adapted as a Orange eyed kin! This gives you minor energy regeneration in darkness, modeate degeneration in the light amd increased health!"
desc = "Makes your shadekin adapted as a Orange eyed kin! This gives you minor energy regeneration in darkness, moderate degeneration in the light and increased health!"
var_changes = list( "total_health" = 175,
"energy_light" = 0.25,
"energy_dark" = -0.5,
"energy_light" = -0.5,
"energy_dark" = 0.25,
"unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap))
/datum/trait/kintype/apply(var/datum/species/shadekin/S,var/mob/living/carbon/human/H)
@@ -75,7 +75,8 @@
var/list/assisted_langs = list(LANGUAGE_EAL, LANGUAGE_SKRELLIAN, LANGUAGE_SKRELLIANFAR, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) //VOREStation Edit
//Soundy emotey things.
var/scream_verb = "screams"
var/scream_verb_1p = "scream"
var/scream_verb_3p = "screams"
var/male_scream_sound //= 'sound/goonstation/voice/male_scream.ogg' Removed due to licensing, replace!
var/female_scream_sound //= 'sound/goonstation/voice/female_scream.ogg' Removed due to licensing, replace!
var/male_cough_sounds = list('sound/effects/mob_effects/m_cougha.ogg','sound/effects/mob_effects/m_coughb.ogg', 'sound/effects/mob_effects/m_coughc.ogg')
@@ -44,7 +44,7 @@
if(config.show_human_death_message)
return ((H && H.isSynthetic()) ? "gives one shrill beep before falling lifeless." : death_message)
else
return "no message"
return DEATHGASP_NO_MESSAGE
/datum/species/proc/get_ssd(var/mob/living/carbon/human/H)
if(H)
@@ -119,6 +119,15 @@ var/datum/species/shapeshifter/promethean/prometheans
var/heal_rate = 0.5 // Temp. Regen per tick.
default_emotes = list(
/decl/emote/audible/squish,
/decl/emote/audible/chirp,
/decl/emote/visible/bounce,
/decl/emote/visible/jiggle,
/decl/emote/visible/lightup,
/decl/emote/visible/vibrate
)
/datum/species/shapeshifter/promethean/New()
..()
prometheans = src
@@ -160,6 +160,16 @@
/datum/mob_descriptor/build = 2
)
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
)
/datum/species/unathi/equip_survival_gear(var/mob/living/carbon/human/H)
..()
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes)
@@ -250,6 +260,16 @@
O_INTESTINE = /obj/item/organ/internal/intestine
)
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
)
/datum/species/tajaran/equip_survival_gear(var/mob/living/carbon/human/H)
..()
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes)
@@ -533,6 +553,11 @@
genders = list(PLURAL)
default_emotes = list(
/decl/emote/audible/chirp,
/decl/emote/audible/multichirp
)
/datum/species/diona/can_understand(var/mob/other)
if(istype(other, /mob/living/carbon/alien/diona))
return TRUE
@@ -139,7 +139,7 @@
descriptors = list(
/datum/mob_descriptor/height = -3,
/datum/mob_descriptor/build = -3
)
)
var/static/list/flight_bodyparts = list(
BP_L_ARM,
@@ -152,6 +152,12 @@
/obj/item/clothing/suit/straight_jacket
)
default_emotes = list(
/decl/emote/audible/teshsqueak,
/decl/emote/audible/teshchirp,
/decl/emote/audible/teshtrill
)
/datum/species/teshari/equip_survival_gear(var/mob/living/carbon/human/H)
..()
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes)
@@ -159,7 +165,7 @@
/datum/species/teshari/handle_falling(mob/living/carbon/human/H, atom/hit_atom, damage_min, damage_max, silent, planetary)
// Tesh can glide to save themselves from some falls. Basejumping bird
// without parachute, or falling bird without free wings goes splat.
// without parachute, or falling bird without free wings, goes splat.
// Are we landing from orbit, or handcuffed/unconscious/tied to something?
if(planetary || !istype(H) || H.incapacitated(INCAPACITATION_DEFAULT|INCAPACITATION_DISABLED))
-33
View File
@@ -433,38 +433,5 @@ proc/get_radio_key_from_channel(var/channel)
/mob/proc/GetVoice()
return name
/mob/living/emote(var/act, var/type, var/message) //emote code is terrible, this is so that anything that isn't
if(stat) //already snowflaked to shit can call the parent and handle emoting sanely
return FALSE
if(..(act, type, message))
return TRUE
if(act && type && message)
log_emote(message, src)
for(var/mob/M in dead_mob_list)
if(!M.client)
continue
if(isnewplayer(M))
continue
if(isobserver(M) && M.is_preference_enabled(/datum/client_preference/ghost_sight))
M.show_message(message)
switch(type)
if(1) // Visible
visible_message(message)
return TRUE
if(2) // Audible
audible_message(message)
return TRUE
else
if(act == "help")
return // Mobs handle this individually
to_chat(src, "<span class='warning'>Unusable emote '[act]'. Say *help for a list.</span>")
/mob/proc/speech_bubble_appearance()
return "normal"
+12 -112
View File
@@ -1,113 +1,13 @@
/mob/living/silicon/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)
var/list/_silicon_default_emotes = list(
/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/audible/synth/dwoop,
/decl/emote/audible/synth/security,
/decl/emote/audible/synth/security/halt
)
if(findtext(act, "s", -1) && !findtext(act, "_", -2))//Removes ending s's unless they are prefixed with a '_'
act = copytext(act, 1, length(act))
switch(act)
if("beep")
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 = "<b>[src]</b> beeps at [param]."
else
message = "<b>[src]</b> beeps."
playsound(src, 'sound/machines/twobeep.ogg', 50, 0)
m_type = 1
if("ping")
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 = "<b>[src]</b> pings at [param]."
else
message = "<b>[src]</b> pings."
playsound(src, 'sound/machines/ping.ogg', 50, 0)
m_type = 1
if("buzz")
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 = "<b>[src]</b> buzzes at [param]."
else
message = "<b>[src]</b> buzzes."
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
m_type = 1
if("yes", "ye")
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 = "<b>[src]</b> emits an affirmative blip at [param]."
else
message = "<b>[src]</b> emits an affirmative blip."
playsound(src, 'sound/machines/synth_yes.ogg', 50, 0)
m_type = 1
if("dwoop")
var/M = null
if(param)
for (var/mob/A in view(null, null))
M = A
break
if(!M)
param = null
if (param)
message = "<b>[src]</b> chirps happily at [param]"
else
message = "<b>[src]</b> chirps happily."
playsound(src, 'sound/machines/dwoop.ogg', 50, 0)
m_type = 1
if("no")
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 = "<b>[src]</b> emits a negative blip at [param]."
else
message = "<b>[src]</b> emits a negative blip."
playsound(src, 'sound/machines/synth_no.ogg', 50, 0)
m_type = 1
..(act, m_type, message)
/mob/living/silicon/get_default_emotes()
return global._silicon_default_emotes
+32 -154
View File
@@ -1,155 +1,33 @@
/mob/living/silicon/robot/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)
var/list/_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/dance,
/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/visible/spin,
/decl/emote/visible/sidestep,
/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/audible/synth/dwoop,
/decl/emote/audible/synth/security,
/decl/emote/audible/synth/security/halt,
//VOREStation Add
/decl/emote/visible/mlem,
/decl/emote/visible/blep
//VOREStation Add End
)
if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_'
act = copytext(act,1,length(act))
switch(act)
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 = "<b>[src]</b> salutes to [param]."
else
message = "<b>[src]</b> salutes."
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 = "<b>[src]</b> bows to [param]."
else
message = "<b>[src]</b> bows."
m_type = 1
if("clap")
if(!src.restrained())
message = "<b>[src]</b> claps."
m_type = 2
if("flap")
if(!src.restrained())
message = "<b>[src]</b> flaps its wings."
m_type = 2
if("aflap")
if(!src.restrained())
message = "<b>[src]</b> flaps its wings ANGRILY!"
m_type = 2
if("twitch")
message = "<b>[src]</b> twitches."
m_type = 1
if("twitch_v")
message = "<b>[src]</b> twitches violently."
m_type = 1
if("nod")
message = "<b>[src]</b> nods."
m_type = 1
if("deathgasp")
message = "<b>[src]</b> shudders violently for a moment, then becomes motionless, its eyes slowly darkening."
m_type = 1
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 = "<b>[src]</b> glares at [param]."
else
message = "<b>[src]</b> 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 = "<b>[src]</b> stares at [param]."
else
message = "<b>[src]</b> 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 = "<b>[src]</b> looks at [param]."
else
message = "<b>[src]</b> looks."
m_type = 1
if("law")
if(istype(module,/obj/item/weapon/robot_module/robot/security) || istype(module,/obj/item/weapon/robot_module/robot/knine)) //VOREStation Add - K9
message = "<b>[src]</b> shows its legal authorization barcode."
playsound(src, 'sound/voice/biamthelaw.ogg', 50, 0)
m_type = 2
else
to_chat(src, "You are not THE LAW, pal.")
if("halt")
if(istype(module,/obj/item/weapon/robot_module/robot/security) || istype(module,/obj/item/weapon/robot_module/robot/knine)) //VOREStation Add - K9
message = "<b>[src]</b> <B>'s</B> speakers skreech, \"Halt! Security!\"."
playsound(src, 'sound/voice/halt.ogg', 50, 0)
m_type = 2
else
to_chat(src, "You are not security.")
//Vorestation addition start
if("bark")
if (istype(module,/obj/item/weapon/robot_module/robot/knine) || istype(module,/obj/item/weapon/robot_module/robot/medihound) || istype(module,/obj/item/weapon/robot_module/robot/scrubpup) || istype(module,/obj/item/weapon/robot_module/robot/ert) || istype(module,/obj/item/weapon/robot_module/robot/science) || istype(module,/obj/item/weapon/robot_module/robot/engiedog) || istype(module,/obj/item/weapon/robot_module/robot/clerical/brodog) || istype(module,/obj/item/weapon/robot_module/robot/kmine) )
message = "<b>[src]</b> lets out a bark."
playsound(src, 'sound/voice/bark2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
m_type = 2
else
to_chat(src, "You're not a dog!")
//Vorestation addition end
if("help")
to_chat(src, "salute, bow-(none)/mob, clap, flap, aflap, twitch, twitch_s, nod, deathgasp, glare-(none)/mob, stare-(none)/mob, look, beep, ping, \nbuzz, law, halt, yes, dwoop, no")
..(act, m_type, message)
/mob/living/silicon/robot/get_default_emotes()
return global._robot_default_emotes
+1 -1
View File
@@ -114,7 +114,7 @@
return 0
return 1
/mob/living/silicon/ai/emote(var/act, var/type, var/message)
/mob/living/silicon/ai/emote(var/act, var/m_type, var/message)
var/obj/machinery/hologram/holopad/T = holo
if(T && T.masters[src]) //Is the AI using a holopad?
. = holopad_emote(message)
@@ -1,3 +1,32 @@
var/list/_cat_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/twitch_v,
/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/visible/spin,
/decl/emote/visible/sidestep,
/decl/emote/audible,
/decl/emote/audible/hiss,
/decl/emote/audible/whimper,
/decl/emote/audible/gasp,
/decl/emote/audible/scretch,
/decl/emote/audible/choke,
/decl/emote/audible/moan,
/decl/emote/audible/gnarl,
/decl/emote/audible/purr,
/decl/emote/audible/purrlong
)
/mob/living/simple_mob/animal/passive/cat
name = "cat"
desc = "A domesticated, feline pet. Has a tendency to adopt crewmembers."
@@ -28,6 +57,9 @@
update_icon()
return ..()
/mob/living/simple_mob/animal/passive/cat/get_default_emotes()
return global._cat_default_emotes
/mob/living/simple_mob/animal/passive/cat/handle_special()
if(!stat && prob(2)) // spooky
var/mob/observer/dead/spook = locate() in range(src, 5)
@@ -1,5 +1,21 @@
// The top-level slime defines. Xenobio slimes and feral slimes will inherit from this.
var/list/_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
)
// The top-level slime defines. Xenobio slimes and feral slimes will inherit from this.
/mob/living/simple_mob/slime
name = "slime"
desc = "It's a slime."
@@ -64,6 +80,9 @@
can_enter_vent_with = list(/obj/item/clothing/head)
/mob/living/simple_mob/slime/get_default_emotes()
return global._slime_default_emotes
/datum/say_list/slime
speak = list("Blorp...", "Blop...")
emote_see = list("bounces", "jiggles", "sways")
+1 -1
View File
@@ -137,6 +137,6 @@
return TRUE
return ..()
/mob/living/voice/custom_emote(var/m_type=1,var/message = null,var/range=world.view)
/mob/living/voice/custom_emote(var/m_type = VISIBLE_MESSAGE, var/message = null, var/range = world.view)
if(!comm) return
..(m_type,message,comm.video_range)
+19 -13
View File
@@ -42,6 +42,7 @@
lastarea = get_area(src)
hook_vr("mob_new",list(src)) //VOREStation Code
update_transform() // Some mobs may start bigger or smaller than normal.
update_emotes()
return ..()
/mob/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2)
@@ -49,19 +50,19 @@
if(!client && !teleop) return
if (type)
if((type & 1) && (is_blind() || paralysis) )//Vision related
if((type & VISIBLE_MESSAGE) && (is_blind() || paralysis) )//Vision related
if (!( alt ))
return
else
msg = alt
type = alt_type
if ((type & 2) && is_deaf())//Hearing related
if ((type & AUDIBLE_MESSAGE) && is_deaf())//Hearing related
if (!( alt ))
return
else
msg = alt
type = alt_type
if ((type & 1) && (sdisabilities & BLIND))
if ((type & VISIBLE_MESSAGE) && (sdisabilities & BLIND))
return
// Added voice muffling for Issue 41.
if(stat == UNCONSCIOUS || sleeping > 0)
@@ -77,14 +78,17 @@
// message is the message output to anyone who can see e.g. "[src] does something!"
// self_message (optional) is what the src mob sees e.g. "You do something!"
// blind_message (optional) is what blind people will hear e.g. "You hear something!"
/mob/visible_message(var/message, var/self_message, var/blind_message, var/list/exclude_mobs = null)
/mob/visible_message(var/message, var/self_message, var/blind_message, var/list/exclude_mobs = null, var/range = world.view)
if(self_message)
if(LAZYLEN(exclude_mobs))
exclude_mobs |= src
else
exclude_mobs = list(src)
src.show_message(self_message, 1, blind_message, 2)
. = ..(message, blind_message, exclude_mobs)
// Transfer messages about what we are doing to upstairs
if(shadow)
shadow.visible_message(message, self_message, blind_message, exclude_mobs, range)
. = ..(message, blind_message, exclude_mobs, range) // Really not ideal that atom/visible_message has different arg numbering :(
// Returns an amount of power drawn from the object (-1 if it's not viable).
// If drain_check is set it will not actually drain power, just return a value.
@@ -99,7 +103,7 @@
// self_message (optional) is what the src mob hears.
// deaf_message (optional) is what deaf people will see.
// hearing_distance (optional) is the range, how many tiles away the message can be heard.
/mob/audible_message(var/message, var/deaf_message, var/hearing_distance, var/self_message)
/mob/audible_message(var/message, var/deaf_message, var/hearing_distance, var/self_message, var/radio_message)
var/range = hearing_distance || world.view
var/list/hear = get_mobs_and_objs_in_view_fast(get_turf(src),range,remote_ghosts = FALSE)
@@ -107,16 +111,21 @@
var/list/hearing_mobs = hear["mobs"]
var/list/hearing_objs = hear["objs"]
for(var/obj in hearing_objs)
var/obj/O = obj
O.show_message(message, 2, deaf_message, 1)
if(radio_message)
for(var/obj in hearing_objs)
var/obj/O = obj
O.hear_talk(src, list(new /datum/multilingual_say_piece(GLOB.all_languages["Noise"], radio_message)), null)
else
for(var/obj in hearing_objs)
var/obj/O = obj
O.show_message(message, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE)
for(var/mob in hearing_mobs)
var/mob/M = mob
var/msg = message
if(self_message && M==src)
msg = self_message
M.show_message(msg, 2, deaf_message, 1)
M.show_message(msg, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE)
/mob/proc/findname(msg)
for(var/mob/M in mob_list)
@@ -576,9 +585,6 @@
/mob/proc/get_gender()
return gender
/mob/proc/get_visible_gender()
return gender
/mob/proc/see(message)
if(!is_active())
return 0
@@ -28,7 +28,7 @@
// Determines if the accessory will be skipped or included in random hair generations
var/gender = NEUTER
// Restrict some styles to specific species
// Restrict some styles to specific species. Set to null to perform no checking.
var/list/species_allowed = list(SPECIES_HUMAN,SPECIES_PROMETHEAN,SPECIES_HUMAN_VATBORN)
// Whether or not the accessory can be affected by colouration
@@ -38,7 +38,6 @@
// Ckey of person allowed to use this, if defined.
var/list/ckeys_allowed = null
var/apply_restrictions = FALSE //whether to apply restrictions for specific tails/ears/wings
/*
////////////////////////////
@@ -23,7 +23,7 @@
icon_state = "shadekin"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
apply_restrictions = TRUE
species_allowed = list() // SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW
/datum/sprite_accessory/ears/taj_ears
name = "Tajaran Ears"
@@ -20,7 +20,6 @@
icon_state = "shadekin"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
apply_restrictions = TRUE
species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
// Ears avaliable to anyone
@@ -922,7 +922,6 @@
icon_state = "shadekin-short"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
//apply_restrictions = TRUE
//species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
/datum/sprite_accessory/tail/wartacosushi_tail //brightened +20RGB from matching roboparts
@@ -333,7 +333,6 @@
hide_body_parts = null
clip_mask_icon = null
clip_mask_state = null
//apply_restrictions = TRUE
//species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
/datum/sprite_accessory/tail/taur/shadekin_tail/shadekin_tail_2c
@@ -83,6 +83,12 @@
extra_overlay2 = "synthwolf_glow"
//icon_sprite_tag = "synthwolf"
/datum/sprite_accessory/tail/taur/ch/wolf/fatsynthwolf
name = "Fat SynthWolf dual-color (Taur)"
icon_state = "fatsynthwolf_s"
extra_overlay = "fatsynthwolf_markings"
extra_overlay2 = "fatsynthwolf_glow"
/datum/sprite_accessory/tail/taur/skunk
name = "Skunk (Taur)"
icon_state = "skunk_s"
@@ -213,6 +219,15 @@
extra_overlay = "lizard_markings"
//icon_sprite_tag = "lizard2c"
/datum/sprite_accessory/tail/taur/ch/lizard/fat
name = "Fat Lizard (Taur)"
icon_state = "fatlizard_s"
/datum/sprite_accessory/tail/taur/ch/lizard/fat_2c
name = "Fat Lizard (Taur, dual-color)"
icon_state = "fatlizard_s"
extra_overlay= "fatlizard_markings"
/datum/sprite_accessory/tail/taur/lizard/synthlizard
name = "SynthLizard dual-color (Taur)"
icon_state = "synthlizard_s"
@@ -220,6 +235,12 @@
extra_overlay2 = "synthlizard_glow"
//icon_sprite_tag = "synthlizard"
/datum/sprite_accessory/tail/taur/ch/lizard/fatsynthlizard
name = "Fat SynthLizard dual-color (Taur)"
icon_state = "fatsynthlizard_s"
extra_overlay = "fatsynthlizard_markings"
extra_overlay2 = "fatsynthlizard_glow"
/datum/sprite_accessory/tail/taur/spider
name = "Spider (Taur)"
icon_state = "spider_s"
@@ -305,6 +326,12 @@
extra_overlay2 = "synthfeline_glow"
//icon_sprite_tag = "synthfeline"
/datum/sprite_accessory/tail/taur/ch/feline/fatsynthfeline
name = "Fat SynthFeline dual-color (Taur)"
icon_state = "fatsynthfeline_s"
extra_overlay = "fatsynthfeline_markings"
extra_overlay2 = "fatsynthfeline_glow"
/datum/sprite_accessory/tail/taur/slug
name = "Slug (Taur)"
icon_state = "slug_s"
-5
View File
@@ -105,11 +105,6 @@
verb = "asks"
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