diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm
index 6c1a2cfec9..041b367ebf 100644
--- a/code/modules/mob/living/emote.dm
+++ b/code/modules/mob/living/emote.dm
@@ -87,6 +87,12 @@
message_simple = S.deathmessage
. = ..()
message_simple = initial(message_simple)
+ if(. && user.deathsound)
+ if(isliving(user))
+ var/mob/living/L = user
+ if(!L.can_speak_vocal() || L.oxyloss >= 50)
+ return //stop the sound if oxyloss too high/cant speak
+ playsound(user, user.deathsound, 200, TRUE, TRUE)
if(. && isalienadult(user))
playsound(user.loc, 'sound/voice/hiss6.ogg', 80, 1, 1)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
index 7c135cc970..36abd92b40 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
@@ -24,7 +24,6 @@
var/list/attack_action_types = list()
var/can_talk = FALSE
var/obj/loot_drop = null
-
//Gives player-controlled variants the ability to swap attacks
/mob/living/simple_animal/hostile/asteroid/elite/Initialize(mapload)
@@ -138,6 +137,13 @@ While using this makes the system rely on OnFire, it still gives options for tim
light_range = 3
anchored = TRUE
density = FALSE
+ var/obj/item/gps/internal = null
+
+/obj/item/gps/internal/elite
+ icon_state = null
+ gpstag = "Menacing Signal"
+ desc = "You're not quite sure how a signal can be bloody."
+ invisibility = 100
/obj/structure/elite_tumor/attack_hand(mob/user)
. = ..()
@@ -196,7 +202,7 @@ obj/structure/elite_tumor/proc/return_elite()
/obj/structure/elite_tumor/Initialize(mapload)
. = ..()
- AddComponent(/datum/component/gps, "Menacing Signal")
+ internal = new/obj/item/gps/internal/elite(src)
START_PROCESSING(SSobj, src)
/obj/structure/elite_tumor/Destroy()
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
index 1bcd3173ea..c18a342206 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
@@ -30,13 +30,14 @@
melee_damage_lower = 30
melee_damage_upper = 30
armour_penetration = 30
- attack_verb_continuous = "beats down on"
- attack_verb_simple = "beat down on"
+ attacktext = "beats down on"
+ /*attack_verb_continuous = "beats down on"
+ attack_verb_simple = "beat down on"*/
attack_sound = 'sound/weapons/punch1.ogg'
throw_message = "does nothing to the rocky hide of the"
speed = 2
move_to_delay = 5
- mob_biotypes = MOB_ORGANIC|MOB_BEAST
+ mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
mouse_opacity = MOUSE_OPACITY_ICON
deathmessage = "explodes into gore!"
loot_drop = /obj/item/crusher_trophy/broodmother_tongue
@@ -170,13 +171,14 @@
health = 30
melee_damage_lower = 5
melee_damage_upper = 5
- attack_verb_continuous = "bashes against"
- attack_verb_simple = "bash against"
+ attacktext = "bashes against"
+ /*attack_verb_continuous = "bashes against"
+ attack_verb_simple = "bash against"*/
attack_sound = 'sound/weapons/punch1.ogg'
throw_message = "does nothing to the rocky hide of the"
speed = 2
move_to_delay = 5
- mob_biotypes = MOB_ORGANIC|MOB_BEAST
+ mob_biotypes = list(MOB_ORGANIC, MOB_BEAST)
mouse_opacity = MOUSE_OPACITY_ICON
butcher_results = list()
guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide = 1)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
index 3f184e2f52..f1e7494beb 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
@@ -28,8 +28,9 @@
health = 800
melee_damage_lower = 20
melee_damage_upper = 20
- attack_verb_continuous = "preaches to"
- attack_verb_simple = "preach to"
+ attacktext = "preaches to"
+ /*attack_verb_continuous = "preaches to"
+ attack_verb_simple = "preach to"*/
attack_sound = 'sound/magic/clockwork/ratvar_attack.ogg'
throw_message = "doesn't affect the purity of"
speed = 4
@@ -124,11 +125,11 @@
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/shoot_projectile(turf/marker, set_angle, var/is_teleshot)
var/turf/startloc = get_turf(src)
- var/obj/projectile/herald/H = null
+ var/obj/item/projectile/herald/H = null
if(!is_teleshot)
- H = new /obj/projectile/herald(startloc)
+ H = new /obj/item/projectile/herald(startloc)
else
- H = new /obj/projectile/herald/teleshot(startloc)
+ H = new /obj/item/projectile/herald/teleshot(startloc)
H.preparePixelProjectile(marker, startloc)
H.firer = src
if(target)
@@ -210,7 +211,7 @@
my_master.my_mirror = null
. = ..()
-/obj/projectile/herald
+/obj/item/projectile/herald
name ="death bolt"
icon_state= "chronobolt"
damage = 15
@@ -220,12 +221,12 @@
damage_type = BRUTE
pass_flags = PASSTABLE
-/obj/projectile/herald/teleshot
+/obj/item/projectile/herald/teleshot
name ="golden bolt"
damage = 0
color = rgb(255,255,102)
-/obj/projectile/herald/on_hit(atom/target, blocked = FALSE)
+/obj/item/projectile/herald/on_hit(atom/target, blocked = FALSE)
. = ..()
if(ismineralturf(target))
var/turf/closed/mineral/M = target
@@ -237,7 +238,7 @@
if(F != null && istype(F, /mob/living/simple_animal/hostile/asteroid/elite) && F.faction_check_mob(L))
L.heal_overall_damage(damage)
-/obj/projectile/herald/teleshot/on_hit(atom/target, blocked = FALSE)
+/obj/item/projectile/herald/teleshot/on_hit(atom/target, blocked = FALSE)
. = ..()
firer.forceMove(get_turf(src))
@@ -258,8 +259,8 @@
/obj/item/clothing/neck/cloak/herald_cloak/proc/shoot_projectile(turf/marker, set_angle, mob/living/carbon/owner)
var/turf/startloc = get_turf(owner)
- var/obj/projectile/herald/H = null
- H = new /obj/projectile/herald(startloc)
+ var/obj/item/projectile/herald/H = null
+ H = new /obj/item/projectile/herald(startloc)
H.preparePixelProjectile(marker, startloc)
H.firer = owner
H.fire(set_angle)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
index 5e0c00d998..1bc9ea1e4e 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
@@ -28,8 +28,9 @@
health = 800
melee_damage_lower = 30
melee_damage_upper = 30
- attack_verb_continuous = "slashes its arms at"
- attack_verb_simple = "slash your arms at"
+ attacktext = "slashes its arms at"
+ /*attack_verb_continuous = "slashes its arms at"
+ attack_verb_simple = "slash your arms at"*/
attack_sound = 'sound/weapons/bladeslice.ogg'
throw_message = "doesn't affect the sturdiness of"
speed = 1
@@ -130,7 +131,8 @@
visible_message("[src] attacks [L] with much force!")
to_chat(L, "[src] grabs you and throws you with much force!")
L.safe_throw_at(throwtarget, 10, 1, src)
- L.Paralyze(20)
+ //L.Paralyze(20)
+ L.Stun(20) //substituting this for the Paralyze from the line above, because we don't have tg paralysis stuff
L.adjustBruteLoss(50)
addtimer(CALLBACK(src, .proc/legionnaire_charge_2, move_dir, (times_ran + 1)), 2)
@@ -224,8 +226,9 @@
health = 80
melee_damage_lower = 10
melee_damage_upper = 10
- attack_verb_continuous = "bites at"
- attack_verb_simple = "bite at"
+ attacktext = "bites at"
+ /*attack_verb_continuous = "bites at"
+ attack_verb_simple = "bite at"*/
attack_sound = 'sound/effects/curse1.ogg'
throw_message = "simply misses"
speed = 0
@@ -248,7 +251,7 @@
icon = 'icons/obj/lavaland/legionnaire_bonfire.dmi'
icon_state = "bonfire"
max_integrity = 100
- move_resist = MOVE_FORCE_EXTREMELY_STRONG
+ //move_resist = MOVE_FORCE_EXTREMELY_STRONG
anchored = TRUE
density = FALSE
light_range = 4
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
index 7422a441aa..540470d505 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
@@ -28,8 +28,9 @@
health = 800
melee_damage_lower = 15
melee_damage_upper = 15
- attack_verb_continuous = "smashes into the side of"
- attack_verb_simple = "smash into the side of"
+ attacktext = "smashes into the side of"
+ /*attack_verb_continuous = "smashes into the side of"
+ attack_verb_simple = "smash into the side of"*/
attack_sound = 'sound/weapons/sonic_jackhammer.ogg'
throw_message = "merely dinks off of the"
speed = 4
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 0cb886f11b..a9f4c94397 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -99,6 +99,12 @@
var/obj/control_object //Used by admins to possess objects. All mobs should have this var
var/atom/movable/remote_control //Calls relaymove() to whatever it is
+ /**
+ * The sound made on death
+ *
+ * leave null for no sound. used for *deathgasp
+ */
+ var/deathsound = null
var/turf/listed_turf = null //the current turf being examined in the stat panel