Downloads containing ZeusArtillery.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 "ZeusArtillery.asc"
  2. #include "MLLE-Weapons.asc"
  3. #pragma require "SmokeWopens.j2a"
  4.  
  5. namespace SmokeWopens {
  6.         namespace ZeusArtillery {
  7.                 class Wopen : MLLEWeapons::WeaponInterface {
  8.                         Wopen() {
  9.                                 super(
  10.                                         regularObjectTemplate: MLLEWeapons::ObjectTemplate(
  11.                                                 curAnim: 0,
  12.                                                 killAnim: jjAnimSets[ANIM::AMMO].firstAnim + 5,
  13.                                                 var: array<int> = {0,0,0,0,0,0,16},
  14.                                                 isBlastable: false
  15.                                         ),
  16.                                         powerupObjectTemplate: MLLEWeapons::ObjectTemplate(
  17.                                                 curAnim: 0,
  18.                                                 frameID: 1,
  19.                                                 animSpeed: 2,
  20.                                                 killAnim: jjAnimSets[ANIM::AMMO].firstAnim + 5,
  21.                                                 var: array<int> = {0,0,0,0,0,0,16},
  22.                                                 isBlastable: false
  23.                                         ),
  24.                                         animSetFilename: "SmokeWopens.j2a",
  25.                                         animSetID: 1,
  26.                                         style: WEAPON::MISSILE,
  27.                                         roundsPerPickup: 100,
  28.                                         pickupAnimation: jjAnimSets[ANIM::AMMO] + 59,
  29.                                         poweredUpPickupAnimation: 1,
  30.                                         traits: se::weapon_default_traits | se::weapon_goes_through_walls | se::weapon_is_super_weapon | se::weapon_causes_splash_damage,
  31.                                         behavior: function(obj, powerup) { obj.behavior = Behavior; }
  32.                                 );
  33.                         }
  34.                 }
  35.                
  36.                 void Behavior(jjOBJ@ obj) {
  37.                         if (obj.state == STATE::START) {
  38.                                 obj.state = STATE::FLY;
  39.                                 //obj.yOrg = (obj.creatorType == CREATOR::PLAYER) ? jjPlayers[obj.creatorID].yPos : jjObjects[obj.creatorID].yPos;
  40.                                 obj.yPos = 1;
  41.                         } else if (obj.state == STATE::EXPLODE) {
  42.                                 //uint playersHit = 0;
  43.                                 //jjPLAYER@ creator = (obj.creatorType == CREATOR::PLAYER) ? jjPlayers[obj.creatorID] : null;
  44.                                 //const bool canDamageOtherPlayers = (jjIsServer || jjGameConnection == GAME::LOCAL) && (jjGameState == GAME::STARTED || jjGameState == GAME::OVERTIME);
  45.                                 const int var6 = MLLEWeapons::HelpfulBulletFunctions::IsPowerup(obj) ? 8 : 0;
  46.                                 for (int i=-50; i < 50;i++) {
  47.                                         jjOBJ@ o = jjObjects[jjAddObject(OBJECT::RFBULLET, obj.xPos + (jjRandom()%200) - 100, obj.yPos + (jjRandom()%200) - 100, obj.creatorID, obj.creatorType, BEHAVIOR::INACTIVE)];
  48.                                         o.playerHandling = obj.playerHandling;
  49.                                         o.counter = 0;
  50.                                         o.counterEnd = 1;
  51.                                         o.freeze = 0;
  52.                                         o.var[6] = var6;
  53.                                         o.xSpeed = o.ySpeed = o.xAcc = o.yAcc = 0;
  54.                                         o.curAnim = o.killAnim = jjAnimSets[ANIM::AMMO].firstAnim + 3;
  55.                                         o.state = STATE::START;
  56.                                         o.determineCurFrame();
  57.                                         o.behavior = BEHAVIOR::RFBULLET;
  58.                                         /*if (canDamageOtherPlayers && (playersHit & (1 << i)) == 0 && (creator is null || creator.isEnemy(victim)) && o.doesCollide(victim)) {
  59.                                                 victim.hurt(obj.animSpeed, false, creator);
  60.                                                 playersHit |= (1 << i);
  61.                                         }*/
  62.                                 }
  63.                                 obj.behavior = BEHAVIOR::EXPLOSION2;
  64.                         } else {
  65.                                 jjPARTICLE@ particle = jjAddParticle(PARTICLE::STAR);
  66.                                 if (particle !is null) {
  67.                                         particle.xPos = obj.xPos;
  68.                                         particle.yPos = obj.yPos;
  69.                                         particle.xSpeed = jjRandom()&5;
  70.                                         particle.ySpeed = jjRandom()&5;
  71.                                         particle.star.color = jjRandom()%100;
  72.                                         particle.star.size = (jjRandom()%50) + 1;
  73.                                         particle.star.frame = (jjRandom()%2) - 1;
  74.                                 }
  75.                                
  76.                                 jjOBJ@ tail = jjObjects[jjAddObject(OBJECT::SEEKERBULLET, obj.xPos, obj.yPos, obj.creatorID, CREATOR::PLAYER, BEHAVIOR::INACTIVE)];
  77.                                 tail.counter = 0;
  78.                                 tail.counterEnd = 0;
  79.                                 tail.playerHandling = HANDLING::DYING;
  80.                                 tail.state = STATE::START;
  81.                                 tail.curAnim = tail.killAnim = obj.killAnim;
  82.                                 tail.behavior = BEHAVIOR::SEEKERBULLET;
  83.                                 tail.behave();
  84.                                
  85.                                 obj.yPos += 13; //no problems with ricocheting
  86.                                 if (obj.yPos >= obj.yOrg)
  87.                                         obj.state = STATE::EXPLODE;
  88.                                
  89.                                 jjDrawSpriteFromCurFrame(obj.xPos, obj.yPos, obj.curFrame);
  90.                         }
  91.                 }
  92.         }
  93. }