Downloads containing weaponVMega8.asc

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Crown of ThornsFeatured Download PurpleJazz Battle 9.2 Download file
JJ2+ Only: violetclm DOM Episodes I...Featured Download Violet CLM Custom / Concept 9 Download file
Custom Weapons...Featured Download Violet CLM Other 10 Download file

File preview

  1. #pragma require "weaponVMega8.asc"
  2. #include "MLLE-Weapons.asc"
  3. #pragma require "weaponVMega.j2a"
  4.  
  5. namespace WeaponVMega {
  6.         namespace Voranj {
  7.                 class Weapon : MLLEWeapons::WeaponInterface {
  8.                         Weapon() {
  9.                                 super(
  10.                                         regularObjectTemplate: MLLEWeapons::ObjectTemplate(
  11.                                                 xSpeed: 3.2,
  12.                                                 xAcc: 0.05f,
  13.                                                 age: 2, //number of splits
  14.                                                 lightType: LIGHT::POINT2,
  15.                                                 state: STATE::FLY
  16.                                         ),
  17.                                         powerupObjectTemplate: MLLEWeapons::ObjectTemplate(
  18.                                                 xSpeed: 3.6,
  19.                                                 xAcc: 0.1f,
  20.                                                 age: 3,
  21.                                                 lightType: LIGHT::POINT,
  22.                                                 state: STATE::FLY,
  23.                                                 curAnim: 1
  24.                                         ),
  25.                                         animSetFilename: "weaponVMega.j2a",
  26.                                         animSetID: 7,
  27.                                         pickupAnimation: 2,
  28.                                         poweredUpPickupAnimation: 3,
  29.                                         traits: se::weapon_default_traits | se::weapon_fails_in_interiors,
  30.                                         behavior: function(obj, powerup) { jjSample(obj.xPos, obj.yPos, SOUND::COMMON_RINGGUN); obj.behavior = Behavior; },
  31.                                         apply: MLLEWeapons::applyFunction(DetermineSplitCount)
  32.                                 );
  33.                         }
  34.                         bool DetermineSplitCount(uint, se::WeaponHook@, jjSTREAM@ parameter) {
  35.                                 if (parameter !is null && parameter.getSize() >= 8) {
  36.                                         parameter.pop(RegularObjectTemplate.Age);
  37.                                         parameter.pop(PowerupObjectTemplate.Age);
  38.                                 }
  39.                                 return true;
  40.                         }
  41.                 }
  42.                 void Behavior(jjOBJ@ obj) {
  43.                         obj.frameID = ++obj.counter / 6;
  44.                         if (obj.counter == 6 * 3) {
  45.                                 obj.state = STATE::EXPLODE;
  46.                                 if (obj.age > 0) {
  47.                                         createVoranj(obj, 1);
  48.                                         createVoranj(obj, -1);
  49.                                 }
  50.                         }
  51.                         if (obj.state == STATE::EXPLODE || obj.xPos < 0 || obj.yPos < 0 || MLLEWeapons::HelpfulBulletFunctions::MaskedPixel(obj) || obj.xPos >= MLLEWeapons::LevelRight || obj.yPos >= MLLEWeapons::LevelBottom) {
  52.                                 obj.counter = 0;
  53.                                 obj.playerHandling = HANDLING::EXPLOSION;
  54.                                 obj.behavior = BEHAVIOR::EXPLOSION;
  55.                         } else {
  56.                                 obj.xPos += (obj.xSpeed += obj.xAcc) + obj.var[7] / 65536.f;
  57.                                 obj.yPos += (obj.ySpeed += obj.yAcc);
  58.                                 if (obj.var[7] > 0x8000)
  59.                                         obj.var[7] = obj.var[7] - 0x2000;
  60.                                 else if (obj.var[7] < -0x8000)
  61.                                         obj.var[7] = obj.var[7] + 0x2000;
  62.                         }
  63.                         jjDrawSpriteFromCurFrame(obj.xPos, obj.yPos, obj.curFrame = jjAnimations[obj.curAnim] + obj.frameID, obj.direction);
  64.                 }
  65.                 void createVoranj(const jjOBJ@ creator, int direction) {
  66.                         const float angle = atan2(creator.ySpeed, creator.xSpeed);
  67.                         const float speed = sqrt(creator.xSpeed * creator.xSpeed + creator.ySpeed * creator.ySpeed);
  68.                         const float acc = sqrt(creator.xAcc * creator.xAcc + creator.yAcc * creator.yAcc);
  69.                         const float angleDifference = direction * 0.78539816339 / 1.5;
  70.                         jjOBJ@ obj = jjObjects[jjAddObject(creator.eventID, creator.xPos, creator.yPos, creator.creatorID, creator.creatorType, BEHAVIOR::INACTIVE)];
  71.                         obj.xSpeed = cos(angle + angleDifference) * speed;
  72.                         obj.ySpeed = sin(angle + angleDifference) * speed;
  73.                         obj.xAcc = cos(angle + angleDifference) * acc;
  74.                         obj.yAcc = sin(angle + angleDifference) * acc;
  75.                         obj.var[3] = creator.var[3];
  76.                         obj.var[6] = creator.var[6];
  77.                         obj.var[7] = creator.var[7];
  78.                         obj.age = creator.age - 1;
  79.                         obj.curAnim = creator.curAnim;
  80.                         obj.animSpeed = creator.animSpeed;
  81.                         obj.playerHandling = creator.playerHandling;
  82.                         obj.state = STATE::FLY;
  83.                         obj.behavior = Behavior;
  84.                 }
  85.         }
  86. }