Clean-up NpcAct180.cpp

This commit is contained in:
Clownacy 2019-11-14 16:51:44 +00:00
parent cb2b03559c
commit 42a986b980

View file

@ -19,6 +19,9 @@
// Curly AI // Curly AI
void ActNpc180(NPCHAR *npc) void ActNpc180(NPCHAR *npc)
{ {
int xx;
int yy;
RECT rcLeft[11] = { RECT rcLeft[11] = {
{0, 96, 16, 112}, {0, 96, 16, 112},
{16, 96, 32, 112}, {16, 96, 32, 112},
@ -47,11 +50,11 @@ void ActNpc180(NPCHAR *npc)
{144, 112, 160, 128}, {144, 112, 160, 128},
}; };
if (npc->y < gMC.y - 0x14000) if (npc->y < gMC.y - (10 * 0x10 * 0x200))
{ {
if (npc->y < 0x20000) if (npc->y < 16 * 0x10 * 0x200)
{ {
npc->tgt_x = 0x280000; npc->tgt_x = 320 * 0x10 * 0x200;
npc->tgt_y = npc->y; npc->tgt_y = npc->y;
} }
else else
@ -62,7 +65,7 @@ void ActNpc180(NPCHAR *npc)
} }
else else
{ {
if (gCurlyShoot_wait) if (gCurlyShoot_wait != 0)
{ {
npc->tgt_x = gCurlyShoot_x; npc->tgt_x = gCurlyShoot_x;
npc->tgt_y = gCurlyShoot_y; npc->tgt_y = gCurlyShoot_y;
@ -123,17 +126,17 @@ void ActNpc180(NPCHAR *npc)
case 100: case 100:
npc->ani_no = 0; npc->ani_no = 0;
npc->xm = 7 * npc->xm / 8; npc->xm = (npc->xm * 7) / 8;
npc->count1 = 0; npc->count1 = 0;
if (npc->x > npc->tgt_x + 0x2000) if (npc->x > npc->tgt_x + (16 * 0x200))
{ {
npc->act_no = 200; npc->act_no = 200;
npc->ani_no = 1; npc->ani_no = 1;
npc->direct = 0; npc->direct = 0;
npc->act_wait = Random(20, 60); npc->act_wait = Random(20, 60);
} }
else if (npc->x < npc->tgt_x - 0x2000) else if (npc->x < npc->tgt_x - (16 * 0x200))
{ {
npc->act_no = 300; npc->act_no = 300;
npc->ani_no = 1; npc->ani_no = 1;
@ -184,7 +187,7 @@ void ActNpc180(NPCHAR *npc)
break; break;
} }
if (gCurlyShoot_wait) if (gCurlyShoot_wait != 0)
--gCurlyShoot_wait; --gCurlyShoot_wait;
if (gCurlyShoot_wait == 70) if (gCurlyShoot_wait == 70)
@ -203,15 +206,15 @@ void ActNpc180(NPCHAR *npc)
npc->act_no = 310; npc->act_no = 310;
} }
int xx = npc->x - npc->tgt_x; xx = npc->x - npc->tgt_x;
int yy = npc->y - npc->tgt_y; yy = npc->y - npc->tgt_y;
if (xx < 0) if (xx < 0)
xx *= -1; xx *= -1;
if (npc->act_no == 100) if (npc->act_no == 100)
{ {
if (xx + 0x400 < yy) if (xx + (2 * 0x200) < yy)
npc->ani_no = 5; npc->ani_no = 5;
else else
npc->ani_no = 0; npc->ani_no = 0;
@ -219,7 +222,7 @@ void ActNpc180(NPCHAR *npc)
if (npc->act_no == 210 || npc->act_no == 310) if (npc->act_no == 210 || npc->act_no == 310)
{ {
if (xx + 0x400 < yy) if (xx + (2 * 0x200) < yy)
npc->ani_no = 6; npc->ani_no = 6;
else else
npc->ani_no = 1; npc->ani_no = 1;
@ -229,7 +232,7 @@ void ActNpc180(NPCHAR *npc)
{ {
++npc->ani_wait; ++npc->ani_wait;
if (xx + 0x400 < yy) if (xx + (2 * 0x200) < yy)
npc->ani_no = 6 + (npc->ani_wait / 4 % 4); npc->ani_no = 6 + (npc->ani_wait / 4 % 4);
else else
npc->ani_no = 1 + (npc->ani_wait / 4 % 4); npc->ani_no = 1 + (npc->ani_wait / 4 % 4);
@ -261,7 +264,7 @@ void ActNpc180(NPCHAR *npc)
if (npc->act_no >= 100 && npc->act_no < 500) if (npc->act_no >= 100 && npc->act_no < 500)
{ {
if (npc->x < gMC.x - 0xA000 || npc->x > gMC.x + 0xA000) if (npc->x < gMC.x - (80 * 0x200) || npc->x > gMC.x + (80 * 0x200))
{ {
#ifdef FIX_BUGS #ifdef FIX_BUGS
if (npc->flag & 5) if (npc->flag & 5)
@ -289,7 +292,7 @@ void ActNpc180(NPCHAR *npc)
npc->x += npc->xm; npc->x += npc->xm;
npc->y += npc->ym; npc->y += npc->ym;
if (npc->act_no >= 100 && (npc->flag & 8) == 0) if (npc->act_no >= 100 && !(npc->flag & 8))
{ {
switch (npc->ani_no) switch (npc->ani_no)
{ {
@ -297,7 +300,7 @@ void ActNpc180(NPCHAR *npc)
break; break;
default: default:
if (xx + 0x400 < yy) if (xx + (2 * 0x200) < yy)
npc->ani_no = 6; npc->ani_no = 6;
else else
npc->ani_no = 1; npc->ani_no = 1;
@ -333,12 +336,12 @@ void ActNpc181(NPCHAR *npc)
if (npc->pNpc->direct == 0) if (npc->pNpc->direct == 0)
{ {
npc->direct = 0; npc->direct = 0;
npc->x = npc->pNpc->x - 0x1000; npc->x = npc->pNpc->x - (8 * 0x200);
} }
else else
{ {
npc->direct = 2; npc->direct = 2;
npc->x = npc->pNpc->x + 0x1000; npc->x = npc->pNpc->x + (8 * 0x200);
} }
npc->y = npc->pNpc->y; npc->y = npc->pNpc->y;
@ -357,12 +360,12 @@ void ActNpc181(NPCHAR *npc)
npc->x = npc->pNpc->x; npc->x = npc->pNpc->x;
} }
npc->y = npc->pNpc->y - 0x1400; npc->y = npc->pNpc->y - (10 * 0x200);
npc->ani_no = 1; npc->ani_no = 1;
} }
if (npc->pNpc->ani_no == 1 || npc->pNpc->ani_no == 3 || npc->pNpc->ani_no == 6 || npc->pNpc->ani_no == 8) if (npc->pNpc->ani_no == 1 || npc->pNpc->ani_no == 3 || npc->pNpc->ani_no == 6 || npc->pNpc->ani_no == 8)
npc->y -= 0x200; npc->y -= 1 * 0x200;
switch (npc->act_no) switch (npc->act_no)
{ {
@ -383,26 +386,26 @@ void ActNpc181(NPCHAR *npc)
{ {
if (npc->direct == 0) if (npc->direct == 0)
{ {
SetBullet(12, npc->x - 0x800, npc->y + 0x600, 0); SetBullet(12, npc->x - (4 * 0x200), npc->y + (3 * 0x200), 0);
SetCaret(npc->x - 0x800, npc->y + 0x600, 3, 0); SetCaret(npc->x - (4 * 0x200), npc->y + (3 * 0x200), 3, 0);
} }
else else
{ {
SetBullet(12, npc->x + 0x800, npc->y + 0x600, 2); SetBullet(12, npc->x + (4 * 0x200), npc->y + (3 * 0x200), 2);
SetCaret(npc->x + 0x800, npc->y + 0x600, 3, 0); SetCaret(npc->x + (4 * 0x200), npc->y + (3 * 0x200), 3, 0);
} }
} }
else else
{ {
if (npc->direct == 0) if (npc->direct == 0)
{ {
SetBullet(12, npc->x - 0x400, npc->y - 0x800, 1); SetBullet(12, npc->x - (2 * 0x200), npc->y - (4 * 0x200), 1);
SetCaret(npc->x - 0x400, npc->y - 0x800, 3, 0); SetCaret(npc->x - (2 * 0x200), npc->y - (4 * 0x200), 3, 0);
} }
else else
{ {
SetBullet(12, npc->x + 0x400, npc->y - 0x800, 1); SetBullet(12, npc->x + (2 * 0x200), npc->y - (4 * 0x200), 1);
SetCaret(npc->x + 0x400, npc->y - 0x800, 3, 0); SetCaret(npc->x + (2 * 0x200), npc->y - (4 * 0x200), 3, 0);
} }
} }
} }
@ -440,12 +443,12 @@ void ActNpc182(NPCHAR *npc)
if (npc->pNpc->direct == 0) if (npc->pNpc->direct == 0)
{ {
npc->direct = 0; npc->direct = 0;
npc->x = npc->pNpc->x - 0x1000; npc->x = npc->pNpc->x - (8 * 0x200);
} }
else else
{ {
npc->direct = 2; npc->direct = 2;
npc->x = npc->pNpc->x + 0x1000; npc->x = npc->pNpc->x + (8 * 0x200);
} }
npc->y = npc->pNpc->y; npc->y = npc->pNpc->y;
@ -464,12 +467,12 @@ void ActNpc182(NPCHAR *npc)
npc->x = npc->pNpc->x; npc->x = npc->pNpc->x;
} }
npc->y = npc->pNpc->y - 0x1400; npc->y = npc->pNpc->y - (10 * 0x200);
npc->ani_no = 1; npc->ani_no = 1;
} }
if (npc->pNpc->ani_no == 1 || npc->pNpc->ani_no == 3 || npc->pNpc->ani_no == 6 || npc->pNpc->ani_no == 8) if (npc->pNpc->ani_no == 1 || npc->pNpc->ani_no == 3 || npc->pNpc->ani_no == 6 || npc->pNpc->ani_no == 8)
npc->y -= 0x200; npc->y -= 1 * 0x200;
switch (npc->act_no) switch (npc->act_no)
{ {
@ -490,26 +493,26 @@ void ActNpc182(NPCHAR *npc)
{ {
if (npc->direct == 0) if (npc->direct == 0)
{ {
SetBullet(6, npc->x - 0x800, npc->y + 0x600, 0); SetBullet(6, npc->x - (4 * 0x200), npc->y + (3 * 0x200), 0);
SetCaret(npc->x - 0x800, npc->y + 0x600, 3, 0); SetCaret(npc->x - (4 * 0x200), npc->y + (3 * 0x200), 3, 0);
} }
else else
{ {
SetBullet(6, npc->x + 0x800, npc->y + 0x600, 2); SetBullet(6, npc->x + (4 * 0x200), npc->y + (3 * 0x200), 2);
SetCaret(npc->x + 0x800, npc->y + 0x600, 3, 0); SetCaret(npc->x + (4 * 0x200), npc->y + (3 * 0x200), 3, 0);
} }
} }
else else
{ {
if (npc->direct == 0) if (npc->direct == 0)
{ {
SetBullet(6, npc->x - 0x400, npc->y - 0x800, 1); SetBullet(6, npc->x - (2 * 0x200), npc->y - (4 * 0x200), 1);
SetCaret(npc->x - 0x400, npc->y - 0x800, 3, 0); SetCaret(npc->x - (2 * 0x200), npc->y - (4 * 0x200), 3, 0);
} }
else else
{ {
SetBullet(6, npc->x + 0x400, npc->y - 0x800, 1); SetBullet(6, npc->x + (2 * 0x200), npc->y - (4 * 0x200), 1);
SetCaret(npc->x + 0x400, npc->y - 0x800, 3, 0); SetCaret(npc->x + (2 * 0x200), npc->y - (4 * 0x200), 3, 0);
} }
} }
} }
@ -564,9 +567,11 @@ void ActNpc183(NPCHAR *npc)
npc->rect.right = 0; npc->rect.right = 0;
} }
// Shutter Big // Big Shutter
void ActNpc184(NPCHAR *npc) void ActNpc184(NPCHAR *npc)
{ {
int i;
RECT rc[4] = { RECT rc[4] = {
{0, 64, 32, 96}, {0, 64, 32, 96},
{32, 64, 64, 96}, {32, 64, 64, 96},
@ -578,8 +583,8 @@ void ActNpc184(NPCHAR *npc)
{ {
case 0: case 0:
npc->act_no = 1; npc->act_no = 1;
npc->x += 0x1000; npc->x += 8 * 0x200;
npc->y += 0x1000; npc->y += 8 * 0x200;
break; break;
case 10: case 10:
@ -615,8 +620,8 @@ void ActNpc184(NPCHAR *npc)
break; break;
case 20: case 20:
for (int i = 0; i < 4; i++) for (i = 0; i < 4; ++i)
SetNpChar(4, npc->x + (Random(-12, 12) * 0x200), npc->y + 0x2000, Random(-0x155, 0x155), Random(-0x600, 0), 0, 0, 0x100); SetNpChar(4, npc->x + (Random(-12, 12) * 0x200), npc->y + (16 * 0x200), Random(-0x155, 0x155), Random(-0x600, 0), 0, NULL, 0x100);
npc->act_no = 1; npc->act_no = 1;
break; break;
@ -634,7 +639,7 @@ void ActNpc184(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
// Shutter Small // Small Shutter
void ActNpc185(NPCHAR *npc) void ActNpc185(NPCHAR *npc)
{ {
RECT rc = {96, 64, 112, 96}; RECT rc = {96, 64, 112, 96};
@ -643,7 +648,7 @@ void ActNpc185(NPCHAR *npc)
{ {
case 0: case 0:
npc->act_no = 1; npc->act_no = 1;
npc->y += 0x1000; npc->y += 8 * 0x200;
break; break;
case 10: case 10:
@ -671,11 +676,12 @@ void ActNpc185(NPCHAR *npc)
npc->y += 0x80; npc->y += 0x80;
break; break;
} }
++npc->act_wait; ++npc->act_wait;
break; break;
case 20: case 20:
npc->y -= 0x3000; npc->y -= 24 * 0x200;
npc->act_no = 1; npc->act_no = 1;
break; break;
} }
@ -726,6 +732,7 @@ void ActNpc186(NPCHAR *npc)
npc->y += 0x80; npc->y += 0x80;
break; break;
} }
++npc->act_wait; ++npc->act_wait;
break; break;
} }
@ -832,8 +839,8 @@ void ActNpc188(NPCHAR *npc)
if (npc->pNpc->code_char == 187 && npc->pNpc->cond & 0x80) if (npc->pNpc->code_char == 187 && npc->pNpc->cond & 0x80)
{ {
deg = (npc->pNpc->count1 + npc->count1) % 0x100; deg = (npc->pNpc->count1 + npc->count1) % 0x100;
npc->x = npc->pNpc->x + 20 * GetSin(deg); npc->x = npc->pNpc->x + (GetSin(deg) * 20);
npc->y = npc->pNpc->y + 0x20 * GetCos(deg); npc->y = npc->pNpc->y + (GetCos(deg) * 0x20);
} }
else else
{ {
@ -941,6 +948,7 @@ void ActNpc189(NPCHAR *npc)
npc->x += npc->xm; npc->x += npc->xm;
npc->y += npc->ym; npc->y += npc->ym;
break; break;
} }
@ -986,8 +994,8 @@ void ActNpc190(NPCHAR *npc)
case 10: case 10:
PlaySoundObject(72, 1); PlaySoundObject(72, 1);
for (i = 0; i < 8; i++) for (i = 0; i < 8; ++i)
SetNpChar(4, npc->x, npc->y + (Random(-8, 8) * 0x200), Random(-8, -2) * 0x200, Random(-3, 3) * 0x200, 0, 0, 0x100); SetNpChar(4, npc->x, npc->y + (Random(-8, 8) * 0x200), Random(-8, -2) * 0x200, Random(-3, 3) * 0x200, 0, NULL, 0x100);
npc->cond = 0; npc->cond = 0;
break; break;
@ -1067,7 +1075,7 @@ void ActNpc191(NPCHAR *npc)
npc->y += npc->ym; npc->y += npc->ym;
if (npc->y < 0x8000 || gSuperYpos) if (npc->y < 64 * 0x200 || gSuperYpos != 0)
{ {
npc->act_no = 21; npc->act_no = 21;
npc->act_wait = 0; npc->act_wait = 0;
@ -1090,6 +1098,7 @@ void ActNpc191(NPCHAR *npc)
} }
gWaterY = npc->y; gWaterY = npc->y;
npc->rect.right = 0; npc->rect.right = 0;
npc->rect.bottom = 0; npc->rect.bottom = 0;
} }
@ -1101,18 +1110,18 @@ void ActNpc192(NPCHAR *npc)
{ {
case 0: case 0:
npc->act_no = 1; npc->act_no = 1;
npc->view.back = 0x2000; npc->view.back = 16 * 0x200;
npc->view.front = 0x2000; npc->view.front = 16 * 0x200;
npc->view.top = 0x1000; npc->view.top = 8 * 0x200;
npc->view.bottom = 0x1000; npc->view.bottom = 8 * 0x200;
break; break;
case 10: case 10:
npc->act_no = 11; npc->act_no = 11;
npc->ani_no = 1; npc->ani_no = 1;
npc->view.top = 0x2000; npc->view.top = 16 * 0x200;
npc->view.bottom = 0x2000; npc->view.bottom = 16 * 0x200;
npc->y -= 0xA00; npc->y -= 5 * 0x200;
break; break;
case 20: case 20:
@ -1156,7 +1165,7 @@ void ActNpc192(NPCHAR *npc)
npc->act_no = 41; npc->act_no = 41;
npc->act_wait = 2; npc->act_wait = 2;
npc->direct = 0; npc->direct = 0;
npc->y -= 0x6000; npc->y -= 48 * 0x200;
npc->xm = -0x1000; npc->xm = -0x1000;
// Fallthrough // Fallthrough
case 41: case 41:
@ -1206,8 +1215,8 @@ void ActNpc193(NPCHAR *npc)
{ {
case 0: case 0:
npc->act_no = 1; npc->act_no = 1;
npc->y = npc->y; // Redundant line npc->y = npc->y; // This line probably isn't accurate to the original source code, but it produces the same assembly
npc->x += 0x3000; npc->x += 24 * 0x200;
break; break;
} }
@ -1222,7 +1231,7 @@ void ActNpc194(NPCHAR *npc)
if (npc->act_no == 0) if (npc->act_no == 0)
{ {
npc->act_no = 1; npc->act_no = 1;
npc->y += 0x800; npc->y += 4 * 0x200;
} }
npc->rect = rc; npc->rect = rc;
@ -1241,10 +1250,10 @@ void ActNpc196(NPCHAR *npc)
RECT rcLeft = {112, 64, 144, 80}; RECT rcLeft = {112, 64, 144, 80};
RECT rcRight = {112, 80, 144, 96}; RECT rcRight = {112, 80, 144, 96};
npc->x -= 0xC00; npc->x -= 6 * 0x200;
if (npc->x <= 0x26000) if (npc->x <= 19 * 0x10 * 0x200)
npc->x += 0x2C000; npc->x += 22 * 0x10 * 0x200;
if (npc->direct == 0) if (npc->direct == 0)
npc->rect = rcLeft; npc->rect = rcLeft;
@ -1300,7 +1309,7 @@ void ActNpc197(NPCHAR *npc)
if (npc->ani_no > 3) if (npc->ani_no > 3)
npc->ani_no = 2; npc->ani_no = 2;
if (npc->x < 0x6000) if (npc->x < 48 * 0x200)
{ {
npc->destroy_voice = 0; npc->destroy_voice = 0;
LoseNpChar(npc, 1); LoseNpChar(npc, 1);