Downloads containing VDom4.j2as

Downloads
Name Author Game Mode Rating
JJ2+ Only: violetclm DOM Episodes I...Featured Download Violet CLM Custom / Concept 9 Download file

File preview

  1. const bool MLLESetupSuccessful = MLLE::Setup(array<MLLEWeaponApply@> = {ArcaneWeapons::TornadoGun::Weapon(), null, null, null, null, null, SzmolWeaponPack::PetrolBomb::MyPetrol(), null, null}); ///@MLLE-Generated
  2. #include "MLLE-Include-1.5w.asc" ///@MLLE-Generated
  3. #pragma require "vdom.j2t" ///@MLLE-Generated
  4. #pragma require "VDom4.j2l" ///@MLLE-Generated
  5. #include "petrolBomb.asc" ///@MLLE-Generated
  6. #pragma require "petrolBomb.asc" ///@MLLE-Generated
  7. #include "ArcaneWeapon6.asc" ///@MLLE-Generated
  8. #pragma require "ArcaneWeapon6.asc" ///@MLLE-Generated
  9.  
  10. ///@SaveAndRunArgs -dom -server
  11.  
  12. const bool DoSpecialGemThing = false;
  13.  
  14. bool onDrawAmmo(jjPLAYER@ player, jjCANVAS@ canvas) {
  15.         return MLLE::WeaponHook.drawAmmo(player, canvas);
  16. }
  17.  
  18. void onReceive(jjSTREAM&in packet, int fromClientID) {
  19.         MLLE::WeaponHook.processPacket(packet, fromClientID);
  20. }
  21.  
  22. void onLevelReload() { MLLE::Palette.apply(); }
  23. void onLevelLoad() {
  24.         ///@Event 63=Red Gem (+1)                     |+|Gem       |Red    |Gem|CP:2|Left:c1
  25.         jjObjectPresets[OBJECT::REDGEM].playerHandling = HANDLING::PARTICLE;
  26.         jjObjectPresets[OBJECT::REDGEM].behavior = ControlPointIndicator;
  27.         jjObjectPresets[OBJECT::DESTRUCTSCENERY].isTarget = true;
  28.         jjObjectPresets[OBJECT::DESTRUCTSCENERY].behavior = function(o) { o.behave(BEHAVIOR::DESTRUCTSCENERY); o.special = 70*5; o.behavior = BEHAVIOR::DESTRUCTSCENERY; };
  29.         jjObjectPresets[OBJECT::TNTAMMO3].scriptedCollisions = true;
  30. }
  31.  
  32. int everyOtherFlame = 0;
  33. namespace SzmolWeaponPack {
  34.         namespace PetrolBomb {
  35.                 class MyPetrol : Weapon {
  36.                         void addFlames(float x, float y, uint16 crID, CREATOR::Type crType, bool send) const override {
  37.                                 Weapon::addFlames(x,y,crID,crType,send);
  38.                                 for (uint objectID = jjObjectCount; --objectID != 0;) {
  39.                                         jjOBJ@ bullet = jjObjects[objectID];
  40.                                         if (bullet.behavior == bombFlame) {
  41.                                                 //use a different behavior (which interacts with tornado guns) but also spawn fewer/faster flames to reduce lag a bit with so much petrol ammo
  42.                                                 if ((everyOtherFlame ^= 1) == 1) {
  43.                                                         bullet.behavior = myFlame;
  44.                                                         bullet.age += 456;
  45.                                                 } else
  46.                                                         bullet.delete();
  47.                                         }
  48.                                 }
  49.                         }
  50.                 }
  51.                 void myFlame(jjOBJ@ obj) {
  52.                         bombFlame(obj);
  53.                         if (obj.xSpeed == 0 && obj.ySpeed == 0) {
  54.                                 if (jjGameTicks & 3 == 0)
  55.                                         for (uint objectID = jjObjectCount; --objectID != 0;) {
  56.                                                 jjOBJ@ bullet = jjObjects[objectID];
  57.                                                 if (bullet.behavior == ArcaneWeapons::TornadoGun::Behavior && obj.doesCollide(bullet)) {
  58.                                                         obj.xSpeed = bullet.xSpeed;
  59.                                                         obj.ySpeed = bullet.ySpeed * 3;
  60.                                                         obj.age /= 2;
  61.                                                         obj.var[0] = 1;
  62.                                                         break;
  63.                                                 }
  64.                                         }
  65.                         } else if (obj.var[0] == 1 && jjGameTicks & 7 == 0) {
  66.                                 jjOBJ@ fire = jjObjects[jjAddObject(OBJECT::TOASTERBULLET, obj.xPos, obj.yPos, obj.creatorID, obj.creatorType)];
  67.                                 fire.xSpeed = obj.xAcc = 0;
  68.                                 fire.ySpeed = abs(obj.xSpeed);
  69.                         }
  70.                 }
  71.         }
  72. }
  73.  
  74. void ControlPointIndicator(jjOBJ@ obj) {
  75.         const int xTile = int(obj.xOrg) >> 5;
  76.         const int yTile = int(obj.yOrg) >> 5;
  77.         if (obj.state == STATE::START) {       
  78.                 obj.var[4] = jjParameterGet(xTile, yTile, 0, 2);
  79.                 obj.var[5] = jjParameterGet(xTile, yTile, 2, 1);
  80.         }
  81.         const jjCONTROLPOINT@ controlPoint = jjControlPoints[obj.var[4]];
  82.         if (DoSpecialGemThing && jjGameCustom == GAME::DOM) {
  83.                 switch (controlPoint.controlTeam) {
  84.                         case TEAM::BLUE:
  85.                                 obj.var[0] = 3;
  86.                                 break;
  87.                         case TEAM::RED:
  88.                                 obj.var[0] = 1;
  89.                                 break;
  90.                         case TEAM::GREEN:
  91.                                 obj.var[0] = 2;
  92.                                 break;
  93.                         case TEAM::YELLOW:
  94.                                 obj.var[0] = 5;
  95.                                 break;
  96.                         default:
  97.                                 return;
  98.                 }
  99.                 obj.behave(BEHAVIOR::PICKUP, false);
  100.                 jjDrawSpriteFromCurFrame(obj.xPos, obj.yPos, obj.curFrame, obj.direction, SPRITE::GEM, obj.var[0]-1, 3);
  101.         }
  102.         if (obj.var[5] != 0) {
  103.                 const bool correctTeam = !DoSpecialGemThing || jjGameCustom != GAME::DOM || jjLocalPlayers[0].team == controlPoint.controlTeam;
  104.                 jjTileSet(4, xTile + 1, yTile, correctTeam ? 538 : 528);
  105.                 jjTileSet(4, xTile + 2, yTile, correctTeam ? 539 : 529);
  106.         }
  107. }
  108.  
  109. void onLevelBegin() {
  110.         if (DoSpecialGemThing && jjGameCustom == GAME::DOM)
  111.                 jjLocalPlayers[0].showText("@@@@Capture a control point to open@@the path to the next floor.", STRING::MEDIUM);
  112.         jjWeapons[WEAPON::BLASTER].style = WEAPON::CAPPED; //can this be in oLL? idk who cares
  113. }
  114.  
  115. bool BackgroundFlipped = false;
  116. void onMain() {
  117.         const jjPLAYER@ player = jjLocalPlayers[0];
  118.         bool backgroundShouldBeFlipped;
  119.         if (player.yPos < 61 * 32)
  120.                 backgroundShouldBeFlipped = false;
  121.         else if (player.yPos > 76 * 32)
  122.                 backgroundShouldBeFlipped = true;
  123.         else
  124.                 return;
  125.         if (backgroundShouldBeFlipped != BackgroundFlipped) {
  126.                 BackgroundFlipped = backgroundShouldBeFlipped;
  127.                 for (uint x = 0; x < 25; ++x) {
  128.                         uint y = 0;
  129.                         while (true) {
  130.                                 const auto swap = jjTileGet(8,x,y);
  131.                                 jjTileSet(8,x,y, jjTileGet(8,x,18-y) ^ TILE::VFLIPPED);
  132.                                 if (y < 9) {
  133.                                         jjTileSet(8,x,18-y, swap ^ TILE::VFLIPPED);
  134.                                         ++y;
  135.                                 } else
  136.                                         break;
  137.                         }
  138.                 }
  139.         }
  140. }