Fixed an inaccuracy in NPC002 (Behemoth)

Was missing some calls for the sound effects, screen rumble, and smoke
NPC
This commit is contained in:
Clownacy 2019-02-18 02:39:38 +00:00
parent 99474e4aef
commit f9a4ea9ed4

View file

@ -214,14 +214,14 @@ void ActNpc002(NPCHAR *npc)
rcLeft[5] = {128, 0, 160, 24}; rcLeft[5] = {128, 0, 160, 24};
rcLeft[6] = {160, 0, 192, 24}; rcLeft[6] = {160, 0, 192, 24};
RECT rcUp[7]; RECT rcRight[7];
rcUp[0] = {32, 24, 64, 48}; rcRight[0] = {32, 24, 64, 48};
rcUp[1] = {0, 24, 32, 48}; rcRight[1] = {0, 24, 32, 48};
rcUp[2] = {32, 24, 64, 48}; rcRight[2] = {32, 24, 64, 48};
rcUp[3] = {64, 24, 96, 48}; rcRight[3] = {64, 24, 96, 48};
rcUp[4] = {96, 24, 128, 48}; rcRight[4] = {96, 24, 128, 48};
rcUp[5] = {128, 24, 160, 48}; rcRight[5] = {128, 24, 160, 48};
rcUp[6] = {160, 24, 192, 48}; rcRight[6] = {160, 24, 192, 48};
//Turn when touching a wall //Turn when touching a wall
if (npc->flag & 1) if (npc->flag & 1)
@ -231,6 +231,28 @@ void ActNpc002(NPCHAR *npc)
switch (npc->act_no) switch (npc->act_no)
{ {
case 0: //Walking
if (npc->direct)
npc->xm = 0x100;
else
npc->xm = -0x100;
if (++npc->ani_wait > 8)
{
npc->ani_wait = 0;
++npc->ani_no;
}
if (npc->ani_no > 3)
npc->ani_no = 0;
if (npc->shock)
{
npc->count1 = 0;
npc->act_no = 1;
npc->ani_no = 4;
}
break;
case 1: //Shot case 1: //Shot
npc->xm = 7 * npc->xm / 8; npc->xm = 7 * npc->xm / 8;
@ -270,28 +292,11 @@ void ActNpc002(NPCHAR *npc)
} }
if (npc->ani_no > 6) if (npc->ani_no > 6)
{
npc->ani_no = 5; npc->ani_no = 5;
break; PlaySoundObject(26, 1);
case 0: //Walking SetNpChar(4, npc->x, npc->y + 0x600, 0, 0, 0, 0, 0x100);
if (npc->direct) SetQuake(8);
npc->xm = 0x100;
else
npc->xm = -0x100;
if (++npc->ani_wait > 8)
{
npc->ani_wait = 0;
++npc->ani_no;
}
if (npc->ani_no > 3)
npc->ani_no = 0;
if (npc->shock)
{
npc->count1 = 0;
npc->act_no = 1;
npc->ani_no = 4;
} }
break; break;
} }
@ -306,10 +311,10 @@ void ActNpc002(NPCHAR *npc)
npc->y += npc->ym; npc->y += npc->ym;
//Set framerect //Set framerect
if (npc->direct) if (npc->direct == 0)
npc->rect = rcUp[npc->ani_no];
else
npc->rect = rcLeft[npc->ani_no]; npc->rect = rcLeft[npc->ani_no];
else
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)