From 3692962e68ec26779601fb459aef88e930bcb62a Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Fri, 2 Oct 2020 22:51:07 +0200 Subject: [PATCH 1/4] Makes IGNORESLOWDOWN not ignore speedups --- .../living/carbon/human/species/_species.dm | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 69518e96cf7..22a106a4b3e 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -221,20 +221,18 @@ /datum/species/proc/movement_delay(mob/living/carbon/human/H) . = 0 //We start at 0. - var/flight = 0 //Check for flight and flying items - var/ignoreslow = 0 - var/gravity = 0 + var/ignoreslow = FALSE - if(H.flying) - flight = 1 if((H.status_flags & IGNORESLOWDOWN) || (RUN in H.mutations)) - ignoreslow = 1 + ignoreslow = TRUE - if(has_gravity(H)) - gravity = 1 + if(ignoreslow) + if(speed_mod < 0) // Apply the speed_mod if it's negative. Meaning it's a speedup + . = speed_mod + else if(has_gravity(H)) + var/flight = H.flying //Check for flight and flying items - if(!ignoreslow && gravity) if(speed_mod) . = speed_mod @@ -270,8 +268,9 @@ if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) . += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR - if(H.status_flags & GOTTAGOFAST) - . -= 1 + if(H.status_flags & GOTTAGOFAST) + . -= 1 + return . /datum/species/proc/on_species_gain(mob/living/carbon/human/H) //Handles anything not already covered by basic species assignment. From 815e50d0e77f0501f4e8995e3b18b9fc81b801ab Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Fri, 2 Oct 2020 23:01:03 +0200 Subject: [PATCH 2/4] Fixed the logical issues --- .../living/carbon/human/species/_species.dm | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 22a106a4b3e..9e17b248b11 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -221,20 +221,24 @@ /datum/species/proc/movement_delay(mob/living/carbon/human/H) . = 0 //We start at 0. - var/ignoreslow = FALSE + if(has_gravity(H)) + if(H.status_flags & GOTTAGOFAST) + . -= 1 - if((H.status_flags & IGNORESLOWDOWN) || (RUN in H.mutations)) - ignoreslow = TRUE + var/ignoreslow = FALSE + if((H.status_flags & IGNORESLOWDOWN) || (RUN in H.mutations)) + ignoreslow = TRUE + + if(ignoreslow) + if(speed_mod < 0) // Apply the speed_mod if it's negative. Meaning it's a speedup + . += speed_mod + return . - if(ignoreslow) - if(speed_mod < 0) // Apply the speed_mod if it's negative. Meaning it's a speedup - . = speed_mod - else if(has_gravity(H)) var/flight = H.flying //Check for flight and flying items if(speed_mod) - . = speed_mod + . += speed_mod if(H.wear_suit) . += H.wear_suit.slowdown @@ -268,9 +272,6 @@ if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) . += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR - if(H.status_flags & GOTTAGOFAST) - . -= 1 - return . /datum/species/proc/on_species_gain(mob/living/carbon/human/H) //Handles anything not already covered by basic species assignment. From 8baf054e81d4e63dc9859858baa16d7f3ac69628 Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Sat, 3 Oct 2020 13:28:41 +0200 Subject: [PATCH 3/4] clothing that gives speed now works properly as well --- .../living/carbon/human/species/_species.dm | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 9e17b248b11..0e1de8dfa07 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -218,6 +218,7 @@ //////////////// // MOVE SPEED // //////////////// +#define ADD_SLOWDOWN(__value) if(!ignoreslow || __value < 0) . += __value /datum/species/proc/movement_delay(mob/living/carbon/human/H) . = 0 //We start at 0. @@ -230,27 +231,23 @@ if((H.status_flags & IGNORESLOWDOWN) || (RUN in H.mutations)) ignoreslow = TRUE - if(ignoreslow) - if(speed_mod < 0) // Apply the speed_mod if it's negative. Meaning it's a speedup - . += speed_mod - return . - var/flight = H.flying //Check for flight and flying items - if(speed_mod) - . += speed_mod + ADD_SLOWDOWN(speed_mod) if(H.wear_suit) - . += H.wear_suit.slowdown - if(!H.buckled) - if(H.shoes) - . += H.shoes.slowdown + ADD_SLOWDOWN(H.wear_suit.slowdown) + if(!H.buckled && H.shoes) + ADD_SLOWDOWN(H.shoes.slowdown) if(H.back) - . += H.back.slowdown + ADD_SLOWDOWN(H.back.slowdown) if(H.l_hand && (H.l_hand.flags & HANDSLOW)) - . += H.l_hand.slowdown + ADD_SLOWDOWN(H.l_hand.slowdown) if(H.r_hand && (H.r_hand.flags & HANDSLOW)) - . += H.r_hand.slowdown + ADD_SLOWDOWN(H.r_hand.slowdown) + + if(ignoreslow) + return . // Only malusses after here var/health_deficiency = max(H.maxHealth - H.health, H.staminaloss) var/hungry = (500 - H.nutrition)/5 // So overeat would be 100 and default level would be 80 @@ -274,6 +271,8 @@ return . +#undef ADD_SLOWDOWN + /datum/species/proc/on_species_gain(mob/living/carbon/human/H) //Handles anything not already covered by basic species assignment. for(var/slot_id in no_equip) var/obj/item/thing = H.get_item_by_slot(slot_id) From ac8eef37f168082fcb044964ba92b4dd2fef7d43 Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Sun, 4 Oct 2020 20:54:21 +0200 Subject: [PATCH 4/4] Makes legion cores ignore all slowdown/speedups --- code/__DEFINES/combat.dm | 1 + code/datums/status_effects/buffs.dm | 4 ++-- code/modules/mob/living/carbon/human/species/_species.dm | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 2f98b6ee7b5..b7e89e678ed 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -36,6 +36,7 @@ #define PASSEMOTES 16 //Mob has a cortical borer or holders inside of it that need to see emotes. #define GOTTAGOFAST 32 #define IGNORESLOWDOWN 128 +#define IGNORE_SPEED_CHANGES 256 #define GODMODE 4096 #define FAKEDEATH 8192 //Replaces stuff like changeling.changeling_fakedeath #define XENO_HOST 16384 //Tracks whether we're gonna be a baby alien's mummy. diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 61decede9bc..78b9e1c0413 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -215,7 +215,7 @@ alert_type = /obj/screen/alert/status_effect/regenerative_core /datum/status_effect/regenerative_core/on_apply() - owner.status_flags |= IGNORESLOWDOWN + owner.status_flags |= IGNORE_SPEED_CHANGES owner.adjustBruteLoss(-25) owner.adjustFireLoss(-25) owner.remove_CC() @@ -229,4 +229,4 @@ return TRUE /datum/status_effect/regenerative_core/on_remove() - owner.status_flags &= ~IGNORESLOWDOWN + owner.status_flags &= ~IGNORE_SPEED_CHANGES diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 0e1de8dfa07..d7969ac1879 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -222,6 +222,8 @@ /datum/species/proc/movement_delay(mob/living/carbon/human/H) . = 0 //We start at 0. + if(H.status_flags & IGNORE_SPEED_CHANGES) + return . if(has_gravity(H)) if(H.status_flags & GOTTAGOFAST)