ref: 98bab5ca807aa8b5d85b2ff48afa662841a309d4
parent: aa9b66eb3677a3a0be7669375869375a472f3f6d
author: Clownacy <Clownacy@users.noreply.github.com>
date: Sat Apr 6 08:44:58 EDT 2019
Made BossBallos.cpp ASM-accurate Turns out I made a mistake while decompiling this, and got a check backwards.
--- a/src/BossBallos.cpp
+++ b/src/BossBallos.cpp
@@ -64,7 +64,7 @@
--npc->ani_no;
}
- if ( npc->ani_no <= 0 )
+ if (npc->ani_no <= 0)
npc->act_no = 202;
break;
@@ -90,10 +90,10 @@
if (npc->act_no >= 0 && npc->act_no < 300)
{
- if (npc->ani_no == 3)
- npc->bits |= 0x20;
- else
+ if (npc->ani_no != 3)
npc->bits &= ~0x20;
+ else
+ npc->bits |= 0x20;
}
if (npc->direct == 0)
@@ -133,25 +133,31 @@
{
static unsigned char flash;
- switch (gBoss[0].act_no)
+ int i;
+ int x;
+ int y;
+
+ NPCHAR *npc = gBoss;
+
+ switch (npc->act_no)
{
case 0:
- gBoss[0].act_no = 1;
- gBoss[0].cond = 0x80;
- gBoss[0].exp = 1;
- gBoss[0].direct = 0;
- gBoss[0].x = 0x28000;
- gBoss[0].y = -0x8000;
- gBoss[0].hit_voice = 54;
- gBoss[0].hit.front = 0x4000;
- gBoss[0].hit.top = 0x6000;
- gBoss[0].hit.back = 0x4000;
- gBoss[0].hit.bottom = 0x6000;
- gBoss[0].bits = 0x8248;
- gBoss[0].size = 3;
- gBoss[0].damage = 0;
- gBoss[0].code_event = 1000;
- gBoss[0].life = 800;
+ npc->act_no = 1;
+ npc->cond = 0x80;
+ npc->exp = 1;
+ npc->direct = 0;
+ npc->x = 0x28000;
+ npc->y = -0x8000;
+ npc->hit_voice = 54;
+ npc->hit.front = 0x4000;
+ npc->hit.top = 0x6000;
+ npc->hit.back = 0x4000;
+ npc->hit.bottom = 0x6000;
+ npc->bits = 0x8248;
+ npc->size = 3;
+ npc->damage = 0;
+ npc->code_event = 1000;
+ npc->life = 800;
gBoss[1].cond = 0x90;
gBoss[1].direct = 0;
@@ -196,39 +202,42 @@
break;
case 100:
- gBoss[0].act_no = 101;
- gBoss[0].ani_no = 0;
- gBoss[0].x = gMC.x;
+ npc->act_no = 101;
+ npc->ani_no = 0;
+ npc->x = gMC.x;
SetNpChar(333, gMC.x, 0x26000, 0, 0, 2, 0, 0x100);
- gBoss[0].act_wait = 0;
+ npc->act_wait = 0;
// Fallthrough
case 101:
- if (++gBoss[0].act_wait > 30)
- gBoss[0].act_no = 102;
+ if (++npc->act_wait > 30)
+ npc->act_no = 102;
break;
case 102:
- gBoss[0].ym += 0x40;
- if (gBoss[0].ym > 0xC00)
- gBoss[0].ym = 0xC00;
+ npc->ym += 0x40;
+ if (npc->ym > 0xC00)
+ npc->ym = 0xC00;
- gBoss[0].y += gBoss[0].ym;
+ npc->y += npc->ym;
- if (gBoss[0].y > 0x26000 - gBoss[0].hit.bottom)
+ if (npc->y > 0x26000 - npc->hit.bottom)
{
- gBoss[0].y = 0x26000 - gBoss[0].hit.bottom;
- gBoss[0].ym = 0;
- gBoss[0].act_no = 103;
- gBoss[0].act_wait = 0;
+ npc->y = 0x26000 - npc->hit.bottom;
+ npc->ym = 0;
+ npc->act_no = 103;
+ npc->act_wait = 0;
SetQuake2(30);
PlaySoundObject(44, 1);
- if ( gMC.y > gBoss[0].y + 0x6000 && gMC.x < gBoss[0].x + 0x3000 && gMC.x > gBoss[0].x - 0x3000 )
+ if ( gMC.y > npc->y + 0x6000 && gMC.x < npc->x + 0x3000 && gMC.x > npc->x - 0x3000 )
DamageMyChar(16);
- for (int i = 0; i < 0x10; ++i)
- SetNpChar(4, gBoss[0].x + (Random(-40, 40) * 0x200), gBoss[0].y + 0x5000, 0, 0, 0, 0, 0x100);
+ for (i = 0; i < 0x10; ++i)
+ {
+ x = npc->x + (Random(-40, 40) * 0x200);
+ SetNpChar(4, x, npc->y + 0x5000, 0, 0, 0, 0, 0x100);
+ }
if (gMC.flag & 8)
gMC.ym = -0x200;
@@ -237,9 +246,9 @@
break;
case 103:
- if (++gBoss[0].act_wait == 50)
+ if (++npc->act_wait == 50)
{
- gBoss[0].act_no = 104;
+ npc->act_no = 104;
gBoss[1].act_no = 100;
gBoss[2].act_no = 100;
}
@@ -247,56 +256,56 @@
break;
case 200:
- gBoss[0].act_no = 201;
- gBoss[0].count1 = 0;
+ npc->act_no = 201;
+ npc->count1 = 0;
// Fallthrough
case 201:
- gBoss[0].act_no = 203;
- gBoss[0].xm = 0;
- ++gBoss[0].count1;
- gBoss[0].hit.bottom = 0x6000;
- gBoss[0].damage = 0;
+ npc->act_no = 203;
+ npc->xm = 0;
+ ++npc->count1;
+ npc->hit.bottom = 0x6000;
+ npc->damage = 0;
- if (gBoss[0].count1 % 3)
- gBoss[0].act_wait = 50;
+ if (npc->count1 % 3 == 0)
+ npc->act_wait = 150;
else
- gBoss[0].act_wait = 150;
+ npc->act_wait = 50;
// Fallthrough
case 203:
- if (--gBoss[0].act_wait <= 0)
+ if (--npc->act_wait <= 0)
{
- gBoss[0].act_no = 204;
- gBoss[0].ym = -0xC00;
+ npc->act_no = 204;
+ npc->ym = -0xC00;
- if (gMC.x > gBoss[0].x)
- gBoss[0].xm = 0x200;
+ if (npc->x < gMC.x)
+ npc->xm = 0x200;
else
- gBoss[0].xm = -0x200;
+ npc->xm = -0x200;
}
break;
case 204:
- if (gBoss[0].x < 0xA000)
- gBoss[0].xm = 0x200;
- if (gBoss[0].x > 0x44000)
- gBoss[0].xm = -0x200;
+ if (npc->x < 0xA000)
+ npc->xm = 0x200;
+ if (npc->x > 0x44000)
+ npc->xm = -0x200;
- gBoss[0].ym += 0x55;
- if (gBoss[0].ym > 0xC00)
- gBoss[0].ym = 0xC00;
+ npc->ym += 0x55;
+ if (npc->ym > 0xC00)
+ npc->ym = 0xC00;
- gBoss[0].x += gBoss[0].xm;
- gBoss[0].y += gBoss[0].ym;
+ npc->x += npc->xm;
+ npc->y += npc->ym;
- if (gBoss[0].y > 0x26000 - gBoss[0].hit.bottom)
+ if (npc->y > 0x26000 - npc->hit.bottom)
{
- gBoss[0].y = 0x26000 - gBoss[0].hit.bottom;
- gBoss[0].ym = 0;
- gBoss[0].act_no = 201;
- gBoss[0].act_wait = 0;
+ npc->y = 0x26000 - npc->hit.bottom;
+ npc->ym = 0;
+ npc->act_no = 201;
+ npc->act_wait = 0;
- if (gMC.y > gBoss[0].y + 0x7000)
+ if (gMC.y > npc->y + 0x7000)
DamageMyChar(16);
if (gMC.flag & 8)
@@ -304,44 +313,50 @@
SetQuake2(30);
PlaySoundObject(26, 1);
- SetNpChar(332, gBoss[0].x - 0x1800, gBoss[0].y + 0x6800, 0, 0, 0, 0, 0x100);
- SetNpChar(332, gBoss[0].x + 0x1800, gBoss[0].y + 0x6800, 0, 0, 2, 0, 0x100);
+ SetNpChar(332, npc->x - 0x1800, npc->y + 0x6800, 0, 0, 0, 0, 0x100);
+ SetNpChar(332, npc->x + 0x1800, npc->y + 0x6800, 0, 0, 2, 0, 0x100);
PlaySoundObject(44, 1);
- for (int i = 0; i < 0x10; ++i)
- SetNpChar(4, gBoss[0].x + (Random(-40, 40) * 0x200), gBoss[0].y + 0x5000, 0, 0, 0, 0, 0x100);
+ for (i = 0; i < 0x10; ++i)
+ {
+ x = npc->x + (Random(-40, 40) * 0x200);
+ SetNpChar(4, x, npc->y + 0x5000, 0, 0, 0, 0, 0x100);
+ }
}
break;
case 220:
- gBoss[0].act_no = 221;
- gBoss[0].life = 1200;
+ npc->act_no = 221;
+ npc->life = 1200;
gBoss[1].act_no = 200;
gBoss[2].act_no = 200;
- gBoss[0].xm = 0;
- gBoss[0].ani_no = 0;
- gBoss[0].shock = 0;
+ npc->xm = 0;
+ npc->ani_no = 0;
+ npc->shock = 0;
flash = 0;
// Fallthrough
case 221:
- gBoss[0].ym += 0x40;
- if (gBoss[0].ym > 0xC00)
- gBoss[0].ym = 0xC00;
+ npc->ym += 0x40;
+ if (npc->ym > 0xC00)
+ npc->ym = 0xC00;
- gBoss[0].y += gBoss[0].ym;
+ npc->y += npc->ym;
- if (gBoss[0].y > 0x26000 - gBoss[0].hit.bottom)
+ if (npc->y > 0x26000 - npc->hit.bottom)
{
- gBoss[0].y = 0x26000 - gBoss[0].hit.bottom;
- gBoss[0].ym = 0;
- gBoss[0].act_no = 222;
- gBoss[0].act_wait = 0;
+ npc->y = 0x26000 - npc->hit.bottom;
+ npc->ym = 0;
+ npc->act_no = 222;
+ npc->act_wait = 0;
SetQuake2(30);
PlaySoundObject(26, 1);
- for (int i = 0; i < 0x10; ++i)
- SetNpChar(4, gBoss[0].x + (Random(-40, 40) * 0x200), gBoss[0].y + 0x5000, 0, 0, 0, 0, 0x100);
+ for (i = 0; i < 0x10; ++i)
+ {
+ x = npc->x + (Random(-40, 40) * 0x200);
+ SetNpChar(4, x, npc->y + 0x5000, 0, 0, 0, 0, 0x100);
+ }
if (gMC.flag & 8)
gMC.ym = -0x200;
@@ -350,227 +365,239 @@
break;
case 300:
- gBoss[0].act_no = 301;
- gBoss[0].act_wait = 0;
+ npc->act_no = 301;
+ npc->act_wait = 0;
- for (int i = 0; i < 0x100; i += 0x40)
+ for (i = 0; i < 0x100; i += 0x40)
{
- SetNpChar(342, gBoss[0].x, gBoss[0].y, 0, 0, i, gBoss, 0x5A);
- SetNpChar(342, gBoss[0].x, gBoss[0].y, 0, 0, i + 544, gBoss, 0x5A);
+ SetNpChar(342, npc->x, npc->y, 0, 0, i, npc, 0x5A);
+ SetNpChar(342, npc->x, npc->y, 0, 0, i + 544, npc, 0x5A);
}
- SetNpChar(343, gBoss[0].x, gBoss[0].y, 0, 0, 0, gBoss, 0x18);
- SetNpChar(344, gBoss[0].x - 0x3000, gBoss[0].y - 0x4800, 0, 0, 0, gBoss, 0x20);
- SetNpChar(344, gBoss[0].x + 0x3000, gBoss[0].y - 0x4800, 0, 0, 2, gBoss, 0x20);
+ SetNpChar(343, npc->x, npc->y, 0, 0, 0, npc, 0x18);
+ SetNpChar(344, npc->x - 0x3000, npc->y - 0x4800, 0, 0, 0, npc, 0x20);
+ SetNpChar(344, npc->x + 0x3000, npc->y - 0x4800, 0, 0, 2, npc, 0x20);
// Fallthrough
case 301:
- gBoss[0].y += (0x1C200 - gBoss[0].y) / 8;
+ npc->y += (0x1C200 - npc->y) / 8;
- if (++gBoss[0].act_wait > 50)
+ if (++npc->act_wait > 50)
{
- gBoss[0].act_no = 310;
- gBoss[0].act_wait = 0;
+ npc->act_no = 310;
+ npc->act_wait = 0;
}
break;
case 311:
- gBoss[0].direct = 0;
- gBoss[0].xm = -0x3AA;
- gBoss[0].ym = 0;
- gBoss[0].x += gBoss[0].xm;
+ npc->direct = 0;
+ npc->xm = -0x3AA;
+ npc->ym = 0;
+ npc->x += npc->xm;
- if (gBoss[0].x < 0xDE00)
+ if (npc->x < 0xDE00)
{
- gBoss[0].x = 0xDE00;
- gBoss[0].act_no = 312;
+ npc->x = 0xDE00;
+ npc->act_no = 312;
}
break;
case 312:
- gBoss[0].direct = 1;
- gBoss[0].ym = -0x3AA;
- gBoss[0].xm = 0;
- gBoss[0].y += gBoss[0].ym;
+ npc->direct = 1;
+ npc->ym = -0x3AA;
+ npc->xm = 0;
+ npc->y += npc->ym;
- if (gBoss[0].y < 0xDE00)
+ if (npc->y < 0xDE00)
{
- gBoss[0].y = 0xDE00;
- gBoss[0].act_no = 313;
+ npc->y = 0xDE00;
+ npc->act_no = 313;
}
break;
case 313:
- gBoss[0].direct = 2;
- gBoss[0].xm = 0x3AA;
- gBoss[0].ym = 0;
- gBoss[0].x += gBoss[0].xm;
+ npc->direct = 2;
+ npc->xm = 0x3AA;
+ npc->ym = 0;
+ npc->x += npc->xm;
- if (gBoss[0].x > 0x40200)
+ if (npc->x > 0x40200)
{
- gBoss[0].x = 0x40200;
- gBoss[0].act_no = 314;
+ npc->x = 0x40200;
+ npc->act_no = 314;
}
- if (gBoss[0].count1)
- --gBoss[0].count1;
+ if (npc->count1)
+ --npc->count1;
- if (gBoss[0].count1 == 0 && gBoss[0].x > 0x26000 && gBoss[0].x < 0x2A000)
- gBoss[0].act_no = 400;
+ if (npc->count1 == 0 && npc->x > 0x26000 && npc->x < 0x2A000)
+ npc->act_no = 400;
break;
case 314:
- gBoss[0].direct = 3;
- gBoss[0].ym = 0x3AA;
- gBoss[0].xm = 0;
- gBoss[0].y += gBoss[0].ym;
+ npc->direct = 3;
+ npc->ym = 0x3AA;
+ npc->xm = 0;
+ npc->y += npc->ym;
- if (gBoss[0].y > 0x1C200)
+ if (npc->y > 0x1C200)
{
- gBoss[0].y = 0x1C200;
- gBoss[0].act_no = 311;
+ npc->y = 0x1C200;
+ npc->act_no = 311;
}
break;
case 400:
- gBoss[0].act_no = 401;
- gBoss[0].act_wait = 0;
- gBoss[0].xm = 0;
- gBoss[0].ym = 0;
+ npc->act_no = 401;
+ npc->act_wait = 0;
+ npc->xm = 0;
+ npc->ym = 0;
DeleteNpCharCode(339, 0);
// Fallthrough
case 401:
- gBoss[0].y += (0x13E00 - gBoss[0].y) / 8;
+ npc->y += (0x13E00 - npc->y) / 8;
- if (++gBoss[0].act_wait > 50)
+ if (++npc->act_wait > 50)
{
- gBoss[0].act_wait = 0;
- gBoss[0].act_no = 410;
+ npc->act_wait = 0;
+ npc->act_no = 410;
- for (int i = 0; i < 0x100; i += 0x20)
- SetNpChar(346, gBoss[0].x, gBoss[0].y, 0, 0, i, gBoss, 0x50);
+ for (i = 0; i < 0x100; i += 0x20)
+ SetNpChar(346, npc->x, npc->y, 0, 0, i, npc, 0x50);
- SetNpChar(343, gBoss[0].x, gBoss[0].y, 0, 0, 0, gBoss, 0x18);
- SetNpChar(344, gBoss[0].x - 0x3000, gBoss[0].y - 0x4800, 0, 0, 0, gBoss, 0x20);
- SetNpChar(344, gBoss[0].x + 0x3000, gBoss[0].y - 0x4800, 0, 0, 2, gBoss, 0x20);
+ SetNpChar(343, npc->x, npc->y, 0, 0, 0, npc, 0x18);
+ SetNpChar(344, npc->x - 0x3000, npc->y - 0x4800, 0, 0, 0, npc, 0x20);
+ SetNpChar(344, npc->x + 0x3000, npc->y - 0x4800, 0, 0, 2, npc, 0x20);
}
break;
case 410:
- if (++gBoss[0].act_wait > 50)
+ if (++npc->act_wait > 50)
{
- gBoss[0].act_wait = 0;
- gBoss[0].act_no = 411;
+ npc->act_wait = 0;
+ npc->act_no = 411;
}
break;
case 411:
- if (++gBoss[0].act_wait % 30 == 1)
- SetNpChar(348, (2 * (gBoss[0].act_wait / 30) + 2) << 13, 0x2A000, 0, 0, 0, 0, 0x180);
+ if (++npc->act_wait % 30 == 1)
+ {
+ x = (2 * (npc->act_wait / 30) + 2) * 0x10 * 0x200;
+ SetNpChar(348, x, 0x2A000, 0, 0, 0, 0, 0x180);
+ }
- if (gBoss[0].act_wait / 3 & 1)
+ if (npc->act_wait / 3 % 2)
PlaySoundObject(26, 1);
- if (gBoss[0].act_wait > 540)
- gBoss[0].act_no = 420;
+ if (npc->act_wait > 540)
+ npc->act_no = 420;
break;
case 420:
- gBoss[0].act_no = 421;
- gBoss[0].act_wait = 0;
- gBoss[0].ani_wait = 0;
+ npc->act_no = 421;
+ npc->act_wait = 0;
+ npc->ani_wait = 0;
SetQuake2(30);
PlaySoundObject(35, 1);
gBoss[1].act_no = 102;
gBoss[2].act_no = 102;
- for (int i = 0; i < 0x100; ++i)
- SetNpChar(4, gBoss[0].x + (Random(-60, 60) * 0x200), gBoss[0].y + (Random(-60, 60) * 0x200), 0, 0, 0, 0, 0);
+ for (i = 0; i < 0x100; ++i)
+ {
+ x = npc->x + (Random(-60, 60) * 0x200);
+ y = npc->y + (Random(-60, 60) * 0x200);
+ SetNpChar(4, x, y, 0, 0, 0, 0, 0);
+ }
// Fallthrough
case 421:
- if (++gBoss[0].ani_wait > 500)
+ if (++npc->ani_wait > 500)
{
- gBoss[0].ani_wait = 0;
- gBoss[0].act_no = 422;
+ npc->ani_wait = 0;
+ npc->act_no = 422;
}
break;
case 422:
- if (++gBoss[0].ani_wait > 200)
+ if (++npc->ani_wait > 200)
{
- gBoss[0].ani_wait = 0;
- gBoss[0].act_no = 423;
+ npc->ani_wait = 0;
+ npc->act_no = 423;
}
break;
case 423:
- if (++gBoss[0].ani_wait > 20)
+ if (++npc->ani_wait > 20)
{
- gBoss[0].ani_wait = 0;
- gBoss[0].act_no = 424;
+ npc->ani_wait = 0;
+ npc->act_no = 424;
}
break;
case 424:
- if (++gBoss[0].ani_wait > 200)
+ if (++npc->ani_wait > 200)
{
- gBoss[0].ani_wait = 0;
- gBoss[0].act_no = 425;
+ npc->ani_wait = 0;
+ npc->act_no = 425;
}
break;
case 425:
- if (++gBoss[0].ani_wait > 500)
+ if (++npc->ani_wait > 500)
{
- gBoss[0].ani_wait = 0;
- gBoss[0].act_no = 426;
+ npc->ani_wait = 0;
+ npc->act_no = 426;
}
break;
case 426:
- if (++gBoss[0].ani_wait > 200)
+ if (++npc->ani_wait > 200)
{
- gBoss[0].ani_wait = 0;
- gBoss[0].act_no = 427;
+ npc->ani_wait = 0;
+ npc->act_no = 427;
}
break;
case 427:
- if (++gBoss[0].ani_wait > 20)
+ if (++npc->ani_wait > 20)
{
- gBoss[0].ani_wait = 0;
- gBoss[0].act_no = 428;
+ npc->ani_wait = 0;
+ npc->act_no = 428;
}
break;
case 428:
- if (++gBoss[0].ani_wait > 200)
+ if (++npc->ani_wait > 200)
{
- gBoss[0].ani_wait = 0;
- gBoss[0].act_no = 421;
+ npc->ani_wait = 0;
+ npc->act_no = 421;
}
break;
case 1000:
- gBoss[0].act_no = 1001;
- gBoss[0].act_wait = 0;
+ npc->act_no = 1001;
+ npc->act_wait = 0;
+
gBoss[1].act_no = 300;
gBoss[2].act_no = 300;
+
+ gBoss[1].act_no &= ~0x41;
+ gBoss[2].act_no &= ~0x41;
+
gBoss[0].bits &= ~0x41;
gBoss[3].bits &= ~0x41;
gBoss[4].bits &= ~0x41;
@@ -577,7 +604,9 @@
gBoss[5].bits &= ~0x41;
// Fallthrough
case 1001:
- if (++gBoss[0].act_wait % 12 == 0)
+ ++gBoss[0].act_wait;
+
+ if (gBoss[0].act_wait % 12 == 0)
PlaySoundObject(44, 1);
SetDestroyNpChar(gBoss[0].x + (Random(-60, 60) * 0x200), gBoss[0].y + (Random(-60, 60) * 0x200), 1, 1);
@@ -595,7 +624,9 @@
case 1002:
SetQuake2(40);
- if (++gBoss[0].act_wait == 50)
+ ++gBoss[0].act_wait;
+
+ if (gBoss[0].act_wait == 50)
{
gBoss[0].cond = 0;
gBoss[1].cond = 0;
@@ -610,55 +641,71 @@
break;
}
- if (gBoss[0].act_no > 420 && gBoss[0].act_no < 500)
+ if (npc->act_no > 420 && npc->act_no < 500)
{
gBoss[3].bits |= 0x20;
gBoss[4].bits |= 0x20;
gBoss[5].bits |= 0x20;
- if (++gBoss[0].act_wait > 300)
+ if (++npc->act_wait > 300)
{
- gBoss[0].act_wait = 0;
+ npc->act_wait = 0;
- if (gMC.x > gBoss[0].x)
+ if (gMC.x > npc->x)
{
- for (int i = 0; i < 8; ++i)
- SetNpChar(350, ((Random(-4, 4) + 156) * 0x2000) / 4, (Random(8, 68) * 0x2000) / 4, 0, 0, 0, 0, 0x100);
+ for (i = 0; i < 8; ++i)
+ {
+ x = ((Random(-4, 4) + 156) * 0x200 * 0x10) / 4;
+ y = (Random(8, 68) * 0x200 * 0x10) / 4;
+ SetNpChar(350, x, y, 0, 0, 0, 0, 0x100);
+ }
}
else
{
- for (int i = 0; i < 8; ++i)
- SetNpChar(350, (Random(-4, 4) * 0x2000) / 4, (Random(8, 68) * 0x2000) / 4, 0, 0, 2, 0, 0x100);
+ for (i = 0; i < 8; ++i)
+ {
+ x = (Random(-4, 4) * 0x200 * 0x10) / 4;
+ y = (Random(8, 68) * 0x200 * 0x10) / 4;
+ SetNpChar(350, x, y, 0, 0, 2, 0, 0x100);
+ }
}
}
- if (gBoss[0].act_wait == 270 || gBoss[0].act_wait == 280 || gBoss[0].act_wait == 290)
+ if (npc->act_wait == 270 || npc->act_wait == 280 || npc->act_wait == 290)
{
- SetNpChar(353, gBoss[0].x, gBoss[0].y - 0x6800, 0, 0, 1, 0, 0x100);
+ SetNpChar(353, npc->x, npc->y - 0x6800, 0, 0, 1, 0, 0x100);
PlaySoundObject(39, 1);
- for (int i = 0; i < 4; ++i)
- SetNpChar(4, gBoss[0].x, gBoss[0].y - 0x6800, 0, 0, 0, 0, 0x100);
+ for (i = 0; i < 4; ++i)
+ SetNpChar(4, npc->x, npc->y - 0x6800, 0, 0, 0, 0, 0x100);
}
- if (gBoss[0].life > 500)
+ if (npc->life > 500)
{
if (Random(0, 10) == 2)
- SetNpChar(270, gBoss[0].x + (Random(-40, 40) * 0x200), gBoss[0].y + (Random(0, 40) * 0x200), 0, 0, 3, 0, 0);
+ {
+ x = npc->x + (Random(-40, 40) * 0x200);
+ y = npc->y + (Random(0, 40) * 0x200);
+ SetNpChar(270, x, y, 0, 0, 3, 0, 0);
+ }
}
else
{
if (Random(0, 4) == 2)
- SetNpChar(270, gBoss[0].x + (Random(-40, 40) * 0x200), gBoss[0].y + (Random(0, 40) * 0x200), 0, 0, 3, 0, 0);
+ {
+ x = npc->x + (Random(-40, 40) * 0x200);
+ y = npc->y + (Random(0, 40) * 0x200);
+ SetNpChar(270, x, y, 0, 0, 3, 0, 0);
+ }
}
}
- if (gBoss[0].shock)
+ if (npc->shock)
{
- if ((++flash >> 1) & 1)
- gBoss[3].ani_no = 0;
- else
+ if (++flash / 2 % 2)
gBoss[3].ani_no = 1;
+ else
+ gBoss[3].ani_no = 0;
}
else
{
@@ -665,7 +712,7 @@
gBoss[3].ani_no = 0;
}
- if (gBoss[0].act_no > 420)
+ if (npc->act_no > 420)
gBoss[3].ani_no += 2;
ActBossChar_Eye(&gBoss[1]);