| Name | Author | Game Mode | Rating | |||||
|---|---|---|---|---|---|---|---|---|
| Nokstella, Eternal City | ThunDerDraGon | Capture the flag | N/A | |||||
const bool MLLESetupSuccessful = MLLE::Setup(); ///@MLLE-Generated
#include "MLLE-Include-1.8.asc" ///@MLLE-Generated
#pragma require "eznokstella-MLLE-Data-1.j2l" ///@MLLE-Generated
#pragma require "eznokstella.j2l" ///@MLLE-Generated
#pragma require "fog.png"
#pragma require "moonglow.png"
#pragma require "aura.png"
void onLevelReload() {
MLLE::SpawnOffgridsLocal();
MLLE::ReapplyPalette();
}
void loadAssets(string filename, uint index) {
jjCOLORMAP asset(filename);
jjAnimSets[ANIM::CUSTOM[index]].load(
asset,
frameWidth: asset.width,
frameHeight: asset.height
);
}
void loadAssets16(string filename, uint index, const jjPAL &in palette = jjPalette) {
jjPIXELMAP asset(filename, palette);
jjAnimSets[ANIM::CUSTOM[index]].load(
asset,
frameWidth: asset.width,
frameHeight: asset.height
);
}
void onLevelLoad() {
loadAssets16("moonglow.png", 0);
loadAssets("fog.png", 1);
loadAssets("aura.png", 2);
jjPAL pal = jjPalette;
pal.color[166].setHSL(0, 0, 0);
pal.apply();
jjAnimSets[ANIM::RAPIER].load();
jjObjectPresets[OBJECT::ELECTROBULLETPU].eventID = OBJECT::ELECTROBULLET;
jjObjectPresets[OBJECT::CTFBASE].behavior = BossCTFBase();
jjObjectPresets[OBJECT::REDSPRING].behavior = RecolouredSpring();
jjObjectPresets[OBJECT::GREENSPRING].behavior = RecolouredSpring();
jjObjectPresets[OBJECT::BLUESPRING].behavior = RecolouredSpring();
for (int i = 1; i < 255; i++) {
jjOBJ@ preset = jjObjectPresets[i];
if (preset.playerHandling == HANDLING::PICKUP && preset.eventID != OBJECT::FULLENERGY) {
preset.behavior = CannotBeShotDown(preset.behavior);
}
}
}
class BossCTFBase : jjBEHAVIORINTERFACE {
void onBehave(jjOBJ@ obj) {
obj.behave(BEHAVIOR::FLAG, false);
}
void onDraw(jjOBJ@ obj) {
jjDrawSprite(obj.xOrg, obj.yOrg+17, ANIM::FLAG, 1, (obj.var[1] == 0) ? 0 : 1, (obj.xOrg < (jjLayerWidth[4]/2)*32) ? -1 : 1); //Base
jjDrawSprite((obj.xOrg < (jjLayerWidth[4]/2)*32) ? obj.xOrg + 60 : obj.xOrg - 60, //Character
obj.yOrg - 10 + 10*jjSin(jjGameTicks*3),
ANIM::RAPIER, 2,
int((jjGameTicks%(8*9))/9),
(obj.xOrg < (jjLayerWidth[4]/2)*32) ? 1 : -1, SPRITE::TRANSLUCENTMAPPING
,(obj.var[1] == 0) ? 0 : 2);
if (obj.var[0] == 0)
jjDrawSprite(obj.xOrg, obj.yOrg+17, ANIM::FLAG, (obj.var[1] == 0) ? 3 : 7, int((jjGameTicks%(8*7))/7), (obj.xOrg < (jjLayerWidth[4]/2)*32) ? -1 : 1); //Flag
}
}
class RecolouredSpring : jjBEHAVIORINTERFACE {
void onBehave(jjOBJ@ obj) {
obj.behave(BEHAVIOR::SPRING, false);
}
void onDraw(jjOBJ@ obj) {
jjDrawSpriteFromCurFrame(obj.xPos, obj.yPos, obj.curFrame, obj.direction, SPRITE::MAPPING, 3);
}
}
class CannotBeShotDown : jjBEHAVIORINTERFACE {
CannotBeShotDown(const jjBEHAVIOR &in behavior) {
originalBehavior = behavior;
}
void onBehave(jjOBJ@ obj) {
obj.behave(originalBehavior);
if (obj.state == STATE::FLOATFALL)
obj.state = STATE::FLOAT;
}
bool onObjectHit(jjOBJ@ obj, jjOBJ@ bullet, jjPLAYER@ player, int force) {
if (bullet is null) {
obj.behavior = originalBehavior;
if (player.objectHit(obj, force, obj.playerHandling))
return true;
obj.behavior = this;
}
return false;
}
private jjBEHAVIOR originalBehavior;
}
void onDrawLayer8(jjPLAYER@ player, jjCANVAS@ canvas) {
canvas.drawResizedSprite(200, 100, ANIM::CUSTOM[0], 0, 0, 2, 2, SPRITE::NEONGLOW, 100);
}
void onDrawLayer4(jjPLAYER@ player, jjCANVAS@ canvas) {
canvas.drawRotatedSprite(6*32 + 16, 29*32 + 16, ANIM::CUSTOM[2], 0, 0, jjGameTicks*4 ,1, 1, SPRITE::NEONGLOW, 55);
canvas.drawRotatedSprite(32*183 + 16, 29*32 + 16, ANIM::CUSTOM[2], 0, 0, jjGameTicks*4 ,1, 1, SPRITE::NEONGLOW, 55);
}
void onDrawLayer2(jjPLAYER@ player, jjCANVAS@ canvas) {
if (player.cameraY > 32*39)
for (int i = 0; i < 16; i++)
canvas.drawResizedSprite(-200 + 400*i+(jjGameTicks%800)/2, 62*32, ANIM::CUSTOM[1], 0, 1, 1, 1.5, SPRITE::NEONGLOW, 55);
}
void onLevelBegin() {
MLLE::SpawnOffgrids();
}
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.