Downloads containing weaponVMega1.asc

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Anniversary Bash 22 levels Jazz2Online Multiple N/A Download file
TSF with JJ2+ Only: Facilis descensus Averno Loon Battle N/A Download file
Custom Weapons...Featured Download Violet CLM Other 10 Download file

File preview

  1. #pragma require "weaponVMega1.asc"
  2. #include "MLLE-Weapons.asc"
  3. #pragma require "weaponVMega.j2a"
  4.  
  5. namespace WeaponVMega {
  6.         namespace Boomerang {
  7.                 class Weapon : MLLEWeapons::WeaponInterface {
  8.                         Weapon() {
  9.                                 super(
  10.                                         regularObjectTemplate: MLLEWeapons::ObjectTemplate(
  11.                                                 xSpeed: 6,
  12.                                                 xAcc: 0.125,
  13.                                                 killAnim: jjAnimSets[ANIM::AMMO].firstAnim + 80,
  14.                                                 isBlastable: false,
  15.                                                 lightType: LIGHT::POINT2,
  16.                                                 counterEnd: 35
  17.                                         ),
  18.                                         powerupObjectTemplate: MLLEWeapons::ObjectTemplate(
  19.                                                 xSpeed: 7,
  20.                                                 xAcc: 0.1875,
  21.                                                 killAnim: jjAnimSets[ANIM::AMMO].firstAnim + 80,
  22.                                                 isBlastable: false,
  23.                                                 lightType: LIGHT::POINT,
  24.                                                 counterEnd: 30,
  25.                                                 animSpeed: 2
  26.                                         ),
  27.                                         animSetFilename: "weaponVMega.j2a",
  28.                                         animSetID: 0,
  29.                                         pickupAnimation: 1,
  30.                                         behavior: function(obj, powerup) { obj.behavior = Behavior; }
  31.                                 );
  32.                         }
  33.                 }
  34.                 void Behavior(jjOBJ@ obj) {
  35.                         if (obj.state == STATE::START) {
  36.                                 obj.xAcc = (obj.xSpeed + obj.var[7] / 65536.f) * 32;
  37.                                 obj.yAcc = obj.ySpeed * 32;
  38.                                 obj.state = STATE::FLY;
  39.                                 DefaultWeapons::DefaultSample(obj, WEAPON::BLASTER);
  40.                         }
  41.                        
  42.                         obj.counter += 8;
  43.                        
  44.                         const auto lastX = obj.xPos, lastY = obj.yPos;
  45.                         obj.xPos = obj.xOrg + jjSin(obj.counter) * obj.xAcc;
  46.                         obj.yPos = obj.yOrg + jjSin(obj.counter) * obj.yAcc;
  47.                         obj.xSpeed = obj.xPos - lastX; //for GetAngle
  48.                         obj.ySpeed = obj.yPos - lastY; //
  49.                        
  50.                         obj.frameID = ((jjGameTicks + obj.objectID) / 3) & 7;
  51.                         if (obj.frameID >= 4)
  52.                                 obj.frameID = 7 - obj.frameID;
  53.                         obj.curFrame = jjAnimations[obj.curAnim] + obj.frameID;
  54.                        
  55.                         if (obj.counter >= 512 || MLLEWeapons::HelpfulBulletFunctions::MaskedPixel(obj) || obj.state == STATE::EXPLODE) {
  56.                                 obj.delete();
  57.                                 if (obj.creatorType == CREATOR::PLAYER) {
  58.                                         const jjPLAYER@ play = jjPlayers[obj.creator];
  59.                                         if (abs(obj.xPos - play.xPos) <= 20 && abs(obj.yPos - play.yPos) <= 20)
  60.                                                 return; //inside shooter; no explosion anim needed
  61.                                 }
  62.                                 jjObjects[jjAddObject(OBJECT::EXPLOSION, obj.xPos, obj.yPos, obj.objectID, CREATOR::OBJECT)].curAnim = obj.killAnim;
  63.                                 return;
  64.                         } else if (obj.counter == 256 && obj.creatorType == CREATOR::PLAYER) { //reverse
  65.                                 obj.xAcc = obj.xPos - (obj.xOrg = jjPlayers[obj.creator].xPos);
  66.                                 obj.yAcc = obj.yPos - (obj.yOrg = jjPlayers[obj.creator].yPos);
  67.                         }
  68.                        
  69.                         jjDrawRotatedSpriteFromCurFrame(
  70.                                 obj.xPos, obj.yPos,
  71.                                 obj.curFrame,
  72.                                 MLLEWeapons::HelpfulBulletFunctions::GetAngle(obj), MLLEWeapons::HelpfulBulletFunctions::GetDirection(obj), 1,
  73.                                 SPRITE::SINGLEHUE, !MLLEWeapons::HelpfulBulletFunctions::IsPowerup(obj) ? 65 : 72
  74.                         );
  75.                 }
  76.         }
  77. }
  78.