Downloads containing weaponVMega3.asc

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Anniversary Bash 23 levels Jazz2Online Multiple N/A Download file
JJ2+ Only: violetclm DOM Episodes I... Violet CLM Custom / Concept N/A Download file
TSF with JJ2+ Only: Frosted PeaksFeatured Download PurpleJazz Capture the flag 9.3 Download file
TSF with JJ2+ Only: Anniversary Bash 22 levels Jazz2Online Multiple N/A Download file
JJ2+ Only: Tech Tree Violet CLM Capture the flag 7.8 Download file
Custom Weapons...Featured Download Violet CLM Other 10 Download file

File preview

  1. #pragma require "weaponVMega3.asc"
  2. #include "MLLE-Weapons.asc"
  3. #pragma require "weaponVMega.j2a"
  4.  
  5. namespace WeaponVMega {
  6.         namespace IceCloud {
  7.                 class Weapon : MLLEWeapons::WeaponInterface {
  8.                         Weapon() {
  9.                                 super(
  10.                                         regularObjectTemplate: MLLEWeapons::ObjectTemplate(
  11.                                                 xSpeed: 1,//6,
  12.                                                 xAcc: 0.125,
  13.                                                 killAnim: jjAnimSets[ANIM::AMMO].firstAnim + 80,
  14.                                                 counterEnd: 120,
  15.                                                 freeze: 200,
  16.                                                 animSpeed: 2
  17.                                         ),
  18.                                         powerupObjectTemplate: MLLEWeapons::ObjectTemplate(
  19.                                                 xSpeed: 1,//7,
  20.                                                 xAcc: 0.1875,
  21.                                                 killAnim: jjAnimSets[ANIM::AMMO].firstAnim + 80,
  22.                                                 counterEnd: 200,
  23.                                                 freeze: 254,
  24.                                                 animSpeed: 2
  25.                                         ),
  26.                                         animSetFilename: "weaponVMega.j2a",
  27.                                         animSetID: 2,
  28.                                         pickupAnimation: 3,
  29.                                         poweredUpPickupAnimation: 4,
  30.                                         pickupFrameIDToUseForAmmoCrate: 2,
  31.                                         style: WEAPON::POPCORN,
  32.                                         spread: SPREAD::TOASTER,
  33.                                         multiplier: 5,
  34.                                         gradualAim: true,
  35.                                         traits: se::weapon_is_effective_against_all_targets | se::weapon_supports_mouse_aim | se::weapon_works_in_all_modes | se::weapon_has_all_pickups | se::weapon_inflicts_status_condition | se::weapon_freezes_objects,
  36.                                         poweredUpTraits: se::weapon_is_effective_against_all_targets | se::weapon_supports_mouse_aim | se::weapon_works_in_all_modes | se::weapon_has_all_pickups | se::weapon_inflicts_status_condition | se::weapon_freezes_objects | se::weapon_deals_damage,
  37.                                         behavior: function(obj, powerup) { obj.behavior = Behavior; }
  38.                                 );
  39.                         }
  40.                         uint getMaxDamage(bool powerup) const override { return powerup ? 2 : 0; }
  41.                 }
  42.                
  43.                 void Behavior(jjOBJ@ obj) {
  44.                         if (obj.state == STATE::START) {
  45.                                 obj.xSpeed += obj.var[7] / 65536.f;
  46.                                 if (obj.creatorType == CREATOR::PLAYER)
  47.                                         obj.ySpeed += int(jjPlayers[obj.creatorID].ySpeed) / 2;
  48.                                 obj.state = STATE::FLY;
  49.                         }
  50.                         obj.xPos += obj.xSpeed *= 0.96;
  51.                         obj.yPos += obj.ySpeed *= 0.96;
  52.                         if (obj.frameID < 3 && ++obj.age & 15 == 15) {
  53.                                 ++obj.frameID; ++obj.curFrame;
  54.                         }
  55.                         const bool isPowerup = MLLEWeapons::HelpfulBulletFunctions::IsPowerup(obj);
  56.                         if (--obj.counterEnd == 0 || obj.state == STATE::EXPLODE) {
  57.                                 array<float>@ target;
  58.                                 if (isPowerup && (@target = MLLEWeapons::HelpfulBulletFunctions::GetNearestEnemyPosition(obj, 256)) !is null) {
  59.                                         obj.frameID = 0;
  60.                                         obj.killAnim = (obj.curAnim += 1) + 1;
  61.                                         obj.counterEnd = 100;
  62.                                         obj.freeze = 0;
  63.                                         obj.xSpeed = (target[0] - obj.xPos) / 25;
  64.                                         obj.ySpeed = (target[1] - obj.yPos) / 25;
  65.                                         obj.xAcc = obj.yAcc = obj.var[7] = 0;
  66.                                         obj.behavior = BEHAVIOR::BULLET;
  67.                                         if (obj.playerHandling == HANDLING::SPECIAL) obj.playerHandling = HANDLING::ENEMYBULLET;
  68.                                 } else {
  69.                                         obj.counter = 0;
  70.                                         obj.frameID = 0;
  71.                                         obj.curAnim += 2;
  72.                                         obj.behavior = BEHAVIOR::EXPLOSION;
  73.                                 }
  74.                                 jjSample(obj.xPos, obj.yPos, SOUND::COMMON_ICECRUSH);
  75.                         } else if (jjGameTicks & 1 == 0) {
  76.                                 jjPARTICLE@ part = jjAddParticle(PARTICLE::ICETRAIL);
  77.                                 if (part !is null) {
  78.                                         part.yPos = obj.yPos;
  79.                                         part.xPos = obj.xPos + (jjRandom() & 31) - 15;
  80.                                 }
  81.                         }
  82.                         jjDrawSpriteFromCurFrame(obj.xPos, obj.yPos, obj.curFrame, 1, SPRITE::TRANSLUCENT);
  83.                         if (obj.frameID == 3 && isPowerup)
  84.                                 jjDrawSpriteFromCurFrame(obj.xPos, obj.yPos, jjAnimations[obj.curAnim + 1], 0, SPRITE::TRANSLUCENTCOLOR, 15);
  85.                 }
  86.         }
  87. }