Files
AM2R-Community-Updates/scripts/shoot_beam.gml
2020-12-22 20:54:55 -06:00

244 lines
9.5 KiB
Plaintext

/// shoot_beam(direction)
if (chargebeam < 1) chargebeam = 0;
instance_create(x + aspr2x, y + aspr2y, oMflash);
beams = 1;
if (global.wbeam && !global.sbeam && chargebeam >= 1) beams = 2;
if (global.sbeam) beams = 3;
i = 0;
repeat (beams) {
beam = instance_create(x + aspr2x, y + aspr2y, oBeam);
beam.ibeam = global.ibeam;
beam.wbeam = global.wbeam;
beam.pbeam = global.pbeam;
beam.sbeam = global.sbeam;
beam.beamid = i;
beam.direction = argument0;
beam.maindir = argument0;
beam.speed = 6.4;
beam.offset = 0;
if (global.wbeam) {
global.wbdir = !global.wbdir;
beam.wbeamdir = global.wbdir;
beam.speed = 9;
beam.depth = -1000;
}
if (global.ibeam) beam.alarm[0] = 1 + random(5);
if (global.pbeam) beam.alarm[1] = 1;
if (chargebeam >= 1) beam.speed = 12;
beam.image_angle = argument0;
beam.fcolor = make_color_rgb(180, 180, 45);
if (global.wbeam) beam.fcolor = make_color_rgb(240, 150, 210);
if (global.pbeam) beam.fcolor = make_color_rgb(120, 250, 210);
if (global.ibeam) beam.fcolor = make_color_rgb(75, 220, 255);
beam.falpha = 0.4;
beam.fxscale = 0.6;
beam.fyscale = 0.6;
if (global.sbeam) beam.fxscale = 0.8;
if (chargebeam >= 1) {
beam.fxscale = 1;
beam.fyscale = 1;
}
nofire = 5;
beam.damage = 5;
beam.chargebeam = 0;
if (global.wbeam) {
beam.damage *= 1.5;
nofire += 2;
}
if (global.ibeam) {
beam.damage *= 1.5;
nofire += 2;
}
if (global.sbeam) {
beam.damage *= 0.8;
nofire += 2;
}
if (global.pbeam) {
beam.damage *= 1.2;
nofire += 3;
}
if (chargebeam >= 1) {
beam.damage *= 3;
beam.chargebeam = 1;
if (global.wbeam && !global.sbeam) beam.damage *= 0.6;
}
if (aimdirection == 1) {
beam.x += 4;
if (state != GRIP) beam.y -= 1;
}
if (aimdirection == 0) beam.x -= 4;
if (aimdirection == 6) {
beam.y += 4;
if (facing == LEFT) beam.x += 1;
}
if (global.ibeam == 0 && global.wbeam == 0 && global.pbeam == 0 && global.sbeam == 0) {
if (chargebeam == 0) beam.sprite_index = sBeam;
if (chargebeam >= 1) {
beam.sprite_index = sBeam2;
beam.offset = 4;
}
}
if (global.ibeam == 0 && global.wbeam == 1 && global.pbeam == 0 && global.sbeam == 0) {
if (chargebeam == 0) beam.sprite_index = sWBeam;
if (chargebeam >= 1) beam.sprite_index = sWBeam2;
beam.offset = 10;
}
if (global.ibeam == 1 && global.wbeam == 0 && global.pbeam == 0 && global.sbeam == 0) {
if (chargebeam == 0) beam.sprite_index = sIBeam;
if (chargebeam >= 1) {
beam.sprite_index = sIBeam2;
beam.image_xscale = 1.4;
}
}
if (global.ibeam == 0 && global.wbeam == 0 && global.pbeam == 1 && global.sbeam == 0) {
if (chargebeam == 0) beam.sprite_index = sPBeam;
if (chargebeam >= 1) beam.sprite_index = sPBeam2;
beam.offset = 4;
}
if (global.ibeam == 0 && global.wbeam == 0 && global.pbeam == 0 && global.sbeam == 1) {
if (chargebeam == 0) {
beam.sprite_index = sSBeam;
beam.offset = 5;
}
if (chargebeam >= 1) {
beam.sprite_index = sSBeam2;
beam.offset = 8;
}
}
if (global.ibeam == 0 && global.wbeam == 1 && global.pbeam == 0 && global.sbeam == 1) {
if (chargebeam == 0) beam.sprite_index = sWBeam;
if (chargebeam >= 1) beam.sprite_index = sWBeam2;
beam.offset = 12;
}
if (global.ibeam == 1 && global.wbeam == 0 && global.pbeam == 0 && global.sbeam == 1) {
if (chargebeam == 0) {
beam.sprite_index = sISBeam;
beam.image_xscale = 0.6;
}
if (chargebeam >= 1) {
beam.sprite_index = sISBeam;
beam.image_xscale = 1.2;
}
beam.offset = 8;
}
if (global.ibeam == 0 && global.wbeam == 0 && global.pbeam == 1 && global.sbeam == 1) {
if (chargebeam == 0) beam.sprite_index = sSPBeam;
if (chargebeam >= 1) beam.sprite_index = sSPBeam2;
beam.offset = 8;
}
if (global.ibeam == 1 && global.wbeam == 1 && global.pbeam == 0 && global.sbeam == 0) {
if (chargebeam == 0) beam.sprite_index = sIWBeam;
if (chargebeam >= 1) beam.sprite_index = sIWBeam2;
beam.offset = 8;
}
if (global.ibeam == 0 && global.wbeam == 1 && global.pbeam == 1 && global.sbeam == 0) {
if (chargebeam == 0) beam.sprite_index = sPBeam;
if (chargebeam >= 1) beam.sprite_index = sPBeam2;
beam.offset = 8;
}
if (global.ibeam == 1 && global.wbeam == 0 && global.pbeam == 1 && global.sbeam == 0) {
if (chargebeam == 0) {
beam.sprite_index = sIPBeam;
beam.image_xscale = 0.6;
beam.image_yscale = 0.6;
}
if (chargebeam >= 1) beam.sprite_index = sIPBeam;
beam.offset = 8;
}
if (global.ibeam == 1 && global.wbeam == 1 && global.pbeam == 0 && global.sbeam == 1) {
if (chargebeam == 0) beam.sprite_index = sIWBeam;
if (chargebeam >= 1) beam.sprite_index = sIWBeam2;
beam.offset = 8;
}
if (global.ibeam == 0 && global.wbeam == 1 && global.pbeam == 1 && global.sbeam == 1) {
if (chargebeam == 0) beam.sprite_index = sPBeam;
if (chargebeam >= 1) beam.sprite_index = sPBeam2;
beam.offset = 8;
}
if (global.ibeam == 1 && global.wbeam == 0 && global.pbeam == 1 && global.sbeam == 1) {
if (chargebeam == 0) beam.sprite_index = sISPBeam;
if (chargebeam >= 1) beam.sprite_index = sISPBeam2;
beam.offset = 8;
}
if (global.ibeam == 1 && global.wbeam == 1 && global.pbeam == 1 && global.sbeam == 0) {
if (chargebeam == 0) {
beam.sprite_index = sIPBeam;
beam.image_xscale = 0.6;
beam.image_yscale = 0.6;
}
if (chargebeam >= 1) beam.sprite_index = sIPBeam;
beam.offset = 8;
}
if (global.ibeam == 1 && global.wbeam == 1 && global.pbeam == 1 && global.sbeam == 1) {
if (chargebeam == 0) beam.sprite_index = sISWPBeam;
if (chargebeam >= 1) beam.sprite_index = sISWPBeam2;
beam.offset = 8;
}
with (beam) if (offset != 0) beam_offset(offset, maindir);
i += 1;
} // repeat (beams)
if (global.ibeam == 0 && global.wbeam == 0 && global.pbeam == 0 && global.sbeam == 0) {
if (chargebeam == 0) PlaySoundMono(sndFireBeam);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamC);
}
if (global.ibeam == 0 && global.wbeam == 1 && global.pbeam == 0 && global.sbeam == 0) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamW);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamCW);
}
if (global.ibeam == 1 && global.wbeam == 0 && global.pbeam == 0 && global.sbeam == 0) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamI);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamCI);
}
if (global.ibeam == 0 && global.wbeam == 0 && global.pbeam == 1 && global.sbeam == 0) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamP);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamCP);
}
if (global.ibeam == 0 && global.wbeam == 0 && global.pbeam == 0 && global.sbeam == 1) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamS);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamCS);
}
if (global.ibeam == 0 && global.wbeam == 1 && global.pbeam == 0 && global.sbeam == 1) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamSW);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamCSW);
}
if (global.ibeam == 1 && global.wbeam == 0 && global.pbeam == 0 && global.sbeam == 1) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamSI);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamCSI);
}
if (global.ibeam == 0 && global.wbeam == 0 && global.pbeam == 1 && global.sbeam == 1) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamSP);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamCSP);
}
if (global.ibeam == 1 && global.wbeam == 1 && global.pbeam == 0 && global.sbeam == 0) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamWI);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamCWI);
}
if (global.ibeam == 0 && global.wbeam == 1 && global.pbeam == 1 && global.sbeam == 0) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamWP);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamCWP);
}
if (global.ibeam == 1 && global.wbeam == 0 && global.pbeam == 1 && global.sbeam == 0) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamIP);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamCIP);
}
if (global.ibeam == 1 && global.wbeam == 1 && global.pbeam == 0 && global.sbeam == 1) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamSWI);
if (chargebeam == 1) PlaySoundMono(sndFireBeamCSWI);
}
if (global.ibeam == 0 && global.wbeam == 1 && global.pbeam == 1 && global.sbeam == 1) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamSWP);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamCSWP);
}
if (global.ibeam == 1 && global.wbeam == 0 && global.pbeam == 1 && global.sbeam == 1) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamSIP);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamCSIP);
}
if (global.ibeam == 1 && global.wbeam == 1 && global.pbeam == 1 && global.sbeam == 0) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamWIP);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamCWIP);
}
if (global.ibeam == 1 && global.wbeam == 1 && global.pbeam == 1 && global.sbeam == 1) {
if (chargebeam == 0) PlaySoundMono(sndFireBeamSWIP);
if (chargebeam >= 1) PlaySoundMono(sndFireBeamCSWIP);
}