Downloads containing ab22ctf12.j2as

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Anniversary Bash 22 levels Jazz2Online Multiple N/A Download file

File preview

  1. const bool MLLESetupSuccessful = MLLE::Setup(); ///@MLLE-Generated
  2. #include "MLLE-Include-1.5.asc" ///@MLLE-Generated
  3. #pragma require "ab22ctf12-MLLE-Data-3.j2l" ///@MLLE-Generated
  4. #pragma require "ab22ctf12-MLLE-Data-2.j2l" ///@MLLE-Generated
  5. #pragma require "ab22ctf12-MLLE-Data-1.j2l" ///@MLLE-Generated
  6. #pragma require "ab22ctf12.j2l" ///@MLLE-Generated
  7.  
  8. void onLevelLoad() {
  9.         jjTexturedBGTexture = TEXTURE::MEDIVO;
  10.         jjUseLayer8Speeds = true;
  11.        
  12.         jjSetWaterGradient(120,185,250, 120,185,250);
  13.         jjWaterChangeSpeed = 0;
  14.         jjWaterLayer = 15;
  15.        
  16.         jjANIMATION@ animBubble = jjAnimations[jjAnimSets[ANIM::COMMON] + 1];
  17.                 for (uint i = 0; i < animBubble.frameCount; ++i) {
  18.                         jjANIMFRAME@ frame = jjAnimFrames[animBubble + i];
  19.                         jjPIXELMAP sprite(frame);
  20.                         for (uint x = 0; x < sprite.width; ++x)
  21.                                 for (uint y = 0; y < sprite.height; ++y)
  22.                                 if (sprite[x,y] != 0) sprite[x,y] += 115;
  23.                         sprite.save(frame);
  24.                 }
  25.                
  26.         jjPIXELMAP rain(32,32);
  27.         for (uint x = 0; x < rain.width; ++x) {
  28.                 for (uint y = 0; y < rain.height; ++y) {
  29.                         if (x == 16) {
  30.                                 if (y <= 16) rain[x,y] = 74;
  31.                                 else if (y > 16 && y <= 24) rain[x,y] = 73;
  32.                                 else rain[x,y] = 0;
  33.                         } else {
  34.                                 rain[x,y] = 0;
  35.                         }
  36.                 }
  37.         }
  38.        
  39.         jjANIMATION@ animRain = jjAnimations[jjAnimSets[ANIM::COMMON].firstAnim + 2];
  40.         for (uint frameID = 0; frameID < animRain.frameCount; ++frameID) {
  41.                 jjANIMFRAME@ frame = jjAnimFrames[animRain.firstFrame + frameID];
  42.                 rain.save(frame);
  43.                 frame.hotSpotX = -frame.width/2;
  44.                 frame.hotSpotY = -frame.height;
  45.         }
  46.        
  47.         generateCustomSpringSprites(jjAnimSets[ANIM::CUSTOM[0]], array<uint> = {40});
  48.         turnIntoCustomSpring(jjObjectPresets[OBJECT::FROZENSPRING], 0, 18.75f, false);
  49.        
  50.         jjDelayGeneratedCrateOrigins = true;
  51. }
  52.  
  53. void onLevelBegin() {
  54.         for (int i = 1; i < jjObjectCount; i++) {
  55.                 if (jjObjects[i].eventID == OBJECT::CTFBASE || jjObjects[i].behavior == BEHAVIOR::FLAG) jjObjects[i].yOrg += 10;
  56.         }
  57.         jjObjectPresets[OBJECT::TOASTERBULLET].lightType = LIGHT::BRIGHT;
  58.         jjObjectPresets[OBJECT::TOASTERBULLET].light = 8;
  59.        
  60.         jjObjectPresets[OBJECT::FIREBALLBULLET].lightType = jjObjectPresets[OBJECT::FIREBALLBULLETPU].lightType = LIGHT::BRIGHT;
  61.         jjObjectPresets[OBJECT::FIREBALLBULLET].light = jjObjectPresets[OBJECT::FIREBALLBULLETPU].light = 8;
  62.        
  63.         if (jjGameMode == GAME::SP || jjGameMode == GAME::COOP) {
  64.                 for (int i = 0; i < jjLocalPlayerCount; i++) {
  65.                         jjPlayers[i].warpToTile(17,33,true);
  66.                 }
  67.         }
  68. }
  69.  
  70. jjANIMSET@ customSpringSprite;
  71. array<int> fastCustomSpringSpeeds(jjLocalPlayerCount);
  72. bool generateCustomSpringSprites(jjANIMSET@ anim, const array<uint> &in colors) {
  73.         int length = colors.length();
  74.         bool success = (@customSpringSprite = anim).allocate(array<uint>(length * 3, 5)) !is null;
  75.         if (success) {
  76.                 uint srcSet = jjAnimSets[ANIM::SPRING];
  77.                 for (int i = 0; i < length; i++) {
  78.                         uint color = colors[i];
  79.                         uint destAnimOffset = anim + i * 3;
  80.                         for (int j = 0; j < 3; j++) {
  81.                                 uint srcAnim = jjAnimations[srcSet + j];
  82.                                 uint destAnim = jjAnimations[destAnimOffset + j];
  83.                                 for (int k = 0; k < 5; k++) {
  84.                                         jjPIXELMAP image(jjAnimFrames[destAnim + k] = jjAnimFrames[srcAnim + k]);
  85.                                         int width = image.width;
  86.                                         int height = image.height;
  87.                                         for (int l = 0; l < height; l++) {
  88.                                                 for (int m = 0; m < width; m++) {
  89.                                                         int pixel = image[m, l];
  90.                                                         if (pixel >= 32 && pixel < 40)
  91.                                                                 image[m, l] = color + (pixel & 7);
  92.                                                 }
  93.                                         }
  94.                                         if (!image.save(jjAnimFrames[destAnim + k]))
  95.                                                 return false;
  96.                                 }
  97.                         }
  98.                 }
  99.         }
  100.         return success;
  101. }
  102. void initializeCustomSpring(jjOBJ@ obj) {
  103.         int anim = obj.curAnim;
  104.         obj.behave(obj.behavior = BEHAVIOR::SPRING, false);
  105.         if (obj.curAnim != anim) {
  106.                 obj.curAnim = anim + 2;
  107.                 obj.determineCurFrame();
  108.         }
  109.         obj.draw();
  110. }
  111. void turnIntoCustomSpring(jjOBJ@ obj, uint color, float power, bool horizontal) {
  112.         if (horizontal) {
  113.                 obj.xSpeed = power;
  114.                 obj.ySpeed = 0.f;
  115.         } else {
  116.                 obj.xSpeed = 0.f;
  117.                 obj.ySpeed = -power;
  118.                 if (obj.state == STATE::START && obj.creatorType == CREATOR::LEVEL) {
  119.                         int x = int(obj.xPos) >> 5;
  120.                         int y = int(obj.yPos) >> 5;
  121.                         if (jjParameterGet(x, y, 0, 1) != 0) {
  122.                                 jjParameterSet(x, y, 0, 1, 0);
  123.                                 obj.yPos -= 4.f;
  124.                                 obj.ySpeed = power;
  125.                         }
  126.                 }
  127.         }
  128.         obj.behavior = initializeCustomSpring;
  129.         obj.curAnim = customSpringSprite + color * 3 + (horizontal ? 1 : 0);
  130.         obj.energy = obj.frameID = obj.freeze = obj.justHit = obj.light = obj.points = 0;
  131.         obj.isBlastable = obj.isTarget = obj.scriptedCollisions = obj.triggersTNT = false;
  132.         obj.deactivates = obj.isFreezable = true;
  133.         obj.bulletHandling = HANDLING::IGNOREBULLET;
  134.         obj.playerHandling = HANDLING::SPECIAL;
  135.         obj.lightType = LIGHT::NORMAL;
  136.         obj.determineCurFrame();
  137. }
  138.  
  139. void onPlayer(jjPLAYER@ play) {
  140.         if (jjEventGet(int(play.xPos/32), int(play.yPos/32)) == AREA::PATH) {
  141.                 int direction = jjParameterGet(int(play.xPos/32), int(play.yPos/32), 6, 3);
  142.                 play.buttstomp = 100;
  143.                 if (direction > 1) {
  144.                         if (play.xSpeed > 1) play.xSpeed = -2;
  145.                 } else if (direction == 0) {
  146.                         if (play.xSpeed < 1) play.xSpeed = 2;
  147.                 }
  148.         }
  149.        
  150.         for (int i = 0; i < 1024; i++) {
  151.                 jjPARTICLE@ particle = jjParticles[i];
  152.                 if (particle.type == PARTICLE::LEAF) {
  153.                         particle.xSpeed = -1.5;
  154.                         particle.ySpeed = 0.25;
  155.                 }
  156.                 if (particle.type == PARTICLE::RAIN) {
  157.                         particle.xSpeed = 0;
  158.                         particle.ySpeed = play.ySpeed < 0? 10 : int(10 + play.ySpeed);
  159.                 }
  160.         }
  161. }
  162.  
  163. void onMain() {
  164.         jjSnowingType = jjGameTicks % 18 == 0? SNOWING::LEAF : SNOWING::RAIN;
  165.         jjSnowingIntensity = jjRandom()%4;
  166.         jjIsSnowingOutdoorsOnly = true;
  167.         jjIsSnowing = !jjLowDetail;
  168.        
  169.         array<jjLAYER@> layers = jjLayerOrderGet();
  170.         layers[0].hasTiles = layers[2].hasTiles = layers[3].hasTiles = !jjLowDetail;
  171.        
  172.         if (jjColorDepth == 16) {
  173.                 layers[7].hasTiles = true;
  174.                 layers[7].yOffset = 200;
  175.                 layers[15].hasTiles = false;
  176.         } else {
  177.                 layers[7].hasTiles = layers[15].hasTiles = true;
  178.                 layers[7].yOffset = 1200;
  179.         }
  180.        
  181.         jjTexturedBGFadePositionY = jjLowDetail? 0.5 : 0.25;
  182.        
  183.         for (int i = 1; i < jjObjectCount; i++) {
  184.                 jjOBJ@ obj = jjObjects[i];
  185.                 if (obj.eventID == OBJECT::RFPOWERUP) {
  186.                         obj.xPos = obj.xOrg + 16;
  187.                 }
  188.                 if (obj.eventID == OBJECT::GUN8POWERUP) {
  189.                         obj.xPos = obj.xOrg - 16;
  190.                 }
  191.                 if (obj.eventID == OBJECT::REDSPRING) {
  192.                         obj.yPos = obj.yOrg + 20;
  193.                 }
  194.                 if (obj.eventID == OBJECT::FROZENSPRING) {
  195.                         obj.xPos = obj.xOrg - 16;
  196.                         obj.yPos = obj.yOrg + 20;
  197.                 }
  198.                 if (obj.eventID == OBJECT::GREENSPRING && (obj.xPos > 79*32 && obj.xPos < 81*32)) {
  199.                         obj.yPos = obj.yOrg + 20;
  200.                 }
  201.                 if (obj.eventID == OBJECT::CARROT) {
  202.                         obj.direction = obj.xPos > 80*32? 1:-1;
  203.                 }
  204.         }
  205. }
  206.  
  207. void onDrawLayer4(jjPLAYER@ play, jjCANVAS@ screen) {
  208.         jjSetWaterLevel(16000, true);
  209. }
  210.  
  211. void onDrawLayer6(jjPLAYER@ play, jjCANVAS@ screen) {
  212.         jjSetWaterLevel((play.cameraY - jjLayers[6].getYPosition(play)) + 328, true);
  213. }