diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f3d23ca3f51..3c14a1df556 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -59,8 +59,9 @@ //Even if we don't push/swap places, we "touched" them, so spread fire spreadFire(M) - if(now_pushing) - return 1 + // No pushing if we're already pushing past something, or if the mob we're pushing into is anchored. + if(now_pushing || M.anchored) + return TRUE //Should stop you pushing a restrained person out of the way if(isliving(M)) @@ -68,7 +69,7 @@ if(L.pulledby && L.pulledby != src && L.restrained()) if(!(world.time % 5)) to_chat(src, "[L] is restrained, you cannot push past.") - return 1 + return TRUE if(L.pulling) if(ismob(L.pulling)) @@ -76,28 +77,28 @@ if(P.restrained()) if(!(world.time % 5)) to_chat(src, "[L] is restrained, you cannot push past.") - return 1 + return TRUE if(moving_diagonally) //no mob swap during diagonal moves. - return 1 + return TRUE if(a_intent == INTENT_HELP) // Help intent doesn't mob swap a mob pulling a structure if(isstructure(M.pulling) || isstructure(pulling)) - return 1 + return TRUE if(!M.buckled && !M.has_buckled_mobs()) var/mob_swap //the puller can always swap with it's victim if on grab intent if(M.pulledby == src && a_intent == INTENT_GRAB) - mob_swap = 1 + mob_swap = TRUE //restrained people act if they were on 'help' intent to prevent a person being pulled from being seperated from their puller else if((M.restrained() || M.a_intent == INTENT_HELP) && (restrained() || a_intent == INTENT_HELP)) - mob_swap = 1 + mob_swap = TRUE if(mob_swap) //switch our position with M if(loc && !loc.Adjacent(M.loc)) - return 1 - now_pushing = 1 + return TRUE + now_pushing = TRUE var/oldloc = loc var/oldMloc = M.loc @@ -114,18 +115,18 @@ if(!M_passmob) M.pass_flags &= ~PASSMOB - now_pushing = 0 - return 1 + now_pushing = FALSE + return TRUE // okay, so we didn't switch. but should we push? // not if he's not CANPUSH of course if(!(M.status_flags & CANPUSH)) - return 1 + return TRUE //anti-riot equipment is also anti-push if(M.r_hand && (prob(M.r_hand.block_chance * 2)) && !istype(M.r_hand, /obj/item/clothing)) - return 1 + return TRUE if(M.l_hand && (prob(M.l_hand.block_chance * 2)) && !istype(M.l_hand, /obj/item/clothing)) - return 1 + return TRUE //Called when we bump into an obj /mob/living/proc/ObjBump(obj/O)