diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f72ec0d4888..68f993412af 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -132,16 +132,25 @@ default behaviour is: if((tmob.mob_always_swap || (tmob.a_intent == I_HELP || tmob.restrained()) && (a_intent == I_HELP || src.restrained())) && tmob.canmove && canmove && !tmob.buckled && !buckled && can_swap && can_move_mob(tmob, 1, 0)) // mutual brohugs all around! var/turf/oldloc = loc + //VOREstation Edit - Begin + + //check bumpnom chance, if it's a simplemob that's doing the bumping + var/mob/living/simple_mob/srcsimp = src + if(istype(srcsimp)) + if(srcsimp.tryBumpNom(tmob)) + now_pushing = 0 + return + + //if it's a simplemob being bumped, and the above didn't make them start getting bumpnommed, they get a chance to bumpnom + var/mob/living/simple_mob/tmobsimp = tmob + if(istype(tmobsimp)) + if(tmobsimp.tryBumpNom(src)) + now_pushing = 0 + return + + //VOREstation Edit - End forceMove(tmob.loc) //VOREstation Edit - Begin - if (istype(tmob, /mob/living/simple_mob)) //check bumpnom chance, if it's a simplemob that's bumped - tmob.Bumped(src) - else if(istype(src, /mob/living/simple_mob)) //otherwise, if it's a simplemob doing the bumping. Simplemob on simplemob doesn't seem to trigger but that's fine. - Bumped(tmob) - if (tmob.loc == src) //check if they got ate, and if so skip the forcemove - now_pushing = 0 - return - // In case of micros, we don't swap positions; instead occupying the same square! if (handle_micro_bump_helping(tmob)) now_pushing = 0 diff --git a/code/modules/mob/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm index 6b2d4bb6fea..ef631fa8975 100644 --- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm +++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm @@ -244,17 +244,23 @@ "The stomach glorps and gurgles as it tries to work you into slop.") /mob/living/simple_mob/Bumped(var/atom/movable/AM, yes) - if(ismob(AM)) - var/mob/tmob = AM - if(will_eat(tmob) && !istype(tmob, type) && prob(vore_bump_chance) && !ckey) //check if they decide to eat. Includes sanity check to prevent cannibalism. - if(tmob.canmove && prob(vore_pounce_chance)) //if they'd pounce for other noms, pounce for these too, otherwise still try and eat them if they hold still - tmob.Weaken(5) - tmob.visible_message("\the [src] [vore_bump_emote] \the [tmob]!!") - set_AI_busy(TRUE) + if(tryBumpNom(AM)) + return + ..() + +/mob/living/simple_mob/proc/tryBumpNom(var/mob/tmob) + //returns TRUE if we actually start an attempt to bumpnom, FALSE if checks fail or the random bump nom chance fails + if(istype(tmob) && will_eat(tmob) && !istype(tmob, type) && prob(vore_bump_chance) && !ckey) //check if they decide to eat. Includes sanity check to prevent cannibalism. + if(tmob.canmove && prob(vore_pounce_chance)) //if they'd pounce for other noms, pounce for these too, otherwise still try and eat them if they hold still + tmob.Weaken(5) + tmob.visible_message("\the [src] [vore_bump_emote] \the [tmob]!!") + set_AI_busy(TRUE) + spawn() animal_nom(tmob) update_icon() set_AI_busy(FALSE) - ..() + return TRUE + return FALSE // Checks to see if mob doesn't like this kind of turf /mob/living/simple_mob/IMove(newloc) diff --git a/icons/mob/taursuits_naga_vr.dmi b/icons/mob/taursuits_naga_vr.dmi index 7df326318cf..bfec658879f 100644 Binary files a/icons/mob/taursuits_naga_vr.dmi and b/icons/mob/taursuits_naga_vr.dmi differ