fixes
This commit is contained in:
@@ -38,6 +38,12 @@ Key procs
|
||||
|
||||
/// Multiplicative slowdown
|
||||
var/multiplicative_slowdown = 0
|
||||
/// Next two variables depend on this: Should we do advanced calculations?
|
||||
var/complex_calculation = FALSE
|
||||
/// Absolute max tiles we can boost to
|
||||
var/absolute_max_tiles_per_second
|
||||
/// Max tiles per second we can boost
|
||||
var/max_tiles_per_second_boost
|
||||
|
||||
/// Movetypes this applies to
|
||||
var/movetypes = ALL
|
||||
@@ -53,6 +59,16 @@ Key procs
|
||||
if(!id)
|
||||
id = "[type]" //We turn the path into a string.
|
||||
|
||||
/**
|
||||
* Returns new multiplicative movespeed after modification.
|
||||
*/
|
||||
/datum/movespeed_modifier/proc/apply_multiplicative(existing, mob/target)
|
||||
if(!complex_calculation || (multiplicative_slowdown > 0)) // we aren't limiting how much things can slowdown.. yet.
|
||||
return existing + multiplicative_slowdown
|
||||
var/current_tiles = 10 / existing
|
||||
var/minimum_speed = 10 / min(current_tiles + max_tiles_per_second_boost, max(current_tiles, absolute_max_tiles_per_second))
|
||||
return max(minimum_speed, existing + multiplicative_slowdown)
|
||||
|
||||
GLOBAL_LIST_EMPTY(movespeed_modification_cache)
|
||||
|
||||
/// Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO!
|
||||
@@ -198,7 +214,7 @@ GLOBAL_LIST_EMPTY(movespeed_modification_cache)
|
||||
conflict_tracker[conflict] = amt
|
||||
else
|
||||
continue
|
||||
. += amt
|
||||
. = M.apply_multiplicative(., src)
|
||||
var/old = cached_multiplicative_slowdown // CITAEDL EDIT - To make things a bit less jarring, when in situations where
|
||||
// your delay decreases, "give" the delay back to the client
|
||||
cached_multiplicative_slowdown = .
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
/datum/movespeed_modifier/jetpack
|
||||
conflicts_with = MOVE_CONFLICT_JETPACK
|
||||
movetypes = FLOATING
|
||||
multiplicative_slowdown = -1
|
||||
|
||||
/datum/movespeed_modifier/jetpack/cybernetic
|
||||
multiplicative_slowdown = -0.5
|
||||
multiplicative_slowdown = -1.25
|
||||
|
||||
/datum/movespeed_modifier/jetpack/fullspeed
|
||||
multiplicative_slowdown = -2
|
||||
multiplicative_slowdown = -1.5
|
||||
|
||||
/datum/movespeed_modifier/die_of_fate
|
||||
multiplicative_slowdown = 1
|
||||
|
||||
@@ -120,3 +120,32 @@
|
||||
/datum/movespeed_modifier/active_block
|
||||
variable = TRUE
|
||||
flags = IGNORE_NOSLOW
|
||||
|
||||
/datum/movespeed_modifier/sprinting
|
||||
flags = IGNORE_NOSLOW
|
||||
blacklisted_movetypes = FLOATING
|
||||
required_mobility_flags = MOBILITY_STAND
|
||||
priority = -100
|
||||
|
||||
/// for speed reasons this is sorta copypasty.
|
||||
/datum/movespeed_modifier/sprinting/apply_multiplicative(existing, mob/target)
|
||||
. = existing
|
||||
if(target.m_intent != MOVE_INTENT_RUN)
|
||||
return
|
||||
if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
if(!(L.mobility_flags & MOBILITY_STAND))
|
||||
return
|
||||
var/static/datum/config_entry/number/movedelay/sprint_max_tiles_increase/SSMTI
|
||||
if(!SSMTI)
|
||||
SSMTI = CONFIG_GET_ENTRY(number/movedelay/sprint_max_tiles_increase)
|
||||
var/static/datum/config_entry/number/movedelay/sprint_speed_increase/SSI
|
||||
if(!SSI)
|
||||
SSI = CONFIG_GET_ENTRY(number/movedelay/sprint_speed_increase)
|
||||
var/static/datum/config_entry/number/movedelay/sprint_absolute_max_tiles/SAMT
|
||||
if(!SAMT)
|
||||
SAMT = CONFIG_GET_ENTRY(number/movedelay/sprint_absolute_max_tiles)
|
||||
var/current_tiles = 10 / existing
|
||||
var/minimum_speed = 10 / min(SAMT.config_entry_value, ((current_tiles) + SSMTI.config_entry_value))
|
||||
. = max(minimum_speed, (existing - SSI.config_entry_value))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user