Downloads containing ezsol.j2as

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Solstice PurpleJazz Battle N/A Download file

File preview

  1. #include "MLLE-Include-1.4.asc"
  2. const bool MLLESetupSuccessful = MLLE::Setup();
  3. #pragma require "ezsol-MLLE-Data-1.j2l"
  4. #pragma require "ezsol.j2l"
  5.  
  6. void onLevelLoad() {
  7.         jjTexturedBGTexture = TEXTURE::MEDIVO;
  8.         jjUseLayer8Speeds = true;
  9.         jjTexturedBGFadePositionY = 0.525;
  10.        
  11.         jjSetWaterGradient(85,45,125, 85,45,125);
  12.         jjWaterChangeSpeed = 0;
  13.         jjWaterLayer = 11;
  14.        
  15.         jjDelayGeneratedCrateOrigins = true;
  16.        
  17.         generateCustomSpringSprites(jjAnimSets[ANIM::CUSTOM[0]], array<uint> = {40});
  18.         turnIntoCustomSpring(jjObjectPresets[OBJECT::FROZENSPRING], 0, 19.f, false);
  19. }
  20.  
  21. jjANIMSET@ customSpringSprite;
  22. array<int> fastCustomSpringSpeeds(jjLocalPlayerCount);
  23. bool generateCustomSpringSprites(jjANIMSET@ anim, const array<uint> &in colors) {
  24.         int length = colors.length();
  25.         bool success = (@customSpringSprite = anim).allocate(array<uint>(length * 3, 5)) !is null;
  26.         if (success) {
  27.                 uint srcSet = jjAnimSets[ANIM::SPRING];
  28.                 for (int i = 0; i < length; i++) {
  29.                         uint color = colors[i];
  30.                         uint destAnimOffset = anim + i * 3;
  31.                         for (int j = 0; j < 3; j++) {
  32.                                 uint srcAnim = jjAnimations[srcSet + j];
  33.                                 uint destAnim = jjAnimations[destAnimOffset + j];
  34.                                 for (int k = 0; k < 5; k++) {
  35.                                         jjPIXELMAP image(jjAnimFrames[destAnim + k] = jjAnimFrames[srcAnim + k]);
  36.                                         int width = image.width;
  37.                                         int height = image.height;
  38.                                         for (int l = 0; l < height; l++) {
  39.                                                 for (int m = 0; m < width; m++) {
  40.                                                         int pixel = image[m, l];
  41.                                                         if (pixel >= 32 && pixel < 40)
  42.                                                                 image[m, l] = color + (pixel & 7);
  43.                                                 }
  44.                                         }
  45.                                         if (!image.save(jjAnimFrames[destAnim + k]))
  46.                                                 return false;
  47.                                 }
  48.                         }
  49.                 }
  50.         }
  51.         return success;
  52. }
  53. void initializeCustomSpring(jjOBJ@ obj) {
  54.         int anim = obj.curAnim;
  55.         obj.behave(obj.behavior = BEHAVIOR::SPRING, false);
  56.         if (obj.curAnim != anim) {
  57.                 obj.curAnim = anim + 2;
  58.                 obj.determineCurFrame();
  59.         }
  60.         obj.draw();
  61. }
  62. void turnIntoCustomSpring(jjOBJ@ obj, uint color, float power, bool horizontal) {
  63.         if (horizontal) {
  64.                 obj.xSpeed = power;
  65.                 obj.ySpeed = 0.f;
  66.         } else {
  67.                 obj.xSpeed = 0.f;
  68.                 obj.ySpeed = -power;
  69.                 if (obj.state == STATE::START && obj.creatorType == CREATOR::LEVEL) {
  70.                         int x = int(obj.xPos) >> 5;
  71.                         int y = int(obj.yPos) >> 5;
  72.                         if (jjParameterGet(x, y, 0, 1) != 0) {
  73.                                 jjParameterSet(x, y, 0, 1, 0);
  74.                                 obj.yPos -= 4.f;
  75.                                 obj.ySpeed = power;
  76.                         }
  77.                 }
  78.         }
  79.         obj.behavior = initializeCustomSpring;
  80.         obj.curAnim = customSpringSprite + color * 3 + (horizontal ? 1 : 0);
  81.         obj.energy = obj.frameID = obj.freeze = obj.justHit = obj.light = obj.points = 0;
  82.         obj.isBlastable = obj.isTarget = obj.scriptedCollisions = obj.triggersTNT = false;
  83.         obj.deactivates = obj.isFreezable = true;
  84.         obj.bulletHandling = HANDLING::IGNOREBULLET;
  85.         obj.playerHandling = HANDLING::SPECIAL;
  86.         obj.lightType = LIGHT::NORMAL;
  87.         obj.determineCurFrame();
  88. }
  89.  
  90.  
  91. void onLevelBegin() {
  92.         for (int i = 1; i < 255; i++) {
  93.                 jjOBJ@ preset = jjObjectPresets[i];
  94.                 if (preset.playerHandling == HANDLING::PICKUP) {
  95.                         preset.behavior = CannotBeShotDown(preset.behavior);
  96.                 }
  97.         }
  98. }
  99.  
  100. class CannotBeShotDown : jjBEHAVIORINTERFACE {
  101.         CannotBeShotDown(const jjBEHAVIOR &in behavior) {
  102.                 originalBehavior = behavior;
  103.         }
  104.         void onBehave(jjOBJ@ obj) {
  105.                 obj.behave(originalBehavior);
  106.                 if (obj.state == STATE::FLOATFALL)
  107.                         obj.state = STATE::FLOAT;
  108.         }
  109.         bool onObjectHit(jjOBJ@ obj, jjOBJ@ bullet, jjPLAYER@ player, int force) {
  110.                 if (bullet is null) {
  111.                         obj.behavior = originalBehavior;
  112.                         if (player.objectHit(obj, force, obj.playerHandling))
  113.                                 return true;
  114.                         obj.behavior = this;
  115.                 }
  116.                 return false;
  117.         }
  118.         private jjBEHAVIOR originalBehavior;
  119. }
  120.  
  121. void onMain() {
  122.         jjTexturedBGStyle = jjColorDepth == 16? TEXTURE::TUNNEL : TEXTURE::WARPHORIZON;
  123.         array<jjLAYER@> layers = jjLayerOrderGet();
  124.         layers[7].spriteMode = layers[8].spriteMode = jjColorDepth == 16? SPRITE::BRIGHTNESS : SPRITE::NORMAL;
  125. }
  126.  
  127. void onDrawLayer4(jjPLAYER@ play, jjCANVAS@ screen) {
  128.         jjSetWaterLevel(16000, true);
  129. }
  130.  
  131. void onDrawLayer7(jjPLAYER@ play, jjCANVAS@ screen) {
  132.         jjSetWaterLevel(play.cameraY + 292, true);
  133. }