Downloads containing xlmsyri.j2as

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Syri i Kaltër Loon Capture the flag 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 "xlmsyri-MLLE-Data-4.j2l" ///@MLLE-Generated
  4. #pragma require "xlmsyri-MLLE-Data-3.j2l" ///@MLLE-Generated
  5. #pragma require "xlmsyri-MLLE-Data-2.j2l" ///@MLLE-Generated
  6. #pragma require "xlmsyri-MLLE-Data-1.j2l" ///@MLLE-Generated
  7. #pragma require "xlmsyri.j2l" ///@MLLE-Generated
  8.  
  9. #include "limitedoxygen.asc"
  10.  
  11. void onLevelLoad() {
  12.         jjTexturedBGTexture = TEXTURE::MEDIVO;
  13.         jjUseLayer8Speeds = true;
  14.        
  15.         jjObjectPresets[OBJECT::RFPOWERUP].direction = -1;
  16.        
  17.         water::maxOxygen = 1500;
  18.        
  19. generateCustomSpringSprites(jjAnimSets[ANIM::CUSTOM[9]], array<uint> = {40, 48, 16, 64});
  20.     turnIntoCustomSpring(jjObjectPresets[OBJECT::FROZENSPRING], 0, 19.75f, false);
  21.     turnIntoCustomSpring(jjObjectPresets[OBJECT::HORREDSPRING], 1, 17.75f, false);
  22.     turnIntoCustomSpring(jjObjectPresets[OBJECT::HORGREENSPRING], 2, 26.55f, false);
  23.     turnIntoCustomSpring(jjObjectPresets[OBJECT::HORBLUESPRING], 3, 33.3f, false);
  24.        
  25.         jjObjectPresets[OBJECT::HORREDSPRING].causesRicochet = jjObjectPresets[OBJECT::HORBLUESPRING].causesRicochet = jjObjectPresets[OBJECT::HORGREENSPRING].causesRicochet = false;
  26.        
  27.         jjDelayGeneratedCrateOrigins = true;
  28.        
  29.         jjWeapons[WEAPON::GUN8].spread = SPREAD::NORMAL;
  30.         jjObjectPresets[OBJECT::FIREBALLBULLETPU].var[6] = 8 + 16;
  31. }
  32.  
  33. void onLevelBegin() {
  34.         for (int i = 1; i < jjObjectCount; i++) {
  35.                 if (jjObjects[i].eventID == OBJECT::CTFBASE || jjObjects[i].behavior == BEHAVIOR::FLAG) jjObjects[i].yOrg += 10;
  36.                 if (jjObjects[i].eventID == OBJECT::CTFBASE || jjObjects[i].behavior == BEHAVIOR::FLAG) jjObjects[i].xOrg += 16;
  37.         }
  38. }
  39.  
  40. void onMain (){
  41.         jjWeapons[WEAPON::GUN8].comesFromGunCrates = true;
  42.     jjWeapons[WEAPON::GUN9].comesFromGunCrates = true;
  43.        
  44.         for (int i = 1; i < jjObjectCount; i++) {
  45.         jjOBJ@ obj = jjObjects[i];
  46.         if (obj.eventID == OBJECT::TOASTERAMMO15) {
  47.             if (obj.xOrg > 59*32 && obj.xOrg < 62*32) {
  48.                 obj.direction = -1;
  49.                         }
  50.                 }
  51.                 if (obj.eventID == OBJECT::RFAMMO3 && obj.state == STATE::FLOAT){
  52.                         if (obj.xOrg > 62*32 && obj.xOrg < 63*32) {
  53.                             obj.xPos = obj.xOrg + 64;
  54.                                 obj.yPos = obj.yOrg + 16;
  55.                         }
  56.                         if (obj.xOrg > 86*32 && obj.xOrg < 93*32 && obj.yOrg > 69*32 && obj.yOrg < 75*32) {
  57.                             obj.xPos = obj.xOrg + 6;
  58.                                 obj.yPos = obj.yOrg + 16;
  59.                         }
  60.                         if (obj.xOrg > 1*32 && obj.xOrg < 3*32) {
  61.                             obj.xPos = obj.xOrg - 20;
  62.                         }
  63.                         if (obj.xOrg > 88*32 && obj.xOrg < 89*32 && obj.yOrg > 35*32 && obj.yOrg < 40*32) {
  64.                                 obj.yPos = obj.yOrg + 16;
  65.                         }
  66.                         if (obj.xOrg > 87*32 && obj.xOrg < 88*32 && obj.yOrg > 37*32 && obj.yOrg < 38*32) {
  67.                                 obj.yPos = obj.yOrg + 16;
  68.                         }
  69.                         if (obj.xOrg > 78*32 && obj.xOrg < 83*32 && obj.yOrg > 18*32 && obj.yOrg < 19*32) {
  70.                             obj.xPos = obj.xOrg + 16;
  71.                                 obj.yPos = obj.yOrg - 16;
  72.                         }
  73.                         if (obj.xOrg > 80*32 && obj.xOrg < 81*32 && obj.yOrg > 17*32 && obj.yOrg < 18*32) {
  74.                             obj.xPos = obj.xOrg + 16;
  75.                         }
  76.                 }
  77.                 if (obj.eventID == OBJECT::BOUNCERAMMO3 && obj.state == STATE::FLOAT) {
  78.                         if (obj.xOrg > 89*32 && obj.xOrg < 97*32 && obj.yOrg > 63*32 && obj.yOrg < 64*32) {
  79.                 obj.xPos = obj.xOrg + 16;
  80.                                 obj.yPos = obj.yOrg + 13;
  81.                         }
  82.             if (obj.xOrg > 89*32 && obj.xOrg < 97*32 && obj.yOrg > 64*32 && obj.yOrg < 65*32) {
  83.                 obj.xPos = obj.xOrg + 16;
  84.                                 obj.yPos = obj.yOrg + 4;
  85.                         }
  86.                         if (obj.xOrg > 36*32 && obj.xOrg < 37*32) {
  87.                                 obj.xPos = obj.xOrg - 22;
  88.                         }
  89.                         if (obj.xOrg > 35*32 && obj.xOrg < 36*32) {
  90.                                 obj.xPos = obj.xOrg - 6;
  91.                         }
  92.                         if (obj.xOrg > 112*32 && obj.xOrg < 119*32 && obj.yOrg > 49*32 && obj.yOrg < 51*32) {
  93.                                 obj.yPos = obj.yOrg + 16;
  94.                         }
  95.                 }
  96.                
  97.                 if (obj.eventID == OBJECT::GREENSPRING) {
  98.                    /* if (obj.xOrg > 14*32 && obj.xOrg < 15*32) {
  99.                             obj.xPos = obj.xOrg - 6;
  100.                         } */
  101.                 }
  102.                 if (obj.eventID == OBJECT::TOASTERAMMO3 && obj.state == STATE::FLOAT) {
  103.                         if (obj.xOrg > 30*32 && obj.xOrg < 38*32 && obj.yOrg > 47*32 && obj.yOrg < 48*32) {
  104.                                 obj.yPos = obj.yOrg + 13;
  105.                         }
  106.                         if (obj.xOrg > 48*32 && obj.xOrg < 49*32) {
  107.                             obj.yPos = obj.yOrg -16;
  108.                         }
  109.                         if (obj.xOrg > 50*32 && obj.xOrg < 51*32) {
  110.                             obj.yPos = obj.yOrg -16;
  111.                         }
  112.                 }
  113.                 if (obj.eventID == OBJECT::GUN8AMMO3 && obj.state == STATE::FLOAT){
  114.                         if (obj.xOrg > 53*32 && obj.xOrg < 54*32) {
  115.                             obj.xPos = obj.xOrg + -16;
  116.                         }
  117.                         if (obj.xOrg > 149*32 && obj.xOrg < 150*32) {
  118.                             obj.xPos = obj.xOrg + 16;
  119.                         }
  120.                         if (obj.xOrg > 148*32 && obj.xOrg < 149*32 && obj.yOrg > 25*32 && obj.yOrg < 26*32) {
  121.                             obj.xPos = obj.xOrg + 24;
  122.                         }
  123.                         if (obj.xOrg > 148*32 && obj.xOrg < 149*32 && obj.yOrg > 29*32 && obj.yOrg < 30*32) {
  124.                             obj.xPos = obj.xOrg + 8;
  125.                         }
  126.                         if (obj.xOrg > 148*32 && obj.xOrg < 149*32 && obj.yOrg > 27*32 && obj.yOrg < 28*32) {
  127.                             obj.xPos = obj.xOrg + 16;
  128.                         }
  129.                         if (obj.xOrg > 97*32 && obj.xOrg < 98*32 && obj.yOrg > 40*32 && obj.yOrg < 43*32) {
  130.                             obj.xPos = obj.xOrg - 16;
  131.                         }
  132.                 }
  133.                 if (obj.eventID == OBJECT::GUN9POWERUP){
  134.                         if (obj.xOrg > 56*32 && obj.xOrg < 57*32) {
  135.                             obj.xPos = obj.xOrg + 16;
  136.                                 obj.direction = 0;
  137.                         }
  138.                 }
  139.                 if (obj.eventID == OBJECT::GUN8POWERUP){
  140.                         if (obj.xOrg > 145*32 && obj.xOrg < 146*32) {
  141.                                 obj.direction = 0;
  142.                         }
  143.                 }
  144.                 if (obj.eventID == OBJECT::SEEKERAMMO3 && obj.state == STATE::FLOAT){
  145.                         if (obj.xOrg > 42*32 && obj.xOrg < 43*32 && obj.yOrg > 50*32 && obj.yOrg < 51*32) {
  146.                             obj.yPos = obj.yOrg + 14;
  147.                         }
  148.                         if (obj.xOrg > 44*32 && obj.xOrg < 45*32 && obj.yOrg > 50*32 && obj.yOrg < 51*32) {
  149.                             obj.yPos = obj.yOrg + 14;
  150.                         }
  151.                         if (obj.xOrg > 46*32 && obj.xOrg < 48*32 && obj.yOrg > 50*32 && obj.yOrg < 51*32) {
  152.                             obj.yPos = obj.yOrg + 14;
  153.                         }
  154.                 }
  155.         }
  156. }
  157.  
  158. jjANIMSET@ customSpringSprite;
  159. array<int> fastCustomSpringSpeeds(jjLocalPlayerCount);
  160. bool generateCustomSpringSprites(jjANIMSET@ anim, const array<uint> &in colors) {
  161.     int length = colors.length();
  162.     bool success = (@customSpringSprite = anim).allocate(array<uint>(length * 3, 5)) !is null;
  163.     if (success) {
  164.         uint srcSet = jjAnimSets[ANIM::SPRING];
  165.         for (int i = 0; i < length; i++) {
  166.             uint color = colors[i];
  167.             uint destAnimOffset = anim + i * 3;
  168.             for (int j = 0; j < 3; j++) {
  169.                 uint srcAnim = jjAnimations[srcSet + j];
  170.                 uint destAnim = jjAnimations[destAnimOffset + j];
  171.                 for (int k = 0; k < 5; k++) {
  172.                     jjPIXELMAP image(jjAnimFrames[destAnim + k] = jjAnimFrames[srcAnim + k]);
  173.                     int width = image.width;
  174.                     int height = image.height;
  175.                     for (int l = 0; l < height; l++) {
  176.                         for (int m = 0; m < width; m++) {
  177.                             int pixel = image[m, l];
  178.                             if (pixel >= 32 && pixel < 40)
  179.                                 image[m, l] = color + (pixel & 7);
  180.                         }
  181.                     }
  182.                     if (!image.save(jjAnimFrames[destAnim + k]))
  183.                         return false;
  184.                 }
  185.             }
  186.         }
  187.     }
  188.     return success;
  189. }
  190. void initializeCustomSpring(jjOBJ@ obj) {
  191.     int anim = obj.curAnim;
  192.     obj.behave(obj.behavior = BEHAVIOR::SPRING, false);
  193.     if (obj.curAnim != anim) {
  194.         obj.curAnim = anim + 2;
  195.         obj.determineCurFrame();
  196.     }
  197.     obj.draw();
  198. }
  199.  
  200. void turnIntoCustomSpring(jjOBJ@ obj, uint color, float power, bool horizontal) {
  201.     if (horizontal) {
  202.         obj.xSpeed = power;
  203.         obj.ySpeed = 0.f;
  204.     } else {
  205.         obj.xSpeed = 0.f;
  206.         obj.ySpeed = -power;
  207.         if (obj.state == STATE::START && obj.creatorType == CREATOR::LEVEL) {
  208.             int x = int(obj.xPos) >> 5;
  209.             int y = int(obj.yPos) >> 5;
  210.             if (jjParameterGet(x, y, 0, 1) != 0) {
  211.                 jjParameterSet(x, y, 0, 1, 0);
  212.                 obj.yPos -= 4.f;
  213.                 obj.ySpeed = power;
  214.             }
  215.         }
  216.     }
  217.     obj.behavior = initializeCustomSpring;
  218.     obj.curAnim = customSpringSprite + color * 3 + (horizontal ? 1 : 0);
  219.     obj.energy = obj.frameID = obj.freeze = obj.justHit = obj.light = obj.points = 0;
  220.     obj.isBlastable = obj.isTarget = obj.scriptedCollisions = obj.triggersTNT = false;
  221.     obj.deactivates = obj.isFreezable = true;
  222.     obj.bulletHandling = HANDLING::IGNOREBULLET;
  223.     obj.playerHandling = HANDLING::SPECIAL;
  224.     obj.lightType = LIGHT::NORMAL;
  225.     obj.determineCurFrame();
  226. }
  227.  
  228. void handleFastCustomSpringSpeeds(jjPLAYER@ play) {
  229.         if (play.ySpeed < -32.f) {
  230.                 fastCustomSpringSpeeds[play.localPlayerID] = int(ceil((play.ySpeed + 32.f) / -0.125f));
  231.         } else if (fastCustomSpringSpeeds[play.localPlayerID] != 0) {
  232.                 if (play.ySpeed < -31.f) {
  233.                         fastCustomSpringSpeeds[play.localPlayerID]--;
  234.                         play.ySpeed = -32.f;
  235.                 } else {
  236.                         fastCustomSpringSpeeds[play.localPlayerID] = 0;
  237.                 }
  238.         }
  239. }
  240.  
  241.  
  242. void onPlayer(jjPLAYER@ play) {
  243.         water::limitedOxygen(play);
  244.         play.lightType = LIGHT::NONE;
  245.        
  246.         handleFastCustomSpringSpeeds(play);
  247. }
  248.  
  249. bool onDrawHealth(jjPLAYER@ play, jjCANVAS@ canvas) {
  250.         water::drawOxygenTimer(play, canvas);
  251.         return false;  
  252. }
  253.