Downloads containing BL18_level02.j2as

Downloads
Name Author Game Mode Rating
JJ2+ Only: Foo Single Player 2/14:...Featured Download Violet CLM Single player 10 Download file

File preview

#include "MLLE-Include-1.4.asc"
const bool MLLESetupSuccessful = MLLE::Setup();
#pragma require "blue world.j2t"
#pragma require "inferno1.j2t"
#pragma require "Blue World.j2t"
#pragma require "Inferno1.j2t"
#pragma require "BL18_level02.j2l"
#include "BL18.asc"

const uint TimeTarget = 550;

//void onDrawLayer7(jjPLAYER@, jjCANVAS@ screen) {
	//screen.drawRectangle(-9000, 224, 18000, 500, 200, SPRITE::TRANSLUCENT);
//}

void onLevelLoad() {
	jjTexturedBGTexture = TEXTURE::PSYCH;
	
	@BL18::myCoinWarpFunction = FinishLevel;
	BL18::Setup();
	
	jjTexturedBGTexture = TEXTURE::PSYCH;
	
	array<jjLAYER@> layerOrder = jjLayerOrderGet();
	jjLAYER@ mountains = jjLayers[7];
	mountains.spriteMode = SPRITE::TINTED;
	mountains.spriteParam = 200;
	
	jjLAYER@ reflection = jjLAYER(mountains.width, mountains.height);
	reflection.generateSettableTileArea();
	for (int x = 0; x < mountains.width; ++x)
		for (int y = 0; y < mountains.height; ++y)
			reflection.tileSet(x,y, mountains.tileGet(x, mountains.height - 1 - y) ^ TILE::VFLIPPED);
	reflection.xSpeed = mountains.xSpeed;
	reflection.ySpeed = mountains.ySpeed;
	reflection.yOffset = mountains.yOffset - mountains.height*32;
	reflection.tileWidth = true;
	reflection.limitVisibleRegion = true;
	layerOrder.insertAt(layerOrder.length-1, @reflection);
	
	for (uint i = 0; i < 5; ++i) {
		jjLAYER new(mountains);
		jjLAYER new2(reflection);
		new.xSpeed -= 0.01; new2.xSpeed -= 0.01;
		new.ySpeed -= 0.02; new2.ySpeed -= 0.02;
		new.yOffset += 64; new2.yOffset += 64;
		new.xOffset += 256; new2.xOffset += 256;
		new.spriteMode = mountains.spriteMode;
		new.spriteParam = mountains.spriteParam;
		layerOrder.insertAt(layerOrder.length - 1, @new);
		layerOrder.insertAt(layerOrder.length - 1, @new2);
		if (i < 4) {
			@mountains = @new;
			@reflection = @new2;
		} //else
			//new.spriteMode = SPRITE::TRANSLUCENTTILE;
	}
	
	const jjLAYER@ fireBottom = jjLayers[1];
	jjLAYER reverseFireBottom(fireBottom);
	reverseFireBottom.xAutoSpeed *= -1;
	reverseFireBottom.spriteMode = fireBottom.spriteMode;
	reverseFireBottom.spriteParam = fireBottom.spriteParam;
	reverseFireBottom.yOffset -= 20;
	layerOrder.insertAt(0, @reverseFireBottom);
	jjLayerOrderSet(layerOrder);
	
	const array<uint8> greens = {16, 80};
	const array<uint8> white = {245,241,240,239,236,232,228,220};
	if (jjAnimSets[ANIM::FRUITPLAT]!=0)
		for (uint i = 0; i < 2; ++i) {
			BL18::Recolor(jjAnimations[jjAnimSets[ANIM::FRUITPLAT]+i], greens, white);
			BL18::Recolor(jjAnimations[jjAnimSets[ANIM::FRUITPLAT]+i], array<uint8>={48,24}, array<uint8>={156,154,149,145,144,143,140,139,136}); //red/pink to brown
		}
	if (jjAnimSets[ANIM::VINE]!=0)
		BL18::Recolor(jjAnimations[jjAnimSets[ANIM::VINE]+1], greens, white);
	if (jjAnimSets[ANIM::BRIDGE]!=0)
		BL18::Recolor(jjAnimations[jjAnimSets[ANIM::BRIDGE]+2], greens, white);
		
	jjObjectPresets[OBJECT::FRUITPLATFORM].deactivates = false; //simplify
	
	jjObjectPresets[OBJECT::EOLPOST].deactivates = false;
	jjObjectPresets[OBJECT::EOLPOST].scriptedCollisions = true;
	jjObjectPresets[OBJECT::EOLPOST].playerHandling = HANDLING::SPECIAL;
	jjObjectPresets[OBJECT::EOLPOST].behavior = MyEOLPost();
}

void FinishLevel() {
	jjHelpStrings[0] = "@@@@Shoot that sign when you're done!";
	BL18::Player.showText(0, 0);
	onFunction2(null, 26);
	BL18::SavedTriggers[26] = true;
}

class MyEOLPost : jjBEHAVIORINTERFACE {
	void onBehave(jjOBJ@ obj) {
		if (!jjMaskedPixel(int(obj.xPos), int(obj.yPos) + 16))
			obj.yPos += 2;
		obj.draw();
	}
	bool onObjectHit(jjOBJ@ obj, jjOBJ@ bullet, jjPLAYER@ player, int force) {
		if (bullet !is null && BL18::CurrentPopup is null) {
			obj.justHit = 5;
			onFunction1(null, 0);
			bullet.state = STATE::EXPLODE;
		}
		return true;
	}
}

array<array<string>> Conversations = {
	{
		"S4gwaaaachooooo!",
		"S1woo-err...",
		"S0i think my cold is back : (",
		"J9Do you want some aspirin?",
		"S0nah ill jus pray@the sick away thx",
		"J2...",
		"S6lets make this quack",
		"S4this is tibet or something@soo watch out for@EBIL BUDIST MONKEYS",
		"S5when you see the GOLD KEY,@remembar where it is@so u can get it later",
		"S3otherwhys just explore@everywarez until u find@all the coins",
		"J0Okay! That sounds hard,@but I have my magic@COIN ARROW!",
		"J1Plus coins stay collected@when I die, so I don't@lose all my progress!",
		"S0yeah",
		"S0imagine doing this here@without thoose handy@features eh?",
		"S5that would be awful : P",
		"J1",
		"S5",
		"J1",
		"S5",
		"J1",
		"S0*cough*"
	}, {
		"J8So what's with all these@black lizards everywhere?",
		"S2oh yah those ar uh@blackraptors",
		"J8Raptors? I really thought@they looked more like@black lizards...",
		"S1yeeah thats wat i said@blackratos : P",
		"J7Okay, so, umm...",
		"J1Are they, like, minions of@Black Ninja or something?",
		"S1SUre yeah prabaly",
		"J2Probably?",
		"S8definely!",
		"S1probbly"
	},{
		"S5Do you@remember CATS?",
		"J1Sure! They were hard to@see, but if I touched one,@I could fly for a while!",
		"S6Yeah well theyre@different noq : P",
		"S7iNstead of flying@you jst jump@on a pogo stork",
		"J8Oh, you mean like@Commandeer Ke--",
		"S4SHHHH DONJT GET@US SUED FOO!!",
		"S0anyway if you want to@get off a pogo cat@just perss fire k GL"
	},{
		"S1my marmalade got frozen : (",
		"S9at lest its too cold@to grow drugs here!"
	},{
		"J0Oh! Spotty,@I'm glad you're here!",
		"J5Last time I saw this@code, you were sick@with a cold. So...",
		"J8What does it say?",
		"S0uhhhhh....",
		"S2...",
		"S6!",
		"S5JESU DEFREND US@ITS THE NUKMBR@OF THE BREAST",
		"S3BEGON FROM MMY SIGHT@VILE NUBMER OF EIVL!!",
		"S5TEH POWER OF CHRIST@CRUMPELS YOU!",
		"J2I'm sorry I asked..."
	},{
		"S3hey Jazz this time@there really is@nothing here",
		"S6just taught id warm@you in advance"
	},{
		"S8hope you remember@where the gold key is!"
	}
};