Downloads containing bllib.j2as

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Blood LibelFeatured Download Violet CLM Battle 8.5 Download file

File preview

const bool MLLESetupSuccessful = MLLE::Setup(array<MLLEWeaponApply@> = {null, DuoBouncers::Weapon(), null, null, null, SuperToaster::Weapon(), SpikeBomb::Weapon(), null, null}); ///@MLLE-Generated
#include "MLLE-Include-1.6w.asc" ///@MLLE-Generated
#pragma require "Diam1.j2t" ///@MLLE-Generated
#pragma require "Death Metal.j2t" ///@MLLE-Generated
#pragma require "bllib.j2l" ///@MLLE-Generated
#include "SpikeBomb.asc" ///@MLLE-Generated
#pragma require "SpikeBomb.asc" ///@MLLE-Generated
#include "SuperToaster.asc" ///@MLLE-Generated
#pragma require "SuperToaster.asc" ///@MLLE-Generated
#include "DuoBouncers.asc" ///@MLLE-Generated
#pragma require "DuoBouncers.asc" ///@MLLE-Generated
///@SaveAndRunArgs -server -spaz ///@MLLE-Generated

bool onDrawAmmo(jjPLAYER@ player, jjCANVAS@ canvas) {
	return MLLE::WeaponHook.drawAmmo(player, canvas);
}

void onLevelLoad() {
	jjObjectPresets[OBJECT::FULLENERGY].behavior = CannotBeShotDown(BEHAVIOR::PICKUP);
	for (int i = WEAPON::BOUNCER; i <= WEAPON::GUN9; ++i) {
		jjOBJ@ preset = jjObjectPresets[se::getAmmoPickupOfWeapon(i)];
		preset.behavior = CannotBeShotDown(preset.behavior);
	}
	
	for (uint i = 1; i < 255; ++i)
		jjObjectPresets[i].triggersTNT = false;
	//jjObjectPresets[OBJECT::STOMPSCENERY].isBlastable = false;
		
	jjObjectPresets[OBJECT::SONICPLATFORM].bulletHandling = HANDLING::IGNOREBULLET;
	
	array<uint8> recolor(256);
	for (uint i = 40; i < 48; ++i)
		recolor[i] = i - 16;
		
	jjANIMATION@ flame = jjAnimations[jjObjectPresets[OBJECT::TOASTERBULLET].curAnim];
	for (uint i = 0; i < flame.frameCount; ++i)
		jjPIXELMAP(jjAnimFrames[flame + i]).recolor(recolor).save(jjAnimFrames[flame + i]);
}

class CannotBeShotDown : jjBEHAVIORINTERFACE {
	jjBEHAVIOR pickup;
	CannotBeShotDown(jjBEHAVIOR original) { pickup = original; }
	void onBehave(jjOBJ@ obj) {
		obj.behave(pickup);
		obj.scriptedCollisions = false;
		if (obj.state == STATE::FLOATFALL) obj.state = STATE::FLOAT;
	}
}

void onLevelBegin() {
	MLLE::SpawnOffgrids();
}

void onLevelReload() {
	MLLE::ReapplyPalette();
	MLLE::SpawnOffgridsLocal();
}

void onFunction0(jjPLAYER@ player, bool invisible) {
	player.spriteMode = invisible ? SPRITE::INVISIBLE : SPRITE::PLAYER;
}

void onPlayer(jjPLAYER@ player) {
	if (player.health <= 0)
		player.spriteMode = SPRITE::PLAYER;
}

void onMain() {
	for (int i = 0; i < 1024; ++i) {
		jjPARTICLE@ cinder = jjParticles[i];
		if (cinder.type == PARTICLE::FIRE && cinder.fire.color == 40) {
			cinder.fire.color = 24;
			cinder.fire.colorStop = 32;
		}
	}
}

void onFunction1(jjPLAYER@ player) {
	if (player.fly == FLIGHT::NONE) {
		player.showText(1, 0);
		jjEnabledASFunctions[1] = false; //vanish
	}
}