Added NPC015, NPC018, and NPC020 (chest close, door, and chest open)
This commit is contained in:
parent
ce34eea2dc
commit
27cfd5a575
5 changed files with 122 additions and 3 deletions
1
Makefile
1
Makefile
|
@ -55,6 +55,7 @@ SOURCES = \
|
|||
MyChar \
|
||||
MycHit \
|
||||
NpcAct000 \
|
||||
NpcAct020 \
|
||||
NpChar \
|
||||
NpcHit \
|
||||
NpcTbl \
|
||||
|
|
|
@ -7,5 +7,9 @@ void ActNpc004(NPCHAR *npc);
|
|||
void ActNpc005(NPCHAR *npc);
|
||||
void ActNpc006(NPCHAR *npc);
|
||||
|
||||
void ActNpc015(NPCHAR *npc);
|
||||
void ActNpc016(NPCHAR *npc);
|
||||
void ActNpc017(NPCHAR *npc);
|
||||
void ActNpc018(NPCHAR *npc);
|
||||
|
||||
void ActNpc021(NPCHAR *npc);
|
||||
|
|
|
@ -615,6 +615,63 @@ void ActNpc006(NPCHAR *npc)
|
|||
npc->rect = rcLeft[npc->ani_no];
|
||||
}
|
||||
|
||||
//Chest (closed)
|
||||
void ActNpc015(NPCHAR *npc)
|
||||
{
|
||||
RECT rcLeft[3];
|
||||
|
||||
rcLeft[0] = {240, 0, 256, 16};
|
||||
rcLeft[1] = {256, 0, 272, 16};
|
||||
rcLeft[2] = {272, 0, 288, 16};
|
||||
|
||||
switch (npc->act_no)
|
||||
{
|
||||
case 0:
|
||||
npc->act_no = 1;
|
||||
npc->bits |= 0x2000u;
|
||||
|
||||
if (npc->direct == 2)
|
||||
{
|
||||
npc->ym = -0x200;
|
||||
|
||||
for (int i = 0; i < 4; ++i)
|
||||
SetNpChar(4, npc->x + (Random(-12, 12) * 0x200), npc->y + (Random(-12, 12) * 0x200), Random(-341, 341), Random(-0x600, 0), 0, 0, 0x100);
|
||||
}
|
||||
|
||||
// Fallthrough
|
||||
case 1:
|
||||
npc->ani_no = 0;
|
||||
|
||||
if (Random(0, 30) == 0)
|
||||
npc->act_no = 2;
|
||||
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (++npc->ani_wait > 1)
|
||||
{
|
||||
npc->ani_wait = 0;
|
||||
++npc->ani_no;
|
||||
}
|
||||
|
||||
if (npc->ani_no > 2)
|
||||
{
|
||||
npc->ani_no = 0;
|
||||
npc->act_no = 1;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
npc->ym += 0x40;
|
||||
if (npc->ym > 0x5FF)
|
||||
npc->ym = 0x5FF;
|
||||
|
||||
npc->y += npc->ym;
|
||||
|
||||
npc->rect = rcLeft[npc->ani_no];
|
||||
}
|
||||
|
||||
//Save point
|
||||
void ActNpc016(NPCHAR *npc)
|
||||
{
|
||||
|
@ -748,3 +805,31 @@ void ActNpc017(NPCHAR *npc)
|
|||
|
||||
npc->y += npc->ym;
|
||||
}
|
||||
|
||||
// Door
|
||||
void ActNpc018(NPCHAR *npc)
|
||||
{
|
||||
RECT rect[2];
|
||||
|
||||
rect[0] = {224, 16, 240, 40};
|
||||
rect[1] = {192, 112, 208, 136};
|
||||
|
||||
switch (npc->act_no)
|
||||
{
|
||||
case 0:
|
||||
if (npc->direct == 0)
|
||||
npc->rect = rect[0];
|
||||
else
|
||||
npc->rect = rect[1];
|
||||
|
||||
break;
|
||||
|
||||
case 1:
|
||||
for (int i = 0; i < 4; ++i)
|
||||
SetNpChar(4, npc->x, npc->y, Random(-341, 341), Random(-0x600, 0), 0, 0, 0x100);
|
||||
|
||||
npc->act_no = 0;
|
||||
npc->rect = rect[0];
|
||||
break;
|
||||
}
|
||||
}
|
29
src/NpcAct020.cpp
Normal file
29
src/NpcAct020.cpp
Normal file
|
@ -0,0 +1,29 @@
|
|||
#include "WindowsWrapper.h"
|
||||
|
||||
#include "MyChar.h"
|
||||
#include "NpChar.h"
|
||||
#include "Game.h"
|
||||
#include "Sound.h"
|
||||
#include "Back.h"
|
||||
#include "Triangle.h"
|
||||
|
||||
//Chest (open)
|
||||
void ActNpc021(NPCHAR *npc)
|
||||
{
|
||||
switch (npc->act_no)
|
||||
{
|
||||
case 0:
|
||||
npc->act_no = 1;
|
||||
|
||||
if (npc->direct == 2)
|
||||
npc->y += 0x2000;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
RECT rect[0];
|
||||
|
||||
rect[0] = {224, 40, 240, 48};
|
||||
|
||||
npc->rect = rect[0];
|
||||
}
|
|
@ -71,13 +71,13 @@ NPCFUNCTION gpNpcFuncTbl[] =
|
|||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
ActNpc015,
|
||||
ActNpc016,
|
||||
ActNpc017,
|
||||
ActNpc018,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
ActNpc021,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
|
|
Loading…
Add table
Reference in a new issue