diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index ad0c5e729f1..47f3981875a 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -74,217 +74,6 @@
usr.visible_message("[src] points to [A]")
return 1
-<<<<<<< HEAD
-/*one proc, four uses
-swapping: if it's 1, the mobs are trying to switch, if 0, non-passive is pushing passive
-default behaviour is:
- - non-passive mob passes the passive version
- - passive mob checks to see if its mob_bump_flag is in the non-passive's mob_bump_flags
- - if si, the proc returns
-*/
-/mob/living/proc/can_move_mob(var/mob/living/swapped, swapping = 0, passive = 0)
- if(!swapped)
- return 1
- if(!passive)
- return swapped.can_move_mob(src, swapping, 1)
- else
- var/context_flags = 0
- if(swapping)
- context_flags = swapped.mob_swap_flags
- else
- context_flags = swapped.mob_push_flags
- if(!mob_bump_flag) //nothing defined, go wild
- return 1
- if(mob_bump_flag & context_flags)
- return 1
- return 0
-
-/mob/living/Bump(atom/movable/AM)
- if(now_pushing || !loc || buckled == AM)
- return
- now_pushing = 1
- if (istype(AM, /mob/living))
- var/mob/living/tmob = AM
-
- //Even if we don't push/swap places, we "touched" them, so spread fire
- spread_fire(tmob)
-
- for(var/mob/living/M in range(tmob, 1))
- if(tmob.pinned.len || ((M.pulling == tmob && ( tmob.restrained() && !( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, tmob.grabbed_by.len)) )
- if ( !(world.time % 5) )
- to_chat(src, "[tmob] is restrained, you cannot push past")
- now_pushing = 0
- return
- if( tmob.pulling == M && ( M.restrained() && !( tmob.restrained() ) && tmob.stat == 0) )
- if ( !(world.time % 5) )
- to_chat(src, "[tmob] is restraining [M], you cannot push past")
- now_pushing = 0
- return
-
- //BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller
- var/can_swap = 1
- if(loc.density || tmob.loc.density)
- can_swap = 0
- if(can_swap)
- for(var/atom/movable/A in loc)
- if(A == src)
- continue
- if(!A.CanPass(tmob, loc))
- can_swap = 0
- if(!can_swap) break
- if(can_swap)
- for(var/atom/movable/A in tmob.loc)
- if(A == tmob)
- continue
- if(!A.CanPass(src, tmob.loc))
- can_swap = 0
- if(!can_swap) break
-
- //Leaping mobs just land on the tile, no pushing, no anything.
- if(status_flags & LEAPING)
- loc = tmob.loc
- status_flags &= ~LEAPING
- now_pushing = 0
- return
-
- 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
- // In case of micros, we don't swap positions; instead occupying the same square!
- if (handle_micro_bump_helping(tmob))
- now_pushing = 0
- return
- // TODO - Check if we need to do something about the slime.UpdateFeed() we are skipping below.
- // VOREStation Edit - End
- tmob.forceMove(oldloc)
- now_pushing = 0
- return
- //VOREStation Edit - Begin
- else if((tmob.mob_always_swap || (tmob.a_intent == I_HELP || tmob.restrained()) && (a_intent == I_HELP || src.restrained())) && canmove && can_swap && handle_micro_bump_helping(tmob))
- forceMove(tmob.loc)
- now_pushing = 0
- return
- //VOREStation Edit - End
-
- if(!can_move_mob(tmob, 0, 0))
- now_pushing = 0
- return
- if(a_intent == I_HELP || src.restrained())
- now_pushing = 0
- return
- // VOREStation Edit - Begin
- // Plow that nerd.
- if(ishuman(tmob))
- var/mob/living/carbon/human/H = tmob
- if(H.species.lightweight == 1 && prob(50))
- H.visible_message("[src] bumps into [H], knocking them off balance!")
- H.Weaken(5)
- now_pushing = 0
- return
- // Handle grabbing, stomping, and such of micros!
- if(handle_micro_bump_other(tmob)) return
- // VOREStation Edit - End
- if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
- if(prob(40) && !(FAT in src.mutations))
- to_chat(src, "You fail to push [tmob]'s fat ass out of the way.")
- now_pushing = 0
- return
- if(tmob.r_hand && istype(tmob.r_hand, /obj/item/weapon/shield/riot))
- if(prob(99))
- now_pushing = 0
- return
-
- if(tmob.l_hand && istype(tmob.l_hand, /obj/item/weapon/shield/riot))
- if(prob(99))
- now_pushing = 0
- return
- if(!(tmob.status_flags & CANPUSH))
- now_pushing = 0
- return
-
- tmob.LAssailant = src
-
- now_pushing = 0
- . = ..()
- if (!istype(AM, /atom/movable) || AM.anchored)
- //VOREStation Edit - object-specific proc for running into things
- if(((confused || is_blind()) && stat == CONSCIOUS && prob(50) && m_intent=="run") || flying)
- AM.stumble_into(src)
- //VOREStation Edit End
- /* VOREStation Removal - See above
- if(confused && prob(50) && m_intent=="run")
- Weaken(2)
- playsound(src, "punch", 25, 1, -1)
- visible_message("[src] [pick("ran", "slammed")] into \the [AM]!")
- src.apply_damage(5, BRUTE)
- to_chat(src, "You just [pick("ran", "slammed")] into \the [AM]!")
- */ // VOREStation Removal End
- return
- if (!now_pushing)
- if(isobj(AM))
- var/obj/I = AM
- if(!can_pull_size || can_pull_size < I.w_class)
- return
- now_pushing = 1
-
- var/t = get_dir(src, AM)
- if (istype(AM, /obj/structure/window))
- for(var/obj/structure/window/win in get_step(AM,t))
- now_pushing = 0
- return
- var/turf/T = AM.loc
- var/turf/T2 = get_step(AM,t)
- if(!T2) // Map edge
- now_pushing = 0
- return
- var/move_time = movement_delay(loc, t)
- move_time = DS2NEARESTTICK(move_time)
- if(AM.Move(T2, t, move_time))
- Move(T, t, move_time)
- if(ishuman(AM) && AM:grabbed_by)
- for(var/obj/item/weapon/grab/G in AM:grabbed_by)
- step(G:assailant, get_dir(G:assailant, AM))
- G.adjust_position()
- now_pushing = 0
-
-/mob/living/CanPass(atom/movable/mover, turf/target)
- if(istype(mover, /obj/structure/blob) && faction == "blob") //Blobs should ignore things on their faction.
- return TRUE
- return ..()
-
-// Called when something steps onto us. This allows for mulebots and vehicles to run things over. <3
-/mob/living/Crossed(var/atom/movable/AM) // Transplanting this from /mob/living/carbon/human/Crossed()
- if(AM == src || AM.is_incorporeal()) // We're not going to run over ourselves or ghosts
- return
-
- if(istype(AM, /mob/living/bot/mulebot))
- var/mob/living/bot/mulebot/MB = AM
- MB.runOver(src)
-
- if(istype(AM, /obj/vehicle))
- var/obj/vehicle/V = AM
- V.RunOver(src)
-
-=======
->>>>>>> 47f71b2... Reworks stairs to be sensible (#7783)
/mob/living/verb/succumb()
set hidden = 1
if ((src.health < 0 && src.health > (5-src.getMaxHealth()))) // Health below Zero but above 5-away-from-death, as before, but variable
diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm
index 2c6eb346064..5782ca62472 100644
--- a/code/modules/mob/living/living_movement.dm
+++ b/code/modules/mob/living/living_movement.dm
@@ -94,10 +94,40 @@ 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
+ // In case of micros, we don't swap positions; instead occupying the same square!
+ if (handle_micro_bump_helping(tmob))
+ now_pushing = 0
+ return
+ // TODO - Check if we need to do something about the slime.UpdateFeed() we are skipping below.
+ // VOREStation Edit - End
tmob.forceMove(oldloc)
now_pushing = 0
return
+ //VOREStation Edit - Begin
+ else if((tmob.mob_always_swap || (tmob.a_intent == I_HELP || tmob.restrained()) && (a_intent == I_HELP || src.restrained())) && canmove && can_swap && handle_micro_bump_helping(tmob))
+ forceMove(tmob.loc)
+ now_pushing = 0
+ return
+ //VOREStation Edit - End
if(!can_move_mob(tmob, 0, 0))
now_pushing = 0
@@ -105,6 +135,18 @@ default behaviour is:
if(a_intent == I_HELP || src.restrained())
now_pushing = 0
return
+ // VOREStation Edit - Begin
+ // Plow that nerd.
+ if(ishuman(tmob))
+ var/mob/living/carbon/human/H = tmob
+ if(H.species.lightweight == 1 && prob(50))
+ H.visible_message("[src] bumps into [H], knocking them off balance!")
+ H.Weaken(5)
+ now_pushing = 0
+ return
+ // Handle grabbing, stomping, and such of micros!
+ if(handle_micro_bump_other(tmob)) return
+ // VOREStation Edit - End
if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
if(prob(40) && !(FAT in src.mutations))
to_chat(src, "You fail to push [tmob]'s fat ass out of the way.")
@@ -127,12 +169,18 @@ default behaviour is:
now_pushing = 0
. = ..()
if (!istype(AM, /atom/movable) || AM.anchored)
+ //VOREStation Edit - object-specific proc for running into things
+ if(((confused || is_blind()) && stat == CONSCIOUS && prob(50) && m_intent=="run") || flying)
+ AM.stumble_into(src)
+ //VOREStation Edit End
+ /* VOREStation Removal - See above
if(confused && prob(50) && m_intent=="run")
Weaken(2)
playsound(src, "punch", 25, 1, -1)
visible_message("[src] [pick("ran", "slammed")] into \the [AM]!")
src.apply_damage(5, BRUTE)
to_chat(src, "You just [pick("ran", "slammed")] into \the [AM]!")
+ */ // VOREStation Removal End
return
if (!now_pushing)
if(isobj(AM))
diff --git a/code/modules/multiz/ladders.dm b/code/modules/multiz/ladders.dm
index be04c7c46ef..cca3019543c 100644
--- a/code/modules/multiz/ladders.dm
+++ b/code/modules/multiz/ladders.dm
@@ -120,70 +120,4 @@
/obj/structure/ladder/updown
allowed_directions = UP|DOWN
-<<<<<<< HEAD:code/modules/multiz/structures.dm
icon_state = "ladder11"
-
-/obj/structure/stairs
- name = "Stairs"
- desc = "Stairs leading to another deck. Not too useful if the gravity goes out."
- icon = 'icons/obj/stairs.dmi'
- density = 0
- opacity = 0
- anchored = 1
- flags = ON_BORDER
- layer = STAIRS_LAYER
-
-/obj/structure/stairs/Initialize()
- . = ..()
- for(var/turf/turf in locs)
- var/turf/simulated/open/above = GetAbove(turf)
- if(!above)
- warning("Stair created without level above: ([loc.x], [loc.y], [loc.z])")
- return qdel(src)
- if(!istype(above))
- above.ChangeTurf(/turf/simulated/open)
-
-/obj/structure/stairs/CheckExit(atom/movable/mover as mob|obj, turf/target as turf)
- if(get_dir(loc, target) == dir && upperStep(mover.loc))
- return FALSE
- . = ..()
-
-/obj/structure/stairs/Bumped(atom/movable/A)
- // This is hackish but whatever.
- var/turf/target = get_step(GetAbove(A), dir)
- if(target.Enter(A, src)) // Pass src to be ignored to avoid infinate loop
- A.forceMove(target)
- if(isliving(A))
- var/mob/living/L = A
- if(L.pulling && !L.pulling.anchored)
- L.pulling.forceMove(target)
-
-/obj/structure/stairs/proc/upperStep(var/turf/T)
- return (T == loc)
-
-/obj/structure/stairs/CanPass(obj/mover, turf/source, height, airflow)
- return airflow || !density
-
-// type paths to make mapping easier.
-/obj/structure/stairs/north
- dir = NORTH
- bound_height = 64
- bound_y = -32
- pixel_y = -32
-
-/obj/structure/stairs/south
- dir = SOUTH
- bound_height = 64
-
-/obj/structure/stairs/east
- dir = EAST
- bound_width = 64
- bound_x = -32
- pixel_x = -32
-
-/obj/structure/stairs/west
- dir = WEST
- bound_width = 64
-=======
- icon_state = "ladder11"
->>>>>>> 47f71b2... Reworks stairs to be sensible (#7783):code/modules/multiz/ladders.dm
diff --git a/code/modules/multiz/structures_vr.dm b/code/modules/multiz/ladders_vr.dm
similarity index 100%
rename from code/modules/multiz/structures_vr.dm
rename to code/modules/multiz/ladders_vr.dm