Merge pull request #22 from Clownacy/master

Merge Clownacy/master into master
This commit is contained in:
Gabriel Ravier 2019-05-18 20:38:26 +02:00 committed by GitHub
commit 7578abafc5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 591 additions and 483 deletions

View file

@ -12,7 +12,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Null // Null
void ActNpc000(NPCHAR *npc) void ActNpc000(NPCHAR *npc)
{ {
RECT rect = {0x00, 0x00, 0x10, 0x10}; RECT rect = {0x00, 0x00, 0x10, 0x10};
@ -28,40 +28,40 @@ void ActNpc000(NPCHAR *npc)
npc->rect = rect; npc->rect = rect;
} }
//Experience // Experience
void ActNpc001(NPCHAR *npc) void ActNpc001(NPCHAR *npc)
{ {
//In wind // In wind
if (gBack.type == 5 || gBack.type == 6) if (gBack.type == 5 || gBack.type == 6)
{ {
if (npc->act_no == 0) if (npc->act_no == 0)
{ {
//Set state // Set state
npc->act_no = 1; npc->act_no = 1;
//Set random speed // Set random speed
npc->ym = Random(-0x80, 0x80); npc->ym = Random(-0x80, 0x80);
npc->xm = Random(0x7F, 0x100); npc->xm = Random(0x7F, 0x100);
} }
//Blow to the left // Blow to the left
npc->xm -= 8; npc->xm -= 8;
//Destroy when off-screen // Destroy when off-screen
if (npc->x < 0xA000) if (npc->x < 0xA000)
npc->cond = 0; npc->cond = 0;
#ifdef FIX_BUGS #ifdef FIX_BUGS
//Limit speed // Limit speed
if (npc->xm < -0x600) if (npc->xm < -0x600)
npc->xm = -0x600; npc->xm = -0x600;
#else #else
//Limit speed (except pixel applied it to the X position) // Limit speed (except pixel applied it to the X position)
if (npc->x < -0x600) if (npc->x < -0x600)
npc->x = -0x600; npc->x = -0x600;
#endif #endif
//Bounce off walls // Bounce off walls
if (npc->flag & 1) if (npc->flag & 1)
npc->xm = 0x100; npc->xm = 0x100;
if (npc->flag & 2) if (npc->flag & 2)
@ -69,43 +69,43 @@ void ActNpc001(NPCHAR *npc)
if (npc->flag & 8) if (npc->flag & 8)
npc->ym = -0x40; npc->ym = -0x40;
} }
//When not in wind // When not in wind
else else
{ {
if (npc->act_no == 0) if (npc->act_no == 0)
{ {
//Set state // Set state
npc->act_no = 1; npc->act_no = 1;
npc->ani_no = Random(0, 4); npc->ani_no = Random(0, 4);
//Random speed // Random speed
npc->xm = Random(-0x200, 0x200); npc->xm = Random(-0x200, 0x200);
npc->ym = Random(-0x400, 0); npc->ym = Random(-0x400, 0);
//Random direction (reverse animation or not) // Random direction (reverse animation or not)
if (Random(0, 1) != 0) if (Random(0, 1) != 0)
npc->direct = 0; npc->direct = 0;
else else
npc->direct = 2; npc->direct = 2;
} }
//Gravity // Gravity
if (npc->flag & 0x100) if (npc->flag & 0x100)
npc->ym += 21; npc->ym += 21;
else else
npc->ym += 42; npc->ym += 42;
//Bounce off walls // Bounce off walls
if (npc->flag & 1 && npc->xm < 0) if (npc->flag & 1 && npc->xm < 0)
npc->xm *= -1; npc->xm *= -1;
if (npc->flag & 4 && npc->xm > 0) if (npc->flag & 4 && npc->xm > 0)
npc->xm *= -1; npc->xm *= -1;
//Bounce off ceiling // Bounce off ceiling
if (npc->flag & 2 && npc->ym < 0) if (npc->flag & 2 && npc->ym < 0)
npc->ym *= -1; npc->ym *= -1;
//Bounce off floor // Bounce off floor
if (npc->flag & 8) if (npc->flag & 8)
{ {
PlaySoundObject(45, 1); PlaySoundObject(45, 1);
@ -113,7 +113,7 @@ void ActNpc001(NPCHAR *npc)
npc->xm = 2 * npc->xm / 3; npc->xm = 2 * npc->xm / 3;
} }
//Play bounce song (and try to clip out of floor if stuck) // Play bounce song (and try to clip out of floor if stuck)
if (npc->flag & 0xD) if (npc->flag & 0xD)
{ {
PlaySoundObject(45, 1); PlaySoundObject(45, 1);
@ -125,7 +125,7 @@ void ActNpc001(NPCHAR *npc)
npc->count2 = 0; npc->count2 = 0;
} }
//Limit speed // Limit speed
if (npc->xm < -0x5FF) if (npc->xm < -0x5FF)
npc->xm = -0x5FF; npc->xm = -0x5FF;
if (npc->xm > 0x5FF) if (npc->xm > 0x5FF)
@ -136,11 +136,11 @@ void ActNpc001(NPCHAR *npc)
npc->ym = 0x5FF; npc->ym = 0x5FF;
} }
//Move // Move
npc->y += npc->ym; npc->y += npc->ym;
npc->x += npc->xm; npc->x += npc->xm;
//Get framerects // Get framerects
RECT rect[6] = { RECT rect[6] = {
{0x00, 0x10, 0x10, 0x20}, {0x00, 0x10, 0x10, 0x20},
{0x10, 0x10, 0x20, 0x20}, {0x10, 0x10, 0x20, 0x20},
@ -152,7 +152,7 @@ void ActNpc001(NPCHAR *npc)
RECT rcNo = {0, 0, 0, 0}; RECT rcNo = {0, 0, 0, 0};
//Animate // Animate
++npc->ani_wait; ++npc->ani_wait;
if (npc->direct == 0) if (npc->direct == 0)
@ -176,7 +176,7 @@ void ActNpc001(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
//Size // Size
if (npc->act_no) if (npc->act_no)
{ {
switch (npc->exp) switch (npc->exp)
@ -195,11 +195,11 @@ void ActNpc001(NPCHAR *npc)
npc->act_no = 1; npc->act_no = 1;
} }
//Delete after 500 frames // Delete after 500 frames
if (++npc->count1 > 500 && npc->ani_no == 5 && npc->ani_wait == 2) if (++npc->count1 > 500 && npc->ani_no == 5 && npc->ani_wait == 2)
npc->cond = 0; npc->cond = 0;
//Blink after 400 frames // Blink after 400 frames
if (npc->count1 > 400) if (npc->count1 > 400)
{ {
if (npc->count1 / 2 % 2) if (npc->count1 / 2 % 2)
@ -207,10 +207,10 @@ void ActNpc001(NPCHAR *npc)
} }
} }
//Behemoth // Behemoth
void ActNpc002(NPCHAR *npc) void ActNpc002(NPCHAR *npc)
{ {
//Rects // Rects
RECT rcLeft[7] = { RECT rcLeft[7] = {
{32, 0, 64, 24}, {32, 0, 64, 24},
{0, 0, 32, 24}, {0, 0, 32, 24},
@ -231,7 +231,7 @@ void ActNpc002(NPCHAR *npc)
{160, 24, 192, 48}, {160, 24, 192, 48},
}; };
//Turn when touching a wall // Turn when touching a wall
if (npc->flag & 1) if (npc->flag & 1)
npc->direct = 2; npc->direct = 2;
else if (npc->flag & 4) else if (npc->flag & 4)
@ -239,7 +239,7 @@ void ActNpc002(NPCHAR *npc)
switch (npc->act_no) switch (npc->act_no)
{ {
case 0: //Walking case 0: // Walking
if (npc->direct == 0) if (npc->direct == 0)
npc->xm = -0x100; npc->xm = -0x100;
else else
@ -261,7 +261,8 @@ void ActNpc002(NPCHAR *npc)
npc->ani_no = 4; npc->ani_no = 4;
} }
break; break;
case 1: //Shot
case 1: // Shot
npc->xm = 7 * npc->xm / 8; npc->xm = 7 * npc->xm / 8;
if (++npc->count1 > 40) if (++npc->count1 > 40)
@ -281,7 +282,8 @@ void ActNpc002(NPCHAR *npc)
} }
} }
break; break;
case 2: //Charge
case 2: // Charge
if (npc->direct == 0) if (npc->direct == 0)
npc->xm = -0x400; npc->xm = -0x400;
else else
@ -310,23 +312,23 @@ void ActNpc002(NPCHAR *npc)
break; break;
} }
//Gravity // Gravity
npc->ym += 0x40; npc->ym += 0x40;
if (npc->ym > 0x5FF) if (npc->ym > 0x5FF)
npc->ym = 0x5FF; npc->ym = 0x5FF;
//Move // Move
npc->x += npc->xm; npc->x += npc->xm;
npc->y += npc->ym; npc->y += npc->ym;
//Set framerect // Set framerect
if (npc->direct == 0) if (npc->direct == 0)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
else else
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Dead enemy (make sure damage shown doesn't teleport to a new loaded npc) // Dead enemy (make sure damage shown doesn't teleport to a new loaded npc)
void ActNpc003(NPCHAR *npc) void ActNpc003(NPCHAR *npc)
{ {
if (++npc->count1 > 100) if (++npc->count1 > 100)
@ -336,7 +338,7 @@ void ActNpc003(NPCHAR *npc)
npc->rect = rect; npc->rect = rect;
} }
//Smoke // Smoke
void ActNpc004(NPCHAR *npc) void ActNpc004(NPCHAR *npc)
{ {
RECT rcLeft[8] = { RECT rcLeft[8] = {
@ -365,7 +367,7 @@ void ActNpc004(NPCHAR *npc)
if (npc->act_no == 0) if (npc->act_no == 0)
{ {
//Move in random direction at random speed // Move in random direction at random speed
if (npc->direct == 0 || npc->direct == 1) if (npc->direct == 0 || npc->direct == 1)
{ {
deg = Random(0, 0xFF); deg = Random(0, 0xFF);
@ -373,33 +375,33 @@ void ActNpc004(NPCHAR *npc)
npc->ym = GetSin(deg) * Random(0x200, 0x5FF) / 0x200; npc->ym = GetSin(deg) * Random(0x200, 0x5FF) / 0x200;
} }
//Set state // Set state
npc->ani_no = Random(0, 4); npc->ani_no = Random(0, 4);
npc->ani_wait = Random(0, 3); npc->ani_wait = Random(0, 3);
npc->act_no = 1; npc->act_no = 1;
} }
else else
{ {
//Slight drag // Slight drag
npc->xm = 20 * npc->xm / 21; npc->xm = 20 * npc->xm / 21;
npc->ym = 20 * npc->ym / 21; npc->ym = 20 * npc->ym / 21;
//Move // Move
npc->x += npc->xm; npc->x += npc->xm;
npc->y += npc->ym; npc->y += npc->ym;
} }
//Animate // Animate
if (++npc->ani_wait > 4) if (++npc->ani_wait > 4)
{ {
npc->ani_wait = 0; npc->ani_wait = 0;
npc->ani_no++; npc->ani_no++;
} }
//Set framerect // Set framerect
if (npc->ani_no > 7) if (npc->ani_no > 7)
{ {
//Destroy if over // Destroy if over
npc->cond = 0; npc->cond = 0;
} }
else else
@ -413,7 +415,7 @@ void ActNpc004(NPCHAR *npc)
} }
} }
//Critter (Green, Egg Corridor) // Critter (Green, Egg Corridor)
void ActNpc005(NPCHAR *npc) void ActNpc005(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -430,18 +432,18 @@ void ActNpc005(NPCHAR *npc)
switch (npc->act_no) switch (npc->act_no)
{ {
case 0: //Init case 0: // Initialize
npc->y += 0x600; npc->y += 0x600;
npc->act_no = 1; npc->act_no = 1;
// Fallthrough // Fallthrough
case 1: //Waiting case 1: // Waiting
//Look at player // Look at player
if (npc->x > gMC.x) if (npc->x > gMC.x)
npc->direct = 0; npc->direct = 0;
else else
npc->direct = 2; npc->direct = 2;
//Open eyes near player // Open eyes near player
if (npc->act_wait >= 8 && npc->x - 0xE000 < gMC.x && npc->x + 0xE000 > gMC.x && npc->y - 0xA000 < gMC.y && npc->y + 0xA000 > gMC.y) if (npc->act_wait >= 8 && npc->x - 0xE000 < gMC.x && npc->x + 0xE000 > gMC.x && npc->y - 0xA000 < gMC.y && npc->y + 0xA000 > gMC.y)
{ {
npc->ani_no = 1; npc->ani_no = 1;
@ -454,7 +456,7 @@ void ActNpc005(NPCHAR *npc)
npc->ani_no = 0; npc->ani_no = 0;
} }
//Jump if attacked // Jump if attacked
if (npc->shock) if (npc->shock)
{ {
npc->act_no = 2; npc->act_no = 2;
@ -462,7 +464,7 @@ void ActNpc005(NPCHAR *npc)
npc->act_wait = 0; npc->act_wait = 0;
} }
//Jump if player is nearby // Jump if player is nearby
if (npc->act_wait >= 8 && npc->x - 0x6000 < gMC.x && npc->x + 0x6000 > gMC.x && npc->y - 0xA000 < gMC.y && npc->y + 0x6000 > gMC.y) if (npc->act_wait >= 8 && npc->x - 0x6000 < gMC.x && npc->x + 0x6000 > gMC.x && npc->y - 0xA000 < gMC.y && npc->y + 0x6000 > gMC.y)
{ {
npc->act_no = 2; npc->act_no = 2;
@ -471,18 +473,18 @@ void ActNpc005(NPCHAR *npc)
} }
break; break;
case 2: //Going to jump case 2: // Going to jump
if (++npc->act_wait > 8) if (++npc->act_wait > 8)
{ {
//Set jump state // Set jump state
npc->act_no = 3; npc->act_no = 3;
npc->ani_no = 2; npc->ani_no = 2;
//Jump // Jump
npc->ym = -0x5FF; npc->ym = -0x5FF;
PlaySoundObject(30, 1); PlaySoundObject(30, 1);
//Jump in facing direction // Jump in facing direction
if (npc->direct == 0) if (npc->direct == 0)
npc->xm = -0x100; npc->xm = -0x100;
else else
@ -490,8 +492,8 @@ void ActNpc005(NPCHAR *npc)
} }
break; break;
case 3: //Jumping case 3: // Jumping
//Land // Land
if (npc->flag & 8) if (npc->flag & 8)
{ {
npc->xm = 0; npc->xm = 0;
@ -503,23 +505,23 @@ void ActNpc005(NPCHAR *npc)
break; break;
} }
//Gravity // Gravity
npc->ym += 64; npc->ym += 64;
if (npc->ym > 0x5FF) if (npc->ym > 0x5FF)
npc->ym = 0x5FF; npc->ym = 0x5FF;
//Move // Move
npc->x += npc->xm; npc->x += npc->xm;
npc->y += npc->ym; npc->y += npc->ym;
//Set framerect // Set framerect
if (npc->direct == 0) if (npc->direct == 0)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
else else
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Beetle (Goes left and right, Egg Corridor) // Beetle (Goes left and right, Egg Corridor)
void ActNpc006(NPCHAR *npc) void ActNpc006(NPCHAR *npc)
{ {
RECT rcLeft[5] = { RECT rcLeft[5] = {
@ -540,7 +542,7 @@ void ActNpc006(NPCHAR *npc)
switch (npc->act_no) switch (npc->act_no)
{ {
case 0: //Init case 0: // Initialize
npc->act_no = 1; npc->act_no = 1;
if (npc->direct == 0) if (npc->direct == 0)
@ -550,18 +552,18 @@ void ActNpc006(NPCHAR *npc)
break; break;
case 1: case 1:
//Accelerate to the left // Accelerate to the left
npc->xm -= 0x10; npc->xm -= 0x10;
if (npc->xm < -0x400) if (npc->xm < -0x400)
npc->xm = -0x400; npc->xm = -0x400;
//Move // Move
if (npc->shock) if (npc->shock)
npc->x += npc->xm / 2; npc->x += npc->xm / 2;
else else
npc->x += npc->xm; npc->x += npc->xm;
//Animate // Animate
if (++npc->ani_wait > 1) if (++npc->ani_wait > 1)
{ {
npc->ani_wait = 0; npc->ani_wait = 0;
@ -571,7 +573,7 @@ void ActNpc006(NPCHAR *npc)
if (npc->ani_no > 2) if (npc->ani_no > 2)
npc->ani_no = 1; npc->ani_no = 1;
//Stop when hitting a wall // Stop when hitting a wall
if (npc->flag & 1) if (npc->flag & 1)
{ {
npc->act_no = 2; npc->act_no = 2;
@ -583,7 +585,7 @@ void ActNpc006(NPCHAR *npc)
break; break;
case 2: case 2:
//Wait 60 frames then move to the right // Wait 60 frames then move to the right
if (++npc->act_wait > 60) if (++npc->act_wait > 60)
{ {
npc->act_no = 3; npc->act_no = 3;
@ -593,18 +595,18 @@ void ActNpc006(NPCHAR *npc)
break; break;
case 3: case 3:
//Accelerate to the right // Accelerate to the right
npc->xm += 0x10; npc->xm += 0x10;
if (npc->xm > 0x400) if (npc->xm > 0x400)
npc->xm = 0x400; npc->xm = 0x400;
//Move // Move
if (npc->shock) if (npc->shock)
npc->x += npc->xm / 2; npc->x += npc->xm / 2;
else else
npc->x += npc->xm; npc->x += npc->xm;
//Animate // Animate
if (++npc->ani_wait > 1) if (++npc->ani_wait > 1)
{ {
npc->ani_wait = 0; npc->ani_wait = 0;
@ -614,7 +616,7 @@ void ActNpc006(NPCHAR *npc)
if (npc->ani_no > 2) if (npc->ani_no > 2)
npc->ani_no = 1; npc->ani_no = 1;
//Stop when hitting a wall // Stop when hitting a wall
if (npc->flag & 4) if (npc->flag & 4)
{ {
npc->act_no = 4; npc->act_no = 4;
@ -626,7 +628,7 @@ void ActNpc006(NPCHAR *npc)
break; break;
case 4: case 4:
//Wait 60 frames then move to the left // Wait 60 frames then move to the left
if (++npc->act_wait > 60) if (++npc->act_wait > 60)
{ {
npc->act_no = 1; npc->act_no = 1;
@ -636,14 +638,14 @@ void ActNpc006(NPCHAR *npc)
break; break;
} }
//Set framerect // Set framerect
if (npc->direct == 0) if (npc->direct == 0)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
else else
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Basil // Basil
void ActNpc007(NPCHAR *npc) void ActNpc007(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -726,7 +728,7 @@ void ActNpc007(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Beetle (Follows you, Egg Corridor) // Beetle (Follows you, Egg Corridor)
void ActNpc008(NPCHAR *npc) void ActNpc008(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -829,7 +831,7 @@ void ActNpc008(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Balrog (drop-in) // Balrog (drop-in)
void ActNpc009(NPCHAR *npc) void ActNpc009(NPCHAR *npc)
{ {
int i; int i;
@ -904,7 +906,7 @@ void ActNpc009(NPCHAR *npc)
npc->rect = rect_right[npc->ani_no]; npc->rect = rect_right[npc->ani_no];
} }
//Balrog (shooting) (super-secret version from prototype) // Balrog (shooting) (super-secret version from prototype)
void ActNpc010(NPCHAR *npc) void ActNpc010(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -1027,7 +1029,7 @@ void ActNpc010(NPCHAR *npc)
npc->rect = rect_right[npc->ani_no]; npc->rect = rect_right[npc->ani_no];
} }
//Proto-Balrog's projectile // Proto-Balrog's projectile
void ActNpc011(NPCHAR *npc) void ActNpc011(NPCHAR *npc)
{ {
if (npc->flag & 0xFF) if (npc->flag & 0xFF)
@ -1062,7 +1064,7 @@ void ActNpc011(NPCHAR *npc)
} }
} }
//Balrog (cutscene) // Balrog (cutscene)
void ActNpc012(NPCHAR *npc) void ActNpc012(NPCHAR *npc)
{ {
int i; int i;
@ -1395,7 +1397,7 @@ void ActNpc012(NPCHAR *npc)
} }
} }
//Forcefield // Forcefield
void ActNpc013(NPCHAR *npc) void ActNpc013(NPCHAR *npc)
{ {
RECT rect[4] = { RECT rect[4] = {
@ -1417,7 +1419,7 @@ void ActNpc013(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Santa's Key // Santa's Key
void ActNpc014(NPCHAR *npc) void ActNpc014(NPCHAR *npc)
{ {
RECT rect[3] = { RECT rect[3] = {
@ -1460,7 +1462,7 @@ void ActNpc014(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Chest (closed) // Chest (closed)
void ActNpc015(NPCHAR *npc) void ActNpc015(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -1517,7 +1519,7 @@ void ActNpc015(NPCHAR *npc)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
} }
//Save point // Save point
void ActNpc016(NPCHAR *npc) void ActNpc016(NPCHAR *npc)
{ {
RECT rect[8] = { RECT rect[8] = {

View file

@ -11,7 +11,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Computer // Computer
void ActNpc020(NPCHAR *npc) void ActNpc020(NPCHAR *npc)
{ {
RECT rcLeft = {288, 16, 320, 40}; RECT rcLeft = {288, 16, 320, 40};
@ -37,7 +37,7 @@ void ActNpc020(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Chest (open) // Chest (open)
void ActNpc021(NPCHAR *npc) void ActNpc021(NPCHAR *npc)
{ {
if (npc->act_no == 0) if (npc->act_no == 0)
@ -53,7 +53,7 @@ void ActNpc021(NPCHAR *npc)
npc->rect = rect; npc->rect = rect;
} }
//Teleporter // Teleporter
void ActNpc022(NPCHAR *npc) void ActNpc022(NPCHAR *npc)
{ {
RECT rect[2] = { RECT rect[2] = {
@ -77,7 +77,7 @@ void ActNpc022(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Teleporter lights // Teleporter lights
void ActNpc023(NPCHAR *npc) void ActNpc023(NPCHAR *npc)
{ {
RECT rect[8] = { RECT rect[8] = {
@ -103,7 +103,7 @@ void ActNpc023(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Power Critter // Power Critter
void ActNpc024(NPCHAR *npc) void ActNpc024(NPCHAR *npc)
{ {
RECT rcLeft[6] = { RECT rcLeft[6] = {
@ -192,7 +192,7 @@ void ActNpc024(NPCHAR *npc)
npc->act_no = 4; npc->act_no = 4;
npc->ani_no = 3; npc->ani_no = 3;
npc->act_wait = 0; npc->act_wait = 0;
npc->act_wait = 0; // lol duplicate line npc->act_wait = 0; // Pixel duplicated this line
} }
break; break;
@ -408,7 +408,7 @@ void ActNpc025(NPCHAR *npc)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
} }
//Bat (Grasstown, flying) // Bat (Grasstown, flying)
void ActNpc026(NPCHAR *npc) void ActNpc026(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -528,7 +528,7 @@ void ActNpc026(NPCHAR *npc)
npc->rect = rect_right[npc->ani_no]; npc->rect = rect_right[npc->ani_no];
} }
//Death trap // Death trap
void ActNpc027(NPCHAR *npc) void ActNpc027(NPCHAR *npc)
{ {
RECT rcLeft[1] = {96, 64, 128, 88}; RECT rcLeft[1] = {96, 64, 128, 88};
@ -536,7 +536,7 @@ void ActNpc027(NPCHAR *npc)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
} }
//Flying Critter (Grasstown) // Flying Critter (Grasstown)
void ActNpc028(NPCHAR *npc) void ActNpc028(NPCHAR *npc)
{ {
RECT rcLeft[6] = { RECT rcLeft[6] = {
@ -588,7 +588,7 @@ void ActNpc028(NPCHAR *npc)
npc->act_wait = 0; npc->act_wait = 0;
} }
if ( npc->act_wait >= 8 && npc->x - 0xC000 < gMC.x && npc->x + 0xC000 > gMC.x && npc->y - 0xC000 < gMC.y && npc->y + 0x6000 > gMC.y) if (npc->act_wait >= 8 && npc->x - 0xC000 < gMC.x && npc->x + 0xC000 > gMC.x && npc->y - 0xC000 < gMC.y && npc->y + 0x6000 > gMC.y)
{ {
npc->act_no = 2; npc->act_no = 2;
npc->ani_no = 0; npc->ani_no = 0;
@ -625,7 +625,7 @@ void ActNpc028(NPCHAR *npc)
npc->act_no = 4; npc->act_no = 4;
npc->ani_no = 3; npc->ani_no = 3;
npc->act_wait = 0; npc->act_wait = 0;
npc->act_wait = 0; // lol duplicate line npc->act_wait = 0; // Pixel duplicated this line
} }
break; break;
@ -717,7 +717,7 @@ void ActNpc028(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Cthulhu // Cthulhu
void ActNpc029(NPCHAR *npc) void ActNpc029(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -752,7 +752,7 @@ void ActNpc029(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Gunsmith // Gunsmith
void ActNpc030(NPCHAR *npc) void ActNpc030(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -810,7 +810,7 @@ void ActNpc030(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Bat (Grasstown, hanging) // Bat (Grasstown, hanging)
void ActNpc031(NPCHAR *npc) void ActNpc031(NPCHAR *npc)
{ {
RECT rcLeft[5] = { RECT rcLeft[5] = {
@ -945,7 +945,7 @@ void ActNpc031(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Life capsule // Life capsule
void ActNpc032(NPCHAR *npc) void ActNpc032(NPCHAR *npc)
{ {
RECT rect[2] = { RECT rect[2] = {
@ -959,13 +959,13 @@ void ActNpc032(NPCHAR *npc)
++npc->ani_no; ++npc->ani_no;
} }
if ( npc->ani_no > 1 ) if (npc->ani_no > 1)
npc->ani_no = 0; npc->ani_no = 0;
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Balrog bouncing projectile // Balrog bouncing projectile
void ActNpc033(NPCHAR *npc) void ActNpc033(NPCHAR *npc)
{ {
if (npc->flag & 5) if (npc->flag & 5)
@ -1005,7 +1005,7 @@ void ActNpc033(NPCHAR *npc)
} }
} }
//Bed // Bed
void ActNpc034(NPCHAR *npc) void ActNpc034(NPCHAR *npc)
{ {
RECT rcLeft = {192, 48, 224, 64}; RECT rcLeft = {192, 48, 224, 64};
@ -1017,7 +1017,7 @@ void ActNpc034(NPCHAR *npc)
npc->rect = rcRight; npc->rect = rcRight;
} }
//Mannan // Mannan
void ActNpc035(NPCHAR *npc) void ActNpc035(NPCHAR *npc)
{ {
if (npc->act_no < 3 && npc->life < 90) if (npc->act_no < 3 && npc->life < 90)
@ -1093,7 +1093,7 @@ void ActNpc035(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Balrog (hover) // Balrog (hover)
void ActNpc036(NPCHAR *npc) void ActNpc036(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -1279,7 +1279,7 @@ void ActNpc036(NPCHAR *npc)
npc->rect = rect_right[npc->ani_no]; npc->rect = rect_right[npc->ani_no];
} }
//Signpost // Signpost
void ActNpc037(NPCHAR *npc) void ActNpc037(NPCHAR *npc)
{ {
RECT rect[2] = { RECT rect[2] = {
@ -1299,7 +1299,7 @@ void ActNpc037(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Fireplace // Fireplace
void ActNpc038(NPCHAR *npc) void ActNpc038(NPCHAR *npc)
{ {
RECT rect[4] = { RECT rect[4] = {
@ -1335,7 +1335,7 @@ void ActNpc038(NPCHAR *npc)
} }
} }
//Save sign // Save sign
void ActNpc039(NPCHAR *npc) void ActNpc039(NPCHAR *npc)
{ {
RECT rect[2] = { RECT rect[2] = {

View file

@ -11,7 +11,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Santa // Santa
void ActNpc040(NPCHAR *npc) void ActNpc040(NPCHAR *npc)
{ {
RECT rcLeft[7] = { RECT rcLeft[7] = {
@ -100,7 +100,7 @@ void ActNpc040(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Busted Door // Busted Door
void ActNpc041(NPCHAR *npc) void ActNpc041(NPCHAR *npc)
{ {
RECT rect = {0, 80, 48, 112}; RECT rect = {0, 80, 48, 112};
@ -114,7 +114,7 @@ void ActNpc041(NPCHAR *npc)
npc->rect = rect; npc->rect = rect;
} }
//Sue // Sue
void ActNpc042(NPCHAR *npc) void ActNpc042(NPCHAR *npc)
{ {
RECT rcLeft[13] = { RECT rcLeft[13] = {
@ -403,7 +403,7 @@ void ActNpc042(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Chalkboard // Chalkboard
void ActNpc043(NPCHAR *npc) void ActNpc043(NPCHAR *npc)
{ {
RECT rcLeft = {128, 80, 168, 112}; RECT rcLeft = {128, 80, 168, 112};
@ -423,7 +423,7 @@ void ActNpc043(NPCHAR *npc)
npc->rect = rcRight; npc->rect = rcRight;
} }
//Polish // Polish
void ActNpc044(NPCHAR *npc) void ActNpc044(NPCHAR *npc)
{ {
// Yeah, Pixel defined these backwards for some reason. // Yeah, Pixel defined these backwards for some reason.
@ -545,7 +545,7 @@ void ActNpc044(NPCHAR *npc)
npc->xm += 0x100; npc->xm += 0x100;
} }
if ( npc->flag & 4 ) if (npc->flag & 4)
npc->act_no = 9; npc->act_no = 9;
break; break;
@ -605,7 +605,7 @@ void ActNpc044(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Baby // Baby
void ActNpc045(NPCHAR *npc) void ActNpc045(NPCHAR *npc)
{ {
RECT rect[3] = { RECT rect[3] = {
@ -634,7 +634,7 @@ void ActNpc045(NPCHAR *npc)
// Fallthrough // Fallthrough
case 1: case 1:
case 2: case 2:
if ( ++npc->ani_no > 2 ) if (++npc->ani_no > 2)
npc->ani_no = 1; npc->ani_no = 1;
break; break;
@ -674,7 +674,7 @@ void ActNpc045(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//H/V Trigger // H/V Trigger
void ActNpc046(NPCHAR *npc) void ActNpc046(NPCHAR *npc)
{ {
RECT rect = {0, 0, 16, 16}; RECT rect = {0, 0, 16, 16};
@ -699,10 +699,10 @@ void ActNpc046(NPCHAR *npc)
npc->rect = rect; npc->rect = rect;
} }
//Sandcroc // Sandcroc
void ActNpc047(NPCHAR *npc) void ActNpc047(NPCHAR *npc)
{ {
switch ( npc->act_no ) switch (npc->act_no)
{ {
case 0: case 0:
npc->ani_no = 0; npc->ani_no = 0;
@ -802,7 +802,7 @@ void ActNpc047(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Omega projectiles // Omega projectiles
void ActNpc048(NPCHAR *npc) void ActNpc048(NPCHAR *npc)
{ {
if (npc->flag & 1 && npc->xm < 0) if (npc->flag & 1 && npc->xm < 0)
@ -865,7 +865,7 @@ void ActNpc048(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Skullhead // Skullhead
void ActNpc049(NPCHAR *npc) void ActNpc049(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -1011,7 +1011,7 @@ void ActNpc049(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Skeleton projectile // Skeleton projectile
void ActNpc050(NPCHAR *npc) void ActNpc050(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -1112,7 +1112,7 @@ void ActNpc050(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Crow & Skullhead // Crow & Skullhead
void ActNpc051(NPCHAR *npc) void ActNpc051(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -1261,7 +1261,7 @@ void ActNpc051(NPCHAR *npc)
npc->rect = rect_right[npc->ani_no]; npc->rect = rect_right[npc->ani_no];
} }
//Bliue robot (sitting) // Blue robot (sitting)
void ActNpc052(NPCHAR *npc) void ActNpc052(NPCHAR *npc)
{ {
RECT rect = {240, 96, 256, 112}; RECT rect = {240, 96, 256, 112};
@ -1269,7 +1269,7 @@ void ActNpc052(NPCHAR *npc)
npc->rect = rect; npc->rect = rect;
} }
//Skullstep leg // Skullstep leg
void ActNpc053(NPCHAR *npc) void ActNpc053(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -1339,7 +1339,7 @@ void ActNpc053(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Skullstep // Skullstep
void ActNpc054(NPCHAR *npc) void ActNpc054(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -1446,7 +1446,7 @@ void ActNpc054(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Kazuma // Kazuma
void ActNpc055(NPCHAR *npc) void ActNpc055(NPCHAR *npc)
{ {
RECT rcLeft[6] = { RECT rcLeft[6] = {
@ -1514,7 +1514,7 @@ void ActNpc055(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Beetle (Sand Zone) // Beetle (Sand Zone)
void ActNpc056(NPCHAR *npc) void ActNpc056(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -1630,7 +1630,7 @@ void ActNpc056(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Crow // Crow
void ActNpc057(NPCHAR *npc) void ActNpc057(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -1789,7 +1789,7 @@ void ActNpc057(NPCHAR *npc)
npc->rect = rect_right[npc->ani_no]; npc->rect = rect_right[npc->ani_no];
} }
//Basu (Egg Corridor) // Basu (Egg Corridor)
void ActNpc058(NPCHAR *npc) void ActNpc058(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -1942,7 +1942,7 @@ void ActNpc058(NPCHAR *npc)
} }
} }
//Eye door // Eye door
void ActNpc059(NPCHAR *npc) void ActNpc059(NPCHAR *npc)
{ {
RECT rcLeft[4] = { RECT rcLeft[4] = {

View file

@ -14,7 +14,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Toroko // Toroko
void ActNpc060(NPCHAR *npc) void ActNpc060(NPCHAR *npc)
{ {
RECT rcLeft[8] = { RECT rcLeft[8] = {
@ -161,7 +161,7 @@ void ActNpc060(NPCHAR *npc)
break; break;
case 11: case 11:
if ( npc->act_wait++ && npc->flag & 8 ) if (npc->act_wait++ && npc->flag & 8)
{ {
npc->act_no = 12; npc->act_no = 12;
npc->ani_no = 7; npc->ani_no = 7;
@ -194,7 +194,7 @@ void ActNpc060(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//King // King
void ActNpc061(NPCHAR *npc) void ActNpc061(NPCHAR *npc)
{ {
RECT rcLeft[11] = { RECT rcLeft[11] = {
@ -277,6 +277,7 @@ void ActNpc061(NPCHAR *npc)
npc->act_no = 5; npc->act_no = 5;
break; break;
case 8: case 8:
npc->act_no = 9; npc->act_no = 9;
npc->ani_no = 4; npc->ani_no = 4;
@ -420,7 +421,7 @@ void ActNpc061(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Kazuma at computer // Kazuma at computer
void ActNpc062(NPCHAR *npc) void ActNpc062(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -488,7 +489,7 @@ void ActNpc062(NPCHAR *npc)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
} }
//Toroko with stick // Toroko with stick
void ActNpc063(NPCHAR *npc) void ActNpc063(NPCHAR *npc)
{ {
RECT rcLeft[6] = { RECT rcLeft[6] = {
@ -625,7 +626,7 @@ void ActNpc063(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//First Cave Critter // First Cave Critter
void ActNpc064(NPCHAR *npc) void ActNpc064(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -642,12 +643,12 @@ void ActNpc064(NPCHAR *npc)
switch (npc->act_no) switch (npc->act_no)
{ {
case 0: //Init case 0: // Initialize
npc->y += 0x600; npc->y += 0x600;
npc->act_no = 1; npc->act_no = 1;
// Fallthrough // Fallthrough
case 1: //Waiting case 1: // Waiting
//Look at player // Look at player
if (npc->x > gMC.x) if (npc->x > gMC.x)
npc->direct = 0; npc->direct = 0;
else else
@ -656,7 +657,7 @@ void ActNpc064(NPCHAR *npc)
if (npc->tgt_x < 100) if (npc->tgt_x < 100)
++npc->tgt_x; ++npc->tgt_x;
//Open eyes near player // Open eyes near player
if (npc->act_wait >= 8 && npc->x - 0xE000 < gMC.x && npc->x + 0xE000 > gMC.x && npc->y - 0xA000 < gMC.y && npc->y + 0xA000 > gMC.y) if (npc->act_wait >= 8 && npc->x - 0xE000 < gMC.x && npc->x + 0xE000 > gMC.x && npc->y - 0xA000 < gMC.y && npc->y + 0xA000 > gMC.y)
{ {
npc->ani_no = 1; npc->ani_no = 1;
@ -669,7 +670,7 @@ void ActNpc064(NPCHAR *npc)
npc->ani_no = 0; npc->ani_no = 0;
} }
//Jump if attacked // Jump if attacked
if (npc->shock) if (npc->shock)
{ {
npc->act_no = 2; npc->act_no = 2;
@ -677,7 +678,7 @@ void ActNpc064(NPCHAR *npc)
npc->act_wait = 0; npc->act_wait = 0;
} }
//Jump if player is nearby // Jump if player is nearby
if (npc->act_wait >= 8 && npc->tgt_x >= 100 && npc->x - 0x8000 < gMC.x && npc->x + 0x8000 > gMC.x && npc->y - 0xA000 < gMC.y && npc->y + 0x6000 > gMC.y) if (npc->act_wait >= 8 && npc->tgt_x >= 100 && npc->x - 0x8000 < gMC.x && npc->x + 0x8000 > gMC.x && npc->y - 0xA000 < gMC.y && npc->y + 0x6000 > gMC.y)
{ {
npc->act_no = 2; npc->act_no = 2;
@ -686,18 +687,18 @@ void ActNpc064(NPCHAR *npc)
} }
break; break;
case 2: //Going to jump case 2: // Going to jump
if (++npc->act_wait > 8) if (++npc->act_wait > 8)
{ {
//Set jump state // Set jump state
npc->act_no = 3; npc->act_no = 3;
npc->ani_no = 2; npc->ani_no = 2;
//Jump // Jump
npc->ym = -0x5FF; npc->ym = -0x5FF;
PlaySoundObject(30, 1); PlaySoundObject(30, 1);
//Jump in facing direction // Jump in facing direction
if (npc->direct == 0) if (npc->direct == 0)
npc->xm = -0x100; npc->xm = -0x100;
else else
@ -705,8 +706,8 @@ void ActNpc064(NPCHAR *npc)
} }
break; break;
case 3: //Jumping case 3: // Jumping
//Land // Land
if (npc->flag & 8) if (npc->flag & 8)
{ {
npc->xm = 0; npc->xm = 0;
@ -718,23 +719,23 @@ void ActNpc064(NPCHAR *npc)
break; break;
} }
//Gravity // Gravity
npc->ym += 0x40; npc->ym += 0x40;
if (npc->ym > 0x5FF) if (npc->ym > 0x5FF)
npc->ym = 0x5FF; npc->ym = 0x5FF;
//Move // Move
npc->x += npc->xm; npc->x += npc->xm;
npc->y += npc->ym; npc->y += npc->ym;
//Set framerect // Set framerect
if (npc->direct == 0) if (npc->direct == 0)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
else else
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//First Cave Bat // First Cave Bat
void ActNpc065(NPCHAR *npc) void ActNpc065(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -808,7 +809,7 @@ void ActNpc065(NPCHAR *npc)
npc->rect = rect_right[npc->ani_no]; npc->rect = rect_right[npc->ani_no];
} }
//Misery bubble // Misery bubble
void ActNpc066(NPCHAR *npc) void ActNpc066(NPCHAR *npc)
{ {
RECT rect[4] = { RECT rect[4] = {
@ -889,7 +890,7 @@ void ActNpc066(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Misery (floating) // Misery (floating)
void ActNpc067(NPCHAR *npc) void ActNpc067(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -1071,7 +1072,7 @@ void ActNpc067(NPCHAR *npc)
npc->rect.bottom = ++npc->ani_wait / 2 + npc->rect.bottom - 16; npc->rect.bottom = ++npc->ani_wait / 2 + npc->rect.bottom - 16;
} }
//Balrog (running) // Balrog (running)
void ActNpc068(NPCHAR *npc) void ActNpc068(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -1287,7 +1288,7 @@ void ActNpc068(NPCHAR *npc)
npc->rect = rect_right[npc->ani_no]; npc->rect = rect_right[npc->ani_no];
} }
//Pignon // Pignon
void ActNpc069(NPCHAR *npc) void ActNpc069(NPCHAR *npc)
{ {
RECT rcLeft[6] = { RECT rcLeft[6] = {
@ -1426,7 +1427,7 @@ void ActNpc069(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Sparkle // Sparkle
void ActNpc070(NPCHAR *npc) void ActNpc070(NPCHAR *npc)
{ {
RECT rect[4] = { RECT rect[4] = {
@ -1448,7 +1449,7 @@ void ActNpc070(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Chinfish // Chinfish
void ActNpc071(NPCHAR *npc) void ActNpc071(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -1506,7 +1507,7 @@ void ActNpc071(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Sprinkler // Sprinkler
void ActNpc072(NPCHAR *npc) void ActNpc072(NPCHAR *npc)
{ {
if (npc->direct == 0) if (npc->direct == 0)
@ -1540,7 +1541,7 @@ void ActNpc072(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Water droplet // Water droplet
void ActNpc073(NPCHAR *npc) void ActNpc073(NPCHAR *npc)
{ {
RECT rect[5] = { RECT rect[5] = {
@ -1701,7 +1702,7 @@ void ActNpc075(NPCHAR *npc)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
} }
//Flowers // Flowers
void ActNpc076(NPCHAR *npc) void ActNpc076(NPCHAR *npc)
{ {
npc->rect.left = 16 * npc->code_event; npc->rect.left = 16 * npc->code_event;
@ -1710,7 +1711,7 @@ void ActNpc076(NPCHAR *npc)
npc->rect.bottom = 16; npc->rect.bottom = 16;
} }
//Yamashita // Yamashita
void ActNpc077(NPCHAR *npc) void ActNpc077(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -1766,7 +1767,7 @@ void ActNpc078(NPCHAR *npc)
npc->rect = rc[1]; npc->rect = rc[1];
} }
// Mahin the sex god // Mahin
void ActNpc079(NPCHAR *npc) void ActNpc079(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -1810,7 +1811,7 @@ void ActNpc079(NPCHAR *npc)
break; break;
case 3: case 3:
if (++npc->act_wait > 8 ) if (++npc->act_wait > 8)
{ {
npc->act_no = 2; npc->act_no = 2;
npc->ani_no = 0; npc->ani_no = 0;
@ -1820,7 +1821,7 @@ void ActNpc079(NPCHAR *npc)
} }
npc->ym += 0x40; npc->ym += 0x40;
if ( npc->ym > 0x5FF ) if (npc->ym > 0x5FF)
npc->ym = 0x5FF; npc->ym = 0x5FF;
npc->y += npc->ym; npc->y += npc->ym;

View file

@ -13,7 +13,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Gravekeeper // Gravekeeper
void ActNpc080(NPCHAR *npc) void ActNpc080(NPCHAR *npc)
{ {
RECT rcLeft[7] = { RECT rcLeft[7] = {
@ -172,7 +172,7 @@ void ActNpc080(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Giant pignon // Giant pignon
void ActNpc081(NPCHAR *npc) void ActNpc081(NPCHAR *npc)
{ {
RECT rcLeft[6] = { RECT rcLeft[6] = {
@ -316,7 +316,7 @@ void ActNpc081(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Misery (standing) // Misery (standing)
void ActNpc082(NPCHAR *npc) void ActNpc082(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -520,7 +520,7 @@ void ActNpc082(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Igor (cutscene) // Igor (cutscene)
void ActNpc083(NPCHAR *npc) void ActNpc083(NPCHAR *npc)
{ {
RECT rcLeft[8] = { RECT rcLeft[8] = {
@ -619,7 +619,7 @@ void ActNpc083(NPCHAR *npc)
} }
npc->ym += 0x40; npc->ym += 0x40;
if ( npc->ym > 0x5FF ) if (npc->ym > 0x5FF)
npc->ym = 0x5FF; npc->ym = 0x5FF;
npc->x += npc->xm; npc->x += npc->xm;
@ -631,7 +631,7 @@ void ActNpc083(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Basu projectile (Egg Corridor) // Basu projectile (Egg Corridor)
void ActNpc084(NPCHAR *npc) void ActNpc084(NPCHAR *npc)
{ {
if (npc->flag & 0xFF) if (npc->flag & 0xFF)
@ -1323,7 +1323,7 @@ void ActNpc092(NPCHAR *npc)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
} }
//Chaco // Chaco
void ActNpc093(NPCHAR *npc) void ActNpc093(NPCHAR *npc)
{ {
RECT rcLeft[7] = { RECT rcLeft[7] = {
@ -1420,7 +1420,7 @@ void ActNpc093(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Kulala // Kulala
void ActNpc094(NPCHAR *npc) void ActNpc094(NPCHAR *npc)
{ {
RECT rect[5] = { RECT rect[5] = {
@ -1569,7 +1569,7 @@ void ActNpc094(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Jelly // Jelly
void ActNpc095(NPCHAR *npc) void ActNpc095(NPCHAR *npc)
{ {
RECT rcLeft[4] = { RECT rcLeft[4] = {
@ -1702,7 +1702,7 @@ void ActNpc095(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Fan (left) // Fan (left)
void ActNpc096(NPCHAR *npc) void ActNpc096(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -1714,7 +1714,7 @@ void ActNpc096(NPCHAR *npc)
switch (npc->act_no) switch (npc->act_no)
{ {
case 0: case 0:
if ( npc->direct == 2 ) if (npc->direct == 2)
npc->act_no = 2; npc->act_no = 2;
else else
npc->ani_no = 1; npc->ani_no = 1;
@ -1752,7 +1752,7 @@ void ActNpc096(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Fan (up) // Fan (up)
void ActNpc097(NPCHAR *npc) void ActNpc097(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -1799,7 +1799,7 @@ void ActNpc097(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Fan (right) // Fan (right)
void ActNpc098(NPCHAR *npc) void ActNpc098(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -1849,7 +1849,7 @@ void ActNpc098(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Fan (down) // Fan (down)
void ActNpc099(NPCHAR *npc) void ActNpc099(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {

View file

@ -12,7 +12,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Grate // Grate
void ActNpc100(NPCHAR *npc) void ActNpc100(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -34,7 +34,7 @@ void ActNpc100(NPCHAR *npc)
npc->rect = rc[1]; npc->rect = rc[1];
} }
//Malco computer screen // Malco computer screen
void ActNpc101(NPCHAR *npc) void ActNpc101(NPCHAR *npc)
{ {
RECT rect[3] = { RECT rect[3] = {
@ -55,7 +55,7 @@ void ActNpc101(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Malco computer wave // Malco computer wave
void ActNpc102(NPCHAR *npc) void ActNpc102(NPCHAR *npc)
{ {
RECT rect[4] = { RECT rect[4] = {
@ -83,7 +83,7 @@ void ActNpc102(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Mannan projectile // Mannan projectile
void ActNpc103(NPCHAR *npc) void ActNpc103(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -135,7 +135,7 @@ void ActNpc103(NPCHAR *npc)
PlaySoundObject(46, 1); PlaySoundObject(46, 1);
} }
//Frog // Frog
void ActNpc104(NPCHAR *npc) void ActNpc104(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -299,7 +299,7 @@ void ActNpc104(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//'HEY!' speech bubble (low) // "HEY!" speech bubble (low)
void ActNpc105(NPCHAR *npc) void ActNpc105(NPCHAR *npc)
{ {
RECT rect[2] = { RECT rect[2] = {
@ -316,7 +316,7 @@ void ActNpc105(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//'HEY!' speech bubble (high) // "HEY!" speech bubble (high)
void ActNpc106(NPCHAR *npc) void ActNpc106(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -328,7 +328,7 @@ void ActNpc106(NPCHAR *npc)
} }
} }
//Malco // Malco
void ActNpc107(NPCHAR *npc) void ActNpc107(NPCHAR *npc)
{ {
int i; int i;
@ -494,7 +494,7 @@ void ActNpc107(NPCHAR *npc)
npc->rect = rcPoweron[npc->ani_no]; npc->rect = rcPoweron[npc->ani_no];
} }
//Balfrog projectile // Balfrog projectile
void ActNpc108(NPCHAR *npc) void ActNpc108(NPCHAR *npc)
{ {
if (npc->flag & 0xFF) if (npc->flag & 0xFF)
@ -530,7 +530,7 @@ void ActNpc108(NPCHAR *npc)
} }
} }
//Malco (broken) // Malco (broken)
void ActNpc109(NPCHAR *npc) void ActNpc109(NPCHAR *npc)
{ {
int i; int i;
@ -603,7 +603,7 @@ void ActNpc109(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Puchi // Puchi
void ActNpc110(NPCHAR *npc) void ActNpc110(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -766,7 +766,7 @@ void ActNpc110(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Quote (teleport out) // Quote (teleport out)
void ActNpc111(NPCHAR *npc) void ActNpc111(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -854,7 +854,7 @@ void ActNpc111(NPCHAR *npc)
} }
} }
//Quote (teleport in) // Quote (teleport in)
void ActNpc112(NPCHAR *npc) void ActNpc112(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -925,12 +925,12 @@ void ActNpc112(NPCHAR *npc)
{ {
npc->rect.bottom = npc->rect.top + npc->act_wait / 4; npc->rect.bottom = npc->rect.top + npc->act_wait / 4;
if ( npc->act_wait / 2 % 2 ) if (npc->act_wait / 2 % 2)
++npc->rect.left; ++npc->rect.left;
} }
} }
//Professor Booster // Professor Booster
void ActNpc113(NPCHAR *npc) void ActNpc113(NPCHAR *npc)
{ {
RECT rcLeft[7] = { RECT rcLeft[7] = {
@ -1061,7 +1061,7 @@ void ActNpc113(NPCHAR *npc)
} }
} }
//Press // Press
void ActNpc114(NPCHAR *npc) void ActNpc114(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -1085,6 +1085,7 @@ void ActNpc114(NPCHAR *npc)
npc->ani_no = 1; npc->ani_no = 1;
break; break;
case 10: case 10:
if (++npc->ani_wait > 2) if (++npc->ani_wait > 2)
{ {
@ -1135,7 +1136,7 @@ void ActNpc114(NPCHAR *npc)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
} }
//Ravil // Ravil
void ActNpc115(NPCHAR *npc) void ActNpc115(NPCHAR *npc)
{ {
int i; int i;
@ -1294,7 +1295,7 @@ void ActNpc115(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Red petals // Red petals
void ActNpc116(NPCHAR *npc) void ActNpc116(NPCHAR *npc)
{ {
RECT rc = {272, 184, 320, 200}; RECT rc = {272, 184, 320, 200};
@ -1302,7 +1303,7 @@ void ActNpc116(NPCHAR *npc)
npc->rect = rc; npc->rect = rc;
} }
//Curly // Curly
void ActNpc117(NPCHAR *npc) void ActNpc117(NPCHAR *npc)
{ {
RECT rcLeft[10] = { RECT rcLeft[10] = {
@ -1507,7 +1508,7 @@ void ActNpc117(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Curly (boss) // Curly (boss)
void ActNpc118(NPCHAR *npc) void ActNpc118(NPCHAR *npc)
{ {
RECT rcLeft[9] = { RECT rcLeft[9] = {
@ -1538,7 +1539,7 @@ void ActNpc118(NPCHAR *npc)
if (npc->direct == 0 && npc->x < gMC.x) if (npc->direct == 0 && npc->x < gMC.x)
bUpper = TRUE; bUpper = TRUE;
if ( npc->direct == 2 && npc->x > gMC.x) if (npc->direct == 2 && npc->x > gMC.x)
bUpper = TRUE; bUpper = TRUE;
switch (npc->act_no) switch (npc->act_no)
@ -1708,7 +1709,7 @@ void ActNpc118(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Table and chair // Table and chair
void ActNpc119(NPCHAR *npc) void ActNpc119(NPCHAR *npc)
{ {
RECT rc = {248, 184, 272, 200}; RECT rc = {248, 184, 272, 200};

View file

@ -13,7 +13,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Colon (1) // Colon (1)
void ActNpc120(NPCHAR *npc) void ActNpc120(NPCHAR *npc)
{ {
RECT rect[2] = { RECT rect[2] = {
@ -27,7 +27,7 @@ void ActNpc120(NPCHAR *npc)
npc->rect = rect[1]; npc->rect = rect[1];
} }
//Colon (2) // Colon (2)
void ActNpc121(NPCHAR *npc) void ActNpc121(NPCHAR *npc)
{ {
RECT rect[3] = { RECT rect[3] = {
@ -78,7 +78,7 @@ void ActNpc121(NPCHAR *npc)
} }
} }
//Colon (attacking) // Colon (attacking)
void ActNpc122(NPCHAR *npc) void ActNpc122(NPCHAR *npc)
{ {
RECT rcLeft[10] = { RECT rcLeft[10] = {
@ -255,7 +255,7 @@ void ActNpc122(NPCHAR *npc)
if (npc->xm < -0x1FF) if (npc->xm < -0x1FF)
npc->xm = -0x1FF; npc->xm = -0x1FF;
if (npc->ym > 0x5FF ) if (npc->ym > 0x5FF)
npc->ym = 0x5FF; npc->ym = 0x5FF;
npc->y += npc->ym; npc->y += npc->ym;
@ -267,7 +267,7 @@ void ActNpc122(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Curly boss projectile // Curly boss projectile
void ActNpc123(NPCHAR *npc) void ActNpc123(NPCHAR *npc)
{ {
RECT rect[4] = { RECT rect[4] = {
@ -292,14 +292,17 @@ void ActNpc123(NPCHAR *npc)
npc->xm = -0x1000; npc->xm = -0x1000;
npc->ym = Random(-0x80, 0x80); npc->ym = Random(-0x80, 0x80);
break; break;
case 1: case 1:
npc->ym = -0x1000; npc->ym = -0x1000;
npc->xm = Random(-0x80, 0x80); npc->xm = Random(-0x80, 0x80);
break; break;
case 2: case 2:
npc->xm = 0x1000; npc->xm = 0x1000;
npc->ym = Random(-0x80, 0x80); npc->ym = Random(-0x80, 0x80);
break; break;
case 3: case 3:
npc->ym = 0x1000; npc->ym = 0x1000;
npc->xm = Random(-0x80, 0x80); npc->xm = Random(-0x80, 0x80);
@ -315,14 +318,17 @@ void ActNpc123(NPCHAR *npc)
if (npc->flag & 1) if (npc->flag & 1)
bBreak = TRUE; bBreak = TRUE;
break; break;
case 1: case 1:
if (npc->flag & 2) if (npc->flag & 2)
bBreak = TRUE; bBreak = TRUE;
break; break;
case 2: case 2:
if (npc->flag & 4) if (npc->flag & 4)
bBreak = TRUE; bBreak = TRUE;
break; break;
case 3: case 3:
if (npc->flag & 8) if (npc->flag & 8)
bBreak = TRUE; bBreak = TRUE;
@ -345,7 +351,7 @@ void ActNpc123(NPCHAR *npc)
npc->rect = rect[npc->direct]; npc->rect = rect[npc->direct];
} }
//Sunstone // Sunstone
void ActNpc124(NPCHAR *npc) void ActNpc124(NPCHAR *npc)
{ {
RECT rect[2] = { RECT rect[2] = {
@ -377,12 +383,15 @@ void ActNpc124(NPCHAR *npc)
case 0: case 0:
npc->x -= 0x80; npc->x -= 0x80;
break; break;
case 1: case 1:
npc->y -= 0x80; npc->y -= 0x80;
break; break;
case 2: case 2:
npc->x += 0x80; npc->x += 0x80;
break; break;
case 3: case 3:
npc->y += 0x80; npc->y += 0x80;
break; break;
@ -397,7 +406,7 @@ void ActNpc124(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Hidden item // Hidden item
void ActNpc125(NPCHAR *npc) void ActNpc125(NPCHAR *npc)
{ {
if (npc->life < 990) if (npc->life < 990)
@ -424,7 +433,7 @@ void ActNpc125(NPCHAR *npc)
npc->rect = rc[1]; npc->rect = rc[1];
} }
//Puppy (running) // Puppy (running)
void ActNpc126(NPCHAR *npc) void ActNpc126(NPCHAR *npc)
{ {
RECT rcLeft[6] = { RECT rcLeft[6] = {
@ -556,7 +565,7 @@ void ActNpc126(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Machine gun trail (Level 2) // Machine gun trail (Level 2)
void ActNpc127(NPCHAR *npc) void ActNpc127(NPCHAR *npc)
{ {
RECT rcV[3] = { RECT rcV[3] = {
@ -584,7 +593,7 @@ void ActNpc127(NPCHAR *npc)
npc->rect = rcV[npc->ani_no]; npc->rect = rcV[npc->ani_no];
} }
//Machine gun trail (Level 3) // Machine gun trail (Level 3)
void ActNpc128(NPCHAR *npc) void ActNpc128(NPCHAR *npc)
{ {
RECT rcLeft[5] = { RECT rcLeft[5] = {
@ -643,19 +652,22 @@ void ActNpc128(NPCHAR *npc)
case 0: case 0:
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
break; break;
case 1: case 1:
npc->rect = rcUp[npc->ani_no]; npc->rect = rcUp[npc->ani_no];
break; break;
case 2: case 2:
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
break; break;
case 3: case 3:
npc->rect = rcDown[npc->ani_no]; npc->rect = rcDown[npc->ani_no];
break; break;
} }
} }
//Fireball trail (Level 2 & 3) // Fireball trail (Level 2 & 3)
void ActNpc129(NPCHAR *npc) void ActNpc129(NPCHAR *npc)
{ {
RECT rect[18] = { RECT rect[18] = {
@ -691,7 +703,7 @@ void ActNpc129(NPCHAR *npc)
npc->rect = rect[3 * npc->direct + npc->ani_no]; npc->rect = rect[3 * npc->direct + npc->ani_no];
} }
//Puppy (sitting, wagging tail) // Puppy (sitting, wagging tail)
void ActNpc130(NPCHAR *npc) void ActNpc130(NPCHAR *npc)
{ {
RECT rcLeft[4] = { RECT rcLeft[4] = {
@ -769,7 +781,7 @@ void ActNpc130(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Puppy (sleeping) // Puppy (sleeping)
void ActNpc131(NPCHAR *npc) void ActNpc131(NPCHAR *npc)
{ {
RECT rcLeft[1] = {144, 144, 160, 160}; RECT rcLeft[1] = {144, 144, 160, 160};
@ -787,7 +799,7 @@ void ActNpc131(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Puppy (barking) // Puppy (barking)
void ActNpc132(NPCHAR *npc) void ActNpc132(NPCHAR *npc)
{ {
RECT rcLeft[5] = { RECT rcLeft[5] = {
@ -932,7 +944,7 @@ void ActNpc132(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Jenka // Jenka
void ActNpc133(NPCHAR *npc) void ActNpc133(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -978,7 +990,7 @@ void ActNpc133(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Armadillo // Armadillo
void ActNpc134(NPCHAR *npc) void ActNpc134(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -1067,7 +1079,7 @@ void ActNpc134(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Skeleton // Skeleton
void ActNpc135(NPCHAR *npc) void ActNpc135(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -1087,7 +1099,7 @@ void ActNpc135(NPCHAR *npc)
if (gMC.x < npc->x - 0x2C000 || gMC.x > npc->x + 0x2C000 || gMC.y < npc->y - 0x14000 || gMC.y > npc->y + 0x8000) if (gMC.x < npc->x - 0x2C000 || gMC.x > npc->x + 0x2C000 || gMC.y < npc->y - 0x14000 || gMC.y > npc->y + 0x8000)
npc->act_no = 0; npc->act_no = 0;
switch ( npc->act_no ) switch (npc->act_no)
{ {
case 0: case 0:
npc->act_no = 1; npc->act_no = 1;
@ -1180,7 +1192,7 @@ void ActNpc135(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Puppy (carried) // Puppy (carried)
void ActNpc136(NPCHAR *npc) void ActNpc136(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -1243,7 +1255,7 @@ void ActNpc136(NPCHAR *npc)
++npc->rect.top; ++npc->rect.top;
} }
//Large door (frame) // Large door (frame)
void ActNpc137(NPCHAR *npc) void ActNpc137(NPCHAR *npc)
{ {
RECT rc = {96, 136, 128, 188}; RECT rc = {96, 136, 128, 188};
@ -1251,7 +1263,7 @@ void ActNpc137(NPCHAR *npc)
npc->rect = rc; npc->rect = rc;
} }
//Large door (door) // Large door (door)
void ActNpc138(NPCHAR *npc) void ActNpc138(NPCHAR *npc)
{ {
RECT rcLeft = {96, 112, 112, 136}; RECT rcLeft = {96, 112, 112, 136};
@ -1305,7 +1317,7 @@ void ActNpc138(NPCHAR *npc)
} }
} }
//Doctor // Doctor
void ActNpc139(NPCHAR *npc) void ActNpc139(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {

View file

@ -14,7 +14,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Toroko (frenzied) // Toroko (frenzied)
void ActNpc140(NPCHAR *npc) void ActNpc140(NPCHAR *npc)
{ {
int i; int i;
@ -553,7 +553,7 @@ void ActNpc143(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Toroko (teleporting in) // Toroko (teleporting in)
void ActNpc144(NPCHAR *npc) void ActNpc144(NPCHAR *npc)
{ {
RECT rcLeft[5] = { RECT rcLeft[5] = {
@ -660,7 +660,7 @@ void ActNpc144(NPCHAR *npc)
} }
} }
//King's sword // King's sword
void ActNpc145(NPCHAR *npc) void ActNpc145(NPCHAR *npc)
{ {
RECT rcLeft[1] = {96, 32, 112, 48}; RECT rcLeft[1] = {96, 32, 112, 48};
@ -700,7 +700,7 @@ void ActNpc145(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Lightning // Lightning
void ActNpc146(NPCHAR *npc) void ActNpc146(NPCHAR *npc)
{ {
RECT rect[5] = { RECT rect[5] = {
@ -750,7 +750,7 @@ void ActNpc146(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Critter (purple) // Critter (purple)
void ActNpc147(NPCHAR *npc) void ActNpc147(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -934,7 +934,7 @@ void ActNpc147(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Purple Critter's projectile // Purple Critter's projectile
void ActNpc148(NPCHAR *npc) void ActNpc148(NPCHAR *npc)
{ {
if (npc->flag & 0xFF) if (npc->flag & 0xFF)
@ -963,7 +963,7 @@ void ActNpc148(NPCHAR *npc)
} }
} }
//Moving block (horizontal) // Moving block (horizontal)
void ActNpc149(NPCHAR *npc) void ActNpc149(NPCHAR *npc)
{ {
int i; int i;
@ -1087,7 +1087,7 @@ void ActNpc149(NPCHAR *npc)
npc->rect = rect; npc->rect = rect;
} }
//Quote // Quote
void ActNpc150(NPCHAR *npc) void ActNpc150(NPCHAR *npc)
{ {
int i; int i;
@ -1271,7 +1271,7 @@ void ActNpc150(NPCHAR *npc)
} }
} }
//Blue robot (standing) // Blue robot (standing)
void ActNpc151(NPCHAR *npc) void ActNpc151(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -1318,7 +1318,7 @@ void ActNpc151(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Shutter stuck // Shutter stuck
void ActNpc152(NPCHAR *npc) void ActNpc152(NPCHAR *npc)
{ {
RECT rc = {0, 0, 0, 0}; RECT rc = {0, 0, 0, 0};
@ -1384,7 +1384,7 @@ static const RECT grcKitR[21] = {
{96, 72, 120, 96} {96, 72, 120, 96}
}; };
//Gaudi // Gaudi
void ActNpc153(NPCHAR *npc) void ActNpc153(NPCHAR *npc)
{ {
if (npc->x > gMC.x + (WINDOW_WIDTH * 0x200) || npc->x < gMC.x - (WINDOW_WIDTH * 0x200) || npc->y > gMC.y + (WINDOW_HEIGHT * 0x200) || npc->y < gMC.y - (WINDOW_HEIGHT * 0x200)) if (npc->x > gMC.x + (WINDOW_WIDTH * 0x200) || npc->x < gMC.x - (WINDOW_WIDTH * 0x200) || npc->y > gMC.y + (WINDOW_HEIGHT * 0x200) || npc->y < gMC.y - (WINDOW_HEIGHT * 0x200))
@ -1420,7 +1420,7 @@ void ActNpc153(NPCHAR *npc)
break; break;
case 2: case 2:
if ( ++npc->act_wait > 20 ) if (++npc->act_wait > 20)
{ {
npc->act_no = 1; npc->act_no = 1;
npc->ani_no = 0; npc->ani_no = 0;
@ -1544,7 +1544,7 @@ void ActNpc153(NPCHAR *npc)
} }
} }
//Gaudi (dead) // Gaudi (dead)
void ActNpc154(NPCHAR *npc) void ActNpc154(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -1607,7 +1607,7 @@ void ActNpc154(NPCHAR *npc)
npc->rect = grcKitR[npc->ani_no]; npc->rect = grcKitR[npc->ani_no];
} }
//Gaudi (flying) // Gaudi (flying)
void ActNpc155(NPCHAR *npc) void ActNpc155(NPCHAR *npc)
{ {
if (npc->x > gMC.x + (WINDOW_WIDTH * 0x200) || npc->x < gMC.x - (WINDOW_WIDTH * 0x200) || npc->y > gMC.y + (WINDOW_HEIGHT * 0x200) || npc->y < gMC.y - (WINDOW_HEIGHT * 0x200)) if (npc->x > gMC.x + (WINDOW_WIDTH * 0x200) || npc->x < gMC.x - (WINDOW_WIDTH * 0x200) || npc->y > gMC.y + (WINDOW_HEIGHT * 0x200) || npc->y < gMC.y - (WINDOW_HEIGHT * 0x200))
@ -1712,7 +1712,7 @@ void ActNpc155(NPCHAR *npc)
} }
} }
//Gaudi projectile // Gaudi projectile
void ActNpc156(NPCHAR *npc) void ActNpc156(NPCHAR *npc)
{ {
if (npc->flag & 0xFF) if (npc->flag & 0xFF)
@ -1742,7 +1742,7 @@ void ActNpc156(NPCHAR *npc)
} }
} }
//Moving block (vertical) // Moving block (vertical)
void ActNpc157(NPCHAR *npc) void ActNpc157(NPCHAR *npc)
{ {
int i; int i;
@ -1865,7 +1865,7 @@ void ActNpc157(NPCHAR *npc)
npc->rect = rect; npc->rect = rect;
} }
//Fish Missile // Fish Missile
void ActNpc158(NPCHAR *npc) void ActNpc158(NPCHAR *npc)
{ {
RECT rect[8] = { RECT rect[8] = {
@ -1889,12 +1889,15 @@ void ActNpc158(NPCHAR *npc)
case 0: case 0:
npc->count1 = 0xA0; npc->count1 = 0xA0;
break; break;
case 1: case 1:
npc->count1 = 0xE0; npc->count1 = 0xE0;
break; break;
case 2: case 2:
npc->count1 = 0x20; npc->count1 = 0x20;
break; break;
case 3: case 3:
npc->count1 = 0x60; npc->count1 = 0x60;
break; break;
@ -1944,7 +1947,7 @@ void ActNpc158(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Monster X (defeated) // Monster X (defeated)
void ActNpc159(NPCHAR *npc) void ActNpc159(NPCHAR *npc)
{ {
RECT rect = {144, 128, 192, 200}; RECT rect = {144, 128, 192, 200};

View file

@ -14,7 +14,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Puu Black // Puu Black
void ActNpc160(NPCHAR *npc) void ActNpc160(NPCHAR *npc)
{ {
int i; int i;
@ -137,18 +137,23 @@ void ActNpc160(NPCHAR *npc)
case 1: case 1:
npc->ani_no = 3; npc->ani_no = 3;
break; break;
case 2: case 2:
npc->ani_no = 3; npc->ani_no = 3;
break; break;
case 3: case 3:
npc->ani_no = 2; npc->ani_no = 2;
break; break;
case 4: case 4:
npc->ani_no = 0; npc->ani_no = 0;
break; break;
case 5: case 5:
npc->ani_no = 3; npc->ani_no = 3;
break; break;
case 6: case 6:
npc->ani_no = 3; npc->ani_no = 3;
break; break;
@ -174,7 +179,7 @@ void ActNpc160(NPCHAR *npc)
npc->rect = rect_right[npc->ani_no]; npc->rect = rect_right[npc->ani_no];
} }
//Puu Black projectile // Puu Black projectile
void ActNpc161(NPCHAR *npc) void ActNpc161(NPCHAR *npc)
{ {
npc->exp = 0; npc->exp = 0;
@ -227,7 +232,7 @@ void ActNpc161(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Puu Black (dead) // Puu Black (dead)
void ActNpc162(NPCHAR *npc) void ActNpc162(NPCHAR *npc)
{ {
int i; int i;
@ -316,7 +321,7 @@ void ActNpc162(NPCHAR *npc)
gSuperYpos = -0x7D000; gSuperYpos = -0x7D000;
} }
//Dr Gero // Dr Gero
void ActNpc163(NPCHAR *npc) void ActNpc163(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -362,7 +367,7 @@ void ActNpc163(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Nurse Hasumi // Nurse Hasumi
void ActNpc164(NPCHAR *npc) void ActNpc164(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -408,7 +413,7 @@ void ActNpc164(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Curly (collapsed) // Curly (collapsed)
void ActNpc165(NPCHAR *npc) void ActNpc165(NPCHAR *npc)
{ {
RECT rcRight[2] = { RECT rcRight[2] = {
@ -439,7 +444,7 @@ void ActNpc165(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Chaba // Chaba
void ActNpc166(NPCHAR *npc) void ActNpc166(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -465,7 +470,7 @@ void ActNpc166(NPCHAR *npc)
break; break;
case 2: case 2:
if (++npc->act_wait > 8 ) if (++npc->act_wait > 8)
{ {
npc->act_no = 1; npc->act_no = 1;
npc->ani_no = 0; npc->ani_no = 0;
@ -477,7 +482,7 @@ void ActNpc166(NPCHAR *npc)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
} }
//Professor Booster (falling) // Professor Booster (falling)
void ActNpc167(NPCHAR *npc) void ActNpc167(NPCHAR *npc)
{ {
RECT rect[3] = { RECT rect[3] = {
@ -492,6 +497,7 @@ void ActNpc167(NPCHAR *npc)
npc->act_no = 1; npc->act_no = 1;
npc->ani_no = 1; npc->ani_no = 1;
break; break;
case 10: case 10:
npc->ani_no = 0; npc->ani_no = 0;
@ -501,6 +507,7 @@ void ActNpc167(NPCHAR *npc)
npc->y += npc->ym; npc->y += npc->ym;
break; break;
case 20: case 20:
npc->act_no = 21; npc->act_no = 21;
npc->act_wait = 0; npc->act_wait = 0;
@ -525,7 +532,7 @@ void ActNpc167(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Boulder // Boulder
void ActNpc168(NPCHAR *npc) void ActNpc168(NPCHAR *npc)
{ {
RECT rect = {264, 56, 320, 96}; RECT rect = {264, 56, 320, 96};
@ -579,7 +586,7 @@ void ActNpc168(NPCHAR *npc)
npc->rect = rect; npc->rect = rect;
} }
//Balrog (missile) // Balrog (missile)
void ActNpc169(NPCHAR *npc) void ActNpc169(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -827,7 +834,7 @@ void ActNpc169(NPCHAR *npc)
npc->rect = rect_right[npc->ani_no]; npc->rect = rect_right[npc->ani_no];
} }
//Balrog missile // Balrog missile
void ActNpc170(NPCHAR *npc) void ActNpc170(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -917,7 +924,7 @@ void ActNpc170(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Fire Whirrr // Fire Whirrr
void ActNpc171(NPCHAR *npc) void ActNpc171(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -1004,7 +1011,7 @@ void ActNpc171(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Fire Whirr projectile // Fire Whirr projectile
void ActNpc172(NPCHAR *npc) void ActNpc172(NPCHAR *npc)
{ {
RECT rect[3] = { RECT rect[3] = {
@ -1046,7 +1053,7 @@ void ActNpc172(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Gaudi (armoured) // Gaudi (armoured)
void ActNpc173(NPCHAR *npc) void ActNpc173(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -1213,7 +1220,7 @@ void ActNpc173(NPCHAR *npc)
} }
} }
//Armoured-Gaudi projectile // Armoured-Gaudi projectile
void ActNpc174(NPCHAR *npc) void ActNpc174(NPCHAR *npc)
{ {
BOOL bHit; BOOL bHit;
@ -1297,7 +1304,7 @@ void ActNpc174(NPCHAR *npc)
npc->rect = rect_left[npc->ani_no]; npc->rect = rect_left[npc->ani_no];
} }
//Gaudi egg // Gaudi egg
void ActNpc175(NPCHAR *npc) void ActNpc175(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -1345,7 +1352,7 @@ void ActNpc175(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//BuyoBuyo Base // BuyoBuyo Base
void ActNpc176(NPCHAR *npc) void ActNpc176(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -1442,7 +1449,7 @@ void ActNpc176(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//BuyoBuyo // BuyoBuyo
void ActNpc177(NPCHAR *npc) void ActNpc177(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -1537,7 +1544,7 @@ void ActNpc177(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Core blade projectile // Core blade projectile
void ActNpc178(NPCHAR *npc) void ActNpc178(NPCHAR *npc)
{ {
if (npc->flag & 0xFF) if (npc->flag & 0xFF)
@ -1581,7 +1588,7 @@ void ActNpc178(NPCHAR *npc)
} }
} }
//Core wisp projectile // Core wisp projectile
void ActNpc179(NPCHAR *npc) void ActNpc179(NPCHAR *npc)
{ {
if (npc->flag & 0xFF) if (npc->flag & 0xFF)

View file

@ -16,7 +16,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Curly AI // Curly AI
void ActNpc180(NPCHAR *npc) void ActNpc180(NPCHAR *npc)
{ {
RECT rcLeft[11] = { RECT rcLeft[11] = {
@ -206,7 +206,7 @@ void ActNpc180(NPCHAR *npc)
int xx = npc->x - npc->tgt_x; int xx = npc->x - npc->tgt_x;
int yy = npc->y - npc->tgt_y; int 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)
@ -219,7 +219,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 + 0x400 < yy)
npc->ani_no = 6; npc->ani_no = 6;
else else
npc->ani_no = 1; npc->ani_no = 1;
@ -312,7 +312,7 @@ void ActNpc180(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Curly AI Machine Gun // Curly AI Machine Gun
void ActNpc181(NPCHAR *npc) void ActNpc181(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -419,7 +419,7 @@ void ActNpc181(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Curly AI Polar Star // Curly AI Polar Star
void ActNpc182(NPCHAR *npc) void ActNpc182(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -526,7 +526,7 @@ void ActNpc182(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Curly Air Tank Bubble // Curly Air Tank Bubble
void ActNpc183(NPCHAR *npc) void ActNpc183(NPCHAR *npc)
{ {
RECT rect[2] = { RECT rect[2] = {
@ -564,7 +564,7 @@ void ActNpc183(NPCHAR *npc)
npc->rect.right = 0; npc->rect.right = 0;
} }
//Shutter Big // Shutter Big
void ActNpc184(NPCHAR *npc) void ActNpc184(NPCHAR *npc)
{ {
RECT rc[4] = { RECT rc[4] = {
@ -594,12 +594,15 @@ void ActNpc184(NPCHAR *npc)
case 0: case 0:
npc->x -= 0x80; npc->x -= 0x80;
break; break;
case 1: case 1:
npc->y -= 0x80; npc->y -= 0x80;
break; break;
case 2: case 2:
npc->x += 0x80; npc->x += 0x80;
break; break;
case 3: case 3:
npc->y += 0x80; npc->y += 0x80;
break; break;
@ -631,7 +634,7 @@ void ActNpc184(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Shutter Small // Shutter Small
void ActNpc185(NPCHAR *npc) void ActNpc185(NPCHAR *npc)
{ {
RECT rc = {96, 64, 112, 96}; RECT rc = {96, 64, 112, 96};
@ -642,30 +645,35 @@ void ActNpc185(NPCHAR *npc)
npc->act_no = 1; npc->act_no = 1;
npc->y += 0x1000; npc->y += 0x1000;
break; break;
case 10: case 10:
npc->act_no = 11; npc->act_no = 11;
npc->ani_no = 1; npc->ani_no = 1;
npc->act_wait = 0; npc->act_wait = 0;
npc->bits |= npc_ignoreSolid; npc->bits |= npc_ignoreSolid;
//Fallthrough // Fallthrough
case 11: case 11:
switch (npc->direct) switch (npc->direct)
{ {
case 0: case 0:
npc->x -= 0x80; npc->x -= 0x80;
break; break;
case 1: case 1:
npc->y -= 0x80; npc->y -= 0x80;
break; break;
case 2: case 2:
npc->x += 0x80; npc->x += 0x80;
break; break;
case 3: case 3:
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 -= 0x3000;
npc->act_no = 1; npc->act_no = 1;
@ -675,7 +683,7 @@ void ActNpc185(NPCHAR *npc)
npc->rect = rc; npc->rect = rc;
} }
//Lift block // Lift block
void ActNpc186(NPCHAR *npc) void ActNpc186(NPCHAR *npc)
{ {
RECT rc[4] = { RECT rc[4] = {
@ -689,27 +697,31 @@ void ActNpc186(NPCHAR *npc)
{ {
case 0: case 0:
npc->act_no = 1; npc->act_no = 1;
//Fallthrough // Fallthrough
case 1: case 1:
break; break;
case 10: case 10:
npc->act_no = 11; npc->act_no = 11;
npc->ani_no = 1; npc->ani_no = 1;
npc->act_wait = 0; npc->act_wait = 0;
npc->bits |= 8; npc->bits |= 8;
//Fallthrough // Fallthrough
case 11: case 11:
switch (npc->direct) switch (npc->direct)
{ {
case 0: case 0:
npc->x -= 0x80; npc->x -= 0x80;
break; break;
case 1: case 1:
npc->y -= 0x80; npc->y -= 0x80;
break; break;
case 2: case 2:
npc->x += 0x80; npc->x += 0x80;
break; break;
case 3: case 3:
npc->y += 0x80; npc->y += 0x80;
break; break;
@ -730,7 +742,7 @@ void ActNpc186(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Fuzz Core // Fuzz Core
void ActNpc187(NPCHAR *npc) void ActNpc187(NPCHAR *npc)
{ {
int i; int i;
@ -805,7 +817,7 @@ void ActNpc187(NPCHAR *npc)
npc->rect = rect_right[npc->ani_no]; npc->rect = rect_right[npc->ani_no];
} }
//Fuzz // Fuzz
void ActNpc188(NPCHAR *npc) void ActNpc188(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -889,7 +901,7 @@ void ActNpc188(NPCHAR *npc)
npc->rect = rect_right[npc->ani_no]; npc->rect = rect_right[npc->ani_no];
} }
//Unused homing flame object (possibly related to the Core?) // Unused homing flame object (possibly related to the Core?)
void ActNpc189(NPCHAR *npc) void ActNpc189(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -955,7 +967,7 @@ void ActNpc189(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Broken robot // Broken robot
void ActNpc190(NPCHAR *npc) void ActNpc190(NPCHAR *npc)
{ {
RECT rect[2] = { RECT rect[2] = {
@ -968,12 +980,14 @@ void ActNpc190(NPCHAR *npc)
case 0: case 0:
npc->ani_no = 0; npc->ani_no = 0;
break; break;
case 10: case 10:
PlaySoundObject(72, 1); PlaySoundObject(72, 1);
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)
SetNpChar(4, npc->x, npc->y + (Random(-8, 8) << 9), Random(-8, -2) << 9, Random(-3, 3) << 9, 0, 0, 0x100); SetNpChar(4, npc->x, npc->y + (Random(-8, 8) << 9), Random(-8, -2) << 9, Random(-3, 3) << 9, 0, 0, 0x100);
npc->cond = 0; npc->cond = 0;
break; break;
case 20: case 20:
if (++npc->ani_wait > 10) if (++npc->ani_wait > 10)
{ {
@ -988,16 +1002,16 @@ void ActNpc190(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Water level // Water level
void ActNpc191(NPCHAR *npc) void ActNpc191(NPCHAR *npc)
{ {
switch ( npc->act_no ) switch (npc->act_no)
{ {
case 0: case 0:
npc->act_no = 10; npc->act_no = 10;
npc->tgt_y = npc->y; npc->tgt_y = npc->y;
npc->ym = 0x200; npc->ym = 0x200;
//Fallthrough // Fallthrough
case 10: case 10:
if (npc->y < npc->tgt_y) if (npc->y < npc->tgt_y)
npc->ym += 4; npc->ym += 4;
@ -1011,10 +1025,11 @@ void ActNpc191(NPCHAR *npc)
npc->y += npc->ym; npc->y += npc->ym;
break; break;
case 20: case 20:
npc->act_no = 21; npc->act_no = 21;
npc->act_wait = 0; npc->act_wait = 0;
//Fallthrough // Fallthrough
case 21: case 21:
if (npc->y < npc->tgt_y) if (npc->y < npc->tgt_y)
npc->ym += 4; npc->ym += 4;
@ -1073,10 +1088,10 @@ void ActNpc191(NPCHAR *npc)
npc->rect.bottom = 0; npc->rect.bottom = 0;
} }
//Scooter // Scooter
void ActNpc192(NPCHAR *npc) void ActNpc192(NPCHAR *npc)
{ {
switch ( npc->act_no ) switch (npc->act_no)
{ {
case 0: case 0:
npc->act_no = 1; npc->act_no = 1;
@ -1176,7 +1191,7 @@ void ActNpc192(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Scooter (broken) // Scooter (broken)
void ActNpc193(NPCHAR *npc) void ActNpc193(NPCHAR *npc)
{ {
RECT rc = {256, 96, 320, 112}; RECT rc = {256, 96, 320, 112};
@ -1193,7 +1208,7 @@ void ActNpc193(NPCHAR *npc)
npc->rect = rc; npc->rect = rc;
} }
//Blue robot (broken) // Blue robot (broken)
void ActNpc194(NPCHAR *npc) void ActNpc194(NPCHAR *npc)
{ {
RECT rc = {192, 120, 224, 128}; RECT rc = {192, 120, 224, 128};
@ -1207,14 +1222,14 @@ void ActNpc194(NPCHAR *npc)
npc->rect = rc; npc->rect = rc;
} }
//Grate // Grate
void ActNpc195(NPCHAR *npc) void ActNpc195(NPCHAR *npc)
{ {
RECT rc = {112, 64, 128, 80}; RECT rc = {112, 64, 128, 80};
npc->rect = rc; npc->rect = rc;
} }
//Ironhead motion wall // Ironhead motion wall
void ActNpc196(NPCHAR *npc) void ActNpc196(NPCHAR *npc)
{ {
RECT rcLeft = {112, 64, 144, 80}; RECT rcLeft = {112, 64, 144, 80};
@ -1231,7 +1246,7 @@ void ActNpc196(NPCHAR *npc)
npc->rect = rcRight; npc->rect = rcRight;
} }
//Porcupine Fish // Porcupine Fish
void ActNpc197(NPCHAR *npc) void ActNpc197(NPCHAR *npc)
{ {
RECT rc[4] = { RECT rc[4] = {
@ -1301,7 +1316,7 @@ void ActNpc197(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Ironhead projectile // Ironhead projectile
void ActNpc198(NPCHAR *npc) void ActNpc198(NPCHAR *npc)
{ {
RECT rcRight[3] = { RECT rcRight[3] = {
@ -1349,7 +1364,7 @@ void ActNpc198(NPCHAR *npc)
PlaySoundObject(46, 1); PlaySoundObject(46, 1);
} }
//Water/wind particles // Water/wind particles
void ActNpc199(NPCHAR *npc) void ActNpc199(NPCHAR *npc)
{ {
RECT rect[5] = { RECT rect[5] = {
@ -1371,12 +1386,15 @@ void ActNpc199(NPCHAR *npc)
case 0: case 0:
npc->xm = -1; npc->xm = -1;
break; break;
case 1: case 1:
npc->ym = -1; npc->ym = -1;
break; break;
case 2: case 2:
npc->xm = 1; npc->xm = 1;
break; break;
case 3: case 3:
npc->ym = 1; npc->ym = 1;
break; break;

View file

@ -12,7 +12,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Dragon Zombie // Dragon Zombie
void ActNpc200(NPCHAR *npc) void ActNpc200(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -140,7 +140,7 @@ void ActNpc200(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Dragon Zombie (dead) // Dragon Zombie (dead)
void ActNpc201(NPCHAR *npc) void ActNpc201(NPCHAR *npc)
{ {
RECT rcLeft[1] = {200, 0, 240, 40}; RECT rcLeft[1] = {200, 0, 240, 40};
@ -152,7 +152,7 @@ void ActNpc201(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Dragon Zombie projectile // Dragon Zombie projectile
void ActNpc202(NPCHAR *npc) void ActNpc202(NPCHAR *npc)
{ {
if (npc->flag & 0xFF) if (npc->flag & 0xFF)
@ -176,7 +176,7 @@ void ActNpc202(NPCHAR *npc)
++npc->ani_no; ++npc->ani_no;
} }
if ( npc->ani_no > 2 ) if (npc->ani_no > 2)
npc->ani_no = 0; npc->ani_no = 0;
npc->rect = rect_left[npc->ani_no]; npc->rect = rect_left[npc->ani_no];
@ -188,7 +188,7 @@ void ActNpc202(NPCHAR *npc)
} }
} }
//Critter (destroyed Egg Corridor) // Critter (destroyed Egg Corridor)
void ActNpc203(NPCHAR *npc) void ActNpc203(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -289,7 +289,7 @@ void ActNpc203(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Falling spike (small) // Falling spike (small)
void ActNpc204(NPCHAR *npc) void ActNpc204(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -345,7 +345,7 @@ void ActNpc204(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Falling spike (large) // Falling spike (large)
void ActNpc205(NPCHAR *npc) void ActNpc205(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -428,7 +428,7 @@ void ActNpc205(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Counter Bomb // Counter Bomb
void ActNpc206(NPCHAR *npc) void ActNpc206(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -538,7 +538,7 @@ void ActNpc206(NPCHAR *npc)
npc->rect = rect_left[npc->ani_no]; npc->rect = rect_left[npc->ani_no];
} }
//Counter Bomb's countdown // Counter Bomb's countdown
void ActNpc207(NPCHAR *npc) void ActNpc207(NPCHAR *npc)
{ {
RECT rc[5] = { RECT rc[5] = {
@ -580,7 +580,7 @@ void ActNpc207(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Basu (destroyed Egg Corridor) // Basu (destroyed Egg Corridor)
void ActNpc208(NPCHAR *npc) void ActNpc208(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -732,7 +732,7 @@ void ActNpc208(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Basu projectile (destroyed Egg Corridor) // Basu projectile (destroyed Egg Corridor)
void ActNpc209(NPCHAR *npc) void ActNpc209(NPCHAR *npc)
{ {
if (npc->flag & 0xFF) if (npc->flag & 0xFF)
@ -769,7 +769,7 @@ void ActNpc209(NPCHAR *npc)
} }
} }
//Beetle (destroyed Egg Corridor) // Beetle (destroyed Egg Corridor)
void ActNpc210(NPCHAR *npc) void ActNpc210(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -872,7 +872,7 @@ void ActNpc210(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Spikes (small) // Spikes (small)
void ActNpc211(NPCHAR *npc) void ActNpc211(NPCHAR *npc)
{ {
RECT rects[4] = { RECT rects[4] = {
@ -885,7 +885,7 @@ void ActNpc211(NPCHAR *npc)
npc->rect = rects[npc->code_event]; npc->rect = rects[npc->code_event];
} }
//Sky Dragon // Sky Dragon
void ActNpc212(NPCHAR *npc) void ActNpc212(NPCHAR *npc)
{ {
RECT rcRight[4] = { RECT rcRight[4] = {
@ -996,7 +996,7 @@ void ActNpc212(NPCHAR *npc)
} }
} }
//Night Spirit // Night Spirit
void ActNpc213(NPCHAR *npc) void ActNpc213(NPCHAR *npc)
{ {
RECT rect[10] = { RECT rect[10] = {
@ -1155,14 +1155,14 @@ void ActNpc213(NPCHAR *npc)
else else
npc->y += npc->ym; npc->y += npc->ym;
if ( gMC.y > npc->tgt_y + 0x1E000 || gMC.y < npc->tgt_y - 0x1E000 ) if (gMC.y > npc->tgt_y + 0x1E000 || gMC.y < npc->tgt_y - 0x1E000)
npc->act_no = 40; npc->act_no = 40;
} }
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Night Spirit projectile // Night Spirit projectile
void ActNpc214(NPCHAR *npc) void ActNpc214(NPCHAR *npc)
{ {
RECT rect[3] = { RECT rect[3] = {
@ -1208,7 +1208,7 @@ void ActNpc214(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Sandcroc (Outer Wall) // Sandcroc (Outer Wall)
void ActNpc215(NPCHAR *npc) void ActNpc215(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -1313,7 +1313,7 @@ void ActNpc215(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Debug Cat // Debug Cat
void ActNpc216(NPCHAR *npc) void ActNpc216(NPCHAR *npc)
{ {
RECT rect = {256, 192, 272, 216}; RECT rect = {256, 192, 272, 216};
@ -1321,7 +1321,7 @@ void ActNpc216(NPCHAR *npc)
npc->rect = rect; npc->rect = rect;
} }
//Itoh // Itoh
void ActNpc217(NPCHAR *npc) void ActNpc217(NPCHAR *npc)
{ {
RECT rect[8] = { RECT rect[8] = {
@ -1473,7 +1473,7 @@ void ActNpc218(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Smoke generator // Smoke generator
void ActNpc219(NPCHAR *npc) void ActNpc219(NPCHAR *npc)
{ {
RECT rc = {0, 0, 0, 0}; RECT rc = {0, 0, 0, 0};

View file

@ -12,7 +12,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Shovel Brigade // Shovel Brigade
void ActNpc220(NPCHAR *npc) void ActNpc220(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -58,7 +58,7 @@ void ActNpc220(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Shovel Brigade (walking) // Shovel Brigade (walking)
void ActNpc221(NPCHAR *npc) void ActNpc221(NPCHAR *npc)
{ {
RECT rcLeft[6] = { RECT rcLeft[6] = {
@ -127,7 +127,7 @@ void ActNpc221(NPCHAR *npc)
case 11: case 11:
if (npc->direct == 0 && npc->flag & 1) if (npc->direct == 0 && npc->flag & 1)
npc->direct = 2; npc->direct = 2;
else if ( npc->direct == 2 && npc->flag & 4 ) else if (npc->direct == 2 && npc->flag & 4)
npc->direct = 0; npc->direct = 0;
if (npc->direct == 0) if (npc->direct == 0)
@ -163,7 +163,7 @@ void ActNpc221(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Prison bars // Prison bars
void ActNpc222(NPCHAR *npc) void ActNpc222(NPCHAR *npc)
{ {
RECT rc = {96, 168, 112, 200}; RECT rc = {96, 168, 112, 200};
@ -177,7 +177,7 @@ void ActNpc222(NPCHAR *npc)
npc->rect = rc; npc->rect = rc;
} }
//Momorin // Momorin
void ActNpc223(NPCHAR *npc) void ActNpc223(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -237,7 +237,7 @@ void ActNpc223(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Chie // Chie
void ActNpc224(NPCHAR *npc) void ActNpc224(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -268,7 +268,7 @@ void ActNpc224(NPCHAR *npc)
break; break;
case 2: case 2:
if (++npc->act_wait > 12 ) if (++npc->act_wait > 12)
{ {
npc->act_no = 1; npc->act_no = 1;
npc->ani_no = 0; npc->ani_no = 0;
@ -291,7 +291,7 @@ void ActNpc224(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Megane // Megane
void ActNpc225(NPCHAR *npc) void ActNpc225(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -322,7 +322,7 @@ void ActNpc225(NPCHAR *npc)
break; break;
case 2: case 2:
if (++npc->act_wait > 12 ) if (++npc->act_wait > 12)
{ {
npc->act_no = 1; npc->act_no = 1;
npc->ani_no = 0; npc->ani_no = 0;
@ -337,7 +337,7 @@ void ActNpc225(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Kanpachi // Kanpachi
void ActNpc226(NPCHAR *npc) void ActNpc226(NPCHAR *npc)
{ {
RECT rcRight[7] = { RECT rcRight[7] = {
@ -413,14 +413,14 @@ void ActNpc226(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Bucket // Bucket
void ActNpc227(NPCHAR *npc) void ActNpc227(NPCHAR *npc)
{ {
RECT rc = {208, 32, 224, 48}; RECT rc = {208, 32, 224, 48};
npc->rect = rc; npc->rect = rc;
} }
//Droll (guard) // Droll (guard)
void ActNpc228(NPCHAR *npc) void ActNpc228(NPCHAR *npc)
{ {
RECT rcLeft[4] = { RECT rcLeft[4] = {
@ -517,7 +517,7 @@ void ActNpc228(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Red Flowers (sprouts) // Red Flowers (sprouts)
void ActNpc229(NPCHAR *npc) void ActNpc229(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -539,7 +539,7 @@ void ActNpc229(NPCHAR *npc)
npc->rect = rc[1]; npc->rect = rc[1];
} }
//Red Flowers (blooming) // Red Flowers (blooming)
void ActNpc230(NPCHAR *npc) void ActNpc230(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -562,7 +562,7 @@ void ActNpc230(NPCHAR *npc)
npc->rect = rc[1]; npc->rect = rc[1];
} }
//Rocket // Rocket
void ActNpc231(NPCHAR *npc) void ActNpc231(NPCHAR *npc)
{ {
int i; int i;
@ -674,7 +674,7 @@ void ActNpc231(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Orangebell // Orangebell
void ActNpc232(NPCHAR *npc) void ActNpc232(NPCHAR *npc)
{ {
int i; int i;
@ -744,7 +744,7 @@ void ActNpc232(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Orangebell bat // Orangebell bat
void ActNpc233(NPCHAR *npc) void ActNpc233(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -861,7 +861,7 @@ void ActNpc233(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Red Flowers (picked) // Red Flowers (picked)
void ActNpc234(NPCHAR *npc) void ActNpc234(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -883,7 +883,7 @@ void ActNpc234(NPCHAR *npc)
npc->rect = rc[1]; npc->rect = rc[1];
} }
//Midorin // Midorin
void ActNpc235(NPCHAR *npc) void ActNpc235(NPCHAR *npc)
{ {
RECT rcLeft[4] = { RECT rcLeft[4] = {
@ -989,7 +989,7 @@ void ActNpc235(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Gunfish // Gunfish
void ActNpc236(NPCHAR *npc) void ActNpc236(NPCHAR *npc)
{ {
RECT rcLeft[6] = { RECT rcLeft[6] = {
@ -1123,7 +1123,7 @@ void ActNpc236(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Gunfish projectile // Gunfish projectile
void ActNpc237(NPCHAR *npc) void ActNpc237(NPCHAR *npc)
{ {
int i; int i;
@ -1264,7 +1264,7 @@ void ActNpc238(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Cage bars // Cage bars
void ActNpc239(NPCHAR *npc) void ActNpc239(NPCHAR *npc)
{ {
RECT rcLeft = {192, 48, 256, 80}; RECT rcLeft = {192, 48, 256, 80};

View file

@ -12,7 +12,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Mimiga (jailed) // Mimiga (jailed)
void ActNpc240(NPCHAR *npc) void ActNpc240(NPCHAR *npc)
{ {
RECT rcLeft[6] = { RECT rcLeft[6] = {
@ -117,7 +117,7 @@ void ActNpc240(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Critter (Last Cave) // Critter (Last Cave)
void ActNpc241(NPCHAR *npc) void ActNpc241(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -150,7 +150,7 @@ void ActNpc241(NPCHAR *npc)
} }
else else
{ {
if ( npc->act_wait < 8 ) if (npc->act_wait < 8)
++npc->act_wait; ++npc->act_wait;
npc->ani_no = 0; npc->ani_no = 0;
@ -214,7 +214,7 @@ void ActNpc241(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Bat (Last Cave) // Bat (Last Cave)
void ActNpc242(NPCHAR *npc) void ActNpc242(NPCHAR *npc)
{ {
if (npc->x < 0 || npc->x > gMap.width * 0x10 * 0x200) if (npc->x < 0 || npc->x > gMap.width * 0x10 * 0x200)
@ -292,7 +292,7 @@ void ActNpc242(NPCHAR *npc)
npc->rect = rect_right[npc->ani_no]; npc->rect = rect_right[npc->ani_no];
} }
//Bat generator (Last Cave) // Bat generator (Last Cave)
void ActNpc243(NPCHAR *npc) void ActNpc243(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -316,7 +316,7 @@ void ActNpc243(NPCHAR *npc)
} }
} }
//Lava drop // Lava drop
void ActNpc244(NPCHAR *npc) void ActNpc244(NPCHAR *npc)
{ {
int i; int i;
@ -353,7 +353,7 @@ void ActNpc244(NPCHAR *npc)
} }
} }
//Lava drop generator // Lava drop generator
void ActNpc245(NPCHAR *npc) void ActNpc245(NPCHAR *npc)
{ {
RECT rc[4] = { RECT rc[4] = {
@ -373,7 +373,7 @@ void ActNpc245(NPCHAR *npc)
case 1: case 1:
npc->ani_no = 0; npc->ani_no = 0;
if ( npc->act_wait ) if (npc->act_wait)
{ {
--npc->act_wait; --npc->act_wait;
return; return;
@ -409,7 +409,7 @@ void ActNpc245(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Press (proximity) // Press (proximity)
void ActNpc246(NPCHAR *npc) void ActNpc246(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -498,7 +498,7 @@ void ActNpc246(NPCHAR *npc)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
} }
//Misery (boss) // Misery (boss)
void ActNpc247(NPCHAR *npc) void ActNpc247(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -812,7 +812,7 @@ void ActNpc247(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Boss Misery (vanishing) // Boss Misery (vanishing)
void ActNpc248(NPCHAR *npc) void ActNpc248(NPCHAR *npc)
{ {
if (npc->flag & 0xFF) if (npc->flag & 0xFF)
@ -847,7 +847,7 @@ void ActNpc248(NPCHAR *npc)
} }
} }
//Boss Misery energy shot // Boss Misery energy shot
void ActNpc249(NPCHAR *npc) void ActNpc249(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -870,7 +870,7 @@ void ActNpc249(NPCHAR *npc)
} }
} }
//Boss Misery lightning ball // Boss Misery lightning ball
void ActNpc250(NPCHAR *npc) void ActNpc250(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -947,7 +947,7 @@ void ActNpc250(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Boss Misery lightning // Boss Misery lightning
void ActNpc251(NPCHAR *npc) void ActNpc251(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -978,7 +978,7 @@ void ActNpc251(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Boss Misery bats // Boss Misery bats
void ActNpc252(NPCHAR *npc) void ActNpc252(NPCHAR *npc)
{ {
RECT rcLeft[4] = { RECT rcLeft[4] = {
@ -1010,7 +1010,7 @@ void ActNpc252(NPCHAR *npc)
deg = npc->count1; deg = npc->count1;
if ( npc->act_wait < 192 ) if (npc->act_wait < 192)
++npc->act_wait; ++npc->act_wait;
npc->x = npc->pNpc->x + npc->act_wait * GetCos(deg) / 4; npc->x = npc->pNpc->x + npc->act_wait * GetCos(deg) / 4;
@ -1073,7 +1073,7 @@ void ActNpc252(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//EXP capsule // EXP capsule
void ActNpc253(NPCHAR *npc) void ActNpc253(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -1110,7 +1110,7 @@ void ActNpc253(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Helicopter // Helicopter
void ActNpc254(NPCHAR *npc) void ActNpc254(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -1125,15 +1125,18 @@ void ActNpc254(NPCHAR *npc)
SetNpChar(255, npc->x + 0x2400, npc->y - 0x7200, 0, 0, 0, npc, 0x100); SetNpChar(255, npc->x + 0x2400, npc->y - 0x7200, 0, 0, 0, npc, 0x100);
SetNpChar(255, npc->x - 0x4000, npc->y - 0x6800, 0, 0, 2, npc, 0x100); SetNpChar(255, npc->x - 0x4000, npc->y - 0x6800, 0, 0, 2, npc, 0x100);
break; break;
case 20: case 20:
npc->act_wait = 0; npc->act_wait = 0;
npc->count1 = 60; npc->count1 = 60;
npc->act_no = 21; npc->act_no = 21;
break; break;
case 30: case 30:
npc->act_no = 21; npc->act_no = 21;
SetNpChar(223, npc->x - 0x1600, npc->y - 0x1C00, 0, 0, 0, 0, 0x100); SetNpChar(223, npc->x - 0x1600, npc->y - 0x1C00, 0, 0, 0, 0, 0x100);
break; break;
case 40: case 40:
npc->act_no = 21; npc->act_no = 21;
SetNpChar(223, npc->x - 0x1200, npc->y - 0x1C00, 0, 0, 0, 0, 0x100); SetNpChar(223, npc->x - 0x1200, npc->y - 0x1C00, 0, 0, 0, 0, 0x100);
@ -1148,7 +1151,7 @@ void ActNpc254(NPCHAR *npc)
npc->rect = rc[1]; npc->rect = rc[1];
} }
//Helicopter blades // Helicopter blades
void ActNpc255(NPCHAR *npc) void ActNpc255(NPCHAR *npc)
{ {
RECT rcLeft[4] = { RECT rcLeft[4] = {
@ -1214,7 +1217,7 @@ void ActNpc255(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Doctor (facing away) // Doctor (facing away)
void ActNpc256(NPCHAR *npc) void ActNpc256(NPCHAR *npc)
{ {
RECT rcLeft[6] = { RECT rcLeft[6] = {
@ -1226,7 +1229,7 @@ void ActNpc256(NPCHAR *npc)
{24, 160, 48, 192}, {24, 160, 48, 192},
}; };
switch ( npc->act_no ) switch (npc->act_no)
{ {
case 0: case 0:
gSuperXpos = 0; gSuperXpos = 0;
@ -1305,7 +1308,7 @@ void ActNpc256(NPCHAR *npc)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
} }
//Red crystal // Red crystal
void ActNpc257(NPCHAR *npc) void ActNpc257(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -1368,14 +1371,14 @@ void ActNpc257(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Mimiga (sleeping) // Mimiga (sleeping)
void ActNpc258(NPCHAR *npc) void ActNpc258(NPCHAR *npc)
{ {
RECT rc = {48, 32, 64, 48}; RECT rc = {48, 32, 64, 48};
npc->rect = rc; npc->rect = rc;
} }
//Curly (carried and unconcious) // Curly (carried and unconcious)
void ActNpc259(NPCHAR *npc) void ActNpc259(NPCHAR *npc)
{ {
RECT rcLeft = {224, 96, 240, 112}; RECT rcLeft = {224, 96, 240, 112};

View file

@ -13,7 +13,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Shovel Brigade (caged) // Shovel Brigade (caged)
void ActNpc260(NPCHAR *npc) void ActNpc260(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -75,7 +75,7 @@ void ActNpc260(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Chie (caged) // Chie (caged)
void ActNpc261(NPCHAR *npc) void ActNpc261(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -108,7 +108,7 @@ void ActNpc261(NPCHAR *npc)
break; break;
case 2: case 2:
if (++npc->act_wait > 12 ) if (++npc->act_wait > 12)
{ {
npc->act_no = 1; npc->act_no = 1;
npc->ani_no = 0; npc->ani_no = 0;
@ -128,7 +128,7 @@ void ActNpc261(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Chaco (caged) // Chaco (caged)
void ActNpc262(NPCHAR *npc) void ActNpc262(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -181,7 +181,7 @@ void ActNpc262(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Doctor (boss) // Doctor (boss)
void ActNpc263(NPCHAR *npc) void ActNpc263(NPCHAR *npc)
{ {
int deg; int deg;
@ -354,7 +354,7 @@ void ActNpc263(NPCHAR *npc)
break; break;
case 102: case 102:
if (++npc->act_wait > 40 ) if (++npc->act_wait > 40)
{ {
npc->act_no = 103; npc->act_no = 103;
npc->act_wait = 16; npc->act_wait = 16;
@ -465,7 +465,7 @@ void ActNpc263(NPCHAR *npc)
} }
} }
//Doctor red wave (projectile) // Doctor red wave (projectile)
void ActNpc264(NPCHAR *npc) void ActNpc264(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -513,7 +513,7 @@ void ActNpc264(NPCHAR *npc)
npc->rect = rc; npc->rect = rc;
} }
//Doctor red ball projectile // Doctor red ball projectile
void ActNpc265(NPCHAR *npc) void ActNpc265(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -534,7 +534,7 @@ void ActNpc265(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Doctor red ball projectile (bouncing) // Doctor red ball projectile (bouncing)
void ActNpc266(NPCHAR *npc) void ActNpc266(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -567,7 +567,7 @@ void ActNpc266(NPCHAR *npc)
VanishNpChar(npc); VanishNpChar(npc);
} }
//Muscle Doctor // Muscle Doctor
void ActNpc267(NPCHAR *npc) void ActNpc267(NPCHAR *npc)
{ {
RECT rcLeft[10] = { RECT rcLeft[10] = {
@ -724,18 +724,22 @@ void ActNpc267(NPCHAR *npc)
case 8: case 8:
npc->act_no = 20; npc->act_no = 20;
break; break;
case 2: case 2:
case 7: case 7:
npc->act_no = 100; npc->act_no = 100;
break; break;
case 3: case 3:
case 6: case 6:
npc->act_no = 30; npc->act_no = 30;
break; break;
case 1: case 1:
case 9: case 9:
npc->act_no = 40; npc->act_no = 40;
break; break;
default: default:
npc->act_no = 15; npc->act_no = 15;
npc->act_wait = 0; npc->act_wait = 0;
@ -830,7 +834,7 @@ void ActNpc267(NPCHAR *npc)
PlaySoundObject(39, 1); PlaySoundObject(39, 1);
} }
if ( npc->act_wait > 90 ) if (npc->act_wait > 90)
npc->act_no = 10; npc->act_no = 10;
break; break;
@ -957,12 +961,12 @@ void ActNpc267(NPCHAR *npc)
npc->tgt_x = gMC.x; npc->tgt_x = gMC.x;
npc->tgt_y = gMC.y - 0x4000; npc->tgt_y = gMC.y - 0x4000;
if ( npc->tgt_y < 0x8000 ) if (npc->tgt_y < 0x8000)
npc->tgt_y = 0x8000; npc->tgt_y = 0x8000;
if ( npc->tgt_x < 0x8000 ) if (npc->tgt_x < 0x8000)
npc->tgt_x = 0x8000; npc->tgt_x = 0x8000;
if ( npc->tgt_x > 0x48000 ) if (npc->tgt_x > 0x48000)
npc->tgt_x = 0x48000; npc->tgt_x = 0x48000;
} }
@ -1128,7 +1132,7 @@ void ActNpc267(NPCHAR *npc)
} }
} }
//Igor (enemy) // Igor (enemy)
void ActNpc268(NPCHAR *npc) void ActNpc268(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -1331,7 +1335,7 @@ void ActNpc268(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Red Bat (bouncing) // Red Bat (bouncing)
void ActNpc269(NPCHAR *npc) void ActNpc269(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -1394,7 +1398,7 @@ void ActNpc269(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Doctor's blood (or """"red energy"""") // Doctor's blood (or """"red energy"""")
void ActNpc270(NPCHAR *npc) void ActNpc270(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -1563,7 +1567,7 @@ void ActNpc272(NPCHAR *npc)
} }
} }
//Droll projectile // Droll projectile
void ActNpc273(NPCHAR *npc) void ActNpc273(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -1602,7 +1606,7 @@ void ActNpc273(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Droll // Droll
void ActNpc274(NPCHAR *npc) void ActNpc274(NPCHAR *npc)
{ {
RECT rcLeft[6] = { RECT rcLeft[6] = {
@ -1731,7 +1735,7 @@ void ActNpc274(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Puppy (plantation) // Puppy (plantation)
void ActNpc275(NPCHAR *npc) void ActNpc275(NPCHAR *npc)
{ {
RECT rcRight[4] = { RECT rcRight[4] = {
@ -1790,7 +1794,7 @@ void ActNpc275(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Red Demon // Red Demon
void ActNpc276(NPCHAR *npc) void ActNpc276(NPCHAR *npc)
{ {
RECT rcLeft[9] = { RECT rcLeft[9] = {
@ -1994,7 +1998,7 @@ void ActNpc276(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Red Demon projectile // Red Demon projectile
void ActNpc277(NPCHAR *npc) void ActNpc277(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -2033,7 +2037,7 @@ void ActNpc277(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Little family // Little family
void ActNpc278(NPCHAR *npc) void ActNpc278(NPCHAR *npc)
{ {
RECT rcPapa[2] = { RECT rcPapa[2] = {
@ -2100,7 +2104,7 @@ void ActNpc278(NPCHAR *npc)
case 11: case 11:
if (npc->direct == 0 && (npc->flag & 1)) if (npc->direct == 0 && (npc->flag & 1))
npc->direct = 2; npc->direct = 2;
else if ( npc->direct == 2 && npc->flag & 4 ) else if (npc->direct == 2 && npc->flag & 4)
npc->direct = 0; npc->direct = 0;
if (npc->direct == 0) if (npc->direct == 0)
@ -2147,7 +2151,7 @@ void ActNpc278(NPCHAR *npc)
} }
} }
//Falling block (large) // Falling block (large)
void ActNpc279(NPCHAR *npc) void ActNpc279(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -2165,6 +2169,7 @@ void ActNpc279(NPCHAR *npc)
npc->bits |= 4; npc->bits |= 4;
npc->ani_no = 0; npc->ani_no = 0;
break; break;
case 2: case 2:
npc->act_no = 100; npc->act_no = 100;
npc->bits |= 4; npc->bits |= 4;
@ -2178,6 +2183,7 @@ void ActNpc279(NPCHAR *npc)
npc->hit.top = 0x1000; npc->hit.top = 0x1000;
npc->hit.bottom = 0x1000; npc->hit.bottom = 0x1000;
break; break;
case 1: case 1:
npc->ani_no = 0; npc->ani_no = 0;
npc->act_no = 10; npc->act_no = 10;

View file

@ -12,7 +12,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Sue (being teleported by Misery) // Sue (being teleported by Misery)
void ActNpc280(NPCHAR *npc) void ActNpc280(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -83,7 +83,7 @@ void ActNpc280(NPCHAR *npc)
} }
} }
//Doctor (red energy form) // Doctor (red energy form)
void ActNpc281(NPCHAR *npc) void ActNpc281(NPCHAR *npc)
{ {
RECT rc = {0, 0, 0, 0}; RECT rc = {0, 0, 0, 0};
@ -125,7 +125,7 @@ void ActNpc281(NPCHAR *npc)
npc->rect = rc; npc->rect = rc;
} }
//Mini Undead Core (active) // Mini Undead Core (active)
void ActNpc282(NPCHAR *npc) void ActNpc282(NPCHAR *npc)
{ {
RECT tc[3] = { RECT tc[3] = {
@ -199,7 +199,7 @@ void ActNpc282(NPCHAR *npc)
npc->rect = tc[npc->ani_no]; npc->rect = tc[npc->ani_no];
} }
//Misery (transformed) // Misery (transformed)
void ActNpc283(NPCHAR *npc) void ActNpc283(NPCHAR *npc)
{ {
RECT rcLeft[11] = { RECT rcLeft[11] = {
@ -367,7 +367,7 @@ void ActNpc283(NPCHAR *npc)
if (npc->act_wait % 6 == 1) if (npc->act_wait % 6 == 1)
{ {
if ( npc->count2 == 289 ) if (npc->count2 == 289)
{ {
x = npc->x + (Random(-0x40, 0x40) * 0x200); x = npc->x + (Random(-0x40, 0x40) * 0x200);
y = npc->y + (Random(-0x20, 0x20) * 0x200); y = npc->y + (Random(-0x20, 0x20) * 0x200);
@ -456,12 +456,15 @@ void ActNpc283(NPCHAR *npc)
case 0: case 0:
direct = 0xD8; direct = 0xD8;
break; break;
case 1: case 1:
direct = 0xEC; direct = 0xEC;
break; break;
case 2: case 2:
direct = 0x14; direct = 0x14;
break; break;
case 3: case 3:
direct = 0x28; direct = 0x28;
break; break;
@ -477,12 +480,15 @@ void ActNpc283(NPCHAR *npc)
case 0: case 0:
direct = 0x58; direct = 0x58;
break; break;
case 1: case 1:
direct = 0x6C; direct = 0x6C;
break; break;
case 2: case 2:
direct = 0x94; direct = 0x94;
break; break;
case 3: case 3:
direct = 0xA8; direct = 0xA8;
break; break;
@ -505,12 +511,15 @@ void ActNpc283(NPCHAR *npc)
case 0: case 0:
direct = 0xD8; direct = 0xD8;
break; break;
case 1: case 1:
direct = 0xEC; direct = 0xEC;
break; break;
case 2: case 2:
direct = 0x14; direct = 0x14;
break; break;
case 3: case 3:
direct = 0x28; direct = 0x28;
break; break;
@ -526,12 +535,15 @@ void ActNpc283(NPCHAR *npc)
case 0: case 0:
direct = 0x58; direct = 0x58;
break; break;
case 1: case 1:
direct = 0x6C; direct = 0x6C;
break; break;
case 2: case 2:
direct = 0x94; direct = 0x94;
break; break;
case 3: case 3:
direct = 0xA8; direct = 0xA8;
break; break;
@ -600,7 +612,7 @@ void ActNpc283(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Sue (transformed) // Sue (transformed)
void ActNpc284(NPCHAR *npc) void ActNpc284(NPCHAR *npc)
{ {
RECT rcLeft[13] = { RECT rcLeft[13] = {
@ -735,9 +747,11 @@ void ActNpc284(NPCHAR *npc)
case 3: case 3:
npc->act_no = 34; npc->act_no = 34;
break; break;
case 0: case 0:
npc->act_no = 32; npc->act_no = 32;
break; break;
case 2: case 2:
npc->act_no = 32; npc->act_no = 32;
break; break;
@ -949,7 +963,7 @@ void ActNpc284(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Undead Core spiral projectile // Undead Core spiral projectile
void ActNpc285(NPCHAR *npc) void ActNpc285(NPCHAR *npc)
{ {
RECT rc = {232, 104, 248, 120}; RECT rc = {232, 104, 248, 120};
@ -996,7 +1010,7 @@ void ActNpc285(NPCHAR *npc)
npc->rect = rc; npc->rect = rc;
} }
//Undead Core spiral shot trail // Undead Core spiral shot trail
void ActNpc286(NPCHAR *npc) void ActNpc286(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -1017,7 +1031,7 @@ void ActNpc286(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Orange smoke // Orange smoke
void ActNpc287(NPCHAR *npc) void ActNpc287(NPCHAR *npc)
{ {
RECT rcLeft[7] = { RECT rcLeft[7] = {
@ -1056,7 +1070,7 @@ void ActNpc287(NPCHAR *npc)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
} }
//Undead Core exploding rock // Undead Core exploding rock
void ActNpc288(NPCHAR *npc) void ActNpc288(NPCHAR *npc)
{ {
RECT rc[5] = { RECT rc[5] = {
@ -1145,7 +1159,7 @@ void ActNpc288(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Critter (orange, Misery) // Critter (orange, Misery)
void ActNpc289(NPCHAR *npc) void ActNpc289(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -1255,7 +1269,7 @@ void ActNpc289(NPCHAR *npc)
} }
} }
//Bat (Misery) // Bat (Misery)
void ActNpc290(NPCHAR *npc) void ActNpc290(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -1341,7 +1355,7 @@ void ActNpc290(NPCHAR *npc)
} }
} }
//Mini Undead Core (inactive) // Mini Undead Core (inactive)
void ActNpc291(NPCHAR *npc) void ActNpc291(NPCHAR *npc)
{ {
RECT tc[2] = { RECT tc[2] = {
@ -1366,7 +1380,7 @@ void ActNpc291(NPCHAR *npc)
npc->rect = tc[npc->ani_no]; npc->rect = tc[npc->ani_no];
} }
//Quake // Quake
void ActNpc292(NPCHAR *npc) void ActNpc292(NPCHAR *npc)
{ {
(void)npc; (void)npc;
@ -1374,7 +1388,7 @@ void ActNpc292(NPCHAR *npc)
SetQuake(10); SetQuake(10);
} }
//Undead Core giant energy shot // Undead Core giant energy shot
void ActNpc293(NPCHAR *npc) void ActNpc293(NPCHAR *npc)
{ {
RECT rect[2] = { RECT rect[2] = {
@ -1404,7 +1418,7 @@ void ActNpc293(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Quake + falling block generator // Quake + falling block generator
void ActNpc294(NPCHAR *npc) void ActNpc294(NPCHAR *npc)
{ {
int x; int x;
@ -1466,7 +1480,7 @@ void ActNpc294(NPCHAR *npc)
} }
} }
//Cloud // Cloud
void ActNpc295(NPCHAR *npc) void ActNpc295(NPCHAR *npc)
{ {
RECT rc[4] = { RECT rc[4] = {
@ -1488,36 +1502,43 @@ void ActNpc295(NPCHAR *npc)
npc->view.back = 0xD000; npc->view.back = 0xD000;
npc->view.front = 0xD000; npc->view.front = 0xD000;
break; break;
case 1: case 1:
npc->ym = -0x800; npc->ym = -0x800;
npc->view.back = 0x7000; npc->view.back = 0x7000;
npc->view.front = 0x7000; npc->view.front = 0x7000;
break; break;
case 2: case 2:
npc->ym = -0x400; npc->ym = -0x400;
npc->view.back = 0x4000; npc->view.back = 0x4000;
npc->view.front = 0x4000; npc->view.front = 0x4000;
break; break;
case 3: case 3:
npc->ym = -0x200; npc->ym = -0x200;
npc->view.back = 0x2800; npc->view.back = 0x2800;
npc->view.front = 0x2800; npc->view.front = 0x2800;
break; break;
case 4: case 4:
npc->xm = -0x400; npc->xm = -0x400;
npc->view.back = 0xD000; npc->view.back = 0xD000;
npc->view.front = 0xD000; npc->view.front = 0xD000;
break; break;
case 5: case 5:
npc->xm = -0x200; npc->xm = -0x200;
npc->view.back = 0x7000; npc->view.back = 0x7000;
npc->view.front = 0x7000; npc->view.front = 0x7000;
break; break;
case 6: case 6:
npc->xm = -0x100; npc->xm = -0x100;
npc->view.back = 0x4000; npc->view.back = 0x4000;
npc->view.front = 0x4000; npc->view.front = 0x4000;
break; break;
case 7: case 7:
npc->xm = -0x80; npc->xm = -0x80;
npc->view.back = 0x2800; npc->view.back = 0x2800;
@ -1540,7 +1561,7 @@ void ActNpc295(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Cloud generator // Cloud generator
void ActNpc296(NPCHAR *npc) void ActNpc296(NPCHAR *npc)
{ {
int x; int x;
@ -1560,12 +1581,15 @@ void ActNpc296(NPCHAR *npc)
case 0: case 0:
pri = 0x180; pri = 0x180;
break; break;
case 1: case 1:
pri = 0x80; pri = 0x80;
break; break;
case 2: case 2:
pri = 0x40; pri = 0x40;
break; break;
case 3: case 3:
pri = 0x00; pri = 0x00;
break; break;
@ -1582,12 +1606,15 @@ void ActNpc296(NPCHAR *npc)
case 0: case 0:
pri = 0x80; pri = 0x80;
break; break;
case 1: case 1:
pri = 0x55; pri = 0x55;
break; break;
case 2: case 2:
pri = 0x40; pri = 0x40;
break; break;
case 3: case 3:
pri = 0x00; pri = 0x00;
break; break;
@ -1600,7 +1627,7 @@ void ActNpc296(NPCHAR *npc)
} }
} }
//Sue in dragon's mouth // Sue in dragon's mouth
void ActNpc297(NPCHAR *npc) void ActNpc297(NPCHAR *npc)
{ {
RECT rc = {112, 48, 0x80, 64}; RECT rc = {112, 48, 0x80, 64};
@ -1611,7 +1638,7 @@ void ActNpc297(NPCHAR *npc)
npc->rect = rc; npc->rect = rc;
} }
//Doctor (opening) // Doctor (opening)
void ActNpc298(NPCHAR *npc) void ActNpc298(NPCHAR *npc)
{ {
RECT rc[8] = { RECT rc[8] = {
@ -1676,7 +1703,7 @@ void ActNpc298(NPCHAR *npc)
++npc->ani_no; ++npc->ani_no;
} }
if ( npc->ani_no > 5 ) if (npc->ani_no > 5)
npc->ani_no = 2; npc->ani_no = 2;
npc->x += 0x100; npc->x += 0x100;
@ -1718,7 +1745,7 @@ void ActNpc298(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Balrog/Misery (opening) // Balrog/Misery (opening)
void ActNpc299(NPCHAR *npc) void ActNpc299(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {

View file

@ -16,7 +16,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Demon crown (opening) // Demon crown (opening)
void ActNpc300(NPCHAR *npc) void ActNpc300(NPCHAR *npc)
{ {
RECT rc = {192, 80, 208, 96}; RECT rc = {192, 80, 208, 96};
@ -33,7 +33,7 @@ void ActNpc300(NPCHAR *npc)
npc->rect = rc; npc->rect = rc;
} }
//Fish missile (Misery) // Fish missile (Misery)
void ActNpc301(NPCHAR *npc) void ActNpc301(NPCHAR *npc)
{ {
RECT rect[8] = { RECT rect[8] = {
@ -100,7 +100,7 @@ void ActNpc301(NPCHAR *npc)
npc->rect = rect[npc->ani_no]; npc->rect = rect[npc->ani_no];
} }
//Camera focus marker // Camera focus marker
void ActNpc302(NPCHAR *npc) void ActNpc302(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -116,12 +116,15 @@ void ActNpc302(NPCHAR *npc)
case 0: case 0:
npc->x -= 0x400; npc->x -= 0x400;
break; break;
case 1: case 1:
npc->y -= 0x400; npc->y -= 0x400;
break; break;
case 2: case 2:
npc->x += 0x400; npc->x += 0x400;
break; break;
case 3: case 3:
npc->y += 0x400; npc->y += 0x400;
break; break;
@ -169,7 +172,7 @@ void ActNpc302(NPCHAR *npc)
} }
} }
//Curly's machine gun // Curly's machine gun
void ActNpc303(NPCHAR *npc) void ActNpc303(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -185,7 +188,7 @@ void ActNpc303(NPCHAR *npc)
if (npc->pNpc == NULL) if (npc->pNpc == NULL)
return; return;
//Set position // Set position
if (npc->pNpc->direct == 0) if (npc->pNpc->direct == 0)
{ {
npc->direct = 0; npc->direct = 0;
@ -199,19 +202,19 @@ void ActNpc303(NPCHAR *npc)
npc->y = npc->pNpc->y; npc->y = npc->pNpc->y;
//Animation // Animation
npc->ani_no = 0; npc->ani_no = 0;
if (npc->pNpc->ani_no == 3 || npc->pNpc->ani_no == 5) if (npc->pNpc->ani_no == 3 || npc->pNpc->ani_no == 5)
npc->y -= 0x200; npc->y -= 0x200;
//Set framerect // Set framerect
if (npc->direct == 0) if (npc->direct == 0)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
else else
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Gaudi in hospital // Gaudi in hospital
void ActNpc304(NPCHAR *npc) void ActNpc304(NPCHAR *npc)
{ {
RECT rc[4] = { RECT rc[4] = {
@ -226,17 +229,19 @@ void ActNpc304(NPCHAR *npc)
case 0: case 0:
npc->act_no = 1; npc->act_no = 1;
npc->y += 5120; npc->y += 5120;
//Fallthrough // Fallthrough
case 1: case 1:
npc->ani_no = 0; npc->ani_no = 0;
break; break;
case 10: case 10:
npc->ani_no = 1; npc->ani_no = 1;
break; break;
case 20: case 20:
npc->act_no = 21; npc->act_no = 21;
npc->ani_no = 2; npc->ani_no = 2;
//Fallthrough // Fallthrough
case 21: case 21:
if (++npc->ani_wait > 10) if (++npc->ani_wait > 10)
{ {
@ -247,6 +252,7 @@ void ActNpc304(NPCHAR *npc)
if (npc->ani_no > 3) if (npc->ani_no > 3)
npc->ani_no = 2; npc->ani_no = 2;
break; break;
default: default:
break; break;
} }
@ -254,7 +260,7 @@ void ActNpc304(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Small puppy // Small puppy
void ActNpc305(NPCHAR *npc) void ActNpc305(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -273,7 +279,7 @@ void ActNpc305(NPCHAR *npc)
npc->act_no = 1; npc->act_no = 1;
npc->y -= 0x2000; npc->y -= 0x2000;
npc->ani_wait = Random(0, 6); npc->ani_wait = Random(0, 6);
//Fallthrough // Fallthrough
case 1: case 1:
if (++npc->ani_wait > 6) if (++npc->ani_wait > 6)
@ -293,7 +299,7 @@ void ActNpc305(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Balrog (nurse) // Balrog (nurse)
void ActNpc306(NPCHAR *npc) void ActNpc306(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -313,7 +319,7 @@ void ActNpc306(NPCHAR *npc)
npc->ani_no = 0; npc->ani_no = 0;
npc->ani_wait = 0; npc->ani_wait = 0;
npc->y += 0x800; npc->y += 0x800;
//Fallthrough // Fallthrough
case 1: case 1:
if (Random(0, 120) == 10) if (Random(0, 120) == 10)
{ {
@ -322,6 +328,7 @@ void ActNpc306(NPCHAR *npc)
npc->ani_no = 1; npc->ani_no = 1;
} }
break; break;
case 2: case 2:
if (++npc->act_wait > 8) if (++npc->act_wait > 8)
{ {
@ -337,7 +344,7 @@ void ActNpc306(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Caged Santa // Caged Santa
void ActNpc307(NPCHAR *npc) void ActNpc307(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -358,7 +365,7 @@ void ActNpc307(NPCHAR *npc)
npc->act_no = 1; npc->act_no = 1;
npc->ani_no = 0; npc->ani_no = 0;
npc->ani_wait = 0; npc->ani_wait = 0;
//Fallthrough // Fallthrough
case 1: case 1:
if (Random(0, 160) == 1) if (Random(0, 160) == 1)
{ {
@ -367,6 +374,7 @@ void ActNpc307(NPCHAR *npc)
npc->ani_no = 1; npc->ani_no = 1;
} }
break; break;
case 2: case 2:
if (++npc->act_wait > 12) if (++npc->act_wait > 12)
{ {
@ -387,7 +395,7 @@ void ActNpc307(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Stumpy // Stumpy
void ActNpc308(NPCHAR *npc) void ActNpc308(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -496,7 +504,7 @@ void ActNpc308(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Bute // Bute
void ActNpc309(NPCHAR *npc) void ActNpc309(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -602,7 +610,7 @@ void ActNpc309(NPCHAR *npc)
} }
} }
//Bute (with sword) // Bute (with sword)
void ActNpc310(NPCHAR *npc) void ActNpc310(NPCHAR *npc)
{ {
RECT rcLeft[5] = { RECT rcLeft[5] = {
@ -753,7 +761,7 @@ void ActNpc310(NPCHAR *npc)
} }
} }
//Bute archer // Bute archer
void ActNpc311(NPCHAR *npc) void ActNpc311(NPCHAR *npc)
{ {
RECT rcLeft[7] = { RECT rcLeft[7] = {
@ -900,7 +908,7 @@ void ActNpc311(NPCHAR *npc)
} }
} }
//Bute arrow projectile // Bute arrow projectile
void ActNpc312(NPCHAR *npc) void ActNpc312(NPCHAR *npc)
{ {
RECT rcLeft[5] = { RECT rcLeft[5] = {
@ -1017,7 +1025,7 @@ void ActNpc312(NPCHAR *npc)
} }
} }
//Ma Pignon // Ma Pignon
void ActNpc313(NPCHAR *npc) void ActNpc313(NPCHAR *npc)
{ {
RECT rcLeft[14] = { RECT rcLeft[14] = {
@ -1367,7 +1375,7 @@ void ActNpc313(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Ma Pignon rock // Ma Pignon rock
void ActNpc314(NPCHAR *npc) void ActNpc314(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -1438,7 +1446,7 @@ void ActNpc314(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Ma Pignon clone // Ma Pignon clone
void ActNpc315(NPCHAR *npc) void ActNpc315(NPCHAR *npc)
{ {
RECT rcLeft[4] = { RECT rcLeft[4] = {
@ -1580,7 +1588,7 @@ void ActNpc315(NPCHAR *npc)
} }
} }
//Bute (dead) // Bute (dead)
void ActNpc316(NPCHAR *npc) void ActNpc316(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -1659,7 +1667,7 @@ void ActNpc316(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Mesa // Mesa
void ActNpc317(NPCHAR *npc) void ActNpc317(NPCHAR *npc)
{ {
RECT rcLeft[4] = { RECT rcLeft[4] = {
@ -1704,7 +1712,7 @@ void ActNpc317(NPCHAR *npc)
if (npc->ani_no > 1) if (npc->ani_no > 1)
npc->ani_no = 0; npc->ani_no = 0;
if (gMC.x > npc->x - 0x28000 && gMC.x < npc->x + 0x28000 && gMC.y > npc->y - 0x14000 && gMC.y < npc->y + 0x14000 && ++npc->count1 > 50 ) if (gMC.x > npc->x - 0x28000 && gMC.x < npc->x + 0x28000 && gMC.y > npc->y - 0x14000 && gMC.y < npc->y + 0x14000 && ++npc->count1 > 50)
{ {
npc->act_no = 10; npc->act_no = 10;
} }
@ -1754,7 +1762,7 @@ void ActNpc317(NPCHAR *npc)
} }
} }
//Mesa (dead) // Mesa (dead)
void ActNpc318(NPCHAR *npc) void ActNpc318(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -1830,7 +1838,7 @@ void ActNpc318(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Mesa block // Mesa block
void ActNpc319(NPCHAR *npc) void ActNpc319(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {

View file

@ -14,7 +14,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Curly (carried, shooting) // Curly (carried, shooting)
void ActNpc320(NPCHAR *npc) void ActNpc320(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -104,7 +104,7 @@ void ActNpc320(NPCHAR *npc)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
} }
//Curly's Nemesis // Curly's Nemesis
void ActNpc321(NPCHAR *npc) void ActNpc321(NPCHAR *npc)
{ {
RECT rcLeft[3] = { RECT rcLeft[3] = {
@ -177,7 +177,7 @@ void ActNpc321(NPCHAR *npc)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
} }
//Deleet // Deleet
void ActNpc322(NPCHAR *npc) void ActNpc322(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -222,18 +222,23 @@ void ActNpc322(NPCHAR *npc)
case 0: case 0:
SetNpChar(207, npc->x + 0x800, npc->y, 0, 0, 0, 0, 0x180); SetNpChar(207, npc->x + 0x800, npc->y, 0, 0, 0, 0, 0x180);
break; break;
case 50: case 50:
SetNpChar(207, npc->x + 0x800, npc->y, 0, 0, 1, 0, 0x180); SetNpChar(207, npc->x + 0x800, npc->y, 0, 0, 1, 0, 0x180);
break; break;
case 100: case 100:
SetNpChar(207, npc->x + 0x800, npc->y, 0, 0, 2, 0, 0x180); SetNpChar(207, npc->x + 0x800, npc->y, 0, 0, 2, 0, 0x180);
break; break;
case 150: case 150:
SetNpChar(207, npc->x + 0x800, npc->y, 0, 0, 3, 0, 0x180); SetNpChar(207, npc->x + 0x800, npc->y, 0, 0, 3, 0, 0x180);
break; break;
case 200: case 200:
SetNpChar(207, npc->x + 0x800, npc->y, 0, 0, 4, 0, 0x180); SetNpChar(207, npc->x + 0x800, npc->y, 0, 0, 4, 0, 0x180);
break; break;
case 250: case 250:
npc->hit.back = 0x6000; npc->hit.back = 0x6000;
npc->hit.front = 0x6000; npc->hit.front = 0x6000;
@ -265,7 +270,7 @@ void ActNpc322(NPCHAR *npc)
} }
} }
//Bute (spinning) // Bute (spinning)
void ActNpc323(NPCHAR *npc) void ActNpc323(NPCHAR *npc)
{ {
RECT rc[4] = { RECT rc[4] = {
@ -293,12 +298,15 @@ void ActNpc323(NPCHAR *npc)
case 0: case 0:
npc->xm = -0x600; npc->xm = -0x600;
break; break;
case 2: case 2:
npc->xm = 0x600; npc->xm = 0x600;
break; break;
case 1: case 1:
npc->ym = -0x600; npc->ym = -0x600;
break; break;
case 3: case 3:
npc->ym = 0x600; npc->ym = 0x600;
break; break;
@ -322,14 +330,17 @@ void ActNpc323(NPCHAR *npc)
if (npc->x <= gMC.x + 0x4000) if (npc->x <= gMC.x + 0x4000)
npc->act_no = 10; npc->act_no = 10;
break; break;
case 2: case 2:
if (npc->x >= gMC.x - 0x4000) if (npc->x >= gMC.x - 0x4000)
npc->act_no = 10; npc->act_no = 10;
break; break;
case 1: case 1:
if (npc->y <= gMC.y + 0x4000) if (npc->y <= gMC.y + 0x4000)
npc->act_no = 10; npc->act_no = 10;
break; break;
case 3: case 3:
if (npc->y >= gMC.y - 0x4000) if (npc->y >= gMC.y - 0x4000)
npc->act_no = 10; npc->act_no = 10;
@ -354,7 +365,7 @@ void ActNpc323(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Bute generator // Bute generator
void ActNpc324(NPCHAR *npc) void ActNpc324(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -374,7 +385,7 @@ void ActNpc324(NPCHAR *npc)
} }
} }
//Heavy Press lightning // Heavy Press lightning
void ActNpc325(NPCHAR *npc) void ActNpc325(NPCHAR *npc)
{ {
RECT rc[7] = { RECT rc[7] = {
@ -436,7 +447,7 @@ void ActNpc325(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Sue/Itoh becoming humans // Sue/Itoh becoming humans
void ActNpc326(NPCHAR *npc) void ActNpc326(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -446,7 +457,7 @@ void ActNpc326(NPCHAR *npc)
npc->y -= 0x1000; npc->y -= 0x1000;
npc->x += 0x2000; npc->x += 0x2000;
npc->ani_no = 0; npc->ani_no = 0;
//Fallthrough // Fallthrough
case 1: case 1:
if (++npc->act_wait > 80) if (++npc->act_wait > 80)
{ {
@ -540,7 +551,7 @@ void ActNpc326(NPCHAR *npc)
npc->act_no = 41; npc->act_no = 41;
npc->act_wait = 0; npc->act_wait = 0;
npc->ani_no = 0; npc->ani_no = 0;
//Fallthrough // Fallthrough
case 41: case 41:
if (++npc->act_wait == 30) if (++npc->act_wait == 30)
npc->ani_no = 1; npc->ani_no = 1;
@ -579,7 +590,7 @@ void ActNpc326(NPCHAR *npc)
npc->rect = rcSu[npc->ani_no]; npc->rect = rcSu[npc->ani_no];
} }
//Sneeze // Sneeze
void ActNpc327(NPCHAR *npc) void ActNpc327(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -624,14 +635,14 @@ void ActNpc327(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Thingy that turns Sue and Itoh into humans for 4 seconds // Thingy that turns Sue and Itoh into humans for 4 seconds
void ActNpc328(NPCHAR *npc) void ActNpc328(NPCHAR *npc)
{ {
RECT rc = {96, 0, 128, 48}; RECT rc = {96, 0, 128, 48};
npc->rect = rc; npc->rect = rc;
} }
//Laboratory fan // Laboratory fan
void ActNpc329(NPCHAR *npc) void ActNpc329(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -645,7 +656,7 @@ void ActNpc329(NPCHAR *npc)
npc->rect = rc[1]; npc->rect = rc[1];
} }
//Rolling // Rolling
void ActNpc330(NPCHAR *npc) void ActNpc330(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -728,7 +739,7 @@ void ActNpc330(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Ballos bone projectile // Ballos bone projectile
void ActNpc331(NPCHAR *npc) void ActNpc331(NPCHAR *npc)
{ {
RECT rc[4] = { RECT rc[4] = {
@ -787,7 +798,7 @@ void ActNpc331(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Ballos shockwave // Ballos shockwave
void ActNpc332(NPCHAR *npc) void ActNpc332(NPCHAR *npc)
{ {
int xm; int xm;
@ -843,7 +854,7 @@ void ActNpc332(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Ballos lightning // Ballos lightning
void ActNpc333(NPCHAR *npc) void ActNpc333(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -879,7 +890,7 @@ void ActNpc333(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Sweat // Sweat
void ActNpc334(NPCHAR *npc) void ActNpc334(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -926,7 +937,7 @@ void ActNpc334(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Ikachan // Ikachan
void ActNpc335(NPCHAR *npc) void ActNpc335(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -982,7 +993,7 @@ void ActNpc335(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Ikachan generator // Ikachan generator
void ActNpc336(NPCHAR *npc) void ActNpc336(NPCHAR *npc)
{ {
int y; int y;
@ -996,7 +1007,7 @@ void ActNpc336(NPCHAR *npc)
break; break;
case 10: case 10:
if (++npc->act_wait % 4 == 1 ) if (++npc->act_wait % 4 == 1)
{ {
y = npc->y + (Random(0, 13) * 0x200 * 0x10); y = npc->y + (Random(0, 13) * 0x200 * 0x10);
SetNpChar(335, npc->x, y, 0, 0, 0, 0, 0); SetNpChar(335, npc->x, y, 0, 0, 0, 0, 0);
@ -1006,7 +1017,7 @@ void ActNpc336(NPCHAR *npc)
} }
} }
//Numhachi // Numhachi
void ActNpc337(NPCHAR *npc) void ActNpc337(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -1048,7 +1059,7 @@ void ActNpc337(NPCHAR *npc)
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
} }
//Green Devil // Green Devil
void ActNpc338(NPCHAR *npc) void ActNpc338(NPCHAR *npc)
{ {
RECT rcLeft[2] = { RECT rcLeft[2] = {
@ -1115,7 +1126,7 @@ void ActNpc338(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Green Devil generator // Green Devil generator
void ActNpc339(NPCHAR *npc) void ActNpc339(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)

View file

@ -15,7 +15,7 @@
#include "Sound.h" #include "Sound.h"
#include "Triangle.h" #include "Triangle.h"
//Ballos // Ballos
void ActNpc340(NPCHAR *npc) void ActNpc340(NPCHAR *npc)
{ {
int i; int i;
@ -78,6 +78,7 @@ void ActNpc340(NPCHAR *npc)
case 3: case 3:
npc->act_no = 200; npc->act_no = 200;
break; break;
case 4: case 4:
npc->act_no = 300; npc->act_no = 300;
break; break;
@ -558,7 +559,7 @@ void ActNpc340(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Ballos 1 head // Ballos 1 head
void ActNpc341(NPCHAR *npc) void ActNpc341(NPCHAR *npc)
{ {
RECT rc[3] = { RECT rc[3] = {
@ -584,7 +585,7 @@ void ActNpc341(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Ballos 3 eye // Ballos 3 eye
void ActNpc342(NPCHAR *npc) void ActNpc342(NPCHAR *npc)
{ {
static int flash; static int flash;
@ -810,6 +811,7 @@ void ActNpc342(NPCHAR *npc)
PlaySoundObject(26, 1); PlaySoundObject(26, 1);
} }
break; break;
case 1: case 1:
if (npc->count1 == 268) if (npc->count1 == 268)
{ {
@ -818,6 +820,7 @@ void ActNpc342(NPCHAR *npc)
PlaySoundObject(26, 1); PlaySoundObject(26, 1);
} }
break; break;
case 2: case 2:
if (npc->count1 == 396) if (npc->count1 == 396)
{ {
@ -827,6 +830,7 @@ void ActNpc342(NPCHAR *npc)
PlaySoundObject(26, 1); PlaySoundObject(26, 1);
} }
break; break;
case 3: case 3:
if (npc->count1 == 12) if (npc->count1 == 12)
{ {
@ -855,7 +859,7 @@ void ActNpc342(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Ballos 2 cutscene // Ballos 2 cutscene
void ActNpc343(NPCHAR *npc) void ActNpc343(NPCHAR *npc)
{ {
RECT rc = {0, 0, 120, 120}; RECT rc = {0, 0, 120, 120};
@ -869,7 +873,7 @@ void ActNpc343(NPCHAR *npc)
npc->y = npc->pNpc->y; npc->y = npc->pNpc->y;
} }
//Ballos 2 eyes // Ballos 2 eyes
void ActNpc344(NPCHAR *npc) void ActNpc344(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -894,7 +898,7 @@ void ActNpc344(NPCHAR *npc)
npc->y = npc->pNpc->y - 0x4800; npc->y = npc->pNpc->y - 0x4800;
} }
//Ballos skull projectile // Ballos skull projectile
void ActNpc345(NPCHAR *npc) void ActNpc345(NPCHAR *npc)
{ {
int i; int i;
@ -940,7 +944,7 @@ void ActNpc345(NPCHAR *npc)
case 110: case 110:
npc->ym += 0x40; npc->ym += 0x40;
if ( npc->y > (gMap.length * 0x200 * 0x10) + (2 * 0x200 * 0x10)) if (npc->y > (gMap.length * 0x200 * 0x10) + (2 * 0x200 * 0x10))
{ {
npc->cond = 0; npc->cond = 0;
return; return;
@ -963,7 +967,7 @@ void ActNpc345(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Ballos 4 orbiting platform // Ballos 4 orbiting platform
void ActNpc346(NPCHAR *npc) void ActNpc346(NPCHAR *npc)
{ {
unsigned char deg; unsigned char deg;
@ -1099,7 +1103,7 @@ void ActNpc346(NPCHAR *npc)
npc->rect = rc; npc->rect = rc;
} }
//Hoppy // Hoppy
void ActNpc347(NPCHAR *npc) void ActNpc347(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
@ -1186,7 +1190,7 @@ void ActNpc347(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Ballos 4 spikes // Ballos 4 spikes
void ActNpc348(NPCHAR *npc) void ActNpc348(NPCHAR *npc)
{ {
RECT rc[2] = { RECT rc[2] = {
@ -1222,7 +1226,7 @@ void ActNpc348(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Statue // Statue
void ActNpc349(NPCHAR *npc) void ActNpc349(NPCHAR *npc)
{ {
RECT rect = {0, 0, 16, 16}; RECT rect = {0, 0, 16, 16};
@ -1240,7 +1244,7 @@ void ActNpc349(NPCHAR *npc)
npc->rect = rect; npc->rect = rect;
} }
//Flying Bute archer // Flying Bute archer
void ActNpc350(NPCHAR *npc) void ActNpc350(NPCHAR *npc)
{ {
RECT rcLeft[7] = { RECT rcLeft[7] = {
@ -1425,7 +1429,7 @@ void ActNpc350(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Statue (shootable) // Statue (shootable)
void ActNpc351(NPCHAR *npc) void ActNpc351(NPCHAR *npc)
{ {
RECT rc[9] = { RECT rc[9] = {
@ -1478,19 +1482,19 @@ void ActNpc351(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Ending characters // Ending characters
void ActNpc352(NPCHAR *npc) void ActNpc352(NPCHAR *npc)
{ {
switch (npc->act_no) switch (npc->act_no)
{ {
case 0: case 0:
//Set state // Set state
npc->act_no = 1; npc->act_no = 1;
npc->ani_no = 0; npc->ani_no = 0;
npc->count1 = npc->direct / 100; npc->count1 = npc->direct / 100;
npc->direct %= 100; npc->direct %= 100;
//Set surfaces / offset // Set surfaces / offset
switch (npc->count1) switch (npc->count1)
{ {
case 7: case 7:
@ -1500,6 +1504,7 @@ void ActNpc352(NPCHAR *npc)
case 13: case 13:
npc->surf = SURFACE_ID_LEVEL_SPRITESET_1; npc->surf = SURFACE_ID_LEVEL_SPRITESET_1;
break; break;
default: default:
break; break;
} }
@ -1512,11 +1517,12 @@ void ActNpc352(NPCHAR *npc)
case 12: case 12:
npc->view.top = 0x2000; npc->view.top = 0x2000;
break; break;
default: default:
break; break;
} }
//Balrog // Balrog
if (npc->count1 == 9) if (npc->count1 == 9)
{ {
npc->view.back = 0x2800; npc->view.back = 0x2800;
@ -1524,10 +1530,10 @@ void ActNpc352(NPCHAR *npc)
npc->x -= 0x200; npc->x -= 0x200;
} }
//Spawn King's sword // Spawn King's sword
if (!npc->count1) if (!npc->count1)
SetNpChar(145, 0, 0, 0, 0, 2, npc, 0x100); SetNpChar(145, 0, 0, 0, 0, 2, npc, 0x100);
//Fallthrough // Fallthrough
case 1: case 1:
npc->ym += 0x40; npc->ym += 0x40;
if (npc->ym > 0x5FF) if (npc->ym > 0x5FF)
@ -1578,7 +1584,7 @@ void ActNpc352(NPCHAR *npc)
npc->rect = rc[npc->ani_no + 2 * npc->count1]; npc->rect = rc[npc->ani_no + 2 * npc->count1];
} }
//Bute with sword (flying) // Bute with sword (flying)
void ActNpc353(NPCHAR *npc) void ActNpc353(NPCHAR *npc)
{ {
RECT rc[4] = { RECT rc[4] = {
@ -1608,12 +1614,15 @@ void ActNpc353(NPCHAR *npc)
case 0: case 0:
npc->xm = -0x600; npc->xm = -0x600;
break; break;
case 2: case 2:
npc->xm = 0x600; npc->xm = 0x600;
break; break;
case 1: case 1:
npc->ym = -0x600; npc->ym = -0x600;
break; break;
case 3: case 3:
npc->ym = 0x600; npc->ym = 0x600;
break; break;
@ -1716,7 +1725,7 @@ void ActNpc353(NPCHAR *npc)
} }
} }
//Invisible deathtrap wall // Invisible deathtrap wall
void ActNpc354(NPCHAR *npc) void ActNpc354(NPCHAR *npc)
{ {
int i; int i;
@ -1763,7 +1772,7 @@ void ActNpc354(NPCHAR *npc)
} }
} }
//Quote and Curly on Balrog's back // Quote and Curly on Balrog's back
void ActNpc355(NPCHAR *npc) void ActNpc355(NPCHAR *npc)
{ {
RECT rc[4] = { RECT rc[4] = {
@ -1813,7 +1822,7 @@ void ActNpc355(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Balrog rescue // Balrog rescue
void ActNpc356(NPCHAR *npc) void ActNpc356(NPCHAR *npc)
{ {
RECT rcRight[2] = { RECT rcRight[2] = {
@ -1883,7 +1892,7 @@ void ActNpc356(NPCHAR *npc)
npc->rect = rcRight[npc->ani_no]; npc->rect = rcRight[npc->ani_no];
} }
//Puppy ghost // Puppy ghost
void ActNpc357(NPCHAR *npc) void ActNpc357(NPCHAR *npc)
{ {
RECT rc = {224, 136, 240, 152}; RECT rc = {224, 136, 240, 152};
@ -1917,7 +1926,7 @@ void ActNpc357(NPCHAR *npc)
SetCaret(npc->x + (Random(-8, 8) * 0x200), npc->y + 0x1000, 13, 1); SetCaret(npc->x + (Random(-8, 8) * 0x200), npc->y + 0x1000, 13, 1);
} }
//Misery (stood in the wind during the credits) // Misery (stood in the wind during the credits)
void ActNpc358(NPCHAR *npc) void ActNpc358(NPCHAR *npc)
{ {
RECT rc[5] = { RECT rc[5] = {
@ -1958,7 +1967,7 @@ void ActNpc358(NPCHAR *npc)
npc->rect = rc[npc->ani_no]; npc->rect = rc[npc->ani_no];
} }
//Water droplet generator // Water droplet generator
void ActNpc359(NPCHAR *npc) void ActNpc359(NPCHAR *npc)
{ {
int x; int x;
@ -1970,7 +1979,7 @@ void ActNpc359(NPCHAR *npc)
} }
} }
//Thank you // Thank you
void ActNpc360(NPCHAR *npc) void ActNpc360(NPCHAR *npc)
{ {
RECT rc = {0, 176, 48, 184}; RECT rc = {0, 176, 48, 184};