Name | Author | Game Mode | Rating | |||||
---|---|---|---|---|---|---|---|---|
Foo Single Player 2/14:... | Violet CLM | Single player | 10 |
#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!"
}
};
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.