Yogstation 13 - Modules - Types

code/modules/mob/mob_movespeed.dm

How move speed for mobs works

Move speed is now calculated by using a list of movespeed modifiers, which is a list itself (to avoid datum overhead)

This gives us the ability to have multiple sources of movespeed, reliabily keep them applied and remove them when they should be

THey can have unique sources and a bunch of extra fancy flags that control behaviour

Previously trying to update move speed was a shot in the dark that usually meant mobs got stuck going faster or slower

This list takes the following format

		list(
			id = list(
				priority,
				flags,
				legacy slowdown/speedup amount,
				movetype_flags
			)
		)

WHen update movespeed is called, the list of items is iterated, according to flags priority and a bunch of conditions this spits out a final calculated value which is used as a modifer to last_move + modifier for calculating when a mob can next move

Key procs

/proc/movespeed_data_null_check Checks if a move speed modifier is valid and not missing any data