================================================================================================== SECTION 2: Byte 4: Behavior: ================================================================================================== This governs the 'intelligence' of the event, how it behaves and moves in-level. This is the most complex byte as everything is hard-coded and there are literally dozens of behaviors to choose from. because this si so complex, this section is divided into sub-sections, each detailling a different behavior (Byte value) and the other bytes associated with it. +-----------------------------------------------+ | Value 0: Face Jazz | +-----------------------------------------------+ The event doesn't move or do anything but sit there, this is used for items and such that don't really do anything but wait for Jazz to get them. By 'face Jazz' we mean that it uses its left animation when Jazz is right of it, and its right animation when Jazz is left of it. (It faces him, duh) BYTE: USE: Left Anim Animation used when Jazz is right of event Right Anim Animation used when Jazz is left of event +-----------------------------------------------+ | Value 1: Fall | +-----------------------------------------------+ The event will fall down when onscreen, 'ghosting' through any solid tiles it finds. Events will fall again if Jazz goes away then comes back. BYTE: USE: NONE +-----------------------------------------------+ | Value 2: Walk back and forth | +-----------------------------------------------+ The event will walk back and forth, turning every time it hits a wall or runs out of ground to walk on. The turtles in Diamondus use this behavior. BYTE: USE: Speed Walking speed +-----------------------------------------------+ | Value 3: Dive at Jazz | +-----------------------------------------------+ The event will make random diving motions toward Jazz, hoping to hit him. It will 'ghost' through any solid tiles and can attack from any direction, much like the Bees in Jazz 2 BYTE: USE: NONE +-----------------------------------------------+ | Value 4: Walk down slopes | +-----------------------------------------------+ Event behaves live (2) but instead of turning when it runs out of flat ground, will fall. This means it can walk down slopes as well. BYTE: USE: NONE +-----------------------------------------------+ | Value 5: Sit 1 | +-----------------------------------------------+ Event sits, doing nothing BYTE: USE: NONE +-----------------------------------------------+ | Value 6: Move special | +-----------------------------------------------+ The event will use the instructions in the special behavior segment of the level to move. Often this is a rather unimpressive back and forth, but a remarkable variety is avalible. Many of the more slowly and erractically moving things use this, such as the Bees in Diamondus. BYTE: USE: Vary 1 Behavior to use (0-15) +-----------------------------------------------+ | Value 7: Flying snake | +-----------------------------------------------+ The event will form a snake as is seen in Marblaria, Sluggion or Orbitus. BYTE: USE: Anim left Head sprite when moving left Anim right Head sprite when moving right Bridge length Tail sprite Chain length Body sprite Strength Event strength PER SEGMENT Vary 1 Movement; 1 = slow l\r; 2 = fast l\r; 2+ = wacky patterns Vary 2 Snake legnth (Including head, but not tail) Chain direction Seperation between segments in 1\4 tiles +-----------------------------------------------+ | Value 8: Hiphop | +-----------------------------------------------+ Event acts like Jazz's companion bird. This event often crashes levels, you are not reccomended to use it. BYTE: USE: Vary 1 Behavior to use (0-15) +-----------------------------------------------+ | Value 9,10: Sit 2,3 | +-----------------------------------------------+ Event sits, doing nothing BYTE: USE: NONE +-----------------------------------------------+ | Value 11: Fall to ground | +-----------------------------------------------+ The event will fall down when onscreen until it hits the ground, then it will sit there. Events will fall again if Jazz goes away then comes back. BYTE: USE: NONE +-----------------------------------------------+ | Value 12: Float l\r | +-----------------------------------------------+ Much like walking, the event will float back and forth, turining when it hits a wall. BYTE: USE: NONE +-----------------------------------------------+ | Value 13: Float u\d | +-----------------------------------------------+ Identical to (12) except the event floats up and down, turning when it hits a floor or ceiling. BYTE: USE: NONE +-----------------------------------------------+ | Value 14: Slide l\r | +-----------------------------------------------+ The event will slide l\r at high speed, like a moving platform. BYTE: USE: NONE +-----------------------------------------------+ | Value 15: Float to meet Jazz | +-----------------------------------------------+ Event will move up\down until it is at the same height as Jazz. BYTE: USE: NONE +-----------------------------------------------+ | Value 16: Missile | +-----------------------------------------------+ The event will move left or right 'ghosting' through any tiles it encounters until it moves offscreen. If Jazz goes away then comes back, it will reappear. Used for missiles a lot. BYTE: USE: MAGNITUDE Direction, 255 = left, 1 = right +-----------------------------------------------+ | Value 17-20: Sit 4-7 | +-----------------------------------------------+ Event sits, doing nothing BYTE: USE: NONE +-----------------------------------------------+ | Value 21: Replace tile | +-----------------------------------------------+ Also known as shootable scenery or destructable block, this actually replaces on tile with another. This even can have no animation or speed, it just sits there. Any tile replaced will have the black background on it, until it is offscreen, this looks odd with transparent tiles (See the windows in Technoir) A maximum of 48 of this event can be used, and no more than abut 20 should be tried, otherwise you'll trigger the 'tilespam' error, where all tile #0 are replaced. BYTE: USE: Vary 1 Replacement tile +-----------------------------------------------+ | Value 22: Random drop | +-----------------------------------------------+ Also known as snowflake or drift, the event will spawn and slowly fall to the ground and sit for a while, then vanish, then reappear and fall again. Useful for making rain or snow, kinda. BYTE: USE: NONE +-----------------------------------------------+ | Value 23: Flip tiles when touched | +-----------------------------------------------+ When used for event 123 ONLY, will flip between two tiles OVER A SPRITE, that is, the event will be invisible until a sprite moves across it. The tiles will be foregrounded. This is used for example, in Diamondus where it lets waterfalls be in 'front' of Jazz. BYTE: USE: Vary 1 Tile 1 Vary 2 Tile 2 +-----------------------------------------------+ | Value 24: Crawl float | +-----------------------------------------------+ A lot like the walk down slopes behavior, this event can float, moving gently down while still crawling, as if it were some sort of helium baloon. BYTE: USE: NONE +-----------------------------------------------+ | Value 25: Float Jazz | +-----------------------------------------------+ When Jazz touches this event he will be gently and smoothly pulled in some direction, u,d,l,r. This is opposed to sucker tubes, which give him a sharp 'push' This is used for things like giant magnets in Letni. BYTE: USE: Vary 1 Strength, 0-127 = positive (d,r) 128-255 = -ve (u,l) Vary 2 Direction, 0 = l\r 1 = u\d +-----------------------------------------------+ | Value 26: Flip animation | +-----------------------------------------------+ Event sits still (No movement) and simply changes its animation when Jazz touches it. Still poorly understood. BYTE: USE: NONE +-----------------------------------------------+ | Value 27: Float on water | +-----------------------------------------------+ This event will face Jazz and float on the surface of any water IF that water is higher than its start position, otherwise it will just sit where it is put. BYTE: USE: NONE +-----------------------------------------------+ | Value 28: Bridge | +-----------------------------------------------+ Self explainitory really. Consists of 16 sprites in a flexible line BYTE: USE: Magnitude This should be value 255 Vary 1 This should be value 20 Vary 2 Elasticity (How much bridge sinks with Jazz on it) Bridge length Length of bridge in half tiles +-----------------------------------------------+ | Value 29: Pezrock ball | +-----------------------------------------------+ Event consists of a nub, chain and ball that spin 360 degrees around and around. This event uses SPRITES, NOT animation sequences! BYTE: USE: Left anim Ball sprite Vary 1 Nub sprite Vary 2 Chain links sprite Magnitude Speed AND direction, less than 128, clockwise, greater, anticlockwise Bridge length Number of chain links Chain length Seperation between chain lengths in 1\8 tiles +-----------------------------------------------+ | Value 30: Medivo ball | +-----------------------------------------------+ Similar to (29) except the event moves only between the 9:00 and 3:00 positions. Again this event uses sprites, not animations! BYTE: USE: Left anim Ball sprite Vary 1 Nub sprite Vary 2 Chain links sprite Magnitude Speed AND direction like (29), this seems to be ignored Bridge length Number of chain links Chain length Seperation between chain lengths in 1\8 tiles Chain direction Start position; 1.4x + 90 = start position in degrees; thus 64 = straight down +-----------------------------------------------+ | Value 31: Slide l\r 2 | +-----------------------------------------------+ Like (14) but controllable, used for some moving platforms. BYTE: USE: Vary 1 l\r distance in tiles Bridge length Speed +-----------------------------------------------+ | Value 32: Slide l\r 3 | +-----------------------------------------------+ Almost identical to (31) but less controlable BYTE: USE: NONE +-----------------------------------------------+ | Value 33: Stalker ghost | +-----------------------------------------------+ Like the Mario ghost, this event will move to meet Jazz whenever he is not facing it, but it cannot actually even touch him by itself. BYTE: USE: NONE +-----------------------------------------------+ | Value 34: Bounce | +-----------------------------------------------+ The event will sit where it's placed for a time (That can be no time at all) then bounce upward making a noise, before falling back again. There have been erros associated with this event in the past. BYTE: USE: Vary 1 Bounce height Vary 2 Time to wait between bounces +-----------------------------------------------+ | Value 35: Stalker walker | +-----------------------------------------------+ The event will walk towards Jazz if there is ground under it, but always try and stay 1 tile away from him. It does not fall off edges or go down slopes. BYTE: USE: NONE +-----------------------------------------------+ | Value 36: Stalker crawler | +-----------------------------------------------+ Identical to (35) but can walk down slopes and fall off edges. BYTE: USE: NONE +-----------------------------------------------+ | Value 37: Repel Jazz foreground | +-----------------------------------------------+ Identical to (38) but makes any tile it's on foreground. BYTE: USE: NONE +-----------------------------------------------+ | Value 38: Repel Jazz | +-----------------------------------------------+ Also know as sucker tubes or spring. Much like (25), except that it gives a sudden push, not a smooth tug, this is used for sucker tubes and springs. BYTE: USE: Vary 1 Strength, 0-127 = positive (d,r) 128-255 = -ve (u,l) Vary 2 Direction, 0 = l\r 1 = u\d +-----------------------------------------------+ | Value 39: Fall on Jazz | +-----------------------------------------------+ Also known as the sword of Damacles or unstable platform, when Jazz is either above or below it, this event will pause for a bit then fall to the floor. Used mostly for unstable platforms, it can also make an enemy that drops from the ceiling. BYTE: USE: Vary 1 Wait time before dropping +-----------------------------------------------+ | Value 40: Monochrome | +-----------------------------------------------+ Known by Epic as X-ray, when anything touches this, it turns monochrome. (Palette swap) BYTE: USE: NONE +-----------------------------------------------+ | Value 41: Devan Ship | +-----------------------------------------------+ Event acts like Devan's ship in the first episode, switching its left and right animations regularly and moving u\d AND l\r may gains the power to drill when shot enough. Note that this is also used for some l\r platforms due to lazyness. BYTE: USE: Vary 1 l\r movement amount Vary 2 u\d movement amount +-----------------------------------------------+ | Value 42: Reflect red | +-----------------------------------------------+ Possibly this actually did something else once, noe this reflects a red image of any sprites standing a tile above it, as seen in Technoir. The tile it is on should not be transparent. BYTE: USE: Reflect Value must be 63 +-----------------------------------------------+ | Value 43: Reflect green | +-----------------------------------------------+ Identical to (42) but is green instead. BYTE: USE: Reflect Value must be 63 +-----------------------------------------------+ | Value 44: Ostrich boss | +-----------------------------------------------+ Hard coded ostrich boss behavior. The boss must be placed in the air in the middle of its 20x3 tile arena, and works as follows: 1.) Leap left 10 and down 3 tiles. This puts it at the bottom left of the arena. Never do this again. 2.) Leap right 10 and up 3, then right 10 and down 3 tiles (A rainbow kinda path) This puts it at the bottom right of its arena. 3.) Leap left, 10,3, 10,3; that is, reverse the previous step to be back at the bl of the arena. 4.) Move 4 tiles right and stay still for a period of 100. If we're on hard or turbo AND event has an attack, attack now for a period of 100 5.) Move left 4 tiles, face Jazz and stay still for a period of 100 THEN attack (If event has an attack) for a period of 100. 6.) Move left 12 tiles rapidly. This puts event at the br of the arena 7.) Repeat step 3, then step 2 then step 3 again, leaving the event at the bl of the arena. 8.) Go to step 4 +-----------------------------------------------+ | Value 45: Translucent | +-----------------------------------------------+ When Jazz touches this event the tile it is on becomes foreground except for colors 128-143 which will change Jazz's colors to match theirs. (Kinda like MONOCHROME Jazz, except this can be any color) (Color 127 is transparent of course, like foreground with transparency) BYTE: USE: NONE +-----------------------------------------------+ | Value 46: Big bunny boss | +-----------------------------------------------+ Hard coded big bunny boss; event must be placed right of Jazz and given a reasonably sized, but alterable arena. It works as follows: 1.) Head left, attacking (If event has an attack) until 6 tiles from the levels left edge. 2.) Jump up and left 5 tiles then fall until event hits ground, using animation 12. There will be a shake on impact. Note that only the first two frames of 12 will be used, the first when falling, the second when jumping 3.) Face Jazz and attack for a period of 200 4.) Jump left 5 tiles, falling if event has to using animation 13. (The same animation rule as in 2.) applies.) 5.) Pull Jazz towards event and attack him for a period of 400 6.) Move right attacking until you hit a wall, then goto step 1 +-----------------------------------------------+ | Value 47: Crawl through wall | +-----------------------------------------------+ Similar to (16), this event will slowly float across to the ground, then crawl along it. It will pass through any walls it encounters. It uses its l or r animation when moving across flast ground, and its attacking l or r animaton when moving down slopes. Unlike most events, it will not respawn when Jazz goes away. Its speed cannot be altered either. BYTE: USE: NONE +-----------------------------------------------+ | Value 48: Owl boss | +-----------------------------------------------+ Hard coded owl boss event. The behavior is somewhat flexible and works as follows: 1.) Sit for a period of 400 (About 4 seconds) 2.) Move until above or below Jazz and drop event #3. While moving toward Jazz the attack sprite is carried under (This is the owl's egg.) 3.) After steps 1-2 have been repeated 5 times, start moving back and forth. The event will move through any blocking tiles up to 2 tiles away from the left of the level, and will not move past where it was originally spawned. BYTE: USE: NONE +-----------------------------------------------+ | Value 49: Devan Tank Boss | +-----------------------------------------------+ Hard coded Devan tank boss behavior as follows: 1.) FLOAT, don't walk, back and forth, turning when walls are encountered. 2.) When attacking, start with the usual enemy attack. This attack should be above #3, otherwise it will only happen ONCE. 3.) The next attack is attack #7, when THIS attack is used the FRAME (Not animation!) stored in bridge length\chain length will appear FOLLOWED by the usual attack animation. 4.) Repeat, this allows the boss to have two different attacks while moving about. BYTE: USE: Bridge length Attack 2 l special animation frame Chain length Attack 2 r special animation frame +-----------------------------------------------+ | Value 50: Tank boss boulder | +-----------------------------------------------+ Event moves in an arc and destroys itself on the ground, making the ground shake. This is used by the boulders in the tank boss and is best used as something another event shoots. BYTE: USE: Strength Number of times event will bounce on FLAT GROUND before destruction +-----------------------------------------------+ | Value 51: Bird boss egg | +-----------------------------------------------+ The egg and later small owl of Jazz's bird boss. Behavior as follows: 1.) Fall to the ground making it shake. The event doesn't animate, using the first frame only from its normal animation 2.) Sit for about 4 seconds using frame 2 then 3 of its sequence (The egg hatching.) 3.) Hatch in an explosion of 6 fragments, each one a different frame of the animation specified in Vary 1 These fragments will disappear in 2 seconds. 4.) Event now uses Vary 1's value +1 and 2 for moving l\r (This is the little owl) 5.) Event seeks the nearest event with the Owl boss property and orbit it endlessly. If the event dies, they will orbit empty space, if there is no event onscreen it will rise up four tiles and vanish. BYTE: USE: Vary 1 Sprite used for egg fragments, + 1 owl moving left, +2 owl moving right +-----------------------------------------------+ | Value 52: Lizard boss | +-----------------------------------------------+ The hard coded lizard boss behavior. Requires an arena of 10x5 tiles to move. Event should be placed in the center of its arena. This event FLOATS, it does not walk and will 'ghost' through any solid tiles it encounters at ALL TIMES. The event can be made to attack, but this is not harcoded Behavior as follows: 1.) Jump toward Jazz, 5 tiles up and across in an arc. When it finnishes its jump, the screen will shake, even if it 'lands' in the air. When starting and ending a jump the animations 126 and 127 are used respectively. 2.) Float 5 tiles in the opposite direction at speed, if Jazz dodged the jump, then this'll get him. I repeat, ground is not needed and the event will ghost through any solid tiles. 3.) Repeat 1 and 2, if Jazz moves away the event can chase him, but only for 5 tiles. (It can't leave its 10x5 arena.) +-----------------------------------------------+ | Value 53: Dreemppe turtle | +-----------------------------------------------+ Event will sit still animating until the water level rises 1 tile above it, then it will walk along the ground using its normal animations. BYTE: USE: Vary 1 'Sleeping' animation, used out of water +-----------------------------------------------+ | Value 54: Sink 2 | +-----------------------------------------------+ Event sinks to ground and disappears. May have hidden effects. BYTE: USE: NONE +-----------------------------------------------+ | Value 55: Sit 8 | +-----------------------------------------------+ Event sits, doing nothing BYTE: USE: NONE +-----------------------------------------------+ | Value 56: Push Jazz oddly | +-----------------------------------------------+ When the event appers onscreen, Jazz gets bounced up, WHEREVER he is. When he touches the event he's pushed down. Similar to (25) BYTE: USE: NONE +-----------------------------------------------+ | Value 57: Bubble generator | +-----------------------------------------------+ Event shoots a randomish number of attacks instead of just one, WHEN the water level is above it. The spacing between shots deends on two things, the attack animation length and animation speed. (The attack animation must play once per attack spawned.) BYTE: USE: Vary 1 Number of shots to spawn each time (Randomized slightly.) +-----------------------------------------------+ | Value 58: Bubble | +-----------------------------------------------+ Event will appear IF underwater and rise at a steady speed given by movement speed, until it reaches the water top, where it will vanish. This happens only once, the event is destroyed. BYTE: USE: NONE +-----------------------------------------------+ | Value 59: Zoonik | +-----------------------------------------------+ Hard coded Zoonik boss event. Variable behavior but needs an arena near the level edge. It will also probbably need an enemy attck (But not attack speed.) It FLOATS, it doesn't walk, and will 'ghost' through any walls in its way. The event uses hard-coded animations, it ignores all given to it. Walking l\r are animations 1,2; shoot l\r are 5,6; teleport away and back are 3,4; additional problems will occur if the animations do not have the required lengths. Event behaves as follows: 1.) Face left and attack 4 times. 2.) Run left until 2 tiles from the level's left edge. 3.) Face right and attack 4 times. 4.) Teleport back to starting position. Face left and attack 4 times. 5.) Teleport to 2 tiles from level edge, face right and attack 4 times. 6.) Run left back to starting position and repeat cycle all over. +-----------------------------------------------+ | Value 60: Deckstar boss | +-----------------------------------------------+ Another hard-coded boss behavior, this one doesn't require an arena, but does require a careful setup. Firstly, if it has strength, it ALWAYS has a boss bar. Secondly, no matter where it is in the level, it will always center around the SAME LOCATION, 18,5 in the level. Sprites used are hard coded, as well as their positions. The event ignorees any sprites it's given. Devan is located at 19,4 and uses animation 4, Devan shocked is FRAME 240 Devan running uses animation 6 Eva and guard are located at 17,4 and use sprite 2 normally, sprite 1 during explosion and animation 5 when running away. The machine uses animations 29,31,30 for the left, middle and right parts of the machine Jazz must shoot. (These are located at 16,7; 17,7 and 18,7 respectively.) The shutter uses animation 3 and is located at 20,5 The event will sit, spawning 3 sets of event 116 every 10 or so seconds. (These may look like one since they'll be clustered so close together.) Jazz must shoot 3 different parts of the event; first at 16,7 will appear the left part of the machine, taking 1/3 of the event's health to destroy. Next will come the right part of the machine at 18,7 taking another 1/3 Finally the middle part of the machine at 17,7 takes the last third. Each time Jazz destroys a part, it will fall offscreen and the next shootable part will flash. When the event is destroyed IF it is a boss event, the shutter will vanish, the area from 20,5-22,5 will show explosion animations (Machine blows up) I don't know what triggers the tile replace, but I haven't been able to get it running in normal levels as of yet. +-----------------------------------------------+ | Value 61: Random Jazz seek | +-----------------------------------------------+ This is the 'fly' released by the Deckstar boss, it is not particularly efficient, but is very good at mobbing Jazz. It will ghost through any tiles it encounters, like Sparks. This event will only kill Jazz if he has touched the left border of the level. (Jazz starts here in Deckstar.) BYTE: USE: NONE +-----------------------------------------------+ | Value 62: Lagunicus boss | +-----------------------------------------------+ The final boss Jazz can encounter, this is quite simple, but still hard coded. The event will float on top of any water (If there is no water, it looks rather pitiful 'Enemy rain' as it's known.) The event will use its normal animation with animation 4 2 tiles below (The propellor.) A cloud of animation 2 (Bubbles) will be produced 3 tiles below. The event will also try and surround itself with 3 event 116 The event moves about slightly and tries to suck Jazz underneath it. BYTE: USE: NONE +-----------------------------------------------+ | Value 63: Lagunicus boss mine | +-----------------------------------------------+ The mines used by the boss in lagunicus. This can only be used as event 116 with (62), otherwise it does nothing at all. It will orbit said (62) at varyng distances, protecting it, and if still alive when the boss is destroyed will fall to the ground. BYTE: USE: NONE +-----------------------------------------------+ | Value 64: Sit and face left | +-----------------------------------------------+ Event doesn't move but always faces left. Thus it will always attack left and always show the left animation. May be useful to some. BYTE: USE: NONE +-----------------------------------------------+ | Value 65: Flip animation | +-----------------------------------------------+ Event sits and slowly switches its l and r animations. BYTE: USE: NONE