diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm index fc90e917c33..90fe48420ab 100644 --- a/code/modules/clothing/spacesuits/flightsuit.dm +++ b/code/modules/clothing/spacesuits/flightsuit.dm @@ -329,10 +329,6 @@ if(!flight) suit.slowdown = slowdown_ground return - if(brake) - suit.slowdown = slowdown_brake - else if(boost) - suit.slowdown = -boost_speed else suit.slowdown = slowdown_air @@ -429,7 +425,7 @@ wearer.adjustBruteLoss(userdamage) usermessage("WARNING: Stabilizers taking damage!", 2) wearer.visible_message(crashmessagesrc) - crash_damage = Clamp(crash_damage + 3, 0, crash_disable_threshold*1.5) + crash_damage = Clamp(crash_damage + crash_damage_high, 0, crash_disable_threshold*1.5) /obj/item/device/flightpack/proc/userknockback(density, anchored, speed, dir) var/angle = dir2angle(dir) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 41aacf720cc..386fd2c0021 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -1,7 +1,8 @@ /mob/living/carbon/human/movement_delay() - . += dna.species.movement_delay(src) + . = 0 . += ..() . += config.human_delay + . += dna.species.movement_delay(src) /mob/living/carbon/human/slip(s_amount, w_amount, obj/O, lube) if(isobj(shoes) && (shoes.flags&NOSLIP) && !(lube&GALOSHES_DONT_HELP)) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index a4e3e643ec7..0bed707d3c0 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -863,42 +863,49 @@ //////////////// /datum/species/proc/movement_delay(mob/living/carbon/human/H) - . = 0 - var/obj/item/device/flightpack/F = H.get_flightpack() + . = 0 //We start at 0. + var/flight = 0 //Check for flight and flying items var/flightpack = 0 + var/ignoreslow = 0 + var/gravity = 0 + var/obj/item/device/flightpack/F = H.get_flightpack() if(istype(F) && F.flight) flightpack = 1 - var/flight = 0 if(H.movement_type & FLYING) flight = 1 - if(!flightpack) + if(!flightpack) //Check for chemicals and innate speedups and slowdowns if we're moving using our body and not a flying suit if(H.status_flags & GOTTAGOFAST) . -= 1 if(H.status_flags & GOTTAGOREALLYFAST) . -= 2 + . += speedmod + + if(H.status_flags & IGNORESLOWDOWN) + ignoreslow = 1 + + if(H.has_gravity()) + gravity = 1 - if(!(H.status_flags & IGNORESLOWDOWN)) - if(!H.has_gravity()) - if((H.movement_type & FLYING) && !flightpack) //No hyperstacking angel wings! - . += speedmod - return - // If there's no gravity we have the sanic speed of jetpack. - var/obj/item/weapon/tank/jetpack/J = H.back - var/obj/item/clothing/suit/space/hardsuit/C = H.wear_suit - if(!istype(J) && istype(C)) - J = C.jetpack + if(!gravity) + var/obj/item/weapon/tank/jetpack/J = H.back + var/obj/item/clothing/suit/space/hardsuit/C = H.wear_suit + var/obj/item/organ/cyberimp/chest/thrusters/T = H.getorganslot("thrusters") + if(!istype(J) && istype(C)) + J = C.jetpack + if(istype(J) && J.allow_thrust(0.01, H)) //Prevents stacking + . -= 2 + else if(istype(T) && T.allow_thrust(0.01, H)) + . -= 2 + else if(flightpack && F.allow_thrust(0.01, src)) + . -= 1 - if(istype(J) && J.allow_thrust(0.01, H)) - . -= 2 - else - var/obj/item/organ/cyberimp/chest/thrusters/T = H.getorganslot("thrusters") - if(istype(T) && T.allow_thrust(0.01, H)) - . -= 2 - - else if(flightpack && F.allow_thrust(0.01, src)) //No jetpack/flightsuit hyperstacking! - . -= 1 + if(flightpack && F.boost) + . -= F.boost_speed + else if(flightpack && F.brake) + . += 2 + if(!ignoreslow && !flightpack && gravity) if(H.wear_suit) . += H.wear_suit.slowdown if(H.shoes) @@ -908,24 +915,20 @@ for(var/obj/item/I in H.held_items) if(I.flags & HANDSLOW) . += I.slowdown - if(!(flightpack)) - var/health_deficiency = (100 - H.health + H.staminaloss) - if(health_deficiency >= 40) - if(flight) - . += (health_deficiency / 75) - else - . += (health_deficiency / 25) - - var/hungry = (500 - H.nutrition) / 5 // So overeat would be 100 and default level would be 80 - if((hungry >= 70) && !flight) //Being hungry won't stop you from using flightpack controls/flapping your wings although it probably will in the wing case but who cares. - . += hungry / 50 - - if((H.disabilities & FAT)) - . += (1.5 - flight) - if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) - . += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR - - . += speedmod + var/health_deficiency = (100 - H.health + H.staminaloss) + var/hungry = (500 - H.nutrition) / 5 // So overeat would be 100 and default level would be 80 + if(health_deficiency >= 40) + if(flight) + . += (health_deficiency / 75) + else + . += (health_deficiency / 25) + if((hungry >= 70) && !flight) //Being hungry won't stop you from using flightpack controls/flapping your wings although it probably will in the wing case but who cares. + . += hungry / 50 + if(H.disabilities & FAT) + . += (1.5 - flight) + if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) + . += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR + return . ////////////////// // ATTACK PROCS // @@ -1362,4 +1365,4 @@ #undef COLD_DAMAGE_LEVEL_1 #undef COLD_DAMAGE_LEVEL_2 -#undef COLD_DAMAGE_LEVEL_3 \ No newline at end of file +#undef COLD_DAMAGE_LEVEL_3 diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f190acba63d..f58e39fe51c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -443,7 +443,7 @@ if(isopenturf(loc) && !is_flying()) var/turf/open/T = loc . += T.slowdown - if(!ignorewalk) + if(ignorewalk) . += config.run_speed else switch(m_intent)