
/* ///  ■ダメージ方向テーブル  /// */
/*
	メインインデックスは、キャラクタの方向を示す。
		内容）０〜３：上右左下

	サブインデックスは、相手の方向象限を示す。
		内容）	０：   45度〜 135度
				１：  -45度〜  45度
				２： -135度〜 -45度
				３：  135度〜 225度

	格納数値は、ダメージを受けた方向を示す。
		内応）	０：正面
				１：右サイド
				２：左サイド
				３：背後
*/
static	u_char	GmDmgDir[ 4][ 4] = {
				{ 0, 1, 3, 2},							/* 上を向いている時		*/
				{ 2, 0, 1, 3},							/* 右					*/
				{ 1, 3, 2, 0},							/* 左					*/
				{ 3, 2, 0, 1},							/* 下					*/
			};

/* ///  ■魔法使い出現方向テーブル  /// */
/*
	メインインデックスは、プレイヤーの方向を示す。
		内容）０〜３：上右左下

	サブインデックスは、魔法使いの出現方向（対プレイヤー）を示す。
		内応）	０：正面
				１：右サイド
				２：左サイド
				３：背後

	格納数値は、そのためのプレイヤー座標からの dx, dy を示す。
	（つまりは、ベクトル方向）
*/
static	GMAPPTABLE	GmAppTable[ 4][ 4] = {
				{{ 1, 0},{ 0, 1},{ 0,-1},{-1, 0}},				/* 上を向いている時		*/
				{{ 0, 1},{-1, 0},{ 1, 0},{ 0,-1}},				/* 右を向いている時		*/
				{{ 0,-1},{ 1, 0},{-1, 0},{ 0, 1}},				/* 左を向いている時		*/
				{{-1, 0},{ 0,-1},{ 0, 1},{ 1, 0}}				/* 下を向いている時		*/
			};

/* ///  ■ダメージ比率ーブル  /// */
static	u_char	GmDmgDirRatio[ 4] = { 2, 3, 3, 4};

/* ///  ■「地形」当たり判定タイプテーブル  /// */
static	GMBLKTYPE	GmBlkType[ GM_BLOCK_TYPE_MAX] = {
				{ 0, { -8, -8, -1, 7}},		/* 2x2 ｷｬﾗｸﾀ（通常ﾀｲﾌﾟ）	*/
				{ 0, { -8, -8, -1, 7}},		/* KNIGHT1		*/
				{ 0, { -8, -8, -1, 7}},		/* KNIGHT2		*/
				{ 0, { -8, -8, -1, 7}},		/* KNIGHT3		*/
				{ 1, { -8, -8, -1, 7}},		/* SLIME		*/
				{ 0, { -8, -8, -1, 7}},		/* WOOZ			*/
				{ 0, { -8, -8, -1, 7}},		/* MAGICIAN		*/
				{ 0, { -8, -8, -1, 7}},
				{ 0, { -8, -8, -1, 7}},
				{ 0, { -8, -8, -1, 7}},		/* KNIGHT1_L	*/
				{ 0, { -8, -8, -1, 7}},		/* KNIGHT2_L	*/
				{ 0, { -8, -8, -1, 7}},		/* KNIGHT3_L	*/
				{ 0, { -8, -8, -1, 7}},
				{ 0, { -8, -8, -1, 7}},
				{ 0, { -8, -8, -1, 7}},		/* DRAGON		*/
				{ 2, {-16,-16, -1,15}}		/* TESTAROSSA	*/
			};

/* ///  ■「衝突」判定用テーブル  /// */
static	SYSRECT		GmBlkColl[ 4] = {
				{ -8, -8, 16, 16},						/* 基本型			*/
				{ -4, -8, 10, 16},						/* SLIME			*/
				{-16,-16, 32, 32},						/* TESTAROSSA		*/
				{  0,  0,  0,  0}						/* */
			};

/* ///  ■「ダメージ」判定用テーブル  /// */
static	SYSRECT		GmBlkDamage[ GM_BLOCK_DAMAGE_MAX] = {
				{ -8, -8, 16, 16},						/* 基本型			*/
				{ -8, -4, 16,  8},						/* b0上向き			*/
				{  0, -4,  8,  8},						/* b0右攻撃時		*/
				{ -8, -4,  8,  8},						/* bo左攻撃時		*/
				{ -8,-12, 16, 24},						/* d0蛇縦向き cut:2 */
				{-12, -8, 24, 16},						/* d0蛇横向き cut:2 */
				{-12,-12, 24, 24},						/* 			未使用	*/
				{  0,  0,  0,  0}						/* 無敵				*/
			};
/*
	---------------------------------------------------------------------------
							★ GmBlkDamage 元データ ★
			 from Block.txt				written by A.HARA	(01/04)
	---------------------------------------------------------------------------
	0	：	000		：左上座標=( -8, -8), 幅高=( 16, 16)
	1	：	001		：左上座標=( -8, -4), 幅高=( 16,  8) b0上下向き
	2	：	010		：左上座標=(  0, -4), 幅高=(  8,  8) b0右攻撃時
	3	：	011		：左上座標=( -8, -4), 幅高=(  8,  8) b0左攻撃時
	4	：	100		：左上座標=( -8,-12), 幅高=( 16, 24) d0蛇縦向き cut:2
	5	：	101		：左上座標=(-12, -8), 幅高=( 24, 16) d0蛇横向き cut:2
	6	：	110		：未使用
	7	：	111		：			無敵
	---------------------------------------------------------------------------
*/

/* ///  ■「攻撃」判定用テーブル  /// */
static	SYSRECT		GmBlkAttack[ GM_BLOCK_ATTACK_MAX] = {
	{  0,  0,  0, 0},	/*  0	none 					  */
	{ -1,-19,  8,16},	/* 	1	pl_a0_16 上 縦斬り  cut:3 */
	{ 10,-12,  8,16},	/* 	2	pl_a0_20 上 横斬り  cut:4 */
	{-16,-24, 32, 8},	/* 	3	en_a0_01 上 突撃    cut:5 <<< */
	{ -6,  9, 16, 8},	/* 	4	pl_a0_21 右 横斬り  cut:4 */
	{-18, -1,  8, 8},	/* 	5	pl_a0_18 左 縦斬り  cut:3 */
	{-12,-18, 16, 8},	/* 	6	pl_a0_22 左 横斬り  cut:4 */
	{ -6,  3,  8,16},	/* 	7	pl_a0_19 下 縦斬り  cut:3 */
	{-18, -1,  8,16},	/* 	8	pl_a0_23 下 横斬り  cut:4 */
	{-19,-10,  8,16},	/* 	9	pl_a0_28 上 横斬り2 cut:4 */
	{ -7,-17, 16, 8},	/* 	10	pl_a0_29 右 横斬り2 cut:4 */
	{-12, 10, 16, 8},	/* 	11	pl_a0_30 左 横斬り2 cut:4 */
	{ 11, -3,  8,16},	/* 	12	pl_a0_31 下 横斬り2 cut:4 */
	{ 10,  0,  8, 8},	/* 	13	pl_a0_17 右 縦斬り  cut:3  (:3) */
	{ -1,-19, 16,16},	/* 	14	pl_a0_20 上 横斬り  cut:3 */
	{-14,  3, 16,16},	/* 	15	pl_a0_23 下 横斬り  cut:3 */
	{-10,-19, 16,16},	/* 	16	pl_a0_28 上 横斬り2 cut:2 */
	{ -6,  3, 16,16},	/* 	17	pl_a0_31 下 横斬り2 cut:2 */
	{ 16,-16,  8,32},	/* 	18	en_a0_02 右 突撃    cut:5 <<< */
	{-24,-16,  8,32},	/* 	19	en_a0_03 左 突撃    cut:5 <<< */
	{-16, 16, 32, 8},	/* 	20	en_a0_04 下 突撃    cut:5 <<< */
	{ -1,-24,  8,16},	/* 	21	pl_a2_16 上 縦斬り  cut:3 */
	{  8,-11, 16,16},	/* 	22	pl_a2_20 上 横斬り  cut:4 */
	{  0,  0,  0, 0},	/*  23	none <<< 					*/
	{ -7,  6, 16,16},	/* 	24	pl_a2_21 右 横斬り  cut:4 */
	{-23, -1, 16, 8},	/* 	25	pl_a2_18 左 縦斬り  cut:3 */
	{-12,-23, 16,16},	/* 	26	pl_a2_22 左 横斬り  cut:4 */
	{ -6,  7,  8,16},	/* 	27	pl_a2_19 下 縦斬り  cut:3 */
	{-23, -1, 16,16},	/* 	28	pl_a2_23 下 横斬り  cut:4 */
	{-24,-10, 16,16},	/* 	29	pl_a2_28 上 横斬り2 cut:4 */
	{ -7,-22, 16,16},	/* 	30	pl_a2_29 右 横斬り2 cut:4 */
	{ -4,  7, 16,16},	/* 	31	pl_a2_30 左 横斬り2 cut:4 */
	{  8, -3, 16,16},	/* 	32	pl_a2_31 下 横斬り2 cut:4 */
	{  7,  0, 16, 8},	/* 	33	pl_a2_17 右 縦斬り  cut:3  (:16) */
	{ -1,-24, 16,16},	/* 	34	pl_a2_20 上 横斬り  cut:3 */
	{-14,  7, 16,16},	/* 	35	pl_a2_23 下 横斬り  cut:3 */
	{-10,-24, 16,16},	/* 	36	pl_a2_28 上 横斬り2 cut:2 */
	{ -5,  3, 16,16},	/* 	37	pl_a2_31 下 横斬り2 cut:2 */
	{ -1,-21,  8, 8},	/* 	38	pl_a0_24 上 Hammer  cut:3 */
	{ 14,  0,  8, 8},	/* 	39	pl_a0_25 右 Hammer  cut:3 */
	{-22,  0,  8, 8},	/* 	40	pl_a0_26 左 Hammer  cut:3 */
	{ -6, 14,  8, 8},	/* 	41	pl_a0_27 下 Hammer  cut:3 */
	{  7, -1, 16, 8},	/* 	42	en_e0_09 右 攻撃    cut:2 -1,0) */
	{ -8,  7,  8,16},	/* 	43	en_e0_11 下 攻撃    cut:2 0,-1) */
	{  7, -7, 16,16},	/* 	44	en_e0_12 上 攻撃2   cut:4 */
	{  5, -1, 16, 8},	/* 	45	en_e0_13 右 攻撃2   cut:2 */
	{-21, -1, 16, 8},	/* 	46	en_e0_14 左 攻撃2   cut:2 */
	{-21, -1,  8,16},	/* 	47	en_e0_15 下 攻撃2   cut:4 */
	{ -8,-23,  8,16},	/* 	48	en_e1_08 上 攻撃    cut:2 0,+1) */
	{  0,  7,  8,16},	/* 	49	en_e1_11 下 攻撃    cut:2 0,-1) */
	{-11,-21, 16,16},	/* 	50	en_e1_12 上 攻撃2   cut:2 <<< */
	{-21, -7,  8,16},	/* 	51	en_e1_12 上 攻撃2   cut:4 */
	{ -5,  4, 16,16},	/* 	52	en_e1_15 下 攻撃2   cut:2 <<< */
	{ 13, -1,  8,16},	/* 	53	en_e1_15 下 攻撃2   cut:4 */
	{ -4, -8,  8,16},	/* 	54	en_d0_20 上 呪文    cut:1 */
	{ -8, -4, 16, 8},	/* 	55	en_d0_21 右 呪文    cut:1 */
	{ -4, -4,  8, 8},	/* 	56	en_a0_09 通常弾	    cut:1 */
	{  4,-12,  8, 8},	/* 	57  en_b0_02 右 攻撃    cut:2 */
	{-12,-12,  8, 8},	/* 	58  en_b0_03 左 攻撃    cut:2 */
	{ -4,  3,  8, 8},	/* 	59  en_b0_04 下 攻撃    cut:2 */
	{ -4,-19, 16, 8},	/* 	60  en_e1_13 右 攻撃2   cut:4 */
	{ -4,-12,  8,24},	/* 	61  en_d0_24 上 蛇      cut:2 */
	{-12, -4, 24, 8},	/* 	62	en_d0_25 右 蛇      cut:2 */
	{ -4,-12,  8, 8}	/* 	63  en_b0_01 上 攻撃    cut:2 */
};


/* ///  ■ 宝箱・鍵・扉 位置テーブル  /// */
static	GMKDTPOINT		GmKDTPoinrt[ GM_FLOOR_NUM] = {
	{ 66,10,0,	42,26,0,	75,28,0,0 },	/* FLOOR-1	*/
	{ 64,10,0,	63,27,0,	75,6,0,0 },
	{ 62,26,0,	16,12,0,	0,26,0,1 },
	{ 63,27,0,	36,8,0,		42,8,0,1 },
	{ 7,29,0,	38,26,0,	0,8,0,1 },
	{ 39,27,0,	13,26,0,	23,14,0,0 },
	{ 13,11,0,	13,25,0,	23,6,0,0 },
	{ 46,8,0,	9,7,0,0,	28,0,1 },
	{ 14,11,0,	70,28,0,	75,6,0,0 },
	{ 58,6,0,	7,25,0,		75,26,0,0 },	/* FLOOR-10 */
	{ 64,27,0,	67,9,0,		49,26,0,0 },
	{ 46,6,0,	65,26,0,	37,6,0,0 },
	{ 8,8,0,	46,30,0,	37,26,0,0 },
	{ 48,25,0,	6,6,0,		75,8,0,0 },
	{ 4,24,0,	13,4,0,		0,26,0,1 },
	{ 36,24,0,	46,6,0,		37,6,0,0 },
	{ 13,25,0,	40,25,0,	75,28,0,0 },
	{ 14,9,0,	47,23,0,	52,20,0,1 },
	{ 65,12,0,	6,6,0,		0,24,0,1 },		/* FLOOR-19	*/
	{ 0,0,0,	0,0,0, 		0,0,0,-1 }
};


/* ///  ■ 宝箱・鍵・扉 位置テーブル  /// */

	/*
		上向き
			03,04,05
			19,20,21

		下向き
			05+H,04+H,03+H
			21+H,20+H,19+H
	*/

static	u_short		GmDoorData[ 4][ 6] = {
	{ 3, 4, 5, 19, 20, 21},						/* 閉（上）	*/
	{ 5, 4, 3, 21, 20, 19},						/*   （下）	*/
	{ 1, 0, 2, 17, 0, 18},						/* 開（上）	*/
	{ 2, 0, 1, 18, 0, 17}						/*   （下）	*/
};


/* ///  ■ フロア開始位置テーブル  /// */
static	GMPOS	GmStartPos[ GM_FLOOR_NUM] = {
	{  4, 11},
	{ 74, 29},
	{ 74,  7},
	{  4, 27},
	{ 45,  9},
	{  4,  9},
	{ 22, 15},
	{ 22,  7},
	{  4, 29},
	{ 74,  7},
	{  4,  7},
	{ 48, 27},
	{ 36,  7},
	{ 36, 27},
	{ 74,  9},
	{  4, 27},
	{ 36,  7},
	{ 74, 29},
	{ 56, 21},
	{  4, 25}			/* 20F は移動禁止	*/
};


/* ///  ■キャラクタ別使用スプライトＭＡＸテーブル  /// */
static	u_char	GmUseSprChr[ CHR_ALLNUM] = {
		8, 8, 8, 8, 4, 0, 4, 0, 4, 8, 8, 8, 0, 6, 16, 16
	};


/* ///  ■ ファンネル到達座標テーブル  /// */
static	GMAPPTABLE	GmFPosR[ 8] = {
		{  0,-32},
		{ 22,-22},
		{ 32,  0},
		{ 22, 22},
		{  0, 32},
		{-22, 22},
		{-32,  0},
		{-22,-22}
	};

/* ///  ■ ファンネル到達座標テーブル２  /// */
static	GMAPPTABLE	GmFPosR2[ 5] = {
		{  0,-32},
		{ 30, -8},
		{ 16, 27},
		{-16, 27},
		{-30, -8}
	};

/* ///  ■ ファンネル・ベクトクテーブル  /// */
static	GMAPPTABLE	GmFVec[ 8] = {
		{  0, -1},
		{  1, -1},
		{  1,  0},
		{  1,  1},
		{  0,  1},
		{ -1,  1},
		{ -1,  0},
		{ -1, -1}
	};


static	GMTRSFLAG 	GmTrsFlag[ GM_FLOOR_NUM] = {
		{ 0, 0x00, GM_ITEM_POTION},
		{ 1, 0x01, GM_ITEM_HOURGLASS},					/* X4 描画					*/
		{ 0, 0x00, GM_ITEM_SPECTACLE},
		{ 1, 0x06, GM_ITEM_SWORD_01},					/* ｵｰﾄ装備＆ﾊﾟﾗﾒｰﾀ更新		*/
		{ 0, 0x00, GM_ITEM_JETBOOTS},
		{ 0, 0x0c, GM_ITEM_SHIELD_L},					/* ﾊﾟﾗﾒｰﾀ更新＆ご褒美回復	*/
		{ 0, 0x10, GM_ITEM_CANDLE},						/* 部屋を明るく				*/
		{ 1, 0x01, GM_ITEM_WING},						/* X4 描画					*/
		{ 1, 0x06, GM_ITEM_SWORD_02},					/* ｵｰﾄ装備＆ﾊﾟﾗﾒｰﾀ更新		*/
		{ 0, 0x00, GM_ITEM_GAUNTLET},

		{ 1, 0x01, GM_ITEM_HAMMER},						/* X4 描画					*/
		{ 0, 0x0c, GM_ITEM_ARMOR},						/* ﾊﾟﾗﾒｰﾀ更新＆ご褒美回復	*/
		{ 1, 0x01, GM_ITEM_WHISTLE},					/* X4 描画					*/
		{ 1, 0x06, GM_ITEM_SWORD_03},					/* ｵｰﾄ装備＆ﾊﾟﾗﾒｰﾀ更新		*/
		{ 0, 0x0c, GM_ITEM_HELMET},
		{ 0, 0x00, GM_ITEM_SILVER_RING},
		{ 0, 0x00, 0},									/* 空箱						*/
		{ 0, 0x20, GM_ITEM_SOUND_DIC},					/* 楽典						*/
		{ 0, 0x00, GM_ITEM_GOLD_RING},
		{ 0, 0x00, 0}
	};

/*
	0x00 .. nothing
	0x01 .. Ｘ４描画
	0x02 .. オート装備 ( 0x04と一緒？)
	0x04 .. パラメータ更新
	0x08 .. ご褒美回復
	0x10 .. 部屋を明るく
	0x20 .. 記憶データにセーブ（サウンドモード）
*/




