Downloads containing mo4a_2-2.j2as

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Mystery of the Four... chandie Single player 6.6 Download file

File preview

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);
}