2.0
30 Oct 2013 20:02
/*Grappling Beam*/
/*Author: szmol96*/
void GrapplingBeam(jjOBJ@ beam) {
if (beam.state == STATE::START) {
beam.state = STATE::FLY;
jjSample(p.xPos, p.yPos, SOUND::AMMO_ICEPU4, 0, 9000);
}
jjPLAYER@ p = jjPlayers[beam.creatorID];
beam.xPos = beam.xPos + beam.xSpeed + (beam.xAcc * 2);
beam.yPos = beam.yPos + beam.ySpeed + (beam.yAcc * 2);
float dx = beam.xPos - p.xPos;
float dy = beam.yPos - p.yPos;
float length = sqrt(dx*dx+dy*dy);
if (jjMaskedPixel(beam.xPos, beam.yPos)) {
beam.xSpeed = 0;
beam.ySpeed = 0;
beam.xAcc = 0;
beam.yAcc = 0;
p.xSpeed = 30*dx/length;
p.ySpeed = 30*dy/length;
if (jjGameTicks% 25 == 0) jjSample(p.xPos, p.yPos, SOUND::COMMON_SHIELD1, 0, 10000);
if (jjGameTicks% 25 == 0) jjSample(p.xPos, p.yPos, SOUND::COMMON_SHIELD1, 0, 11000);
}
for(float pos = 0; pos<length; pos += 3){
jjDrawSpriteFromCurFrame(p.xPos + pos * dx/length, p.yPos + pos * dy/length, beam.curFrame, 0, SPRITE::GEM, 9, 4, 4, -1);
}
if (p.keyFire == false || length > 400) beam.delete();
beam.frameID = (++beam.counter >> 1) % 9;
beam.determineCurFrame();
beam.draw();
}
void GrapplingBeamPU(jjOBJ@ beam) {
if (beam.state == STATE::START) {
beam.state = STATE::FLY;
jjSample(p.xPos, p.yPos, SOUND::AMMO_SPZBL2, 0, 11000);
jjSample(p.xPos, p.yPos, SOUND::AMMO_ICEPU4, 0, 9000);
}
jjPLAYER@ p = jjPlayers[beam.creatorID];
beam.xPos = beam.xPos + beam.xSpeed + (beam.xAcc * 2);
beam.yPos = beam.yPos + beam.ySpeed + (beam.yAcc * 2);
float dx = beam.xPos - p.xPos;
float dy = beam.yPos - p.yPos;
float length = sqrt(dx*dx+dy*dy);
if (jjMaskedPixel(beam.xPos, beam.yPos)) {
beam.xSpeed = 0;
beam.ySpeed = 0;
beam.xAcc = 0;
beam.yAcc = 0;
p.xSpeed = 30*dx/length;
p.ySpeed = 30*dy/length;
if (jjGameTicks% 25 == 0) jjSample(p.xPos, p.yPos, SOUND::COMMON_SHIELD1, 0, 10000);
if (jjGameTicks% 25 == 0) jjSample(p.xPos, p.yPos, SOUND::COMMON_SHIELD1, 0, 11000);
}
for(float pos = 0; pos<length; pos += 3){
jjDrawSpriteFromCurFrame(p.xPos + pos * dx/length, p.yPos + pos * dy/length, beam.curFrame, 0, SPRITE::PALSHIFT, jjRandom() % 5, 4, 4, -1);
}
if (p.keyFire == false || length > 400) beam.delete();
beam.frameID = (++beam.counter >> 1) % 9;
beam.determineCurFrame();
beam.draw();
}
void onLevelLoad() {
jjWeapons[WEAPON::GUN8].style = WEAPON::MISSILE;
jjObjectPresets[OBJECT::FIREBALLBULLET].behavior = GrapplingBeam;
jjObjectPresets[OBJECT::FIREBALLBULLET].special = jjObjectPresets[OBJECT::FIREBALLBULLET].determineCurAnim(ANIM::PICKUPS, 85);
jjObjectPresets[OBJECT::FIREBALLBULLETPU].behavior = GrapplingBeamPU;
jjObjectPresets[OBJECT::FIREBALLBULLETPU].special = jjObjectPresets[OBJECT::FIREBALLBULLETPU].determineCurAnim(ANIM::PICKUPS, 85);
}
void onPlayer(jjPLAYER@ p) {
p.ammo[8] = 3;
}
Jazz2Online © 1999-INFINITY (Site Credits). We have a Privacy Policy. Jazz Jackrabbit, Jazz Jackrabbit 2, Jazz Jackrabbit Advance and all related trademarks and media are ™ and © Epic Games. Lori Jackrabbit is © Dean Dodrill. J2O development powered by Loops of Fury and Chemical Beats.
Eat your lima beans, Johnny.