Name | Author | Game Mode | Rating | |||||
---|---|---|---|---|---|---|---|---|
Anniversary Bash 26 Battle | Jazz2Online | Battle | N/A | |||||
Knapweed Bog | Lark | Battle | 8 | |||||
Anniversary Bash 25 Battle | Jazz2Online | Battle | N/A | |||||
Anniversary Bash 25 CTF | Jazz2Online | Capture the flag | N/A | |||||
Winterfrost Mountains | Dragusela | Battle | N/A | |||||
Anniversary Bash 23 levels | Jazz2Online | Multiple | N/A | |||||
violetclm DOM Episodes I... | Violet CLM | Custom / Concept | 9 | |||||
Frosted Peaks | PurpleJazz | Capture the flag | 9.1 | |||||
Anniversary Bash 22 levels | Jazz2Online | Multiple | N/A | |||||
Tech Tree | Violet CLM | Capture the flag | 7.8 | |||||
Custom Weapons... | Violet CLM | Other | 10 |
#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);
}
}
}
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.