#1789

 · 
vanilla

Monster speed system that tries to keep all the good qualities of 3.6.1’s while also not letting randomization make monsters super fast or super slow: add a 16 bit int to the monst struct, and every 12 turns set (speed % 12) of them to 1. Then on each turn, the monster gets (speed / 12) moves, plus 1 if the bit for that turn is 1. This 12-turn cycle would need to be phase shifted randomly per monster (probably using hashing based on monster ID) so that you can’t move-count based on the turn clock.

Research on an efficient algorithm to generate the series of 12 bits has found this, though it might be more entropy-efficient in the long run simply to generate all 4094 permutations of bits and randomly pick one with the correct number of bits whenever needed.