diff --git a/src/samplesrc/sfm.pla b/src/samplesrc/sfm.pla index 6b4624d..d7ce814 100644 --- a/src/samplesrc/sfm.pla +++ b/src/samplesrc/sfm.pla @@ -102,7 +102,7 @@ def game(spdrcnt)#0 var[14] xspdr, yspdr, ixspdr, iyspdr, hatch var xship, xmissle, attack byte yship, ymissle - byte spdrnum, k, xdelta, ydelta, btn0, btn1 + byte spdrnum, k, xdelta, ydelta, btn0, btn1, webstate xship = 140 ymissle = 255 @@ -112,6 +112,7 @@ def game(spdrcnt)#0 iyspdr[0] = -1 hatch[0] = 1 attack = -1 + webstate = 0 spdrnum = spdrcnt - 1 for k = 1 to spdrnum spriteAdd(k + 8, spriteDup(sprtEgg)) @@ -141,11 +142,43 @@ def game(spdrcnt)#0 fin if attack == k if yspdr[k] > 160 - iyspdr[k] = -8 // Retreat + // + // Iterate through web sequence + // + when webstate + is 10 + iyspdr[k] = -8 // Retreat + yspdr[k] = 160 + spriteDel(2) + spriteDel(3) + spriteDel(4) + webstate = 0 + break + is 0 + iyspdr[k] = 0 + spriteAdd(2, sprtWeb1) + spritePosIndex(xspdr[k], 160, 2) + webstate = 1 + break + is 1 + spriteAdd(3, sprtWeb2) + spritePosIndex(xspdr[k], 168, 3) + webstate = 2 + break + is 2 + spriteAdd(4, sprtWeb3) + spritePosIndex(xspdr[k], 176, 4) + webstate = 3 + otherwise + if xship >= xspdr[k] - 10 and xship <= xspdr[k] + 10 + return + fin + webstate++ + wend fin if iyspdr[k] > 0 // Attacking xspdr[k] = xspdr[k] + (xship - xspdr[k]) / 8 - else // Retreating + elsif iyspdr[k] < 0 // Retreating if ixspdr[k] > 0 xspdr[k] = xspdr[k] + (160 - yspdr[k]) / 8 else @@ -198,7 +231,7 @@ def game(spdrcnt)#0 spritePosIndex(xmissle, ymissle, 1) for k = 0 to spdrnum if yspdr[k] <> 255 - if ymissle >= yspdr[k] - 7 and ymissle <= yspdr[k] + 6 + if ymissle >= yspdr[k] - 15 and ymissle <= yspdr[k] + 5 if xmissle >= xspdr[k] - 10 and xmissle <= xspdr[k] + 10 // // Hit