diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
index 316499e4527..12b71f3cf58 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
@@ -36,6 +36,12 @@
desc = "You're not quite sure how a signal can be bloody."
invisibility = 100
+/mob/living/simple_animal/hostile/megafauna/bubblegum/AttackingTarget()
+ ..()
+ if(isliving(target))
+ var/mob/living/L = target
+ devour(L)
+
/mob/living/simple_animal/hostile/megafauna/bubblegum/Life()
..()
move_to_delay = Clamp(round((health/maxHealth) * 10), 5, 10)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 7e636cc9672..f111e6f667d 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -35,6 +35,15 @@
var/anger_modifier = 0
var/obj/item/device/gps/internal
+
+/mob/living/simple_animal/hostile/megafauna/colossus/AttackingTarget()
+ ..()
+ if(isliving(target))
+ var/mob/living/L = target
+ if(L.stat == DEAD)
+ src.visible_message("[src] disintegrates [L]!")
+ L.dust()
+
/mob/living/simple_animal/hostile/megafauna/colossus/OpenFire()
anger_modifier = Clamp(((maxHealth - health)/50),0,20)
ranged_cooldown = world.time + 120
@@ -84,7 +93,7 @@
icon_state = "at_shield2"
layer = FLY_LAYER
luminosity = 2
- duration = 80
+ duration = 8
var/target
/obj/effect/overlay/temp/at_shield/New()
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
index cf826039d38..a8e0d681084 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
@@ -55,12 +55,7 @@
..()
if(isliving(target))
var/mob/living/L = target
- if(L.stat == DEAD)
- src.visible_message(
- "[src] devours [L]!",
- "You feast on [L], restoring your health!")
- adjustBruteLoss(-L.maxHealth/2)
- L.gib()
+ devour(L)
/mob/living/simple_animal/hostile/megafauna/dragon/Process_Spacemove(movement_dir = 0)
return 1
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
index 8b9a9b78d29..9975a751926 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
@@ -43,3 +43,11 @@
(FLW) \
moved via shuttle from ([oldloc.x],[oldloc.y],[oldloc.z]) to \
([newloc.x],[newloc.y],[newloc.z])")
+
+/mob/living/simple_animal/hostile/megafauna/proc/devour(mob/living/L)
+ if(L.stat == DEAD)
+ src.visible_message(
+ "[src] devours [L]!",
+ "You feast on [L], restoring your health!")
+ adjustBruteLoss(-L.maxHealth/2)
+ L.gib()
\ No newline at end of file