Name | Author | Game Mode | Rating | |||||
---|---|---|---|---|---|---|---|---|
Mystery of the Four... | chandie | Single player | 6.6 |
const bool MLLESetupSuccessful = MLLE::Setup(array<MLLEWeaponApply@> = {null, null, ArcaneWeapons::FusionCannon::Weapon(), WeaponVMega::Voranj::Weapon(), WeaponVMega::Backfire::Weapon(), null, ArcaneWeapons::FusionCannon::Weapon(), null, ArcaneWeapons::MortarLauncher::Weapon()}); ///@MLLE-Generated
#include "MLLE-Include-1.5w.asc" ///@MLLE-Generated
#pragma require "mo4a_3-1_revisited2-MLLE-Data-1.j2l" ///@MLLE-Generated
#pragma require "mo4a_3-1_revisited2.j2l" ///@MLLE-Generated
#include "ArcaneWeapon4.asc" ///@MLLE-Generated
#pragma require "ArcaneWeapon4.asc" ///@MLLE-Generated
#include "WeaponVMega5.asc" ///@MLLE-Generated
#pragma require "WeaponVMega5.asc" ///@MLLE-Generated
#include "WeaponVMega8.asc" ///@MLLE-Generated
#pragma require "WeaponVMega8.asc" ///@MLLE-Generated
#include "ArcaneWeapon9.asc" ///@MLLE-Generated
#pragma require "ArcaneWeapon9.asc" ///@MLLE-Generated
#include "Jazz1Enemies v05.asc"
#include "Resize v11.asc"
#include "TrueColor v13.asc"
#include "HH18savegems.asc"
bool onDrawLives(jjPLAYER@ player, jjCANVAS@ canvas) {return true;}
bool onDrawAmmo(jjPLAYER@ player, jjCANVAS@ canvas) {
return MLLE::WeaponHook.drawAmmo(player, canvas);
}
void onLevelLoad() {
gem::restorePlayerGems();
jjSetWaterLevel(16*32, true);
jjLevelName = ("@@@@@@@@@Central Area");
jjWaterLighting = WATERLIGHT::GLOBAL;
Jazz1::MakeEnemy(OBJECT::HATTER, Jazz1::Enemies::Marbelara_Schwarzenguard, true).SetUsesJJ2StyleDeathAnimation(true).SetBulletFireSound(SOUND::INTRO_SHOT1).SetBulletExplosionSound(SOUND::COMMON_GUNSM1);
Jazz1::MakeEnemy(OBJECT::DRAGONFLY, Jazz1::Enemies::Marbelara_Drageen).SetUsesJJ2StyleDeathAnimation(true);
Jazz1::MakeEnemy(OBJECT::FLOATSUCKER, Jazz1::Enemies::Marbelara_Firebomb).SetUsesJJ2StyleDeathAnimation(true);
Jazz1::MakeEnemy(OBJECT::NORMTURTLE, Jazz1::Enemies::Dreempipes_TerrapinSwimmer).SetUsesJJ2StyleDeathAnimation(true);
jjObjectPresets[OBJECT::EVA].behavior = TimeMachine;
jjObjectPresets[OBJECT::EVA].determineCurAnim(ANIM::FLAG, 1);
jjObjectPresets[OBJECT::EVA].putOnGround(false);
jjObjectPresets[OBJECT::EVA].scriptedCollisions = true;
jjANIMATION@ tmAnim = jjAnimations[jjObjectPresets[OBJECT::EVA].curAnim];
for (uint i = 0; i < tmAnim.frameCount; ++i)
jjAnimFrames[tmAnim.firstFrame + i].coldSpotY = -44;
for (uint i = 0; i < tmAnim.frameCount; ++i)
jjAnimFrames[tmAnim.firstFrame + i].hotSpotY = -64;
for (uint i = 0; i < tmAnim.frameCount; ++i)
jjAnimFrames[tmAnim.firstFrame + i].hotSpotX = -54;
jjObjectPresets[OBJECT::ICEAMMO15].behavior = FCannon();
jjObjectPresets[OBJECT::ICEAMMO15].scriptedCollisions = true;
jjObjectPresets[OBJECT::ICEAMMO15].playerHandling = HANDLING::SPECIAL;
jjObjectPresets[OBJECT::TNTAMMO3].deactivates = false;
jjObjectPresets[OBJECT::FLYCARROT].determineCurAnim(ANIM::PLUS_WARP, 0);
jjObjectPresets[OBJECT::FLYCARROT].behavior = Bonus;
jjObjectPresets[OBJECT::FLYCARROT].scriptedCollisions = true;
jjANIMATION@ BAnim = jjAnimations[jjObjectPresets[OBJECT::FLYCARROT].curAnim];
for (uint i = 0; i < BAnim.frameCount; ++i)
jjAnimFrames[BAnim.firstFrame + i].hotSpotY = -85;
for (uint i = 0; i < BAnim.frameCount; ++i)
jjAnimFrames[BAnim.firstFrame + i].hotSpotX = 20;
jjObjectPresets[OBJECT::INVINCIBILITY].determineCurAnim(ANIM::PLUS_WARP, 1);
jjObjectPresets[OBJECT::INVINCIBILITY].behavior = Bonuseye;
jjObjectPresets[OBJECT::INVINCIBILITY].scriptedCollisions = true;
jjObjectPresets[OBJECT::INVINCIBILITY].bulletHandling = HANDLING::IGNOREBULLET;
jjObjectPresets[OBJECT::INVINCIBILITY].playerHandling = HANDLING::PLAYERBULLET;
jjANIMATION@ BeAnim = jjAnimations[jjObjectPresets[OBJECT::INVINCIBILITY].curAnim];
for (uint i = 0; i < BeAnim.frameCount; ++i)
jjAnimFrames[BeAnim.firstFrame + i].hotSpotY = 16;
for (uint i = 0; i < BeAnim.frameCount; ++i)
jjAnimFrames[BeAnim.firstFrame + i].hotSpotX = 26;
}
void Bonuseye(jjOBJ@ obj){
obj.direction = -1;
obj.behave(BEHAVIOR::PICKUP, false);
obj.draw();
}
void Bonus(jjOBJ@ obj){
obj.putOnGround();
obj.direction = -1;
obj.behave(BEHAVIOR::PICKUP, false);
obj.draw();
}
void TimeMachine(jjOBJ@ obj){
obj.behave(BEHAVIOR::EVA, false);
jjDrawResizedSpriteFromCurFrame(obj.xPos, obj.yPos, obj.curFrame, 1, 1, SPRITE::PALSHIFT, 8);
}
class FCannon : jjBEHAVIORINTERFACE {
void onBehave(jjOBJ@ obj) {
if(p.ammo[WEAPON::TNT] > 1)
{obj.delete();}
obj.behave(BEHAVIOR::MONITOR);
}
bool onObjectHit(jjOBJ@ obj, jjOBJ@ bullet, jjPLAYER@ play, int force) {
if(bullet !is null && play !is null)
{obj.behave(BEHAVIOR::EXPLOSION2);
jjAddObject(OBJECT::TNTAMMO3, 54*32, 13*32);
jjAddObject(OBJECT::TNTAMMO3, 55*32, 13*32);
jjAddObject(OBJECT::TNTAMMO3, 56*32, 13*32);
jjAddObject(OBJECT::TNTAMMO3, 56*32, 12*32);
jjAddObject(OBJECT::TNTAMMO3, 55*32, 12*32);
jjAddObject(OBJECT::TNTAMMO3, 54*32, 12*32);
jjSample(p.xPos, p.yPos, SOUND::COMMON_HARP1, 1000);}
return true;
}
}
void onFunction0(jjPLAYER@ p){
jjNxt("mo4a_save6", false, true);
gem::saveGemData();}
bool buyammo = false;
void onPlayer(jjPLAYER@ p) {
gem::trackPlayerGems(p);
gem::upgradeHealth(p);
p.lightType = LIGHT::NONE;
if(p.ammo[WEAPON::TNT] < 1 && p.xPos>36*32 && p.xPos<40*32 && p.yPos<16*32 && p.yPos>13*32 && jjKey[0x50] && p.gems[GEM::RED]<50 && buyammo == false)
{p.testForGems(50, GEM::RED);}
if(p.ammo[WEAPON::TNT] < 1 && p.xPos>36*32 && p.xPos<40*32 && p.yPos<16*32 && p.yPos>13*32 && jjKey[0x50] && p.gems[GEM::RED]>=50 && buyammo == false)
{p.testForGems(50, GEM::RED);
jjTriggers[9]=true;
buyammo = true;}
if(p.ammo[WEAPON::TNT] >= 1 && p.xPos>36*32 && p.xPos<40*32 && p.yPos<16*32 && p.yPos>13*32 && jjKey[0x50] && buyammo == false)
{p.showText("@@You already have the weapon.");}
}
void onLevelReload() {
gem::restorePlayerGems();
jjLocalPlayers[0].lives++;
buyammo == false;
jjTriggers[9] = false;
jjWaterLighting = WATERLIGHT::GLOBAL;
}
void onMain() {
gem::deleteCollectedGems();
if(jjKey[9] && jjKey[0x51]) {
p.morphTo(CHAR::JAZZ, false);
}
if(jjKey[9] && jjKey[0x57]) {
p.morphTo(CHAR::SPAZ, false);
}
if(jjKey[9] && jjKey[0x45]) {
p.morphTo(CHAR::LORI, false);
}
}
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.