| Name | Author | Game Mode | Rating | |||||
|---|---|---|---|---|---|---|---|---|
| Tropical Turmoil (Boss... | jjturbo9 | Single player | 5 | |||||
const bool MLLESetupSuccessful = MLLE::Setup(array<MLLEWeaponApply@> = {BubbleGun::Weapon(), null, null, null, null, null, null, null, null}); ///@MLLE-Generated
#include "MLLE-Include-1.8w.asc" ///@MLLE-Generated
#pragma require "Tropical Turmoil Options.j2l" ///@MLLE-Generated
#include "BubbleGun.asc" ///@MLLE-Generated
#pragma require "BubbleGun.asc" ///@MLLE-Generated
bool onDrawAmmo(jjPLAYER@ player, jjCANVAS@ canvas) {
return MLLE::WeaponHook.drawAmmo(player, canvas);
}
void onLevelBegin() {
jjPLAYER@ p = jjLocalPlayers[0];
p.lives = 0;
jjPLAYER@ player = jjLocalPlayers[0];
/* if (!player.bossActivated) {
player.activateBoss();
} */
jjPLAYER@ FastFiredUp = jjLocalPlayers[0];
//FastFiredUp.fastfire = 9; // change 6 into 1 for fastest gun in the WildWest, now default max (from collecting FastFire items)
for (int i = 1; i <= 9; i++) {
jjWeapons[i].allowed = false;
jjWeapons[i].allowedPowerup = false;
FastFiredUp.ammo[i] = 0;
FastFiredUp.powerup[i] = true;
}
}
const int KEY_SPACE = 32; // universal SPACE key
bool spacePrev = false; // track previous state
const int KEY_ALT = 18; // ALT key
bool altPrev = false; // track previous ALT press
void onMain(){
jjPLAYER@ p = jjLocalPlayers[0];
if (p is null) return;
bool spaceNow = jjKey[KEY_SPACE]; // current SPACE key state
// detect key press (not hold)
if (spaceNow && !spacePrev)
{
// Cycle characters: Jazz -> Spaz -> Lori -> Jazz
if (p.charCurr == CHAR::JAZZ)
{
p.morphTo(CHAR::SPAZ);
p.charOrig = CHAR::SPAZ;
}
else if (p.charCurr == CHAR::SPAZ)
{
p.morphTo(CHAR::LORI);
p.charOrig = CHAR::LORI;
}
else if (p.charCurr == CHAR::LORI)
{
p.morphTo(CHAR::JAZZ);
p.charOrig = CHAR::JAZZ;
}
}
// store current SPACE state for next frame
spacePrev = spaceNow;
for (int i = 0; i < jjLocalPlayerCount; ++i) {
jjPLAYER@ p = jjLocalPlayers[i];
int screenX = int(p.cameraX) + 57;
int screenY = int(p.cameraY);
// set vertical placement line 1
int line1Y = screenY + 150; // adjust this for the first line
jjDrawString(screenX + 0, line1Y,
" !!!If you touch this sleeping Uterus you'll fight again!!!",
STRING::SMALL, STRING::NORMAL, 6, p.localPlayerID);
// set vertical placement line 2
int line2Y = screenY + 180; // adjust this for the second line
jjDrawString(screenX + 0, line2Y,
" -Press SPACE to switch character-",
STRING::SMALL, STRING::NORMAL, 6, p.localPlayerID);
// set vertical placement line 3
int line3Y = screenY + 270; // adjust this for the third line
jjDrawString(screenX + 20, line3Y,
" (Or go down there to exit)",
STRING::SMALL, STRING::NORMAL, 6, p.localPlayerID);
// set vertical placement line 4
int line4Y = screenY + 440; // adjust this for the third line
jjDrawString(screenX + 5, line4Y,
" BPM now: 125 (Original)",
STRING::SMALL, STRING::NORMAL, 6, p.localPlayerID);
}
// --- Detect ALT press (not hold) ---
bool altNow = jjKey[KEY_ALT];
if (altNow && !altPrev)
{
// --- Cycle difficulty ---
if (jjDifficulty == 0) // Easy → Normal
jjDifficulty = 1;
else if (jjDifficulty == 1) // Normal → Hard
jjDifficulty = 2;
else if (jjDifficulty == 2) // Normal → Hard
jjDifficulty = 3;
else // Hard → Easy
jjDifficulty = 0;
}
altPrev = altNow; // store for next frame
// --- Display current difficulty ---
string diffText = "";
int screenX = int(p.cameraX) + 50;
int screenY = int(p.cameraY) + 50;
if (jjDifficulty == 0)
{
jjDrawString(screenX, screenY, "Difficulty: Easy (BPM: 135)", STRING::MEDIUM, STRING::NORMAL, 0, p.localPlayerID);
jjDrawString(screenX, screenY + 25, "You'll get a faster fire-rate and carrots (Press ALT to change)", STRING::SMALL, STRING::NORMAL, 0, p.localPlayerID);
}
else if (jjDifficulty == 1)
{
jjDrawString(screenX, screenY, "Difficulty: Normal (BPM: 145)", STRING::MEDIUM, STRING::NORMAL, 0, p.localPlayerID);
jjDrawString(screenX, screenY + 25, "(Press ALT to change)", STRING::SMALL, STRING::NORMAL, 0, p.localPlayerID);
}
else if (jjDifficulty == 2)
{
jjDrawString(screenX, screenY, "Difficulty: Hard (BPM: 155)", STRING::MEDIUM, STRING::NORMAL, 0, p.localPlayerID);
jjDrawString(screenX, screenY + 25, "More Spikeballs (Press ALT to change)", STRING::SMALL, STRING::NORMAL, 0, p.localPlayerID);
}
else if (jjDifficulty == 3)
{
jjDrawString(screenX, screenY, "Difficulty: Turbo (BPM: 165)", STRING::MEDIUM, STRING::NORMAL, 0, p.localPlayerID);
jjDrawString(screenX, screenY + 25, "More Spikeballs, less health (Press ALT to change)", STRING::SMALL, STRING::NORMAL, 0, p.localPlayerID);
}
jjDrawString(screenX, screenY, diffText, STRING::MEDIUM, STRING::NORMAL, 0, p.localPlayerID);
}
void onLevelLoad() {
/* jjObjectPresets[OBJECT::UTERUS].behavior = Fundus; */
jjObjectPresets[OBJECT::UTERUS].energy = 127;
// Optional: spikeball or attack tweaks
jjObjectPresets[OBJECT::UTERUSSPIKEBALL].energy = 20;
}
void onFunction101()
{
jjNxt("Tropical Turmoil.j2l", true, true);
}
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.