Downloads containing xlmivan.j2as

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Ivankiv RaionFeatured Download Loon Capture the flag 8.7 Download file

File preview

  1. const bool MLLESetupSuccessful = MLLE::Setup(); ///@MLLE-Generated
  2. #include "MLLE-Include-1.5.asc" ///@MLLE-Generated
  3. #pragma require "xlmivan-MLLE-Data-2.j2l" ///@MLLE-Generated
  4. #pragma require "xlmivan-MLLE-Data-1.j2l" ///@MLLE-Generated
  5. #pragma require "IC - Technoir3.j2t" ///@MLLE-Generated
  6. #pragma require "DiamDayFix.j2t" ///@MLLE-Generated
  7. #pragma require "xlmivan.j2l" ///@MLLE-Generated
  8.  
  9.  
  10. /* IMPORTANT !!! */
  11. /*      The custom weapons Sanguine Spear and Lightening Rod
  12.         have been modified for this map.
  13.         So, please do not copy any script lines from these weapons since
  14.         it wasn't intended by the author */
  15.        
  16.         #pragma require "Lightningrod.j2a"
  17. #pragma require "ZAPFIZZ1.wav"
  18. #pragma require "ZAPFIZZ2.wav"
  19. #pragma require "Syringe.j2a"
  20.  
  21. void onPlayer(jjPLAYER@ player){
  22.         player.lightType = LIGHT::NONE;
  23.        
  24.         float MaxHealth = jjMaxHealth + 1;
  25.         float Health = player.health + 1;
  26.         float healthratio = MaxHealth / Health;
  27.  
  28.         if (healthratio < 1.3) jjWeapons[WEAPON::ICE].spread = SPREAD::NORMAL;
  29.         if (healthratio >= 1.3 && healthratio < 2) jjWeapons[WEAPON::ICE].spread = SPREAD::RFNORMAL;
  30.         if (healthratio >= 2) jjWeapons[WEAPON::ICE].spread = SPREAD::RFPU;
  31. }
  32.  
  33. void onLevelLoad() {
  34.         jjUseLayer8Speeds = true;
  35.         jjTexturedBGTexture = TEXTURE::DIAMONDUSBETA;
  36.        
  37.         jjPalette.gradient(122, 122, 122, 232, 232, 232, 176, 32); // 176-207
  38.         jjPalette.gradient(9, 15, 34, 3, 5, 13, 124, 4);
  39.         jjPalette.gradient(5, 5, 20, 1, 1, 5, 152, 8);
  40.  
  41.        
  42.         jjSetWaterGradient(187, 187, 187, 0, 0, 0);
  43.         jjWaterChangeSpeed = 1;
  44.         jjSetWaterLevel(70*32, true);
  45.         jjWaterLighting = (WATERLIGHT::GLOBAL);
  46.         jjWaterLayer = 4;
  47.        
  48.         jjOBJ@ preset = jjObjectPresets[OBJECT::FROZENSPRING];
  49.         preset.behavior = coloredSpring;
  50.         preset.bulletHandling = HANDLING::IGNOREBULLET;
  51.         preset.freeze = 0;
  52.         preset.ySpeed = -26.5f;
  53.         preset.xPos = preset.xOrg + 8;
  54.        
  55.                 array<int> BarrelSprites = {3,6,7,8,9};
  56.         for (uint i = 0; i < BarrelSprites.length(); i++) {
  57.                 jjANIMATION@ animBarrel = jjAnimations[jjAnimSets[ANIM::PICKUPS] + BarrelSprites[i]];
  58.                 for (uint j = 0; j < animBarrel.frameCount; j++) {
  59.                         jjANIMFRAME@ frame = jjAnimFrames[animBarrel + j];
  60.                         jjPIXELMAP sprite(frame);
  61.                         for (uint x = 0; x < sprite.width; ++x) {
  62.                                 for (uint y = 0; y < sprite.height; ++y) {
  63.                                         if (sprite[x,y] == 40) sprite[x,y] = 24;
  64.                                         if (sprite[x,y] == 53) sprite[x,y] = 41;
  65.                                         if (sprite[x,y] >= 56 && sprite[x,y] <= 62) sprite[x,y] -= 31;
  66.                                         if (sprite[x,y] >= 80 && sprite[x,y] <= 87) sprite[x,y] -= 64;
  67.                                 }
  68.                         }
  69.                         sprite.save(frame);
  70.                 }
  71.         }
  72.        
  73.         // Lightning Rod as TNT
  74.         // DO NOT COPY THIS!!
  75.         jjAnimSets[ANIM::CUSTOM[7]].load(0, "Lightningrod.j2a");
  76.         jjAnimations[jjAnimSets[ANIM::AMMO] + 59] = jjAnimations[jjAnimSets[ANIM::CUSTOM[7]] + 0];
  77.        
  78.         jjObjectPresets[OBJECT::TNT].behavior = Lightningrod();
  79.         jjObjectPresets[OBJECT::TNT].determineCurAnim(ANIM::CUSTOM[7], 0);
  80.         jjObjectPresets[OBJECT::TNT].playerHandling = HANDLING::PARTICLE;
  81.         jjObjectPresets[OBJECT::TNT].bulletHandling = HANDLING::IGNOREBULLET;
  82.         jjObjectPresets[OBJECT::TNT].counterEnd = 255;
  83.        
  84.         jjObjectPresets[OBJECT::TNTAMMO3].behavior = LightningrodPickup();
  85.         jjObjectPresets[OBJECT::TNTAMMO3].scriptedCollisions = true;
  86.         jjObjectPresets[OBJECT::TNTAMMO3].determineCurAnim(ANIM::CUSTOM[7], 0);
  87.         jjWeapons[WEAPON::TNT].maximum = 50;
  88.        
  89.         jjSampleLoad(SOUND::COMMON_ELECTRICHIT, "ZAPFIZZ1.wav");
  90.         jjSampleLoad(SOUND::COMMON_ELECTRIC2, "ZAPFIZZ2.wav");
  91.        
  92.        
  93.         // Sanguinespear as Ice
  94.         // DO NOT COPY THIS!!
  95.         jjAnimSets[ANIM::HATTER].load();
  96.         jjAnimSets[ANIM::MONKEY].load();
  97.         jjAnimSets[ANIM::CUSTOM[28]].load(0, "Syringe.j2a");
  98.        
  99.         jjAnimations[jjAnimSets[ANIM::AMMO] + 29] = jjAnimations[jjAnimSets[ANIM::CUSTOM[28]] + 0];
  100.         jjAnimations[jjAnimSets[ANIM::AMMO] + 28] = jjAnimations[jjAnimSets[ANIM::CUSTOM[28]] + 1];
  101.         jjAnimations[jjAnimSets[ANIM::PICKUPS] + 55] = jjAnimations[jjAnimSets[ANIM::CUSTOM[28]] + 3]; //gun 8 crate
  102.  
  103.         jjObjectPresets[OBJECT::ICEBULLET].behavior = jjObjectPresets[OBJECT::ICEBULLETPU].behavior = BloodSpear();
  104.         jjObjectPresets[OBJECT::ICEBULLET].ySpeed = -1.5;
  105.         jjObjectPresets[OBJECT::ICEBULLET].xSpeed = 8;
  106.         jjObjectPresets[OBJECT::ICEBULLET].counterEnd = 85;
  107.         jjObjectPresets[OBJECT::ICEBULLET].var[6] = 0;
  108.         jjObjectPresets[OBJECT::ICEBULLETPU].ySpeed = -2;
  109.         jjObjectPresets[OBJECT::ICEBULLETPU].xSpeed = 8.5;
  110.         jjObjectPresets[OBJECT::ICEBULLETPU].counterEnd = 95;
  111.         jjObjectPresets[OBJECT::ICEBULLETPU].var[6] = 8;
  112.         jjObjectPresets[OBJECT::ICEBULLET].freeze = jjObjectPresets[OBJECT::ICEBULLETPU].freeze = 0;
  113.         jjObjectPresets[OBJECT::ICEBULLET].eventID = OBJECT::ICEBULLET;
  114.         jjObjectPresets[OBJECT::ICEBULLETPU].eventID = OBJECT::ICEBULLETPU;
  115.         jjObjectPresets[OBJECT::ICEAMMO15].determineCurAnim(ANIM::CUSTOM[28], 3);
  116.         jjObjectPresets[OBJECT::ICEAMMO15].determineCurFrame();
  117.        
  118.         jjObjectPresets[OBJECT::ICEPOWERUP].determineCurAnim(ANIM::CUSTOM[28], 2, true);
  119.         jjObjectPresets[OBJECT::ICEPOWERUP].determineCurFrame();
  120.  
  121.         jjWeapons[WEAPON::ICE].defaultSample = false;
  122.         jjWeapons[WEAPON::ICE].replacedByBubbles = true;
  123. }
  124.  
  125. class BloodSpear : jjBEHAVIORINTERFACE {
  126.         void onBehave(jjOBJ@ obj) {
  127.                 obj.behave(BEHAVIOR::BULLET, false);
  128.                 obj.var[0] = int(atan2(-obj.ySpeed, obj.xSpeed) * (512.f * 0.318309886142228f));
  129.                
  130.                 if (obj.counter == 1 && obj.state == STATE::FLY && jjPlayers[obj.creatorID].isLocal) {
  131.                         jjSample(jjPlayers[obj.creatorID].xPos, jjPlayers[obj.creatorID].yPos, SOUND::HATTER_PTOEI, 0, obj.eventID == OBJECT::ICEBULLETPU? 19000:20000);
  132.                 }
  133.                
  134.                 if (obj.state == STATE::FLY) {
  135.                         jjDrawRotatedSprite(obj.xPos, obj.yPos, ANIM::HATTER, 3, jjGameTicks >> 2, obj.var[0], 2, 1, SPRITE::SINGLEHUE, obj.eventID == OBJECT::ICEBULLETPU? 15:24);
  136.                         switch (obj.direction) {
  137.                                 case 1: obj.xSpeed -= 0.1; obj.ySpeed += 0.1; break;
  138.                                 case -1: obj.xSpeed += 0.1; obj.ySpeed += 0.1; break;
  139.                         }
  140.                         if (obj.xSpeed == 0) obj.ySpeed += 0.15;
  141.                        
  142.                         jjPARTICLE@ blood = jjAddParticle(PARTICLE::ICETRAIL);
  143.                         blood.xPos = obj.xPos;
  144.                         blood.yPos = obj.yPos;
  145.                         blood.icetrail.color = obj.eventID == OBJECT::ICEBULLETPU? 16:24;
  146.                         blood.icetrail.colorStop = obj.eventID == OBJECT::ICEBULLETPU? 24:32;
  147.                 }
  148.                
  149.                 if (obj.state == STATE::EXPLODE) {
  150.                         jjDrawSprite(obj.xPos, obj.yPos, ANIM::MONKEY, 1, obj.curFrame, obj.direction, SPRITE::SINGLEHUE, obj.eventID == OBJECT::ICEBULLETPU? 15:24);
  151.                         if (obj.var[1] < 27) {
  152.                                 if (obj.var[1] == 1) jjSample(obj.xPos, obj.yPos, SOUND::HATTER_SPLOUT, 0, 20000);
  153.                                 obj.var[1] = obj.var[1] + 1;
  154.                         }
  155.                         if (obj.var[1] == 27) {
  156.                                 obj.var[1] = 0;
  157.                                 obj.delete();
  158.                         }
  159.                 }
  160.                
  161.         }
  162. }
  163.  
  164. void onMain() {
  165.         for (int i = 0; i < 1024; i++) {
  166.                 jjPARTICLE@ particle = jjParticles[i];
  167.                 if (particle.type == PARTICLE::FLOWER && particle.yPos > jjWaterLevel) {
  168.                         particle.type = PARTICLE::INACTIVE;
  169.                 }
  170.         }
  171.        
  172.         for (int i = 1; i < jjObjectCount; i++) {
  173.                 if (jjObjects[i].eventID == OBJECT::SEEKERPOWERUP) {
  174.                 jjObjects[i].yPos = jjObjects[i].yOrg;
  175.                 }
  176.         }
  177.        
  178.         jjWeapons[WEAPON::GUN8].comesFromGunCrates = true;
  179.     jjWeapons[WEAPON::GUN9].comesFromGunCrates = true;
  180. }
  181.  
  182. void coloredSpring(jjOBJ@ obj) {
  183.         obj.behave(BEHAVIOR::SPRING, false);
  184.         jjDrawSpriteFromCurFrame(obj.xPos, obj.yPos, obj.curFrame, obj.direction, SPRITE::PALSHIFT, 216);
  185. }
  186.  
  187. void offsetPosition(jjOBJ@ obj) {
  188.         obj.behave(BEHAVIOR::SPRING);
  189.         if (obj.xPos > 88*32 && obj.xPos < 90*32) obj.xPos = obj.xOrg + 12;
  190. }
  191.  
  192. class Lightningrod : jjBEHAVIORINTERFACE {
  193.         void onBehave(jjOBJ@ obj) {
  194.                 obj.behave(BEHAVIOR::BULLET, false);
  195.                 jjPLAYER@ creator = jjPlayers[obj.creatorID];
  196.                
  197.                 if (jjGameMode == GAME::CTF) {
  198.                         switch (creator.team) {
  199.                                 case TEAM::BLUE: obj.var[4] = 1; break;
  200.                                 case TEAM::RED: obj.var[4] = 2; break;
  201.                                 case TEAM::YELLOW: obj.var[4] = 3; break;
  202.                                 case TEAM::GREEN: obj.var[4] = 4; break;
  203.                         }
  204.                 } else {
  205.                         obj.var[4] = 1;
  206.                 }
  207.                
  208.                 jjDrawSprite(obj.xPos, obj.yPos, ANIM::CUSTOM[7], obj.var[0] == 1? obj.var[4] : 0, obj.var[0] == 1? jjGameTicks / 10 % 6 : 0, obj.direction, SPRITE::NORMAL);
  209.                
  210.                 if (obj.counter == 2 && jjPlayers[obj.creatorID].isLocal) {
  211.                         jjSample(creator.xPos, creator.yPos, SOUND::COMMON_MONITOR, 0, 12500);
  212.                         obj.age = 0;
  213.                         obj.var[1] = 0;
  214.                 }
  215.                
  216.                 if (obj.counter == 127) obj.counter = 2;
  217.                
  218.                 if (!jjMaskedHLine(int(obj.xPos - 16), 24, int(obj.yPos + 8))) {
  219.                         obj.yPos += 6;
  220.                         obj.var[0] = 0;
  221.                         obj.lightType = LIGHT::POINT;
  222.                 } else {
  223.                         obj.var[0] = 1;
  224.                 }
  225.                
  226.                 if (obj.var[0] == 1) {
  227.                         obj.age++;
  228.                         if (obj.var[1] == 0) {
  229.                                 jjSample(obj.xPos, obj.yPos, SOUND::COMMON_LANDCAN1, 0, 30000);
  230.                                 obj.var[1] = 1;
  231.                         }
  232.                         obj.lightType = LIGHT::BRIGHT;
  233.                         obj.light = 10;
  234.                         if (obj.age % 20 == 0) {
  235.                                 for (int i = -4; i <= 4; i += 4) {
  236.                                         Electricity temp;
  237.                                         int id = jjAddObject(OBJECT::LIGHTNINGSHIELDBULLET, obj.xPos, obj.yPos - 12, obj.creatorID, CREATOR::PLAYER, jjVOIDFUNCOBJ(temp.onBehave));
  238.                                         if (id != 0) {
  239.                                                 jjOBJ@ zap = jjObjects[id];
  240.                                                 zap.lightType = LIGHT::NONE;
  241.                                                 zap.counterEnd = 6;
  242.                                                 zap.animSpeed = 2;
  243.                                                 zap.direction = obj.direction;
  244.                                                 zap.lightType = LIGHT::NONE;
  245.                                                 zap.playerHandling = HANDLING::PLAYERBULLET;
  246.                                                 zap.var[3] = 1;
  247.                                                 zap.var[6] = 8;
  248.                                                 zap.xSpeed = i;
  249.                                                 zap.xAcc = 0;
  250.                                                 if (i == 0) zap.ySpeed = -4;
  251.                                         }
  252.                                 }
  253.                         }
  254.                 }
  255.                
  256.                 if (obj.age == 160) {
  257.                         obj.var[0] = obj.var[1] = 0;
  258.                         obj.particlePixelExplosion(0);
  259.                         obj.delete();
  260.                 }
  261.         }
  262. }
  263.  
  264. class Electricity : jjBEHAVIORINTERFACE {
  265.         void onBehave(jjOBJ@ obj) {
  266.                 obj.behave(BEHAVIOR::BULLET, false);
  267.         }
  268. }
  269.  
  270. class LightningrodPickup : jjBEHAVIORINTERFACE {
  271.         void onBehave(jjOBJ@ obj) {
  272.                 obj.behave(BEHAVIOR::PICKUP);
  273.         }
  274.         bool onObjectHit(jjOBJ@ obj, jjOBJ@ bullet, jjPLAYER@ play, int force) {
  275.                 if (play.ammo[WEAPON::TNT] < jjWeapons[WEAPON::TNT].maximum) {
  276.                         if (play.isLocal) {
  277.                                 play.ammo[WEAPON::TNT] = play.ammo[WEAPON::TNT] + 3;
  278.                                 if (jjAutoWeaponChange && play.ammo[WEAPON::TNT] < 1) play.currWeapon = WEAPON::TNT;
  279.                                 jjSample(obj.xPos, obj.yPos, SOUND::COMMON_PICKUPW1, 0, 0);
  280.                         }
  281.                         obj.behavior = BEHAVIOR::EXPLOSION2;
  282.                         obj.scriptedCollisions = false;
  283.                         obj.frameID = 0;
  284.                 }
  285.                 return true;
  286.         }
  287. }
  288.  
  289. void onFunction0(jjPLAYER@ play) {
  290.         jjIsSnowing = true;
  291. }
  292.  
  293. void onFunction1(jjPLAYER@ play) {
  294.         jjIsSnowing = false;
  295. }