home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / Sub_Shoote2076827242007.psc / Boss.bas < prev    next >
BASIC Source File  |  2001-09-15  |  5KB  |  159 lines

  1. Attribute VB_Name = "modBoss"
  2. Public Type aBoss
  3.  X As Integer
  4.  Y As Integer
  5.  Ty As Integer
  6.  Tx As Integer
  7.  Act As Boolean
  8.  Life As Integer
  9.  FlagFire As Byte
  10.  FireTag1 As Byte
  11. End Type
  12.  
  13. Public Boss As aBoss
  14. Public OkToMakeBoss As Boolean
  15. Public BossBombs(1 To 70) As DropBombs
  16. Public Const BossBredde As Integer = 70
  17. Public Const BossHoyde As Integer = 34
  18. Public Sub CheckBoss()
  19.     If P1.Killed Mod 20 = 0 And OkToMakeBoss And Boss.Act = False Then
  20.         'if the player has killed 20 subs since the last time, and it's falged green and there is not a boss active as it it,
  21.         MakeBoss 'make the boss
  22.         OkToMakeBoss = False 'and flag red
  23.     End If
  24. End Sub
  25.  
  26. Public Sub MakeBoss()
  27.     Boss.Act = True
  28.     Select Case Int(Rnd * 2)
  29.     Case 0
  30.         Boss.X = 0 - BossBredde
  31.     Case 1
  32.         Boss.X = Bredde
  33.     End Select
  34.     Boss.Y = Int((Rnd * 200) + 130) 'Give a random Y point to enter
  35.     Boss.Ty = Int((Rnd * 200) + 130) 'Give a random Y point to target
  36.     Boss.Tx = P1.X
  37.     Boss.Life = 15
  38.     PlaySound "boss"
  39. End Sub
  40.  
  41. Public Sub MoveBoss()
  42.     BossMoveShotSmall 'Move small shots
  43.     'This HAS to be done, no matter what
  44.     If Boss.Act = False Then Exit Sub
  45.     
  46.     BossCheckTarget 'Target finding and checking
  47.     
  48.     BossFireSmallThink 'Fire smaller gunns
  49.     
  50.     If Boss.X <> Boss.Tx Then 'moving
  51.         If Boss.X > Boss.Tx Then
  52.             Boss.X = Boss.X - 2
  53.         Else
  54.             Boss.X = Boss.X + 2
  55.         End If
  56.     End If
  57.     If Boss.X + 1 = Boss.Tx Then Boss.X = Boss.X + 1 'Prevent Missing the target
  58.     If Boss.X - 1 = Boss.Tx Then Boss.X = Boss.X - 1
  59.     
  60.     If Boss.Y <> Boss.Ty Then 'moving
  61.         If Boss.Y > Boss.Ty Then
  62.             Boss.Y = Boss.Y - 2
  63.         Else
  64.             Boss.Y = Boss.Y + 2
  65.         End If
  66.     End If
  67.     If Boss.Y + 1 = Boss.Ty Then Boss.Y = Boss.Y + 1 'Prevent Missing the target
  68.     If Boss.Y - 1 = Boss.Ty Then Boss.Y = Boss.Y - 1
  69. End Sub
  70. Sub BossCheckTarget()
  71.     If Boss.Ty = Boss.Y Then
  72.         Boss.Ty = Int((Rnd * 200) + 130)
  73.     End If
  74.     If Boss.Tx = Boss.X Then
  75.         Boss.Tx = P1.X - 20 + Int(Rnd * 40) + 1
  76.     End If
  77. End Sub
  78. Public Sub Hitboss()
  79.     If Boss.Life > 1 Then 'Wounded the boss
  80.         Boss.Life = Boss.Life - 1
  81.     Else 'Killed the boss
  82.         P1.Score = P1.Score + 1000 'add score
  83.         P1.Health = P1.Health + 5 'add some health too
  84.         MakeSign 1000, Boss.X + 20, Boss.Y 'add sign
  85.         
  86.         MakeExplo Boss.X + 30, Boss.Y + 5
  87.         MakeExplo Boss.X + 60, Boss.Y
  88.         Boss.Act = False
  89.         Boss.Tx = 0
  90.         Boss.Ty = 0
  91.         Boss.X = 0
  92.         Boss.Y = 0
  93.     End If
  94. End Sub
  95. Sub BossFireSmall()
  96.     If Boss.FlagFire Mod 4 = 0 Then 'only fire every 2nd time
  97.         'primary gun
  98.         For A = 1 To UBound(BossBombs)
  99.             If BossBombs(A).Act = False Then
  100.                 BossBombs(A).Act = True
  101.                 BossBombs(A).X = Boss.X + 17
  102.                 BossBombs(A).Y = Boss.Y + 1 + Int(Rnd * 3)
  103.                 Exit For
  104.             End If
  105.         Next A
  106.         'secondary gun
  107.         For A = 1 To UBound(BossBombs)
  108.             If BossBombs(A).Act = False Then
  109.                 BossBombs(A).Act = True
  110.                 BossBombs(A).X = Boss.X + 55
  111.                 BossBombs(A).Y = Boss.Y + 1 + Int(Rnd * 3)
  112.                 Exit For
  113.             End If
  114.         Next A
  115.         PlaySound "BossFire"
  116.     End If
  117.     Boss.FlagFire = Boss.FlagFire - 1
  118. End Sub
  119. Sub BossFireSmallThink()
  120.     If Boss.FlagFire > 0 Then BossFireSmall: Exit Sub 'already fireing
  121.     If Boss.FireTag1 > 0 Then Boss.FireTag1 = Boss.FireTag1 - 1: Exit Sub
  122.     If Not (Boss.X <= P1.X + ShipBredde + 10 And Boss.X > P1.X - 10) Then Exit Sub
  123.     'If Rnd < 0.9 Then Exit Sub 'a small random
  124.     Boss.FlagFire = Int(Rnd * 15) + 10
  125.     Boss.FireTag1 = 25
  126. End Sub
  127.  
  128. Sub BossMoveShotSmall()
  129.     For A = 1 To UBound(BossBombs)
  130.         If BossBombs(A).Act Then
  131.             BossBombs(A).Y = BossBombs(A).Y - 3.2
  132.             
  133.             If BossBombs(A).X <= P1.X + ShipBredde And BossBombs(A).X >= P1.X Then
  134.             If BossBombs(A).Y <= P1.Y + ShipHoyde And BossBombs(A).Y >= P1.Y Then
  135.                 MakeExplo BossBombs(A).X, BossBombs(A).Y
  136.                 
  137.                 P1.Health = P1.Health - 1 'Remove health
  138.                 If P1.Health <= 0 Then 'check if died
  139.                     MainPause = True
  140.                     P1.Health = 0
  141.                     MsgBox "Game Over", vbOKOnly, Form1.Caption
  142.                     Form1.PicExit_Click
  143.                 End If
  144.                 
  145.                 BossBombs(A).Act = False 'deactiavte bomb
  146.                 BossBombs(A).X = 0
  147.                 BossBombs(A).Y = 0
  148.             End If
  149.             End If
  150.             
  151.             If BossBombs(A).Y <= 117 Then 'Reached the water surface
  152.                 BossBombs(A).Act = False
  153.                 BossBombs(A).X = 0
  154.                 BossBombs(A).Y = 0
  155.             End If
  156.         End If
  157.     Next A
  158. End Sub
  159.