mirror of
https://github.com/goonstation/goonstation-2020.git
synced 2026-08-22 03:26:12 +01:00
31 lines
936 B
Plaintext
31 lines
936 B
Plaintext
// Makes mobs do a little waddle animation on walk, like south park characters
|
|
|
|
var/global/waddle_walking = 0
|
|
|
|
/proc/getMatrixFromPool(angle = 0)
|
|
var/textangle = num2text(angle)
|
|
var/static/matrices = list()
|
|
if (!matrices[textangle])
|
|
matrices[textangle] = angle ? turn(matrix(), angle) : matrix()
|
|
return matrices[textangle]
|
|
|
|
#define WADDLE_TIME 2
|
|
/proc/makeWaddle(var/mob/H)
|
|
set waitfor = FALSE
|
|
var/static/list/animation_locked = list()
|
|
if (!animation_locked[H])
|
|
animation_locked[H] = TRUE
|
|
animate(H, pixel_z = 6, time = 0)
|
|
animate(pixel_z = 0, transform = getMatrixFromPool(nextWaddle(H)), time = WADDLE_TIME)
|
|
animate(pixel_z = 0, transform = getMatrixFromPool(0), time = 0)
|
|
sleep(WADDLE_TIME)
|
|
animation_locked[H] = FALSE
|
|
#undef WADDLE_TIME
|
|
|
|
/proc/nextWaddle(var/mob/H)
|
|
var/static/waddles = list()
|
|
if (!waddles[H])
|
|
waddles[H] = -16
|
|
else
|
|
waddles[H] = next_in_list(waddles[H], list(-16, 16))
|
|
return waddles[H] |