Downloads containing xlmlsd.j2as

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Bad LSD TripFeatured Download Loon Battle 10 Download file

File preview

  1. const bool MLLESetupSuccessful = MLLE::Setup(array<MLLEWeaponApply@> = {null, null, se::FireworkMLLEWrapper(), null, null, null, null, null, null}); ///@MLLE-Generated
  2. #include "MLLE-Include-1.6w.asc" ///@MLLE-Generated
  3. #pragma require "xlmlsd-MLLE-Data-4.j2l" ///@MLLE-Generated
  4. #pragma require "xlmlsd-MLLE-Data-3.j2l" ///@MLLE-Generated
  5. #pragma require "xlmlsd-MLLE-Data-2.j2l" ///@MLLE-Generated
  6. #pragma require "xlmlsd-MLLE-Data-1.j2l" ///@MLLE-Generated
  7. #pragma require "xlmlsd.j2l" ///@MLLE-Generated
  8. #include "SEfirework-mlle.asc" ///@MLLE-Generated
  9. #pragma require "SEfirework-mlle.asc" ///@MLLE-Generated
  10. #pragma require "plausiblepsychpal02.pal"
  11. #pragma require "meme_1.wav"
  12. #pragma require "meme_2.wav"
  13. #pragma require "meme_3.wav"
  14. #pragma require "meme_4.wav"
  15. #pragma require "meme_5.wav"
  16. #pragma require "meme_6.wav"
  17. #pragma require "meme_7.wav"
  18. #pragma require "meme_8.wav"
  19. #pragma require "meme_9.wav"
  20. #pragma require "bruh_2.wav"
  21.  
  22. /*
  23. array<float> xLayerOmega0 = {100, 200, 500, 100, 100, 0, 100, -7};
  24. array<float> xLayerOmega = {100, 300, 400, 100, 200.9, -100, -200, -200};
  25. array<float> xLayerAmplitude = {100, 700, 200, 3200, 2500, 200, 400, 300};
  26. */
  27. array<float> yLayerOmega0 = {1, 7, 2, 1, 3.213, 2, 4, 3};
  28. array<float> yLayerOmega = {100, 500, 2400, 1200, 500.7, -1, -1, -1};
  29. array<float> yLayerAmplitude = {300, 580, 200, 640, 700, -69, -69, -36};
  30.  
  31. array<float> yLayerAmplitude_1 = {200, 480, 180, 580, 640, -69, -69, -28};
  32.  
  33. array<float> yLayerAmplitude_2 = {300, 580, 200, 640, 700, -69, -69, -24};
  34.  
  35. array<float> yLayerAmplitude_3 = {300, 580, 200, 640, 700, -69, -69, -20};
  36.  
  37. array<float> yLayerAmplitude_4 = {300, 580, 200, 640, 700, -69, -69, -17};
  38.  
  39. array<float> yLayerAmplitude_5 = {300, 580, 200, 640, 700, -69, -69, -14};
  40.  
  41. array<float> yLayerAmplitude_6 = {300, 580, 200, 640, 700, -69, -69, -10};
  42.  
  43. array<float> yLayerAmplitude_7 = {300, 580, 200, 640, 700, -69, -69, -7};
  44.  
  45. array<float> yLayerAmplitude_8 = {300, 580, 200, 640, 700, -69, -69, -5};
  46.  
  47.  
  48. /*Timer variable, do not touch*/
  49. int tLayer = 0;
  50.  
  51.  
  52. jjPAL PsychPal;
  53.  
  54. bool palCycle = true;
  55. const string filename = "badlsdtrip.asdat";
  56.  
  57. class CannotBeShotDown : jjBEHAVIORINTERFACE {
  58.         CannotBeShotDown(const jjBEHAVIOR &in behavior) {
  59.                 originalBehavior = behavior;
  60.         }
  61.         void onBehave(jjOBJ@ obj) {
  62.                 obj.behave(originalBehavior);
  63.                 if (obj.state == STATE::FLOATFALL)
  64.                         obj.state = STATE::FLOAT;
  65.         }
  66.         bool onObjectHit(jjOBJ@ obj, jjOBJ@ bullet, jjPLAYER@ player, int force) {
  67.                 if (bullet is null) {
  68.                         obj.behavior = originalBehavior;
  69.                         if (player.objectHit(obj, force, obj.playerHandling))
  70.                                 return true;
  71.                         obj.behavior = this;
  72.                 }
  73.                 return false;
  74.         }
  75.         private jjBEHAVIOR originalBehavior;
  76. }
  77.  
  78. void onMain() {
  79.         jjWeapons[WEAPON::GUN8].comesFromGunCrates = true;
  80.     jjWeapons[WEAPON::GUN9].comesFromGunCrates = true;
  81.        
  82.         if (jjGameTicks % 4 == 0 && palCycle) {
  83.         for (int i = 96; i <= 111; i++) {
  84.             jjPalette.color[i].setHSL(PsychPal.color[i].getHue() + jjGameTicks / 12, PsychPal.color[i].getSat(), PsychPal.color[i].getLight());
  85.         }
  86.         jjPalette.apply();
  87.     }
  88.         if (jjGameTicks % 1 == 0 && palCycle) {
  89.                 for (int i = 176; i <= 207; i++) {
  90.             jjPalette.color[i].setHSL(PsychPal.color[i].getHue() + jjGameTicks / 12, PsychPal.color[i].getSat(), PsychPal.color[i].getLight());
  91.         }
  92.         jjPalette.apply();
  93.         }
  94.         for (int i = 1; i < jjObjectCount; i++) {
  95.         jjOBJ@ obj = jjObjects[i];
  96.  
  97.                 if (obj.eventID == OBJECT::SEEKERAMMO3 && obj.state == STATE::FLOAT){
  98.                         if (obj.xOrg > 12*32 && obj.xOrg < 69*32 && obj.yOrg > 22*32 && obj.yOrg < 47*32) {
  99.                             obj.yPos = obj.yOrg + 16;
  100.                                 obj.xPos = obj.xOrg + 16;
  101.                         }
  102.                 }
  103.                 if (obj.eventID == OBJECT::RFPOWERUP){
  104.                         obj.xPos = obj.xOrg + 16;
  105.                 }
  106.         }
  107.        
  108.         if (jjGameTicks == 210)
  109.                 jjConsole("|You can use the following command to pause the color changing foliage:||!palette");
  110.  
  111.         jjLayerYOffset[8] =
  112.         jjSin(jjGameTicks)*64;
  113.         if(jjGameTicks%10 == 1)
  114.         {
  115.                 jjSetFadeColors(int(128+jjSin(jjGameTicks/8)*126), int(128+jjSin(jjGameTicks/8+341)*126),int(128+ jjSin(jjGameTicks/8+683)*126));
  116.         }
  117.        
  118.     tLayer++;
  119.        
  120.         array<jjLAYER@> layers = jjLayerOrderGet();
  121.        
  122.         layers[32].xOffset += .25f;
  123.         layers[32].yOffset = (yLayerAmplitude[7] * cos(yLayerOmega0[7] + yLayerOmega[7] * (float(tLayer)/70)));
  124.         layers[31].xOffset += .35f;
  125.         layers[31].yOffset = (yLayerAmplitude_1[7] * cos(yLayerOmega0[7] + yLayerOmega[7] * (float(tLayer)/70)));
  126.         layers[30].xOffset += .45f;
  127.         layers[30].yOffset = (yLayerAmplitude_2[7] * cos(yLayerOmega0[7] + yLayerOmega[7] * (float(tLayer)/70)));
  128.         layers[29].xOffset += .55f;
  129.         layers[29].yOffset = (yLayerAmplitude_3[7] * cos(yLayerOmega0[7] + yLayerOmega[7] * (float(tLayer)/70)));
  130.         layers[28].xOffset += .65f;
  131.         layers[28].yOffset = (yLayerAmplitude_4[7] * cos(yLayerOmega0[7] + yLayerOmega[7] * (float(tLayer)/70)));
  132.         layers[27].xOffset += .75f;
  133.         layers[27].yOffset = (yLayerAmplitude_5[7] * cos(yLayerOmega0[7] + yLayerOmega[7] * (float(tLayer)/70)));
  134.         layers[26].xOffset += .85f;
  135.         layers[26].yOffset = (yLayerAmplitude_6[7] * cos(yLayerOmega0[7] + yLayerOmega[7] * (float(tLayer)/70)));
  136.         layers[25].xOffset += .95f;
  137.         layers[25].yOffset = (yLayerAmplitude_7[7] * cos(yLayerOmega0[7] + yLayerOmega[7] * (float(tLayer)/70)));
  138.         layers[24].xOffset += 1.05f;
  139.         layers[24].yOffset = (yLayerAmplitude_8[7] * cos(yLayerOmega0[7] + yLayerOmega[7] * (float(tLayer)/70)));
  140.  
  141. /*
  142.     for(uint iLayer = 7; iLayer < 16; iLayer++) {
  143.                 layers[iLayer].xOffset += .4f;
  144.         layers[iLayer].yOffset = (yLayerAmplitude[7] * cos(yLayerOmega0[7] + yLayerOmega[7] * (float(tLayer)/70)));
  145.     }
  146.         */
  147. }
  148.  
  149. void onLevelLoad() {
  150.         jjUseLayer8Speeds = true;
  151.        
  152.         PsychPal.load("plausiblepsychpal02.pal");
  153.         PsychPal.color[255].red = PsychPal.color[255].green = PsychPal.color[255].blue = 0;
  154.         PsychPal.apply();
  155.        
  156.         generateCustomSpringSprites(jjAnimSets[ANIM::CUSTOM[9]], array<uint> = {40, 48, 16, 88});
  157.     turnIntoCustomSpring(jjObjectPresets[OBJECT::FROZENSPRING], 0, 19.75f, false);
  158.     turnIntoCustomSpring(jjObjectPresets[OBJECT::HORREDSPRING], 1, 17.75f, false);
  159.     turnIntoCustomSpring(jjObjectPresets[OBJECT::HORGREENSPRING], 2, 27.45f, false);
  160.     turnIntoCustomSpring(jjObjectPresets[OBJECT::HORBLUESPRING], 3, 32.5f, false);
  161.        
  162.         jjObjectPresets[OBJECT::HORREDSPRING].causesRicochet = jjObjectPresets[OBJECT::HORBLUESPRING].causesRicochet = jjObjectPresets[OBJECT::HORGREENSPRING].causesRicochet = false;
  163.        
  164.         jjDelayGeneratedCrateOrigins = true;
  165.        
  166.         jjObjectPresets[OBJECT::RFPOWERUP].direction = -1;
  167.         jjObjectPresets[OBJECT::TOASTERPOWERUP].direction = 0;
  168.        
  169.         jjWeapons[WEAPON::GUN8].spread = SPREAD::NORMAL;
  170.         jjObjectPresets[OBJECT::FIREBALLBULLETPU].var[6] = 8 + 16;
  171. }
  172.  
  173. jjANIMSET@ customSpringSprite;
  174. array<int> fastCustomSpringSpeeds(jjLocalPlayerCount);
  175. bool generateCustomSpringSprites(jjANIMSET@ anim, const array<uint> &in colors) {
  176.     int length = colors.length();
  177.     bool success = (@customSpringSprite = anim).allocate(array<uint>(length * 3, 5)) !is null;
  178.     if (success) {
  179.         uint srcSet = jjAnimSets[ANIM::SPRING];
  180.         for (int i = 0; i < length; i++) {
  181.             uint color = colors[i];
  182.             uint destAnimOffset = anim + i * 3;
  183.             for (int j = 0; j < 3; j++) {
  184.                 uint srcAnim = jjAnimations[srcSet + j];
  185.                 uint destAnim = jjAnimations[destAnimOffset + j];
  186.                 for (int k = 0; k < 5; k++) {
  187.                     jjPIXELMAP image(jjAnimFrames[destAnim + k] = jjAnimFrames[srcAnim + k]);
  188.                     int width = image.width;
  189.                     int height = image.height;
  190.                     for (int l = 0; l < height; l++) {
  191.                         for (int m = 0; m < width; m++) {
  192.                             int pixel = image[m, l];
  193.                             if (pixel >= 32 && pixel < 40)
  194.                                 image[m, l] = color + (pixel & 7);
  195.                         }
  196.                     }
  197.                     if (!image.save(jjAnimFrames[destAnim + k]))
  198.                         return false;
  199.                 }
  200.             }
  201.         }
  202.     }
  203.     return success;
  204. }
  205. void initializeCustomSpring(jjOBJ@ obj) {
  206.     int anim = obj.curAnim;
  207.     obj.behave(obj.behavior = BEHAVIOR::SPRING, false);
  208.     if (obj.curAnim != anim) {
  209.         obj.curAnim = anim + 2;
  210.         obj.determineCurFrame();
  211.     }
  212.     obj.draw();
  213. }
  214.  
  215. void turnIntoCustomSpring(jjOBJ@ obj, uint color, float power, bool horizontal) {
  216.     if (horizontal) {
  217.         obj.xSpeed = power;
  218.         obj.ySpeed = 0.f;
  219.     } else {
  220.         obj.xSpeed = 0.f;
  221.         obj.ySpeed = -power;
  222.         if (obj.state == STATE::START && obj.creatorType == CREATOR::LEVEL) {
  223.             int x = int(obj.xPos) >> 5;
  224.             int y = int(obj.yPos) >> 5;
  225.             if (jjParameterGet(x, y, 0, 1) != 0) {
  226.                 jjParameterSet(x, y, 0, 1, 0);
  227.                 obj.yPos -= 4.f;
  228.                 obj.ySpeed = power;
  229.             }
  230.         }
  231.     }
  232.     obj.behavior = initializeCustomSpring;
  233.     obj.curAnim = customSpringSprite + color * 3 + (horizontal ? 1 : 0);
  234.     obj.energy = obj.frameID = obj.freeze = obj.justHit = obj.light = obj.points = 0;
  235.     obj.isBlastable = obj.isTarget = obj.scriptedCollisions = obj.triggersTNT = false;
  236.     obj.deactivates = obj.isFreezable = true;
  237.     obj.bulletHandling = HANDLING::IGNOREBULLET;
  238.     obj.playerHandling = HANDLING::SPECIAL;
  239.     obj.lightType = LIGHT::NORMAL;
  240.     obj.determineCurFrame();
  241. }
  242.  
  243. void handleFastCustomSpringSpeeds(jjPLAYER@ play) {
  244.         if (play.ySpeed < -32.f) {
  245.                 fastCustomSpringSpeeds[play.localPlayerID] = int(ceil((play.ySpeed + 32.f) / -0.125f));
  246.         } else if (fastCustomSpringSpeeds[play.localPlayerID] != 0) {
  247.                 if (play.ySpeed < -31.f) {
  248.                         fastCustomSpringSpeeds[play.localPlayerID]--;
  249.                         play.ySpeed = -32.f;
  250.                 } else {
  251.                         fastCustomSpringSpeeds[play.localPlayerID] = 0;
  252.                 }
  253.         }
  254. }
  255.  
  256. void onPlayer(jjPLAYER@ play) {
  257.         play.lightType = LIGHT::NONE;
  258.        
  259.         handleFastCustomSpringSpeeds(play);
  260. }
  261.  
  262. bool onLocalChat(string &in text, CHAT::Type type) {
  263.         if (jjRegexMatch(text, "!palette", true)) {
  264.                 if (palCycle) {
  265.                         jjConsole("Palette cycling disabled!");
  266.                         palCycle = false;
  267.                         jjSTREAM stream;
  268.                         stream.push(palCycle);
  269.                         stream.save(filename);
  270.                 }
  271.                 else {
  272.                         jjConsole("Palette cycling enabled!");
  273.                         palCycle = true;
  274.                         jjSTREAM stream;
  275.                         stream.push(palCycle);
  276.                         stream.save(filename);
  277.                 }
  278.         return true;
  279.         }
  280.         else return false;
  281. }
  282. void onLevelReload() {
  283.         MLLE::SpawnOffgridsLocal();
  284.         MLLE::ReapplyPalette();
  285. }
  286.  
  287. bool onDrawAmmo(jjPLAYER@ player, jjCANVAS@ canvas) {
  288.         return MLLE::WeaponHook.drawAmmo(player, canvas);
  289. }
  290.  
  291. void onLevelBegin() {
  292.         MLLE::SpawnOffgrids();
  293.         for (int i = 1; i < 255; i++) {
  294.                 jjOBJ@ preset = jjObjectPresets[i];
  295.                 if (preset.playerHandling == HANDLING::PICKUP) {
  296.                         preset.behavior = CannotBeShotDown(preset.behavior);
  297.                 }
  298.         }
  299.         if(!jjSampleIsLoaded(SOUND::ZDOG_WAF3)) {
  300.                 jjSampleLoad(SOUND::ZDOG_WAF3,"bruh_2.wav");
  301.         }
  302.         if(!jjSampleIsLoaded(SOUND::ZDOG_WAF2)) {
  303.                 jjSampleLoad(SOUND::ZDOG_WAF2,"meme_1.wav");
  304.         }
  305.         if(!jjSampleIsLoaded(SOUND::ZDOG_WAF1)) {
  306.                 jjSampleLoad(SOUND::ZDOG_WAF1,"meme_2.wav");
  307.         }
  308.         if(!jjSampleIsLoaded(SOUND::ZDOG_SNIF1)) {
  309.                 jjSampleLoad(SOUND::ZDOG_SNIF1,"meme_3.wav");
  310.         }
  311.         if(!jjSampleIsLoaded(SOUND::SKELETON_BONE7)) {
  312.                 jjSampleLoad(SOUND::SKELETON_BONE7,"meme_4.wav");
  313.         }
  314.         if(!jjSampleIsLoaded(SOUND::SKELETON_BONE1)) {
  315.                 jjSampleLoad(SOUND::SKELETON_BONE1,"meme_5.wav");
  316.         }
  317.         if(!jjSampleIsLoaded(SOUND::SKELETON_BONE2)) {
  318.                 jjSampleLoad(SOUND::SKELETON_BONE2,"meme_6.wav");
  319.         }
  320.         if(!jjSampleIsLoaded(SOUND::SKELETON_BONE3)) {
  321.                 jjSampleLoad(SOUND::SKELETON_BONE3,"meme_7.wav");
  322.         }
  323.         if(!jjSampleIsLoaded(SOUND::SKELETON_BONE5)) {
  324.                 jjSampleLoad(SOUND::SKELETON_BONE5,"meme_8.wav");
  325.         }
  326.         if(!jjSampleIsLoaded(SOUND::SKELETON_BONE6)) {
  327.                 jjSampleLoad(SOUND::SKELETON_BONE6,"meme_9.wav");
  328.         }
  329. }
  330.  
  331. void onFunction1(jjPLAYER@ play) {
  332.         jjSample(play.xPos, play.yPos, SOUND::ZDOG_WAF3, 100, 0);
  333. }
  334.  
  335. void onFunction2(jjPLAYER@ play) {
  336.         jjSample(play.xPos, play.yPos, SOUND::ZDOG_WAF2, 100, 0);
  337. }
  338.  
  339. void onFunction3(jjPLAYER@ play) {
  340.         jjSample(play.xPos, play.yPos, SOUND::ZDOG_WAF1, 100, 0);
  341. }
  342.  
  343. void onFunction4(jjPLAYER@ play) {
  344.         jjSample(play.xPos, play.yPos, SOUND::ZDOG_SNIF1, 100, 0);
  345. }
  346.  
  347. void onFunction5(jjPLAYER@ play) {
  348.         jjSample(play.xPos, play.yPos, SOUND::SKELETON_BONE7, 100, 0);
  349. }
  350.  
  351. void onFunction6(jjPLAYER@ play) {
  352.         jjSample(play.xPos, play.yPos, SOUND::SKELETON_BONE1, 100, 0);
  353. }
  354.  
  355. void onFunction7(jjPLAYER@ play) {
  356.         jjSample(play.xPos, play.yPos, SOUND::SKELETON_BONE2, 100, 0);
  357. }
  358.  
  359. void onFunction8(jjPLAYER@ play) {
  360.         jjSample(play.xPos, play.yPos, SOUND::SKELETON_BONE3, 100, 0);
  361. }
  362.  
  363. void onFunction9(jjPLAYER@ play) {
  364.         jjSample(play.xPos, play.yPos, SOUND::SKELETON_BONE5, 100, 0);
  365. }
  366.  
  367. void onFunction10(jjPLAYER@ play) {
  368.         jjSample(play.xPos, play.yPos, SOUND::SKELETON_BONE6, 100, 0);
  369. }
  370.