cave-story-solaris/src/NpcAct280.cpp
Clownacy 593995d410 Added more NPCs
That should be Sand Zone done.
2019-02-05 18:49:21 +00:00

160 lines
2.2 KiB
C++

#include "WindowsWrapper.h"
#include "NpcAct.h"
#include "MyChar.h"
#include "NpChar.h"
#include "Game.h"
#include "Sound.h"
#include "Back.h"
#include "Triangle.h"
#include "Frame.h"
//Quake
void ActNpc292(NPCHAR *npc)
{
SetQuake(10);
}
//Doctor (opening)
void ActNpc298(NPCHAR *npc)
{
RECT rc[8];
rc[0] = {72, 128, 88, 160};
rc[1] = {88, 128, 104, 160};
rc[2] = {104, 128, 120, 160};
rc[3] = {72, 128, 88, 160};
rc[4] = {120, 128, 136, 160};
rc[5] = {72, 128, 88, 160};
rc[6] = {104, 160, 120, 192};
rc[7] = {120, 160, 136, 192};
switch (npc->act_no)
{
case 0:
npc->act_no = 1;
npc->y -= 0x1000;
// Fallthrough
case 1:
npc->ani_no = 0;
break;
case 10:
npc->act_no = 11;
npc->ani_no = 0;
npc->ani_wait = 0;
npc->count1 = 0;
// Fallthrough
case 11:
if (++npc->ani_wait > 6)
{
npc->ani_wait = 0;
++npc->ani_no;
}
if (npc->ani_no > 1)
{
npc->ani_no = 0;
if (++npc->count1 > 7)
{
npc->ani_no = 0;
npc->act_no = 1;
}
}
break;
case 20:
npc->act_no = 21;
npc->ani_no = 2;
npc->ani_wait = 0;
// Fallthrough
case 21:
if (++npc->ani_wait > 10)
{
npc->ani_wait = 0;
++npc->ani_no;
}
if ( npc->ani_no > 5 )
npc->ani_no = 2;
npc->x += 0x100;
break;
case 30:
npc->ani_no = 6;
break;
case 40:
npc->act_no = 41;
npc->ani_no = 6;
npc->ani_wait = 0;
npc->count1 = 0;
// Fallthrough
case 41:
if (++npc->ani_wait > 6)
{
npc->ani_wait = 0;
++npc->ani_no;
}
if (npc->ani_no > 7)
{
npc->ani_no = 6;
if (++npc->count1 > 7)
{
npc->ani_no = 6;
npc->act_no = 30;
}
}
break;
}
npc->rect = rc[npc->ani_no];
}
//Balrog/Misery (opening)
void ActNpc299(NPCHAR *npc)
{
RECT rc[2];
rc[0] = {0, 0, 48, 48};
rc[1] = {48, 0, 96, 48};
switch (npc->act_no)
{
case 0:
npc->act_no = 1;
if (npc->direct == 0)
{
npc->ani_no = 1;
npc->act_wait = 25;
npc->y -= 1600;
}
else
{
npc->ani_no = 0;
npc->act_wait = 0;
}
break;
}
if (++npc->act_wait / 50 % 2)
npc->y += 0x40;
else
npc->y -= 0x40;
npc->rect = rc[npc->ani_no];
}