Merge pull request #3945 from Citadel-Station-13/upstream-merge-32702

[MIRROR] Minor speedups to movement: First Blood Part 2
This commit is contained in:
LetterJay
2017-11-15 10:41:16 -06:00
committed by GitHub
27 changed files with 45 additions and 64 deletions
+2 -5
View File
@@ -62,7 +62,7 @@
/atom/movable/Move(atom/newloc, direct = 0)
if(!loc || !newloc)
return 0
return FALSE
var/atom/oldloc = loc
if(loc != newloc)
@@ -113,7 +113,7 @@
last_move = direct
setDir(direct)
if(. && has_buckled_mobs() && !handle_buckled_mob_movement(loc,direct)) //movement failed due to buckled mob(s)
. = 0
return FALSE
//Called after a successful Move(). By this point, we've already moved
/atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE)
@@ -325,9 +325,6 @@
SSspacedrift.processing[src] = src
return 1
/atom/movable/proc/checkpass(passflag)
return pass_flags&passflag
/atom/movable/proc/throw_impact(atom/hit_atom, throwingdatum)
set waitfor = 0
SendSignal(COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum)
+2 -2
View File
@@ -84,14 +84,14 @@ GLOBAL_LIST_EMPTY(blob_nodes)
if(!T || !(T.z in GLOB.station_z_levels))
continue
if(L in GLOB.overminds || L.checkpass(PASSBLOB))
if(L in GLOB.overminds || (L.pass_flags & PASSBLOB))
continue
var/area/Ablob = get_area(T)
if(!Ablob.blob_allowed)
continue
if(!("blob" in L.faction))
playsound(L, 'sound/effects/splat.ogg', 50, 1)
L.death()
+2 -2
View File
@@ -67,7 +67,7 @@
return atmosblock
/obj/structure/blob/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSBLOB))
if(istype(mover) && (mover.pass_flags & PASSBLOB))
return 1
return 0
@@ -78,7 +78,7 @@
. = 0
if(ismovableatom(caller))
var/atom/movable/mover = caller
. = . || mover.checkpass(PASSBLOB)
. = . || (mover.pass_flags & PASSBLOB)
/obj/structure/blob/update_icon() //Updates color based on overmind color if we have an overmind.
if(overmind)
+2 -6
View File
@@ -258,16 +258,12 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
AI.switchCamera(C)
/mob/living/carbon/human/Move()
var/old_z = src.z
. = ..()
if (src.w_uniform)
var/old_z = src.z
. = ..()
if (old_z != src.z)
GLOB.crewmonitor.queueUpdate(old_z)
GLOB.crewmonitor.queueUpdate(src.z)
else
return ..()
/datum/crewmonitor/proc/queueUpdate(z)
addtimer(CALLBACK(src, .proc/update, z), 5, TIMER_UNIQUE)
+1 -1
View File
@@ -103,7 +103,7 @@
move_update_air(T)
/obj/machinery/door/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
if(istype(mover) && (mover.pass_flags & PASSGLASS))
return !opacity
return !density
+2 -2
View File
@@ -212,7 +212,7 @@
CanAtmosPass = ATMOS_PASS_PROC
/obj/machinery/door/firedoor/border_only/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
if(istype(mover) && (mover.pass_flags & PASSGLASS))
return 1
if(get_dir(loc, target) == dir) //Make sure looking at appropriate border
return !density
@@ -220,7 +220,7 @@
return 1
/obj/machinery/door/firedoor/border_only/CheckExit(atom/movable/mover as mob|obj, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
if(istype(mover) && (mover.pass_flags & PASSGLASS))
return 1
if(get_dir(loc, target) == dir)
return !density
+2 -2
View File
@@ -90,7 +90,7 @@
return
/obj/machinery/door/window/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
if(istype(mover) && (mover.pass_flags & PASSGLASS))
return 1
if(get_dir(loc, target) == dir) //Make sure looking at appropriate border
return !density
@@ -118,7 +118,7 @@
return !density || (dir != to_dir) || (check_access(ID) && hasPower())
/obj/machinery/door/window/CheckExit(atom/movable/mover as mob|obj, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
if(istype(mover) && (mover.pass_flags & PASSGLASS))
return 1
if(get_dir(loc, target) == dir)
return !density
+1 -1
View File
@@ -434,7 +434,7 @@
gen_secondary.use_stored_power(drain_amount*0.5)
/obj/machinery/shieldwall/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
if(istype(mover) && (mover.pass_flags & PASSGLASS))
return prob(20)
else
if(istype(mover, /obj/item/projectile))
@@ -295,7 +295,7 @@
Item.extinguish()
/obj/structure/foamedmetal/resin/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
if(istype(mover) && (mover.pass_flags & PASSGLASS))
return TRUE
. = ..()
@@ -95,7 +95,7 @@
return ..()
/obj/structure/projected_forcefield/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
if(istype(mover) && (mover.pass_flags & PASSGLASS))
return 1
return !density
+2 -2
View File
@@ -287,7 +287,7 @@
return TRUE
/obj/structure/girder/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGRILLE))
if(istype(mover) && (mover.pass_flags & PASSGRILLE))
return prob(girderpasschance)
else
if(istype(mover, /obj/item/projectile))
@@ -299,7 +299,7 @@
. = !density
if(ismovableatom(caller))
var/atom/movable/mover = caller
. = . || mover.checkpass(PASSGRILLE)
. = . || (mover.pass_flags & PASSGRILLE)
/obj/structure/girder/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
+2 -2
View File
@@ -100,7 +100,7 @@
/obj/structure/grille/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGRILLE))
if(istype(mover) && (mover.pass_flags & PASSGRILLE))
return TRUE
else
if(istype(mover, /obj/item/projectile) && density)
@@ -112,7 +112,7 @@
. = !density
if(ismovableatom(caller))
var/atom/movable/mover = caller
. = . || mover.checkpass(PASSGRILLE)
. = . || (mover.pass_flags & PASSGRILLE)
/obj/structure/grille/attackby(obj/item/W, mob/user, params)
user.changeNext_move(CLICK_CD_MELEE)
+2 -2
View File
@@ -323,7 +323,7 @@ GLOBAL_LIST_EMPTY(crematoriums)
icon_state = "morguet"
/obj/structure/tray/m_tray/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSTABLE))
if(istype(mover) && (mover.pass_flags & PASSTABLE))
return 1
if(locate(/obj/structure/table) in get_turf(mover))
return 1
@@ -334,4 +334,4 @@ GLOBAL_LIST_EMPTY(crematoriums)
. = !density
if(ismovableatom(caller))
var/atom/movable/mover = caller
. = . || mover.checkpass(PASSTABLE)
. = . || (mover.pass_flags & PASSTABLE)
+1 -1
View File
@@ -64,7 +64,7 @@
return 1 //diseases, stings, etc can pass
/obj/structure/plasticflaps/CanPass(atom/movable/A, turf/T)
if(istype(A) && A.checkpass(PASSGLASS))
if(istype(A) && (A.pass_flags & PASSGLASS))
return prob(60)
var/obj/structure/bed/B = A
+4 -4
View File
@@ -74,7 +74,7 @@
..()
/obj/structure/table/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSTABLE))
if(istype(mover) && (mover.pass_flags & PASSTABLE))
return 1
if(mover.throwing)
return 1
@@ -87,7 +87,7 @@
. = !density
if(ismovableatom(caller))
var/atom/movable/mover = caller
. = . || mover.checkpass(PASSTABLE)
. = . || (mover.pass_flags & PASSTABLE)
/obj/structure/table/proc/tablepush(mob/living/user, mob/living/pushed_mob)
pushed_mob.forceMove(src.loc)
@@ -423,7 +423,7 @@
/obj/structure/rack/CanPass(atom/movable/mover, turf/target)
if(src.density == 0) //Because broken racks -Agouri |TODO: SPRITE!|
return 1
if(istype(mover) && mover.checkpass(PASSTABLE))
if(istype(mover) && (mover.pass_flags & PASSTABLE))
return 1
else
return 0
@@ -432,7 +432,7 @@
. = !density
if(ismovableatom(caller))
var/atom/movable/mover = caller
. = . || mover.checkpass(PASSTABLE)
. = . || (mover.pass_flags & PASSTABLE)
/obj/structure/rack/MouseDrop_T(obj/O, mob/user)
if ((!( istype(O, /obj/item) ) || user.get_active_held_item() != O))
@@ -14,7 +14,7 @@
var/enter_delay = 0
/obj/structure/transit_tube/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
if(istype(mover) && (mover.pass_flags & PASSGLASS))
return 1
return !density
@@ -55,7 +55,7 @@
icon_state = "[facing]_[secure ? "secure_" : ""]windoor_assembly[state]"
/obj/structure/windoor_assembly/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
if(istype(mover) && (mover.pass_flags & PASSGLASS))
return 1
if(get_dir(loc, target) == dir) //Make sure looking at appropriate border
return !density
@@ -78,7 +78,7 @@
return 1
/obj/structure/windoor_assembly/CheckExit(atom/movable/mover as mob|obj, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
if(istype(mover) && (mover.pass_flags & PASSGLASS))
return 1
if(get_dir(loc, target) == dir)
return !density
+2 -2
View File
@@ -120,7 +120,7 @@
..(FULLTILE_WINDOW_DIR)
/obj/structure/window/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
if(istype(mover) && (mover.pass_flags & PASSGLASS))
return 1
if(dir == FULLTILE_WINDOW_DIR)
return 0 //full tile window, you can't move into it!
@@ -139,7 +139,7 @@
return 1
/obj/structure/window/CheckExit(atom/movable/O as mob|obj, target)
if(istype(O) && O.checkpass(PASSGLASS))
if(istype(O) && (O.pass_flags & PASSGLASS))
return 1
if(get_dir(O.loc, target) == dir)
return 0
+1 -1
View File
@@ -16,7 +16,7 @@
return FALSE
/turf/closed/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSCLOSEDTURF))
if(istype(mover) && (mover.pass_flags & PASSCLOSEDTURF))
return TRUE
else
..()
-1
View File
@@ -21,7 +21,6 @@
/////////
var/datum/preferences/prefs = null
var/move_delay = 1
var/moving = null
var/area = null
+1 -1
View File
@@ -118,7 +118,7 @@
density = TRUE
/obj/structure/bonfire/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSTABLE))
if(istype(mover) && (mover.pass_flags & PASSTABLE))
return TRUE
if(mover.throwing)
return TRUE
@@ -56,8 +56,6 @@
nutrition -= HUNGER_FACTOR/10
if(m_intent == MOVE_INTENT_RUN)
nutrition -= HUNGER_FACTOR/10
if((disabilities & FAT) && m_intent == MOVE_INTENT_RUN && bodytemperature <= 360)
bodytemperature += 2
/mob/living/carbon/Moved(oldLoc, Dir)
. = ..()
@@ -56,8 +56,8 @@
FP.update_icon()
update_inv_shoes()
//End bloody footprints
S.step_action()
/mob/living/carbon/human/Moved()
. = ..()
if(buckled_mobs && buckled_mobs.len && riding_datum)
-1
View File
@@ -471,7 +471,6 @@
s_active.close(src)
if(lying && !buckled && prob(getBruteLoss()*200/maxHealth))
makeTrail(newloc, T, old_direction)
/mob/living/movement_delay(ignorewalk = 0)
-3
View File
@@ -395,7 +395,6 @@
pulling = null
grab_state = 0
update_pull_hud_icon()
if(isliving(ex_pulled))
var/mob/living/L = ex_pulled
L.update_canmove()// mob gets up if it was lyng down in a chokehold
@@ -676,8 +675,6 @@
/mob/proc/canface()
if(!canmove)
return 0
if(client.moving)
return 0
if(world.time < client.move_delay)
return 0
if(stat==2)
+9 -14
View File
@@ -1,8 +1,8 @@
/mob/CanPass(atom/movable/mover, turf/target)
if((mover.pass_flags & PASSMOB))
return TRUE
if(istype(mover, /obj/item/projectile) || mover.throwing)
return (!density || lying)
if(mover.checkpass(PASSMOB))
return TRUE
if(buckled == mover)
return TRUE
if(ismob(mover))
@@ -112,6 +112,7 @@
#define MOVEMENT_DELAY_BUFFER 0.75
#define MOVEMENT_DELAY_BUFFER_DELTA 1.25
/client/Move(n, direct)
if(world.time < move_delay)
return FALSE
@@ -129,15 +130,13 @@
if(mob.stat == DEAD)
mob.ghostize()
return FALSE
if(moving)
return FALSE
if(mob.force_moving)
return FALSE
if(isliving(mob))
var/mob/living/L = mob
if(L.incorporeal_move) //Move though walls
Process_Incorpmove(direct)
return FALSE
var/mob/living/L = mob //Already checked for isliving earlier
if(L.incorporeal_move) //Move though walls
Process_Incorpmove(direct)
return FALSE
if(mob.remote_control) //we're controlling something, our movement is relayed to it
return mob.remote_control.relaymove(mob, direct)
@@ -162,7 +161,6 @@
return FALSE
//We are now going to move
moving = 1
var/delay = mob.movement_delay()
if (old_move_delay + (delay*MOVEMENT_DELAY_BUFFER_DELTA) + MOVEMENT_DELAY_BUFFER > world.time)
move_delay = old_move_delay + delay
@@ -181,8 +179,7 @@
else
. = ..()
moving = 0
if(mob && .)
if(.) // If mob is null here, we deserve the runtime
if(mob.throwing)
mob.throwing.finalize(FALSE)
@@ -190,8 +187,6 @@
for(var/obj/O in mob.user_movement_hooks)
O.intercept_user_move(direct, mob, n, oldloc)
return .
/mob/Moved(oldLoc, dir, Forced = FALSE)
. = ..()
for(var/obj/O in contents)
+1 -1
View File
@@ -405,7 +405,7 @@
/obj/item/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a projectile is hit by it.
..()
if(isliving(AM) && (AM.density || AM == original) && !checkpass(PASSMOB))
if(isliving(AM) && (AM.density || AM == original) && !(src.pass_flags & PASSMOB))
Collide(AM)
/obj/item/projectile/Destroy()