1055 lines
18 KiB
C++
1055 lines
18 KiB
C++
#include "Shoot.h"
|
|
|
|
#include "ArmsItem.h"
|
|
#include "Bullet.h"
|
|
#include "Caret.h"
|
|
#include "KeyControl.h"
|
|
#include "MyChar.h"
|
|
#include "MycParam.h"
|
|
#include "Sound.h"
|
|
|
|
int empty;
|
|
int spur_charge;
|
|
|
|
void ShootBullet_Frontia1(int level)
|
|
{
|
|
int bul_no;
|
|
|
|
switch (level)
|
|
{
|
|
case 1:
|
|
bul_no = 1;
|
|
break;
|
|
case 2:
|
|
bul_no = 2;
|
|
break;
|
|
case 3:
|
|
bul_no = 3;
|
|
break;
|
|
}
|
|
|
|
if (CountArmsBullet(1) <= 3 && gKeyTrg & gKeyShot)
|
|
{
|
|
if (!UseArmsEnergy(1))
|
|
{
|
|
ChangeToFirstArms();
|
|
}
|
|
else
|
|
{
|
|
if (gMC.up)
|
|
{
|
|
if (gMC.direct == 0)
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x600, gMC.y - 0x1400, 1);
|
|
SetCaret(gMC.x - 0x600, gMC.y - 0x1400, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x600, gMC.y - 0x1400, 1);
|
|
SetCaret(gMC.x + 0x600, gMC.y - 0x1400, 3, 0);
|
|
}
|
|
}
|
|
else if (gMC.down)
|
|
{
|
|
if (gMC.direct == 0)
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x600, gMC.y + 0x1400, 3);
|
|
SetCaret(gMC.x - 0x600, gMC.y + 0x1400, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x600, gMC.y + 0x1400, 3);
|
|
SetCaret(gMC.x + 0x600, gMC.y + 0x1400, 3, 0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (gMC.direct == 0)
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x400, 0);
|
|
SetCaret(gMC.x - 0x1800, gMC.y + 0x400, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0xC00, gMC.y + 0x400, 2);
|
|
SetCaret(gMC.x + 0x1800, gMC.y + 0x400, 3, 0);
|
|
}
|
|
}
|
|
|
|
PlaySoundObject(33, 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
void ShootBullet_PoleStar(int level)
|
|
{
|
|
int bul_no;
|
|
switch (level)
|
|
{
|
|
case 2:
|
|
bul_no = 5;
|
|
break;
|
|
case 3:
|
|
bul_no = 6;
|
|
break;
|
|
case 1:
|
|
bul_no = 4;
|
|
break;
|
|
}
|
|
|
|
if (CountArmsBullet(2) < 2 && gKeyTrg & gKeyShot)
|
|
{
|
|
if (!UseArmsEnergy(1))
|
|
{
|
|
PlaySoundObject(37, 1);
|
|
}
|
|
else
|
|
{
|
|
if (gMC.up)
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x200, gMC.y - 0x1000, 1);
|
|
SetCaret(gMC.x + 0x200, gMC.y - 0x1000, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1);
|
|
SetCaret(gMC.x - 0x200, gMC.y - 0x1000, 3, 0);
|
|
}
|
|
}
|
|
else if (gMC.down)
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x200, gMC.y + 0x1000, 3);
|
|
SetCaret(gMC.x + 0x200, gMC.y + 0x1000, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3);
|
|
SetCaret(gMC.x - 0x200, gMC.y + 0x1000, 3, 0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0xC00, gMC.y + 0x600, 2);
|
|
SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x600, 0);
|
|
SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
|
|
}
|
|
}
|
|
|
|
if (level == 3)
|
|
PlaySoundObject(49, 1);
|
|
else
|
|
PlaySoundObject(32, 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
void ShootBullet_FireBall(int level)
|
|
{
|
|
int bul_no;
|
|
|
|
switch (level)
|
|
{
|
|
case 1:
|
|
if (CountArmsBullet(3) >= 2)
|
|
return;
|
|
bul_no = 7;
|
|
break;
|
|
case 2:
|
|
if (CountArmsBullet(3) >= 3)
|
|
return;
|
|
bul_no = 8;
|
|
break;
|
|
case 3:
|
|
if (CountArmsBullet(3) >= 4)
|
|
return;
|
|
bul_no = 9;
|
|
break;
|
|
}
|
|
|
|
if (gKeyTrg & gKeyShot)
|
|
{
|
|
if (!UseArmsEnergy(1))
|
|
{
|
|
ChangeToFirstArms();
|
|
}
|
|
else
|
|
{
|
|
if (gMC.up)
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x800, gMC.y - 0x1000, 1);
|
|
SetCaret(gMC.x + 0x800, gMC.y - 0x1000, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x800, gMC.y - 0x1000, 1);
|
|
SetCaret(gMC.x - 0x800, gMC.y - 0x1000, 3, 0);
|
|
}
|
|
}
|
|
else if (gMC.down)
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x800, gMC.y + 0x1000, 3);
|
|
SetCaret(gMC.x + 0x800, gMC.y + 0x1000, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x800, gMC.y + 0x1000, 3);
|
|
SetCaret(gMC.x - 0x800, gMC.y + 0x1000, 3, 0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0xC00, gMC.y + 0x400, 2);
|
|
SetCaret(gMC.x + 0x1800, gMC.y + 0x400, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x400, 0);
|
|
SetCaret(gMC.x - 0x1800, gMC.y + 0x400, 3, 0);
|
|
}
|
|
}
|
|
|
|
PlaySoundObject(34, 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
void ShootBullet_Machinegun1(int level)
|
|
{
|
|
if (CountArmsBullet(4) < 5)
|
|
{
|
|
int bul_no;
|
|
|
|
switch (level)
|
|
{
|
|
case 1:
|
|
bul_no = 10;
|
|
break;
|
|
case 2:
|
|
bul_no = 11;
|
|
break;
|
|
case 3:
|
|
bul_no = 12;
|
|
break;
|
|
}
|
|
|
|
if (!(gKey & gKeyShot))
|
|
gMC.rensha = 6;
|
|
|
|
if (gKey & gKeyShot)
|
|
{
|
|
if (++gMC.rensha > 6)
|
|
{
|
|
gMC.rensha = 0;
|
|
if (!UseArmsEnergy(1))
|
|
{
|
|
PlaySoundObject(37, 1);
|
|
|
|
if (!empty)
|
|
{
|
|
SetCaret(gMC.x, gMC.y, 16, 0);
|
|
empty = 50;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (gMC.up)
|
|
{
|
|
if (level == 3)
|
|
gMC.ym += 0x100;
|
|
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x600, gMC.y - 0x1000, 1);
|
|
SetCaret(gMC.x + 0x600, gMC.y - 0x1000, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x600, gMC.y - 0x1000, 1);
|
|
SetCaret(gMC.x - 0x600, gMC.y - 0x1000, 3, 0);
|
|
}
|
|
}
|
|
else if (gMC.down)
|
|
{
|
|
if (level == 3)
|
|
{
|
|
if (gMC.ym > 0)
|
|
gMC.ym /= 2;
|
|
|
|
if (gMC.ym > -0x400)
|
|
{
|
|
gMC.ym -= 0x200;
|
|
if (gMC.ym < -0x400)
|
|
gMC.ym = -0x400;
|
|
}
|
|
}
|
|
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x600, gMC.y + 0x1000, 3);
|
|
SetCaret(gMC.x + 0x600, gMC.y + 0x1000, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x600, gMC.y + 0x1000, 3);
|
|
SetCaret(gMC.x - 0x600, gMC.y + 0x1000, 3, 0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x1800, gMC.y + 0x600, 2);
|
|
SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x1800, gMC.y + 0x600, 0);
|
|
SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
|
|
}
|
|
}
|
|
|
|
if (level == 3)
|
|
PlaySoundObject(49, 1);
|
|
else
|
|
PlaySoundObject(32, 1);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
static int wait = 0;
|
|
|
|
++wait;
|
|
if (gMC.equip & 8)
|
|
{
|
|
if (wait > 1)
|
|
{
|
|
wait = 0;
|
|
ChargeArmsEnergy(1);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (wait > 4)
|
|
{
|
|
wait = 0;
|
|
ChargeArmsEnergy(1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void ShootBullet_Missile(int level, bool bSuper)
|
|
{
|
|
int bul_no;
|
|
|
|
if (bSuper)
|
|
{
|
|
switch (level)
|
|
{
|
|
case 1:
|
|
bul_no = 28;
|
|
break;
|
|
case 2:
|
|
bul_no = 29;
|
|
break;
|
|
case 3:
|
|
bul_no = 30;
|
|
break;
|
|
}
|
|
|
|
if (level == 1)
|
|
{
|
|
if (CountArmsBullet(10) >= 1 || CountArmsBullet(11) >= 1)
|
|
return;
|
|
}
|
|
else if (level == 2)
|
|
{
|
|
if (CountArmsBullet(10) >= 2 || CountArmsBullet(11) >= 2)
|
|
return;
|
|
}
|
|
else if (level == 3)
|
|
{
|
|
if (CountArmsBullet(10) >= 4 || CountArmsBullet(11) >= 4)
|
|
return;
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
switch (level)
|
|
{
|
|
case 1:
|
|
bul_no = 13;
|
|
break;
|
|
case 2:
|
|
bul_no = 14;
|
|
break;
|
|
case 3:
|
|
bul_no = 15;
|
|
break;
|
|
}
|
|
|
|
if (level == 1)
|
|
{
|
|
if (CountArmsBullet(5) >= 1 || CountArmsBullet(6) >= 1)
|
|
return;
|
|
}
|
|
else if (level == 2)
|
|
{
|
|
if (CountArmsBullet(5) >= 2 || CountArmsBullet(6) >= 2)
|
|
return;
|
|
}
|
|
else if ( level == 3 )
|
|
{
|
|
if (CountArmsBullet(5) >= 4 || CountArmsBullet(6) >= 4)
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (!(gKeyTrg & gKeyShot))
|
|
return;
|
|
|
|
if (level < 3)
|
|
{
|
|
if (!UseArmsEnergy(1))
|
|
{
|
|
PlaySoundObject(37, 1);
|
|
|
|
if (!empty)
|
|
{
|
|
SetCaret(gMC.x, gMC.y, 16, 0);
|
|
empty = 50;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if (gMC.up)
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x200, gMC.y - 0x1000, 1);
|
|
SetCaret(gMC.x + 0x200, gMC.y - 0x1000, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1);
|
|
SetCaret(gMC.x - 0x200, gMC.y - 0x1000, 3, 0);
|
|
}
|
|
}
|
|
else if (gMC.down)
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x200, gMC.y + 0x1000, 3);
|
|
SetCaret(gMC.x + 0x200, gMC.y + 0x1000, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3);
|
|
SetCaret(gMC.x - 0x200, gMC.y + 0x1000, 3, 0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0xC00, gMC.y, 2);
|
|
SetCaret(gMC.x + 0x1800, gMC.y, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0xC00, gMC.y, 0);
|
|
SetCaret(gMC.x - 0x1800, gMC.y, 3, 0);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!UseArmsEnergy(1))
|
|
{
|
|
PlaySoundObject(37, 1);
|
|
|
|
if (!empty)
|
|
{
|
|
SetCaret(gMC.x, gMC.y, 16, 0);
|
|
empty = 50;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if (gMC.up)
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x200, gMC.y - 0x1000, 1);
|
|
SetCaret(gMC.x + 0x200, gMC.y - 0x1000, 3, 0);
|
|
SetBullet(bul_no, gMC.x + 0x600, gMC.y, 1);
|
|
SetBullet(bul_no, gMC.x - 0x600, gMC.y, 1);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1);
|
|
SetCaret(gMC.x - 0x200, gMC.y - 0x1000, 3, 0);
|
|
SetBullet(bul_no, gMC.x + 0x600, gMC.y, 1);
|
|
SetBullet(bul_no, gMC.x - 0x600, gMC.y, 1);
|
|
}
|
|
}
|
|
else if (gMC.down)
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x200, gMC.y + 0x1000, 3);
|
|
SetCaret(gMC.x + 0x200, gMC.y + 0x1000, 3, 0);
|
|
SetBullet(bul_no, gMC.x - 0x600, gMC.y, 3);
|
|
SetBullet(bul_no, gMC.x + 0x600, gMC.y, 3);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3);
|
|
SetCaret(gMC.x - 0x200, gMC.y + 0x1000, 3, 0);
|
|
SetBullet(bul_no, gMC.x + 0x600, gMC.y, 3);
|
|
SetBullet(bul_no, gMC.x - 0x600, gMC.y, 3);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0xC00, gMC.y + 0x200, 2);
|
|
SetCaret(gMC.x + 0x1800, gMC.y + 0x200, 3, 0);
|
|
SetBullet(bul_no, gMC.x, gMC.y - 0x1000, 2);
|
|
SetBullet(bul_no, gMC.x - 0x800, gMC.y - 0x200, 2);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x200, 0);
|
|
SetCaret(gMC.x - 0x1800, gMC.y + 0x200, 3, 0);
|
|
SetBullet(bul_no, gMC.x, gMC.y - 0x1000, 0);
|
|
SetBullet(bul_no, gMC.x + 0x800, gMC.y - 0x200, 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
PlaySoundObject(32, 1);
|
|
}
|
|
|
|
void ShootBullet_Bubblin1(void)
|
|
{
|
|
static int wait;
|
|
|
|
if (CountArmsBullet(7) <= 3)
|
|
{
|
|
if (gKeyTrg & gKeyShot)
|
|
{
|
|
if (!UseArmsEnergy(1))
|
|
{
|
|
PlaySoundObject(37, 1);
|
|
if (!empty)
|
|
{
|
|
SetCaret(gMC.x, gMC.y, 16, 0);
|
|
empty = 50;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (gMC.up)
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(19, gMC.x + 0x200, gMC.y - 0x400, 1);
|
|
SetCaret(gMC.x + 0x200, gMC.y - 0x400, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(19, gMC.x - 0x200, gMC.y - 0x400, 1);
|
|
SetCaret(gMC.x - 0x200, gMC.y - 0x400, 3, 0);
|
|
}
|
|
}
|
|
else if (gMC.down)
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(19, gMC.x + 0x200, gMC.y + 0x400, 3);
|
|
SetCaret(gMC.x + 0x200, gMC.y + 0x400, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(19, gMC.x - 0x200, gMC.y + 0x400, 3);
|
|
SetCaret(gMC.x - 0x200, gMC.y + 0x400, 3, 0);
|
|
}
|
|
}
|
|
else if (gMC.direct)
|
|
{
|
|
SetBullet(19, gMC.x + 0xC00, gMC.y + 0x600, 2);
|
|
SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(19, gMC.x - 0xC00, gMC.y + 0x600, 0);
|
|
SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
|
|
}
|
|
|
|
PlaySoundObject(48, 1);
|
|
}
|
|
}
|
|
else if (++wait > 20)
|
|
{
|
|
wait = 0;
|
|
ChargeArmsEnergy(1);
|
|
}
|
|
}
|
|
}
|
|
|
|
void ShootBullet_Bubblin2(int level)
|
|
{
|
|
static int wait;
|
|
|
|
if (CountArmsBullet(7) <= 15)
|
|
{
|
|
level += 18;
|
|
|
|
if (!(gKey & gKeyShot))
|
|
gMC.rensha = 6;
|
|
|
|
if (gKey & gKeyShot)
|
|
{
|
|
if (++gMC.rensha >= 7)
|
|
{
|
|
gMC.rensha = 0;
|
|
|
|
if (!UseArmsEnergy(1))
|
|
{
|
|
PlaySoundObject(37, 1);
|
|
if (!empty)
|
|
{
|
|
SetCaret(gMC.x, gMC.y, 16, 0);
|
|
empty = 50;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (gMC.up)
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(level, gMC.x + 0x600, gMC.y - 0x1000, 1);
|
|
SetCaret(gMC.x + 0x600, gMC.y - 0x2000, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(level, gMC.x - 0x600, gMC.y - 0x1000, 1);
|
|
SetCaret(gMC.x - 0x600, gMC.y - 0x2000, 3, 0);
|
|
}
|
|
}
|
|
else if (gMC.down)
|
|
{
|
|
if (gMC.direct)
|
|
{
|
|
SetBullet(level, gMC.x + 0x600, gMC.y + 0x1000, 3);
|
|
SetCaret(gMC.x + 0x600, gMC.y + 0x2000, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(level, gMC.x - 0x600, gMC.y + 0x1000, 3);
|
|
SetCaret(gMC.x - 0x600, gMC.y + 0x2000, 3, 0);
|
|
}
|
|
}
|
|
else if (gMC.direct)
|
|
{
|
|
SetBullet(level, gMC.x + 0xC00, gMC.y + 0x600, 2);
|
|
SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(level, gMC.x - 0xC00, gMC.y + 0x600, 0);
|
|
SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
|
|
}
|
|
|
|
PlaySoundObject(48, 1);
|
|
}
|
|
}
|
|
}
|
|
else if (++wait > 1)
|
|
{
|
|
wait = 0;
|
|
ChargeArmsEnergy(1);
|
|
}
|
|
}
|
|
}
|
|
|
|
void ShootBullet_Sword(int level)
|
|
{
|
|
if (CountArmsBullet(9) <= 0)
|
|
{
|
|
int bul_no;
|
|
|
|
switch (level)
|
|
{
|
|
case 1:
|
|
bul_no = 25;
|
|
break;
|
|
case 2:
|
|
bul_no = 26;
|
|
break;
|
|
case 3:
|
|
bul_no = 27;
|
|
break;
|
|
}
|
|
|
|
if (gKeyTrg & gKeyShot)
|
|
{
|
|
if (gMC.up)
|
|
{
|
|
if (gMC.direct == 0)
|
|
SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x800, 1);
|
|
else
|
|
SetBullet(bul_no, gMC.x + 0x200, gMC.y + 0x800, 1);
|
|
}
|
|
else if (gMC.down)
|
|
{
|
|
if (gMC.direct == 0)
|
|
SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0xC00, 3);
|
|
else
|
|
SetBullet(bul_no, gMC.x + 0x200, gMC.y - 0xC00, 3);
|
|
}
|
|
else
|
|
{
|
|
if (gMC.direct == 0)
|
|
SetBullet(bul_no, gMC.x + 0xC00, gMC.y - 0x600, 0);
|
|
else
|
|
SetBullet(bul_no, gMC.x - 0xC00, gMC.y - 0x600, 2);
|
|
}
|
|
|
|
PlaySoundObject(34, 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
void ShootBullet_Nemesis(int level)
|
|
{
|
|
int bul_no;
|
|
|
|
switch (level)
|
|
{
|
|
case 1:
|
|
bul_no = 34;
|
|
break;
|
|
case 2:
|
|
bul_no = 35;
|
|
break;
|
|
case 3:
|
|
bul_no = 36;
|
|
break;
|
|
}
|
|
|
|
if (CountArmsBullet(12) <= 1 && gKeyTrg & gKeyShot)
|
|
{
|
|
if (!UseArmsEnergy(1))
|
|
{
|
|
PlaySoundObject(37, 1);
|
|
}
|
|
else
|
|
{
|
|
if (gMC.up)
|
|
{
|
|
if (gMC.direct == 0)
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1800, 1);
|
|
SetCaret(gMC.x - 0x200, gMC.y - 0x1800, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x200, gMC.y - 0x1800, 1);
|
|
SetCaret(gMC.x + 0x200, gMC.y - 0x1800, 3, 0);
|
|
}
|
|
}
|
|
else if (gMC.down)
|
|
{
|
|
if (gMC.direct == 0)
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1800, 3);
|
|
SetCaret(gMC.x - 0x200, gMC.y + 0x1800, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x200, gMC.y + 0x1800, 3);
|
|
SetCaret(gMC.x + 0x200, gMC.y + 0x1800, 3, 0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (gMC.direct == 0)
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x2C00, gMC.y + 0x600, 0);
|
|
SetCaret(gMC.x - 0x2000, gMC.y + 0x600, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x2C00, gMC.y + 0x600, 2);
|
|
SetCaret(gMC.x + 0x2000, gMC.y + 0x600, 3, 0);
|
|
}
|
|
}
|
|
|
|
switch (level)
|
|
{
|
|
case 1:
|
|
PlaySoundObject(117, 1);
|
|
break;
|
|
case 2:
|
|
PlaySoundObject(49, 1);
|
|
break;
|
|
case 3:
|
|
PlaySoundObject(60, 1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void ResetSpurCharge(void)
|
|
{
|
|
spur_charge = 0;
|
|
|
|
if (gArmsData[gSelectedArms].code == 13)
|
|
ZeroExpMyChar();
|
|
}
|
|
|
|
void ShootBullet_Spur(int level)
|
|
{
|
|
int bul_no;
|
|
|
|
bool bShot = false;
|
|
|
|
if (gKey & gKeyShot)
|
|
{
|
|
if (gMC.equip & 8)
|
|
AddExpMyChar(3);
|
|
else
|
|
AddExpMyChar(2);
|
|
|
|
if (++spur_charge / 2 % 2)
|
|
{
|
|
if (level == 1)
|
|
{
|
|
PlaySoundObject(59, 1);
|
|
}
|
|
else if (level == 2)
|
|
{
|
|
PlaySoundObject(60, 1);
|
|
}
|
|
else if (level == 3)
|
|
{
|
|
if (!IsMaxExpMyChar())
|
|
PlaySoundObject(61, 1);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (spur_charge)
|
|
bShot = true;
|
|
|
|
spur_charge = 0;
|
|
}
|
|
|
|
static bool bMax;
|
|
|
|
if (IsMaxExpMyChar())
|
|
{
|
|
if (bMax == false)
|
|
{
|
|
bMax = true;
|
|
PlaySoundObject(65, 1);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
bMax = false;
|
|
}
|
|
|
|
if (!(gKey & gKeyShot))
|
|
ZeroExpMyChar();
|
|
|
|
switch (level)
|
|
{
|
|
case 1:
|
|
bul_no = 6;
|
|
bShot = false;
|
|
break;
|
|
case 2:
|
|
bul_no = 37;
|
|
break;
|
|
case 3:
|
|
if (bMax)
|
|
bul_no = 39;
|
|
else
|
|
bul_no = 38;
|
|
break;
|
|
}
|
|
|
|
if (CountArmsBullet(13) <= 0 && CountArmsBullet(14) <= 0 && (gKeyTrg & gKeyShot || bShot))
|
|
{
|
|
if (!UseArmsEnergy(1))
|
|
{
|
|
PlaySoundObject(37, 1);
|
|
}
|
|
else
|
|
{
|
|
if (gMC.up)
|
|
{
|
|
if (gMC.direct == 0)
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1);
|
|
SetCaret(gMC.x - 0x200, gMC.y - 0x1000, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x200, gMC.y - 0x1000, 1);
|
|
SetCaret(gMC.x + 0x200, gMC.y - 0x1000, 3, 0);
|
|
}
|
|
}
|
|
else if (gMC.down)
|
|
{
|
|
if (gMC.direct == 0)
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3);
|
|
SetCaret(gMC.x - 0x200, gMC.y + 0x1000, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0x200, gMC.y + 0x1000, 3);
|
|
SetCaret(gMC.x + 0x200, gMC.y + 0x1000, 3, 0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (gMC.direct == 0)
|
|
{
|
|
SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x600, 0);
|
|
SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
|
|
}
|
|
else
|
|
{
|
|
SetBullet(bul_no, gMC.x + 0xC00, gMC.y + 0x600, 2);
|
|
SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
|
|
}
|
|
}
|
|
|
|
switch (bul_no)
|
|
{
|
|
case 6:
|
|
PlaySoundObject(49, 1);
|
|
break;
|
|
case 37:
|
|
PlaySoundObject(62, 1);
|
|
break;
|
|
case 38:
|
|
PlaySoundObject(63, 1);
|
|
break;
|
|
case 39:
|
|
PlaySoundObject(64, 1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void ShootBullet()
|
|
{
|
|
if (empty)
|
|
--empty;
|
|
|
|
//Only let the player shoot every 4 frames
|
|
static int soft_rensha;
|
|
if (soft_rensha)
|
|
--soft_rensha;
|
|
|
|
if (gKeyTrg & gKeyShot)
|
|
{
|
|
if (soft_rensha)
|
|
return;
|
|
soft_rensha = 4;
|
|
}
|
|
|
|
//Run functions
|
|
if (!(gMC.cond & 2))
|
|
{
|
|
switch (gArmsData[gSelectedArms].code)
|
|
{
|
|
case 1:
|
|
ShootBullet_Frontia1(gArmsData[gSelectedArms].level);
|
|
break;
|
|
case 2:
|
|
ShootBullet_PoleStar(gArmsData[gSelectedArms].level);
|
|
break;
|
|
case 3:
|
|
ShootBullet_FireBall(gArmsData[gSelectedArms].level);
|
|
break;
|
|
case 4:
|
|
ShootBullet_Machinegun1(gArmsData[gSelectedArms].level);
|
|
break;
|
|
case 5:
|
|
ShootBullet_Missile(gArmsData[gSelectedArms].level, false);
|
|
break;
|
|
case 7:
|
|
switch (gArmsData[gSelectedArms].level)
|
|
{
|
|
case 1:
|
|
ShootBullet_Bubblin1();
|
|
break;
|
|
case 2:
|
|
ShootBullet_Bubblin2(2);
|
|
break;
|
|
case 3:
|
|
ShootBullet_Bubblin2(3);
|
|
break;
|
|
}
|
|
|
|
break;
|
|
case 9:
|
|
switch (gArmsData[gSelectedArms].level)
|
|
{
|
|
case 1:
|
|
ShootBullet_Sword(1);
|
|
break;
|
|
case 2:
|
|
ShootBullet_Sword(2);
|
|
break;
|
|
case 3:
|
|
ShootBullet_Sword(3);
|
|
break;
|
|
}
|
|
|
|
break;
|
|
case 10:
|
|
ShootBullet_Missile(gArmsData[gSelectedArms].level, true);
|
|
break;
|
|
case 12:
|
|
ShootBullet_Nemesis(gArmsData[gSelectedArms].level);
|
|
break;
|
|
case 13:
|
|
ShootBullet_Spur(gArmsData[gSelectedArms].level);
|
|
break;
|
|
}
|
|
}
|
|
}
|