Downloads containing ab24ctf13.j2as

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Anniversary Bash 24 CTF PurpleJazz Capture the flag N/A Download file

File preview

  1. const bool MLLESetupSuccessful = MLLE::Setup(array<MLLEWeaponApply@> = {null, WeaponVMega::Burrower::Weapon(), ArcaneWeapons::MortarLauncher::Weapon(), null, null, SuperToaster::Weapon(), SmokeWopens::ZeusArtillery::Wopen(), null, WeaponVMega::Meteor::Weapon()}); ///@MLLE-Generated
  2. #include "MLLE-Include-1.5w.asc" ///@MLLE-Generated
  3. #pragma require "ab24ctf13.j2l" ///@MLLE-Generated
  4. #include "WeaponVMega9.asc" ///@MLLE-Generated
  5. #pragma require "WeaponVMega9.asc" ///@MLLE-Generated
  6. #include "ZeusArtillery.asc" ///@MLLE-Generated
  7. #pragma require "ZeusArtillery.asc" ///@MLLE-Generated
  8. #include "SuperToaster.asc" ///@MLLE-Generated
  9. #pragma require "SuperToaster.asc" ///@MLLE-Generated
  10. #include "ArcaneWeapon4.asc" ///@MLLE-Generated
  11. #pragma require "ArcaneWeapon4.asc" ///@MLLE-Generated
  12. #include "WeaponVMega2.asc" ///@MLLE-Generated
  13. #pragma require "WeaponVMega2.asc" ///@MLLE-Generated
  14. #pragma require "f_ar3.wav"
  15.  
  16. bool animsLoaded = false;
  17. uint customAnimID = 0;
  18.  
  19. void onLevelLoad() {
  20.         jjAnimSets[ANIM::CUSTOM[25]].load(0, "Nail.j2a");
  21.        
  22.         jjAnimations[jjAnimSets[ANIM::AMMO] + 62] = jjAnimations[jjAnimSets[ANIM::CUSTOM[25]] + 4];
  23.         jjAnimations[jjAnimSets[ANIM::AMMO] + 61] = jjAnimations[jjAnimSets[ANIM::CUSTOM[25]] + 5];
  24.        
  25.         jjSampleLoad(SOUND::P2_CRUNCH, "f_ar3.wav");
  26.        
  27.         jjObjectPresets[OBJECT::FIREBALLBULLET].behavior = jjObjectPresets[OBJECT::FIREBALLBULLETPU].behavior = Nailgun();
  28.         jjObjectPresets[OBJECT::FIREBALLBULLET].var[6] = 16;
  29.         jjObjectPresets[OBJECT::FIREBALLBULLET].counterEnd = 58;
  30.         jjObjectPresets[OBJECT::FIREBALLBULLET].killAnim = jjObjectPresets[OBJECT::BLASTERBULLET].killAnim;
  31.         jjObjectPresets[OBJECT::FIREBALLBULLET].special = jjObjectPresets[OBJECT::FIREBALLBULLET].determineCurAnim(ANIM::CUSTOM[25], 0);
  32.         jjObjectPresets[OBJECT::FIREBALLBULLET].xSpeed = jjObjectPresets[OBJECT::RFBULLETPU].xSpeed;
  33.         jjObjectPresets[OBJECT::FIREBALLBULLET].ySpeed = jjObjectPresets[OBJECT::RFBULLETPU].ySpeed;
  34.         jjObjectPresets[OBJECT::FIREBALLBULLET].xAcc = jjObjectPresets[OBJECT::RFBULLETPU].xAcc;
  35.         jjObjectPresets[OBJECT::FIREBALLBULLET].yAcc = jjObjectPresets[OBJECT::RFBULLETPU].yAcc;
  36.         jjObjectPresets[OBJECT::FIREBALLBULLETPU].var[6] = 8 + 16;
  37.         jjObjectPresets[OBJECT::FIREBALLBULLETPU].counterEnd = 52;
  38.         jjObjectPresets[OBJECT::FIREBALLBULLETPU].killAnim = jjObjectPresets[OBJECT::BLASTERBULLET].killAnim;
  39.         jjObjectPresets[OBJECT::FIREBALLBULLETPU].special = jjObjectPresets[OBJECT::FIREBALLBULLETPU].determineCurAnim(ANIM::CUSTOM[25], 1);
  40.         jjObjectPresets[OBJECT::FIREBALLBULLETPU].xSpeed = jjObjectPresets[OBJECT::RFBULLETPU].xSpeed;
  41.         jjObjectPresets[OBJECT::FIREBALLBULLETPU].ySpeed = jjObjectPresets[OBJECT::RFBULLETPU].ySpeed;
  42.         jjObjectPresets[OBJECT::FIREBALLBULLETPU].xAcc = jjObjectPresets[OBJECT::RFBULLETPU].xAcc;
  43.         jjObjectPresets[OBJECT::FIREBALLBULLETPU].yAcc = jjObjectPresets[OBJECT::RFBULLETPU].yAcc;
  44.         jjObjectPresets[OBJECT::FIREBALLBULLET].lightType = jjObjectPresets[OBJECT::FIREBALLBULLETPU].lightType = LIGHT::POINT;
  45.        
  46.         jjObjectPresets[OBJECT::GUN8AMMO3].lightType = LIGHT::POINT;
  47.        
  48.         jjObjectPresets[OBJECT::GUN8POWERUP].determineCurAnim(ANIM::CUSTOM[25], 3);
  49.         jjObjectPresets[OBJECT::GUN8POWERUP].determineCurFrame();
  50.        
  51.         jjWeapons[WEAPON::GUN8].spread = SPREAD::NORMAL;
  52.         jjWeapons[WEAPON::GUN8].style = WEAPON::NORMAL;
  53.         jjWeapons[WEAPON::GUN8].gradualAim = false;
  54.         jjWeapons[WEAPON::GUN8].defaultSample = false;
  55.        
  56.         jjANIMATION@ anim = jjAnimations[jjAnimSets[ANIM::AMMO] + 71];
  57.         for (uint i = 0; i < anim.frameCount; ++i) {
  58.                 jjANIMFRAME@ frame = jjAnimFrames[anim + i];
  59.                 jjPIXELMAP sprite(frame);
  60.                 for (uint x = 0; x < sprite.width; ++x)
  61.                         for (uint y = 0; y < sprite.height; ++y)
  62.                         if (sprite[x,y] != 0) sprite[x,y] = 0;
  63.                 sprite.save(frame);
  64.         }
  65.        
  66.         if (jjGameMode == GAME::SP) {
  67.                 jjLocalPlayers[0].warpToTile(29,28);
  68.         }
  69. }
  70.  
  71. class Nailgun : jjBEHAVIORINTERFACE {
  72.         bool passedDestScen = false;
  73.         float targetPixelX(jjOBJ@ obj) {
  74.                 return obj.xPos + obj.xSpeed + (obj.var[7] / 65536.f);
  75.         }
  76.         float targetPixelY(jjOBJ@ obj) {
  77.                 return obj.yPos + obj.ySpeed;
  78.         }
  79.  
  80.         void onBehave(jjOBJ@ obj) {
  81.                 obj.behave(obj.state == STATE::EXPLODE? BEHAVIOR::BULLET : BEHAVIOR::RFBULLET, obj.state == STATE::EXPLODE? true:false);
  82.                 jjPLAYER@ creator = jjPlayers[obj.creatorID];
  83.                
  84.                 obj.var[0] = int(atan2(-obj.ySpeed, obj.xSpeed) * (512.f * 0.318309886142228f));
  85.                
  86.                 obj.xAcc = (obj.eventID == OBJECT::RFBULLETPU? 0.4:0.35) * obj.direction;
  87.                 if (obj.ySpeed < 0 && obj.direction == 0 && obj.xSpeed == 0) obj.yAcc = -0.5;
  88.                  
  89.                
  90.                 if (obj.state != STATE::EXPLODE) {
  91.                         if (obj.counter == 1 && creator.isLocal) {
  92.                                 jjSample(creator.xPos, creator.yPos, SOUND::P2_CRUNCH, 48, obj.eventID == OBJECT::RFBULLETPU? 19000:17500);
  93.                                 obj.var[2] = 0;
  94.                                 obj.playerHandling = HANDLING::PLAYERBULLET;
  95.                         }
  96.                        
  97.                         jjDrawRotatedSprite(obj.xPos, obj.yPos, ANIM::CUSTOM[25], obj.eventID == OBJECT::FIREBALLBULLETPU? 1:0, 0, obj.var[0], 1, 1, SPRITE::NORMAL);
  98.                         //jjDrawRectangle(targetPixelX(obj), targetPixelY(obj), 8,8, passedDestScen? 24:16, SPRITE::NORMAL);
  99.                        
  100.                         /*float dx = jjLocalPlayers[0].xPos - obj.xPos, dy = jjLocalPlayers[0].yPos - obj.yPos;
  101.                         if ((dx * dx + dy * dy < 64 * 24) && !creator.isLocal && jjLocalPlayers[0].blink == 0 && (jjLocalPlayers[0].team != creator.team || jjFriendlyFire || jjGameMode != GAME::CTF) && gameIsActive()) {
  102.                                 jjLocalPlayers[0].xPos = obj.xPos - (24 * obj.direction);
  103.                                 jjLocalPlayers[0].ySpeed = obj.ySpeed;
  104.                         }*/
  105.                        
  106.                         for (int i = 1; i < jjObjectCount; i++) {
  107.                                 if (jjObjects[i].behavior == BEHAVIOR::DESTRUCTSCENERY && jjObjects[i].xPos >= targetPixelX(obj) - 96 && jjObjects[i].xPos <= targetPixelX(obj) + 96 && jjObjects[i].yPos >= targetPixelY(obj) - 32 && jjObjects[i].yPos <= targetPixelY(obj) + 32) {
  108.                                         passedDestScen = true;
  109.                                 }
  110.                         }
  111.                        
  112.                         if (!passedDestScen) {
  113.                                 if (jjMaskedPixel(int(targetPixelX(obj)), int(obj.yPos))) {
  114.                                         obj.xSpeed = 0;
  115.                                         obj.var[7] = 0;
  116.                                         obj.playerHandling = HANDLING::PARTICLE;
  117.                                         obj.bePlatform(obj.xPos, obj.yPos, 32, 8);
  118.                                         if (obj.var[2] == 0) {
  119.                                                 jjSample(obj.xPos, obj.yPos, SOUND::COMMON_METALHIT, 0, 0);
  120.                                                 obj.counter = 1;
  121.                                                 if (obj.eventID == OBJECT::RFBULLETPU) obj.counterEnd = 90;
  122.                                                 obj.var[2] = 1;
  123.                                         }
  124.                                 }
  125.                                 else if (jjMaskedPixel(int(obj.xPos), int(targetPixelY(obj)))) {
  126.                                         obj.ySpeed = 0;
  127.                                         obj.playerHandling = HANDLING::PARTICLE;
  128.                                         if (obj.var[2] == 0) {
  129.                                                 jjSample(obj.xPos, obj.yPos, SOUND::COMMON_METALHIT, 0, 0);
  130.                                                 obj.counter = 1;
  131.                                                 if (obj.eventID == OBJECT::RFBULLETPU) obj.counterEnd = 90;
  132.                                                 obj.var[2] = 1;
  133.                                         }
  134.                                 }
  135.                         } else {
  136.                                 obj.age++;
  137.                                 if (obj.age == 7) {
  138.                                         passedDestScen = false;
  139.                                         obj.age = 0;
  140.                                 }
  141.                         }
  142.  
  143.                 } else {
  144.                         obj.clearPlatform();
  145.                         obj.var[2] = 0;
  146.                         obj.counterEnd = obj.eventID == OBJECT::FIREBALLBULLETPU? 75:80;
  147.                 }
  148.         }
  149. }
  150.  
  151. bool onDrawAmmo(jjPLAYER@ player, jjCANVAS@ canvas) {
  152.         return MLLE::WeaponHook.drawAmmo(player, canvas);
  153. }
  154. // && jjEventGet(int(obj.xPos/32), int(obj.yPos/32)) != OBJECT::GENERATOR