Downloads containing weaponVMega2.asc

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Anniversary Bash 24 CTF PurpleJazz Capture the flag N/A Download file
Custom Weapons...Featured Download Violet CLM Other 10 Download file

File preview

  1. #pragma require "weaponVMega2.asc"
  2. #include "MLLE-Weapons.asc"
  3. #pragma require "weaponVMega.j2a"
  4.  
  5. namespace WeaponVMega {
  6.         namespace Burrower {
  7.                 class Weapon : MLLEWeapons::WeaponInterface {
  8.                         Weapon() {
  9.                                 super(
  10.                                         regularObjectTemplate: MLLEWeapons::ObjectTemplate(
  11.                                                 xSpeed: 3.5,
  12.                                                 ySpeed: 1,
  13.                                                 xAcc: 0.25f,
  14.                                                 yAcc: 0.125f,
  15.                                                 lightType: LIGHT::POINT2,
  16.                                                 counterEnd: (70*3)/2
  17.                                         ),
  18.                                         powerupObjectTemplate: MLLEWeapons::ObjectTemplate(
  19.                                                 xSpeed: 5,
  20.                                                 ySpeed: 1,
  21.                                                 xAcc: 0.25f,
  22.                                                 yAcc: 0.125f,
  23.                                                 lightType: LIGHT::POINT2,
  24.                                                 counterEnd: (70*3)/2,
  25.                                                 curAnim: 1,
  26.                                                 animSpeed: 2
  27.                                         ),
  28.                                         animSetFilename: "weaponVMega.j2a",
  29.                                         animSetID: 1,
  30.                                         pickupAnimation: 6,
  31.                                         poweredUpPickupAnimation: 7,
  32.                                         style: WEAPON::MISSILE,
  33.                                         traits: se::weapon_default_traits | se::weapon_causes_splash_damage | se::weapon_goes_through_walls,
  34.                                         behavior: function(obj, powerup) { obj.behavior = Behavior; }
  35.                                 );
  36.                         }
  37.                 }
  38.                        
  39.                 void Behavior(jjOBJ@ obj) {
  40.                         obj.frameID = jjGameTicks >> 2;
  41.                         obj.determineCurFrame();
  42.                        
  43.                         if (obj.state == STATE::START) {
  44.                                 obj.yAcc = abs(obj.yAcc);
  45.                                 obj.state = STATE::FLY;
  46.                                 obj.age = obj.objectID;
  47.                                 jjSample(obj.xPos, obj.yPos, SOUND::COMMON_LAND);
  48.                         } else if (obj.state == STATE::EXPLODE)
  49.                                 die(obj);
  50.                         else if (obj.state == STATE::FLY) {
  51.                                 obj.xPos += obj.xSpeed + obj.var[7] / 65536.f;
  52.                                 obj.yPos += (obj.ySpeed += obj.yAcc);
  53.                                 if (obj.var[7] > 0x100000)
  54.                                         obj.var[7] = obj.var[7] - 0x80000;
  55.                                 else if (obj.var[7] < -0x100000)
  56.                                         obj.var[7] = obj.var[7] + 0x80000;
  57.                                 if (obj.xPos < 0 || obj.xPos >= MLLEWeapons::LevelRight || obj.yPos >= MLLEWeapons::LevelBottom)
  58.                                         obj.delete();
  59.                                 else if (inGround(obj)) {
  60.                                         obj.state = STATE::SLEEP;
  61.                                         if (int(obj.xSpeed) == 0)
  62.                                                 die(obj);
  63.                                         else if (!MLLEWeapons::HelpfulBulletFunctions::IsPowerup(obj))
  64.                                                 obj.xSpeed *= 0.6667;
  65.                                 }
  66.                                 MLLEWeapons::HelpfulBulletFunctions::DrawAngled(obj);
  67.                         } else {
  68.                                 //obj.ySpeed = 0;
  69.                                 obj.xPos += obj.xSpeed;
  70.                                 if (obj.xPos < 0 || obj.xPos >= MLLEWeapons::LevelRight || !inGround(obj) || MLLEWeapons::HelpfulBulletFunctions::GetNearestEnemyPosition(obj, 40) !is null)
  71.                                         die(obj);
  72.                                 else {
  73.                                         obj.age = jjSampleLooped(obj.xPos, obj.yPos, SOUND::BUBBA_TORNADOATTACK2, obj.age, 63, 200000);
  74.                                         if (jjGameTicks & 3 == 0) {
  75.                                                 jjOBJ@ rock = jjObjects[jjAddObject(OBJECT::SHARD, obj.xPos, obj.yPos - 14, obj.objectID, CREATOR::OBJECT, BEHAVIOR::INACTIVE)];
  76.                                                 rock.curAnim = obj.curAnim + (MLLEWeapons::HelpfulBulletFunctions::IsPowerup(obj) ? 1 : 2) + (jjRandom() & 3);
  77.                                                 rock.lightType = LIGHT::POINT;
  78.                                                 rock.light = 1;
  79.                                                 rock.behavior = BEHAVIOR::SHARD;
  80.                                         }
  81.                                 }
  82.                                 jjDrawSpriteFromCurFrame(obj.xPos, obj.yPos, obj.curFrame, MLLEWeapons::HelpfulBulletFunctions::GetDirection(obj), SPRITE::NORMAL, 0, 5); //behind walls
  83.                         }
  84.                 }
  85.                
  86.                 bool inGround(const jjOBJ@ obj) {
  87.                         return jjMaskedPixel(int(obj.xPos), int(obj.yPos) - 8);
  88.                 }
  89.                 void die(jjOBJ@ obj) {
  90.                         obj.direction = MLLEWeapons::HelpfulBulletFunctions::GetDirection(obj);
  91.                         obj.particlePixelExplosion(2);
  92.                         jjSample(obj.xPos, obj.yPos -= 16, SOUND::AMMO_BOEM1);
  93.                         jjObjects[jjAddObject(OBJECT::EXPLOSION, obj.xPos, obj.yPos)].determineCurAnim(ANIM::AMMO, 3);
  94.                         jjAddObject(obj.eventID, obj.xPos, obj.yPos, obj.creatorID, obj.creatorType, function(splash) {
  95.                                 if (splash.state == STATE::START) {
  96.                                         splash.curFrame = jjAnimations[jjAnimSets[ANIM::AMMO] + 5] + 6;
  97.                                         splash.state = STATE::FLY;
  98.                                         splash.animSpeed = 1;
  99.                                         splash.var[6] = 16;
  100.                                         splash.playerHandling = (splash.creatorType == CREATOR::PLAYER) ? HANDLING::PLAYERBULLET : HANDLING::ENEMYBULLET;
  101.                                 } else {
  102.                                         splash.delete();
  103.                                 }
  104.                         });
  105.                         obj.delete();
  106.                 }
  107.         }
  108. }