Overhauled the NPC_flags, and applied them everywhere
No more raw values floating about in the decompiled code. Been wanting to do this for ages.
This commit is contained in:
parent
ce8b5651bc
commit
3e34136f69
32 changed files with 444 additions and 439 deletions
14
src/Boss.cpp
14
src/Boss.cpp
|
@ -50,7 +50,7 @@ void PutBossChar(int fx, int fy)
|
||||||
{
|
{
|
||||||
a = 0;
|
a = 0;
|
||||||
|
|
||||||
if (gBoss[b].bits & npc_showDamage && gBoss[b].damage_view)
|
if (gBoss[b].bits & NPC_SHOW_DAMAGE && gBoss[b].damage_view)
|
||||||
{
|
{
|
||||||
SetValueView(&gBoss[b].x, &gBoss[b].y, gBoss[b].damage_view);
|
SetValueView(&gBoss[b].x, &gBoss[b].y, gBoss[b].damage_view);
|
||||||
gBoss[b].damage_view = 0;
|
gBoss[b].damage_view = 0;
|
||||||
|
@ -100,13 +100,13 @@ void HitBossBullet()
|
||||||
|
|
||||||
// Check if bullet touches boss
|
// Check if bullet touches boss
|
||||||
bHit = FALSE;
|
bHit = FALSE;
|
||||||
if (gBoss[bos].bits & npc_shootable
|
if (gBoss[bos].bits & NPC_SHOOTABLE
|
||||||
&& gBoss[bos].x - gBoss[bos].hit.back < gBul[bul].x + gBul[bul].enemyXL
|
&& gBoss[bos].x - gBoss[bos].hit.back < gBul[bul].x + gBul[bul].enemyXL
|
||||||
&& gBoss[bos].x + gBoss[bos].hit.back > gBul[bul].x - gBul[bul].enemyXL
|
&& gBoss[bos].x + gBoss[bos].hit.back > gBul[bul].x - gBul[bul].enemyXL
|
||||||
&& gBoss[bos].y - gBoss[bos].hit.top < gBul[bul].y + gBul[bul].enemyYL
|
&& gBoss[bos].y - gBoss[bos].hit.top < gBul[bul].y + gBul[bul].enemyYL
|
||||||
&& gBoss[bos].y + gBoss[bos].hit.bottom > gBul[bul].y - gBul[bul].enemyYL)
|
&& gBoss[bos].y + gBoss[bos].hit.bottom > gBul[bul].y - gBul[bul].enemyYL)
|
||||||
bHit = TRUE;
|
bHit = TRUE;
|
||||||
else if (gBoss[bos].bits & npc_invulnerable
|
else if (gBoss[bos].bits & NPC_INVULNERABLE
|
||||||
&& gBoss[bos].x - gBoss[bos].hit.back < gBul[bul].x + gBul[bul].blockXL
|
&& gBoss[bos].x - gBoss[bos].hit.back < gBul[bul].x + gBul[bul].blockXL
|
||||||
&& gBoss[bos].x + gBoss[bos].hit.back > gBul[bul].x - gBul[bul].blockXL
|
&& gBoss[bos].x + gBoss[bos].hit.back > gBul[bul].x - gBul[bul].blockXL
|
||||||
&& gBoss[bos].y - gBoss[bos].hit.top < gBul[bul].y + gBul[bul].blockYL
|
&& gBoss[bos].y - gBoss[bos].hit.top < gBul[bul].y + gBul[bul].blockYL
|
||||||
|
@ -116,7 +116,7 @@ void HitBossBullet()
|
||||||
if (bHit)
|
if (bHit)
|
||||||
{
|
{
|
||||||
// Damage boss
|
// Damage boss
|
||||||
if (gBoss[bos].bits & npc_shootable)
|
if (gBoss[bos].bits & NPC_SHOOTABLE)
|
||||||
{
|
{
|
||||||
if (gBoss[bos].cond & 0x10)
|
if (gBoss[bos].cond & 0x10)
|
||||||
bos_ = 0;
|
bos_ = 0;
|
||||||
|
@ -129,7 +129,7 @@ void HitBossBullet()
|
||||||
{
|
{
|
||||||
gBoss[bos_].life = bos_;
|
gBoss[bos_].life = bos_;
|
||||||
|
|
||||||
if ((gMC.cond & 0x80) && gBoss[bos_].bits & npc_eventDie)
|
if ((gMC.cond & 0x80) && gBoss[bos_].bits & NPC_EVENT_WHEN_KILLED)
|
||||||
{
|
{
|
||||||
StartTextScript(gBoss[bos_].code_event);
|
StartTextScript(gBoss[bos_].code_event);
|
||||||
}
|
}
|
||||||
|
@ -282,7 +282,7 @@ void HitBossMap()
|
||||||
if ((gBoss[b].cond & 0x80) == 0)
|
if ((gBoss[b].cond & 0x80) == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (gBoss[b].bits & npc_ignoreSolid)
|
if (gBoss[b].bits & NPC_IGNORE_SOLIDITY)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (gBoss[b].size >= 3)
|
if (gBoss[b].size >= 3)
|
||||||
|
@ -306,7 +306,7 @@ void HitBossMap()
|
||||||
switch (atrb[j])
|
switch (atrb[j])
|
||||||
{
|
{
|
||||||
case 0x44:
|
case 0x44:
|
||||||
if (gBoss[b].bits & npc_ignore44)
|
if (gBoss[b].bits & NPC_IGNORE_TILE_44)
|
||||||
break;
|
break;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 0x05:
|
case 0x05:
|
||||||
|
|
|
@ -25,7 +25,7 @@ static void ActBossChar_Core_Face(NPCHAR *npc)
|
||||||
case 10:
|
case 10:
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->bits = 8;
|
npc->bits = NPC_IGNORE_SOLIDITY;
|
||||||
npc->view.front = 0x4800;
|
npc->view.front = 0x4800;
|
||||||
npc->view.top = 0x7000;
|
npc->view.top = 0x7000;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
@ -73,7 +73,7 @@ static void ActBossChar_Core_Tail(NPCHAR *npc)
|
||||||
case 10:
|
case 10:
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->bits = 8;
|
npc->bits = NPC_IGNORE_SOLIDITY;
|
||||||
npc->view.front = 0x5800;
|
npc->view.front = 0x5800;
|
||||||
npc->view.top = 0x7000;
|
npc->view.top = 0x7000;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
@ -125,7 +125,7 @@ static void ActBossChar_Core_Mini(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
case 10:
|
case 10:
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 100:
|
case 100:
|
||||||
|
@ -134,7 +134,7 @@ static void ActBossChar_Core_Mini(NPCHAR *npc)
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->tgt_x = gBoss[0].x + (Random(-0x80, 0x20) * 0x200);
|
npc->tgt_x = gBoss[0].x + (Random(-0x80, 0x20) * 0x200);
|
||||||
npc->tgt_y = gBoss[0].y + (Random(-0x40, 0x40) * 0x200);
|
npc->tgt_y = gBoss[0].y + (Random(-0x40, 0x40) * 0x200);
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 101:
|
case 101:
|
||||||
npc->x += (npc->tgt_x - npc->x) / 16;
|
npc->x += (npc->tgt_x - npc->x) / 16;
|
||||||
|
@ -255,7 +255,7 @@ void ActBossChar_Core(void)
|
||||||
npc->act_no = 10;
|
npc->act_no = 10;
|
||||||
npc->exp = 1;
|
npc->exp = 1;
|
||||||
npc->cond = 0x80;
|
npc->cond = 0x80;
|
||||||
npc->bits = 0x800C;
|
npc->bits = (NPC_INVULNERABLE | NPC_IGNORE_SOLIDITY | NPC_SHOW_DAMAGE);
|
||||||
npc->life = 650;
|
npc->life = 650;
|
||||||
npc->hit_voice = 114;
|
npc->hit_voice = 114;
|
||||||
npc->x = 0x9A000;
|
npc->x = 0x9A000;
|
||||||
|
@ -263,7 +263,7 @@ void ActBossChar_Core(void)
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->code_event = 1000;
|
npc->code_event = 1000;
|
||||||
npc->bits |= 0x200;
|
npc->bits |= NPC_EVENT_WHEN_KILLED;
|
||||||
|
|
||||||
gBoss[4].cond = 0x80;
|
gBoss[4].cond = 0x80;
|
||||||
gBoss[4].act_no = 10;
|
gBoss[4].act_no = 10;
|
||||||
|
@ -272,7 +272,7 @@ void ActBossChar_Core(void)
|
||||||
gBoss[5].act_no = 10;
|
gBoss[5].act_no = 10;
|
||||||
|
|
||||||
gBoss[8].cond = 0x80;
|
gBoss[8].cond = 0x80;
|
||||||
gBoss[8].bits = 12;
|
gBoss[8].bits = (NPC_INVULNERABLE | NPC_IGNORE_SOLIDITY);
|
||||||
gBoss[8].view.front = 0;
|
gBoss[8].view.front = 0;
|
||||||
gBoss[8].view.top = 0;
|
gBoss[8].view.top = 0;
|
||||||
gBoss[8].hit.back = 0x5000;
|
gBoss[8].hit.back = 0x5000;
|
||||||
|
@ -301,7 +301,7 @@ void ActBossChar_Core(void)
|
||||||
|
|
||||||
gBoss[1].cond = 0x80;
|
gBoss[1].cond = 0x80;
|
||||||
gBoss[1].act_no = 10;
|
gBoss[1].act_no = 10;
|
||||||
gBoss[1].bits = 44;
|
gBoss[1].bits = (NPC_INVULNERABLE | NPC_IGNORE_SOLIDITY | NPC_SHOOTABLE);
|
||||||
gBoss[1].life = 1000;
|
gBoss[1].life = 1000;
|
||||||
gBoss[1].hit_voice = 54;
|
gBoss[1].hit_voice = 54;
|
||||||
gBoss[1].hit.back = 0x3000;
|
gBoss[1].hit.back = 0x3000;
|
||||||
|
@ -332,7 +332,7 @@ void ActBossChar_Core(void)
|
||||||
case 200:
|
case 200:
|
||||||
npc->act_no = 201;
|
npc->act_no = 201;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
gBoss[11].bits &= ~0x20;
|
gBoss[11].bits &= ~NPC_SHOOTABLE;
|
||||||
gSuperYpos = 0;
|
gSuperYpos = 0;
|
||||||
CutNoise();
|
CutNoise();
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
@ -368,7 +368,7 @@ void ActBossChar_Core(void)
|
||||||
npc->act_no = 211;
|
npc->act_no = 211;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->count2 = npc->life;
|
npc->count2 = npc->life;
|
||||||
gBoss[11].bits |= 0x20;
|
gBoss[11].bits |= NPC_SHOOTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 211:
|
case 211:
|
||||||
npc->tgt_x = gMC.x;
|
npc->tgt_x = gMC.x;
|
||||||
|
@ -417,7 +417,7 @@ void ActBossChar_Core(void)
|
||||||
npc->act_no = 221;
|
npc->act_no = 221;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
gSuperYpos = 1;
|
gSuperYpos = 1;
|
||||||
gBoss[11].bits |= 0x20u;
|
gBoss[11].bits |= NPC_SHOOTABLE;
|
||||||
SetQuake(100);
|
SetQuake(100);
|
||||||
SetNoise(1, 1000);
|
SetNoise(1, 1000);
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
@ -486,7 +486,7 @@ void ActBossChar_Core(void)
|
||||||
SetNpChar(4, npc->x + (Random(-0x80, 0x80) * 0x200), npc->y + (Random(-0x40, 0x40) * 0x200), Random(-0x80, 0x80) * 0x200, Random(-0x80, 0x80) * 0x200, 0, 0, 0x100);
|
SetNpChar(4, npc->x + (Random(-0x80, 0x80) * 0x200), npc->y + (Random(-0x40, 0x40) * 0x200), Random(-0x80, 0x80) * 0x200, Random(-0x80, 0x80) * 0x200, 0, 0, 0x100);
|
||||||
|
|
||||||
for (i = 0; i < 12; ++i)
|
for (i = 0; i < 12; ++i)
|
||||||
gBoss[i].bits &= ~0x24;
|
gBoss[i].bits &= ~(NPC_INVULNERABLE | NPC_SHOOTABLE);
|
||||||
|
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 501:
|
case 501:
|
||||||
|
@ -514,10 +514,10 @@ void ActBossChar_Core(void)
|
||||||
npc->act_no = 601;
|
npc->act_no = 601;
|
||||||
gBoss[4].act_no = 50;
|
gBoss[4].act_no = 50;
|
||||||
gBoss[5].act_no = 50;
|
gBoss[5].act_no = 50;
|
||||||
gBoss[8].bits &= ~4;
|
gBoss[8].bits &= ~NPC_INVULNERABLE;
|
||||||
gBoss[9].bits &= ~4;
|
gBoss[9].bits &= ~NPC_INVULNERABLE;
|
||||||
gBoss[10].bits &= ~4;
|
gBoss[10].bits &= ~NPC_INVULNERABLE;
|
||||||
gBoss[11].bits &= ~4;
|
gBoss[11].bits &= ~NPC_INVULNERABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 601:
|
case 601:
|
||||||
if (++npc->act_wait / 2 % 2)
|
if (++npc->act_wait / 2 % 2)
|
||||||
|
|
|
@ -26,7 +26,7 @@ static void ActBossCharA_Head(NPCHAR *npc)
|
||||||
case 10:
|
case 10:
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->bits = 8;
|
npc->bits = NPC_IGNORE_SOLIDITY;
|
||||||
npc->view.front = 0x4800;
|
npc->view.front = 0x4800;
|
||||||
npc->view.top = 0x7000;
|
npc->view.top = 0x7000;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
@ -72,7 +72,7 @@ static void ActBossCharA_Tail(NPCHAR *npc)
|
||||||
case 10:
|
case 10:
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->bits = 8;
|
npc->bits = NPC_IGNORE_SOLIDITY;
|
||||||
npc->view.front = 0x5800;
|
npc->view.front = 0x5800;
|
||||||
npc->view.top = 0x7000;
|
npc->view.top = 0x7000;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
@ -165,7 +165,7 @@ static void ActBossCharA_Face(NPCHAR *npc)
|
||||||
npc->x = gBoss[0].x - 0x4800;
|
npc->x = gBoss[0].x - 0x4800;
|
||||||
npc->y = gBoss[0].y + 0x800;
|
npc->y = gBoss[0].y + 0x800;
|
||||||
|
|
||||||
npc->bits = 8;
|
npc->bits = NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
npc->rect = rect[npc->ani_no];
|
npc->rect = rect[npc->ani_no];
|
||||||
}
|
}
|
||||||
|
@ -188,33 +188,33 @@ static void ActBossCharA_Mini(NPCHAR *npc)
|
||||||
switch (npc->act_no)
|
switch (npc->act_no)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5:
|
case 5:
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
++npc->count2;
|
++npc->count2;
|
||||||
npc->count2 %= 0x100;
|
npc->count2 %= 0x100;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->count2 += 2;
|
npc->count2 += 2;
|
||||||
npc->count2 %= 0x100;
|
npc->count2 %= 0x100;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 20:
|
case 20:
|
||||||
npc->ani_no = 1;
|
npc->ani_no = 1;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->count2 += 2;
|
npc->count2 += 2;
|
||||||
npc->count2 %= 0x100;
|
npc->count2 %= 0x100;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 30:
|
case 30:
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->count2 += 4;
|
npc->count2 += 4;
|
||||||
npc->count2 %= 0x100;
|
npc->count2 %= 0x100;
|
||||||
break;
|
break;
|
||||||
|
@ -295,7 +295,7 @@ void ActBossChar_Undead(void)
|
||||||
npc->act_no = 10;
|
npc->act_no = 10;
|
||||||
npc->exp = 1;
|
npc->exp = 1;
|
||||||
npc->cond = 0x80;
|
npc->cond = 0x80;
|
||||||
npc->bits = 0x800C;
|
npc->bits = (NPC_INVULNERABLE | NPC_IGNORE_SOLIDITY | NPC_SHOW_DAMAGE);
|
||||||
npc->life = 700;
|
npc->life = 700;
|
||||||
npc->hit_voice = 114;
|
npc->hit_voice = 114;
|
||||||
npc->x = 0x4A000;
|
npc->x = 0x4A000;
|
||||||
|
@ -303,7 +303,7 @@ void ActBossChar_Undead(void)
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->code_event = 1000;
|
npc->code_event = 1000;
|
||||||
npc->bits |= 0x200;
|
npc->bits |= NPC_EVENT_WHEN_KILLED;
|
||||||
|
|
||||||
gBoss[3].cond = 0x80;
|
gBoss[3].cond = 0x80;
|
||||||
gBoss[3].act_no = 0;
|
gBoss[3].act_no = 0;
|
||||||
|
@ -315,7 +315,7 @@ void ActBossChar_Undead(void)
|
||||||
gBoss[5].act_no = 10;
|
gBoss[5].act_no = 10;
|
||||||
|
|
||||||
gBoss[8].cond = 0x80;
|
gBoss[8].cond = 0x80;
|
||||||
gBoss[8].bits = 8;
|
gBoss[8].bits = NPC_IGNORE_SOLIDITY;
|
||||||
gBoss[8].view.front = 0;
|
gBoss[8].view.front = 0;
|
||||||
gBoss[8].view.top = 0;
|
gBoss[8].view.top = 0;
|
||||||
gBoss[8].hit.back = 0x5000;
|
gBoss[8].hit.back = 0x5000;
|
||||||
|
@ -344,7 +344,7 @@ void ActBossChar_Undead(void)
|
||||||
|
|
||||||
gBoss[1].cond = 0x80;
|
gBoss[1].cond = 0x80;
|
||||||
gBoss[1].act_no = 0;
|
gBoss[1].act_no = 0;
|
||||||
gBoss[1].bits = 40;
|
gBoss[1].bits = (NPC_IGNORE_SOLIDITY | NPC_SHOOTABLE);
|
||||||
gBoss[1].life = 1000;
|
gBoss[1].life = 1000;
|
||||||
gBoss[1].hit_voice = 54;
|
gBoss[1].hit_voice = 54;
|
||||||
gBoss[1].hit.back = 0x3000;
|
gBoss[1].hit.back = 0x3000;
|
||||||
|
@ -392,10 +392,10 @@ void ActBossChar_Undead(void)
|
||||||
gBoss[3].act_no = 0;
|
gBoss[3].act_no = 0;
|
||||||
gBoss[4].ani_no = 2;
|
gBoss[4].ani_no = 2;
|
||||||
gBoss[5].ani_no = 0;
|
gBoss[5].ani_no = 0;
|
||||||
gBoss[8].bits &= ~4;
|
gBoss[8].bits &= ~NPC_INVULNERABLE;
|
||||||
gBoss[9].bits &= ~4;
|
gBoss[9].bits &= ~NPC_INVULNERABLE;
|
||||||
gBoss[10].bits &= ~4;
|
gBoss[10].bits &= ~NPC_INVULNERABLE;
|
||||||
gBoss[11].bits &= ~0x20;
|
gBoss[11].bits &= ~NPC_SHOOTABLE;
|
||||||
gSuperYpos = 0;
|
gSuperYpos = 0;
|
||||||
CutNoise();
|
CutNoise();
|
||||||
bShock = TRUE;
|
bShock = TRUE;
|
||||||
|
@ -427,10 +427,10 @@ void ActBossChar_Undead(void)
|
||||||
npc->act_no = 211;
|
npc->act_no = 211;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
gBoss[3].act_no = 10;
|
gBoss[3].act_no = 10;
|
||||||
gBoss[8].bits |= 4;
|
gBoss[8].bits |= NPC_INVULNERABLE;
|
||||||
gBoss[9].bits |= 4;
|
gBoss[9].bits |= NPC_INVULNERABLE;
|
||||||
gBoss[10].bits |= 4;
|
gBoss[10].bits |= NPC_INVULNERABLE;
|
||||||
gBoss[11].bits |= 0x20;
|
gBoss[11].bits |= NPC_SHOOTABLE;
|
||||||
life = npc->life;
|
life = npc->life;
|
||||||
bShock = TRUE;
|
bShock = TRUE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
@ -475,10 +475,10 @@ void ActBossChar_Undead(void)
|
||||||
npc->count1 = 0;
|
npc->count1 = 0;
|
||||||
gSuperYpos = 1;
|
gSuperYpos = 1;
|
||||||
gBoss[3].act_no = 20;
|
gBoss[3].act_no = 20;
|
||||||
gBoss[8].bits |= 4;
|
gBoss[8].bits |= NPC_INVULNERABLE;
|
||||||
gBoss[9].bits |= 4;
|
gBoss[9].bits |= NPC_INVULNERABLE;
|
||||||
gBoss[10].bits |= 4;
|
gBoss[10].bits |= NPC_INVULNERABLE;
|
||||||
gBoss[11].bits |= 0x20;
|
gBoss[11].bits |= NPC_SHOOTABLE;
|
||||||
SetQuake(100);
|
SetQuake(100);
|
||||||
life = npc->life;
|
life = npc->life;
|
||||||
bShock = TRUE;
|
bShock = TRUE;
|
||||||
|
@ -533,10 +533,10 @@ void ActBossChar_Undead(void)
|
||||||
npc->act_no = 231;
|
npc->act_no = 231;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
gBoss[3].act_no = 30;
|
gBoss[3].act_no = 30;
|
||||||
gBoss[8].bits |= 4;
|
gBoss[8].bits |= NPC_INVULNERABLE;
|
||||||
gBoss[9].bits |= 4;
|
gBoss[9].bits |= NPC_INVULNERABLE;
|
||||||
gBoss[10].bits |= 4;
|
gBoss[10].bits |= NPC_INVULNERABLE;
|
||||||
gBoss[11].bits |= 0x20;
|
gBoss[11].bits |= NPC_SHOOTABLE;
|
||||||
PlaySoundObject(25, 1);
|
PlaySoundObject(25, 1);
|
||||||
SetNpChar(285, gBoss[3].x - 0x2000, gBoss[3].y, 0, 0, 0, 0, 0x100);
|
SetNpChar(285, gBoss[3].x - 0x2000, gBoss[3].y, 0, 0, 0, 0, 0x100);
|
||||||
SetNpChar(285, gBoss[3].x - 0x2000, gBoss[3].y, 0, 0, 0x400, 0, 0x100);
|
SetNpChar(285, gBoss[3].x - 0x2000, gBoss[3].y, 0, 0, 0x400, 0, 0x100);
|
||||||
|
@ -595,10 +595,10 @@ void ActBossChar_Undead(void)
|
||||||
SetNpChar(4, npc->x + (Random(-0x80, 0x80) * 0x200), npc->y + (Random(-0x40, 0x40) * 0x200), Random(-0x80, 0x80) * 0x200, Random(-0x80, 0x80) * 0x200, 0, 0, 0);
|
SetNpChar(4, npc->x + (Random(-0x80, 0x80) * 0x200), npc->y + (Random(-0x40, 0x40) * 0x200), Random(-0x80, 0x80) * 0x200, Random(-0x80, 0x80) * 0x200, 0, 0, 0);
|
||||||
|
|
||||||
DeleteNpCharCode(282, 1);
|
DeleteNpCharCode(282, 1);
|
||||||
gBoss[11].bits &= ~0x20;
|
gBoss[11].bits &= ~NPC_SHOOTABLE;
|
||||||
|
|
||||||
for (i = 0; i < 12; ++i)
|
for (i = 0; i < 12; ++i)
|
||||||
gBoss[i].bits &= ~4;
|
gBoss[i].bits &= ~NPC_INVULNERABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 501:
|
case 501:
|
||||||
++npc->act_wait;
|
++npc->act_wait;
|
||||||
|
|
|
@ -91,9 +91,9 @@ static void ActBossChar_Eye(NPCHAR *npc)
|
||||||
if (npc->act_no >= 0 && npc->act_no < 300)
|
if (npc->act_no >= 0 && npc->act_no < 300)
|
||||||
{
|
{
|
||||||
if (npc->ani_no != 3)
|
if (npc->ani_no != 3)
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
else
|
else
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (npc->direct == 0)
|
if (npc->direct == 0)
|
||||||
|
@ -154,7 +154,7 @@ void ActBossChar_Ballos(void)
|
||||||
npc->hit.top = 0x6000;
|
npc->hit.top = 0x6000;
|
||||||
npc->hit.back = 0x4000;
|
npc->hit.back = 0x4000;
|
||||||
npc->hit.bottom = 0x6000;
|
npc->hit.bottom = 0x6000;
|
||||||
npc->bits = 0x8248;
|
npc->bits = (NPC_IGNORE_SOLIDITY | NPC_SOLID_HARD | NPC_EVENT_WHEN_KILLED | NPC_SHOW_DAMAGE);
|
||||||
npc->size = 3;
|
npc->size = 3;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->code_event = 1000;
|
npc->code_event = 1000;
|
||||||
|
@ -163,7 +163,7 @@ void ActBossChar_Ballos(void)
|
||||||
// Initialize eyes
|
// Initialize eyes
|
||||||
gBoss[1].cond = 0x90;
|
gBoss[1].cond = 0x90;
|
||||||
gBoss[1].direct = 0;
|
gBoss[1].direct = 0;
|
||||||
gBoss[1].bits = 8;
|
gBoss[1].bits = NPC_IGNORE_SOLIDITY;
|
||||||
gBoss[1].life = 10000;
|
gBoss[1].life = 10000;
|
||||||
gBoss[1].view.front = 0x1800;
|
gBoss[1].view.front = 0x1800;
|
||||||
gBoss[1].view.top = 0;
|
gBoss[1].view.top = 0;
|
||||||
|
@ -179,7 +179,7 @@ void ActBossChar_Ballos(void)
|
||||||
|
|
||||||
// Initialize the body
|
// Initialize the body
|
||||||
gBoss[3].cond = 0x90;
|
gBoss[3].cond = 0x90;
|
||||||
gBoss[3].bits = 0xD;
|
gBoss[3].bits = (NPC_SOLID_SOFT | NPC_INVULNERABLE | NPC_IGNORE_SOLIDITY);
|
||||||
gBoss[3].view.front = 0x7800;
|
gBoss[3].view.front = 0x7800;
|
||||||
gBoss[3].view.top = 0x7800;
|
gBoss[3].view.top = 0x7800;
|
||||||
gBoss[3].view.back = 0x7800;
|
gBoss[3].view.back = 0x7800;
|
||||||
|
@ -190,14 +190,14 @@ void ActBossChar_Ballos(void)
|
||||||
gBoss[3].hit.bottom = 0x4000;
|
gBoss[3].hit.bottom = 0x4000;
|
||||||
|
|
||||||
gBoss[4].cond = 0x90;
|
gBoss[4].cond = 0x90;
|
||||||
gBoss[4].bits = 0xD;
|
gBoss[4].bits = (NPC_SOLID_SOFT | NPC_INVULNERABLE | NPC_IGNORE_SOLIDITY);
|
||||||
gBoss[4].hit.front = 0x4000;
|
gBoss[4].hit.front = 0x4000;
|
||||||
gBoss[4].hit.top = 0x1000;
|
gBoss[4].hit.top = 0x1000;
|
||||||
gBoss[4].hit.back = 0x4000;
|
gBoss[4].hit.back = 0x4000;
|
||||||
gBoss[4].hit.bottom = 0x1000;
|
gBoss[4].hit.bottom = 0x1000;
|
||||||
|
|
||||||
gBoss[5].cond = 0x90;
|
gBoss[5].cond = 0x90;
|
||||||
gBoss[5].bits = 0x4C;
|
gBoss[5].bits = (NPC_INVULNERABLE | NPC_IGNORE_SOLIDITY | NPC_SOLID_HARD);
|
||||||
gBoss[5].hit.front = 0x4000;
|
gBoss[5].hit.front = 0x4000;
|
||||||
gBoss[5].hit.top = 0;
|
gBoss[5].hit.top = 0;
|
||||||
gBoss[5].hit.back = 0x4000;
|
gBoss[5].hit.back = 0x4000;
|
||||||
|
@ -598,13 +598,17 @@ void ActBossChar_Ballos(void)
|
||||||
gBoss[1].act_no = 300;
|
gBoss[1].act_no = 300;
|
||||||
gBoss[2].act_no = 300;
|
gBoss[2].act_no = 300;
|
||||||
|
|
||||||
gBoss[1].act_no &= ~0x41;
|
#ifndef FIX_BUGS
|
||||||
gBoss[2].act_no &= ~0x41;
|
// This code makes absolutely no sense.
|
||||||
|
// Luckily, it doesn't cause any bugs.
|
||||||
|
gBoss[1].act_no &= ~(NPC_SOLID_SOFT | NPC_SOLID_HARD);
|
||||||
|
gBoss[2].act_no &= ~(NPC_SOLID_SOFT | NPC_SOLID_HARD);
|
||||||
|
#endif
|
||||||
|
|
||||||
gBoss[0].bits &= ~0x41;
|
gBoss[0].bits &= ~(NPC_SOLID_SOFT | NPC_SOLID_HARD);
|
||||||
gBoss[3].bits &= ~0x41;
|
gBoss[3].bits &= ~(NPC_SOLID_SOFT | NPC_SOLID_HARD);
|
||||||
gBoss[4].bits &= ~0x41;
|
gBoss[4].bits &= ~(NPC_SOLID_SOFT | NPC_SOLID_HARD);
|
||||||
gBoss[5].bits &= ~0x41;
|
gBoss[5].bits &= ~(NPC_SOLID_SOFT | NPC_SOLID_HARD);
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1001:
|
case 1001:
|
||||||
++gBoss[0].act_wait;
|
++gBoss[0].act_wait;
|
||||||
|
@ -646,9 +650,9 @@ void ActBossChar_Ballos(void)
|
||||||
|
|
||||||
if (npc->act_no > 420 && npc->act_no < 500)
|
if (npc->act_no > 420 && npc->act_no < 500)
|
||||||
{
|
{
|
||||||
gBoss[3].bits |= 0x20;
|
gBoss[3].bits |= NPC_SHOOTABLE;
|
||||||
gBoss[4].bits |= 0x20;
|
gBoss[4].bits |= NPC_SHOOTABLE;
|
||||||
gBoss[5].bits |= 0x20;
|
gBoss[5].bits |= NPC_SHOOTABLE;
|
||||||
|
|
||||||
if (++npc->act_wait > 300)
|
if (++npc->act_wait > 300)
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,7 +32,7 @@ static void ActBossChar02_01(void)
|
||||||
boss->hit.back = 0x2000;
|
boss->hit.back = 0x2000;
|
||||||
boss->hit.bottom = 0x2000;
|
boss->hit.bottom = 0x2000;
|
||||||
boss->size = 3;
|
boss->size = 3;
|
||||||
boss->bits = 4;
|
boss->bits = NPC_INVULNERABLE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -71,7 +71,7 @@ static void ActBossChar02_02(void)
|
||||||
boss->hit.back = 0x3000;
|
boss->hit.back = 0x3000;
|
||||||
boss->hit.bottom = 0x2000;
|
boss->hit.bottom = 0x2000;
|
||||||
boss->size = 3;
|
boss->size = 3;
|
||||||
boss->bits = 4;
|
boss->bits = NPC_INVULNERABLE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -138,7 +138,7 @@ void ActBossChar_Frog(void)
|
||||||
boss->size = 3;
|
boss->size = 3;
|
||||||
boss->exp = 1;
|
boss->exp = 1;
|
||||||
boss->code_event = 1000;
|
boss->code_event = 1000;
|
||||||
boss->bits |= 0x8200;
|
boss->bits |= (NPC_EVENT_WHEN_KILLED | NPC_SHOW_DAMAGE);
|
||||||
boss->life = 300;
|
boss->life = 300;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -282,7 +282,7 @@ void ActBossChar_Frog(void)
|
||||||
boss->act_wait = 0;
|
boss->act_wait = 0;
|
||||||
boss->ani_no = 3;
|
boss->ani_no = 3;
|
||||||
boss->count1 = 16;
|
boss->count1 = 16;
|
||||||
gBoss[1].bits |= 0x20;
|
gBoss[1].bits |= NPC_SHOOTABLE;
|
||||||
boss->tgt_x = boss->life;
|
boss->tgt_x = boss->life;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,7 +332,7 @@ void ActBossChar_Frog(void)
|
||||||
boss->act_wait = 0;
|
boss->act_wait = 0;
|
||||||
boss->ani_no = 2;
|
boss->ani_no = 2;
|
||||||
boss->ani_wait = 0;
|
boss->ani_wait = 0;
|
||||||
gBoss[1].bits &= ~0x20;
|
gBoss[1].bits &= ~NPC_SHOOTABLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -507,7 +507,7 @@ void ActBossChar_Frog(void)
|
||||||
{
|
{
|
||||||
boss->ani_no = 8;
|
boss->ani_no = 8;
|
||||||
boss->ym = -0xA00;
|
boss->ym = -0xA00;
|
||||||
boss->bits |= 8;
|
boss->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
boss->act_no = 143;
|
boss->act_no = 143;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ void ActBossChar_Ironhead(void)
|
||||||
npc->hit.top = 0x1400;
|
npc->hit.top = 0x1400;
|
||||||
npc->hit.back = 0x2000;
|
npc->hit.back = 0x2000;
|
||||||
npc->hit.bottom = 0x1400;
|
npc->hit.bottom = 0x1400;
|
||||||
npc->bits = 0x8228;
|
npc->bits = (NPC_IGNORE_SOLIDITY | NPC_SHOOTABLE | NPC_EVENT_WHEN_KILLED | NPC_SHOW_DAMAGE);
|
||||||
npc->size = 3;
|
npc->size = 3;
|
||||||
npc->damage = 10;
|
npc->damage = 10;
|
||||||
npc->code_event = 1000;
|
npc->code_event = 1000;
|
||||||
|
@ -43,7 +43,7 @@ void ActBossChar_Ironhead(void)
|
||||||
|
|
||||||
case 100:
|
case 100:
|
||||||
npc->act_no = 101;
|
npc->act_no = 101;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 101:
|
case 101:
|
||||||
|
@ -78,7 +78,7 @@ void ActBossChar_Ironhead(void)
|
||||||
npc->ym = Random(-0x200, 0x200);
|
npc->ym = Random(-0x200, 0x200);
|
||||||
npc->xm = Random(-0x200, 0x200);
|
npc->xm = Random(-0x200, 0x200);
|
||||||
|
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 251:
|
case 251:
|
||||||
if (npc->direct == 2)
|
if (npc->direct == 2)
|
||||||
|
@ -148,7 +148,7 @@ void ActBossChar_Ironhead(void)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1000:
|
case 1000:
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->ani_no = 8;
|
npc->ani_no = 8;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->act_no = 1001;
|
npc->act_no = 1001;
|
||||||
|
|
|
@ -97,7 +97,7 @@ static void ActBoss01_5()
|
||||||
switch (gBoss[5].act_no)
|
switch (gBoss[5].act_no)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
gBoss[5].bits |= npc_solidSoft | npc_ignoreSolid;
|
gBoss[5].bits |= (NPC_SOLID_SOFT | NPC_IGNORE_SOLIDITY);
|
||||||
|
|
||||||
gBoss[5].hit.front = 0x2800;
|
gBoss[5].hit.front = 0x2800;
|
||||||
gBoss[5].hit.top = 0x4800;
|
gBoss[5].hit.top = 0x4800;
|
||||||
|
@ -136,7 +136,7 @@ void ActBossChar_Omega()
|
||||||
gBoss[0].hit.back = 0x1000;
|
gBoss[0].hit.back = 0x1000;
|
||||||
gBoss[0].hit.bottom = 0x2000;
|
gBoss[0].hit.bottom = 0x2000;
|
||||||
|
|
||||||
gBoss[0].bits = (npc_ignoreSolid | npc_eventDie | npc_showDamage);
|
gBoss[0].bits = (NPC_IGNORE_SOLIDITY | NPC_EVENT_WHEN_KILLED | NPC_SHOW_DAMAGE);
|
||||||
gBoss[0].size = 3;
|
gBoss[0].size = 3;
|
||||||
gBoss[0].exp = 1;
|
gBoss[0].exp = 1;
|
||||||
gBoss[0].code_event = 210;
|
gBoss[0].code_event = 210;
|
||||||
|
@ -149,7 +149,7 @@ void ActBossChar_Omega()
|
||||||
gBoss[1].view.back = 0x1800;
|
gBoss[1].view.back = 0x1800;
|
||||||
gBoss[1].view.bottom = 0x1000;
|
gBoss[1].view.bottom = 0x1000;
|
||||||
|
|
||||||
gBoss[1].bits = npc_ignoreSolid;
|
gBoss[1].bits = NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
gBoss[2] = gBoss[1];
|
gBoss[2] = gBoss[1];
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ void ActBossChar_Omega()
|
||||||
gBoss[3].hit.back = 0x1000;
|
gBoss[3].hit.back = 0x1000;
|
||||||
gBoss[3].hit.bottom = 0x1000;
|
gBoss[3].hit.bottom = 0x1000;
|
||||||
|
|
||||||
gBoss[3].bits = npc_ignoreSolid;
|
gBoss[3].bits = NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
gBoss[3].x = gBoss[0].x - 0x2000;
|
gBoss[3].x = gBoss[0].x - 0x2000;
|
||||||
gBoss[3].y = gBoss[0].y;
|
gBoss[3].y = gBoss[0].y;
|
||||||
|
@ -205,10 +205,10 @@ void ActBossChar_Omega()
|
||||||
|
|
||||||
gBoss[0].act_no = 110;
|
gBoss[0].act_no = 110;
|
||||||
|
|
||||||
gBoss[0].bits |= npc_shootable;
|
gBoss[0].bits |= NPC_SHOOTABLE;
|
||||||
gBoss[0].bits &= ~npc_ignoreSolid;
|
gBoss[0].bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
gBoss[3].bits &= ~npc_ignoreSolid;
|
gBoss[3].bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
gBoss[4].bits &= ~npc_ignoreSolid;
|
gBoss[4].bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
gBoss[3].act_no = 3;
|
gBoss[3].act_no = 3;
|
||||||
gBoss[4].act_no = 3;
|
gBoss[4].act_no = 3;
|
||||||
|
@ -238,7 +238,7 @@ void ActBossChar_Omega()
|
||||||
{
|
{
|
||||||
gBoss[0].act_no = 60;
|
gBoss[0].act_no = 60;
|
||||||
gBoss[0].act_wait = 0;
|
gBoss[0].act_wait = 0;
|
||||||
gBoss[0].bits |= npc_shootable;
|
gBoss[0].bits |= NPC_SHOOTABLE;
|
||||||
gBoss[0].hit.front = 0x2000;
|
gBoss[0].hit.front = 0x2000;
|
||||||
gBoss[0].hit.back = 0x2000;
|
gBoss[0].hit.back = 0x2000;
|
||||||
}
|
}
|
||||||
|
@ -281,7 +281,7 @@ void ActBossChar_Omega()
|
||||||
gBoss[0].act_no = 80;
|
gBoss[0].act_no = 80;
|
||||||
gBoss[0].act_wait = 0;
|
gBoss[0].act_wait = 0;
|
||||||
|
|
||||||
gBoss[0].bits &= ~npc_shootable;
|
gBoss[0].bits &= ~NPC_SHOOTABLE;
|
||||||
|
|
||||||
gBoss[0].hit.front = 0x3000;
|
gBoss[0].hit.front = 0x3000;
|
||||||
gBoss[0].hit.back = 0x3000;
|
gBoss[0].hit.back = 0x3000;
|
||||||
|
@ -369,7 +369,7 @@ void ActBossChar_Omega()
|
||||||
if (!gBoss[0].count2)
|
if (!gBoss[0].count2)
|
||||||
{
|
{
|
||||||
gBoss[0].act_no = 140;
|
gBoss[0].act_no = 140;
|
||||||
gBoss[0].bits |= npc_shootable;
|
gBoss[0].bits |= NPC_SHOOTABLE;
|
||||||
|
|
||||||
gBoss[0].hit.front = 0x2000;
|
gBoss[0].hit.front = 0x2000;
|
||||||
gBoss[0].hit.back = 0x2000;
|
gBoss[0].hit.back = 0x2000;
|
||||||
|
|
|
@ -35,7 +35,7 @@ void ActBossChar_Press(void)
|
||||||
npc->hit.top = 0x7800;
|
npc->hit.top = 0x7800;
|
||||||
npc->hit.back = 0x5000;
|
npc->hit.back = 0x5000;
|
||||||
npc->hit.bottom = 0x6000;
|
npc->hit.bottom = 0x6000;
|
||||||
npc->bits = 0x8248;
|
npc->bits = (NPC_IGNORE_SOLIDITY | NPC_SOLID_HARD | NPC_EVENT_WHEN_KILLED | NPC_SHOW_DAMAGE);
|
||||||
npc->size = 3;
|
npc->size = 3;
|
||||||
npc->damage = 10;
|
npc->damage = 10;
|
||||||
npc->code_event = 1000;
|
npc->code_event = 1000;
|
||||||
|
@ -61,7 +61,7 @@ void ActBossChar_Press(void)
|
||||||
npc->act_no = 21;
|
npc->act_no = 21;
|
||||||
npc->x = 0x14000;
|
npc->x = 0x14000;
|
||||||
npc->y = 0x33A00;
|
npc->y = 0x33A00;
|
||||||
npc->bits &= ~0x40;
|
npc->bits &= ~NPC_SOLID_HARD;
|
||||||
gBoss[1].cond = 0;
|
gBoss[1].cond = 0;
|
||||||
gBoss[2].cond = 0;
|
gBoss[2].cond = 0;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
@ -107,12 +107,12 @@ void ActBossChar_Press(void)
|
||||||
gBoss[1].hit.back = 0x1C00;
|
gBoss[1].hit.back = 0x1C00;
|
||||||
gBoss[1].hit.top = 0x1000;
|
gBoss[1].hit.top = 0x1000;
|
||||||
gBoss[1].hit.bottom = 0x1000;
|
gBoss[1].hit.bottom = 0x1000;
|
||||||
gBoss[1].bits = 12;
|
gBoss[1].bits = (NPC_INVULNERABLE | NPC_IGNORE_SOLIDITY);
|
||||||
|
|
||||||
gBoss[2] = gBoss[1];
|
gBoss[2] = gBoss[1];
|
||||||
|
|
||||||
gBoss[3].cond = 0x90;
|
gBoss[3].cond = 0x90;
|
||||||
gBoss[3].bits |= 0x20;
|
gBoss[3].bits |= NPC_SHOOTABLE;
|
||||||
gBoss[3].hit.front = 0xC00;
|
gBoss[3].hit.front = 0xC00;
|
||||||
gBoss[3].hit.back = 0xC00;
|
gBoss[3].hit.back = 0xC00;
|
||||||
gBoss[3].hit.top = 0x1000;
|
gBoss[3].hit.top = 0x1000;
|
||||||
|
@ -148,7 +148,7 @@ void ActBossChar_Press(void)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 500:
|
case 500:
|
||||||
gBoss[3].bits &= ~0x20;
|
gBoss[3].bits &= ~NPC_SHOOTABLE;
|
||||||
|
|
||||||
npc->act_no = 501;
|
npc->act_no = 501;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
|
|
|
@ -58,7 +58,7 @@ static void ActBossCharT_DragonBody(NPCHAR *npc)
|
||||||
|
|
||||||
case 1000:
|
case 1000:
|
||||||
npc->act_no = 1001;
|
npc->act_no = 1001;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1001:
|
case 1001:
|
||||||
deg = ((npc->pNpc->count1 / 4) + npc->count1) % 0x100;
|
deg = ((npc->pNpc->count1 / 4) + npc->count1) % 0x100;
|
||||||
|
@ -120,7 +120,7 @@ static void ActBossCharT_DragonHead(NPCHAR *npc)
|
||||||
npc->act_no = 200;
|
npc->act_no = 200;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 200:
|
case 200:
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->hit.front = 0x2000;
|
npc->hit.front = 0x2000;
|
||||||
npc->act_no = 201;
|
npc->act_no = 201;
|
||||||
|
@ -148,7 +148,7 @@ static void ActBossCharT_DragonHead(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->hit.front = 0x1000;
|
npc->hit.front = 0x1000;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->count2 = 0;
|
npc->count2 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,7 +205,7 @@ static void ActBossCharT_DragonHead(NPCHAR *npc)
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->hit.front = 0x2000;
|
npc->hit.front = 0x2000;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 401:
|
case 401:
|
||||||
if (++npc->act_wait == 3)
|
if (++npc->act_wait == 3)
|
||||||
|
@ -215,7 +215,7 @@ static void ActBossCharT_DragonHead(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->hit.front = 0x1000;
|
npc->hit.front = 0x1000;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->count2 = 0;
|
npc->count2 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,7 +237,7 @@ static void ActBossCharT_DragonHead(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1000:
|
case 1000:
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->ani_no = 3;
|
npc->ani_no = 3;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -279,8 +279,8 @@ void ActBossChar_Twin(void)
|
||||||
npc->hit.top = 0x1000;
|
npc->hit.top = 0x1000;
|
||||||
npc->hit.back = 0x1000;
|
npc->hit.back = 0x1000;
|
||||||
npc->hit.bottom = 0x1000;
|
npc->hit.bottom = 0x1000;
|
||||||
npc->bits = 8;
|
npc->bits = NPC_IGNORE_SOLIDITY;
|
||||||
npc->bits |= 0x200;
|
npc->bits |= NPC_EVENT_WHEN_KILLED;
|
||||||
npc->size = 3;
|
npc->size = 3;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->code_event = 1000;
|
npc->code_event = 1000;
|
||||||
|
@ -298,7 +298,7 @@ void ActBossChar_Twin(void)
|
||||||
gBoss[2].hit.front = 0x1800;
|
gBoss[2].hit.front = 0x1800;
|
||||||
gBoss[2].hit.top = 0x1400;
|
gBoss[2].hit.top = 0x1400;
|
||||||
gBoss[2].hit.bottom = 0x1400;
|
gBoss[2].hit.bottom = 0x1400;
|
||||||
gBoss[2].bits = 12;
|
gBoss[2].bits = (NPC_INVULNERABLE | NPC_IGNORE_SOLIDITY);
|
||||||
gBoss[2].pNpc = &gBoss[3];
|
gBoss[2].pNpc = &gBoss[3];
|
||||||
gBoss[2].cond |= 0x10;
|
gBoss[2].cond |= 0x10;
|
||||||
gBoss[2].damage = 10;
|
gBoss[2].damage = 10;
|
||||||
|
@ -312,7 +312,7 @@ void ActBossChar_Twin(void)
|
||||||
gBoss[3].hit.front = 0x1800;
|
gBoss[3].hit.front = 0x1800;
|
||||||
gBoss[3].hit.top = 0x400;
|
gBoss[3].hit.top = 0x400;
|
||||||
gBoss[3].hit.bottom = 0x2000;
|
gBoss[3].hit.bottom = 0x2000;
|
||||||
gBoss[3].bits = 8;
|
gBoss[3].bits = NPC_IGNORE_SOLIDITY;
|
||||||
gBoss[3].pNpc = npc;
|
gBoss[3].pNpc = npc;
|
||||||
gBoss[3].damage = 10;
|
gBoss[3].damage = 10;
|
||||||
|
|
||||||
|
|
|
@ -35,11 +35,11 @@ static void ActBossChar03_01(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
case 10:
|
case 10:
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->bits &= ~0x10;
|
npc->bits &= ~NPC_BOUNCY;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 100:
|
case 100:
|
||||||
npc->bits |= 0x10;
|
npc->bits |= NPC_BOUNCY;
|
||||||
npc->act_no = 101;
|
npc->act_no = 101;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
|
@ -62,7 +62,7 @@ static void ActBossChar03_01(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 102:
|
case 102:
|
||||||
npc->bits &= ~0x10;
|
npc->bits &= ~NPC_BOUNCY;
|
||||||
npc->act_no = 103;
|
npc->act_no = 103;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->ani_wait = 0;
|
npc->ani_wait = 0;
|
||||||
|
@ -83,8 +83,8 @@ static void ActBossChar03_01(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 200:
|
case 200:
|
||||||
npc->bits |= 0x10;
|
npc->bits |= NPC_BOUNCY;
|
||||||
npc->bits |= 0x80;
|
npc->bits |= NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
npc->act_no = 201;
|
npc->act_no = 201;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 4;
|
npc->ani_no = 4;
|
||||||
|
@ -107,7 +107,7 @@ static void ActBossChar03_01(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 202:
|
case 202:
|
||||||
npc->bits &= ~0x10;
|
npc->bits &= ~NPC_BOUNCY;
|
||||||
npc->act_no = 203;
|
npc->act_no = 203;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->ani_wait = 0;
|
npc->ani_wait = 0;
|
||||||
|
@ -131,7 +131,7 @@ static void ActBossChar03_01(NPCHAR *npc)
|
||||||
npc->act_no = 301;
|
npc->act_no = 301;
|
||||||
npc->ani_no = 4;
|
npc->ani_no = 4;
|
||||||
npc->ani_wait = 0;
|
npc->ani_wait = 0;
|
||||||
npc->bits |= 0x10;
|
npc->bits |= NPC_BOUNCY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 301:
|
case 301:
|
||||||
if (++npc->ani_wait > 0)
|
if (++npc->ani_wait > 0)
|
||||||
|
@ -157,7 +157,7 @@ static void ActBossChar03_01(NPCHAR *npc)
|
||||||
npc->act_no = 401;
|
npc->act_no = 401;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->ani_wait = 0;
|
npc->ani_wait = 0;
|
||||||
npc->bits |= 0x10;
|
npc->bits |= NPC_BOUNCY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 401:
|
case 401:
|
||||||
if (++npc->ani_wait > 0)
|
if (++npc->ani_wait > 0)
|
||||||
|
@ -189,12 +189,12 @@ static void ActBossChar03_01(NPCHAR *npc)
|
||||||
if (npc->act_no >= 100 && gMC.y < npc->y + 0x800 && gMC.y > npc->y - 0x800)
|
if (npc->act_no >= 100 && gMC.y < npc->y + 0x800 && gMC.y > npc->y - 0x800)
|
||||||
{
|
{
|
||||||
npc->damage = 10;
|
npc->damage = 10;
|
||||||
npc->bits |= 0x80;
|
npc->bits |= NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->bits &= ~0x80;
|
npc->bits &= ~NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (npc->xm > 0x400)
|
if (npc->xm > 0x400)
|
||||||
|
@ -380,14 +380,14 @@ static void ActBossChar03_04(NPCHAR *npc)
|
||||||
switch (npc->act_no)
|
switch (npc->act_no)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->act_wait = 10 * npc->tgt_x + 40;
|
npc->act_wait = 10 * npc->tgt_x + 40;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 11:
|
case 11:
|
||||||
if (npc->act_wait < 16 && npc->act_wait / 2 % 2)
|
if (npc->act_wait < 16 && npc->act_wait / 2 % 2)
|
||||||
|
@ -449,14 +449,14 @@ static void ActBossChar03_face(NPCHAR *npc)
|
||||||
switch (npc->act_no)
|
switch (npc->act_no)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
gBoss[0].bits &= ~0x20;
|
gBoss[0].bits &= ~NPC_SHOOTABLE;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->act_wait = 10 * npc->tgt_x + 40;
|
npc->act_wait = 10 * npc->tgt_x + 40;
|
||||||
gBoss[0].bits |= 0x20;
|
gBoss[0].bits |= NPC_SHOOTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 11:
|
case 11:
|
||||||
if (gBoss[0].shock)
|
if (gBoss[0].shock)
|
||||||
|
@ -507,7 +507,7 @@ void ActBossChar_MonstX(void)
|
||||||
npc->hit.top = 0x3000;
|
npc->hit.top = 0x3000;
|
||||||
npc->hit.back = 0x3000;
|
npc->hit.back = 0x3000;
|
||||||
npc->hit.bottom = 0x3000;
|
npc->hit.bottom = 0x3000;
|
||||||
npc->bits = 0x8208;
|
npc->bits = (NPC_IGNORE_SOLIDITY | NPC_EVENT_WHEN_KILLED | NPC_SHOW_DAMAGE);
|
||||||
npc->size = 3;
|
npc->size = 3;
|
||||||
npc->code_event = 1000;
|
npc->code_event = 1000;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
|
@ -518,7 +518,7 @@ void ActBossChar_MonstX(void)
|
||||||
gBoss[1].view.top = 0x3000;
|
gBoss[1].view.top = 0x3000;
|
||||||
gBoss[1].view.back = 0x3000;
|
gBoss[1].view.back = 0x3000;
|
||||||
gBoss[1].view.bottom = 0x3000;
|
gBoss[1].view.bottom = 0x3000;
|
||||||
gBoss[1].bits = 8;
|
gBoss[1].bits = NPC_IGNORE_SOLIDITY;
|
||||||
gBoss[2] = gBoss[1];
|
gBoss[2] = gBoss[1];
|
||||||
gBoss[2].direct = 2;
|
gBoss[2].direct = 2;
|
||||||
gBoss[3].cond = 0x80;
|
gBoss[3].cond = 0x80;
|
||||||
|
@ -535,7 +535,7 @@ void ActBossChar_MonstX(void)
|
||||||
gBoss[3].hit.back = 0xA00;
|
gBoss[3].hit.back = 0xA00;
|
||||||
gBoss[3].hit.top = 0xA00;
|
gBoss[3].hit.top = 0xA00;
|
||||||
gBoss[3].hit.bottom = 0xA00;
|
gBoss[3].hit.bottom = 0xA00;
|
||||||
gBoss[3].bits = 8;
|
gBoss[3].bits = NPC_IGNORE_SOLIDITY;
|
||||||
gBoss[3].tgt_x = 0;
|
gBoss[3].tgt_x = 0;
|
||||||
gBoss[4] = gBoss[3];
|
gBoss[4] = gBoss[3];
|
||||||
gBoss[4].tgt_x = 1;
|
gBoss[4].tgt_x = 1;
|
||||||
|
@ -557,7 +557,7 @@ void ActBossChar_MonstX(void)
|
||||||
gBoss[7].hit.top = 0x3000;
|
gBoss[7].hit.top = 0x3000;
|
||||||
gBoss[7].hit.back = 0x1000;
|
gBoss[7].hit.back = 0x1000;
|
||||||
gBoss[7].hit.bottom = 0x2000;
|
gBoss[7].hit.bottom = 0x2000;
|
||||||
gBoss[7].bits = 8;
|
gBoss[7].bits = NPC_IGNORE_SOLIDITY;
|
||||||
gBoss[7].size = 3;
|
gBoss[7].size = 3;
|
||||||
gBoss[7].ani_no = 0;
|
gBoss[7].ani_no = 0;
|
||||||
gBoss[9].cond = 0x80;
|
gBoss[9].cond = 0x80;
|
||||||
|
@ -574,7 +574,7 @@ void ActBossChar_MonstX(void)
|
||||||
gBoss[9].hit.top = 0x1000;
|
gBoss[9].hit.top = 0x1000;
|
||||||
gBoss[9].hit.back = 0x3800;
|
gBoss[9].hit.back = 0x3800;
|
||||||
gBoss[9].hit.bottom = 0x2000;
|
gBoss[9].hit.bottom = 0x2000;
|
||||||
gBoss[9].bits = 141;
|
gBoss[9].bits = (NPC_SOLID_SOFT | NPC_INVULNERABLE | NPC_IGNORE_SOLIDITY | NPC_REAR_AND_TOP_DONT_HURT);
|
||||||
gBoss[9].size = 3;
|
gBoss[9].size = 3;
|
||||||
gBoss[10] = gBoss[9];
|
gBoss[10] = gBoss[9];
|
||||||
gBoss[10].x = 0x108000;
|
gBoss[10].x = 0x108000;
|
||||||
|
@ -596,25 +596,25 @@ void ActBossChar_MonstX(void)
|
||||||
gBoss[13].view.back = 0x5400;
|
gBoss[13].view.back = 0x5400;
|
||||||
gBoss[13].count1 = 9;
|
gBoss[13].count1 = 9;
|
||||||
gBoss[13].ani_no = 0;
|
gBoss[13].ani_no = 0;
|
||||||
gBoss[13].bits = 8;
|
gBoss[13].bits = NPC_IGNORE_SOLIDITY;
|
||||||
gBoss[14] = gBoss[13];
|
gBoss[14] = gBoss[13];
|
||||||
gBoss[14].view.front = 0x5400;
|
gBoss[14].view.front = 0x5400;
|
||||||
gBoss[14].view.back = 0x3C00;
|
gBoss[14].view.back = 0x3C00;
|
||||||
gBoss[14].count1 = 10;
|
gBoss[14].count1 = 10;
|
||||||
gBoss[14].ani_no = 1;
|
gBoss[14].ani_no = 1;
|
||||||
gBoss[14].bits = 8;
|
gBoss[14].bits = NPC_IGNORE_SOLIDITY;
|
||||||
gBoss[15] = gBoss[13];
|
gBoss[15] = gBoss[13];
|
||||||
gBoss[15].view.top = 0x2000;
|
gBoss[15].view.top = 0x2000;
|
||||||
gBoss[15].view.bottom = 0x2000;
|
gBoss[15].view.bottom = 0x2000;
|
||||||
gBoss[15].count1 = 11;
|
gBoss[15].count1 = 11;
|
||||||
gBoss[15].ani_no = 2;
|
gBoss[15].ani_no = 2;
|
||||||
gBoss[15].bits = 8;
|
gBoss[15].bits = NPC_IGNORE_SOLIDITY;
|
||||||
gBoss[16] = gBoss[15];
|
gBoss[16] = gBoss[15];
|
||||||
gBoss[16].view.front = 0x5400;
|
gBoss[16].view.front = 0x5400;
|
||||||
gBoss[16].view.back = 0x3C00;
|
gBoss[16].view.back = 0x3C00;
|
||||||
gBoss[16].count1 = 12;
|
gBoss[16].count1 = 12;
|
||||||
gBoss[16].ani_no = 3;
|
gBoss[16].ani_no = 3;
|
||||||
gBoss[16].bits = 8;
|
gBoss[16].bits = NPC_IGNORE_SOLIDITY;
|
||||||
npc->act_no = 2;
|
npc->act_no = 2;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -624,7 +624,7 @@ int JudgeHitMyCharNPC(NPCHAR *npc)
|
||||||
&& gMC.y + gMC.hit.bottom > npc->y - npc->hit.top
|
&& gMC.y + gMC.hit.bottom > npc->y - npc->hit.top
|
||||||
&& gMC.hit.bottom + gMC.y < npc->y + 0x600)
|
&& gMC.hit.bottom + gMC.y < npc->y + 0x600)
|
||||||
{
|
{
|
||||||
if (npc->bits & npc_bouncy)
|
if (npc->bits & NPC_BOUNCY)
|
||||||
{
|
{
|
||||||
gMC.ym = npc->ym - 0x200;
|
gMC.ym = npc->ym - 0x200;
|
||||||
hit |= 8;
|
hit |= 8;
|
||||||
|
@ -720,7 +720,7 @@ int JudgeHitMyCharNPC4(NPCHAR *npc)
|
||||||
gMC.y = npc->y - npc->hit.top - gMC.hit.bottom + 0x200;
|
gMC.y = npc->y - npc->hit.top - gMC.hit.bottom + 0x200;
|
||||||
hit |= 8;
|
hit |= 8;
|
||||||
}
|
}
|
||||||
else if (npc->bits & npc_bouncy)
|
else if (npc->bits & NPC_BOUNCY)
|
||||||
{
|
{
|
||||||
gMC.ym = npc->ym - 0x200;
|
gMC.ym = npc->ym - 0x200;
|
||||||
hit |= 8;
|
hit |= 8;
|
||||||
|
@ -780,12 +780,12 @@ void HitMyCharNpChar()
|
||||||
|
|
||||||
hit = 0;
|
hit = 0;
|
||||||
|
|
||||||
if (gNPC[i].bits & npc_solidSoft)
|
if (gNPC[i].bits & NPC_SOLID_SOFT)
|
||||||
{
|
{
|
||||||
hit = JudgeHitMyCharNPC(&gNPC[i]);
|
hit = JudgeHitMyCharNPC(&gNPC[i]);
|
||||||
gMC.flag |= hit;
|
gMC.flag |= hit;
|
||||||
}
|
}
|
||||||
else if (gNPC[i].bits & npc_solidHard)
|
else if (gNPC[i].bits & NPC_SOLID_HARD)
|
||||||
{
|
{
|
||||||
hit = JudgeHitMyCharNPC4(&gNPC[i]);
|
hit = JudgeHitMyCharNPC4(&gNPC[i]);
|
||||||
gMC.flag |= hit;
|
gMC.flag |= hit;
|
||||||
|
@ -818,13 +818,13 @@ void HitMyCharNpChar()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run event on contact
|
// Run event on contact
|
||||||
if ((g_GameFlags & 4) == 0 && hit && gNPC[i].bits & npc_eventTouch)
|
if ((g_GameFlags & 4) == 0 && hit && gNPC[i].bits & NPC_EVENT_WHEN_TOUCHED)
|
||||||
StartTextScript(gNPC[i].code_event);
|
StartTextScript(gNPC[i].code_event);
|
||||||
|
|
||||||
// NPC damage
|
// NPC damage
|
||||||
if (g_GameFlags & 2 && (gNPC[i].bits & npc_interact) == 0)
|
if (g_GameFlags & 2 && (gNPC[i].bits & NPC_INTERACTABLE) == 0)
|
||||||
{
|
{
|
||||||
if (gNPC[i].bits & npc_rearTop)
|
if (gNPC[i].bits & NPC_REAR_AND_TOP_DONT_HURT)
|
||||||
{
|
{
|
||||||
if (hit & 4 && gNPC[i].xm < 0)
|
if (hit & 4 && gNPC[i].xm < 0)
|
||||||
DamageMyChar(gNPC[i].damage);
|
DamageMyChar(gNPC[i].damage);
|
||||||
|
@ -842,7 +842,7 @@ void HitMyCharNpChar()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Interaction
|
// Interaction
|
||||||
if ((g_GameFlags & 4) == 0 && hit && gMC.cond & 1 && gNPC[i].bits & npc_interact)
|
if ((g_GameFlags & 4) == 0 && hit && gMC.cond & 1 && gNPC[i].bits & NPC_INTERACTABLE)
|
||||||
{
|
{
|
||||||
StartTextScript(gNPC[i].code_event);
|
StartTextScript(gNPC[i].code_event);
|
||||||
gMC.xm = 0;
|
gMC.xm = 0;
|
||||||
|
@ -869,12 +869,12 @@ void HitMyCharBoss()
|
||||||
|
|
||||||
hit = 0;
|
hit = 0;
|
||||||
|
|
||||||
if (gBoss[b].bits & npc_solidSoft)
|
if (gBoss[b].bits & NPC_SOLID_SOFT)
|
||||||
{
|
{
|
||||||
hit = JudgeHitMyCharNPC(&gBoss[b]);
|
hit = JudgeHitMyCharNPC(&gBoss[b]);
|
||||||
gMC.flag |= hit;
|
gMC.flag |= hit;
|
||||||
}
|
}
|
||||||
else if (gBoss[b].bits & npc_solidHard)
|
else if (gBoss[b].bits & NPC_SOLID_HARD)
|
||||||
{
|
{
|
||||||
hit = JudgeHitMyCharNPC4(&gBoss[b]);
|
hit = JudgeHitMyCharNPC4(&gBoss[b]);
|
||||||
gMC.flag |= hit;
|
gMC.flag |= hit;
|
||||||
|
@ -884,13 +884,13 @@ void HitMyCharBoss()
|
||||||
hit = JudgeHitMyCharNPC3(&gBoss[b]);
|
hit = JudgeHitMyCharNPC3(&gBoss[b]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(g_GameFlags & 4) && hit && gBoss[b].bits & npc_eventTouch)
|
if (!(g_GameFlags & 4) && hit && gBoss[b].bits & NPC_EVENT_WHEN_TOUCHED)
|
||||||
{
|
{
|
||||||
StartTextScript(gBoss[b].code_event);
|
StartTextScript(gBoss[b].code_event);
|
||||||
gMC.ques = 0;
|
gMC.ques = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gBoss[b].bits & npc_rearTop)
|
if (gBoss[b].bits & NPC_REAR_AND_TOP_DONT_HURT)
|
||||||
{
|
{
|
||||||
if (hit & 4 && gBoss[b].xm < 0)
|
if (hit & 4 && gBoss[b].xm < 0)
|
||||||
DamageMyChar(gBoss[b].damage);
|
DamageMyChar(gBoss[b].damage);
|
||||||
|
@ -902,7 +902,7 @@ void HitMyCharBoss()
|
||||||
DamageMyChar(gBoss[b].damage);
|
DamageMyChar(gBoss[b].damage);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(g_GameFlags & 4) && hit && (gMC.cond & 1) && gBoss[b].bits & npc_interact)
|
if (!(g_GameFlags & 4) && hit && (gMC.cond & 1) && gBoss[b].bits & NPC_INTERACTABLE)
|
||||||
{
|
{
|
||||||
StartTextScript(gBoss[b].code_event);
|
StartTextScript(gBoss[b].code_event);
|
||||||
gMC.xm = 0;
|
gMC.xm = 0;
|
||||||
|
|
|
@ -105,7 +105,7 @@ BOOL LoadEvent(const char *path_event)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Set NPC parameters
|
// Set NPC parameters
|
||||||
gNPC[n].direct = (eve.bits & npc_altDir) ? 2 : 0;
|
gNPC[n].direct = (eve.bits & NPC_SPAWN_IN_OTHER_DIRECTION) ? 2 : 0;
|
||||||
gNPC[n].code_char = eve.code_char;
|
gNPC[n].code_char = eve.code_char;
|
||||||
gNPC[n].code_event = eve.code_event;
|
gNPC[n].code_event = eve.code_event;
|
||||||
gNPC[n].code_flag = eve.code_flag;
|
gNPC[n].code_flag = eve.code_flag;
|
||||||
|
@ -117,12 +117,12 @@ BOOL LoadEvent(const char *path_event)
|
||||||
SetUniqueParameter(&gNPC[n]);
|
SetUniqueParameter(&gNPC[n]);
|
||||||
|
|
||||||
// Check flags
|
// Check flags
|
||||||
if (gNPC[n].bits & npc_appearSet)
|
if (gNPC[n].bits & NPC_APPEAR_WHEN_FLAG_SET)
|
||||||
{
|
{
|
||||||
if (GetNPCFlag(gNPC[n].code_flag) == TRUE)
|
if (GetNPCFlag(gNPC[n].code_flag) == TRUE)
|
||||||
gNPC[n].cond |= 0x80;
|
gNPC[n].cond |= 0x80;
|
||||||
}
|
}
|
||||||
else if (gNPC[n].bits & npc_hideSet)
|
else if (gNPC[n].bits & NPC_HIDE_WHEN_FLAG_SET)
|
||||||
{
|
{
|
||||||
if (GetNPCFlag(gNPC[n].code_flag) == FALSE)
|
if (GetNPCFlag(gNPC[n].code_flag) == FALSE)
|
||||||
gNPC[n].cond |= 0x80;
|
gNPC[n].cond |= 0x80;
|
||||||
|
@ -346,7 +346,7 @@ void PutNpChar(int fx, int fy)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
a = 0;
|
a = 0;
|
||||||
if (gNPC[n].bits & npc_showDamage && gNPC[n].damage_view)
|
if (gNPC[n].bits & NPC_SHOW_DAMAGE && gNPC[n].damage_view)
|
||||||
{
|
{
|
||||||
SetValueView(&gNPC[n].x, &gNPC[n].y, gNPC[n].damage_view);
|
SetValueView(&gNPC[n].x, &gNPC[n].y, gNPC[n].damage_view);
|
||||||
gNPC[n].damage_view = 0;
|
gNPC[n].damage_view = 0;
|
||||||
|
@ -391,7 +391,7 @@ void ChangeNpCharByEvent(int code_event, int code_char, int dir)
|
||||||
{
|
{
|
||||||
if ((gNPC[n].cond & 0x80) && gNPC[n].code_event == code_event)
|
if ((gNPC[n].cond & 0x80) && gNPC[n].code_event == code_event)
|
||||||
{
|
{
|
||||||
gNPC[n].bits &= (npc_eventTouch | npc_eventDie | 0x400 | npc_appearSet | npc_altDir | npc_interact | npc_hideSet);
|
gNPC[n].bits &= ~(NPC_SOLID_SOFT | NPC_IGNORE_TILE_44 | NPC_INVULNERABLE | NPC_IGNORE_SOLIDITY | NPC_BOUNCY | NPC_SHOOTABLE | NPC_SOLID_HARD | NPC_REAR_AND_TOP_DONT_HURT | NPC_SHOW_DAMAGE); // Clear these flags
|
||||||
gNPC[n].code_char = code_char;
|
gNPC[n].code_char = code_char;
|
||||||
gNPC[n].bits |= gNpcTable[gNPC[n].code_char].bits;
|
gNPC[n].bits |= gNpcTable[gNPC[n].code_char].bits;
|
||||||
gNPC[n].exp = gNpcTable[gNPC[n].code_char].exp;
|
gNPC[n].exp = gNpcTable[gNPC[n].code_char].exp;
|
||||||
|
@ -433,8 +433,8 @@ void ChangeCheckableNpCharByEvent(int code_event, int code_char, int dir)
|
||||||
{
|
{
|
||||||
if ((gNPC[n].cond & 0x80) != 0 && gNPC[n].code_event == code_event)
|
if ((gNPC[n].cond & 0x80) != 0 && gNPC[n].code_event == code_event)
|
||||||
{
|
{
|
||||||
gNPC[n].bits &= ~(npc_showDamage | npc_rearTop | npc_solidHard | npc_shootable | npc_bouncy | npc_ignoreSolid | npc_invulnerable | npc_ignore44 | npc_solidSoft);
|
gNPC[n].bits &= ~(NPC_SOLID_SOFT | NPC_IGNORE_TILE_44 | NPC_INVULNERABLE | NPC_IGNORE_SOLIDITY | NPC_BOUNCY | NPC_SHOOTABLE | NPC_SOLID_HARD | NPC_REAR_AND_TOP_DONT_HURT | NPC_SHOW_DAMAGE); // Clear these flags
|
||||||
gNPC[n].bits |= npc_interact;
|
gNPC[n].bits |= NPC_INTERACTABLE;
|
||||||
gNPC[n].code_char = code_char;
|
gNPC[n].code_char = code_char;
|
||||||
gNPC[n].bits |= gNpcTable[gNPC[n].code_char].bits;
|
gNPC[n].bits |= gNpcTable[gNPC[n].code_char].bits;
|
||||||
gNPC[n].exp = gNpcTable[gNPC[n].code_char].exp;
|
gNPC[n].exp = gNpcTable[gNPC[n].code_char].exp;
|
||||||
|
|
33
src/NpChar.h
33
src/NpChar.h
|
@ -6,23 +6,24 @@
|
||||||
|
|
||||||
#define NPC_MAX 0x200
|
#define NPC_MAX 0x200
|
||||||
|
|
||||||
enum NPC_flags
|
// Be careful when changing these: they're baked into the 'npc.tbl' file
|
||||||
|
enum NPCFlags
|
||||||
{
|
{
|
||||||
npc_solidSoft = 0x1, //Pushes quote out
|
NPC_SOLID_SOFT = 1<<0, // Pushes Quote out
|
||||||
npc_ignore44 = 0x2, //Ignores tile 44 (No NPC)
|
NPC_IGNORE_TILE_44 = 1<<1, // Ignores tile 44, which normally blocks NPCs
|
||||||
npc_invulnerable = 0x4, //Can't get hit
|
NPC_INVULNERABLE = 1<<2, // Can't be hurt
|
||||||
npc_ignoreSolid = 0x8, //Doesn't collide with anything
|
NPC_IGNORE_SOLIDITY = 1<<3, // Doesn't collide with anything
|
||||||
npc_bouncy = 0x10, //Quote bounces on the top
|
NPC_BOUNCY = 1<<4, // Quote bounces on top of NPC
|
||||||
npc_shootable = 0x20, //Can be shot
|
NPC_SHOOTABLE = 1<<5, // Can be shot
|
||||||
npc_solidHard = 0x40, //Essentially acts as level tiles
|
NPC_SOLID_HARD = 1<<6, // Essentially acts as level tiles
|
||||||
npc_rearTop = 0x80, //Rear and top don't hurt
|
NPC_REAR_AND_TOP_DONT_HURT = 1<<7, // Rear and top don't hurt when touched
|
||||||
npc_eventTouch = 0x100, //Run event when touched
|
NPC_EVENT_WHEN_TOUCHED = 1<<8, // Run event when touched
|
||||||
npc_eventDie = 0x200, //Run event when killed
|
NPC_EVENT_WHEN_KILLED = 1<<9, // Run event when killed
|
||||||
npc_appearSet = 0x800, //Only appear when flag is set
|
NPC_APPEAR_WHEN_FLAG_SET = 1<<11, // Only appear when flag is set
|
||||||
npc_altDir = 0x1000, //Spawn facing to the right (or however the npc interprets the direction as)
|
NPC_SPAWN_IN_OTHER_DIRECTION = 1<<12, // Spawn facing to the right (or however the NPC interprets the direction)
|
||||||
npc_interact = 0x2000, //Run event when interacted with
|
NPC_INTERACTABLE = 1<<13, // Run event when interacted with
|
||||||
npc_hideSet = 0x4000, //Hide when flag is set
|
NPC_HIDE_WHEN_FLAG_SET = 1<<14, // Hide when flag is set
|
||||||
npc_showDamage = 0x8000 //Show #Damage taken
|
NPC_SHOW_DAMAGE = 1<<15 // Show the number of damage taken when harmed
|
||||||
};
|
};
|
||||||
|
|
||||||
struct NPCHAR
|
struct NPCHAR
|
||||||
|
|
|
@ -746,7 +746,7 @@ void ActNpc008(NPCHAR *npc)
|
||||||
case 0:
|
case 0:
|
||||||
if (gMC.x < npc->x + 0x2000 && gMC.x > npc->x - 0x2000)
|
if (gMC.x < npc->x + 0x2000 && gMC.x > npc->x - 0x2000)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->ym = -0x100;
|
npc->ym = -0x100;
|
||||||
npc->tgt_y = npc->y;
|
npc->tgt_y = npc->y;
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
|
@ -765,7 +765,7 @@ void ActNpc008(NPCHAR *npc)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->rect.right = 0;
|
npc->rect.right = 0;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
|
@ -851,8 +851,8 @@ void ActNpc009(NPCHAR *npc)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
npc->bits |= 1;
|
npc->bits |= NPC_SOLID_SOFT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (npc->flag & 8)
|
if (npc->flag & 8)
|
||||||
|
@ -1125,7 +1125,7 @@ void ActNpc012(NPCHAR *npc)
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 3;
|
npc->ani_no = 3;
|
||||||
npc->ym = -0x800;
|
npc->ym = -0x800;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -1308,7 +1308,7 @@ void ActNpc012(NPCHAR *npc)
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 3;
|
npc->ani_no = 3;
|
||||||
npc->ym = -0x800;
|
npc->ym = -0x800;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
DeleteNpCharCode(150, 0);
|
DeleteNpCharCode(150, 0);
|
||||||
DeleteNpCharCode(117, 0);
|
DeleteNpCharCode(117, 0);
|
||||||
SetNpChar(355, 0, 0, 0, 0, 0, npc, 0x100);
|
SetNpChar(355, 0, 0, 0, 0, 0, npc, 0x100);
|
||||||
|
@ -1475,7 +1475,7 @@ void ActNpc015(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->bits |= 0x2000u;
|
npc->bits |= NPC_INTERACTABLE;
|
||||||
|
|
||||||
if (npc->direct == 2)
|
if (npc->direct == 2)
|
||||||
{
|
{
|
||||||
|
@ -1536,12 +1536,12 @@ void ActNpc016(NPCHAR *npc)
|
||||||
switch (npc->act_no)
|
switch (npc->act_no)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->bits |= 0x2000;
|
npc->bits |= NPC_INTERACTABLE;
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
|
|
||||||
if (npc->direct == 2)
|
if (npc->direct == 2)
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x2000;
|
npc->bits &= ~NPC_INTERACTABLE;
|
||||||
npc->ym = -0x200;
|
npc->ym = -0x200;
|
||||||
|
|
||||||
for (int i = 0; i < 4; ++i)
|
for (int i = 0; i < 4; ++i)
|
||||||
|
@ -1551,7 +1551,7 @@ void ActNpc016(NPCHAR *npc)
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
if (npc->flag & 8)
|
if (npc->flag & 8)
|
||||||
npc->bits |= 0x2000;
|
npc->bits |= NPC_INTERACTABLE;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -465,7 +465,7 @@ void ActNpc026(NPCHAR *npc)
|
||||||
npc->xm /= 2;
|
npc->xm /= 2;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->act_no = 3;
|
npc->act_no = 3;
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -482,7 +482,7 @@ void ActNpc026(NPCHAR *npc)
|
||||||
npc->xm *= 2;
|
npc->xm *= 2;
|
||||||
npc->count1 = 0;
|
npc->count1 = 0;
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -1027,7 +1027,7 @@ void ActNpc035(NPCHAR *npc)
|
||||||
npc->act_no = 3;
|
npc->act_no = 3;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -678,7 +678,7 @@ void ActNpc046(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
RECT rect = {0, 0, 16, 16};
|
RECT rect = {0, 0, 16, 16};
|
||||||
|
|
||||||
npc->bits |= 0x100;
|
npc->bits |= NPC_EVENT_WHEN_TOUCHED;
|
||||||
|
|
||||||
if (npc->direct == 0)
|
if (npc->direct == 0)
|
||||||
{
|
{
|
||||||
|
@ -708,10 +708,10 @@ void ActNpc047(NPCHAR *npc)
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->tgt_y = npc->y;
|
npc->tgt_y = npc->y;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits &= ~4;
|
npc->bits &= ~NPC_INVULNERABLE;
|
||||||
npc->bits &= ~1;
|
npc->bits &= ~NPC_SOLID_SOFT;
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
if (gMC.x > npc->x - 0x1000 && gMC.x < npc->x + 0x1000 && gMC.y > npc->y && gMC.y < npc->y + 0x1000)
|
if (gMC.x > npc->x - 0x1000 && gMC.x < npc->x + 0x1000 && gMC.y > npc->y && gMC.y < npc->y + 0x1000)
|
||||||
|
@ -741,7 +741,7 @@ void ActNpc047(NPCHAR *npc)
|
||||||
|
|
||||||
if (npc->ani_no == 4)
|
if (npc->ani_no == 4)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->act_no = 3;
|
npc->act_no = 3;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
}
|
}
|
||||||
|
@ -749,7 +749,7 @@ void ActNpc047(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
npc->bits |= 1;
|
npc->bits |= NPC_SOLID_SOFT;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
++npc->act_wait;
|
++npc->act_wait;
|
||||||
|
|
||||||
|
@ -762,13 +762,13 @@ void ActNpc047(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
npc->y += 0x200;
|
npc->y += 0x200;
|
||||||
|
|
||||||
if (++npc->act_wait == 32)
|
if (++npc->act_wait == 32)
|
||||||
{
|
{
|
||||||
npc->bits &= ~1;
|
npc->bits &= ~NPC_SOLID_SOFT;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->act_no = 5;
|
npc->act_no = 5;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
}
|
}
|
||||||
|
@ -827,8 +827,8 @@ void ActNpc048(NPCHAR *npc)
|
||||||
|
|
||||||
if (npc->direct == 2)
|
if (npc->direct == 2)
|
||||||
{
|
{
|
||||||
npc->bits &= ~npc_shootable;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits |= npc_invulnerable;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
npc->ym += 5;
|
npc->ym += 5;
|
||||||
|
@ -1808,7 +1808,7 @@ void ActNpc058(NPCHAR *npc)
|
||||||
case 0:
|
case 0:
|
||||||
if (gMC.x < npc->x + 0x2000 && gMC.x > npc->x - 0x2000)
|
if (gMC.x < npc->x + 0x2000 && gMC.x > npc->x - 0x2000)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->ym = -0x100;
|
npc->ym = -0x100;
|
||||||
npc->tgt_x = npc->x;
|
npc->tgt_x = npc->x;
|
||||||
npc->tgt_y = npc->y;
|
npc->tgt_y = npc->y;
|
||||||
|
@ -1835,7 +1835,7 @@ void ActNpc058(NPCHAR *npc)
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -165,7 +165,7 @@ void ActNpc060(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
npc->act_no = 12;
|
npc->act_no = 12;
|
||||||
npc->ani_no = 7;
|
npc->ani_no = 7;
|
||||||
npc->bits |= 0x2000;
|
npc->bits |= NPC_INTERACTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -520,7 +520,7 @@ void ActNpc063(NPCHAR *npc)
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
if (npc->ym > 0)
|
if (npc->ym > 0)
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
if (++npc->ani_wait > 2)
|
if (++npc->ani_wait > 2)
|
||||||
{
|
{
|
||||||
|
@ -569,7 +569,7 @@ void ActNpc063(NPCHAR *npc)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (npc->act_wait > 35)
|
if (npc->act_wait > 35)
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
|
|
||||||
if (npc->direct == 0)
|
if (npc->direct == 0)
|
||||||
npc->xm -= 0x40;
|
npc->xm -= 0x40;
|
||||||
|
@ -581,7 +581,7 @@ void ActNpc063(NPCHAR *npc)
|
||||||
npc->act_no = 4;
|
npc->act_no = 4;
|
||||||
npc->ani_no = 4;
|
npc->ani_no = 4;
|
||||||
npc->ym = -0x400;
|
npc->ym = -0x400;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -596,7 +596,7 @@ void ActNpc063(NPCHAR *npc)
|
||||||
if (npc->act_wait++ && npc->flag & 8)
|
if (npc->act_wait++ && npc->flag & 8)
|
||||||
{
|
{
|
||||||
npc->act_no = 5;
|
npc->act_no = 5;
|
||||||
npc->bits |= 0x2000;
|
npc->bits |= NPC_INTERACTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -942,7 +942,7 @@ void ActNpc067(NPCHAR *npc)
|
||||||
PlaySoundObject(23, 1);
|
PlaySoundObject(23, 1);
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->act_no = 14;
|
npc->act_no = 14;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -969,7 +969,7 @@ void ActNpc067(NPCHAR *npc)
|
||||||
npc->act_no = 21;
|
npc->act_no = 21;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 21:
|
case 21:
|
||||||
npc->ym -= 0x20;
|
npc->ym -= 0x20;
|
||||||
|
|
|
@ -39,7 +39,7 @@ void ActNpc080(NPCHAR *npc)
|
||||||
switch (npc->act_no)
|
switch (npc->act_no)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->hit.front = 0x800;
|
npc->hit.front = 0x800;
|
||||||
|
@ -58,7 +58,7 @@ void ActNpc080(NPCHAR *npc)
|
||||||
npc->ani_no = 1;
|
npc->ani_no = 1;
|
||||||
npc->ani_wait = 0;
|
npc->ani_wait = 0;
|
||||||
npc->act_no = 2;
|
npc->act_no = 2;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gMC.x < npc->x)
|
if (gMC.x < npc->x)
|
||||||
|
@ -83,7 +83,7 @@ void ActNpc080(NPCHAR *npc)
|
||||||
npc->hit.front = 0x2400;
|
npc->hit.front = 0x2400;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->act_no = 3;
|
npc->act_no = 3;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
PlaySoundObject(34, 1);
|
PlaySoundObject(34, 1);
|
||||||
|
|
||||||
if (npc->direct == 0)
|
if (npc->direct == 0)
|
||||||
|
@ -365,7 +365,7 @@ void ActNpc082(NPCHAR *npc)
|
||||||
npc->act_no = 21;
|
npc->act_no = 21;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 21:
|
case 21:
|
||||||
npc->ym -= 0x20;
|
npc->ym -= 0x20;
|
||||||
|
@ -1446,8 +1446,8 @@ void ActNpc094(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->bits &= ~4;
|
npc->bits &= ~NPC_INVULNERABLE;
|
||||||
|
|
||||||
if (++npc->act_wait > 40)
|
if (++npc->act_wait > 40)
|
||||||
{
|
{
|
||||||
|
@ -1505,8 +1505,8 @@ void ActNpc094(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
npc->act_no = 20;
|
npc->act_no = 20;
|
||||||
npc->ani_no = 4;
|
npc->ani_no = 4;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -163,14 +163,14 @@ void ActNpc104(NPCHAR *npc)
|
||||||
else
|
else
|
||||||
npc->direct = 2;
|
npc->direct = 2;
|
||||||
|
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->act_no = 3;
|
npc->act_no = 3;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
}
|
}
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -209,7 +209,7 @@ void ActNpc104(NPCHAR *npc)
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
if (++npc->act_wait > 40)
|
if (++npc->act_wait > 40)
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
if (npc->flag & 8)
|
if (npc->flag & 8)
|
||||||
{
|
{
|
||||||
|
@ -631,7 +631,7 @@ void ActNpc110(NPCHAR *npc)
|
||||||
else
|
else
|
||||||
npc->direct = 2;
|
npc->direct = 2;
|
||||||
|
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->act_no = 3;
|
npc->act_no = 3;
|
||||||
|
|
||||||
|
@ -639,7 +639,7 @@ void ActNpc110(NPCHAR *npc)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
}
|
}
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -678,7 +678,7 @@ void ActNpc110(NPCHAR *npc)
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
if (++npc->act_wait > 40)
|
if (++npc->act_wait > 40)
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
if (npc->flag & 8)
|
if (npc->flag & 8)
|
||||||
{
|
{
|
||||||
|
@ -1096,12 +1096,12 @@ void ActNpc114(NPCHAR *npc)
|
||||||
|
|
||||||
if (gMC.y > npc->y)
|
if (gMC.y > npc->y)
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x40;
|
npc->bits &= ~NPC_SOLID_HARD;
|
||||||
npc->damage = 0x7F;
|
npc->damage = 0x7F;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits |= 0x40;
|
npc->bits |= NPC_SOLID_HARD;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1119,7 +1119,7 @@ void ActNpc114(NPCHAR *npc)
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->bits |= 0x40;
|
npc->bits |= NPC_SOLID_HARD;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -1261,7 +1261,7 @@ void ActNpc115(NPCHAR *npc)
|
||||||
npc->ani_no = 4;
|
npc->ani_no = 4;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->ym = -0x200;
|
npc->ym = -0x200;
|
||||||
npc->bits &= ~0x21;
|
npc->bits &= ~(NPC_SOLID_SOFT | NPC_SHOOTABLE);
|
||||||
PlaySoundObject(51, 1);
|
PlaySoundObject(51, 1);
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 51:
|
case 51:
|
||||||
|
@ -1558,8 +1558,8 @@ void ActNpc118(NPCHAR *npc)
|
||||||
else
|
else
|
||||||
npc->direct = 2;
|
npc->direct = 2;
|
||||||
|
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->bits &= ~4;
|
npc->bits &= ~NPC_INVULNERABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 11:
|
case 11:
|
||||||
if (npc->act_wait)
|
if (npc->act_wait)
|
||||||
|
@ -1600,7 +1600,7 @@ void ActNpc118(NPCHAR *npc)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->act_no = 20;
|
npc->act_no = 20;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
PlaySoundObject(103, 1);
|
PlaySoundObject(103, 1);
|
||||||
|
@ -1683,8 +1683,8 @@ void ActNpc118(NPCHAR *npc)
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->act_no = 30;
|
npc->act_no = 30;
|
||||||
npc->ani_no = 7;
|
npc->ani_no = 7;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -185,7 +185,7 @@ void ActNpc122(NPCHAR *npc)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->act_no = 15;
|
npc->act_no = 15;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->ym = -0x200;
|
npc->ym = -0x200;
|
||||||
|
@ -197,7 +197,7 @@ void ActNpc122(NPCHAR *npc)
|
||||||
case 15:
|
case 15:
|
||||||
if (npc->flag & 8)
|
if (npc->flag & 8)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->act_no = 10;
|
npc->act_no = 10;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
|
@ -229,7 +229,7 @@ void ActNpc122(NPCHAR *npc)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->life = 1000;
|
npc->life = 1000;
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->act_wait = Random(0, 50);
|
npc->act_wait = Random(0, 50);
|
||||||
|
@ -244,7 +244,7 @@ void ActNpc122(NPCHAR *npc)
|
||||||
npc->act_no = 20;
|
npc->act_no = 20;
|
||||||
npc->ym = -0x200;
|
npc->ym = -0x200;
|
||||||
npc->ani_no = Random(6, 7);
|
npc->ani_no = Random(6, 7);
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
npc->ym += 0x20;
|
npc->ym += 0x20;
|
||||||
|
@ -366,7 +366,7 @@ void ActNpc124(NPCHAR *npc)
|
||||||
npc->y += 0x1000;
|
npc->y += 0x1000;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -374,7 +374,7 @@ void ActNpc124(NPCHAR *npc)
|
||||||
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 |= NPC_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 11:
|
case 11:
|
||||||
switch (npc->direct)
|
switch (npc->direct)
|
||||||
|
@ -547,9 +547,9 @@ void ActNpc126(NPCHAR *npc)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gKeyTrg & gKeyDown)
|
if (gKeyTrg & gKeyDown)
|
||||||
npc->bits |= 0x2000;
|
npc->bits |= NPC_INTERACTABLE;
|
||||||
else
|
else
|
||||||
npc->bits &= ~0x2000;
|
npc->bits &= ~NPC_INTERACTABLE;
|
||||||
|
|
||||||
npc->ym += 0x40;
|
npc->ym += 0x40;
|
||||||
if (npc->ym > 0x5FF)
|
if (npc->ym > 0x5FF)
|
||||||
|
@ -725,7 +725,7 @@ void ActNpc130(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;
|
||||||
npc->bits |= 0x2000;
|
npc->bits |= NPC_INTERACTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
if (Random(0, 120) == 10)
|
if (Random(0, 120) == 10)
|
||||||
|
@ -1009,15 +1009,15 @@ void ActNpc134(NPCHAR *npc)
|
||||||
case 0:
|
case 0:
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
if (gMC.x > npc->x - 0x28000 && gMC.x < npc->x + 0x28000 && gMC.y > npc->y - 0x14000 && gMC.y < npc->y + 0x8000) // TODO: Maybe do something about this for widescreen/tallscreen?
|
if (gMC.x > npc->x - 0x28000 && gMC.x < npc->x + 0x28000 && gMC.y > npc->y - 0x14000 && gMC.y < npc->y + 0x8000) // TODO: Maybe do something about this for widescreen/tallscreen?
|
||||||
{
|
{
|
||||||
npc->act_no = 10;
|
npc->act_no = 10;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->bits &= ~4;
|
npc->bits &= ~NPC_INVULNERABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -1047,8 +1047,8 @@ void ActNpc134(NPCHAR *npc)
|
||||||
npc->act_no = 20;
|
npc->act_no = 20;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -1059,8 +1059,8 @@ void ActNpc134(NPCHAR *npc)
|
||||||
npc->act_no = 10;
|
npc->act_no = 10;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->ani_wait = 0;
|
npc->ani_wait = 0;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->bits &= ~4;
|
npc->bits &= ~NPC_INVULNERABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -1207,7 +1207,7 @@ void ActNpc136(NPCHAR *npc)
|
||||||
switch (npc->act_no)
|
switch (npc->act_no)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->bits &= ~0x2000;
|
npc->bits &= ~NPC_INTERACTABLE;
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->ani_wait = 0;
|
npc->ani_wait = 0;
|
||||||
|
@ -1291,7 +1291,7 @@ void ActNpc138(NPCHAR *npc)
|
||||||
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 |= NPC_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 11:
|
case 11:
|
||||||
if (++npc->act_wait % 8 == 0)
|
if (++npc->act_wait % 8 == 0)
|
||||||
|
|
|
@ -58,7 +58,7 @@ void ActNpc140(NPCHAR *npc)
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->ani_no = 9;
|
npc->ani_no = 9;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->bits &= ~0x2000;
|
npc->bits &= ~NPC_INTERACTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
if (++npc->act_wait > 50)
|
if (++npc->act_wait > 50)
|
||||||
|
@ -87,7 +87,7 @@ void ActNpc140(NPCHAR *npc)
|
||||||
if (++npc->act_wait > 50)
|
if (++npc->act_wait > 50)
|
||||||
{
|
{
|
||||||
npc->act_no = 10;
|
npc->act_no = 10;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -244,7 +244,7 @@ void ActNpc140(NPCHAR *npc)
|
||||||
case 100:
|
case 100:
|
||||||
npc->ani_no = 3;
|
npc->ani_no = 3;
|
||||||
npc->act_no = 101;
|
npc->act_no = 101;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
|
|
||||||
for (i = 0; i < 8; ++i)
|
for (i = 0; i < 8; ++i)
|
||||||
|
@ -438,8 +438,8 @@ void ActNpc141(NPCHAR *npc)
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->act_no = 20;
|
npc->act_no = 20;
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->bits &= ~4;
|
npc->bits &= ~NPC_INVULNERABLE;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->damage = 1;
|
npc->damage = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -981,11 +981,11 @@ void ActNpc149(NPCHAR *npc)
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
|
|
||||||
npc->bits |= 0x40;
|
npc->bits |= NPC_SOLID_HARD;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
npc->bits &= ~0x80;
|
npc->bits &= ~NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
|
|
||||||
if (gMC.x < npc->x + 0x3200 && gMC.x > npc->x - 0x32000 && gMC.y < npc->y + 0x3200 && gMC.y > npc->y - 0x3200)
|
if (gMC.x < npc->x + 0x3200 && gMC.x > npc->x - 0x32000 && gMC.y < npc->y + 0x3200 && gMC.y > npc->y - 0x3200)
|
||||||
|
@ -1015,12 +1015,12 @@ void ActNpc149(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
if (gMC.flag & 1)
|
if (gMC.flag & 1)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x80;
|
npc->bits |= NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
npc->damage = 100;
|
npc->damage = 100;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x80;
|
npc->bits &= ~NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1030,7 +1030,7 @@ void ActNpc149(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 20:
|
case 20:
|
||||||
npc->bits &= ~0x80;
|
npc->bits &= ~NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
|
|
||||||
if (gMC.x > npc->x - 0x3200 && gMC.x < npc->x + 0x32000 && gMC.y < npc->y + 0x3200 && gMC.y > npc->y - 0x3200)
|
if (gMC.x > npc->x - 0x3200 && gMC.x < npc->x + 0x32000 && gMC.y < npc->y + 0x3200 && gMC.y > npc->y - 0x3200)
|
||||||
|
@ -1060,12 +1060,12 @@ void ActNpc149(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
if (gMC.flag & 4)
|
if (gMC.flag & 4)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x80;
|
npc->bits |= NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
npc->damage = 100;
|
npc->damage = 100;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x80;
|
npc->bits &= ~NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1549,8 +1549,8 @@ void ActNpc154(NPCHAR *npc)
|
||||||
switch (npc->act_no)
|
switch (npc->act_no)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->ani_no = 9;
|
npc->ani_no = 9;
|
||||||
|
@ -1759,11 +1759,11 @@ void ActNpc157(NPCHAR *npc)
|
||||||
|
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->bits |= 0x40;
|
npc->bits |= NPC_SOLID_HARD;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
npc->bits &= ~0x80;
|
npc->bits &= ~NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
|
|
||||||
if (gMC.y < npc->y + 0x3200 && gMC.y > npc->y - 0x32000 && gMC.x < npc->x + 0x3200 && gMC.x > npc->x - 0x3200)
|
if (gMC.y < npc->y + 0x3200 && gMC.y > npc->y - 0x32000 && gMC.x < npc->x + 0x3200 && gMC.x > npc->x - 0x3200)
|
||||||
|
@ -1793,12 +1793,12 @@ void ActNpc157(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
if (gMC.flag & 2)
|
if (gMC.flag & 2)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x80;
|
npc->bits |= NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
npc->damage = 100;
|
npc->damage = 100;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x80;
|
npc->bits &= ~NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1808,7 +1808,7 @@ void ActNpc157(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 20:
|
case 20:
|
||||||
npc->bits &= ~0x80;
|
npc->bits &= ~NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
|
|
||||||
if (gMC.y > npc->y - 0x3200 && gMC.y < npc->y + 0x32000 && gMC.x < npc->x + 0x3200 && gMC.x > npc->x - 0x3200)
|
if (gMC.y > npc->y - 0x3200 && gMC.y < npc->y + 0x32000 && gMC.x < npc->x + 0x3200 && gMC.x > npc->x - 0x3200)
|
||||||
|
@ -1838,12 +1838,12 @@ void ActNpc157(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
if (gMC.flag & 8)
|
if (gMC.flag & 8)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x80;
|
npc->bits |= NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
npc->damage = 100;
|
npc->damage = 100;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x80;
|
npc->bits &= ~NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ void ActNpc160(NPCHAR *npc)
|
||||||
switch (npc->act_no)
|
switch (npc->act_no)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->bits &= ~1;
|
npc->bits &= ~NPC_SOLID_SOFT;
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -38,7 +38,7 @@ void ActNpc160(NPCHAR *npc)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
npc->act_no = 2;
|
npc->act_no = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ void ActNpc160(NPCHAR *npc)
|
||||||
npc->count1 = 0;
|
npc->count1 = 0;
|
||||||
npc->act_no = 5;
|
npc->act_no = 5;
|
||||||
npc->ym = -0xC00;
|
npc->ym = -0xC00;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,8 +205,8 @@ void ActNpc161(NPCHAR *npc)
|
||||||
|
|
||||||
if (npc->life < 100)
|
if (npc->life < 100)
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits &= ~4;
|
npc->bits &= ~NPC_INVULNERABLE;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
}
|
}
|
||||||
|
@ -1321,7 +1321,7 @@ void ActNpc175(NPCHAR *npc)
|
||||||
LoseNpChar(npc, 0);
|
LoseNpChar(npc, 0);
|
||||||
npc->act_no = 10;
|
npc->act_no = 10;
|
||||||
npc->ani_no = 1;
|
npc->ani_no = 1;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1371,7 +1371,7 @@ void ActNpc176(NPCHAR *npc)
|
||||||
LoseNpChar(npc, 0);
|
LoseNpChar(npc, 0);
|
||||||
npc->act_no = 10;
|
npc->act_no = 10;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,7 @@ void ActNpc180(NPCHAR *npc)
|
||||||
case 41:
|
case 41:
|
||||||
if (++npc->act_wait == 750)
|
if (++npc->act_wait == 750)
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x2000;
|
npc->bits &= ~NPC_INTERACTABLE;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -586,7 +586,7 @@ void ActNpc184(NPCHAR *npc)
|
||||||
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_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 11:
|
case 11:
|
||||||
switch (npc->direct)
|
switch (npc->direct)
|
||||||
|
@ -650,7 +650,7 @@ void ActNpc185(NPCHAR *npc)
|
||||||
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_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 11:
|
case 11:
|
||||||
switch (npc->direct)
|
switch (npc->direct)
|
||||||
|
@ -705,7 +705,7 @@ void ActNpc186(NPCHAR *npc)
|
||||||
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 |= NPC_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 11:
|
case 11:
|
||||||
switch (npc->direct)
|
switch (npc->direct)
|
||||||
|
|
|
@ -42,7 +42,7 @@ void ActNpc200(NPCHAR *npc)
|
||||||
SetDestroyNpChar(npc->x, npc->y, npc->view.back, 8);
|
SetDestroyNpChar(npc->x, npc->y, npc->view.back, 8);
|
||||||
SetExpObjects(npc->x, npc->y, npc->exp);
|
SetExpObjects(npc->x, npc->y, npc->exp);
|
||||||
npc->act_no = 100;
|
npc->act_no = 100;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -385,18 +385,18 @@ void ActNpc205(NPCHAR *npc)
|
||||||
|
|
||||||
if (gMC.y > npc->y)
|
if (gMC.y > npc->y)
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x40;
|
npc->bits &= ~NPC_SOLID_HARD;
|
||||||
npc->damage = 0x7F;
|
npc->damage = 0x7F;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits |= 0x40;
|
npc->bits |= NPC_SOLID_HARD;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (++npc->act_wait > 8 && npc->flag & 0xFF)
|
if (++npc->act_wait > 8 && npc->flag & 0xFF)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x40;
|
npc->bits |= NPC_SOLID_HARD;
|
||||||
npc->act_no = 4;
|
npc->act_no = 4;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
|
@ -413,7 +413,7 @@ void ActNpc205(NPCHAR *npc)
|
||||||
if (++npc->act_wait > 4)
|
if (++npc->act_wait > 4)
|
||||||
{
|
{
|
||||||
npc->act_no = 5;
|
npc->act_no = 5;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -599,7 +599,7 @@ void ActNpc208(NPCHAR *npc)
|
||||||
case 0:
|
case 0:
|
||||||
if (gMC.x < npc->x + 0x2000 && gMC.x > npc->x - 0x2000)
|
if (gMC.x < npc->x + 0x2000 && gMC.x > npc->x - 0x2000)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->ym = -0x200;
|
npc->ym = -0x200;
|
||||||
npc->tgt_x = npc->x;
|
npc->tgt_x = npc->x;
|
||||||
npc->tgt_y = npc->y;
|
npc->tgt_y = npc->y;
|
||||||
|
@ -626,7 +626,7 @@ void ActNpc208(NPCHAR *npc)
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -786,7 +786,7 @@ void ActNpc210(NPCHAR *npc)
|
||||||
case 0:
|
case 0:
|
||||||
if (gMC.x < npc->x + 0x2000 && gMC.x > npc->x - 0x2000)
|
if (gMC.x < npc->x + 0x2000 && gMC.x > npc->x - 0x2000)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->ym = -0x200;
|
npc->ym = -0x200;
|
||||||
npc->tgt_y = npc->y;
|
npc->tgt_y = npc->y;
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
|
@ -805,7 +805,7 @@ void ActNpc210(NPCHAR *npc)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->rect.right = 0;
|
npc->rect.right = 0;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
|
@ -919,7 +919,7 @@ void ActNpc212(NPCHAR *npc)
|
||||||
npc->tgt_y = npc->y - 0x2000;
|
npc->tgt_y = npc->y - 0x2000;
|
||||||
npc->tgt_x = npc->x - 0xC00;
|
npc->tgt_x = npc->x - 0xC00;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 11:
|
case 11:
|
||||||
if (npc->x < npc->tgt_x)
|
if (npc->x < npc->tgt_x)
|
||||||
|
@ -948,7 +948,7 @@ void ActNpc212(NPCHAR *npc)
|
||||||
|
|
||||||
case 20:
|
case 20:
|
||||||
npc->act_no = 21;
|
npc->act_no = 21;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 21:
|
case 21:
|
||||||
if (npc->y < npc->tgt_y)
|
if (npc->y < npc->tgt_y)
|
||||||
|
@ -1030,7 +1030,7 @@ void ActNpc213(NPCHAR *npc)
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 1;
|
npc->ani_no = 1;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -1174,7 +1174,7 @@ void ActNpc214(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
if (++npc->ani_wait > 2)
|
if (++npc->ani_wait > 2)
|
||||||
|
@ -1192,7 +1192,7 @@ void ActNpc214(NPCHAR *npc)
|
||||||
npc->y += npc->ym;
|
npc->y += npc->ym;
|
||||||
|
|
||||||
if (npc->xm < 0)
|
if (npc->xm < 0)
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
if (npc->flag & 0xFF)
|
if (npc->flag & 0xFF)
|
||||||
{
|
{
|
||||||
|
@ -1217,10 +1217,10 @@ void ActNpc215(NPCHAR *npc)
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->tgt_y = npc->y;
|
npc->tgt_y = npc->y;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits &= ~4;
|
npc->bits &= ~NPC_INVULNERABLE;
|
||||||
npc->bits &= ~1;
|
npc->bits &= ~NPC_SOLID_SOFT;
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
if (gMC.x > npc->x - 0x1800 && gMC.x < npc->x + 0x1800 && gMC.y > npc->y && gMC.y < npc->y + 0x1000)
|
if (gMC.x > npc->x - 0x1800 && gMC.x < npc->x + 0x1800 && gMC.y > npc->y && gMC.y < npc->y + 0x1000)
|
||||||
|
@ -1252,7 +1252,7 @@ void ActNpc215(NPCHAR *npc)
|
||||||
|
|
||||||
if (npc->ani_no == 4)
|
if (npc->ani_no == 4)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->act_no = 30;
|
npc->act_no = 30;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
}
|
}
|
||||||
|
@ -1260,7 +1260,7 @@ void ActNpc215(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 30:
|
case 30:
|
||||||
npc->bits |= 1;
|
npc->bits |= NPC_SOLID_SOFT;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
++npc->act_wait;
|
++npc->act_wait;
|
||||||
|
|
||||||
|
@ -1273,13 +1273,13 @@ void ActNpc215(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 40:
|
case 40:
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
npc->y += 0x200;
|
npc->y += 0x200;
|
||||||
|
|
||||||
if (++npc->act_wait == 32)
|
if (++npc->act_wait == 32)
|
||||||
{
|
{
|
||||||
npc->bits &= ~1;
|
npc->bits &= ~NPC_SOLID_SOFT;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->act_no = 50;
|
npc->act_no = 50;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -597,7 +597,7 @@ void ActNpc231(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 12:
|
case 12:
|
||||||
npc->bits &= ~0x2000;
|
npc->bits &= ~NPC_INTERACTABLE;
|
||||||
npc->act_no = 13;
|
npc->act_no = 13;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 1;
|
npc->ani_no = 1;
|
||||||
|
@ -653,7 +653,7 @@ void ActNpc231(NPCHAR *npc)
|
||||||
|
|
||||||
if (npc->flag & 8)
|
if (npc->flag & 8)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x2000;
|
npc->bits |= NPC_INTERACTABLE;
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
}
|
}
|
||||||
|
@ -796,7 +796,7 @@ void ActNpc233(NPCHAR *npc)
|
||||||
npc->xm /= 4;
|
npc->xm /= 4;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->act_no = 3;
|
npc->act_no = 3;
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -813,7 +813,7 @@ void ActNpc233(NPCHAR *npc)
|
||||||
npc->xm *= 2;
|
npc->xm *= 2;
|
||||||
npc->count1 = 0;
|
npc->count1 = 0;
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -455,12 +455,12 @@ void ActNpc246(NPCHAR *npc)
|
||||||
|
|
||||||
if (gMC.y > npc->y)
|
if (gMC.y > npc->y)
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x40;
|
npc->bits &= ~NPC_SOLID_HARD;
|
||||||
npc->damage = 0x7F;
|
npc->damage = 0x7F;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits |= 0x40;
|
npc->bits |= NPC_SOLID_HARD;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -478,7 +478,7 @@ void ActNpc246(NPCHAR *npc)
|
||||||
npc->act_no = 20;
|
npc->act_no = 20;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->ani_wait = 0;
|
npc->ani_wait = 0;
|
||||||
npc->bits |= 0x40;
|
npc->bits |= NPC_SOLID_HARD;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -590,7 +590,7 @@ void ActNpc247(NPCHAR *npc)
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->count2 = npc->life;
|
npc->count2 = npc->life;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 101:
|
case 101:
|
||||||
|
@ -622,7 +622,7 @@ void ActNpc247(NPCHAR *npc)
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 111:
|
case 111:
|
||||||
if (++npc->act_wait % 2)
|
if (++npc->act_wait % 2)
|
||||||
|
@ -699,7 +699,7 @@ void ActNpc247(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ym = -0x200;
|
npc->ym = -0x200;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->x = npc->tgt_x;
|
npc->x = npc->tgt_x;
|
||||||
npc->y = npc->tgt_y;
|
npc->y = npc->tgt_y;
|
||||||
|
|
||||||
|
@ -759,7 +759,7 @@ void ActNpc247(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1000:
|
case 1000:
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->act_no = 1001;
|
npc->act_no = 1001;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 4;
|
npc->ani_no = 4;
|
||||||
|
@ -1025,9 +1025,9 @@ void ActNpc252(NPCHAR *npc)
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->bits &= ~4;
|
npc->bits &= ~NPC_INVULNERABLE;
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
deg = GetArktan(npc->x - gMC.x, npc->y - gMC.y);
|
deg = GetArktan(npc->x - gMC.x, npc->y - gMC.y);
|
||||||
deg += (unsigned char)Random(-3, 3);
|
deg += (unsigned char)Random(-3, 3);
|
||||||
|
@ -1386,7 +1386,7 @@ void ActNpc259(NPCHAR *npc)
|
||||||
switch (npc->act_no)
|
switch (npc->act_no)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->bits &= ~0x2000;
|
npc->bits &= ~NPC_INTERACTABLE;
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
|
|
|
@ -232,7 +232,7 @@ void ActNpc263(NPCHAR *npc)
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
npc->ym += 0x80;
|
npc->ym += 0x80;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->damage = 3;
|
npc->damage = 3;
|
||||||
|
|
||||||
if (npc->flag & 8)
|
if (npc->flag & 8)
|
||||||
|
@ -300,7 +300,7 @@ void ActNpc263(NPCHAR *npc)
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 6;
|
npc->ani_no = 6;
|
||||||
npc->tgt_x = npc->x;
|
npc->tgt_x = npc->x;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 31:
|
case 31:
|
||||||
if (++npc->act_wait / 2 % 2)
|
if (++npc->act_wait / 2 % 2)
|
||||||
|
@ -333,7 +333,7 @@ void ActNpc263(NPCHAR *npc)
|
||||||
|
|
||||||
case 100:
|
case 100:
|
||||||
npc->act_no = 101;
|
npc->act_no = 101;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
PlaySoundObject(29, 1);
|
PlaySoundObject(29, 1);
|
||||||
|
@ -375,7 +375,7 @@ void ActNpc263(NPCHAR *npc)
|
||||||
|
|
||||||
if (npc->act_wait <= 0)
|
if (npc->act_wait <= 0)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->damage = 3;
|
npc->damage = 3;
|
||||||
|
|
||||||
if (npc->count1 < 3)
|
if (npc->count1 < 3)
|
||||||
|
@ -393,7 +393,7 @@ void ActNpc263(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 500:
|
case 500:
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->ani_no = 6;
|
npc->ani_no = 6;
|
||||||
npc->ym += 0x10;
|
npc->ym += 0x10;
|
||||||
|
|
||||||
|
@ -660,7 +660,7 @@ void ActNpc267(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
|
@ -841,8 +841,8 @@ void ActNpc267(NPCHAR *npc)
|
||||||
case 30:
|
case 30:
|
||||||
npc->act_no = 31;
|
npc->act_no = 31;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->bits |= 1;
|
npc->bits |= NPC_SOLID_SOFT;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 31:
|
case 31:
|
||||||
npc->ani_no = 3;
|
npc->ani_no = 3;
|
||||||
|
@ -852,7 +852,7 @@ void ActNpc267(NPCHAR *npc)
|
||||||
npc->act_no = 32;
|
npc->act_no = 32;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 7;
|
npc->ani_no = 7;
|
||||||
npc->bits |= 0x80;
|
npc->bits |= NPC_REAR_AND_TOP_DONT_HURT;
|
||||||
npc->damage = 10;
|
npc->damage = 10;
|
||||||
PlaySoundObject(25, 1);
|
PlaySoundObject(25, 1);
|
||||||
|
|
||||||
|
@ -878,8 +878,8 @@ void ActNpc267(NPCHAR *npc)
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->act_no = 18;
|
npc->act_no = 18;
|
||||||
npc->damage = 5;
|
npc->damage = 5;
|
||||||
npc->bits &= ~0x81;
|
npc->bits &= ~(NPC_SOLID_SOFT | NPC_REAR_AND_TOP_DONT_HURT);
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (npc->flag & 1 || npc->flag & 4)
|
if (npc->flag & 1 || npc->flag & 4)
|
||||||
|
@ -887,8 +887,8 @@ void ActNpc267(NPCHAR *npc)
|
||||||
npc->act_no = 15;
|
npc->act_no = 15;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->damage = 5;
|
npc->damage = 5;
|
||||||
npc->bits &= ~0x81;
|
npc->bits &= ~(NPC_SOLID_SOFT | NPC_REAR_AND_TOP_DONT_HURT);
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -944,7 +944,7 @@ void ActNpc267(NPCHAR *npc)
|
||||||
case 100:
|
case 100:
|
||||||
npc->act_no = 101;
|
npc->act_no = 101;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->bits &= ~0x24;
|
npc->bits &= ~(NPC_INVULNERABLE | NPC_SHOOTABLE);
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
PlaySoundObject(29, 1);
|
PlaySoundObject(29, 1);
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
@ -994,7 +994,7 @@ void ActNpc267(NPCHAR *npc)
|
||||||
|
|
||||||
if (npc->act_wait <= 0)
|
if (npc->act_wait <= 0)
|
||||||
{
|
{
|
||||||
npc->bits |= 0x24;
|
npc->bits |= (NPC_INVULNERABLE | NPC_SHOOTABLE);
|
||||||
npc->damage = 5;
|
npc->damage = 5;
|
||||||
npc->act_no = 16;
|
npc->act_no = 16;
|
||||||
npc->ym = -0x200;
|
npc->ym = -0x200;
|
||||||
|
@ -1005,7 +1005,7 @@ void ActNpc267(NPCHAR *npc)
|
||||||
|
|
||||||
case 500:
|
case 500:
|
||||||
DeleteNpCharCode(269, 1);
|
DeleteNpCharCode(269, 1);
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->ani_no = 4;
|
npc->ani_no = 4;
|
||||||
npc->ym += 0x20;
|
npc->ym += 0x20;
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
|
@ -1040,7 +1040,7 @@ void ActNpc267(NPCHAR *npc)
|
||||||
npc->ani_no = 9;
|
npc->ani_no = 9;
|
||||||
npc->tgt_x = npc->x;
|
npc->tgt_x = npc->x;
|
||||||
npc->y += 0x2000;
|
npc->y += 0x2000;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 511:
|
case 511:
|
||||||
SetQuake(2);
|
SetQuake(2);
|
||||||
|
@ -1432,7 +1432,7 @@ void ActNpc270(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
npc->xm = 3 * Random(-0x200, 0x200);
|
npc->xm = 3 * Random(-0x200, 0x200);
|
||||||
npc->ym = 3 * Random(-0x200, 0x200);
|
npc->ym = 3 * Random(-0x200, 0x200);
|
||||||
|
@ -1859,7 +1859,7 @@ void ActNpc276(NPCHAR *npc)
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 3;
|
npc->ani_no = 3;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 11:
|
case 11:
|
||||||
switch (++npc->act_wait)
|
switch (++npc->act_wait)
|
||||||
|
@ -1955,7 +1955,7 @@ void ActNpc276(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 50:
|
case 50:
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
|
|
||||||
if (npc->flag & 8)
|
if (npc->flag & 8)
|
||||||
|
@ -2165,13 +2165,13 @@ void ActNpc279(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->act_no = 100;
|
npc->act_no = 100;
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
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 |= NPC_INVULNERABLE;
|
||||||
npc->ani_no = 1;
|
npc->ani_no = 1;
|
||||||
npc->view.back = 0x1000;
|
npc->view.back = 0x1000;
|
||||||
npc->view.front = 0x1000;
|
npc->view.front = 0x1000;
|
||||||
|
@ -2202,7 +2202,7 @@ void ActNpc279(NPCHAR *npc)
|
||||||
if (npc->act_wait <= 0)
|
if (npc->act_wait <= 0)
|
||||||
{
|
{
|
||||||
npc->act_no = 100;
|
npc->act_no = 100;
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -2213,13 +2213,13 @@ void ActNpc279(NPCHAR *npc)
|
||||||
npc->ym = 0x700;
|
npc->ym = 0x700;
|
||||||
|
|
||||||
if (npc->y > 0x10000)
|
if (npc->y > 0x10000)
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
if (npc->flag & 8)
|
if (npc->flag & 8)
|
||||||
{
|
{
|
||||||
npc->ym = -0x200;
|
npc->ym = -0x200;
|
||||||
npc->act_no = 110;
|
npc->act_no = 110;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
PlaySoundObject(26, 1);
|
PlaySoundObject(26, 1);
|
||||||
SetQuake(10);
|
SetQuake(10);
|
||||||
|
|
||||||
|
|
|
@ -172,22 +172,22 @@ void ActNpc282(NPCHAR *npc)
|
||||||
|
|
||||||
if (gMC.flag & 1 && gMC.x < npc->x - npc->hit.back && gMC.x > npc->x - npc->hit.back - 0x1000 && gMC.y + gMC.hit.bottom > npc->y - npc->hit.top && gMC.y - gMC.hit.top < npc->y + npc->hit.bottom)
|
if (gMC.flag & 1 && gMC.x < npc->x - npc->hit.back && gMC.x > npc->x - npc->hit.back - 0x1000 && gMC.y + gMC.hit.bottom > npc->y - npc->hit.top && gMC.y - gMC.hit.top < npc->y + npc->hit.bottom)
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x40;
|
npc->bits &= ~NPC_SOLID_HARD;
|
||||||
npc->ani_no = 1;
|
npc->ani_no = 1;
|
||||||
}
|
}
|
||||||
else if (gMC.flag & 4 && gMC.x > npc->x + npc->hit.back && gMC.x < npc->x + npc->hit.back + 0x1000 && gMC.y + gMC.hit.bottom > npc->y - npc->hit.top && gMC.y - gMC.hit.top < npc->y + npc->hit.bottom)
|
else if (gMC.flag & 4 && gMC.x > npc->x + npc->hit.back && gMC.x < npc->x + npc->hit.back + 0x1000 && gMC.y + gMC.hit.bottom > npc->y - npc->hit.top && gMC.y - gMC.hit.top < npc->y + npc->hit.bottom)
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x40;
|
npc->bits &= ~NPC_SOLID_HARD;
|
||||||
npc->ani_no = 1;
|
npc->ani_no = 1;
|
||||||
}
|
}
|
||||||
else if (gMC.flag & 2 && gMC.y < npc->y - npc->hit.top && gMC.y > npc->y - npc->hit.top - 0x1000 && gMC.x + gMC.hit.front > npc->x - npc->hit.back && gMC.x - gMC.hit.back < npc->x + npc->hit.front)
|
else if (gMC.flag & 2 && gMC.y < npc->y - npc->hit.top && gMC.y > npc->y - npc->hit.top - 0x1000 && gMC.x + gMC.hit.front > npc->x - npc->hit.back && gMC.x - gMC.hit.back < npc->x + npc->hit.front)
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x40;
|
npc->bits &= ~NPC_SOLID_HARD;
|
||||||
npc->ani_no = 1;
|
npc->ani_no = 1;
|
||||||
}
|
}
|
||||||
else if (gMC.flag & 8 && gMC.y > npc->y + npc->hit.bottom - 0x800 && gMC.y < npc->y + npc->hit.bottom + 0x1800 && gMC.x + gMC.hit.front > npc->x - npc->hit.back - 0x800 && gMC.x - gMC.hit.back < npc->x + npc->hit.front + 0x800)
|
else if (gMC.flag & 8 && gMC.y > npc->y + npc->hit.bottom - 0x800 && gMC.y < npc->y + npc->hit.bottom + 0x1800 && gMC.x + gMC.hit.front > npc->x - npc->hit.back - 0x800 && gMC.x - gMC.hit.back < npc->x + npc->hit.front + 0x800)
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x40;
|
npc->bits &= ~NPC_SOLID_HARD;
|
||||||
npc->ani_no = 1;
|
npc->ani_no = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -569,15 +569,15 @@ void ActNpc283(NPCHAR *npc)
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->ani_no = 9;
|
npc->ani_no = 9;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 100:
|
case 100:
|
||||||
npc->act_no = 101;
|
npc->act_no = 101;
|
||||||
npc->ani_no = 9;
|
npc->ani_no = 9;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
npc->ym = -0x200;
|
npc->ym = -0x200;
|
||||||
npc->shock += 50;
|
npc->shock += 50;
|
||||||
npc->hit.bottom = 0x1800;
|
npc->hit.bottom = 0x1800;
|
||||||
|
@ -695,8 +695,8 @@ void ActNpc284(NPCHAR *npc)
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->ani_wait = 0;
|
npc->ani_wait = 0;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 21:
|
case 21:
|
||||||
npc->xm = 7 * npc->xm / 8;
|
npc->xm = 7 * npc->xm / 8;
|
||||||
|
@ -762,7 +762,7 @@ void ActNpc284(NPCHAR *npc)
|
||||||
case 32:
|
case 32:
|
||||||
npc->act_no = 33;
|
npc->act_no = 33;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
|
|
||||||
if (gMC.x < npc->x)
|
if (gMC.x < npc->x)
|
||||||
npc->tgt_x = gMC.x - 0x14000;
|
npc->tgt_x = gMC.x - 0x14000;
|
||||||
|
@ -774,21 +774,21 @@ void ActNpc284(NPCHAR *npc)
|
||||||
deg = GetArktan(npc->x - npc->tgt_x, npc->y - npc->tgt_y);
|
deg = GetArktan(npc->x - npc->tgt_x, npc->y - npc->tgt_y);
|
||||||
npc->xm = 3 * GetCos(deg);
|
npc->xm = 3 * GetCos(deg);
|
||||||
npc->ym = 3 * GetSin(deg);
|
npc->ym = 3 * GetSin(deg);
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
if (npc->x < (gMap.width * 0x200 * 0x10) / 2 && npc->xm > 0)
|
if (npc->x < (gMap.width * 0x200 * 0x10) / 2 && npc->xm > 0)
|
||||||
{
|
{
|
||||||
if (npc->y < (gMap.length * 0x200 * 0x10) / 2 && npc->ym > 0)
|
if (npc->y < (gMap.length * 0x200 * 0x10) / 2 && npc->ym > 0)
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
if (npc->y > (gMap.length * 0x200 * 0x10) / 2 && npc->ym < 0)
|
if (npc->y > (gMap.length * 0x200 * 0x10) / 2 && npc->ym < 0)
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
}
|
}
|
||||||
if (npc->x > (gMap.width * 0x200 * 0x10) / 2 && npc->xm < 0)
|
if (npc->x > (gMap.width * 0x200 * 0x10) / 2 && npc->xm < 0)
|
||||||
{
|
{
|
||||||
if (npc->y < (gMap.length * 0x200 * 0x10) / 2 && npc->ym > 0)
|
if (npc->y < (gMap.length * 0x200 * 0x10) / 2 && npc->ym > 0)
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
if (npc->y > (gMap.length * 0x200 * 0x10) / 2 && npc->ym < 0)
|
if (npc->y > (gMap.length * 0x200 * 0x10) / 2 && npc->ym < 0)
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (npc->xm > 0)
|
if (npc->xm > 0)
|
||||||
|
@ -818,22 +818,22 @@ void ActNpc284(NPCHAR *npc)
|
||||||
deg = GetArktan(npc->x - npc->tgt_x, npc->y - npc->tgt_y);
|
deg = GetArktan(npc->x - npc->tgt_x, npc->y - npc->tgt_y);
|
||||||
npc->ym = 3 * GetSin(deg);
|
npc->ym = 3 * GetSin(deg);
|
||||||
npc->xm = 3 * GetCos(deg);
|
npc->xm = 3 * GetCos(deg);
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
if (npc->x < (gMap.width * 0x200 * 0x10) / 2 && npc->xm > 0)
|
if (npc->x < (gMap.width * 0x200 * 0x10) / 2 && npc->xm > 0)
|
||||||
{
|
{
|
||||||
if (npc->y < (gMap.length * 0x200 * 0x10) / 2 && npc->ym > 0)
|
if (npc->y < (gMap.length * 0x200 * 0x10) / 2 && npc->ym > 0)
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
if (npc->y > (gMap.length * 0x200 * 0x10) / 2 && npc->ym < 0)
|
if (npc->y > (gMap.length * 0x200 * 0x10) / 2 && npc->ym < 0)
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (npc->x > (gMap.width * 0x200 * 0x10) / 2 && npc->xm < 0)
|
if (npc->x > (gMap.width * 0x200 * 0x10) / 2 && npc->xm < 0)
|
||||||
{
|
{
|
||||||
if (npc->y < (gMap.length * 0x200 * 0x10) / 2 && npc->ym > 0)
|
if (npc->y < (gMap.length * 0x200 * 0x10) / 2 && npc->ym > 0)
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
if (npc->y > (gMap.length * 0x200 * 0x10) / 2 && npc->ym < 0)
|
if (npc->y > (gMap.length * 0x200 * 0x10) / 2 && npc->ym < 0)
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (npc->xm > 0)
|
if (npc->xm > 0)
|
||||||
|
@ -870,7 +870,7 @@ void ActNpc284(NPCHAR *npc)
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 41:
|
case 41:
|
||||||
npc->xm = 7 * npc->xm / 8;
|
npc->xm = 7 * npc->xm / 8;
|
||||||
|
@ -921,15 +921,15 @@ void ActNpc284(NPCHAR *npc)
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->ani_no = 9;
|
npc->ani_no = 9;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 100:
|
case 100:
|
||||||
npc->act_no = 101;
|
npc->act_no = 101;
|
||||||
npc->ani_no = 9;
|
npc->ani_no = 9;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
npc->ym = -0x200;
|
npc->ym = -0x200;
|
||||||
npc->shock += 50;
|
npc->shock += 50;
|
||||||
++gBoss[0].ani_no;
|
++gBoss[0].ani_no;
|
||||||
|
@ -1121,7 +1121,7 @@ void ActNpc288(NPCHAR *npc)
|
||||||
PlaySoundObject(44, 1);
|
PlaySoundObject(44, 1);
|
||||||
npc->act_no = 3;
|
npc->act_no = 3;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
|
|
||||||
if (npc->x > gMC.x)
|
if (npc->x > gMC.x)
|
||||||
|
@ -1191,7 +1191,7 @@ void ActNpc289(NPCHAR *npc)
|
||||||
npc->view.top = 0x1000;
|
npc->view.top = 0x1000;
|
||||||
npc->view.bottom = 0x1000;
|
npc->view.bottom = 0x1000;
|
||||||
npc->damage = 2;
|
npc->damage = 2;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -1234,7 +1234,7 @@ void ActNpc289(NPCHAR *npc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 12:
|
case 12:
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
if (npc->y > gMap.length * 0x200 * 0x10)
|
if (npc->y > gMap.length * 0x200 * 0x10)
|
||||||
{
|
{
|
||||||
|
@ -1301,7 +1301,7 @@ void ActNpc290(NPCHAR *npc)
|
||||||
npc->view.top = 0x1000;
|
npc->view.top = 0x1000;
|
||||||
npc->view.bottom = 0x1000;
|
npc->view.bottom = 0x1000;
|
||||||
npc->damage = 2;
|
npc->damage = 2;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->tgt_y = npc->y;
|
npc->tgt_y = npc->y;
|
||||||
npc->ym = 0x400;
|
npc->ym = 0x400;
|
||||||
}
|
}
|
||||||
|
@ -1369,7 +1369,7 @@ void ActNpc291(NPCHAR *npc)
|
||||||
|
|
||||||
if (npc->direct == 2)
|
if (npc->direct == 2)
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x40;
|
npc->bits &= ~NPC_SOLID_HARD;
|
||||||
npc->ani_no = 1;
|
npc->ani_no = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -543,7 +543,7 @@ void ActNpc309(NPCHAR *npc)
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->damage = 5;
|
npc->damage = 5;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 11:
|
case 11:
|
||||||
|
@ -632,8 +632,8 @@ void ActNpc310(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -653,8 +653,8 @@ void ActNpc310(NPCHAR *npc)
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
@ -667,8 +667,8 @@ void ActNpc310(NPCHAR *npc)
|
||||||
case 20:
|
case 20:
|
||||||
npc->act_no = 21;
|
npc->act_no = 21;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->bits &= ~4;
|
npc->bits &= ~NPC_INVULNERABLE;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
|
|
||||||
if (npc->x > gMC.x)
|
if (npc->x > gMC.x)
|
||||||
|
@ -949,7 +949,7 @@ void ActNpc312(NPCHAR *npc)
|
||||||
++npc->act_wait;
|
++npc->act_wait;
|
||||||
|
|
||||||
if (npc->act_wait == 4)
|
if (npc->act_wait == 4)
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
if (npc->act_wait > 10)
|
if (npc->act_wait > 10)
|
||||||
npc->act_no = 10;
|
npc->act_no = 10;
|
||||||
|
@ -1102,7 +1102,7 @@ void ActNpc313(NPCHAR *npc)
|
||||||
npc->act_no = 110;
|
npc->act_no = 110;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->count1 = 0;
|
npc->count1 = 0;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 110:
|
case 110:
|
||||||
npc->damage = 1;
|
npc->damage = 1;
|
||||||
|
@ -1147,7 +1147,7 @@ void ActNpc313(NPCHAR *npc)
|
||||||
npc->ym += 0x80;
|
npc->ym += 0x80;
|
||||||
|
|
||||||
if (npc->y > 0x10000)
|
if (npc->y > 0x10000)
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
if (npc->xm < 0 && npc->flag & 1)
|
if (npc->xm < 0 && npc->flag & 1)
|
||||||
npc->xm *= -1;
|
npc->xm *= -1;
|
||||||
|
@ -1206,8 +1206,8 @@ void ActNpc313(NPCHAR *npc)
|
||||||
npc->xm = 0x5FF;
|
npc->xm = 0x5FF;
|
||||||
|
|
||||||
PlaySoundObject(25, 1);
|
PlaySoundObject(25, 1);
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
npc->damage = 10;
|
npc->damage = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1242,8 +1242,8 @@ void ActNpc313(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
npc->count1 = 0;
|
npc->count1 = 0;
|
||||||
npc->act_no = 130;
|
npc->act_no = 130;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->bits &= ~4;
|
npc->bits &= ~NPC_INVULNERABLE;
|
||||||
npc->damage = 3;
|
npc->damage = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1286,9 +1286,9 @@ void ActNpc313(NPCHAR *npc)
|
||||||
npc->ani_no = 12;
|
npc->ani_no = 12;
|
||||||
npc->ym = -0x800;
|
npc->ym = -0x800;
|
||||||
PlaySoundObject(25, 1);
|
PlaySoundObject(25, 1);
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
npc->damage = 10;
|
npc->damage = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1321,15 +1321,15 @@ void ActNpc313(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
npc->count1 = 0;
|
npc->count1 = 0;
|
||||||
npc->act_no = 130;
|
npc->act_no = 130;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->bits &= ~4;
|
npc->bits &= ~NPC_INVULNERABLE;
|
||||||
npc->damage = 3;
|
npc->damage = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 500:
|
case 500:
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->act_no = 501;
|
npc->act_no = 501;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->ani_no = 8;
|
npc->ani_no = 8;
|
||||||
|
@ -1352,13 +1352,13 @@ void ActNpc313(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
if (IsActiveSomeBullet())
|
if (IsActiveSomeBullet())
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->bits &= ~4;
|
npc->bits &= ~NPC_INVULNERABLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1388,7 +1388,7 @@ void ActNpc314(NPCHAR *npc)
|
||||||
case 0:
|
case 0:
|
||||||
npc->count2 = 0;
|
npc->count2 = 0;
|
||||||
npc->act_no = 100;
|
npc->act_no = 100;
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
npc->ani_no = Random(0, 2);
|
npc->ani_no = Random(0, 2);
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 100:
|
case 100:
|
||||||
|
@ -1398,13 +1398,13 @@ void ActNpc314(NPCHAR *npc)
|
||||||
npc->ym = 0x700;
|
npc->ym = 0x700;
|
||||||
|
|
||||||
if (npc->y > 0x10000)
|
if (npc->y > 0x10000)
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
if (npc->flag & 8)
|
if (npc->flag & 8)
|
||||||
{
|
{
|
||||||
npc->ym = -0x200;
|
npc->ym = -0x200;
|
||||||
npc->act_no = 110;
|
npc->act_no = 110;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
PlaySoundObject(12, 1);
|
PlaySoundObject(12, 1);
|
||||||
SetQuake(10);
|
SetQuake(10);
|
||||||
|
|
||||||
|
@ -1471,7 +1471,7 @@ void ActNpc315(NPCHAR *npc)
|
||||||
if (npc->y > 0x10000)
|
if (npc->y > 0x10000)
|
||||||
{
|
{
|
||||||
npc->act_no = 130;
|
npc->act_no = 130;
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -1480,7 +1480,7 @@ void ActNpc315(NPCHAR *npc)
|
||||||
npc->act_no = 110;
|
npc->act_no = 110;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->count1 = 0;
|
npc->count1 = 0;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 110:
|
case 110:
|
||||||
if (npc->x > gMC.x)
|
if (npc->x > gMC.x)
|
||||||
|
@ -1548,7 +1548,7 @@ void ActNpc315(NPCHAR *npc)
|
||||||
if (++npc->act_wait > 4)
|
if (++npc->act_wait > 4)
|
||||||
{
|
{
|
||||||
npc->act_no = 110;
|
npc->act_no = 110;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -1558,13 +1558,13 @@ void ActNpc315(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
if (IsActiveSomeBullet())
|
if (IsActiveSomeBullet())
|
||||||
{
|
{
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->bits &= ~4;
|
npc->bits &= ~NPC_INVULNERABLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1605,8 +1605,8 @@ void ActNpc316(NPCHAR *npc)
|
||||||
switch (npc->act_no)
|
switch (npc->act_no)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
|
@ -1779,9 +1779,9 @@ void ActNpc318(NPCHAR *npc)
|
||||||
switch (npc->act_no)
|
switch (npc->act_no)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
npc->bits &= ~1;
|
npc->bits &= ~NPC_SOLID_SOFT;
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->act_no = 1;
|
npc->act_no = 1;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
|
@ -1880,7 +1880,7 @@ void ActNpc319(NPCHAR *npc)
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
if (++npc->act_wait == 4)
|
if (++npc->act_wait == 4)
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
npc->ym += 0x2A;
|
npc->ym += 0x2A;
|
||||||
if (npc->ym > 0x5FF)
|
if (npc->ym > 0x5FF)
|
||||||
|
|
|
@ -190,8 +190,8 @@ void ActNpc322(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
npc->act_no = 2;
|
npc->act_no = 2;
|
||||||
npc->act_wait = 0;
|
npc->act_wait = 0;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
npc->bits |= 4;
|
npc->bits |= NPC_INVULNERABLE;
|
||||||
PlaySoundObject(22, 1);
|
PlaySoundObject(22, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -314,7 +314,7 @@ void ActNpc323(NPCHAR *npc)
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
if (++npc->act_wait == 16)
|
if (++npc->act_wait == 16)
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
npc->x += npc->xm;
|
npc->x += npc->xm;
|
||||||
npc->y += npc->ym;
|
npc->y += npc->ym;
|
||||||
|
@ -356,8 +356,8 @@ void ActNpc323(NPCHAR *npc)
|
||||||
npc->code_char = 309;
|
npc->code_char = 309;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
npc->damage = 5;
|
npc->damage = 5;
|
||||||
npc->view.top = 0x1000;
|
npc->view.top = 0x1000;
|
||||||
}
|
}
|
||||||
|
@ -1079,7 +1079,7 @@ void ActNpc338(NPCHAR *npc)
|
||||||
npc->view.top = 0x1000;
|
npc->view.top = 0x1000;
|
||||||
npc->view.bottom = 0x1000;
|
npc->view.bottom = 0x1000;
|
||||||
npc->damage = 3;
|
npc->damage = 3;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->tgt_y = npc->y;
|
npc->tgt_y = npc->y;
|
||||||
npc->ym = (Random(-10, 10) * 0x200) / 2;
|
npc->ym = (Random(-10, 10) * 0x200) / 2;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
|
|
@ -49,7 +49,7 @@ void ActNpc340(NPCHAR *npc)
|
||||||
npc->ani_no = 1;
|
npc->ani_no = 1;
|
||||||
npc->ani_wait = 0;
|
npc->ani_wait = 0;
|
||||||
npc->damage = 4;
|
npc->damage = 4;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 110:
|
case 110:
|
||||||
npc->act_no = 111;
|
npc->act_no = 111;
|
||||||
|
@ -453,7 +453,7 @@ void ActNpc340(NPCHAR *npc)
|
||||||
npc->ani_no = 10;
|
npc->ani_no = 10;
|
||||||
npc->tgt_x = npc->x;
|
npc->tgt_x = npc->x;
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
SetDestroyNpChar(npc->x, npc->y, 0x10, 0x10);
|
SetDestroyNpChar(npc->x, npc->y, 0x10, 0x10);
|
||||||
PlaySoundObject(72, 1);
|
PlaySoundObject(72, 1);
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
@ -498,7 +498,7 @@ void ActNpc340(NPCHAR *npc)
|
||||||
npc->ani_no = 3;
|
npc->ani_no = 3;
|
||||||
npc->ym -= 0xA00;
|
npc->ym -= 0xA00;
|
||||||
npc->direct = 0;
|
npc->direct = 0;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -633,7 +633,7 @@ void ActNpc342(NPCHAR *npc)
|
||||||
|
|
||||||
case 20:
|
case 20:
|
||||||
npc->act_no = 21;
|
npc->act_no = 21;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->life = 1000;
|
npc->life = 1000;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 21:
|
case 21:
|
||||||
|
@ -657,7 +657,7 @@ void ActNpc342(NPCHAR *npc)
|
||||||
if (npc->life < 900)
|
if (npc->life < 900)
|
||||||
{
|
{
|
||||||
npc->act_no = 22;
|
npc->act_no = 22;
|
||||||
npc->bits &= ~0x20;
|
npc->bits &= ~NPC_SHOOTABLE;
|
||||||
SetDestroyNpChar(npc->x, npc->y, 0x2000, 0x20);
|
SetDestroyNpChar(npc->x, npc->y, 0x2000, 0x20);
|
||||||
PlaySoundObject(71, 1);
|
PlaySoundObject(71, 1);
|
||||||
}
|
}
|
||||||
|
@ -699,7 +699,7 @@ void ActNpc342(NPCHAR *npc)
|
||||||
npc->damage = 10;
|
npc->damage = 10;
|
||||||
|
|
||||||
if (npc->direct == 0)
|
if (npc->direct == 0)
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
|
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
@ -710,7 +710,7 @@ void ActNpc342(NPCHAR *npc)
|
||||||
if (npc->count2 > 0x100)
|
if (npc->count2 > 0x100)
|
||||||
--npc->count2;
|
--npc->count2;
|
||||||
|
|
||||||
if (npc->bits & 0x20)
|
if (npc->bits & NPC_SHOOTABLE)
|
||||||
{
|
{
|
||||||
if (npc->shock)
|
if (npc->shock)
|
||||||
{
|
{
|
||||||
|
@ -740,7 +740,7 @@ void ActNpc342(NPCHAR *npc)
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->damage = 5;
|
npc->damage = 5;
|
||||||
npc->bits &= ~0x28;
|
npc->bits &= ~(NPC_IGNORE_SOLIDITY | NPC_SHOOTABLE);
|
||||||
SetDestroyNpChar(npc->x, npc->y, 0x2000, 0x20);
|
SetDestroyNpChar(npc->x, npc->y, 0x2000, 0x20);
|
||||||
PlaySoundObject(71, 1);
|
PlaySoundObject(71, 1);
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
@ -775,7 +775,7 @@ void ActNpc342(NPCHAR *npc)
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->ani_no = 2;
|
npc->ani_no = 2;
|
||||||
npc->bits &= ~0x28;
|
npc->bits &= ~(NPC_IGNORE_SOLIDITY | NPC_SHOOTABLE);
|
||||||
npc->damage = 0;
|
npc->damage = 0;
|
||||||
npc->count1 /= 4;
|
npc->count1 /= 4;
|
||||||
npc->exp = 0;
|
npc->exp = 0;
|
||||||
|
@ -922,7 +922,7 @@ void ActNpc345(NPCHAR *npc)
|
||||||
npc->ym = 0x700;
|
npc->ym = 0x700;
|
||||||
|
|
||||||
if (npc->y > 0x10000)
|
if (npc->y > 0x10000)
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
if (npc->act_wait++ / 2 % 2)
|
if (npc->act_wait++ / 2 % 2)
|
||||||
SetNpChar(4, npc->x, npc->y, 0, 0, 0, 0, 0x100);
|
SetNpChar(4, npc->x, npc->y, 0, 0, 0, 0, 0x100);
|
||||||
|
@ -931,7 +931,7 @@ void ActNpc345(NPCHAR *npc)
|
||||||
{
|
{
|
||||||
npc->ym = -0x200;
|
npc->ym = -0x200;
|
||||||
npc->act_no = 110;
|
npc->act_no = 110;
|
||||||
npc->bits |= 8;
|
npc->bits |= NPC_IGNORE_SOLIDITY;
|
||||||
PlaySoundObject(12, 1);
|
PlaySoundObject(12, 1);
|
||||||
SetQuake(10);
|
SetQuake(10);
|
||||||
|
|
||||||
|
@ -1055,7 +1055,7 @@ void ActNpc346(NPCHAR *npc)
|
||||||
npc->act_no = 1001;
|
npc->act_no = 1001;
|
||||||
npc->xm = 0;
|
npc->xm = 0;
|
||||||
npc->ym = 0;
|
npc->ym = 0;
|
||||||
npc->bits &= ~0x40;
|
npc->bits &= ~NPC_SOLID_HARD;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 1001:
|
case 1001:
|
||||||
npc->ym += 0x40;
|
npc->ym += 0x40;
|
||||||
|
@ -1069,9 +1069,9 @@ void ActNpc346(NPCHAR *npc)
|
||||||
if (npc->act_no < 1000)
|
if (npc->act_no < 1000)
|
||||||
{
|
{
|
||||||
if (gMC.y > npc->y - 0x1000 && gMC.ym < 0)
|
if (gMC.y > npc->y - 0x1000 && gMC.ym < 0)
|
||||||
npc->bits &= ~0x40;
|
npc->bits &= ~NPC_SOLID_HARD;
|
||||||
else
|
else
|
||||||
npc->bits |= 0x40;
|
npc->bits |= NPC_SOLID_HARD;
|
||||||
|
|
||||||
deg = npc->count1 / 4;
|
deg = npc->count1 / 4;
|
||||||
npc->tgt_x = npc->pNpc->x + npc->count2 * GetCos(deg) / 4;
|
npc->tgt_x = npc->pNpc->x + npc->count2 * GetCos(deg) / 4;
|
||||||
|
@ -1461,7 +1461,7 @@ void ActNpc351(NPCHAR *npc)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
}
|
}
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
case 11:
|
case 11:
|
||||||
|
@ -1632,7 +1632,7 @@ void ActNpc353(NPCHAR *npc)
|
||||||
++npc->act_wait;
|
++npc->act_wait;
|
||||||
|
|
||||||
if (npc->act_wait == 8)
|
if (npc->act_wait == 8)
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
|
|
||||||
npc->x += npc->xm;
|
npc->x += npc->xm;
|
||||||
npc->y += npc->ym;
|
npc->y += npc->ym;
|
||||||
|
@ -1654,8 +1654,8 @@ void ActNpc353(NPCHAR *npc)
|
||||||
case 10:
|
case 10:
|
||||||
npc->act_no = 11;
|
npc->act_no = 11;
|
||||||
npc->ani_no = 0;
|
npc->ani_no = 0;
|
||||||
npc->bits |= 0x20;
|
npc->bits |= NPC_SHOOTABLE;
|
||||||
npc->bits &= ~8;
|
npc->bits &= ~NPC_IGNORE_SOLIDITY;
|
||||||
npc->damage = 5;
|
npc->damage = 5;
|
||||||
npc->view.top = 0x1000;
|
npc->view.top = 0x1000;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
|
|
|
@ -299,7 +299,7 @@ void HitNpCharMap()
|
||||||
if ((gNPC[i].cond & 0x80) == 0)
|
if ((gNPC[i].cond & 0x80) == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (gNPC[i].bits & 8)
|
if (gNPC[i].bits & NPC_IGNORE_SOLIDITY)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (gNPC[i].size >= 3)
|
if (gNPC[i].size >= 3)
|
||||||
|
@ -323,7 +323,7 @@ void HitNpCharMap()
|
||||||
{
|
{
|
||||||
// No NPC block
|
// No NPC block
|
||||||
case 0x44:
|
case 0x44:
|
||||||
if (gNPC[i].bits & npc_ignore44)
|
if (gNPC[i].bits & NPC_IGNORE_TILE_44)
|
||||||
break;
|
break;
|
||||||
// Fallthrough
|
// Fallthrough
|
||||||
// Block
|
// Block
|
||||||
|
@ -518,9 +518,9 @@ void LoseNpChar(NPCHAR *npc, BOOL bVanish)
|
||||||
SetNPCFlag(npc->code_flag);
|
SetNPCFlag(npc->code_flag);
|
||||||
|
|
||||||
// Create value view
|
// Create value view
|
||||||
if (npc->bits & npc_showDamage)
|
if (npc->bits & NPC_SHOW_DAMAGE)
|
||||||
{
|
{
|
||||||
if ((npc->bits & npc_showDamage) && npc->damage_view)
|
if ((npc->bits & NPC_SHOW_DAMAGE) && npc->damage_view)
|
||||||
SetValueView(&npc->x, &npc->y, npc->damage_view);
|
SetValueView(&npc->x, &npc->y, npc->damage_view);
|
||||||
if (bVanish)
|
if (bVanish)
|
||||||
VanishNpChar(npc);
|
VanishNpChar(npc);
|
||||||
|
@ -542,7 +542,7 @@ void HitNpCharBullet()
|
||||||
if ((gNPC[n].cond & 0x80) == 0)
|
if ((gNPC[n].cond & 0x80) == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (gNPC[n].bits & npc_shootable && gNPC[n].bits & npc_interact)
|
if (gNPC[n].bits & NPC_SHOOTABLE && gNPC[n].bits & NPC_INTERACTABLE)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (b = 0; b < BULLET_MAX; b++)
|
for (b = 0; b < BULLET_MAX; b++)
|
||||||
|
@ -555,13 +555,13 @@ void HitNpCharBullet()
|
||||||
|
|
||||||
// Check if bullet touches npc
|
// Check if bullet touches npc
|
||||||
bHit = FALSE;
|
bHit = FALSE;
|
||||||
if (gNPC[n].bits & npc_shootable
|
if (gNPC[n].bits & NPC_SHOOTABLE
|
||||||
&& gNPC[n].x - gNPC[n].hit.back < gBul[b].x + gBul[b].enemyXL
|
&& gNPC[n].x - gNPC[n].hit.back < gBul[b].x + gBul[b].enemyXL
|
||||||
&& gNPC[n].x + gNPC[n].hit.back > gBul[b].x - gBul[b].enemyXL
|
&& gNPC[n].x + gNPC[n].hit.back > gBul[b].x - gBul[b].enemyXL
|
||||||
&& gNPC[n].y - gNPC[n].hit.top < gBul[b].y + gBul[b].enemyYL
|
&& gNPC[n].y - gNPC[n].hit.top < gBul[b].y + gBul[b].enemyYL
|
||||||
&& gNPC[n].y + gNPC[n].hit.bottom > gBul[b].y - gBul[b].enemyYL)
|
&& gNPC[n].y + gNPC[n].hit.bottom > gBul[b].y - gBul[b].enemyYL)
|
||||||
bHit = TRUE;
|
bHit = TRUE;
|
||||||
else if (gNPC[n].bits & npc_invulnerable
|
else if (gNPC[n].bits & NPC_INVULNERABLE
|
||||||
&& gNPC[n].x - gNPC[n].hit.back < gBul[b].x + gBul[b].blockXL
|
&& gNPC[n].x - gNPC[n].hit.back < gBul[b].x + gBul[b].blockXL
|
||||||
&& gNPC[n].x + gNPC[n].hit.back > gBul[b].x - gBul[b].blockXL
|
&& gNPC[n].x + gNPC[n].hit.back > gBul[b].x - gBul[b].blockXL
|
||||||
&& gNPC[n].y - gNPC[n].hit.top < gBul[b].y + gBul[b].blockYL
|
&& gNPC[n].y - gNPC[n].hit.top < gBul[b].y + gBul[b].blockYL
|
||||||
|
@ -571,7 +571,7 @@ void HitNpCharBullet()
|
||||||
if (bHit)
|
if (bHit)
|
||||||
{
|
{
|
||||||
// Damage NPC
|
// Damage NPC
|
||||||
if (gNPC[n].bits & npc_shootable)
|
if (gNPC[n].bits & NPC_SHOOTABLE)
|
||||||
{
|
{
|
||||||
gNPC[n].life -= gBul[b].damage;
|
gNPC[n].life -= gBul[b].damage;
|
||||||
|
|
||||||
|
@ -579,10 +579,10 @@ void HitNpCharBullet()
|
||||||
{
|
{
|
||||||
gNPC[n].life = 0;
|
gNPC[n].life = 0;
|
||||||
|
|
||||||
if (gNPC[n].bits & npc_showDamage)
|
if (gNPC[n].bits & NPC_SHOW_DAMAGE)
|
||||||
gNPC[n].damage_view -= gBul[b].damage;
|
gNPC[n].damage_view -= gBul[b].damage;
|
||||||
|
|
||||||
if ((gMC.cond & 0x80) && gNPC[n].bits & npc_eventDie)
|
if ((gMC.cond & 0x80) && gNPC[n].bits & NPC_EVENT_WHEN_KILLED)
|
||||||
StartTextScript(gNPC[n].code_event);
|
StartTextScript(gNPC[n].code_event);
|
||||||
else
|
else
|
||||||
gNPC[n].cond |= 8;
|
gNPC[n].cond |= 8;
|
||||||
|
@ -598,7 +598,7 @@ void HitNpCharBullet()
|
||||||
gNPC[n].shock = 16;
|
gNPC[n].shock = 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gNPC[n].bits & npc_showDamage)
|
if (gNPC[n].bits & NPC_SHOW_DAMAGE)
|
||||||
gNPC[n].damage_view -= gBul[b].damage;
|
gNPC[n].damage_view -= gBul[b].damage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue