From 75ede8c74515fec22e608164c7ee2917dbf2023a Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 28 Mar 2019 16:03:52 -0400 Subject: [PATCH] Fixes Merge Conflicts --- code/modules/mob/mob_movement.dm | 14 -------- code/modules/projectiles/projectile.dm | 46 +++++++++++++++++++++++--- vorestation.dme | 3 -- 3 files changed, 42 insertions(+), 21 deletions(-) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index f217aeed8f8..aef789f7dfd 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -1,17 +1,3 @@ -<<<<<<< HEAD -/mob/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 - - if(ismob(mover)) - var/mob/moving_mob = mover - if ((other_mobs && moving_mob.other_mobs)) - return 1 - return (!mover.density || !density || lying) - else - return (!mover.density || !density || lying) - -======= ->>>>>>> e1343ac... Merge pull request #5918 from kevinz000/pp_fix_1 /mob/proc/setMoveCooldown(var/timeout) move_delay = max(world.time + timeout, move_delay) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index ed4d0a639f9..7401941ec9f 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -24,6 +24,7 @@ var/time_offset = 0 var/datum/point/vector/trajectory var/trajectory_ignore_forcemove = FALSE //instructs forceMove to NOT reset our trajectory to the new location! + var/ignore_source_check = FALSE var/speed = 0.8 //Amount of deciseconds it takes for projectile to travel var/Angle = 0 @@ -114,6 +115,8 @@ var/vacuum_traversal = TRUE //Determines if the projectile can exist in vacuum, if false, the projectile will be deleted if it enters vacuum. + var/temporary_unstoppable_movement = FALSE + /obj/item/projectile/proc/Range() range-- if(range <= 0 && loc) @@ -206,8 +209,10 @@ /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)) - Bump(AM) + if(isliving(AM) && !(pass_flags & PASSMOB)) + var/mob/living/L = AM + if(can_hit_target(L, permutated, (AM == original))) + Bump(AM) /obj/item/projectile/proc/process_homing() //may need speeding up in the future performance wise. if(!homing_target) @@ -312,6 +317,15 @@ START_PROCESSING(SSprojectiles, src) pixel_move(1, FALSE) //move it now! +/obj/item/projectile/Move(atom/newloc, dir = NONE) + . = ..() + if(.) + if(temporary_unstoppable_movement) + temporary_unstoppable_movement = FALSE + DISABLE_BITFIELD(movement_type, UNSTOPPABLE) + if(fired && can_hit_target(original, permutated, TRUE)) + Bump(original) + /obj/item/projectile/proc/after_z_change(atom/olcloc, atom/newloc) /obj/item/projectile/proc/before_z_change(atom/oldloc, atom/newloc) @@ -452,11 +466,35 @@ cleanup_beam_segments() //Returns true if the target atom is on our current turf and above the right layer -/obj/item/projectile/proc/can_hit_target(atom/target, var/list/passthrough) - return (target && ((target.layer >= TABLE_LAYER) || ismob(target)) && (loc == get_turf(target)) && (!(target in passthrough))) +//If direct target is true it's the originally clicked target. +/obj/item/projectile/proc/can_hit_target(atom/target, list/passthrough, direct_target = FALSE, ignore_loc = FALSE) + if(QDELETED(target)) + return FALSE + if(!ignore_source_check && firer) + var/mob/M = firer + if((target == firer) || ((target == firer.loc) && istype(firer.loc, /obj/mecha)) || (target in firer.buckled_mobs) || (istype(M) && (M.buckled == target))) + return FALSE + if(!ignore_loc && (loc != target.loc)) + return FALSE + if(target in passthrough) + return FALSE + if(target.density) //This thing blocks projectiles, hit it regardless of layer/mob stuns/etc. + return TRUE + if(!isliving(target)) + if(target.layer < PROJECTILE_HIT_THRESHOLD_LAYER) + return FALSE + else + var/mob/living/L = target + if(!direct_target) + if(!L.density) + return FALSE + return TRUE /obj/item/projectile/Bump(atom/A) if(A in permutated) + trajectory_ignore_forcemove = TRUE + forceMove(get_turf(A)) + trajectory_ignore_forcemove = FALSE return FALSE if(firer && !reflected) if(A == firer || (A == firer.loc && istype(A, /obj/mecha))) //cannot shoot yourself or your mech diff --git a/vorestation.dme b/vorestation.dme index 8b4932a431b..726b41241d7 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2073,11 +2073,8 @@ #include "code\modules\mob\living\living.dm" #include "code\modules\mob\living\living_defense.dm" #include "code\modules\mob\living\living_defines.dm" -<<<<<<< HEAD:vorestation.dme #include "code\modules\mob\living\living_defines_vr.dm" -======= #include "code\modules\mob\living\living_movement.dm" ->>>>>>> e1343ac... Merge pull request #5918 from kevinz000/pp_fix_1:polaris.dme #include "code\modules\mob\living\living_powers.dm" #include "code\modules\mob\living\login.dm" #include "code\modules\mob\living\logout.dm"