diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 58ed6067202..13ba3b1fb05 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1371,10 +1371,6 @@ if(update_hud) handle_regular_hud_updates() -/mob/living/carbon/human/Check_Shoegrip() - if(shoes && (shoes.item_flags & NOSLIP) && istype(shoes, /obj/item/clothing/shoes/magboots)) //magboots + dense_object = no floating - return 1 - return 0 /mob/living/carbon/human/can_stand_overridden() if(wearing_rig && wearing_rig.ai_can_move_suit(check_for_ai = 1)) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 29eff929dce..50e88fc7859 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -87,18 +87,9 @@ return 0 -/mob/living/carbon/human/Process_Spaceslipping(var/prob_slip = 5) - //If knocked out we might just hit it and stop. This makes it possible to get dead bodies and such. - - if(species.flags & NO_SLIP) - return - - if(stat) - prob_slip = 0 // Changing this to zero to make it line up with the comment, and also, make more sense. - - //Do we have magboots or such on if so no slip - if(istype(shoes, /obj/item/clothing/shoes/magboots) && (shoes.item_flags & NOSLIP)) - prob_slip = 0 +/mob/living/carbon/human/slip_chance(var/prob_slip = 5) + if(!..()) + return 0 //Check hands and mod slip if(!l_hand) prob_slip -= 2 @@ -106,5 +97,11 @@ if (!r_hand) prob_slip -= 2 else if(r_hand.w_class <= 2) prob_slip -= 1 - prob_slip = round(prob_slip) - return(prob_slip) + return prob_slip + +/mob/living/carbon/human/Check_Shoegrip() + if(species.flags & NO_SLIP) + return 1 + if(shoes && (shoes.item_flags & NOSLIP) && istype(shoes, /obj/item/clothing/shoes/magboots)) //magboots + dense_object = no floating + return 1 + return 0 \ No newline at end of file diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index fd9dd7b4bfa..a848eda692c 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -38,8 +38,6 @@ //stuff in the stomach handle_stomach() - update_gravity(mob_has_gravity()) - update_pulling() for(var/obj/item/weapon/grab/G in src) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index fc8155fa18f..c309d4a3886 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -247,7 +247,7 @@ var/list/mob_hat_cache = list() ..() //DRONE MOVEMENT. -/mob/living/silicon/robot/drone/Process_Spaceslipping(var/prob_slip) +/mob/living/silicon/robot/drone/slip_chance(var/prob_slip) return 0 //CONSOLE PROCS diff --git a/code/modules/mob/living/silicon/robot/robot_movement.dm b/code/modules/mob/living/silicon/robot/robot_movement.dm index 5ea383aaa6c..faf15aa7da1 100644 --- a/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -1,4 +1,4 @@ -/mob/living/silicon/robot/Process_Spaceslipping(var/prob_slip) +/mob/living/silicon/robot/slip_chance(var/prob_slip) if(module && module.no_slip) return 0 ..(prob_slip) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index d8b8778f420..aac1c91fc2e 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -11,7 +11,7 @@ return /mob/proc/setMoveCooldown(var/timeout) - if(client) + if(client) client.move_delay = max(world.time + timeout, client.move_delay) /client/North() @@ -450,15 +450,15 @@ if(!Check_Dense_Object()) //Nothing to push off of so end here update_floating(0) return 0 - - update_floating(1) + + update_floating(1) if(restrained()) //Check to see if we can do things return 0 //Check to see if we slipped - if(prob(Process_Spaceslipping(5)) && !buckled) - src << "\blue You slipped!" + if(prob(slip_chance(5)) && !buckled) + src << "You slipped!" src.inertia_dir = src.last_move step(src, src.inertia_dir) return 0 @@ -468,52 +468,30 @@ /mob/proc/Check_Dense_Object() //checks for anything to push off in the vicinity. also handles magboots on gravity-less floors tiles - var/dense_object = 0 - var/shoegrip + var/shoegrip = Check_Shoegrip() - for(var/turf/turf in oview(1,src)) - if(istype(turf,/turf/space)) - continue + for(var/turf/simulated/T in trange(1,src)) //we only care for non-space turfs + if(T.density) //walls work + return 1 + else + var/area/A = T.loc + if(A.has_gravity || shoegrip) + return 1 - if(istype(turf,/turf/simulated/floor)) // Floors don't count if they don't have gravity - var/area/A = turf.loc - if(istype(A) && A.has_gravity == 0) - if(shoegrip == null) - shoegrip = Check_Shoegrip() //Shoegrip is only ever checked when a zero-gravity floor is encountered to reduce load - if(!shoegrip) - continue + for(var/obj/O in orange(1, src)) + if(istype(O, /obj/structure/lattice)) + return 1 + if(O && O.density && O.anchored) + return 1 - dense_object++ - break - - if(!dense_object && (locate(/obj/structure/lattice) in oview(1, src))) - dense_object++ - - //Lastly attempt to locate any dense objects we could push off of - //TODO: If we implement objects drifing in space this needs to really push them - //Due to a few issues only anchored and dense objects will now work. - if(!dense_object) - for(var/obj/O in oview(1, src)) - if((O) && (O.density) && (O.anchored)) - dense_object++ - break - - return dense_object + return 0 /mob/proc/Check_Shoegrip() return 0 -/mob/proc/Process_Spaceslipping(var/prob_slip = 5) - //Setup slipage - //If knocked out we might just hit it and stop. This makes it possible to get dead bodies and such. +/mob/proc/slip_chance(var/prob_slip = 5) if(stat) - prob_slip = 0 // Changing this to zero to make it line up with the comment. - - prob_slip = round(prob_slip) - return(prob_slip) - -/mob/proc/mob_has_gravity(turf/T) - return has_gravity(src, T) - -/mob/proc/update_gravity() - return + return 0 + if(Check_Shoegrip()) + return 0 + return prob_slip \ No newline at end of file