/* Grappling Beam 1.0, by szmol96 http://www.jazz2online.com/snippets/91/grappling-beam/ */ /*GrapplingBeam*/ /*Author: szmol96*/ void GrapplingBeam(jjOBJ@ beam) { if (beam.state == STATE::START) beam.state = STATE::FLY; 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; } for(float pos = 0; pos 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 = GrapplingBeam; jjObjectPresets[OBJECT::FIREBALLBULLETPU].special = jjObjectPresets[OBJECT::FIREBALLBULLETPU].determineCurAnim(ANIM::WITCH, 3); } void onPlayer(jjPLAYER@ p) { p.ammo[8] = 3; }