mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-01-03 14:03:25 +00:00
Added more drake emotes and sounds, thanks Spook.
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
emote_message_3p_target = SPAN_DANGER(emote_message_3p_target)
|
||||
emote_message_3p = SPAN_DANGER(emote_message_3p)
|
||||
|
||||
/decl/emote/audible/slap/do_extra(var/atom/user, var/atom/target)
|
||||
/decl/emote/audible/slap/do_extra(mob/user, atom/target)
|
||||
. = ..()
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
|
||||
@@ -39,6 +39,13 @@
|
||||
emote_cooldown = 20 SECONDS
|
||||
broadcast_distance = 65
|
||||
|
||||
/decl/emote/audible/whistle/summon/broadcast_emote_to(var/send_sound, var/mob/target, var/direction)
|
||||
if((. = ..()))
|
||||
to_chat(target, SPAN_NOTICE("You hear a piercing whistle from somewhere to the [dir2text(direction)]."))
|
||||
/decl/emote/audible/whistle/summon/broadcast_emote_to(var/send_sound, var/mob/target, var/origin_z, var/direction)
|
||||
. = ..()
|
||||
if (.)
|
||||
var/turf/T = get_turf(target)
|
||||
if(!T || T.z == origin_z)
|
||||
to_chat(target, SPAN_NOTICE("You hear a piercing whistle from somewhere to the [dir2text(direction)]."))
|
||||
else if(T.z < origin_z)
|
||||
to_chat(target, SPAN_NOTICE("You hear a piercing whistle from somewhere above you, to the [dir2text(direction)]."))
|
||||
else
|
||||
to_chat(target, SPAN_NOTICE("You hear a piercing whistle from somewhere below you, to the [dir2text(direction)]."))
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
key = "nomood"
|
||||
var/mood
|
||||
|
||||
/decl/emote/slime/do_extra(var/mob/living/simple_mob/slime/user)
|
||||
/decl/emote/slime/do_extra(mob/user, atom/target)
|
||||
. = ..()
|
||||
if(istype(user))
|
||||
user.mood = mood
|
||||
user.update_icon()
|
||||
if(istype(user, /mob/living/simple_mob/slime))
|
||||
var/mob/living/simple_mob/slime/user_slime = user
|
||||
user_slime.mood = mood
|
||||
user_slime.update_icon()
|
||||
|
||||
/decl/emote/slime/mob_can_use(var/atom/user)
|
||||
return ..() && isslime(user)
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
key = "collapse"
|
||||
emote_message_3p = "collapses!"
|
||||
|
||||
/decl/emote/visible/collapse/do_extra(var/mob/user)
|
||||
/decl/emote/visible/collapse/do_extra(mob/user, atom/target)
|
||||
..()
|
||||
if(istype(user))
|
||||
user.Paralyse(2)
|
||||
@@ -114,7 +114,7 @@
|
||||
key = "faint"
|
||||
emote_message_3p = "faints."
|
||||
|
||||
/decl/emote/visible/faint/do_extra(var/mob/user)
|
||||
/decl/emote/visible/faint/do_extra(mob/user, atom/target)
|
||||
. = ..()
|
||||
if(istype(user) && !user.sleeping)
|
||||
user.Sleeping(10)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
emote_message_3p = "spins!"
|
||||
emote_delay = 2 SECONDS
|
||||
|
||||
/decl/emote/visible/spin/do_extra(mob/user)
|
||||
/decl/emote/visible/spin/do_extra(mob/user, atom/target)
|
||||
if(istype(user))
|
||||
user.spin(20, 1)
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
emote_message_3p = "steps rhythmically and moves side to side."
|
||||
emote_delay = 1.2 SECONDS
|
||||
|
||||
/decl/emote/visible/sidestep/do_extra(mob/user)
|
||||
/decl/emote/visible/sidestep/do_extra(mob/user, atom/target)
|
||||
if(istype(user))
|
||||
animate(user, pixel_x = 5, time = 5)
|
||||
sleep(3)
|
||||
@@ -28,7 +28,7 @@
|
||||
emote_sound = 'sound/effects/bodyfall4.ogg'
|
||||
emote_delay = 1.2 SECONDS
|
||||
|
||||
/decl/emote/visible/flip/do_extra(mob/user)
|
||||
/decl/emote/visible/flip/do_extra(mob/user, atom/target)
|
||||
. = ..()
|
||||
if(istype(user))
|
||||
user.SpinAnimation(7,1)
|
||||
@@ -73,7 +73,7 @@
|
||||
if(!QDELETED(user))
|
||||
user.SpinAnimation(10,1)
|
||||
|
||||
/decl/emote/visible/floorspin/do_extra(mob/user)
|
||||
/decl/emote/visible/floorspin/do_extra(mob/user, atom/target)
|
||||
. = ..()
|
||||
if(istype(user))
|
||||
spin_dir(user)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// 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.
|
||||
// - USER_THEM / TARGET_THEM / USER_THEIR / TARGET_THEIR / USER_THEY / TARGET_THEY
|
||||
// will be replaced with a gender-appropriate version of the same.
|
||||
// - Impaired messages do not do any substitutions.
|
||||
|
||||
var/global/list/emotes_by_key
|
||||
@@ -94,6 +94,9 @@ var/global/list/emotes_by_key
|
||||
LAZYINITLIST(.)
|
||||
.["broadcast"] = broadcast_sound
|
||||
|
||||
/decl/emote/proc/finalize_target(var/atom/target)
|
||||
return TRUE
|
||||
|
||||
/decl/emote/proc/do_emote(var/atom/user, var/extra_params)
|
||||
|
||||
if(ismob(user) && check_restraints)
|
||||
@@ -127,7 +130,7 @@ var/global/list/emotes_by_key
|
||||
target_dist = new_target_dist
|
||||
target = thing
|
||||
|
||||
if(!target)
|
||||
if(!finalize_target(user, target))
|
||||
to_chat(user, SPAN_WARNING("You cannot see a '[extra_params]' within range."))
|
||||
return FALSE
|
||||
|
||||
@@ -176,8 +179,10 @@ var/global/list/emotes_by_key
|
||||
if(istype(target))
|
||||
var/datum/gender/target_gender = gender_datums[target.get_visible_gender()]
|
||||
. = replacetext(., "TARGET_THEM", target_gender.him)
|
||||
. = replacetext(., "TARGET_THEY", target_gender.he)
|
||||
. = replacetext(., "TARGET_THEIR", target_gender.his)
|
||||
. = replacetext(., "TARGET_SELF", target_gender.himself)
|
||||
. = replacetext(., "TARGET_S", target_gender.s)
|
||||
. = replacetext(., "TARGET", "<b>\the [target]</b>")
|
||||
|
||||
/decl/emote/proc/replace_user_tokens(var/msg, var/atom/user)
|
||||
@@ -185,8 +190,10 @@ var/global/list/emotes_by_key
|
||||
if(istype(user))
|
||||
var/datum/gender/user_gender = gender_datums[user.get_visible_gender()]
|
||||
. = replacetext(., "USER_THEM", user_gender.him)
|
||||
. = replacetext(., "USER_THEY", user_gender.he)
|
||||
. = replacetext(., "USER_THEIR", user_gender.his)
|
||||
. = replacetext(., "USER_SELF", user_gender.himself)
|
||||
. = replacetext(., "USER_S", user_gender.s)
|
||||
. = replacetext(., "USER", "<b>\the [user]</b>")
|
||||
|
||||
/decl/emote/proc/get_radio_message(var/atom/user)
|
||||
@@ -194,7 +201,7 @@ var/global/list/emotes_by_key
|
||||
return emote_message_radio_synthetic
|
||||
return emote_message_radio
|
||||
|
||||
/decl/emote/proc/do_extra(var/atom/user, var/atom/target)
|
||||
/decl/emote/proc/do_extra(mob/user, atom/target)
|
||||
return
|
||||
|
||||
/decl/emote/proc/do_sound(var/atom/user)
|
||||
@@ -251,9 +258,9 @@ var/global/list/emotes_by_key
|
||||
continue
|
||||
if(!isnull(broadcast_distance) && get_dist(reference_point, user_turf) > broadcast_distance)
|
||||
continue
|
||||
broadcast_emote_to(sound_to_broadcast, listener, direction)
|
||||
broadcast_emote_to(sound_to_broadcast, listener, user_turf.z, direction)
|
||||
|
||||
/decl/emote/proc/broadcast_emote_to(var/send_sound, var/mob/target, var/direction)
|
||||
/decl/emote/proc/broadcast_emote_to(var/send_sound, var/mob/target, var/origin_z, var/direction)
|
||||
var/turf/sound_origin = get_turf(target)
|
||||
target.playsound_local(get_step(sound_origin, direction) || sound_origin, send_sound, broadcast_volume)
|
||||
return TRUE
|
||||
|
||||
@@ -12,7 +12,7 @@ You can eat glowing tree fruit to fuel your <b>ranged spitting attack</b> and <b
|
||||
icon_dead = "doggo_lying"
|
||||
icon_rest = "doggo_lying"
|
||||
projectileverb = "spits"
|
||||
friendly = list("headbutts", "grooms", "play-bites", "rubs against")
|
||||
friendly = list("sniffs")
|
||||
bitesize = 10 // chomp
|
||||
gender = NEUTER
|
||||
|
||||
@@ -161,10 +161,32 @@ You can eat glowing tree fruit to fuel your <b>ranged spitting attack</b> and <b
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/get_available_emotes()
|
||||
if (!is_baby)
|
||||
return global._default_mob_emotes | /decl/emote/audible/drake_howl
|
||||
return global._default_mob_emotes
|
||||
if(is_baby)
|
||||
var/static/list/_baby_drake_emotes = list(
|
||||
/decl/emote/audible/drake_hatchling_growl,
|
||||
/decl/emote/audible/drake_hatchling_whine,
|
||||
/decl/emote/audible/drake_hatchling_yelp,
|
||||
/decl/emote/audible/drake_warn/hatchling,
|
||||
/decl/emote/audible/drake_sneeze
|
||||
)
|
||||
return global._default_mob_emotes | _baby_drake_emotes
|
||||
else
|
||||
var/static/list/_adult_drake_emotes = list(
|
||||
/decl/emote/audible/drake_warble,
|
||||
/decl/emote/audible/drake_purr,
|
||||
/decl/emote/audible/drake_grumble,
|
||||
/decl/emote/audible/drake_huff,
|
||||
/decl/emote/audible/drake_rattle,
|
||||
/decl/emote/audible/drake_warn,
|
||||
/decl/emote/audible/drake_rumble,
|
||||
/decl/emote/audible/drake_roar,
|
||||
/decl/emote/audible/drake_sneeze,
|
||||
/decl/emote/visible/drake_headbutt
|
||||
)
|
||||
return global._default_mob_emotes | _adult_drake_emotes
|
||||
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/lay_down()
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
/decl/emote/audible/drake_roar
|
||||
key = "droar"
|
||||
emote_message_3p = "inflates USER_THEIR throat, lifts USER_THEIR head up, and releases a resonating, bone-shaking roar."
|
||||
emote_sound = 'sound/voice/drakes/drake_roar.ogg'
|
||||
broadcast_sound = 'sound/voice/drakes/drake_roar.ogg'
|
||||
emote_cooldown = 20 SECONDS
|
||||
broadcast_distance = 90
|
||||
|
||||
/decl/emote/audible/drake_roar/broadcast_emote_to(send_sound, mob/target, var/origin_z, direction)
|
||||
. = ..()
|
||||
if (.)
|
||||
var/turf/T = get_turf(target)
|
||||
if(!T || T.z == origin_z)
|
||||
to_chat(target, SPAN_NOTICE("You hear a resonant bellowing roar from somewhere to the [dir2text(direction)]."))
|
||||
else if(T.z < origin_z)
|
||||
to_chat(target, SPAN_NOTICE("You hear a resonant bellowing roar from somewhere above you, to the [dir2text(direction)]."))
|
||||
else
|
||||
to_chat(target, SPAN_NOTICE("You hear a resonant bellowing roar from somewhere below you, to the [dir2text(direction)]."))
|
||||
|
||||
/decl/emote/audible/drake_warble
|
||||
key = "dwarble"
|
||||
emote_message_3p = "warbles happily."
|
||||
// emote_sound = 'sound/voice/drakes/drake_warble.ogg'
|
||||
/decl/emote/audible/drake_purr
|
||||
key = "dpurr"
|
||||
emote_message_3p = "emits a low, rumbling purr."
|
||||
emote_message_3p_target = "emits a low, rumbling purr as USER_THEY rubUSER_S USER_THEIR head against TARGET."
|
||||
// emote_sound = 'sound/voice/drakes/drake_purr.ogg'
|
||||
|
||||
// Do some bespoke adjacency checking since we want this to be more granular than a straight range check.
|
||||
/decl/emote/audible/drake_purr/get_emote_message_3p(var/atom/user, var/atom/target, var/extra_params)
|
||||
. = ..()
|
||||
if(. == emote_message_3p_target && target && !user.Adjacent(target))
|
||||
. = "half-lids their eyes at TARGET and emits a low, rumbling purr."
|
||||
|
||||
/decl/emote/audible/drake_grumble
|
||||
key = "dgrumble"
|
||||
emote_message_3p = "grumbles unhappily."
|
||||
emote_message_3p_target = "grumbles unhappily at TARGET."
|
||||
emote_sound = 'sound/voice/drakes/drake_grumble.ogg'
|
||||
|
||||
/decl/emote/audible/drake_huff
|
||||
key = "dhuff"
|
||||
emote_message_3p = "huffs!"
|
||||
emote_message_3p_target = "huffs at TARGET!"
|
||||
emote_sound = 'sound/voice/drakes/drake_huff.ogg'
|
||||
|
||||
/decl/emote/audible/drake_warn
|
||||
key = "dwarn"
|
||||
emote_message_1p = "You fill your throat sacs with spittle, preparing to attack."
|
||||
emote_message_1p_target = "You stare at TARGET as you fill your throat sacs with spittle, preparing to attack."
|
||||
emote_message_3p = "works USER_THEIR throat, making a horrible wet noise..."
|
||||
emote_message_3p_target = "stares intently at TARGET, working USER_THEIR throat to make a horrible wet noise..."
|
||||
emote_sound = 'sound/voice/drakes/drake_warn.ogg'
|
||||
|
||||
/decl/emote/audible/drake_warn/hatchling
|
||||
key = "hwarn"
|
||||
emote_sound = 'sound/voice/drakes/hatchling_warn.ogg'
|
||||
|
||||
/decl/emote/audible/drake_warn/Initialize()
|
||||
. = ..()
|
||||
emote_message_1p = SPAN_WARNING(emote_message_1p)
|
||||
emote_message_1p_target = SPAN_WARNING(emote_message_1p_target)
|
||||
emote_message_3p = SPAN_WARNING(emote_message_3p)
|
||||
emote_message_3p_target = SPAN_WARNING(emote_message_3p_target)
|
||||
|
||||
/decl/emote/audible/drake_rattle
|
||||
key = "drattle"
|
||||
emote_message_1p = "You bark a challenge and rattle your neck-spines threateningly."
|
||||
emote_message_1p_target = "You challenge TARGET with a sharp bark, rattling your neck-spines threateningly."
|
||||
emote_message_3p = "barks sharply and rattles USER_THEIR neck-spines!"
|
||||
emote_message_3p_target = "barks sharply at TARGET, rattling USER_THEIR neck-spines!"
|
||||
emote_sound = 'sound/voice/drakes/drake_rattle.ogg'
|
||||
|
||||
/decl/emote/audible/drake_rattle/Initialize()
|
||||
. = ..()
|
||||
emote_message_1p = SPAN_WARNING(emote_message_1p)
|
||||
emote_message_1p_target = SPAN_WARNING(emote_message_1p_target)
|
||||
emote_message_3p = SPAN_WARNING(emote_message_3p)
|
||||
emote_message_3p_target = SPAN_WARNING(emote_message_3p_target)
|
||||
|
||||
/decl/emote/visible/drake_headbutt
|
||||
key = "headbutt"
|
||||
emote_message_3p = "waves USER_THEIR head around energetically."
|
||||
emote_message_3p_target = "headbutts TARGET!"
|
||||
check_range = 1
|
||||
emote_cooldown = 5 SECONDS
|
||||
|
||||
/decl/emote/visible/drake_headbutt/finalize_target(var/mob/user, var/atom/target)
|
||||
return user.Adjacent(target) && ..()
|
||||
|
||||
/decl/emote/visible/drake_headbutt/do_extra(mob/user, atom/target)
|
||||
. = ..()
|
||||
// Copied from disarm.
|
||||
if(!isliving(target) || prob(75))
|
||||
return
|
||||
|
||||
var/mob/living/victim = target
|
||||
var/datum/species/species = victim.get_species()
|
||||
if(species?.flags & NO_SLIP)
|
||||
return
|
||||
|
||||
var/obj/item/clothing/shoes = victim.get_equipped_item(slot_shoes)
|
||||
if(istype(shoes) && (shoes.item_flags & NOSLIP))
|
||||
return
|
||||
|
||||
var/armor_check = victim.run_armor_check(user.zone_sel?.selecting || BP_TORSO, "melee")
|
||||
if(armor_check < 60)
|
||||
victim.apply_effect(3, WEAKEN, armor_check)
|
||||
playsound(victim, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
|
||||
/decl/emote/audible/drake_rumble
|
||||
key = "drumble"
|
||||
emote_message_3p = "rumbles in the depths of USER_THEIR chest."
|
||||
emote_sound = 'sound/voice/drakes/drake_rumble.ogg'
|
||||
|
||||
/decl/emote/audible/drake_hatchling_growl
|
||||
key = "hgrowl"
|
||||
emote_message_3p = "voices a high-pitched growl!"
|
||||
emote_sound = 'sound/voice/drakes/hatchling_growl.ogg'
|
||||
|
||||
/decl/emote/audible/drake_hatchling_whine
|
||||
key = "hwhine"
|
||||
emote_message_3p = "whines plaintively!"
|
||||
emote_sound = 'sound/voice/drakes/hatchling_whine.ogg'
|
||||
|
||||
/decl/emote/audible/drake_hatchling_yelp
|
||||
key = "hyelp"
|
||||
emote_message_3p = "yelps!"
|
||||
emote_sound = 'sound/voice/drakes/hatchling_yelp.ogg'
|
||||
|
||||
/decl/emote/audible/drake_sneeze
|
||||
key = "dsneeze"
|
||||
emote_message_1p = "You sneeze!"
|
||||
emote_message_3p = "sneezes!"
|
||||
emote_sound = 'sound/voice/drakes/drake_sneeze.ogg'
|
||||
@@ -45,7 +45,7 @@ Field studies suggest analytical abilities on par with some species of cepholapo
|
||||
/datum/say_list/grafadreka
|
||||
speak = list("Chff!", "Skhh.", "Rrrss...")
|
||||
emote_see = list("scratches its ears","grooms its spines", "sways its tail", "claws at the ground")
|
||||
emote_hear = list("hisses", "rattles", "rasps", "barks")
|
||||
emote_hear = list("hisses", "rattles", "rasps", "barks", "warbles")
|
||||
|
||||
|
||||
/decl/mob_organ_names/grafadreka
|
||||
@@ -63,21 +63,6 @@ Field studies suggest analytical abilities on par with some species of cepholapo
|
||||
)
|
||||
|
||||
|
||||
/decl/emote/audible/drake_howl
|
||||
key = "dhowl"
|
||||
emote_message_3p = "lifts USER_THEIR head up and gives an eerie howl."
|
||||
emote_sound = 'sound/effects/drakehowl_close.ogg'
|
||||
broadcast_sound ='sound/effects/drakehowl_far.ogg'
|
||||
emote_cooldown = 20 SECONDS
|
||||
broadcast_distance = 90
|
||||
|
||||
|
||||
/decl/emote/audible/drake_howl/broadcast_emote_to(send_sound, mob/target, direction)
|
||||
. = ..()
|
||||
if (.)
|
||||
to_chat(target, SPAN_NOTICE("You hear an eerie howl from somewhere to the [dir2text(direction)]."))
|
||||
|
||||
|
||||
/obj/item/projectile/drake_spit
|
||||
name = "drake spit"
|
||||
icon_state = "ice_1"
|
||||
|
||||
Reference in New Issue
Block a user