Name | Author | Game Mode | Rating | |||||
---|---|---|---|---|---|---|---|---|
Mystery of the Four... | chandie | Single player | 6.6 |
const bool MLLESetupSuccessful = MLLE::Setup(array<MLLEWeaponApply@> = {null, null, DefaultWeapons::Blaster(), DefaultWeapons::Blaster(), WeaponVMega::Backfire::Weapon(), null, DefaultWeapons::Blaster(), null, ArcaneWeapons::MortarLauncher::Weapon()}); ///@MLLE-Generated
#include "MLLE-Include-1.5w.asc" ///@MLLE-Generated
#pragma require "mo4a_2-2-MLLE-Data-1.j2l" ///@MLLE-Generated
#pragma require "mo4a_2-2.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 "MLLE-DefaultWeapons.asc" ///@MLLE-Generated
#pragma require "MLLE-DefaultWeapons.asc" ///@MLLE-Generated
#include "Jazz1Enemies v05.asc"
#include "Resize v11.asc"
bool boss = false;
#include "HH18savegems.asc"
void onLevelLoad() {
gem::restorePlayerGems();
p.keyRight = false;
p.keyJump = false;
p.keyLeft = false;
p.xSpeed = 0;
p.jumpStrength = 0;
p.ySpeed = 0;
p.direction = 1;
jjLevelName = ("@@@@@@@@@Castle Road");
Jazz1::MakeEnemy(OBJECT::LIZARD, Jazz1::Enemies::Pezrox_GreenSnake).SetUsesJJ2StyleDeathAnimation(true);
Jazz1::MakeEnemy(OBJECT::RAVEN, Jazz1::Enemies::Sluggion_Dragoon).SetUsesJJ2StyleDeathAnimation(true);
Jazz1::MakeEnemy(OBJECT::HATTER, Jazz1::Enemies::Turtemple_JeTurtle, true).SetUsesJJ2StyleDeathAnimation(true).SetBulletFireSound(SOUND::INTRO_SHOT1).SetBulletExplosionSound(SOUND::COMMON_GUNSM1);
jjObjectPresets[OBJECT::SONICPLATFORM].scriptedCollisions = true;
jjObjectPresets[OBJECT::SONICPLATFORM].behavior = Carpet;
jjObjectPresets[OBJECT::SONICPLATFORM].lightType = LIGHT::BRIGHT;
jjObjectPresets[OBJECT::SILVERCOIN].behavior = PlatinCoin();
jjObjectPresets[OBJECT::SILVERCOIN].scriptedCollisions = true;
jjANIMATION@ anim = jjAnimations[jjObjectPresets[OBJECT::BANANA].curAnim];
anim.frameCount = 1;
jjANIMFRAME@ frame = jjAnimFrames[anim.firstFrame];
jjPIXELMAP carpet(0, 11*32, 2*32, 3*32, 5);
carpet.save(frame);
frame.hotSpotX = -42;
jjAddObject(OBJECT::SONICPLATFORM, 9*32, 4*32);
}
class PlatinCoin : jjBEHAVIORINTERFACE {
void onBehave(jjOBJ@ obj) {
if(p.coins >= 2)
{obj.delete();}
obj.behave(BEHAVIOR::PICKUP, false);
++obj.counter;
obj.yPos = jjSin(obj.counter*15 + 5)*4 + obj.yOrg;
jjDrawSpriteFromCurFrame(obj.xPos, obj.yPos, obj.curFrame, obj.direction, SPRITE::PALSHIFT, -8);
}
bool onObjectHit(jjOBJ@ obj, jjOBJ@ bullet, jjPLAYER@ player, int force) {
p.coins += 1;
obj.behavior = BEHAVIOR::EXPLOSION2;
jjSample(obj.xPos, obj.yPos, SOUND::COMMON_COIN, 1000);
return true;
}
}
bool onDrawHealth(jjPLAYER@ player, jjCANVAS@ canvas) {
return true;
}
bool onDrawLives(jjPLAYER@ player, jjCANVAS@ canvas) {return true;}
bool startrush = false;
bool readytorush = false;
bool control = false;
void onPlayer(jjPLAYER@ p) {
if(p.xPos < 11*32)
{p.currWeapon = WEAPON::BLASTER;}
p.idle = 100;
if(control == false) {
p.keyJump = false;
p.keyRight = false;
p.keyLeft = false; }
p.lightType = LIGHT::NONE;
gem::trackPlayerGems(p);
gem::upgradeHealth(p);
if(p.xPos > 332*32 && p.coins ==2)
{jjNxt("mo4a_2-3_save", false, true);
gem::saveGemData();}
if(p.xPos > 332*32 && p.coins < 2)
{p.testForCoins(2);}
if(p.coins == 0)
{p.coins += 1;}
if(p.food == 100 && jjKey[0x52] == false && startrush == false)
{p.showText("@@@@@@@@@@@@@@@@Press 'R' when you need to use Sugar Rush!", STRING::MEDIUM);
p.startSugarRush(0);
startrush = true;
readytorush = true;}
if(readytorush == true)
{p.food = 100;}
if(p.food == 100 && jjKey[0x52])
{p.startSugarRush(1400);
p.food = 0;
readytorush = false;
startrush = false;
}
for (int i = 1; i < jjObjectCount; i++) {
jjOBJ@ o = jjObjects[i];
if (o.isActive && o.eventID == OBJECT::SEEKERAMMO3 && p.ammo[WEAPON::SEEKER] < 1) {
o.state = STATE::KILL;}
}
for (int i = 1; i < jjObjectCount; i++) {
jjOBJ@ o = jjObjects[i];
if (o.isActive && o.eventID == OBJECT::RFAMMO3 && p.ammo[WEAPON::RF] < 1) {
o.state = STATE::KILL;}
}
for (int i = 1; i < jjObjectCount; i++) {
jjOBJ@ o = jjObjects[i];
if (o.isActive && o.eventID == OBJECT::TNTAMMO3 && p.ammo[WEAPON::TNT] < 1) {
o.state = STATE::KILL;}
}
for (int i = 1; i < jjObjectCount; i++) {
jjOBJ@ o = jjObjects[i];
if (o.isActive && o.eventID == OBJECT::GUN9AMMO3 && p.ammo[WEAPON::GUN9] < 1) {
o.state = STATE::KILL;}
}
for (int i = 1; i < jjObjectCount; i++) {
jjOBJ@ o = jjObjects[i];
if (o.isActive && o.eventID == OBJECT::SEEKERPOWERUP && p.ammo[WEAPON::SEEKER] < 1) {
o.state = STATE::KILL;}
}
for (int i = 1; i < jjObjectCount; i++) {
jjOBJ@ o = jjObjects[i];
if (o.isActive && o.eventID == OBJECT::RFPOWERUP && p.ammo[WEAPON::RF] < 1) {
o.state = STATE::KILL;}
}
for (int i = 1; i < jjObjectCount; i++) {
jjOBJ@ o = jjObjects[i];
if (o.isActive && o.eventID == OBJECT::TNTPOWERUP && p.ammo[WEAPON::TNT] < 1) {
o.state = STATE::KILL;}
}
for (int i = 1; i < jjObjectCount; i++) {
jjOBJ@ o = jjObjects[i];
if (o.isActive && o.eventID == OBJECT::GUN9POWERUP && p.ammo[WEAPON::GUN9] < 1) {
o.state = STATE::KILL;}
}
}
void Carpet (jjOBJ@ obj) {
switch (obj.state) {
case STATE::START:
obj.determineCurAnim(ANIM::PICKUPS, 2);
obj.determineCurFrame();
obj.playerHandling = HANDLING::SPECIAL;
obj.state = STATE::FLY;
obj.beSolid();
case STATE::FLY:
obj.beSolid();
if (p.keyDown) {
obj.ySpeed = 2;
p.ySpeed = 3;
obj.yPos = obj.yPos + obj.ySpeed;
}
if (p.keyUp) {
obj.ySpeed = -2;
p.ySpeed = 3;
obj.yPos = obj.yPos + obj.ySpeed;
}
else
obj.direction = obj.xSpeed = 2;
obj.xPos = obj.xPos + obj.xSpeed;
obj.deactivates = false;
if (jjMaskedVLine(obj.xSpeed > 0 ? obj.xPos : obj.xPos-16, obj.yPos, 1)) {
obj.ySpeed = -2;
obj.yPos = obj.yPos + obj.ySpeed;}
if (jjMaskedVLine(obj.xSpeed > 0 ? obj.xPos-32 : obj.xPos, obj.yPos-35, 1)) {
obj.ySpeed = 2;
p.ySpeed = 15;
obj.yPos = obj.yPos + obj.ySpeed;}
if((p.yPos>obj.yPos+2) || (obj.xPos>p.xPos + 128)){
p.health = 0;}
//jjDrawTile(obj.xPos - 17, obj.yPos - 32, 926);
obj.draw();
break;
}
}
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);
}
jjANIMATION@ anim = jjAnimations[jjObjectPresets[OBJECT::COKE].curAnim];
anim.frameCount = 1;
jjANIMFRAME@ frame = jjAnimFrames[anim.firstFrame];
jjPIXELMAP water(0, 15*32, 1*32, 1*32, 5);
water.save(frame);
frame.hotSpotX = -frame.width/2;
}
void onLevelReload() {
jjAddObject(OBJECT::SONICPLATFORM, 9*32, 4*32);
gem::restorePlayerGems();
jjLocalPlayers[0].lives++;
p.keyDown = false;
p.keyUp = false;
}
bool onDrawAmmo(jjPLAYER@ player, jjCANVAS@ canvas) {
return MLLE::WeaponHook.drawAmmo(player, canvas);
}
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.