Merge pull request #8976 from Ghommie/Ghommie-cit157

Fixes combatmode disarm pushing people on inaccessible tables and more.
This commit is contained in:
kevinz000
2019-07-29 04:38:14 -07:00
committed by GitHub
2 changed files with 17 additions and 9 deletions
@@ -899,12 +899,9 @@
stop_pulling() stop_pulling()
/mob/living/carbon/human/proc/is_shove_knockdown_blocked() //If you want to add more things that block shove knockdown, extend this /mob/living/carbon/human/proc/is_shove_knockdown_blocked() //If you want to add more things that block shove knockdown, extend this
var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform, back, gloves, shoes, belt, s_store, glasses, ears, wear_id) //Everything but pockets. Pockets are l_store and r_store. (if pockets were allowed, putting something armored, gloves or hats for example, would double up on the armor) for(var/obj/item/clothing/C in get_equipped_items()) //doesn't include pockets
for(var/bp in body_parts) if(C.blocks_shove_knockdown)
if(istype(bp, /obj/item/clothing)) return TRUE
var/obj/item/clothing/C = bp
if(C.blocks_shove_knockdown)
return TRUE
return FALSE return FALSE
/mob/living/carbon/human/proc/clear_shove_slowdown() /mob/living/carbon/human/proc/clear_shove_slowdown()
@@ -80,10 +80,21 @@
else else
target.Move(target_shove_turf, shove_dir) target.Move(target_shove_turf, shove_dir)
if(get_turf(target) == target_oldturf) if(get_turf(target) == target_oldturf)
target_table = locate(/obj/structure/table) in target_shove_turf.contents var/thoushallnotpass = FALSE
shove_blocked = TRUE for(var/obj/O in target_shove_turf)
if(O.density)
shove_blocked = TRUE
if(istype(O, /obj/structure/table))
target_table = O
else
thoushallnotpass = TRUE
if(thoushallnotpass)
target_table = null
if(shove_blocked && !target.is_shove_knockdown_blocked()) if(target.is_shove_knockdown_blocked())
return
if(shove_blocked)
var/directional_blocked = FALSE var/directional_blocked = FALSE
if(shove_dir in GLOB.cardinals) //Directional checks to make sure that we're not shoving through a windoor or something like that if(shove_dir in GLOB.cardinals) //Directional checks to make sure that we're not shoving through a windoor or something like that
var/target_turf = get_turf(target) var/target_turf = get_turf(target)