Downloads containing ezextratest.j2as

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Extraplanar Test ThunDerDraGon Test N/A Download file

File preview

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();
}