Files
vgstation13/code/modules/mob/delays.dm
Unfit d2e6a0e26a wheelchair #1
vehicles can have their speed changed
all floor tiles have random pixel_x and pixel_y (instead of just metal
tiles)

wheelchair #2

wheelchairs can be ordered for 40 bucks each at cargo
medbay starts with a wheelchairs
fixzes

removes debug stuff

stuff

-rename speed var to movement_delay to be more accurate
-rename getSpeed to getMovementDelay to be more accurate
-vehicles have the same speed as they had before
-aliens and monkeys can use wheelchairs

hope

better way to do it

+ changelog

send help
2015-07-02 11:48:20 +02:00

58 lines
2.0 KiB
Plaintext

//////////////////////////////////
// /vg/ MODULARIZED DELAYS - by N3X15
//////////////////////////////////
// Reduces duplicated code by quite a bit.
/datum/delay_controller
// Delay clamps (for adminbus, effects)
var/min_delay = 1
var/max_delay = ARBITRARILY_LARGE_NUMBER //See setup.dm, 12
var/next_allowed = 0
/datum/delay_controller/New(var/min,var/max)
min_delay=min
max_delay=max
/datum/delay_controller/proc/setDelay(var/delay)
next_allowed = world.time + Clamp(delay,min_delay,max_delay)
/datum/delay_controller/proc/addDelay(var/delay)
var/current_delay = max(0,next_allowed - world.time)
setDelay(current_delay+delay)
// Proxy for delayNext*(), to reduce duplicated code.
/datum/delay_controller/proc/delayNext(var/delay, var/additive)
if(additive)
addDelay(delay)
else
setDelay(delay)
/datum/delay_controller/proc/blocked()
return next_allowed > world.time
// Constructor args are currently all the same, but placed here for ease of tuning.
/client // Yep, clients are snowflakes.
// Walking speed is 7, as is grab speed.
var/datum/delay_controller/move_delayer = new (1,ARBITRARILY_LARGE_NUMBER) // /mob/delayNextMove()
/mob
var/datum/delay_controller/click_delayer = new (1,ARBITRARILY_LARGE_NUMBER) // (Handled in Click())
var/datum/delay_controller/attack_delayer = new (1,ARBITRARILY_LARGE_NUMBER) // delayNextAttack() See setup.dm, 12
var/datum/delay_controller/special_delayer = new (1,ARBITRARILY_LARGE_NUMBER) // delayNextSpecial()
// Convenience procs.
/mob/proc/delayNextMove(var/delay, var/additive=0)
if(client)
client.move_delayer.delayNext(delay,additive)
/mob/proc/delayNextAttack(var/delay, var/additive=0)
attack_delayer.delayNext(delay,additive)
/mob/proc/delayNextSpecial(var/delay, var/additive=0)
special_delayer.delayNext(delay,additive)
/mob/proc/delayNext(var/types, var/delay, var/additive=0)
if(types & DELAY_MOVE) delayNextMove(delay,additive)
if(types & DELAY_ATTACK) delayNextAttack(delay,additive)
if(types & DELAY_SPECIAL) delayNextSpecial(delay,additive)