| Name | Author | Game Mode | Rating | |||||
|---|---|---|---|---|---|---|---|---|
| Extraplanar Test | ThunDerDraGon | Test | N/A | |||||
const bool MLLESetupSuccessful = MLLE::Setup(); ///@MLLE-Generated
#include "MLLE-Include-1.8.asc" ///@MLLE-Generated
#pragma require "ezextratest-MLLE-Data-2.j2l" ///@MLLE-Generated
#pragma require "ezextratest-MLLE-Data-1.j2l" ///@MLLE-Generated
#pragma require "ssw2_set2.j2t" ///@MLLE-Generated
#pragma require "DiambKarstV2.j2t" ///@MLLE-Generated
#pragma require "BattleshipsO.j2t" ///@MLLE-Generated
#pragma require "ezextratest.j2l" ///@MLLE-Generated
#pragma require "Super_Portal.png"
#pragma require "glowmask2.png"
#pragma require "Giant_Tree.png"
#pragma offer "siren_-_farewell.it"
bool showWinArea = false;
array<array<int>> tiles;
array<jjLAYER@> winAreaLayers;
void loadAssets(string filename, uint index, uint width, uint height) {
jjCOLORMAP asset(filename);
jjAnimSets[ANIM::CUSTOM[index]].load(
asset,
frameWidth: width,
frameHeight: height
);
}
class localGenerator : jjBEHAVIORINTERFACE {
void onBehave(jjOBJ@ obj) {
if (obj.state == STATE::START) {
obj.age = 70;
obj.scriptedCollisions = true;
obj.playerHandling = HANDLING::PARTICLE;
obj.isFreezable = obj.isBlastable = obj.isTarget = false;
obj.bulletHandling = HANDLING::IGNOREBULLET;
obj.state = STATE::FLOAT;
obj.var[0] = jjAddObject(OBJECT::FASTFEET, obj.xPos, obj.yPos, 1, CREATOR::LEVEL);
} else {
obj.xSpeed = obj.ySpeed = 0;
obj.xPos = obj.xOrg;
obj.ySpeed = obj.yOrg;
if (!jjObjects[obj.var[0]].isActive) {
obj.var[0] = 0;
if (obj.age > 0)
obj.age--;
else {
obj.var[0] = jjAddObject(OBJECT::FASTFEET, obj.xPos, obj.yPos, 1, CREATOR::LEVEL);
obj.age = 70;
}
}
}
}
}
class DoubleFeet : jjBEHAVIORINTERFACE {
void onBehave(jjOBJ@ obj) {
if (obj.state == STATE::START) {
obj.scriptedCollisions = true;
obj.lightType = LIGHT::LASER;
obj.light = 10;
}
obj.behave(BEHAVIOR::PICKUP, true);
obj.xSpeed = obj.ySpeed = 0;
obj.state = STATE::FLOAT;
}
bool onObjectHit(jjOBJ@ obj, jjOBJ@, jjPLAYER@ player, int) {
if (player.isLocal) {
player.doubleJumpCount = 0;
obj.behavior = BEHAVIOR::EXPLOSION2;
obj.scriptedCollisions = false;
obj.frameID = 0;
}
return true;
}
}
class Dimensional_Portal : jjBEHAVIORINTERFACE {
void onBehave(jjOBJ@ obj) {
if (obj.state == STATE::START) {
obj.isFreezable = obj.isBlastable = false;
obj.playerHandling = HANDLING::PARTICLE;
obj.bulletHandling = HANDLING::IGNOREBULLET;
obj.state = STATE::IDLE;
} else if (obj.state == STATE::IDLE) {
if (obj.doesCollide(p, true) && p.warpID == 0)
p.warpToID(obj.var[5], false);
}
}
void onDraw(jjOBJ@ obj) {
jjDrawRotatedSprite(obj.xPos, obj.yPos, ANIM::CUSTOM[1], 0, 0, -jjGameTicks, 4.5, 4.5, SPRITE::NORMAL, 2, 5);
jjDrawRectangle(obj.xPos - 20, obj.yPos - 20, 60, 60, 1, SPRITE::NORMAL, 1, 5);
jjDrawRotatedSprite(obj.xPos, obj.yPos, ANIM::CUSTOM[0], 0, int((jjGameTicks%(9*6))/6), int(jjGameTicks/2) ,1, 1, SPRITE::BRIGHTNESS, 100, 5);
}
}
class Level19_Sentry : jjBEHAVIORINTERFACE {
void onBehave(jjOBJ@ obj) {
if (obj.state == STATE::START) {
obj.isFreezable = obj.isBlastable = false;
obj.playerHandling = HANDLING::PARTICLE;
obj.bulletHandling = HANDLING::IGNOREBULLET;
obj.state = STATE::IDLE;
} else if (obj.state == STATE::IDLE) {
if (obj.doesCollide(p, true) && p.warpID == 0 && p.xSpeed == 0) {
p.warpToID(19, false);
jjAlert("|Do not stick to the shoes columns for long!", false, STRING::MEDIUM);
}
}
}
}
void onLevelLoad() {
loadAssets("Super_Portal.png", 0, 128, 128);
loadAssets("glowmask2.png", 1, 68, 68);
loadAssets("Giant_Tree.png", 2, 804, 602);
jjObjectPresets[OBJECT::APPLE].behavior = localGenerator();
jjObjectPresets[OBJECT::ORANGE].behavior = Dimensional_Portal();
jjObjectPresets[OBJECT::FASTFEET].behavior = DoubleFeet();
jjObjectPresets[OBJECT::CHEESE].behavior = Level19_Sentry();
jjWeapons[5].infinite = true;
jjLayers[4].generateSettableTileArea();
array<jjLAYER@> layers = jjLayerOrderGet();
winAreaLayers.insertLast(layers[2]);
winAreaLayers.insertLast(layers[3]);
winAreaLayers.insertLast(layers[4]);
winAreaLayers.insertLast(layers[9]);
winAreaLayers.insertLast(layers[10]);
winAreaLayers.insertLast(layers[11]);
winAreaLayers.insertLast(layers[12]);
winAreaLayers.insertLast(layers[13]);
winAreaLayers.insertLast(layers[14]);
winAreaLayers.insertLast(layers[15]);
winAreaLayers.insertLast(layers[16]);
winAreaLayers.insertLast(layers[17]);
winAreaLayers.insertLast(layers[18]);
winAreaLayers.insertLast(layers[19]);
for (uint i = 0; i < winAreaLayers.length; i++)
winAreaLayers[i].hasTiles = false;
for (int x = 0; x < jjLayers[4].width; x++)
for (int y = 0; y < jjLayers[4].height; y++) {
if (x > 277 && y > 265) {
if (jjLayers[4].tileGet(x,y) > 0) {
array<int> tile = {x, y, jjLayers[4].tileGet(x,y)};
tiles.insertAt(0, tile);
jjLayers[4].tileSet(x, y, 0);
}
}
}
}
void onMain() {
if (showWinArea) {
jjDrawResizedSprite(295*32, 287*32 + 16, ANIM::CUSTOM[2], 0, 0, 0.5, 0.5, SPRITE::NORMAL, 0, 5);
if (!jjLowDetail) {
jjIsSnowing = jjGameTicks % 25 == 0? true:false;
} else {
jjIsSnowing = false;
}
jjSnowingType = SNOWING::LEAF;
jjSnowingIntensity = 0;
jjIsSnowingOutdoorsOnly = true;
for (int i = 0; i < 1024; i++) {
jjPARTICLE@ particle = jjParticles[i];
if (particle.type == PARTICLE::LEAF) {
particle.xSpeed = -1.5;
particle.ySpeed = 0.25;
}
}
} else {
for (uint i = 0; i < winAreaLayers.length; i++)
winAreaLayers[i].hasTiles = false;
jjIsSnowing = false;
}
}
float LastPlayerYSpeed;
int counter = -1;
void onPlayer(jjPLAYER@ play) {
play.ammo[5] = 50;
play.powerup[5] = true;
play.currWeapon = 5;
play.blink = 0;
if (play.ySpeed < LastPlayerYSpeed && LastPlayerYSpeed < 0.f && jjMaskedHLine(int(play.xPos) - 13, 26, int(play.yPos) + 25)) { //walljump
if (play.keyDown)
play.buttstomp = 1;
}
LastPlayerYSpeed = play.ySpeed;
if (int(play.xPos/32) > 277 && int(play.yPos/32) > 265 && !showWinArea) {
showWinArea = !showWinArea;
jjSetWaterLevel(294*32 + 22, true);
jjWaterLayer = 99;
jjMusicLoad("siren_-_farewell.it");
for (uint i = 0; i < tiles.length; i++)
jjLayers[4].tileSet(tiles[i][0], tiles[i][1], tiles[i][2]);
for (uint i = 0; i < winAreaLayers.length; i++)
winAreaLayers[i].hasTiles = true;
}
if (int(play.xPos/32) < 277 && int(play.yPos/32) < 265 && showWinArea) {
showWinArea = !showWinArea;
jjSetWaterLevel(jjLayers[4].height*32, true);
jjMusicLoad("ckayulan.it");
for (uint i = 0; i < tiles.length; i++)
jjLayers[4].tileSet(tiles[i][0], tiles[i][1], 0);
for (uint i = 0; i < winAreaLayers.length; i++)
winAreaLayers[i].hasTiles = false;
}
if (((play.xPos > 20*32 && play.xPos < 23*32) || (play.xPos > 60*32 && play.xPos < 63*32)) && (play.yPos > 66*32 && play.yPos < 101*32))
counter++;
else counter = -1;
if (counter > 200 && play.warpID == 0) {
play.warpToID(19, false);
counter = -1;
jjAlert("|Do not stick to the shoes columns for long!", false, STRING::MEDIUM);
}
}
void onLevelBegin() {
MLLE::SpawnOffgrids();
for (int x = 0; x < jjLayers[4].width; x++)
for (int y = 0; y < jjLayers[4].height; y++) {
if (jjEventGet(x, y) == AREA::WARP && jjParameterGet(x, y, 16, 1) == 1) {
jjOBJ@ portal = jjObjects[jjAddObject(OBJECT::ORANGE, x*32 + 16, y*32 + 16)];
portal.var[5] = jjParameterGet(x, y, 0, 8);
}
}
}
void onLevelReload() {
MLLE::SpawnOffgridsLocal();
}
Jazz2Online © 1999-INFINITY (Site Credits). We have a Privacy Policy. Jazz Jackrabbit, Jazz Jackrabbit 2, Jazz Jackrabbit Advance and all related trademarks and media are ™ and © Epic Games. Lori Jackrabbit is © Dean Dodrill. J2O development powered by Loops of Fury and Chemical Beats.
Eat your lima beans, Johnny.