diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm
index aa06fa2e78..7e69298b69 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm
@@ -25,7 +25,7 @@
desc = "The maw of the dreaded Ash drake closes around you, engulfing you into a swelteringly hot, disgusting enviroment. The acidic saliva tingles over your form while that tongue pushes you further back...towards the dark gullet beyond."
vore_verb = "scoop"
vore_sound = "Stomach Move"
- swallow_time = 20
+ swallow_time = 60
escapechance = 25
// From above, will transfer into gullet
transferchance = 25
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 212b8d4d17..6af5174ec5 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
@@ -81,25 +81,18 @@
if(. && isliving(target))
var/mob/living/L = target
if(L.stat != DEAD)
- if(vore_active == TRUE && L.devourable == TRUE)
- if(L.Adjacent(targets_from))
- dragon_feeding(src,L)
- else if(!client && ranged && ranged_cooldown <= world.time)
- OpenFire()
- if(L.loc == src.contents)
- LoseTarget()
- return 0
-
- else if(!client && ranged && ranged_cooldown <= world.time)
+ if(!client && ranged && ranged_cooldown <= world.time)
OpenFire()
+
else if(L.stat >= SOFT_CRIT)
if(vore_active == TRUE && L.devourable == TRUE)
- if(L.Adjacent(targets_from))
+ if(isliving(target) && !target.Adjacent(targets_from))
+ return
+ else
dragon_feeding(src,L)
-
- if(L.loc == src.contents)
- LoseTarget()
- return 0
+ if(L.loc == src.contents)
+ LoseTarget()
+ return 0
else
devour(L)
diff --git a/modular_citadel/code/modules/vore/eating/living_vr.dm b/modular_citadel/code/modules/vore/eating/living_vr.dm
index d308f2c1bc..a559d42c20 100644
--- a/modular_citadel/code/modules/vore/eating/living_vr.dm
+++ b/modular_citadel/code/modules/vore/eating/living_vr.dm
@@ -133,7 +133,11 @@
//Sanity
if(!user || !prey || !pred || !istype(belly) || !(belly in pred.vore_organs))
testing("[user] attempted to feed [prey] to [pred], via [lowertext(belly.name)] but it went wrong.")
- return
+ return FALSE
+
+ if(istype(pred, /mob/living/simple_animal/hostile/megafauna/dragon))
+ if(isliving(prey) && !prey.Adjacent(pred))
+ return FALSE
// The belly selected at the time of noms
var/attempt_msg = "ERROR: Vore message couldn't be created. Notify a dev. (at)"
@@ -144,6 +148,9 @@
attempt_msg = text("[] starts to [] [] into their []!",pred,lowertext(belly.vore_verb),prey,lowertext(belly.name))
success_msg = text("[] manages to [] [] into their []!",pred,lowertext(belly.vore_verb),prey,lowertext(belly.name))
+ if(!prey.Adjacent(user)) // let's doublecheck for sanity's sake.
+ return FALSE
+
// Announce that we start the attempt!
user.visible_message(attempt_msg)
@@ -161,6 +168,7 @@
pred.log_message("[key_name(pred)] ate [key_name(prey)].", LOG_ATTACK)
prey.log_message("[key_name(prey)] was eaten by [key_name(pred)].", LOG_ATTACK)
return TRUE
+
//
// Master vore proc that actually does vore procedures
//
@@ -169,18 +177,16 @@
//Sanity
if(!user || !prey || !pred || !istype(belly) || !(belly in pred.vore_organs))
testing("[user] attempted to feed [prey] to [pred], via [lowertext(belly.name)] but it went wrong.")
- return
+ return FALSE
+
if (!prey.devourable)
to_chat(user, "This can't be eaten!")
- return
+ return FALSE
+
// The belly selected at the time of noms
var/attempt_msg = "ERROR: Vore message couldn't be created. Notify a dev. (at)"
var/success_msg = "ERROR: Vore message couldn't be created. Notify a dev. (sc)"
-/* //Final distance check. Time has passed, menus have come and gone. Can't use do_after adjacent because doesn't behave for held micros
- var/user_to_pred = get_dist(get_turf(user),get_turf(pred))
- var/user_to_prey = get_dist(get_turf(user),get_turf(prey)) */
-
// Prepare messages
if(user == pred) //Feeding someone to yourself
attempt_msg = text("[] is attemping to [] [] into their []!",pred,lowertext(belly.vore_verb),prey,lowertext(belly.name))
@@ -212,7 +218,6 @@
// Actually shove prey into the belly.
belly.nom_mob(prey, user)
-// user.update_icons()
stop_pulling()
// Flavor handling