anchor.diff:  					target.Knockdown(SHOVE_KNOCKDOWN_TABLE)
   				user.visible_message("<span class='danger'>[user.name] shoves [target.name] onto \the [target_table]!</span>",
   					"<span class='danger'>You shove [target.name] onto \the [target_table]!</span>", null, COMBAT_MESSAGE_RANGE)
  -				target.forceMove(target_shove_turf)
  -				log_combat(user, target, "shoved", "onto [target_table]")
  +				target.throw_at(target_table, 1, 1, null, FALSE) //1 speed throws with no spin are basically just forcemoves with a hard collision check
  +				log_combat(user, target, "shoved", "onto [target_table] (table)")
   			else if(target_collateral_human && !targetatrest)
   				target.Knockdown(SHOVE_KNOCKDOWN_HUMAN)
   				if(!target_collateral_human.resting)
  
positive.code: 		if(!target.resting)
  			target.adjustStaminaLoss(5)
  
  
  		var/turf/target_oldturf = target.loc
  		var/shove_dir = get_dir(user.loc, target_oldturf)
  		var/turf/target_shove_turf = get_step(target.loc, shove_dir)
  		var/mob/living/carbon/human/target_collateral_human
  		var/obj/structure/table/target_table
  		var/shove_blocked = FALSE //Used to check if a shove is blocked so that if it is knockdown logic can be applied
  
  		//Thank you based whoneedsspace
  
negative.code: 							directional_blocked = TRUE
  							break
  			var/targetatrest = target.resting
  			if(((!target_table && !(target_disposal_bin && target.Adjacent(target_disposal_bin)) && !target_collateral_human) || directional_blocked) && !targetatrest)
  				target.Knockdown(SHOVE_KNOCKDOWN_SOLID)
  				user.visible_message("<span class='danger'>[user.name] shoves [target.name], knocking them down!</span>",
  					"<span class='danger'>You shove [target.name], knocking them down!</span>", null, COMBAT_MESSAGE_RANGE)
  