Downloads containing weaponVMega3.asc

Downloads
Name Author Game Mode Rating
JJ2+ Only: Anniversary Bash 25 Battle Jazz2Online Battle N/A Download file
JJ2+ Only: Anniversary Bash 25 CTF Jazz2Online Capture the flag N/A Download file
TSF with JJ2+ Only: Winterfrost Mountains Dragusela Battle N/A Download file
TSF with JJ2+ Only: Anniversary Bash 23 levels Jazz2Online Multiple N/A Download file
JJ2+ Only: violetclm DOM Episodes I...Featured Download Violet CLM Custom / Concept 9 Download file
TSF with JJ2+ Only: Frosted PeaksFeatured Download PurpleJazz Capture the flag 9.1 Download file
TSF with JJ2+ Only: Anniversary Bash 22 levels Jazz2Online Multiple N/A Download file
JJ2+ Only: Tech Tree Violet CLM Capture the flag 7.8 Download file
Custom Weapons...Featured Download Violet CLM Other 10 Download file

File preview

#pragma require "weaponVMega3.asc"
#include "MLLE-Weapons.asc"
#pragma require "weaponVMega.j2a"

namespace WeaponVMega {
	namespace IceCloud {
		class Weapon : MLLEWeapons::WeaponInterface {
			Weapon() {
				super(
					regularObjectTemplate: MLLEWeapons::ObjectTemplate(
						xSpeed: 1,//6,
						xAcc: 0.125,
						killAnim: jjAnimSets[ANIM::AMMO].firstAnim + 80,
						counterEnd: 120,
						freeze: 200,
						animSpeed: 2
					),
					powerupObjectTemplate: MLLEWeapons::ObjectTemplate(
						xSpeed: 1,//7,
						xAcc: 0.1875,
						killAnim: jjAnimSets[ANIM::AMMO].firstAnim + 80,
						counterEnd: 200,
						freeze: 254,
						animSpeed: 2
					),
					animSetFilename: "weaponVMega.j2a",
					animSetID: 2,
					pickupAnimation: 3,
					poweredUpPickupAnimation: 4,
					pickupFrameIDToUseForAmmoCrate: 2,
					style: WEAPON::POPCORN,
					spread: SPREAD::TOASTER,
					multiplier: 5,
					gradualAim: true,
					traits: se::weapon_is_effective_against_all_targets | se::weapon_supports_mouse_aim | se::weapon_works_in_all_modes | se::weapon_has_all_pickups | se::weapon_inflicts_status_condition | se::weapon_freezes_objects,
					poweredUpTraits: se::weapon_is_effective_against_all_targets | se::weapon_supports_mouse_aim | se::weapon_works_in_all_modes | se::weapon_has_all_pickups | se::weapon_inflicts_status_condition | se::weapon_freezes_objects | se::weapon_deals_damage,
					behavior: function(obj, powerup) { obj.behavior = Behavior; }
				);
			}
			uint getMaxDamage(bool powerup) const override { return powerup ? 2 : 0; }
		}
		
		void Behavior(jjOBJ@ obj) {
			if (obj.state == STATE::START) {
				obj.xSpeed += obj.var[7] / 65536.f;
				if (obj.creatorType == CREATOR::PLAYER)
					obj.ySpeed += int(jjPlayers[obj.creatorID].ySpeed) / 2;
				obj.state = STATE::FLY;
			}
			obj.xPos += obj.xSpeed *= 0.96;
			obj.yPos += obj.ySpeed *= 0.96;
			if (obj.frameID < 3 && ++obj.age & 15 == 15) {
				++obj.frameID; ++obj.curFrame;
			}
			const bool isPowerup = MLLEWeapons::HelpfulBulletFunctions::IsPowerup(obj);
			if (--obj.counterEnd == 0 || obj.state == STATE::EXPLODE) {
				array<float>@ target;
				if (isPowerup && (@target = MLLEWeapons::HelpfulBulletFunctions::GetNearestEnemyPosition(obj, 256)) !is null) {
					obj.frameID = 0;
					obj.killAnim = (obj.curAnim += 1) + 1;
					obj.counterEnd = 100;
					obj.freeze = 0;
					obj.xSpeed = (target[0] - obj.xPos) / 25;
					obj.ySpeed = (target[1] - obj.yPos) / 25;
					obj.xAcc = obj.yAcc = obj.var[7] = 0;
					obj.behavior = BEHAVIOR::BULLET;
					if (obj.playerHandling == HANDLING::SPECIAL) obj.playerHandling = HANDLING::ENEMYBULLET;
				} else {
					obj.counter = 0;
					obj.frameID = 0;
					obj.curAnim += 2;
					obj.behavior = BEHAVIOR::EXPLOSION;
				}
				jjSample(obj.xPos, obj.yPos, SOUND::COMMON_ICECRUSH);
			} else if (jjGameTicks & 1 == 0) {
				jjPARTICLE@ part = jjAddParticle(PARTICLE::ICETRAIL);
				if (part !is null) {
					part.yPos = obj.yPos;
					part.xPos = obj.xPos + (jjRandom() & 31) - 15;
				}
			}
			jjDrawSpriteFromCurFrame(obj.xPos, obj.yPos, obj.curFrame, 1, SPRITE::TRANSLUCENT);
			if (obj.frameID == 3 && isPowerup)
				jjDrawSpriteFromCurFrame(obj.xPos, obj.yPos, jjAnimations[obj.curAnim + 1], 0, SPRITE::TRANSLUCENTCOLOR, 15);
		}
	}
}