********** SPRITE COLLISION EFFECTS ********** This section deals simply with small patches that change what happens when sprites collide. For more complex alterations of collision behavior, see the next sections. Each of the five different types of patch found here will be discussed in order. Firstly the 'Don't remove bullet' patches; these are simple patches to stop Keen's bullet zapping when it hits a sprite. (That is, the bullet will stun or kill or whatever, but it will pass right through the sprite.) If you use these it is possible to stun 20 Slugs with a single shot for example. This is useful if you want to change the gameplay a little, a 'reuseable' bullet has numerous possibilities. Also, you may want to make another sprite a stunner (So it stuns any sprites it touches) using patches from 13.) Sprite_Types; in which case you do not want it zapping into nothingness when it hits things. Sadly these patches are not numerous and you may find there are some things you just can't do. Next up are the $xx 'object type' patches; these define what types of object a sprite will collide with; usually Keen or his shot. (To kill Keen or be stunned.) By changing these you can alter the two most important aspects of a sprite, whjether it kills Keen and whether it is stunned by his shots. (For example, setting the 'Keen' value to $00 makes the sprite harmless.) It is important to emphasise that it is KEEN hitting a sprite that kills him, not the sprite hitting Keen. It is thus possible to make Keen die if a Slug is touched by a Lick for example. (Which would REALLY make gameplay interesting.) If you make a sprite unshootable, Keen's shots will pass straight through it, like the 'don't remove bulelt' patches above, but without the sprite stunning. Thirdly there are 'infinite shootability' patches; these work only with some stunnable sprites and mean that when Keen shoots them, a stunned sprite will appear, but the 'old' sprite will keep going. (So shooting a Slug will leave a little trail of stunned slugs behind it.) This may not seem very useful, but by changing the stunned sprite's behavior you can use it to make a sprite spawn other sprites when shot. (Much like how in Keen 6 Blooglets give keys when shot.) A particularlay evil patch is to make a sprite spawn more of itselft when it touches itself. Fourthly are $xx $xx 'condition' patches; these are more complex thatn the previous kinds, but also more flexible. These allow you to change the object type that a sprite looks for (Like the object type patches above.) but more flexibly. By default most sprites use a 'look OLNY for type X' ($75) So for example they will be stunned ONLY by Keen's shot types. These patches allow you to change that so that several object types can affect a sprite. For example, if the Slug is given the $72 patch, for stunning it will be stunned by ALL sprite types the same as or larger than Keen's shot. (All sprite types except Keen will stun it.) This may be a little hard to get used to and should only be used when you have a good idea what you want to do, don't worry, you probbably won't need them. ### #A list of collision effects: ### $06B91DCDRL #Draw sprite, hard to patch $06B91E47RL #Remove enemy shot in air $090B0CD2RL #Push Keen] $090B1242RL #Halt motion $090B11C4RL #? $090B16CDRL #Remove shot $196E09EFRL #? $0AAF1517RL #Kill Keen $0CCB10B3RL #Remove Keen's shot while airborne ### #A list of conditions: ### Sprite will colide with any object with a value that is --- than the $xx value listed in it's other patches. (See 13.) Sprite_Types for sprite types.) Note that some of these conditions can be REVERSED, that is, act the exact opposite to what they should. $72 #If greater or equal to $74 #For everything but this type $77 #If less than or equal to $75 #Only for this type $90 $90 #Always ### #A list of sprite types: ### $00 $00 #Don't appear $01 $00 #Misc $02 $00 #Keen $03 $00 #Keen's shot $04 $00 #Enemy shot $05 $00 #Items $06 $00 #Platform $07 $00 # $08 $00 # $09 $00 #Sparky/Shelley $0A $00 #Mine $0B $00 #Slicestar $0C $00 #Robo Red $0D $00 #Spirogrip $0E $00 #Ampton $0F $00 #Shooting gun $10 $00 #Volte face $11 $00 # $12 $00 #Spindred $13 $00 #Shikadi Master $14 $00 #Shikadi $15 $00 #Shocksund $16 $00 #Sphereful $17 $00 #Korath $18 $00 # $19 $00 #Q.E.D ### #Misc ### #Default 'deadly to Keen' collision used by many sprites: %patch $A859 $02 #React with [Keen] %patch $A85A $90 $90 #Condition %patch $A85D $0AAF1517RL #What to do: [Kill Keen] ### #Enemy shot ### %patch $10FB2 $02 #React with [Keen] %patch $10FB3 $75 #Condition %patch $10FB6 $0AAF1517RL #What to do 1: [Kill Keen] %patch $10FC2 $090B1242RL #What to do 2: [Halt motion] ### #Fuse ### You'll probably want to see SHIKADI MINE. Note that fuses smashing is part of Keen's pogo tile collision code and covered outside of Sprite Patches. ### #Korath ### %patch $13963 $02 #React with [Keen] %patch $13964 $75 #Condition %patch $13974 $090B0CD2RL #What to do 2: [Push Keen] %patch $13981 $03 #React with [Keen's shot] %patch $13982 $75 #Condition %patch $1398B $090B16CDRL #If not, do: [Remove shot] ### #Lil Ampton ### #Yes, Ampton can kill Keen... if he slides down onto him #while Keen is on a pole %patch $11642 $02 #React with [Keen] %patch $11643 $90 $90 #Condition %patch $11648 $22AEW #Kill Keen if doing this (Pole sliding) %patch $11658 $0AAF1517RL #What to do 1: [Kill Keen] %patch $11658 $090B0CD2RL #What to do 2: [Push Keen] %patch $11669 $03 #React with [Keen's shot] %patch $1166A $90 $90 #Condition %patch $1168E $090B16CDRL #What to do: [Remove shot] ### #Q.E.D ### You'll probably want to see SHIKADI MINE ### #Robo Red ### #Red %patch $1265A $03 #React with [Keen's shot] %patch $1265B $75 #Condition %patch $1265F $0CCB10B3RL #What to do 1: [Remove shot in air] %patch $12688 $090B1242RL #What to do 2: [Halt motion] %patch $12695 $02 #React with [Keen] %patch $12696 $75 #Condition %patch $12699 $0AAF1517RL #What to do: [Kill Keen] #Red's shots %patch $1272F $02 #React with [Keen] %patch $12730 $90 $90 #Condition %patch $12733 $0AAF1517RL #What to do: [Kill Keen] ### #Shelley ### #First look for Keen and push him if he's on one side. If he's #not, then skip the next two bits. %patch $11AA9 $02 #React with [Keen] %patch $11AAA $90 $90 #Condition %patch $11AAF $090B0CD2RL #What to do: [Push Keen] #Now check if we're being attacked by something larger or equal to 3 (Keen's shot) #If we are then move on to the next bit. %patch $11AC0 $73 #If attack from above; condition (Larger OR equal to...) %patch $11AC1 $03 #(= 3,4,5...) e.g. if something > 2 is above THEN: #Here react with Keen and enemy shots, remove them and move on. %patch $11AD2 $03 #React with [Keen's shot] %patch $11AD3 $90 $90 #Condition %patch $11AD7 $0CCB10B3RL #What to do: [Remove Keen's shot while airborne] %patch $11AE2 $03 #React with [Enemy shots] %patch $11AE3 $90 $90 #Condition %patch $11AE7 $06B91E47RL #What to do: [Remove enemy shot in air] #Now everything ends up here, Shelley does... something then checks if it's standing #on something. Disable that and Shelley in the air cannot be killed (They WILL make #smoke however.) #Note that it is the smashing Shelley's behavior that spawns the Shelley fragments #and kills Keen. %patch $11AF9 $196E09EFRL #What to do: [?] %patch $11B03 $00 #Tile check (Fall through, i.e air) %patch $11B04 $74 #If IS that then: %patch $11B1B $090B1242 #What to do 1: [Destroy Shelley] %patch $11B26 $06B91DCDRL #What to do 2: [Draw explosion cloud] %patch $11B43 $090B11C4RL #What to do 3: [?] #Shelley will fall when shot, because it will soon hit the ground and explode, so it #LOOKS like it just explodes. It WILL smash however if it hits Keen's head while #falling, which is different. %patch $11B07 $2524W #Shelly fall (If shot or Keened on ground) %patch $11B16 $2506W #Shelly fall (If shot or Keend in air) %patch $11B3F $2542W #Shelly smash (If hits Keen's head while falling) %patch $11A5A $25BAW #Spawn Shelley right fragment %patch $11A8D $25D8W #Spawn Shelley left fragment ### #Shikadi ### #Shikadi strength %patch $12EFA $04 $00 %patch $13050 $02 #React with [Keen] %patch $13051 $75 #Condition %patch $13054 $0AAF1517RL #What to do: [Kill Keen] %patch $1305A $03 #React with [Keen's shot] %patch $1305B $75 #Condition %patch $1119E $090B16CDRL #What to do: [Remove shot] ### #Shikadi Master ### #Master (Note master shoots back at Keen when shot) %patch $12B7F $03 #React with [Keen's shot] %patch $12B80 $75 #Condition %patch $12B84 $0CCB10B3RL #What to do 1: [Remove shot in air] %patch $12BAD $090B1242RL #What to do 2: [Halt motion] %patch $12BBA $02 #React with [Keen] %patch $12BBB $75 #Condition %patch $12BBE $0AAF1517RL #What to do: [Kill Keen] #Master's shots %patch $12DC0 $02 #React with [Keen] %patch $12DC1 $75 #Condition %patch $12DC4 $0AAF1517RL #What to do 1: [Kill Keen] %patch $12DCA $06B91E47RL #What to do 2: [Remove enemy shot in air] %patch $12DD7 $03 #React with [Keen's shot] %patch $12DD8 $75 #Condition %patch $12DDC $0CCB10B3RL #What to do 1: [Remove shot in air] %patch $12DE5 $06B91E47RL #What to do 2: [Remove enemy shot in air] ### #Shikadi Mine and Mine Fragments ### #Mines themselves don't hurt Keen, it's their fragments that do all the work, #including destroying the Q.E.D %patch $1209F $03 #React with [Keen's shot] %patch $1209A $90 $90 #Condition %patch $120A4 $0CCB10B3RL #What to do: [Remove Keen's shot while airborne] %patch $120B0 $02 #React with [Keen] %patch $120B1 $90 $90 #Condition %patch $120B4 $0AAF1517RL #What to do: [Kill Keen] %patch $120BD $19 #React with [Q.E.D] %patch $120B1 $90 $90 #Condition #When Q.E.D destroyed, this area is replaced: %patch $120FC $02 $00 #Replace 2 rows... %patch $12100 $04 $00 #Of 4 tiles... %patch $12104 $0B $00 #Starting at v11... %patch $12108 $10 $00 #And h16 then... #(Taken from 0,0) %patch $12118 $02 $00 #Replace 2 rows... %patch $1211C $04 $00 #Of 4 tiles... %patch $12120 $0D $00 #Starting at v13... %patch $12124 $10 $00 #And h16... %patch $1212B $04 $00 #But get THESE from 0,4 not 0,0 ### #Shocksund ### #Shocksund strength %patch $1328A $02 $00 #Length of time Shocksund flashes white when shot: %patch $133CB $02 $00 #Shocksund #If shot in air, Shocksund acts differently %patch $1339A $02 #React with [Keen] %patch $1339B $75 #Condition %patch $1339E $0AAF1517RL #What to do: [Kill Keen] %patch $133A4 $03 #React with [Keen's shot] %patch $133A5 $75 #Condition %patch $133AA $75 #Condition 2 (Is Shocksund in air?) %patch $133BD $090B16CDRL #If not, do: [Remove shot] %patch $133BD $0CCB10B3RL #If yes, do: [Remove shot in air] #Shock's shot %patch $13588 $02 #React with [Keen] %patch $13589 $75 #Condition %patch $1358C $0AAF1517RL #What to do 1: [Kill Keen] %patch $13596 $090B1242RL #What to do 2: [Halt motion] %patch $135A3 $03 #React with [Keen's shot] %patch $135A4 $75 #Condition %patch $135A8 $0CCB10B3RL #What to do 1: [Remove shot in air] %patch $135B5 $090B1242RL #What to do 2: [Halt motion] ### #Slicestar ### #slicestar strength %patch $11762 $14 $00 #Non bouncing %patch $11806 $32 $00 #Bouncing %patch $11887 $02 #React with [Keen] %patch $11888 $75 #Condition %patch $1188B $0AAF1517RL #What to do: [Kill Keen] %patch $11895 $03 #React with [Keen's shot] %patch $11896 $75 #Condition %patch $1189A $0CCB10B3RL #What to do 1: [Remove shot in air] %patch $118AC $090B1242RL #What to do 2: [Halt motion] ### #Sparky ### %patch $11185 $02 #React with [Keen] %patch $11186 $75 #Condition %patch $11189 $0AAF1517RL #What to do: [Kill Keen] %patch $11192 $03 #React with [Keen's shot] %patch $11193 $75 #Condition %patch $1119E $090B16CDRL #What to do: [Remove shot] ### #Volte Face ### %patch $10DC6 $02 #React with [Keen] %patch $10DC7 $75 #Condition %patch $10DCA $0AAF1517RL #What to do: [Kill Keen] %patch $10DD3 $03 #React with [Keen's shot] %patch $10DD4 $75 #Condition %patch $10DD8 $0CCB10B3RL #What to do 1: [Remove shot in air] %patch $10DE7 $090B1242RL #What to do 2: [Halt motion]