This is MonsterMovement.h in view mode; [Download] [Up]
// MonsterMovement.h
//
// static data arrays that tell the monsters how to move.
// they are used by various methods in the Monster class.
static intm fxvec[16] = {
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // no way to go
{ 2, 2, 2, 2, 2, 2, 2, 2 }, // right only
{ -2, -2, -2, -2, -2, -2, -2, -2 }, // left only
{ -2, 2, 2, -2, 2, -2, -2, 2 }, // left or right
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // down only
{ 0, 0, 0, 0, 2, 2, 2, 2 }, // down or right
{ -2, 0, 0, -2, 0, -2, -2, -2 }, // down or left
{ -2, 0, 0, -2, 2, -2, -2, 2 }, // down, left, or right
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // up only
{ 2, 2, 2, 0, 2, 0, 0, 0 }, // up or right
{ -2, -2, -2, -2, 0, -2, 0, 0 }, // up or left
{ -2, -2, 2, -2, 2, 0, 0, 2 }, // up, left, or right
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // up or down
{ 0, 0, 2, 0, 2, 0, 0, 2 }, // up, down, or right
{ -2, 0, 0, -2, 0, 0, 0, 0 }, // up, down, or left
{ -2, 0, 0, -2, 2, 0, 0, 2 } }; // any which way
static intm fyvec[16] = {
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // no way to go
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // right only
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // left only
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // left or right
{ -2, -2, -2, -2, -2, -2, -2, -2 }, // down only
{ -2, -2, -2, -2, 0, 0, 0, 0 }, // down or right
{ 0, -2, -2, 0, -2, 0, 0, 0 }, // down or left
{ 0, -2, -2, 0, 0, 0, 0, 0 }, // down, left, or right
{ 2, 2, 2, 2, 2, 2, 2, 2 }, // up only
{ 0, 0, 0, 2, 0, 2, 2, 2 }, // up or right
{ 0, 0, 0, 0, 2, 0, 2, 2 }, // up or left
{ 0, 0, 0, 0, 0, 2, 2, 0 }, // up, left, or right
{ -2, -2, -2, 2, -2, 2, 2, 2 }, // up or down
{ -2, -2, 0, -2, 0, 2, 2, 0 }, // up, down, or right
{ 0, -2, -2, 0, 2, 2, 2, 2 }, // up, down, or left
{ 0, -2, 2, 0, 0, -2, 2, 0 } }; // any which way
static intm rxvec[16] = {
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // no way to go
{ 1, 1, 1, 1, 1, 1, 1, 1 }, // right only
{ -1, -1, -1, -1, -1, -1, -1, -1 }, // left only
{ 1, -1, -1, 1, -1, 1, 1, -1 }, // left or right
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // down only
{ 1, 1, 0, 0, 0, 0, 1, 0 }, // down or right
{ 0, -1, -1, 0, 0, 0, -1, -1 }, // down or left
{ 1, 1, -1, 0, 0, 1, 1, -1 }, // down, left, or right
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // up only
{ 1, 1, 0, 0, 0, 1, 1, 0 }, // up or right
{ 0, -1, -1, 0, 0, 0, -1, -1 }, // up or left
{ 1, -1, -1, 0, 0, 0, -1, -1 }, // up, left, or right
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // up or down
{ 0, 1, 0, 0, 0, 1, 1, 0 }, // up, down, or right
{ 0, -1, -1, 0, 0, 0, -1, -1 }, // up, down, or left
{ 1, -1, 0, 0, 0, 0, 1, -1 } }; // any which way
static intm ryvec[16] = {
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // no way to go
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // right only
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // left only
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // left or right
{ -1, -1, -1, -1, -1, -1, -1, -1 }, // down only
{ 0, 0, -1, -1, -1, -1, 0, -1 }, // down or right
{ -1, 0, 0, -1, -1, -1, 0, 0 }, // down or left
{ 0, 0, 0, -1, -1, 0, 0, 0 }, // down, left, or right
{ 1, 1, 1, 1, 1, 1, 1, 1 }, // up only
{ 0, 0, 1, 1, 1, 0, 0, 1 }, // up or right
{ 1, 0, 0, 1, 1, 1, 0, 0 }, // up or left
{ 0, 0, 0, 1, 1, 1, 0, 0 }, // up, left, or right
{ 1, 1, 1, 1, -1, -1, -1, -1 }, // up or down
{ 1, 0, 1, 1, -1, 0, 0, -1 }, // up, down, or right
{ 1, 0, 0, -1, 1, -1, 0, 0 }, // up, down, or left
{ 0, 0, 1, 1, -1, -1, 0, 0 } }; // any which way
static intm pxvec[16] = {
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // no way to go
{ 4, 4, 4, 4, 4, 4, 4, 4 }, // right only
{ -4, -4, -4, -4, -4, -4, -4, -4 }, // left only
{ -4, 4, 4, -4, 4, -4, -4, 4 }, // left or right
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // down only
{ 0, 0, 0, 0, 4, 4, 4, 4 }, // down or right
{ 0, 0, 0, -4, 0, -4, -4, -4 }, // down or left
{ -4, 0, 0, -4, 4, -4, -4, 4 }, // down, left, or right
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // up only
{ 0, 4, 4, 0, 4, 0, 0, 0 }, // up or right
{ -4, -4, -4, -4, 0, -4, 0, 0 }, // up or left
{ -4, -4, 4, -4, 4, 0, 0, 4 }, // up, left, or right
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // up or down
{ 0, 0, 4, 0, 4, 0, 0, 4 }, // up, down, or right
{ -4, 0, 0, -4, 0, -4, 0, 0 }, // up, down, or left
{ 0, 0, 4, -4, 4, -4, 0, 0 } }; // any which way
static intm pyvec[16] = {
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // no way to go
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // right only
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // left only
{ 0, 0, 0, 0, 0, 0, 0, 0 }, // left or right
{ -4, -4, -4, -4, -4, -4, -4, -4 }, // down only
{ -4, -4, -4, -4, 0, 0, 0, 0 }, // down or right
{ -4, -4, -4, 0, -4, 0, 0, 0 }, // down or left
{ 0, -4, -4, 0, 0, 0, 0, 0 }, // down, left, or right
{ 4, 4, 4, 4, 4, 4, 4, 4 }, // up only
{ 4, 0, 0, 4, 0, 4, 4, 4 }, // up or right
{ 0, 0, 0, 0, 4, 0, 4, 4 }, // up or left
{ 0, 0, 0, 0, 0, 4, 4, 0 }, // up, left, or right
{ -4, -4, -4, 4, -4, 4, 4, 4 }, // up or down
{ -4, -4, 0, -4, 0, 4, 4, 0 }, // up, down, or right
{ -4, -4, -4, 0, 4, 0, 4, 4 }, // up, down, or left
{ -4, -4, 0, 0, 0, 0, 4, 4 } }; // any which way
static intm find[3] = { { 0, 1, 2 }, { 3, 3, 4 }, { 5, 6, 7 } };
// power dot behavior
static int flash_ticks[] = {
13, 13, 8, 4, 1, 13, 8, 4, 1,
8, 4, 1, 4, 1, 8, 4, 1,
0, 0, 8, 4, 0, 0, 1, 0 };
static int off_ticks[] = {
19, 19, 14, 10, 7, 19, 14, 10, 7,
14, 10, 7, 10, 7, 14, 10, 7,
1, 1, 14, 10, 1, 1, 7, 1 };
// and that's all the movement data!These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.