Advertisement
Arngrim

Untitled

Oct 22nd, 2017
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 37.59 KB | None | 0 0
  1.  
  2. Option Explicit
  3. Randomize
  4.  
  5. Dim Ballsize,BallMass
  6. BallSize = 50
  7. BallMass = (Ballsize^3)/125000
  8.  
  9. On Error Resume Next
  10. ExecuteGlobal GetTextFile("controller.vbs")
  11. If Err Then MsgBox "You need the controller.vbs in order to run this table, available in the vp10 package"
  12. On Error Goto 0
  13.  
  14. Dim DesktopMode:DesktopMode = Table1.ShowDT
  15. Dim UseVPMDMD:UseVPMDMD = DesktopMode
  16. Const UseVPMModSol = 1
  17.  
  18.  
  19. LoadVPM "01560000", "WPC.VBS", 3.50
  20.  
  21. Const cGameName = "ts_lx5"
  22.  
  23. 'STANDARD DEFINITIONS *************************************************************************************************************************************
  24.  
  25. Const UseSolenoids = 1
  26. Const UseLamps = 0
  27. Const UseSync = 0
  28. Const HandleMech = 1
  29. Set MotorCallback = GetRef("HandleMiniPF")
  30.  
  31.  
  32. 'DIMS *************************************************************************************************************************************
  33.  
  34. Dim bsTrough, bsL, bsR, dtDrop, x, bump1, bump2, bump3, BallFrame, Mech3bank, bsLeftEject, bsRightEject, bsCenterEject, BallInMagnet, ReleaseMagnetBall,_
  35. KickerPos, NewKickerPos, LastKickerPos, bslock, Fade, plungerim, LeftNudgeEffect, RightNudgeEffect, NudgeEffect
  36.  
  37. 'STANDARD SOUNDS ******************************************************************************************************************************************
  38.  
  39. Const SSolenoidOn = "Solenoid"
  40. Const SSolenoidOff = ""
  41. Const SFlipperOn = "FlipperUp"
  42. Const SFlipperOff = "FlipperDown"
  43. Const SCoin = "Coin"
  44.  
  45. 'KEY DEFINITIONS ******************************************************************************************************************************************
  46.  
  47. Const keyBuyInButton = 3
  48. Const keyLeftPhurbaButton = 30
  49. Const keyRightPhurbaButton = 40
  50.  
  51. Sub Table1_Init
  52. vpmInit Me
  53. With Controller
  54. .GameName = cGameName
  55. If Err Then MsgBox "Can't start Game" & cGameName & vbNewLine & Err.Description:Exit Sub
  56. .SplashInfoLine = "The Shadow (Bally 1994) By Alessio"
  57. .HandleKeyboard = 0
  58. .ShowTitle = 0
  59. .ShowDMDOnly = 1
  60. .ShowFrame = 0
  61. .HandleMechanics = 1
  62. .Hidden = DesktopMode
  63. On Error Resume Next
  64. .Run GetPlayerHWnd
  65. If Err Then MsgBox Err.Description
  66. End With
  67.  
  68. On Error Goto 0
  69.  
  70. 'MAIN TIMER INIT ******************************************************************************************************************************************
  71.  
  72. PinMAMETimer.Interval = PinMAMEInterval
  73. PinMAMETimer.Enabled = 1
  74.  
  75. 'StartShake
  76.  
  77.  
  78.  
  79. 'NUDGE INIT *******************************************************************************************************************************
  80.  
  81. vpmNudge.TiltSwitch = 14
  82. vpmNudge.Sensitivity = 0.5
  83. vpmNudge.TiltObj=Array(LeftSlingshot,RightSlingshot)
  84.  
  85.  
  86.  
  87. 'DROP TARGETS INIT ****************************************************************************************************************************************
  88.  
  89.  
  90. sw55.isDropped = 0:sw85.IsDropped = 0:sw86.IsDropped = 0:_
  91. sw87.IsDropped = 0:sw88.IsDropped = 0:WallTarget.isDropped = 0
  92.  
  93. 'BATTLEFIELD MINI KICKER INIT *****************************************************************************************************************************
  94.  
  95. Init_MiniKicker
  96.  
  97. 'PHURBA DIVERTERS INIT ************************************************************************************************************************************
  98.  
  99. 'RPLa.isdropped = 0:RPRa.isdropped = 1:_
  100. ' LPL.collidable = 1:LPLa.collidable = 1
  101. 'LPR.collidable = 0:LPRa.collidable = 0
  102. 'RightPhurbaRight.isdropped = 1:RightPhurbaLeft.isdropped = 0:_
  103. 'LeftPhurbaLeft.isdropped = 0:LeftPhurbaRight.isdropped = 1
  104.  
  105. 'BALLS INIT ***********************************************************************************************************************************************
  106.  
  107.  
  108. Set bsTrough = New cvpmBallStack:With bsTrough
  109. .InitSw 0, 41, 42, 43, 44, 45, 0, 0
  110. .InitKick BallRelease, 90, 10
  111. .InitEntrySnd "Solenoid", "Solenoid"
  112. .InitExitSnd SoundFX("ballrel",DOFContactors), SoundFX("Solenoid",DOFContactors)
  113. .Balls = 5
  114. End With
  115.  
  116. Controller.Switch(22) = 1
  117.  
  118. 'End With
  119. End Sub
  120.  
  121.  
  122. Sub table1_KeyDown(ByVal keycode)
  123.  
  124. If keycode = PlungerKey Then Controller.Switch(11) = True
  125. If keycode = keyBuyInButton Then Controller.Switch(23) = True
  126. If keycode = LeftMagnaSave Then Controller.Switch(34) = True
  127. If keycode = RightMagnaSave Then Controller.Switch(12) = True
  128. If keycode = LeftTiltKey Then vpmNudge.DoNudge 80, 1.6
  129. If keycode = RightTiltKey Then vpmNudge.DoNudge 280, 1.6
  130. If keycode = CenterTiltKey Then vpmNudge.DoNudge 0, 1.6
  131. if keydownhandler(keycode) then exit sub
  132. End Sub
  133.  
  134. Sub table1_KeyUp(ByVal keycode)
  135.  
  136. If keycode = PlungerKey Then Controller.Switch(11) = False
  137. If keycode = keyBuyInButton Then Controller.Switch(23) = False
  138. If keycode = LeftMagnaSave Then Controller.Switch(34) = False
  139. If keycode = RightMagnaSave Then Controller.Switch(12) = False
  140. If keyuphandler(keycode) then exit sub
  141. End Sub
  142.  
  143. 'FLIPPERS *************************************************************************************************************************************************
  144.  
  145. SolCallback(sLRFlipper) = "SolRFlipper"
  146. SolCallback(sLLFlipper) = "SolLFlipper"
  147.  
  148. Sub SolLFlipper(Enabled)
  149. vpmSolFlipper LeftFlipper, Nothing, Enabled
  150. If Enabled then
  151. Playsound SoundFX("FlipperSu",DOFFlippers)
  152. End If
  153. If Not Enabled then
  154. Playsound SoundFX("FlipperGiu",DOFFlippers)
  155. End If
  156. End Sub
  157.  
  158. Sub SolRFlipper(Enabled)
  159. vpmSolFlipper RightFlipper, RightFlipper2, Enabled
  160. If Enabled then
  161. Playsound SoundFX("FlipperSu",DOFFlippers)
  162. End If
  163. If Not Enabled then
  164. Playsound SoundFX("FlipperGiu",DOFFlippers)
  165. End If
  166. End Sub
  167.  
  168. 'BALL SOUNDS ************************************************************************************************************************************
  169.  
  170. Sub RightRampSound_Hit
  171. Playsound "Metalrolling"
  172. End Sub
  173.  
  174. Sub BallRoll_Hit
  175. Playsound "Ballrolling"
  176. End Sub
  177.  
  178. Sub BallRoll2_Hit
  179. Playsound "Ballrolling"
  180. End Sub
  181.  
  182. Sub Skill_UnHit
  183. Playsound "OnlyMetalRolling"
  184. End Sub
  185.  
  186. 'AUTOMATIC PLUNGER ****************************************************************************************************************************************
  187.  
  188. Const IMPowerSetting = 55 'ERA 40
  189. Const IMTime = 0.6
  190. Set plungerIM = New cvpmImpulseP
  191. With plungerIM
  192. .InitImpulseP swplunger, IMPowerSetting, IMTime
  193. .Random 0.3
  194. .InitExitSnd "plunger2", "plunger"
  195. .CreateEvents "plungerIM"
  196. End With
  197.  
  198. Sub Auto_Plunger(Enabled)
  199. If Enabled Then
  200. PlungerIM.AutoFire
  201. Playsound SoundFX("plunger2",DOFContactors)
  202. End If
  203. End Sub
  204.  
  205. 'SOLENOIDS ************************************************************************************************************************************************
  206.  
  207. SolCallback(1) = "Auto_Plunger"
  208. SolCallback(2) = "SolLockupKickout"
  209. SolCallback(3) = "SolLeftPhurbaLeft"
  210. SolCallback(4) = "SolLeftPhurbaRight"
  211. SolCallback(5) = "SolRightPhurbaRight"
  212. SolCallback(6) = "SolRightPhurbaLeft"
  213. SolCallback(7) = "SolKnocker"
  214. SolCallback(8) = "SolWallTargetUp"
  215. SolCallback(9) = "solLSling"
  216. SolCallback(10) = "solRSling"
  217. SolCallback(11) = "bsRightEject.SolOut"
  218. SolCallback(12) = "bsLeftEject.SolOut"
  219. SolCallback(13) = "SolBallRelease"
  220. Solcallback(14) = "SolBallPopper"
  221. SolCallback(16) = "SolWallTargetDown"
  222. Solcallback(24) = "SolMiniDropbank"
  223. SolCallback(25) = "SolSingleDropUp"
  224. SolCallback(35) = "SolMagnetOn"
  225. SolCallback(36) = "SolSingleDropDown"
  226.  
  227. 'FLASHER SOLENOIDS FOR FADING LIGHT SYSTEM ****************************************************************************************************************
  228.  
  229. SolCallback(17) = "SetLamp 117,"
  230. SolCallback(18) = "SetLamp 118,"
  231. SolCallback(21) = "SetLamp 121,"
  232. SolCallback(22) = "SetLamp 122,"
  233. SolCallback(23) = "SetLamp 123,"
  234. SolCallback(26) = "SetLamp 126,"
  235. SolCallback(27) = "SetLamp 127,"
  236. SolCallback(28) = "SetLamp 128,"
  237.  
  238. Sub SolKnocker(enabled)
  239. If enabled then
  240. PlaySound SoundFX("Knocker",DOFKnocker)
  241. End If
  242. End Sub
  243.  
  244. Sub shooterlane_Hit():Controller.Switch(48) = 1:End Sub:Sub shooterlane_Unhit():Controller.Switch(48) = 0:End Sub
  245.  
  246. Sub SolBallRelease(enabled)
  247. If enabled Then
  248. If bsTrough.Balls Then PlaySound SoundFX("BallRelease",DOFContactors) Else PlaySound SoundFX("Solenoid",DOFContactors)
  249. bsTrough.ExitSol_On
  250. End If
  251. End Sub
  252.  
  253. Sub table1_Paused:Controller.Pause = 1:End Sub
  254. Sub table1_unPaused:Controller.Pause = 0:End Sub
  255.  
  256.  
  257. 'DRAIN HOLES **********************************************************************************************************************************************
  258.  
  259. Sub Drain_Hit:Playsound "drain":bsTrough.AddBall Me:End Sub
  260. Sub Drain_Hit():PlaySound "Drain":bsTrough.AddBall Me:End Sub
  261. 'Sub Drain2_Hit():PlaySound "Drain":bsTrough.AddBall Me:End Sub
  262. 'Sub Drain3_Hit():PlaySound "Drain":bsTrough.AddBall Me:End Sub:Sub Drain4_Hit():PlaySound "Drain":bsTrough.AddBall Me:End Sub
  263.  
  264. 'SLINGSHOTS ***********************************************************************************************************************************************
  265.  
  266. Dim RStep, Lstep
  267.  
  268. Sub LeftSlingShot_Slingshot:vpmTimer.PulseSw 61:End Sub
  269. Sub RightSlingShot_Slingshot:vpmTimer.PulseSw 62:End Sub
  270.  
  271.  
  272. Sub solLSling(enabled)
  273. If enabled then
  274. PlaySound SoundFX("left_slingshot",DOFContactors)
  275. LSling.Visible = 0
  276. LSling1.Visible = 1
  277. sling1.TransZ = -27
  278. LStep = 0
  279. LeftSlingShot.TimerEnabled = 1
  280. End If
  281. End Sub
  282.  
  283. Sub solRSling(enabled)
  284. If enabled then
  285. PlaySound SoundFX("right_slingshot",DOFContactors)
  286. RSling.Visible = 0
  287. RSling1.Visible = 1
  288. sling2.TransZ = -27
  289. RStep = 0
  290. RightSlingShot.TimerEnabled = 1
  291. End If
  292. End Sub
  293.  
  294. Sub LeftSlingShot_Timer
  295. Select Case LStep
  296. Case 3:LSLing1.Visible = 0:LSLing2.Visible = 1:sling1.TransZ = -15
  297. Case 4:LSLing2.Visible = 0:LSLing.Visible = 1:sling1.TransZ = 0:LeftSlingShot.TimerEnabled = 0
  298. End Select
  299. LStep = LStep + 1
  300. End Sub
  301.  
  302. Sub RightSlingShot_Timer
  303. Select Case RStep
  304. Case 3:RSLing1.Visible = 0:RSLing2.Visible = 1:sling2.TransZ = -15
  305. Case 4:RSLing2.Visible = 0:RSLing.Visible = 1:sling2.TransZ = 0:RightSlingShot.TimerEnabled = 0
  306. End Select
  307. RStep = RStep + 1
  308. End Sub
  309.  
  310. Sub sw35_Hit:vpmTimer.PulseSwitch 35, 0, "":End Sub
  311.  
  312.  
  313. 'ROLLOVER SWITCHES ****************************************************************************************************************************************
  314.  
  315. Sub sw15_Hit:Controller.Switch(15) = 1:PlaySound "sensor":End Sub:Sub sw15_UnHit:Controller.Switch(15) = 0:End Sub
  316.  
  317. Sub sw16_Hit:Controller.Switch(16) = 1:PlaySound "sensor":End Sub:Sub sw16_UnHit:Controller.Switch(16) = 0:End Sub
  318.  
  319. Sub sw17_Hit:Controller.Switch(17) = 1:PlaySound "sensor":End Sub:Sub sw17_UnHit:Controller.Switch(17) = 0:End Sub
  320.  
  321. Sub sw18_Hit:Controller.Switch(18) = 1:PlaySound "sensor":End Sub:Sub sw18_UnHit:Controller.Switch(18) = 0:End Sub
  322.  
  323. Sub sw54_Hit:Controller.Switch(54) = 1:PlaySound "sensor":End Sub:Sub sw54_UnHit:Controller.Switch(54) = 0:End Sub
  324.  
  325. Sub sw57_Hit:Controller.Switch(57) = 1:PlaySound "sensor":End Sub:Sub sw57_UnHit:Controller.Switch(57) = 0:End Sub
  326.  
  327. Sub sw47_Hit:Controller.Switch(47) = 1:PlaySound "sensor":End Sub:Sub sw47_UnHit:Controller.Switch(47) = 0:End Sub
  328.  
  329. 'RAMP HELPERS *********************************************************************************************************************************************
  330.  
  331. Sub RHelp1_Hit:ActiveBall.VelZ = -2:ActiveBall.VelY = 0:ActiveBall.VelX = 0:StopSound "metalrolling":PlaySound "balldrop":End Sub
  332.  
  333. Sub RHelp2_Hit:ActiveBall.VelZ = -2:ActiveBall.VelY = 0:ActiveBall.VelX = 0:StopSound "metalrolling":PlaySound "balldrop":End Sub
  334.  
  335. Sub RHelp3_Hit:ActiveBall.VelZ = -2:ActiveBall.VelY = 0:ActiveBall.VelX = 0:StopSound "OnlyMetalRolling":PlaySound "CadutaFerri":End Sub
  336.  
  337. Sub RHelp4_Hit: PlaySound "balldrop":End Sub
  338.  
  339. Sub Trigger1_Hit:ActiveBall.VelZ=0:If ActiveBall.VelY<-6 Then:ActiveBall.VelY=-50:End If:End Sub
  340.  
  341. Sub Trigger2_Hit:ActiveBall.VelZ=0:If ActiveBall.VelY<-25 Then:ActiveBall.VelY=-25:End If:End Sub
  342.  
  343. Sub Trigger5_Hit:ActiveBall.VelZ=0:If ActiveBall.VelY<-33 Then:ActiveBall.VelY=-33:End If:End Sub
  344.  
  345. Sub Trigger6_Hit:ActiveBall.VelZ=0:If ActiveBall.VelY<-10 Then:ActiveBall.VelY=-10:End If:End Sub
  346.  
  347. Sub RRL_Hit:ActiveBall.VelZ=0:If ActiveBall.VelY<-10 Then ActiveBall.VelY=-10:End If:End Sub 'USCITA SX RAMPA DX
  348.  
  349. Sub RRR_Hit:ActiveBall.VelZ=0:If ActiveBall.VelY<-10 Then ActiveBall.VelY=-10:End If:End Sub 'USCITA DX RAMPA DX
  350.  
  351. Sub RSUD_Hit:ActiveBall.VelZ=0:If ActiveBall.VelY<-10 Then ActiveBall.VelY=-10:End If:End Sub 'USCITA DX RAMPA SX
  352.  
  353. Sub RSUS_Hit:ActiveBall.VelZ=0:If ActiveBall.VelY<-10 Then ActiveBall.VelY=-10:End If:End Sub 'USCITA SX RAMPA SX
  354.  
  355. Sub CadutaBattle_Hit: BattleLose.Enabled= 1 : End Sub
  356.  
  357. Sub BattleWin_Hit: PlaySound "rrenter" : End Sub
  358.  
  359. Sub BattleLose_Timer()
  360. Playsound "balldrop"
  361. Me.enabled=0
  362. End Sub
  363.  
  364.  
  365.  
  366. 'RAMP SWITCHES ********************************************************************************************************************************************
  367.  
  368. Sub sw31_Hit:Controller.Switch(31) = 1:End Sub:Sub sw31_Unhit:Controller.Switch(31) = 0:End Sub
  369.  
  370. Sub sw32_Hit:Controller.Switch(32) = 1:End Sub:Sub sw32_Unhit:Controller.Switch(32) = 0:End Sub
  371.  
  372. Sub sw75_Hit:Controller.Switch(75) = 1:End Sub:Sub sw75_Unhit:Controller.Switch(75) = 0: Playsound "MetalRolling":End Sub
  373.  
  374. Sub sw76_Hit:Controller.Switch(76) = 1:End Sub:Sub sw76_Unhit:Controller.Switch(76) = 0: Playsound "MetalRolling":End Sub
  375.  
  376. Sub sw77_Hit:Controller.Switch(77) = 1:End Sub:Sub sw77_Unhit:Controller.Switch(77) = 0: Playsound "MetalRolling":End Sub
  377.  
  378. Sub sw78_Hit:Controller.Switch(78) = 1:End Sub:Sub sw78_Unhit:Controller.Switch(78) = 0: Playsound "MetalRolling":End Sub
  379.  
  380. Sub sw58_Hit:Controller.Switch(58) = 1:End Sub:Sub sw58_Unhit:Controller.Switch(58) = 0:End Sub
  381.  
  382. 'MONGOL TARGETS *******************************************************************************************************************************************
  383.  
  384. Sub sw25_Hit:vpmTimer.PulseSw 25:Me.TimerEnabled = 1:PlaySound SoundFX("target",DOFTargets):End Sub
  385. Sub sw25_Timer:Me.TimerEnabled = 0:End Sub
  386.  
  387. Sub sw26_Hit:vpmTimer.PulseSw 26:Me.TimerEnabled = 1:PlaySound SoundFX("target",DOFTargets):End Sub
  388. Sub sw26_Timer:Me.TimerEnabled = 0:End Sub
  389.  
  390. Sub sw27_Hit:vpmTimer.PulseSw 27:Me.TimerEnabled = 1:PlaySound SoundFX("target",DOFTargets):End Sub
  391. Sub sw27_Timer:Me.TimerEnabled = 0:End Sub
  392.  
  393. Sub sw28_Hit:vpmTimer.PulseSw 28:Me.TimerEnabled = 1:PlaySound SoundFX("target",DOFTargets):End Sub
  394. Sub sw28_Timer:Me.TimerEnabled = 0:End Sub
  395.  
  396. Sub sw52_Hit:vpmTimer.PulseSw 52:Me.TimerEnabled = 1:PlaySound SoundFX("target",DOFTargets):End Sub
  397. Sub sw52_Timer:Me.TimerEnabled = 0:End Sub
  398.  
  399. Sub sw53_Hit:vpmTimer.PulseSw 53:Me.TimerEnabled = 1:PlaySound SoundFX("target",DOFTargets):End Sub
  400. Sub sw53_Timer:Me.TimerEnabled = 0:End Sub
  401.  
  402. 'MINI BATTLEFIELD TARGETS *********************************************************************************************************************************
  403.  
  404. Sub sw74_Hit:vpmTimer.PulseSw 74:sw74.IsDropped = 1:Me.TimerEnabled = 1:PlaySound SoundFX("target",DOFTargets):End Sub
  405. Sub sw74_Timer:sw74.IsDropped = 0:Me.TimerEnabled = 0:End Sub
  406.  
  407. Sub sw73_Hit:vpmTimer.PulseSw 73:sw73.IsDropped = 1:Me.TimerEnabled = 1:PlaySound SoundFX("target",DOFTargets):End Sub
  408. Sub sw73_Timer:sw73.IsDropped = 0:Me.TimerEnabled = 0:End Sub
  409.  
  410. Sub sw72_Hit:vpmTimer.PulseSw 72:sw72.IsDropped = 1:Me.TimerEnabled = 1:PlaySound SoundFX("target",DOFTargets):End Sub
  411. Sub sw72_Timer:sw72.IsDropped = 0:Me.TimerEnabled = 0:End Sub
  412.  
  413. Sub sw71_Hit:vpmTimer.PulseSw 71:sw71.IsDropped = 1:Me.Timerenabled = 1:PlaySound SoundFX("target",DOFTargets):End Sub
  414. Sub sw71_Timer:sw71.IsDropped = 0:Me.TimerEnabled = 0:End Sub
  415.  
  416. Sub sw81_Hit:vpmTimer.PulseSw 81:sw81.IsDropped = 1:Me.Timerenabled = 1:PlaySound SoundFX("target",DOFTargets):End Sub
  417. Sub sw81_Timer:sw81.IsDropped = 0:Me.TimerEnabled = 0:End Sub
  418.  
  419. Sub sw82_Hit:vpmTimer.PulseSw 82:sw82.IsDropped = 1:Me.Timerenabled = 1:PlaySound SoundFX("target",DOFTargets):End Sub
  420. Sub sw82_Timer:sw82.IsDropped = 0:Me.TimerEnabled = 0:End Sub
  421.  
  422. Sub sw84_Hit:vpmTimer.PulseSw 84:sw84.IsDropped = 1:Me.Timerenabled = 1:PlaySound SoundFX("target",DOFTargets):End Sub
  423. Sub sw84_Timer:sw84.IsDropped = 0:Me.TimerEnabled = 0:End Sub
  424.  
  425. Sub sw85_Hit:sw85.IsDropped = 1:p85.TransY = -40:Controller.Switch(85) = 1:PlaySound SoundFX("DropTargetDown",DOFDropTargets):vpmTimer.PulseSw 24:End Sub
  426.  
  427. Sub sw86_Hit:sw86.IsDropped = 1:p86.TransY = -40:Controller.Switch(86) = 1:PlaySound SoundFX("DropTargetDown",DOFDropTargets):vpmTimer.PulseSw 24:End Sub
  428.  
  429. Sub sw87_Hit:sw87.IsDropped = 1:p87.TransY = -40:Controller.Switch(87) = 1:PlaySound SoundFX("DropTargetDown",DOFDropTargets):vpmTimer.PulseSw 24:End Sub
  430.  
  431. Sub sw88_Hit:sw88.IsDropped = 1:p88.TransY = -40:Controller.Switch(88) = 1:PlaySound SoundFX("DropTargetDown",DOFDropTargets):vpmTimer.PulseSw 24:End Sub
  432.  
  433. 'MINI BATTLEFIELD DROPBANK HANDLE *************************************************************************************************************************
  434.  
  435. Sub SolMiniDropBank(enabled):If enabled Then:PlaySound SoundFX("DropTargetUp",DOFDropTargets):_
  436. sw85.IsDropped = 0:sw86.IsDropped = 0:sw87.IsDropped = 0:sw88.IsDropped = 0:Controller.Switch(85) = 0:_
  437. p85.TransY = 0: p86.TransY = 0: p87.TransY = 0: p88.TransY = 0:_
  438. Controller.Switch(86) = 0:Controller.Switch(87) = 0:Controller.Switch(88) = 0:End If:End Sub
  439.  
  440. 'CENTER TARGET ********************************************************************************************************************************************
  441.  
  442. Sub sw56_Hit:vpmTimer.PulseSw 56:Me.TimerEnabled = 1:PlaySound SoundFX("target",DOFTargets):End Sub
  443. Sub sw56_Timer:Me.TimerEnabled = 0:End Sub
  444.  
  445. 'WALL TARGET **********************************************************************************************************************************************
  446.  
  447.  
  448. Sub LHP1_Hit()
  449. If ActiveBall.velY < 0 Then 'ball is going up
  450. PlaySound "rrenter"
  451. Else
  452. StopSound "rrenter"
  453. End If
  454. End Sub
  455.  
  456. Sub RHP1_Hit()
  457. If ActiveBall.velY < 0 Then 'ball is going up
  458. PlaySound "rrenter"
  459. Else
  460. StopSound "rrenter"
  461. End If
  462. End Sub
  463.  
  464. Sub WallTarget_Hit
  465. Playsound "bersaglio"
  466. End Sub
  467.  
  468. Sub SolWallTargetDown(enabled)
  469. If enabled Then
  470. WallTarget.IsDropped = True
  471. MuroLock.TransY = -70
  472. Controller.Switch(51) = True
  473. PlaySound SoundFX("muro",DOFTargets)
  474. End If
  475. End Sub
  476.  
  477. Sub SolWallTargetUp(enabled)
  478. If enabled Then
  479. Controller.Switch(51) = False
  480. WallTarget.isDropped = False
  481. MuroLock.TransY = 0
  482. PlaySound SoundFX("muro",DOFTargets)
  483. End If
  484. End Sub
  485.  
  486. 'GESTIONE FOTOCELLULE LOCK
  487.  
  488. Sub sw33_Hit()
  489. FotocellulaDx.Visible=0
  490. FotocellulaSx.Visible=0
  491. Controller.Switch(33) = 1
  492. End Sub
  493.  
  494. Sub sw33_Unhit()
  495. Controller.Switch(33) = 0
  496. FotocellulaDx.Visible=1
  497. FotocellulaSx.Visible=1
  498. End Sub
  499.  
  500. 'GESTIONE FOTOCELLULE BATTLE
  501.  
  502. Sub FotocellulaDisattivaBat_Hit()
  503. SpegneFotocelluleBat
  504. End Sub
  505.  
  506. Sub FotocellulaDisattivaBat_Hit()
  507. FotocellulaDxBat.Visible=0
  508. FotocellulaSxBat.Visible=0
  509. End Sub
  510.  
  511. Sub FotocellulaDisattivaBat_UnHit()
  512. TimerFotocellula2.enabled=1
  513. End Sub
  514.  
  515. Sub TimerFotocellula2_Timer()
  516. FotocellulaDxBat.Visible=1
  517. FotocellulaSxBat.Visible=1
  518. Me.Enabled=0
  519. End Sub
  520.  
  521. 'BATTLEFIELD TARGET ***************************************************************************************************************************************
  522.  
  523. Sub sw55_Hit()
  524. MuroMiniPlayfield.TransZ = 5
  525. MuroColpito.Enabled= True
  526. Controller.Switch(55) = True
  527. sw55.IsDropped = True
  528. MuroMiniPlayfield.TransY = -40
  529. Playsound SoundFX("DropTargetUp",DOFDropTargets)
  530. End Sub
  531.  
  532. Sub MuroColpito_Timer()
  533. MuroMiniPlayfield.TransZ = 0
  534. Me.Enabled=0
  535. End Sub
  536.  
  537. Sub SolSingleDropDown(enabled)
  538. If enabled Then
  539. sw55.IsDropped = True
  540. MuroMiniPlayfield.TransY = -40
  541. Controller.Switch(55) = True
  542. PlaySound SoundFX("DropTargetDown",DOFDropTargets)
  543. End If
  544. End Sub
  545.  
  546. Sub SolSingleDropUp(enabled)
  547. If enabled Then
  548. sw55.IsDropped = False
  549. MuroMiniPlayfield.TransY = 0
  550. Controller.Switch(55) = False
  551. PlaySound SoundFX("DropTargetUp",DOFDropTargets)
  552. End If
  553. End Sub
  554.  
  555. 'LEFT EJECT ***********************************************************************************************************************************************
  556.  
  557. Set bsLeftEject = New cvpmBallStack
  558. bsLeftEject.Ballimage = "ball1"
  559. bsLeftEject.InitSaucer sw66, 66, 90, 15
  560. bsLeftEject.InitExitSnd SoundFX("Solenoid",DOFContactors), SoundFX("ExitKicker",DOFContactors)
  561. bsLeftEject.KickForceVar = 2
  562.  
  563. Sub sw66_Hit()
  564. PlaySound "EnterHole"
  565. bsLeftEject.AddBall Me
  566. End Sub
  567.  
  568. Sub sw66_UnHit()
  569. PlaySound SoundFX("ExitHole",DOFContactors)
  570. End Sub
  571.  
  572. 'RIGHT EJECT **********************************************************************************************************************************************
  573.  
  574. Set bsRightEject = New cvpmBallStack
  575. bsRightEject.Ballimage = "ball1"
  576. bsRightEject.InitSaucer sw67, 67, 100, 10 ' ERA 67,100,7
  577. bsRightEject.InitExitSnd SoundFX("Solenoid",DOFContactors), SoundFX("ExitKicker",DOFContactors)
  578. bsRightEject.KickForceVar = 2
  579.  
  580. Sub sw67_Hit()
  581. PlaySound "EnterHole"
  582. bsRightEject.AddBall Me
  583. End Sub
  584.  
  585. Sub sw67_UnHit()
  586. PlaySound SoundFX("ExitHole",DOFContactors)
  587. End Sub
  588.  
  589.  
  590.  
  591. 'PHURBA DIVERTERS *****************************************************************************************************************************************
  592.  
  593. Sub SolLeftPhurbaLeft(enabled) 'SCAMBIO SX DEVIA A DESTRA
  594. If enabled Then
  595. PlaySound SoundFX("Diverter",DOFContactors)
  596. ScambioSinistro.TransX= 395
  597. ScambioSinistro.TransZ= 320
  598. ScambioSinistro.ObjRotZ= 40
  599. PugnaleSinistro.TransX= 395
  600. PugnaleSinistro.TransZ= 293
  601. PugnaleSinistro.ObjRotZ= 40
  602. DiverterSxVersoDx.IsDropped= 0
  603. DiverterSxVersoSx.IsDropped= 1
  604. End If
  605. End Sub
  606.  
  607. Sub SolLeftPhurbaRight(enabled) 'SCAMBIO SX DEVIA A SINISTRA
  608. If enabled Then
  609. PlaySound SoundFX("Diverter",DOFContactors)
  610. ScambioSinistro.TransX= 0
  611. ScambioSinistro.TransZ= 0
  612. ScambioSinistro.ObjRotZ= 0
  613. PugnaleSinistro.TransX= 0
  614. PugnaleSinistro.TransZ= 0
  615. PugnaleSinistro.ObjRotZ= 0
  616. DiverterSxVersoDx.IsDropped= 1
  617. DiverterSxVersoSx.IsDropped= 0
  618. End If
  619. End Sub
  620.  
  621.  
  622. Sub SolRightPhurbaLeft(enabled) 'SCAMBIO DX DEVIA A DESTRA
  623. If enabled Then
  624. PlaySound SoundFX("Diverter",DOFContactors)
  625. ScambioDestro.TransX= -24
  626. ScambioDestro.TransZ= 490
  627. ScambioDestro.ObjRotZ= 35
  628. PugnaleDestro.TransX= -28
  629. PugnaleDestro.TransZ= 450
  630. PugnaleDestro.ObjRotZ= 35
  631. DiverterDxVersoDx.IsDropped= 0
  632. DiverterDxVersoSx.IsDropped= 1
  633. ' RPLa.IsDropped = False
  634. ' RPRa.IsDropped = True
  635. ' RightPhurbaRight.isdropped = True
  636. ' RightPhurbaLeft.isdropped = False
  637. End If
  638. End Sub
  639.  
  640. Sub SolRightPhurbaRight(enabled) 'SCAMBIO DX DEVIA A SINISTRA
  641. If enabled Then
  642. PlaySound SoundFX("Diverter",DOFContactors)
  643. ScambioDestro.TransX= 0
  644. ScambioDestro.TransZ= 0
  645. ScambioDestro.ObjRotZ= 0
  646.  
  647. PugnaleDestro.TransX= 0
  648. PugnaleDestro.TransZ= 0
  649. PugnaleDestro.ObjRotZ= 0
  650. DiverterDxVersoDx.IsDropped= 1
  651. DiverterDxVersoSx.IsDropped= 0
  652. ' RPLa.IsDropped = True
  653. ' RPRa.IsDropped = False
  654. ' RightPhurbaRight.isdropped = False
  655. ' RightPhurbaLeft.isdropped = True
  656. End If
  657. End Sub
  658.  
  659. 'GATE
  660.  
  661. Sub GateMissione_Hit()
  662. Playsound "gate"
  663. End Sub
  664.  
  665. Sub GateLock_Hit()
  666. Playsound "gate"
  667. End Sub
  668.  
  669. 'MAGNET HANDLER *****************************************************************************************************************************************
  670.  
  671. Sub MagnetOff_Hit()
  672. BallInMagnet = False
  673. MagnetKicker.enabled = False
  674. MagnetCatch.enabled = False
  675. MagnetHold.enabled = False
  676. MagnetHelper1.enabled = False
  677. MagnetHelper2.enabled = False
  678. End Sub
  679.  
  680. Sub MagnetKickerHelper_Hit()
  681. BallInMagnet = False
  682. MagnetKicker.enabled = False
  683. MagnetCatch.enabled = False
  684. MagnetHold.enabled = False
  685. MagnetHelper1.enabled = False
  686. MagnetHelper2.enabled = False
  687. End Sub
  688.  
  689. Sub MagnetCatch_Hit()
  690. If BallInMagnet = False Then
  691. MagnetHold.enabled = True
  692. MagnetCatch.kick 180, 5 '1
  693. End If
  694. End Sub
  695.  
  696. Sub MagnetKicker_Hit()
  697. If BallInMagnet = True Then
  698. MagnetKicker.enabled = False
  699. MagnetKicker.kick 0, 20
  700. Playsound "LockWall"
  701. Else
  702. MagnetHold.enabled = True
  703. MagnetKicker.kick 0, 5 '1
  704. End If
  705. End Sub
  706.  
  707. Sub MagnetHold_Hit()
  708. BallInMagnet = True
  709. MagnetHold.destroyball
  710. MagnetHoldFloat.Createball.image = "Ball1"
  711. End Sub
  712.  
  713. Sub MagnetHelper1_Hit()
  714. BallInMagnet = True
  715. MagnetHelper1.destroyball
  716. MagnetHoldFloat.Createball.image = "Ball1"
  717. End Sub
  718.  
  719. Sub MagnetHelper2_Hit()
  720. BallInMagnet = True
  721. MagnetHelper2.destroyball
  722. MagnetHoldFloat.Createball.image = "Ball1"
  723. End Sub
  724.  
  725. Dim MagneteAttivo
  726.  
  727. Sub SolMagnetOn(enabled)
  728. If enabled Then
  729. If BallInMagnet = False Then
  730. MagnetKicker.enabled = True
  731. MagnetCatch.enabled = True
  732. Playsound SoundFX("Magnete",DOFShaker) : MagneteAttivo =1
  733. MagnetHold.enabled = True
  734. MagnetHelper1.enabled = True
  735. MagnetHelper2.enabled = True
  736. End If
  737. ReleaseMagnetBall = False
  738. MagnetReleaseTimer.enabled = False
  739. Else
  740. ReleaseMagnetBall = True
  741. MagnetReleaseTimer.enabled = True
  742. End If
  743. End Sub
  744.  
  745. Sub MagnetReleaseTimer_Timer()
  746. MagnetReleaseTimer.enabled = False
  747. If ReleaseMagnetBall = True and BallInMagnet = True Then
  748. MagnetCatch.enabled = False
  749. MagnetHold.enabled = False
  750. MagnetHelper1.enabled = False
  751. MagnetHelper2.enabled = False
  752. MagnetHoldFloat.destroyball
  753. MagnetHold.Createball.image = "Ball1"
  754. MagnetHold.kick 180, 5
  755. End If
  756. End Sub
  757.  
  758. 'BATTLEFIELD MINI KICKER HANDLER **************************************************************************************************************************
  759.  
  760. KickerPos = Array(Mk1,Mk2,Mk3,Mk4,Mk5,Mk6,Mk7,Mk8,Mk9,Mk10,Mk11,Mk12,Mk13,Mk14,Mk15,Mk16,Mk17,Mk18,Mk19)
  761.  
  762. Sub HandleMiniPF
  763. FlipperL.RotZ = LeftFlipper.CurrentAngle
  764. FlipperR.RotZ = RightFlipper.CurrentAngle
  765. FlipperR2.RotZ = RightFlipper2.CurrentAngle
  766. PGate1.RotX = Gate1.CurrentAngle
  767. PGate2.RotX = Gate2.CurrentAngle
  768. NewKickerPos = Controller.GetMech(0)
  769. If NewKickerPos <> LastKickerPos Then
  770. SlingMiniPF.TransX= 90 * (NewKickerPos-9)/9
  771. KickerPos(LastKickerPos).IsDropped = True
  772. KickerPos(NewKickerPos).IsDropped = False
  773. LastKickerPos = NewKickerPos
  774. End If
  775. End Sub
  776.  
  777. Sub Init_MiniKicker()
  778. Mk1.IsDropped = True:Mk2.IsDropped = True:Mk3.IsDropped = True:Mk4.IsDropped = True:_
  779. Mk5.IsDropped = True:Mk6.IsDropped = True:Mk7.IsDropped = True:Mk8.IsDropped = True:_
  780. Mk9.IsDropped = True:Mk10.IsDropped = True:Mk11.IsDropped = True:Mk12.IsDropped = True:_
  781. Mk13.IsDropped = True:Mk14.IsDropped = True:Mk15.IsDropped = True:Mk16.IsDropped = True:_
  782. Mk17.IsDropped = True:Mk18.IsDropped = True:Mk19.IsDropped = True
  783. End Sub
  784.  
  785.  
  786. Sub Mk1_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  787. Sub Mk2_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  788. Sub Mk3_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  789. Sub Mk4_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  790. Sub Mk5_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  791. Sub Mk6_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  792. Sub Mk7_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  793. Sub Mk8_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  794. Sub Mk9_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  795. Sub Mk10_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  796. Sub Mk11_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  797. Sub Mk12_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  798. Sub Mk13_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  799. Sub Mk14_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  800. Sub Mk15_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  801. Sub Mk16_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  802. Sub Mk17_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  803. Sub Mk18_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  804. Sub Mk19_Slingshot():vpmTimer.PulseSwitch 36, 0, "":End Sub
  805.  
  806. 'BATTLEFIELD VUK ******************************************************************************************************************************************
  807.  
  808. Sub MiniPFPopperHelper_Hit
  809. MiniPFPopperHelper.DestroyBall
  810. Controller.Switch(68) = True
  811. PopperEject.Createball.Image = "Ball1"
  812. PopperEject.Kick 290, 2+rnd*3
  813.  
  814. Controller.Switch(68) = False
  815. End Sub
  816.  
  817. Sub Popper_Hit()
  818. Controller.Switch(68) = True
  819. Popper.enabled = False
  820. End Sub
  821.  
  822. Sub SolBallPopper(enabled)
  823. If enabled Then
  824. If Popper.enabled = False Then
  825. Controller.Switch(68) = False
  826. Popper.DestroyBall
  827. 'PlaySound "EnterHole"
  828. PopperEject.Createball.Image = "Ball1"
  829. PopperEject.Kick 300, 2+rnd*3
  830. PlaySound SoundFX("ExitVuk",DOFContactors)
  831. End If
  832. Popper.enabled = True
  833. End If
  834. End Sub
  835.  
  836. Sub Vukup_hit:ActiveBall.Velz=35:End Sub 'ERA Velz=30
  837.  
  838. Sub HoleBattle_Hit()
  839. PlaySound "EnterHole"
  840. End Sub
  841.  
  842.  
  843. 'BATTLEFIELD SENSORS******************************************************************************************************************************************
  844.  
  845. Sub sw37_Hit:Controller.Switch(37) = 1:End Sub:Sub sw37_Unhit: Controller.Switch(37) = 0:End Sub
  846. Sub sw38_Hit:Controller.Switch(38) = 1:End Sub:Sub sw38_Unhit: Controller.Switch(38) = 0:End Sub
  847.  
  848. 'BALL LOCK ************************************************************************************************************************************************
  849.  
  850. Set bsLock = New cvpmBallStack
  851. bsLock.Ballimage = "Ball1"
  852. bsLock.InitSw 0,63,64,65,0,0,0,0
  853. bsLock.InitKick LockupKickerEject, 120, 2 'ERA 100, 2
  854.  
  855. Sub Lockup_Hit()
  856. bsLock.AddBall Me
  857. End Sub
  858.  
  859. Sub SolLockupKickout(enabled)
  860. If enabled Then
  861. PlaySound SoundFX("ExitHole",DOFContactors)
  862. vpmTimer.AddTimer 250, "Lockup_Serve"
  863. End If
  864. End Sub
  865.  
  866. Sub Lockup_Serve(No)
  867. bsLock.ExitSol_On
  868. End Sub
  869.  
  870. 'FADING LIGHT SYSTEM (C) BY PD/JPSALAS ********************************************************************************************************************
  871.  
  872. Dim LampState(200), FadingLevel(200)
  873. Dim FlashSpeedUp(200), FlashSpeedDown(200), FlashMin(200), FlashMax(200), FlashLevel(200)
  874.  
  875. InitLamps() ' turn off the lights and flashers and reset them to the default parameters
  876. LampTimer.Interval = 10 'lamp fading speed
  877. LampTimer.Enabled = 1
  878.  
  879. Sub LampTimer_Timer()
  880. Dim chgLamp, num, chg, ii
  881. chgLamp = Controller.ChangedLamps
  882. If Not IsEmpty(chgLamp) Then
  883. For ii = 0 To UBound(chgLamp)
  884. LampState(chgLamp(ii, 0) ) = chgLamp(ii, 1) 'keep the real state in an array
  885. FadingLevel(chgLamp(ii, 0) ) = chgLamp(ii, 1) + 4 'actual fading step
  886. Next
  887. End If
  888. UpdateLamps
  889. End Sub
  890.  
  891. Sub InitLamps()
  892. Dim x
  893. For x = 0 to 200
  894. LampState(x) = 0 ' current light state, independent of the fading level. 0 is off and 1 is on
  895. FadingLevel(x) = 4 ' used to track the fading state
  896. FlashSpeedUp(x) = 0.5 ' faster speed when turning on the flasher
  897. FlashSpeedDown(x) = 0.35 ' slower speed when turning off the flasher
  898. FlashMax(x) = 1 ' the maximum value when on, usually 1
  899. FlashMin(x) = 0 ' the minimum value when off, usually 0
  900. FlashLevel(x) = 0 ' the intensity of the flashers, usually from 0 to 1
  901. Next
  902. End Sub
  903.  
  904.  
  905.  
  906. 'TABLE LIGHTS *********************************************************************************************************************************************
  907.  
  908. Sub UpdateLamps
  909.  
  910. NFadeL 11, Light11
  911. NFadeL 12, Light12
  912. NFadeL 13, Light13
  913. NFadeL 14, Light14
  914. NFadeL 15, Light15
  915. NFadeL 16, Light16
  916. NFadeL 17, Light17
  917. NFadeL 18, Light18
  918. NFadeL 21, Light21
  919. NFadeL 22, Light22
  920. NFadeL 23, Light23
  921. NFadeL 24, Light24
  922. NFadeL 25, Light25
  923. NFadeL 26, Light26
  924. NFadeL 27, Light27
  925. NFadeL 28, Light28
  926. NFadeL 31, Light31
  927. NFadeL 32, Light32
  928. NFadeL 33, Light33
  929. NFadeL 34, Light34
  930. NFadeL 35, Light35
  931. NFadeL 36, Light36
  932. NFadeL 37, Light37
  933. NFadeL 38, Light38
  934. NFadeL 41, Light41
  935. NFadeL 42, Light42
  936. NFadeL 43, Light43
  937. NFadeL 44, Light44
  938. NFadeL 45, Light45
  939. NFadeL 46, Light46
  940. NFadeL 47, Light47
  941. NFadeL 48, Light48
  942. NFadeL 51, Light51
  943. NFadeL 52, Light52
  944. NFadeL 53, Light53
  945. NFadeL 54, Light54
  946. NFadeL 55, Light55
  947. NFadeL 56, Light56
  948. NFadeL 57, Light57
  949. NFadeL 58, Light58
  950. NFadeL 61, Light61
  951. NFadeL 62, Light62
  952. NFadeL 63, Light63
  953. NFadeL 64, Light64
  954. NFadeL 65, Light65
  955. NFadeL 66, Light66
  956. NFadeL 67, Light67
  957. NFadeL 68, Light68
  958. NFadeL 71, Light71
  959. NFadeL 72, Light72
  960. NFadeL 73, Light73
  961. NFadeL 74, Light74
  962. NFadeL 75, Light75
  963. NFadeL 76, Light76
  964. NFadeL 77, Light77
  965. NFadeL 78, Light78
  966. NFadeL 85, Light85
  967. NFadeL 86, Light86
  968.  
  969. ' GESTIONE FLASH
  970.  
  971. Flash 117, F117
  972. Flash 118, F118
  973. Flashm 121, F121A
  974. Flash 121, F121
  975. Flashm 122, F122A
  976. Flash 122, F122
  977. Flash 123, F123
  978. Flash 126, F126
  979. Flash 127, F127
  980. Flash 128, F128
  981. Flash 81, F181
  982. Flash 82, F182
  983. Flash 83, F183
  984. Flash 84, F184
  985. End Sub
  986.  
  987.  
  988. Sub SetLamp(nr, value)
  989. If value <> LampState(nr) Then
  990. LampState(nr) = abs(value)
  991. FadingLevel(nr) = abs(value) + 4
  992. End If
  993. End Sub
  994.  
  995. ' Lights: used for VP10 standard lights, the fading is handled by VP itself
  996.  
  997. Sub NFadeL(nr, object)
  998. Select Case FadingLevel(nr)
  999. Case 4:object.state = 0:FadingLevel(nr) = 0
  1000. Case 5:object.state = 1:FadingLevel(nr) = 1
  1001. End Select
  1002. End Sub
  1003.  
  1004. Sub NFadeLm(nr, object) ' used for 2 lights
  1005. Select Case FadingLevel(nr)
  1006. Case 4:object.state = 0
  1007. Case 5:object.state = 1
  1008. End Select
  1009. End Sub
  1010.  
  1011. Sub NFadeLn(nr, object) ' used for 3 lights
  1012. Select Case FadingLevel(nr)
  1013. Case 4:object.state = 0
  1014. Case 5:object.state = 1
  1015. End Select
  1016. End Sub
  1017.  
  1018.  
  1019. Sub FadeObj(nr, object, a, b, c, d)
  1020. Select Case FadingLevel(nr)
  1021. Case 2:object.image = d:FadingLevel(nr) = 0 'Off
  1022. Case 3:object.image = c:FadingLevel(nr) = 2 'fading...
  1023. Case 4:object.image = b:FadingLevel(nr) = 3 'fading...
  1024. Case 5:object.image = a:FadingLevel(nr) = 1 'ON
  1025. End Select
  1026. End Sub
  1027.  
  1028. Sub FadeObjm(nr, object, a, b, c, d)
  1029. Select Case FadingLevel(nr)
  1030. Case 2:object.image = d
  1031. Case 3:object.image = c
  1032. Case 4:object.image = b
  1033. Case 5:object.image = d
  1034. End Select
  1035. End Sub
  1036.  
  1037. Sub NFadeObj(nr, object, a, b)
  1038. Select Case FadingLevel(nr)
  1039. Case 4:object.image = b:FadingLevel(nr) = 0 'off
  1040. Case 5:object.image = a:FadingLevel(nr) = 1 'on
  1041. End Select
  1042. End Sub
  1043.  
  1044. Sub NFadeObjm(nr, object, a, b)
  1045. Select Case FadingLevel(nr)
  1046. Case 4:object.image = b
  1047. Case 5:object.image = a
  1048. End Select
  1049. End Sub
  1050.  
  1051. Sub Flash(nr, object)
  1052. Select Case FadingLevel(nr)
  1053. Case 4 'off
  1054. FlashLevel(nr) = FlashLevel(nr) - FlashSpeedDown(nr)
  1055. If FlashLevel(nr) < FlashMin(nr) Then
  1056. FlashLevel(nr) = FlashMin(nr)
  1057. FadingLevel(nr) = 0 'completely off
  1058. End if
  1059. Object.IntensityScale = FlashLevel(nr)
  1060. Case 5 ' on
  1061. FlashLevel(nr) = FlashLevel(nr) + FlashSpeedUp(nr)
  1062. If FlashLevel(nr) > FlashMax(nr) Then
  1063. FlashLevel(nr) = FlashMax(nr)
  1064. FadingLevel(nr) = 1 'completely on
  1065. End if
  1066. Object.IntensityScale = FlashLevel(nr)
  1067. End Select
  1068. End Sub
  1069.  
  1070. Sub Flashm(nr, object) 'multiple flashers, it just sets the flashlevel
  1071. Object.IntensityScale = FlashLevel(nr)
  1072. End Sub
  1073.  
  1074.  
  1075. Sub SetModLamp(nr, value)
  1076. If value > 0 Then
  1077. LampState(nr) = 1
  1078. Else
  1079. LampState(nr) = 0
  1080. End If
  1081. FadingLevel(nr) = value
  1082. End Sub
  1083.  
  1084. Sub FadeModLamp(nr, object, factor)
  1085. Object.IntensityScale = FadingLevel(nr) * factor/255
  1086. If TypeName(object) = "Light" Then
  1087. Object.State = LampState(nr)
  1088. End If
  1089. If TypeName(object) = "Flasher" Then
  1090. Object.visible = LampState(nr)
  1091. End If
  1092. End Sub
  1093.  
  1094.  
  1095. '*****************************************
  1096. ' BALL SHADOW
  1097. '*****************************************
  1098. Dim BallShadow
  1099. BallShadow = Array (BallShadow1,BallShadow2,BallShadow3,BallShadow4,BallShadow5)
  1100. Dim tnob:tnob = 5
  1101. '
  1102. Sub BallShadowUpdate_timer()
  1103. Dim BOT, b
  1104. BOT = GetBalls
  1105. ' hide shadow of deleted balls
  1106. If UBound(BOT)<(tnob-1) Then
  1107. For b = (UBound(BOT) + 1) to (tnob-1)
  1108. BallShadow(b).visible = 0
  1109. Next
  1110. End If
  1111. ' exit the Sub if no balls on the table
  1112. If UBound(BOT) = -1 Then Exit Sub
  1113. ' render the shadow for each ball
  1114. For b = 0 to UBound(BOT)
  1115. If BOT(b).X < Table1.Width/2 Then
  1116. BallShadow(b).X = ((BOT(b).X) - (Ballsize/6) + ((BOT(b).X - (Table1.Width/2))/7)) + 10
  1117. Else
  1118. BallShadow(b).X = ((BOT(b).X) + (Ballsize/6) + ((BOT(b).X - (Table1.Width/2))/7)) - 10
  1119. End If
  1120. ballShadow(b).Y = BOT(b).Y + 20
  1121. If BOT(b).Z > 20 Then
  1122. BallShadow(b).visible = 1
  1123. Else
  1124. BallShadow(b).visible = 0
  1125. End If
  1126. Next
  1127. End Sub
  1128.  
  1129. Function Vol(ball) ' Calculates the Volume of the sound based on the ball speed
  1130. Vol = Csng(BallVel(ball) ^2 / 1)
  1131. End Function
  1132.  
  1133. Function Pan(ball) ' Calculates the pan for a ball based on the X position on the table. "table1" is the name of the table
  1134. Dim tmp
  1135. tmp = ball.x * 2 / table1.width-1
  1136. If tmp > 0 Then
  1137. Pan = Csng(tmp ^10)
  1138. Else
  1139. Pan = Csng(-((- tmp) ^10) )
  1140. End If
  1141. End Function
  1142.  
  1143. Function Pitch(ball) ' Calculates the pitch of the sound based on the ball speed
  1144. Pitch = BallVel(ball) * 20
  1145. End Function
  1146.  
  1147. Function BallVel(ball) 'Calculates the ball speed
  1148. BallVel = INT(SQR((ball.VelX ^2) + (ball.VelY ^2) ) )
  1149. End Function
  1150.  
  1151. '**********************
  1152. ' Ball Collision Sound
  1153. '**********************
  1154.  
  1155. Sub OnBallBallCollision(ball1, ball2, velocity)
  1156. PlaySound("fx_collide"), 0, Csng(velocity) ^2 / 2000, Pan(ball1), 0, Pitch(ball1), 0, 0
  1157. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement