Downloads containing j2vfpinball25.j2as

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Pinball Duel 2k25 Slaz Capture the flag N/A Download file

File preview

const bool MLLESetupSuccessful = MLLE::Setup(array<MLLEWeaponApply@> = {null, null, NapsWeapons::AntiGravityBouncer(), null, null, null, null, null, null}); ///@MLLE-Generated
#include "MLLE-Include-1.8w.asc" ///@MLLE-Generated
#pragma require "j2vfpinball25-MLLE-Data-1.j2l" ///@MLLE-Generated
#pragma require "CandyGothDecs.j2t" ///@MLLE-Generated
#pragma require "dk_htech.j2t" ///@MLLE-Generated
#pragma require "j2vfpinball25.j2l" ///@MLLE-Generated
#include "AntiGravBouncers.asc" ///@MLLE-Generated
#pragma require "AntiGravBouncers.asc" ///@MLLE-Generated

void onLevelLoad() {
	jjDelayGeneratedCrateOrigins = true;
	jjUseLayer8Speeds = true;
	jjObjectPresets[OBJECT::PULSELIGHT].behavior = ParticleEmitter();
}

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

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

void onLevelBegin() {
	MLLE::SpawnOffgrids();
	for (int i = 1; i < 255; i++) {
		jjOBJ@ preset = jjObjectPresets[i];
		if (preset.playerHandling == HANDLING::PICKUP) {
			preset.behavior = CannotBeShotDown(preset.behavior);
		}
	}
}

class CannotBeShotDown : jjBEHAVIORINTERFACE {
	CannotBeShotDown(const jjBEHAVIOR &in behavior) {
		originalBehavior = behavior;
	}
	void onBehave(jjOBJ@ obj) {
		obj.behave(originalBehavior);
		if (obj.state == STATE::FLOATFALL)
			obj.state = STATE::FLOAT;
	}
	bool onObjectHit(jjOBJ@ obj, jjOBJ@ bullet, jjPLAYER@ player, int force) {
		if (bullet is null) {
			obj.behavior = originalBehavior;
			if (player.objectHit(obj, force, obj.playerHandling))
				return true;
			obj.behavior = this;
		}
		return false;
	}
	private jjBEHAVIOR originalBehavior;
}

class ParticleEmitter : jjBEHAVIORINTERFACE {
	void onBehave(jjOBJ@ obj) {
		obj.behave(BEHAVIOR::PULSELIGHT);
		obj.determineCurFrame();
		
		obj.counter++;
		
		obj.var[0] = jjRandom()%300;
		
		if (obj.counter % (300 + obj.var[0]) == 0) {
			jjOBJ@ shock = jjObjects[jjAddObject(OBJECT::LIGHTNINGSHIELDBULLET, obj.xPos, obj.yPos, obj.objectID, CREATOR::OBJECT)];
			shock.counterEnd = 1;
			shock.freeze = 180;
			shock.state = STATE::FLY;
			shock.playerHandling = HANDLING::PARTICLE;
			shock.lightType = LIGHT::BRIGHT;
			shock.light = 8;
			shock.xSpeed = shock.ySpeed = 0;
		}
	}
}