Outhere

Endless Summer_makmak_V_9.5

Jul 4th, 2020
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 238.32 KB | None | 0 0
  1.  
  2. Option Explicit
  3. Randomize
  4.  
  5. 'V0.9.5 change log - final update before summer break ;-)
  6. '- music bugs fixed
  7. '- edited points: added 1000000 pts for each spot mastered
  8. '- new mode prepared (!): videomode
  9. '- each time you survive a mode adds one point to your "modecounter"
  10. '- 3, 6, 9, 12 points gives you the chance for videomode (lock the ball in upper playfield)
  11.  
  12.  
  13. '- best POV: make sure you see the black line on the wave at the backwall for full water experience ;-)
  14.  
  15.  
  16. 'Rules Endless Summer Pinball
  17. '
  18. '*skillshot* (every new ball)
  19. ' - hit highlighted board with your first shot
  20. '
  21. '*normal mode* (pre-set sequence)
  22. ' - hit all equipment targets on lower left side
  23. ' - hit right ramp 3 times to collect boards
  24. '
  25. ' - hit flashing arrow at right side to buy ticket
  26. ' - hit lower arc to check-in (ball gets locked, new ball in plunger lane)
  27. ' - hit upper arc to start flight (multiball starts if there is a locked ball)
  28. '
  29. ' - wax your boards: hit middle ramp and ride 10 rounds in the bowl
  30. '
  31. ' the left ramp is now open and *surf mode* starts
  32. '
  33. '*surf mode*
  34. ' - ride upper lanes (left/right) to get "loop" bonus (15 = extraball, 20 = jackpot, as much as you want, dont get seasick ;-)
  35. ' - hit right ramp to get "offthelip" bonus (15 = extraball, 20 = jackpot, as much as you want, dont get seasick ;-)
  36. ' - hit wax bowl to get "aerial360" bonus (15 = extraball, 20 = jackpot, as much as you want, dont get seasick ;-)
  37. ' - hit left ramp to ride tubes (3 times to finish *surf mode*)
  38. '
  39. ' - then proceed to the next surfspot ;-)
  40. '
  41. 'while in *normal mode* you want to start timelimited *bonus modes*
  42. '
  43. '*bonus modes* (not available throughout *surf mode*) are:
  44. '
  45. '*endless summer mode* (30 sec)
  46. ' - to start, hit all ENDLESS SUMMER targets (targets NOT resetted after drains)
  47. ' - ride upper lanes (left or right) to get "endless summer bonus" (10 = extraball, 15 = jackpot, max)
  48. '
  49. '*skeet surfing mode* (15 sec)
  50. ' - to start, hit all SKEET targets (targets are NOT resetted after drains)
  51. ' - hit any of the 4 blinking white targets to shoot "clays" (10 = extraball, 15 = jackpot, max)
  52. '
  53. '*sexwaxfrenzy mode* (40 sec)
  54. ' - to start, hit sexwax-bumper 3 times (counter IS resetted after drains)
  55. ' - hit middle ramp and surfboards alternatingly to get "sexwaxfrenzy bonus" (10 = extraball, 15 = jackpot, max)
  56. '
  57. '*surfers nightmare* (also available in surf mode)
  58. ' - you need more balls?
  59. ' - to start, hit the 4 small targets (starting any other mode or drain resets the lights)
  60. ' - find and hit the man in the grey suit 5 times to get an extraball
  61. ' - mode available if extraball is not lit already and maximum 3 times per game
  62. ' - mode will not start during multiball
  63. '
  64. '
  65. ' ! to prevent a total chaos:
  66. ' ! throughout any *bonus mode* and *surf mode*
  67. ' ! - endless summer and skeet targets are disabled
  68. ' ! - bumper hits are not added to sexwaxfrenzy mode
  69. ' ! - right ramp does not collect boards
  70. ' ! means: one mode at a time only (except surfers nightmare mode)
  71. '
  72. ' ! try to be a well-rounded surfer:
  73. ' ! each different of the six available bonus modes
  74. ' ! adds to your variety multiplier
  75. '
  76. 'bonuscount: (endless summer bonus + skeet bonus + sexwaxfrenzy bonus
  77. ' + offthelips + loops + aerial360s) * 10000 = Total Bonus
  78. ' Total Bonus * variety multiplier (1-6)
  79. '
  80. ' = BIG points or skip the joints ;-)
  81. '
  82. '* videomode* (not yet finished, sry, I need more time on water now ;-)
  83. ' - each time you finish a mode (endless summer, skeetsurfing or sexwaxfrenzy) adds one point to your mode counter
  84. ' - 3, 6, 9 and 12 point offers the chance for videomode
  85. ' - you have 15 seconds to lock the ball and start the videomode
  86. ' - control the surfer with flippers, dont get hit by the lip, dont get too high on the wave, avoid obstacles (upcoming)
  87. '
  88. '
  89. ' Good to know about a multiplayer game:
  90. ' Of course, each player has his own score and own progress.
  91. ' But, the same as in single player mode: Drop targets on the upper playfield
  92. ' "ENDLESS SUMMER" and "SKEET" will not be resetted after a drain!
  93. ' An advantage for the next player...but sometimes you should give away
  94. ' your wave to the better positioned surfer - Aloha Spirit
  95. '
  96. ' Hang Loose!
  97. '
  98. '
  99. '
  100. '**************************************************************************
  101.  
  102. ' Big thanks to Thalamus, bord, JP Salas, Flupper, DJRobX, NailBuster, TerryRed, ninuzzu, HauntFreaks,
  103. ' ROM, rothbauerw, borgdog, Mussinger, toxie, JR, randr, GTO77, BeachBumTN, ScottyVH, ScottyWic,
  104. ' fuzzel, Schreibi34, MajorFrenchy, gtxjoe, supered, 3rdaxis, wrd1972, sliderpoint, mfuegemann,
  105. ' all those that I forgot, sorry dudes, and all the beta-testers who helped and encouraged me!
  106. ' (some of the above mentioned dont even know that they helped me somehow ;-)
  107.  
  108. 'Most big thanks to my family allowing me spending so much time on these pinball bits & bytes...!!!
  109.  
  110. 'Code contains parts of Orbital Framework 0.1 and lots of parts from other authors:
  111.  
  112. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  113. ' X X X X X X X X X X X X X X X X X X X X X X X
  114. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  115. ' Credits
  116. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  117. ' X X X X X X X X X X X X X X X X X X X X X X X
  118. ' Compiled and built by Scottywic
  119. ' Code snippets by JP Salas, Flupper, DJRobX, NailBuster, ninuzzu, HauntFreaks rothbauerw & many more.
  120. ' For details using this framework check https://www.youtube.com/channel/UC_vroB2Uboi8GytbQSIepPQ
  121.  
  122.  
  123. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  124. ' X X X X X X X X X X X X X X X X X X X X X X X
  125. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  126. ' Player Options
  127. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  128. ' X X X X X X X X X X X X X X X X X X X X X X X
  129.  
  130. 'turnoffrules = 1 ' change to 1 to take off the backglass helper rules text during a game - not available yet
  131. turnonultradmd = 1 ' change to 1 to turn on ultradmd
  132. toppervideo = 1 'set to 1 to turn on the topper
  133. ballrolleron = 1 ' set to 0 to turn off the ball roller if you use the "c" key in your cabinet
  134. boardshake=2 ' (0=off,5=max) factor for how much surfboards wobble
  135.  
  136. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  137. ' X X X X X X X X X X X X X X X X X X X X X X X
  138. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  139. ' FRAMEWORK Options
  140. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  141. ' X X X X X X X X X X X X X X X X X X X X X X X
  142.  
  143.  
  144.  
  145. Const typefont ="CandyPop!"
  146. Const numberfont ="Good Vibrations"
  147. Const zoomfont = "Good Vibrations"
  148. Const zoombgfont = "Fundamental 3D Brigade" ' needs to be an outline of the zoomfont
  149. Const cGameName = "ndlsmr"
  150. Const TableName = "ndlsmr"
  151. Const myVersion = "1.0.0"
  152.  
  153.  
  154. '********************************************************************************************************************************************
  155. '********************************************************************************************************************************************
  156. 'ORBITAL FRAMEWORK BASE CODE STARTS HERE
  157. '********************************************************************************************************************************************
  158. '********************************************************************************************************************************************
  159.  
  160.  
  161. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  162. ' X X X X X X X X X X X X X X X X X X X X X X X
  163. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  164. ' VARIABLES
  165. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  166. ' X X X X X X X X X X X X X X X X X X X X X X X
  167. '
  168.  
  169. 'Constructions
  170. Const BallSize = 50
  171. Const MaxPlayers = 4
  172. Const BallSaverTime = 15
  173. Const MaxMultiplier = 6
  174. Const MaxMultiballs = 5
  175. Const bpgcurrent = 3
  176.  
  177. ' Define Global Variables
  178.  
  179. Dim toppervideo
  180. Dim ballrolleron
  181. Dim turnonultradmd
  182. Dim turnoffrules
  183. Dim PlayersPlayingGame
  184. Dim CurrentPlayer
  185. Dim Credits
  186. Dim BonusPoints(4)
  187. Dim BonusHeldPoints(4)
  188. Dim BonusMultiplier(4)
  189. Dim bBonusHeld
  190. Dim BallsRemaining(4)
  191. Dim ExtraBallsAwards(4)
  192. Dim Score(4)
  193. Dim HighScore(4)
  194. Dim HighScoreName(4)
  195. Dim WaffleScore(4)
  196. Dim WaffleScoreName(4)
  197. Dim Jackpot
  198. Dim SuperJackpot
  199. Dim Tilt
  200. Dim TiltSensitivity
  201. Dim Tilted
  202. Dim TotalGamesPlayed
  203. Dim mBalls2Eject
  204. Dim SkillshotValue(4)
  205. Dim bAutoPlunger
  206. Dim bInstantInfo
  207. Dim bromconfig
  208. Dim bAttractMode
  209. Dim LastSwitchHit
  210. Dim BallsOnPlayfield
  211. Dim BallsInHole
  212. Dim bFreePlay
  213. Dim bGameInPlay
  214. Dim bOnTheFirstBall
  215. Dim bBallInPlungerLane
  216. Dim bBallSaverActive
  217. Dim bBallSaverReady
  218. Dim bMultiBallMode
  219. Dim bMusicOn
  220. Dim bSkillshotReady
  221. Dim bExtraBallWonThisBall
  222. Dim bJustStarted
  223. Dim xx
  224. Dim a
  225. Dim boardshake
  226.  
  227.  
  228. Dim bESMode
  229. Dim bSexwaxfrenzyMode
  230. Dim bSkeetMode
  231. Dim bSurfMode
  232.  
  233. Dim bumpercount '3 starts sexwaxfrenzymode, set to 0 after mode and after drain (if not multiball)
  234. Dim waxcount (4)
  235. Dim boards (4)
  236. Dim endlesssummerbonus
  237. Dim endlesssummerbonuspre
  238. Dim Skeetbonus
  239. Dim Skeetbonuspre
  240. Dim Sexwaxfrenzybonus
  241. Dim Sexwaxfrenzybonuspre
  242. Dim loopbonus
  243. Dim loopbonuspre
  244. Dim offthelipbonus
  245. Dim offthelipbonuspre
  246. Dim aerialbonus
  247. Dim aerialbonuspre
  248. Dim diversitymultiplier
  249. Dim spotmastered (4)
  250. Dim AwardPoints
  251. Dim TotalBonus
  252. Dim ii
  253. Dim waxcountleft
  254. Dim progress(4)'defines if normalmode (0) or surfmode (1)
  255. Dim Extraballscount
  256. Dim SharkModeCounter
  257. Dim Sharkextraballs
  258. Dim ballstate
  259. Dim sharkmode
  260. Dim modecount
  261.  
  262.  
  263. ' Game Variables
  264. Dim LaneBonus
  265. Dim TargetBonus
  266. Dim RampBonus
  267. Dim OrbitBonus
  268. Dim spinvalue
  269. Dim finalflips
  270. Dim Saves
  271. Dim Drains
  272. Dim inmode
  273.  
  274.  
  275. LoadCoreFiles
  276. Sub LoadCoreFiles
  277. On Error Resume Next
  278. ExecuteGlobal GetTextFile("core.vbs")
  279. If Err Then MsgBox "Can't open core.vbs"
  280. On Error Goto 0
  281. End Sub
  282.  
  283. Dim EnableBallControl
  284. EnableBallControl = true 'Change to true to enable manual ball control (or press C in-game) via the arrow keys and B (boost movement) keys
  285.  
  286.  
  287. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  288. ' X X X X X X X X X X X X X X X X X X X X X X X
  289. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  290. ' Controller VBS stuff, but with b2s not started
  291. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  292. ' X X X X X X X X X X X X X X X X X X X X X X X
  293. '***Controller.vbs version 1.2***'
  294. '
  295.  
  296. Const directory = "HKEY_CURRENT_USER\SOFTWARE\Visual Pinball\Controller\"
  297. Dim objShell
  298. Dim PopupMessage
  299. Dim B2SController
  300. Dim Controller
  301. Const DOFContactors = 1
  302. Const DOFKnocker = 2
  303. Const DOFChimes = 3
  304. Const DOFBell = 4
  305. Const DOFGear = 5
  306. Const DOFShaker = 6
  307. Const DOFFlippers = 7
  308. Const DOFTargets = 8
  309. Const DOFDropTargets = 9
  310. Const DOFOff = 0
  311. Const DOFOn = 1
  312. Const DOFPulse = 2
  313.  
  314. Dim DOFeffects(9)
  315. Dim B2SOn
  316. Dim B2SOnALT
  317.  
  318. Sub LoadEM
  319. LoadController("EM")
  320. End Sub
  321.  
  322. Sub LoadPROC(VPMver, VBSfile, VBSver)
  323. LoadVBSFiles VPMver, VBSfile, VBSver
  324. LoadController("PROC")
  325. End Sub
  326.  
  327. Sub LoadVPM(VPMver, VBSfile, VBSver)
  328. LoadVBSFiles VPMver, VBSfile, VBSver
  329. LoadController("VPM")
  330. End Sub
  331.  
  332. Sub LoadVPMALT(VPMver, VBSfile, VBSver)
  333. LoadVBSFiles VPMver, VBSfile, VBSver
  334. LoadController("VPMALT")
  335. End Sub
  336.  
  337. Sub LoadVBSFiles(VPMver, VBSfile, VBSver)
  338. On Error Resume Next
  339. If ScriptEngineMajorVersion < 5 Then MsgBox "VB Script Engine 5.0 or higher required"
  340. ExecuteGlobal GetTextFile(VBSfile)
  341. If Err Then MsgBox "Unable to open " & VBSfile & ". Ensure that it is in the same folder as this table. " & vbNewLine & Err.Description
  342. InitializeOptions
  343. End Sub
  344.  
  345. Sub LoadVPinMAME
  346. Set Controller = CreateObject("VPinMAME.Controller")
  347. If Err Then MsgBox "Can't load VPinMAME." & vbNewLine & Err.Description
  348. If VPMver > "" Then If Controller.Version < VPMver Or Err Then MsgBox "VPinMAME ver " & VPMver & " required."
  349. If VPinMAMEDriverVer < VBSver Or Err Then MsgBox VBSFile & " ver " & VBSver & " or higher required."
  350. On Error Goto 0
  351. End Sub
  352.  
  353. Sub LoadController(TableType)
  354. Dim FileObj
  355. Dim DOFConfig
  356. Dim TextStr2
  357. Dim tempC
  358. Dim count
  359. Dim ISDOF
  360. Dim Answer
  361.  
  362. B2SOn = False
  363. B2SOnALT = False
  364. tempC = 0
  365. on error resume next
  366. Set objShell = CreateObject("WScript.Shell")
  367. objShell.RegRead(directory & "ForceDisableB2S")
  368. If Err.number <> 0 Then
  369. PopupMessage = "This latest version of Controller.vbs stores its settings in the registry. To adjust the values, you must use VP 10.2 (or newer) and setup your configuration in the DOF section of the -Keys, Nudge and DOF- dialog of Visual Pinball."
  370. objShell.RegWrite directory & "ForceDisableB2S",0, "REG_DWORD"
  371. objShell.RegWrite directory & "DOFContactors",2, "REG_DWORD"
  372. objShell.RegWrite directory & "DOFKnocker",2, "REG_DWORD"
  373. objShell.RegWrite directory & "DOFChimes",2, "REG_DWORD"
  374. objShell.RegWrite directory & "DOFBell",2, "REG_DWORD"
  375. objShell.RegWrite directory & "DOFGear",2, "REG_DWORD"
  376. objShell.RegWrite directory & "DOFShaker",2, "REG_DWORD"
  377. objShell.RegWrite directory & "DOFFlippers",2, "REG_DWORD"
  378. objShell.RegWrite directory & "DOFTargets",2, "REG_DWORD"
  379. objShell.RegWrite directory & "DOFDropTargets",2, "REG_DWORD"
  380. MsgBox PopupMessage
  381. End If
  382. tempC = objShell.RegRead(directory & "ForceDisableB2S")
  383. DOFeffects(1)=objShell.RegRead(directory & "DOFContactors")
  384. DOFeffects(2)=objShell.RegRead(directory & "DOFKnocker")
  385. DOFeffects(3)=objShell.RegRead(directory & "DOFChimes")
  386. DOFeffects(4)=objShell.RegRead(directory & "DOFBell")
  387. DOFeffects(5)=objShell.RegRead(directory & "DOFGear")
  388. DOFeffects(6)=objShell.RegRead(directory & "DOFShaker")
  389. DOFeffects(7)=objShell.RegRead(directory & "DOFFlippers")
  390. DOFeffects(8)=objShell.RegRead(directory & "DOFTargets")
  391. DOFeffects(9)=objShell.RegRead(directory & "DOFDropTargets")
  392. Set objShell = nothing
  393.  
  394. If TableType = "PROC" or TableType = "VPMALT" Then
  395. If TableType = "PROC" Then
  396. Set Controller = CreateObject("VPROC.Controller")
  397. If Err Then MsgBox "Can't load PROC"
  398. Else
  399. LoadVPinMAME
  400. End If
  401. If tempC = 0 Then
  402. On Error Resume Next
  403. If Controller is Nothing Then
  404. Err.Clear
  405. Else
  406. Set B2SController = CreateObject("B2S.Server")
  407. If B2SController is Nothing Then
  408. Err.Clear
  409. Else
  410. B2SController.B2SName = B2ScGameName
  411. B2SController.Run()
  412. On Error Goto 0
  413. B2SOn = True
  414. B2SOnALT = True
  415. End If
  416. End If
  417. End If
  418. Else
  419. If tempC = 0 Then
  420. On Error Resume Next
  421. Set Controller = CreateObject("B2S.Server")
  422. If Controller is Nothing Then
  423. Err.Clear
  424. If TableType = "VPM" Then
  425. LoadVPinMAME
  426. End If
  427. Else
  428. Controller.B2SName = cGameName
  429. If TableType = "EM" Then
  430. Controller.Run()
  431. End If
  432. On Error Goto 0
  433. B2SOn = True
  434. End If
  435. Else
  436. If TableType = "VPM" Then
  437. LoadVPinMAME
  438. End If
  439. End If
  440. Set DOFConfig=Nothing
  441. Set FileObj=Nothing
  442. End If
  443. End sub
  444.  
  445. Function SoundFX (Sound, Effect)
  446. If ((Effect = 0 And B2SOn) Or DOFeffects(Effect)=1) Then
  447. SoundFX = ""
  448. Else
  449. SoundFX = Sound
  450. End If
  451. End Function
  452.  
  453. Function SoundFXDOF (Sound, DOFevent, State, Effect)
  454. If DOFeffects(Effect)=1 Then
  455. SoundFXDOF = ""
  456. DOF DOFevent, State
  457. ElseIf DOFeffects(Effect)=2 Then
  458. SoundFXDOF = Sound
  459. DOF DOFevent, State
  460. Else
  461. SoundFXDOF = Sound
  462. End If
  463. End Function
  464.  
  465. Function SoundFXDOFALT (Sound, DOFevent, State, Effect)
  466. If DOFeffects(Effect)=1 Then
  467. SoundFXDOFALT = ""
  468. DOFALT DOFevent, State
  469. ElseIf DOFeffects(Effect)=2 Then
  470. SoundFXDOFALT = Sound
  471. DOFALT DOFevent, State
  472. Else
  473. SoundFXDOFALT = Sound
  474. End If
  475. End Function
  476.  
  477.  
  478. Sub DOF(DOFevent, State)
  479. If B2SOn Then
  480. If State = 2 Then
  481. Controller.B2SSetData DOFevent, 1:Controller.B2SSetData DOFevent, 0
  482. Else
  483. Controller.B2SSetData DOFevent, State
  484. End If
  485. End If
  486. End Sub
  487.  
  488. Sub DOFALT(DOFevent, State)
  489. If B2SOnALT Then
  490. If State = 2 Then
  491. B2SController.B2SSetData DOFevent, 1:B2SController.B2SSetData DOFevent, 0
  492. Else
  493. B2SController.B2SSetData DOFevent, State
  494. End If
  495. End If
  496. End Sub
  497.  
  498.  
  499.  
  500.  
  501. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  502. ' X X X X X X X X X X X X X X X X X X X X X X X
  503. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  504. ' TABLE INITS & MATHS
  505. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  506. ' X X X X X X X X X X X X X X X X X X X X X X X
  507. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  508.  
  509. Sub Table1_Init()
  510. Credits=0':SaveValue cGameName, "Credits", Credits
  511. resetbackglass
  512. DMD_Init
  513. LoadEM
  514. Dim i
  515. Randomize
  516. Loadhs
  517. bAttractMode = False
  518. bOnTheFirstBall = False
  519. bBallInPlungerLane = False
  520. bBallSaverActive = False
  521. bBallSaverReady = False
  522. bMultiBallMode = False
  523. bGameInPlay = False
  524. bAutoPlunger = False
  525. bMusicOn = True
  526. BallsOnPlayfield = 0
  527. BallsInHole = 0
  528. Extraballscount = 0
  529. LastSwitchHit = ""
  530. Tilt = 0
  531. TiltSensitivity = 6
  532. Tilted = False
  533. bBonusHeld = False
  534. bJustStarted = True
  535. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 2, ""FN"":4, ""FS"":1 }"
  536. StartAttractMode
  537. GiOff
  538. SharkModeCounter=0
  539. Sharkextraballs=0
  540. Sharkwall002.visible=false
  541. ballstate=0
  542. sharkmode=0
  543. modecount=0
  544. kickervideomode.DrawStyle=0
  545.  
  546.  
  547. End Sub
  548.  
  549.  
  550. '********************
  551. ' MATHS
  552. '********************
  553.  
  554. Function RndNum(min,max)
  555. RndNum = Int(Rnd()*(max-min+1))+min ' Sets a random number between min AND max
  556. End Function
  557.  
  558.  
  559. Dim BIP
  560. BIP = 0
  561.  
  562.  
  563. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  564. ' X X X X X X X X X X X X X X X X X X X X X X X
  565. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  566. ' KEYS
  567. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  568. ' X X X X X X X X X X X X X X X X X X X X X X X
  569.  
  570.  
  571. Sub Table1_KeyDown(ByVal Keycode)
  572.  
  573. If ballrolleron = 1 then
  574. if keycode = 46 then ' C Key
  575. If contball = 1 Then
  576. contball = 0
  577. Else
  578. contball = 1
  579. End If
  580. End If
  581. End If
  582. if keycode = 48 then 'B Key
  583. If bcboost = 1 Then
  584. bcboost = bcboostmulti
  585. Else
  586. bcboost = 1
  587. End If
  588. End If
  589. if keycode = 203 then bcleft = 1 ' Left Arrow
  590. if keycode = 200 then bcup = 1 ' Up Arrow
  591. if keycode = 208 then bcdown = 1 ' Down Arrow
  592. if keycode = 205 then bcright = 1 ' Right Arrow
  593.  
  594. ' If keycode = 64 Then ShowDMDOptions cGameName 'F6
  595.  
  596. If Keycode = AddCreditKey Then
  597. Credits = Credits + 1':SaveValue cGameName, "Credits", Credits
  598. DOF 114, DOFOn
  599. If(Tilted = False)Then
  600. DMDFlush:DMD "black.jpg", "YOU GOT BALLS", "Credits: "&Credits, 1000
  601. PlaySound "fx_coin"
  602. End If
  603. End If
  604.  
  605.  
  606. If keycode = PlungerKey Then
  607. PlaySoundAt "plungerpull", Plunger
  608. Plunger.Pullback
  609. End If
  610.  
  611. If hsbModeActive = True Then
  612. EnterHighScoreKey(keycode)
  613. elseif bGameInPlay Then
  614. If keycode = LeftTiltKey Then Nudge 90, 6:PlaySound SoundFX("fx_nudge",0), 0, 1, -0.1, 0.25:CheckTilt
  615. If keycode = RightTiltKey Then Nudge 270, 6:PlaySound SoundFX("fx_nudge",0), 0, 1, 0.1, 0.25:CheckTilt
  616. If keycode = CenterTiltKey Then Nudge 0, 7:PlaySound SoundFX("fx_nudge",0), 0, 1, 1, 0.25:CheckTilt
  617. If NOT Tilted Then
  618. If keycode = LeftFlipperKey Then
  619. LeftFlipper.RotateToEnd
  620. LeftFlipperupper.RotateToEnd
  621. PlaySound SoundFX("fx_flipperup",DOFFlippers), 0, .67, AudioPan(LeftFlipper), 0.05,0,0,1,AudioFade(LeftFlipper)
  622. ldown = 1
  623. checkdown
  624. RotateLaneLightsLeft
  625. 'Board1Shake
  626. cBall1.velx = boardshake * (2*RND(1)-1)
  627. cBall1.vely = boardshake * (2*RND(1)-1)
  628. DOF 101,1
  629. ' If bSkillshotReady = False Then
  630. ' RotateLaneLightsLeft
  631. ' DOF 101,1
  632. ' End If
  633. End If
  634. If keycode = RightFlipperKey Then
  635. RightFlipper.RotateToEnd
  636. RightFlipperupper.RotateToEnd
  637. PlaySound SoundFX("fx_flipperup",DOFFlippers), 0, .67, AudioPan(RightFlipper), 0.05,0,0,1,AudioFade(RightFlipper)
  638. rdown = 1
  639. checkdown
  640. RotateLaneLightsRight
  641. 'Board2Shake
  642. cBall2.velx = boardshake * (2*RND(1)-1)
  643. cBall2.vely = boardshake * (2*RND(1)-1)
  644. DOF 102,1
  645. ' If bSkillshotReady = False Then
  646. ' RotateLaneLightsRight
  647. ' DOF 102,1
  648. ' End If
  649. End If
  650.  
  651.  
  652. If keycode = StartGameKey Then
  653.  
  654. If((PlayersPlayingGame <MaxPlayers) AND(bOnTheFirstBall = True) ) Then
  655.  
  656. If(Credits> 0)then
  657.  
  658. PlayersPlayingGame = PlayersPlayingGame + 1:Credits=credits-1:SaveValue cGameName, "Credits", Credits
  659.  
  660. If PlayersPlayingGame = 1 Then
  661. PuPlayer.playlistplayex pCallouts,"audiocallouts","player1.mp3",100,1
  662. Credits=credits-1:SaveValue cGameName, "Credits", Credits
  663. End if
  664.  
  665. If PlayersPlayingGame = 2 Then
  666. PuPlayer.playlistplayex pCallouts,"audiocallouts","player2.mp3",100,1
  667. DMDScoreNow
  668. Credits=credits-1:SaveValue cGameName, "Credits", Credits
  669. End If
  670.  
  671. If PlayersPlayingGame = 3 Then
  672. PuPlayer.playlistplayex pCallouts,"audiocallouts","player3.mp3",100,1
  673. DMDScoreNow
  674. Credits=credits-1:SaveValue cGameName, "Credits", Credits
  675. End If
  676.  
  677. If PlayersPlayingGame = 4 Then
  678. PuPlayer.playlistplayex pCallouts,"audiocallouts","player4.mp3",100,1
  679. DMDScoreNow
  680. Credits=credits-1:SaveValue cGameName, "Credits", Credits
  681. End If
  682.  
  683. TotalGamesPlayed = TotalGamesPlayed + 1
  684. savegp:SaveValue cGameName, "Credits", Credits
  685. Else
  686. ' Not Enough Credits to start a game.
  687. DOF 119, DOFOff
  688. DMD "black.jpg", "", "WE NEED BALLS!", 1000
  689. Playsound "Aww"
  690. end if
  691. End If
  692. End If
  693. End If
  694. Else
  695.  
  696. If NOT Tilted Then
  697.  
  698. If keycode = LeftFlipperKey Then helptime.enabled = true:DMDintroloop:introtime = 0
  699. If keycode = RightFlipperKey Then helptime.enabled = true:DMDintroloop:introtime = 0
  700. If keycode = StartGameKey and Credits > 0 Then
  701. If(BallsOnPlayfield = 0) Then
  702. ResetForNewGame()
  703. End If
  704. End If
  705. End If
  706. End If
  707. End Sub
  708.  
  709.  
  710. Sub Table1_KeyUp(ByVal keycode)
  711.  
  712. 'Manual Ball Control
  713.  
  714. if keycode = 203 then bcleft = 0 ' Left Arrow
  715. if keycode = 200 then bcup = 0 ' Up Arrow
  716. if keycode = 208 then bcdown = 0 ' Down Arrow
  717. if keycode = 205 then bcright = 0 ' Right Arrow
  718.  
  719. If keycode = PlungerKey Then
  720. PlaySoundAt "fx_plunger", Plunger
  721. Plunger.Fire
  722. End If
  723.  
  724. ' Table specific
  725.  
  726. If bGameInPLay and hsbModeActive <> True Then
  727.  
  728.  
  729. If keycode = LeftFlipperKey Then
  730. ldown = 0
  731. LeftFlipper.RotateToStart
  732. LeftFlipperUpper.RotateToStart
  733. PlaySound SoundFX("fx_flipperdown",DOFFlippers), 0, 1, AudioPan(LeftFlipper), 0.05,0,0,1,AudioFade(LeftFlipper)
  734. DOF 101,0
  735. End If
  736. If keycode = RightFlipperKey Then
  737. rdown = 0
  738. RightFlipper.RotateToStart
  739. RightFlipperUpper.RotateToStart
  740. PlaySound SoundFX("fx_flipperdown",DOFFlippers), 0, 1, AudioPan(RightFlipper), 0.05,0,0,1,AudioFade(RightFlipper)
  741. DOF 102,0
  742. End If
  743. Else
  744. If keycode = LeftFlipperKey Then helptime.enabled = false
  745. If keycode = RightFlipperKey Then helptime.enabled = false
  746. End If
  747.  
  748. End Sub
  749.  
  750.  
  751.  
  752. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  753. ' X X X X X X X X X X X X X X X X X X X X X X X
  754. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  755. ' MANUAL BALLCONTROL
  756. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  757. ' X X X X X X X X X X X X X X X X X X X X X X X
  758. '
  759.  
  760. Sub StartBallControl_Hit()
  761. Set ControlBall = ActiveBall
  762. contballinplay = true
  763. End Sub
  764.  
  765. Sub StopBallControl_Hit()
  766. contballinplay = false
  767. End Sub
  768.  
  769. Dim bcup, bcdown, bcleft, bcright, contball, contballinplay, ControlBall, bcboost
  770. Dim bcvel, bcyveloffset, bcboostmulti
  771.  
  772. bcboost = 1 'Do Not Change - default setting
  773. bcvel = 4 'Controls the speed of the ball movement
  774. bcyveloffset = -0.01 'Offsets the force of gravity to keep the ball from drifting vertically on the table, should be negative
  775. bcboostmulti = 3 'Boost multiplier to ball veloctiy (toggled with the B key)
  776.  
  777. Sub BallControl_Timer()
  778. If Contball and ContBallInPlay then
  779. If bcright = 1 Then
  780. ControlBall.velx = bcvel*bcboost
  781. ElseIf bcleft = 1 Then
  782. ControlBall.velx = - bcvel*bcboost
  783. Else
  784. ControlBall.velx=0
  785. End If
  786.  
  787. If bcup = 1 Then
  788. ControlBall.vely = -bcvel*bcboost
  789. ElseIf bcdown = 1 Then
  790. ControlBall.vely = bcvel*bcboost
  791. Else
  792. ControlBall.vely= bcyveloffset
  793. End If
  794. End If
  795. End Sub
  796.  
  797.  
  798.  
  799.  
  800.  
  801.  
  802. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  803. ' X X X X X X X X X X X X X X X X X X X X X X X
  804. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  805. ' SHADOWS
  806. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  807. ' X X X X X X X X X X X X X X X X X X X X X X X
  808.  
  809.  
  810. '*****************************************
  811. ' ninuzzu's FLIPPER SHADOWS
  812. '*****************************************
  813.  
  814. sub FlipperTimer_Timer()
  815. FlipperLSh.RotZ = LeftFlipper.currentangle
  816. FlipperRShup.RotZ = LeftFlipper.currentangle
  817. FlipperRSh.RotZ = RightFlipper.currentangle
  818. FlipperRShup.RotZ = RightFlipper.currentangle
  819. End Sub
  820.  
  821. '*****************************************
  822. ' ninuzzu's BALL SHADOW
  823. '*****************************************
  824. Dim BallShadow
  825. BallShadow = Array (BallShadow1,BallShadow2,BallShadow3,BallShadow4,BallShadow5)
  826.  
  827. Sub BallShadowUpdate_timer()
  828. Dim BOT, b
  829. BOT = GetBalls
  830. ' hide shadow of deleted balls
  831. If UBound(BOT)<(tnob-1) Then
  832. For b = (UBound(BOT) + 1) to (tnob-1)
  833. BallShadow(b).visible = 0
  834. Next
  835. End If
  836. ' exit the Sub if no balls on the table
  837. If UBound(BOT) = -1 Then Exit Sub
  838. ' render the shadow for each ball
  839. For b = 0 to UBound(BOT)
  840. If BOT(b).X < Table1.Width/2 Then
  841. BallShadow(b).X = ((BOT(b).X) - (Ballsize/6) + ((BOT(b).X - (Table1.Width/2))/7)) + 6
  842. Else
  843. BallShadow(b).X = ((BOT(b).X) + (Ballsize/6) + ((BOT(b).X - (Table1.Width/2))/7)) - 6
  844. End If
  845. ballShadow(b).Y = BOT(b).Y + 12
  846. If BOT(b).Z > 20 Then
  847. BallShadow(b).visible = 1
  848. Else
  849. BallShadow(b).visible = 0
  850. End If
  851. Next
  852. End Sub
  853.  
  854.  
  855. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  856. ' X X X X X X X X X X X X X X X X X X X X X X X
  857. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  858. ' TILT
  859. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  860. ' X X X X X X X X X X X X X X X X X X X X X X X
  861.  
  862.  
  863. 'NOTE: The TiltDecreaseTimer Subtracts .01 from the "Tilt" variable every round
  864.  
  865. Sub CheckTilt 'Called when table is nudged
  866. Tilt = Tilt + TiltSensitivity 'Add to tilt count
  867. TiltDecreaseTimer.Enabled = True
  868. If(Tilt> TiltSensitivity) AND(Tilt <15) Then 'show a warning
  869. DMD "black.jpg", "CAREFUL!", "DING WARNING", 3000
  870. 'PlaySound "buzz"
  871. 'PuPlayer.playlistplayex pBackglass,"videotilt","",100,1
  872. DOF 131, DOFPulse
  873. DOF 311, DOFPulse 'DOF MX - Tilt Warning
  874. End if
  875. If Tilt> 15 Then 'If more that 15 then TILT the table
  876. Tilted = True
  877. DMD "black.jpg", "DING!", "BOARD BROKEN!", 3000
  878. 'PlaySound "powerdownn"
  879. 'PuPlayer.playlistplayex pBackglass,"videotilt","",100,4
  880. DOF 310, DOFPulse 'DOF MX - TILT
  881. DOF 127, DOFOff 'DOF - Beacon - OFF
  882. DisableTable True
  883. tilttableclear.enabled = true
  884. TiltRecoveryTimer.Enabled = True 'start the Tilt delay to check for all the balls to be drained
  885. End If
  886. End Sub
  887.  
  888. Dim tilttime:tilttime = 0
  889.  
  890. sub tilttableclear_timer
  891. tilttime = tilttime + 1
  892. Select Case tilttime
  893. Case 10
  894. tableclearing
  895. End Select
  896. End Sub
  897.  
  898. Sub tableclearing
  899.  
  900. End Sub
  901.  
  902. Sub posttiltreset
  903.  
  904. End Sub
  905.  
  906. Sub TiltDecreaseTimer_Timer
  907. ' DecreaseTilt
  908. If Tilt> 0 Then
  909. Tilt = Tilt - 0.1
  910. Else
  911. TiltDecreaseTimer.Enabled = False
  912. End If
  913. End Sub
  914.  
  915. Sub DisableTable(Enabled)
  916. If Enabled Then
  917. GiOff
  918. 'LightSeqTilt.Play SeqAllOff
  919. LeftFlipper.RotateToStart
  920. LeftFlipperUpper.RotateToStart
  921. RightFlipper.RotateToStart
  922. RightFlipperUpper.RotateToStart
  923. LeftSlingshot.Disabled = 1
  924. RightSlingshot.Disabled = 1
  925. PuPlayer.playresume 4
  926. PuPlayer.playlistplayex pAudio,"audiomodes","clear.mp3",100,1
  927. PuPlayer.playlistplayex pMusic,"audioclear","clear.mp3",100, 1
  928. Else
  929. ' GiOn
  930. ' LightSeqTilt.StopPlay
  931. LeftSlingshot.Disabled = 0
  932. RightSlingshot.Disabled = 0
  933. End If
  934. End Sub
  935.  
  936. Sub TiltRecoveryTimer_Timer()
  937. If(BallsOnPlayfield = 0) Then
  938. EndOfBall()
  939. TiltRecoveryTimer.Enabled = False
  940. End If
  941. End Sub
  942.  
  943.  
  944.  
  945. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  946. ' X X X X X X X X X X X X X X X X X X X X X X X
  947. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  948. ' SOUND FUNCTIONS
  949. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  950. ' X X X X X X X X X X X X X X X X X X X X X X X
  951.  
  952.  
  953. '*********************************************************************
  954. ' Positional Sound Playback Functions
  955. '*********************************************************************
  956.  
  957. ' Play a sound, depending on the X,Y position of the table element (especially cool for surround speaker setups, otherwise stereo panning only)
  958. ' parameters (defaults): loopcount (1), volume (1), randompitch (0), pitch (0), useexisting (0), restart (1))
  959. ' Note that this will not work (currently) for walls/slingshots as these do not feature a simple, single X,Y position
  960. Sub PlayXYSound(soundname, tableobj, loopcount, volume, randompitch, pitch, useexisting, restart)
  961. PlaySound soundname, loopcount, volume, AudioPan(tableobj), randompitch, pitch, useexisting, restart, AudioFade(tableobj)
  962. End Sub
  963.  
  964. ' Similar subroutines that are less complicated to use (e.g. simply use standard parameters for the PlaySound call)
  965. Sub PlaySoundAt(soundname, tableobj)
  966. PlaySound soundname, 1, 1, AudioPan(tableobj), 0,0,0, 1, AudioFade(tableobj)
  967. End Sub
  968.  
  969. Sub PlaySoundAtBall(soundname)
  970. PlaySoundAt soundname, ActiveBall
  971. End Sub
  972.  
  973.  
  974. '*********************************************************************
  975. ' Supporting Ball & Sound Functions
  976. '*********************************************************************
  977.  
  978. Function AudioFade(tableobj) ' Fades between front and back of the table (for surround systems or 2x2 speakers, etc), depending on the Y position on the table. "table1" is the name of the table
  979. Dim tmp
  980. tmp = tableobj.y * 2 / table1.height-1
  981. If tmp > 0 Then
  982. AudioFade = Csng(tmp ^10)
  983. Else
  984. AudioFade = Csng(-((- tmp) ^10) )
  985. End If
  986. End Function
  987.  
  988. Function AudioPan(tableobj) ' Calculates the pan for a tableobj based on the X position on the table. "table1" is the name of the table
  989. Dim tmp
  990. tmp = tableobj.x * 2 / table1.width-1
  991. If tmp > 0 Then
  992. AudioPan = Csng(tmp ^10)
  993. Else
  994. AudioPan = Csng(-((- tmp) ^10) )
  995. End If
  996. End Function
  997.  
  998. Function Vol(ball) ' Calculates the Volume of the sound based on the ball speed
  999. Vol = Csng(BallVel(ball) ^2 / 50)
  1000. End Function
  1001.  
  1002. Function Pitch(ball) ' Calculates the pitch of the sound based on the ball speed
  1003. Pitch = BallVel(ball) * 20
  1004. End Function
  1005.  
  1006. Function BallVel(ball) 'Calculates the ball speed
  1007. BallVel = INT(SQR((ball.VelX ^2) + (ball.VelY ^2) ) )
  1008. End Function
  1009.  
  1010.  
  1011. '*****************************************
  1012. ' JP's VP10 Rolling Sounds
  1013. '*****************************************
  1014.  
  1015. Const tnob = 5 ' total number of balls
  1016. ReDim rolling(tnob)
  1017. InitRolling
  1018.  
  1019. Sub InitRolling
  1020. Dim i
  1021. For i = 0 to tnob
  1022. rolling(i) = False
  1023. Next
  1024. End Sub
  1025.  
  1026. Sub RollingTimer_Timer()
  1027. Dim BOT, b
  1028. BOT = GetBalls
  1029.  
  1030. ' stop the sound of deleted balls
  1031. For b = UBound(BOT) + 1 to tnob
  1032. rolling(b) = False
  1033. StopSound("fx_ballrolling" & b)
  1034. Next
  1035.  
  1036. ' exit the sub if no balls on the table
  1037. If UBound(BOT) = -1 Then Exit Sub
  1038.  
  1039. ' play the rolling sound for each ball
  1040. For b = 0 to UBound(BOT)
  1041. If BallVel(BOT(b) ) > 1 AND BOT(b).z < 30 Then
  1042. rolling(b) = True
  1043. PlaySound("fx_ballrolling" & b), -1, Vol(BOT(b)), AudioPan(BOT(b)), 0, Pitch(BOT(b)), 1, 0, AudioFade(BOT(b))
  1044. Else
  1045. If rolling(b) = True Then
  1046. StopSound("fx_ballrolling" & b)
  1047. rolling(b) = False
  1048. End If
  1049. End If
  1050. Next
  1051. End Sub
  1052.  
  1053. '**********************
  1054. ' Ball Collision Sound
  1055. '**********************
  1056.  
  1057. Sub OnBallBallCollision(ball1, ball2, velocity)
  1058. PlaySound("fx_collide"), 0, Csng(velocity) ^2 / 2000, AudioPan(ball1), 0, Pitch(ball1), 0, 0, AudioFade(ball1)
  1059. End Sub
  1060.  
  1061. '**************************************
  1062. ' Explanation of the collision routine
  1063. '**************************************
  1064.  
  1065. ' The collision is built in VP.
  1066. ' You only need to add a Sub OnBallBallCollision(ball1, ball2, velocity) and when two balls collide they
  1067. ' will call this routine. What you add in the sub is up to you. As an example is a simple Playsound with volume and paning
  1068. ' depending of the speed of the collision.
  1069.  
  1070.  
  1071. Sub Pins_Hit (idx)
  1072. PlaySound "pinhit_low", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 0, 0, AudioFade(ActiveBall)
  1073. End Sub
  1074.  
  1075. Sub aTargetsALL_Hit (idx)
  1076. select case int (rnd*6)+1
  1077. Case 1 : PlaySound "drop1", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1078. Case 2 : PlaySound "drop2", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1079. Case 3 : PlaySound "drop3", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1080. Case 4 : PlaySound "drop4", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1081. Case 5 : PlaySound "drop5", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1082. Case 6 : PlaySound "drop6", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1083. end select
  1084. End Sub
  1085.  
  1086. Sub Metals_Thin_Hit (idx)
  1087. PlaySound "metalhit_thin", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1088. End Sub
  1089.  
  1090. Sub Metals_Medium_Hit (idx)
  1091. PlaySound "metalhit_medium", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1092. End Sub
  1093.  
  1094. Sub Metals2_Hit (idx)
  1095. PlaySound "metalhit2", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1096. End Sub
  1097.  
  1098. Sub Gates_Hit (idx)
  1099. PlaySound "gate4", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1100. End Sub
  1101.  
  1102. Sub Spinner_Spin
  1103. PlaySound "fx_spinner", 0, .25, AudioPan(Spinner), 0.25, 0, 0, 1, AudioFade(Spinner)
  1104. End Sub
  1105.  
  1106. Sub Rubbers_Hit(idx)
  1107.  
  1108. Select Case Int(Rnd*7)+1
  1109. Case 1 : ActiveBall.velx = Activeball.velx/1 : ActiveBall.vely = Activeball.vely/1
  1110. Case 2 : ActiveBall.velx = Activeball.velx/1 : ActiveBall.vely = Activeball.vely/1
  1111. Case 3 : ActiveBall.velx = Activeball.velx/1 : ActiveBall.vely = Activeball.vely/1
  1112. Case 4 : ActiveBall.velx = Activeball.velx/1 : ActiveBall.vely = Activeball.vely/1
  1113. Case 4 : ActiveBall.velx = Activeball.velx/1 : ActiveBall.vely = Activeball.vely/1
  1114. Case 5 : ActiveBall.velx = Activeball.velx/2 : ActiveBall.vely = Activeball.vely/1.1
  1115. Case 6 : ActiveBall.velx = Activeball.velx/2 : ActiveBall.vely = Activeball.vely/1.3
  1116. Case 7 : ActiveBall.velx = Activeball.velx/2 : ActiveBall.vely = Activeball.vely/1.5
  1117. End Select
  1118.  
  1119. dim finalspeed
  1120. finalspeed=SQR(activeball.velx * activeball.velx + activeball.vely * activeball.vely)
  1121. If finalspeed > 20 then
  1122. PlaySound "fx_rubber2", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1123. End if
  1124. If finalspeed >= 6 AND finalspeed <= 20 then
  1125. RandomSoundRubber()
  1126. End If
  1127. End Sub
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134. Sub Posts_Hit(idx)
  1135.  
  1136. Select Case Int(Rnd*7)+1
  1137. Case 1 : ActiveBall.velx = Activeball.velx/1 : ActiveBall.vely = Activeball.vely/1
  1138. Case 2 : ActiveBall.velx = Activeball.velx/1 : ActiveBall.vely = Activeball.vely/1
  1139. Case 3 : ActiveBall.velx = Activeball.velx/1 : ActiveBall.vely = Activeball.vely/1
  1140. Case 4 : ActiveBall.velx = Activeball.velx/1 : ActiveBall.vely = Activeball.vely/1
  1141. Case 4 : ActiveBall.velx = Activeball.velx/1 : ActiveBall.vely = Activeball.vely/1
  1142. Case 5 : ActiveBall.velx = Activeball.velx/2 : ActiveBall.vely = Activeball.vely/1.1
  1143. Case 6 : ActiveBall.velx = Activeball.velx/2 : ActiveBall.vely = Activeball.vely/1.3
  1144. Case 7 : ActiveBall.velx = Activeball.velx/2 : ActiveBall.vely = Activeball.vely/1.5
  1145. End Select
  1146.  
  1147. dim finalspeed
  1148. finalspeed=SQR(activeball.velx * activeball.velx + activeball.vely * activeball.vely)
  1149. If finalspeed > 16 then
  1150. PlaySound "fx_rubber2", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1151. End if
  1152. If finalspeed >= 6 AND finalspeed <= 16 then
  1153. RandomSoundRubber()
  1154. End If
  1155. End Sub
  1156.  
  1157. Sub RandomSoundRubber()
  1158. Select Case Int(Rnd*3)+1
  1159. Case 1 : PlaySound "rubber_hit_1", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1160. Case 2 : PlaySound "rubber_hit_2", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1161. Case 3 : PlaySound "rubber_hit_3", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1162. End Select
  1163. End Sub
  1164.  
  1165. Sub LeftFlipper_Collide(parm)
  1166. RandomSoundFlipper()
  1167. End Sub
  1168.  
  1169. Sub LeftFlipperupper_Collide(parm)
  1170. RandomSoundFlipper()
  1171. End Sub
  1172.  
  1173. Sub RightFlipper_Collide(parm)
  1174. RandomSoundFlipper()
  1175. End Sub
  1176.  
  1177. Sub RightFlipperupper_Collide(parm)
  1178. RandomSoundFlipper()
  1179. End Sub
  1180.  
  1181. Sub RandomSoundFlipper()
  1182. Select Case Int(Rnd*3)+1
  1183. Case 1 : PlaySound "flip_hit_1", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1184. Case 2 : PlaySound "flip_hit_2", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1185. Case 3 : PlaySound "flip_hit_3", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1186. End Select
  1187. End Sub
  1188.  
  1189. sub rramprolling_hit()
  1190. PlaySound "fx_Rolling_Plastic0", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1191. end sub
  1192.  
  1193. sub rramprolling_unhit()
  1194. Stopsound "fx_Rolling_Plastic0"
  1195. end sub
  1196.  
  1197. sub lramprolling1_hit()
  1198. PlaySound "fx_Rolling_Plastic0", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1199. end sub
  1200.  
  1201. sub lramprolling1_unhit()
  1202. Stopsound "fx_Rolling_Plastic0"
  1203. end sub
  1204.  
  1205. sub lramprolling2_hit()
  1206. PlaySound "fx_Rolling_Plastic0", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1207. end sub
  1208.  
  1209. sub lramprolling2_unhit()
  1210. Stopsound "fx_Rolling_Plastic0"
  1211. end sub
  1212.  
  1213. Sub plasticramps_Hit(idx)
  1214. PlaySound "fx_Rolling_plastic0", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  1215. End Sub
  1216.  
  1217. Sub plasticramps_UnHit(idx)
  1218. PlaySound "fx_Rolling_plastic0"
  1219. End Sub
  1220.  
  1221. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1222. ' X X X X X X X X X X X X X X X X X X X X X X X
  1223. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  1224. ' START GAME, END GAME
  1225. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  1226. ' X X X X X X X X X X X X X X X X X X X X X X X
  1227.  
  1228. '
  1229. Sub ResetForNewGame()
  1230. Dim i
  1231. bGameInPLay = True
  1232. StopAttractMode
  1233. GiOff
  1234. TotalGamesPlayed = TotalGamesPlayed + 1
  1235. savegp
  1236. CurrentPlayer = 1
  1237. PlayersPlayingGame = 1
  1238. bOnTheFirstBall = True
  1239. For i = 1 To MaxPlayers
  1240. Score(i) = 0
  1241. BonusPoints(i) = 0
  1242. BonusHeldPoints(i) = 0
  1243. BonusMultiplier(i) = 1
  1244. BallsRemaining(i) = 3
  1245. ExtraBallsAwards(i) = 0
  1246. Boards(i) = 0
  1247. spotmastered(i) = 0
  1248. bumpercount = 0
  1249. waxcount (i) = 0
  1250. endlesssummerbonus = 0
  1251. endlesssummerbonuspre = 0
  1252. Skeetbonus = 0
  1253. Skeetbonuspre = 0
  1254. Sexwaxfrenzybonus = 0
  1255. Sexwaxfrenzybonuspre = 0
  1256. loopbonus = 0
  1257. loopbonuspre = 0
  1258. offthelipbonus = 0
  1259. offthelipbonuspre = 0
  1260. aerialbonus = 0
  1261. aerialbonuspre = 0
  1262. diversitymultiplier = 0
  1263. AwardPoints = 0
  1264. TotalBonus = 0
  1265. waxcountleft = 0
  1266. progress(i) = 0
  1267. modecount = 0
  1268. kickerticket.enabled=false:light_ticketarrow.state=0:light_planearrow.state=0:Light_plane.state=0:Kickerflight.enabled=false:ripcurl.enabled=true
  1269.  
  1270. Next
  1271.  
  1272. surfmusic1.enabled=false:surfmusic2.enabled=false:surfmusic3.enabled=false:surfmusic4.enabled=false:surfmusic5.enabled=false
  1273. gateleft.open=false:gateright.open=false
  1274. triggerloop.enabled=false
  1275. triggeroffthelip.enabled=false
  1276. triggeraerial.enabled=false
  1277. kickerleft.enabled=false
  1278. waxcount10.visible=false
  1279. lightSurfMode1.state=0:lightSurfMode2.state=0:lightSurfMode3.state=0:lightSurfMode4.state=0
  1280. lightSharkMode1.state=0:lightSharkMode2.state=0:lightSharkMode3.state=0:lightSharkMode4.state=0
  1281. outro.enabled=false
  1282. Sharkwall002.visible=false
  1283.  
  1284.  
  1285.  
  1286. DOF 105, DOFOn
  1287. GiOff
  1288. For each a in GI
  1289. a.State = 0
  1290. a.Intensity=2
  1291. a.fadespeedup=0.1
  1292. a.fadespeeddown=0.1
  1293. Next
  1294. TimerBoardwall3down.Enabled = true
  1295.  
  1296.  
  1297. l21.state=2:l22.state=2:l23.state=2
  1298. l1.state=0:l2.state=0:l3.state=0:l4.state=0:light_kickback.state=0
  1299. l31.state=2:l32.state=2:l33.state=2
  1300. l11.state=2:l12.state=0:l13.state=0:l14.state=0:l15.state=0:l16.state=0:l17.state=0
  1301. Light_Tubearrow1.state=0:Light_Tubearrow2.state=0:Light_Tubearrow3.state=0
  1302. Light_Tubewave1.state=0:Light_Tubewave2.state=0:Light_Tubewave3.state=0
  1303. Light_Ticketarrow.state=0:Light_ticket.state=0:Light_Triggershot_right.state=0:Light_plane.state=0:Light_planearrow.state=0
  1304. Light_waxbowl.state=0
  1305. For each xx in aTargetsES:xx.isdropped = false : Next
  1306. For each xx in aLightsES:xx.state=2 : Next
  1307. For each xx in aTargetsSKEET:xx.isdropped = false : Next
  1308. For each xx in aLightsSKEET:xx.state=2 : Next
  1309. Boardwall1.transY = 0:boardwall1.collidable=true:boardwall1.visible=true
  1310. Boardwall2.transY = 0:boardwall2.collidable=true:boardwall2.visible=true
  1311. DOF 105,DOFOff
  1312.  
  1313.  
  1314.  
  1315. Tilt = 0
  1316. Game_Init()
  1317. vpmtimer.addtimer 1500, "FirstBall '"
  1318. End Sub
  1319.  
  1320.  
  1321. Sub EndOfGame()
  1322. PuPlayer.playlistplayex pBackglass,"videodiv","finalwipeout.mp4",0,1
  1323. PuPlayer.playlistplayex pMusic,"musicdiv","ESsong_finalwipeout.mp3",100, 1
  1324. DMD "black.jpg", "SESSION OVER", "SURF AGAIN!", 31000
  1325. outro.enabled=true
  1326. scorebg.enabled=false
  1327. GiOff
  1328. bGameInPLay = False
  1329. bJustStarted = False
  1330. End Sub
  1331.  
  1332.  
  1333. Sub outro_timer()
  1334. introposition = 0
  1335. ' bGameInPLay = False
  1336. ' bJustStarted = False
  1337. Dim i
  1338. StartAttractMode
  1339. outro.enabled=false
  1340. End Sub
  1341.  
  1342. '*******************************************************************************************************************
  1343.  
  1344.  
  1345. '***UltraDMD_Options.vbs version 1.0***'
  1346. '
  1347. 'by ninuzzu
  1348. '
  1349. 'This script will load UltraDMD and bring a GUI to change some options on the fly.
  1350. 'Use it for all your UDMD based original tables!
  1351. '
  1352. '--------
  1353. 'USAGE
  1354. '--------
  1355. 'Copy this script in your VP Scripts folder
  1356. 'Add this code at the very beginning of your table script, so the table loads it:
  1357. '
  1358. 'On Error Resume Next
  1359. 'ExecuteGlobal GetTextFile("UltraDMD_Options.vbs")
  1360. 'If Err Then MsgBox "Unable to open UltraDMD_Options.vbs. Ensure that it is placed in the Scripts folder"
  1361. 'On Error Goto 0
  1362. '
  1363. '
  1364. 'Now define the name for your table(this is NOT the table name you find in the Properties window of the VP Editor,
  1365. 'this is a unique name and it's used to save the settings inside the VPReg.stg, and by the B2S aswell), e.g.:
  1366. '
  1367. 'Const cGameName = "uefa_cl"
  1368. '
  1369. 'Define the UltraDMD Project folder name (the folder that contains dmd assets, only the name, without the .UltraDMD)
  1370. '
  1371. 'Const cAssetsFolder="ChampionsLeague"
  1372. '
  1373. 'Add the default text color to use with your table (right click on UDMD window to get the color list). e.g.:
  1374. '
  1375. 'Const cDefaultDMDColor = "PowderBlue"
  1376. '
  1377. 'In order to initialize the options and load UltraDMD, add in table_init:
  1378. '
  1379. 'InitUltraDMD cAssetsFolder,cGameName
  1380. '
  1381. 'For example:
  1382. '
  1383. 'Sub table1_init
  1384. 'InitUltraDMD cAssetsFolder,cGameName
  1385. '....
  1386. 'End Sub
  1387. '
  1388. '
  1389. 'Lastly, on table exit, add
  1390. '
  1391. 'ExitUltraDMD
  1392. '
  1393. 'So the options will reset and DMD will close correctly when you exit the table:
  1394. '
  1395. 'Sub table1_exit
  1396. 'ExitUltraDMD
  1397. '....
  1398. 'End Sub
  1399. '
  1400. 'When you are ingame, you can open the options menu anytime with
  1401. '
  1402. 'ShowDMDOptions cGameName
  1403. '
  1404. 'Let's say you want to open it using the F6 key, you'll write (in the keydown sub):
  1405. '
  1406. 'If keycode = 64 Then ShowDMDOptions cGameName
  1407. '
  1408. '--------
  1409. 'INFO
  1410. '--------
  1411. 'There are 4 options you can change in the GUI:
  1412. '1)The 1st option sets the DMD to render scenes in Full Color, valid only with ultradmd 1.4 and above
  1413. '2)The 2nd changes the DMD text color
  1414. '3)The 3rd changes the DMD size
  1415. '4)The 4th changes the DMD position
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421. Dim UltraDMD,TableShowOptions,UDMDOptions,DMDOldColor,DMDOldFullColor
  1422. Dim optOpenAtStart,optUseFullColor,optDMDColorChange,optDMDColorType,optUDMDWidth,optUDMDHeight,optDMDPosX,optDMDPosY
  1423.  
  1424. Const UltraDMD_VideoMode_Stretch=0, UltraDMD_VideoMode_Top = 1, UltraDMD_VideoMode_Middle = 2, UltraDMD_VideoMode_Bottom = 3
  1425. Const UltraDMD_Animation_FadeIn = 0, UltraDMD_Animation_FadeOut = 1, UltraDMD_Animation_ZoomIn = 2, UltraDMD_Animation_ZoomOut = 3
  1426. Const UltraDMD_Animation_ScrollOffLeft = 4, UltraDMD_Animation_ScrollOffRight = 5, UltraDMD_Animation_ScrollOnLeft = 6, UltraDMD_Animation_ScrollOnRight = 7,_
  1427. UltraDMD_Animation_ScrollOffUp = 8,UltraDMD_Animation_ScrollOffDown = 9,UltraDMD_Animation_ScrollOnUp = 10,UltraDMD_Animation_ScrollOnDown = 11,UltraDMD_Animation_None = 14
  1428.  
  1429. 'Function to initialize dmd options and load UltraDMD
  1430. Function InitUltraDMD(ProjectFolderName,TableOptName)
  1431. UDMDoptions = LoadValue(TableOptName,"DMD Options") 'load saved dmd options
  1432. If UDMDoptions = "" Then 'if no existing options
  1433. UDMDoptions = 1*2^0 + 0*2^1 + 1*2^2 'set dmd options to default options
  1434. GetDMDOptions(TableOptName) 'get DMD Options
  1435. TableShowOptions = createInput("ULTRADMD Options",TableOptName) 'show the options menu
  1436. Else
  1437. GetDMDOptions(TableOptName)
  1438. If optOpenAtStart=1 Then 'if Enable Next Start was selected
  1439. UDMDoptions = UDMDoptions - 1 'clear setting to avoid future executions
  1440. GetDMDOptions(TableOptName) 'get DMD Options
  1441. TableShowOptions = createInput("ULTRADMD Options",TableOptName) 'show the options menu
  1442. End If
  1443. End If
  1444. LoadUltraDMD ProjectFolderName,TableOptName
  1445. End Function
  1446.  
  1447. 'Function to initialize UltraDMD
  1448. Function LoadUltraDMD(ProjectFolderName,TableOptName)
  1449. Set UltraDMD = CreateObject("UltraDMD.DMDObject")
  1450. ' A Major version change indicates the version is no longer backward compatible
  1451. If Not UltraDMD.GetMajorVersion = 1 Then
  1452. MsgBox "Incompatible Version of UltraDMD found."
  1453. QuitPlayer:Exit Function
  1454. End If
  1455. 'Check if UMD v1.4 is running
  1456. If UltraDMD.GetMinorVersion<4 AND optUseFullColor=1 Then
  1457. MsgBox "Full Color not supported. Please upgrade to UltraDMD v1.4" & VbCrLf & "Exiting so changes will take effect..."
  1458. Dim WshShell:Set WshShell = CreateObject("WScript.Shell")
  1459. WshShell.RegWrite "HKCU\Software\UltraDMD\fullcolor","False","REG_SZ"
  1460. SaveValue TableOptName, "DMD Options", 1
  1461. QuitPlayer:Exit Function
  1462. End If
  1463. UltraDMD.Init
  1464. 'Sets the project folder and video stretch mode
  1465. Dim fso,curDir
  1466. Set fso = CreateObject("Scripting.FileSystemObject")
  1467. curDir = fso.GetAbsolutePathName(".")
  1468. UltraDMD.SetProjectFolder curDir & "\"& ProjectFolderName &".UltraDMD"
  1469. If NOT fso.FolderExists(curDir & "\"& ProjectFolderName &".UltraDMD") Then
  1470. MsgBox ProjectFolderName & ".UltraDMD" & " not found." & VbCrLf & "Please copy it in the same folder as this table" & VbCrLf & "DMD animations can't be shown!!"
  1471. End If
  1472. UltraDMD.SetVideoStretchMode UltraDMD_VideoMode_Middle
  1473. End Function
  1474.  
  1475. 'Function to reset the DMD color settings and close UltraDMD on table exit
  1476. Function ExitUltraDMD
  1477. On Error Resume Next
  1478. If UltraDMD.IsRendering Then UltraDMD.CancelRendering
  1479. If Error.Number<>0 Then UltraDMD = Null:Exit Function
  1480. Dim WshShell:Set WshShell = CreateObject("WScript.Shell")
  1481. WshShell.RegWrite "HKCU\Software\UltraDMD\color",DMDOldColor,"REG_SZ"
  1482. WshShell.RegWrite "HKCU\Software\UltraDMD\fullcolor",DMDOldFullColor,"REG_SZ"
  1483. UltraDMD = Null
  1484. End Function
  1485.  
  1486. 'Function to show the dmd options menu on screen
  1487. Function ShowDMDOptions(TableOptName)
  1488. GetDMDOptions(TableOptName):TableShowOptions = createInput("ULTRADMD Options",TableOptName)
  1489. End Function
  1490.  
  1491. 'Function to get the DMD options from both registry and \User\VPReg.stg
  1492. Function GetDMDOptions(TableOptName)
  1493. Dim WshShell:Set WshShell = CreateObject("WScript.Shell")
  1494. On Error Resume Next
  1495. WshShell.RegRead ("HKCU\Software\UltraDMD\")
  1496. If Err.number <> 0 Then
  1497. On Error Goto 0
  1498. 'Resetting to defaults
  1499. WshShell.RegWrite "HKCU\Software\UltraDMD\fullcolor","False","REG_SZ"
  1500. WshShell.RegWrite "HKCU\Software\UltraDMD\color","OrangeRed","REG_SZ"
  1501. WshShell.RegWrite "HKCU\Software\UltraDMD\hideVDMD","False","REG_SZ"
  1502. End If
  1503. Dim tmp:tmp=UDMDoptions
  1504. optUseFullColor=Int(tmp/2^2)
  1505. tmp=tmp mod 2^2
  1506. optDMDColorChange=Int(tmp/2)
  1507. tmp=tmp mod 2
  1508. optOpenAtStart=Int(tmp)
  1509. tmp=tmp mod 1
  1510. On Error Resume Next
  1511. 'temporary save the previous color and full color settings
  1512. DMDOldColor=WshShell.RegRead ("HKCU\Software\UltraDMD\color")
  1513. DMDOldFullColor=WshShell.RegRead ("HKCU\Software\UltraDMD\fullcolor")
  1514. If DMDOldFullColor="" Then DMDOldFullColor = "False"
  1515. On Error Resume Next
  1516. optUDMDWidth = WshShell.RegRead ("HKCU\Software\UltraDMD\w")
  1517. optUDMDHeight = WshShell.RegRead ("HKCU\Software\UltraDMD\h")
  1518. optDMDPosX = WshShell.RegRead ("HKCU\Software\UltraDMD\x")
  1519. optDMDPosY = WshShell.RegRead ("HKCU\Software\UltraDMD\y")
  1520. 'if user changed the color, remember the value
  1521. If optDMDColorChange=0 Then optDMDColorType=cDefaultDMDColor Else optDMDColorType = LoadValue (TableOptName, "DMD Color") End If
  1522. If optUDMDWidth = "" Then optUDMDWidth = 512
  1523. If optUDMDHeight = "" Then optUDMDHeight = 128
  1524. If optDMDPosX = "" Then optDMDPosX = 20
  1525. If optDMDPosY = "" Then optDMDPosY = 20
  1526. If optUseFullColor=0 Then
  1527. WshShell.RegWrite "HKCU\Software\UltraDMD\fullcolor","False","REG_SZ"
  1528. Else
  1529. WshShell.RegWrite "HKCU\Software\UltraDMD\fullcolor","True","REG_SZ"
  1530. End If
  1531. WshShell.RegWrite "HKCU\Software\UltraDMD\color",optDMDColorType,"REG_SZ"
  1532. WshShell.Terminate
  1533. End Function
  1534.  
  1535. 'Function to create a window in HTML
  1536. Function createInput(title,TableOptName)
  1537. Dim sHTMLCode, status
  1538. 'Set the HTML code for the window
  1539. sHTMLCode = _
  1540. "<html>" &_
  1541. "<head>" &_
  1542. "<style>" &_
  1543. ".button{" &_
  1544. "position:absolute;" &_
  1545. "color: black; border: 2px solid #000000;" &_
  1546. "left:200px;top:350px; height:40px; width=60px; font-size=18; cursor:pointer}" &_
  1547. "</style>" &_
  1548. "</head>" &_
  1549. "<script language='VbScript'>" &_
  1550. "sub UpdateOpt:If resizeDMD.Checked Then DMDWPos.disabled=false:DMDHPos.disabled=false Else DMDWPos.disabled=true:DMDHPos.disabled=true End If:" &_
  1551. "If colorDMDSet.Checked Then dmdtxtcol.disabled=false Else dmdtxtcol.disabled=true End If:" &_
  1552. "If posDMD.Checked Then DMDXPos.disabled=false:DMDYPos.disabled=false Else DMDXPos.disabled=true:DMDYPos.disabled=true End If:end sub" &_
  1553. "</script>" &_
  1554. "<table>" &_
  1555. "<TD><font size='2'>Use Full Color DMD (only for UDMD v1.4 and above)</font><input type='checkbox' name='colorDMD'></TD>" &_
  1556. "</table>" &_
  1557. "</br>" &_
  1558. "<table>" &_
  1559. "<TD><font size='2'>Change DMD Text Color</font><input type='checkbox' name='colorDMDSet' Onclick='UpdateOpt'></TD>" &_
  1560. "<TD>" &_
  1561. "<font size='2'>Color: </font>" &_
  1562. "<SELECT NAME='dmdtxtcol' disabled>" &_
  1563. "<OPTION value='AliceBlue'>AliceBlue" &_
  1564. "<OPTION value='AntiqueWhite'>AntiqueWhite" &_
  1565. "<OPTION value='Aqua'>Aqua" &_
  1566. "<OPTION value='Aquamarine'>Aquamarine" &_
  1567. "<OPTION value='Azure'>Azure" &_
  1568. "<OPTION value='Beige'>Beige" &_
  1569. "<OPTION value='Bisque'>Bisque" &_
  1570. "<OPTION value='BlanchedAlmond'>BlanchedAlmond" &_
  1571. "<OPTION value='Blue'>Blue" &_
  1572. "<OPTION value='BlueViolet'>BlueViolet" &_
  1573. "<OPTION value='Brown'>Brown" &_
  1574. "<OPTION value='BurlyWood'>BurlyWood" &_
  1575. "<OPTION value='CadetBlue'>CadetBlue" &_
  1576. "<OPTION value='Chartreuse'>Chartreuse" &_
  1577. "<OPTION value='Chocolate'>Chocolate" &_
  1578. "<OPTION value='Coral'>Coral" &_
  1579. "<OPTION value='CornflowerBlue'>CornflowerBlue" &_
  1580. "<OPTION value='Cornsilk'>Cornsilk" &_
  1581. "<OPTION value='Crimson'>Crimson" &_
  1582. "<OPTION value='Cyan'>Cyan" &_
  1583. "<OPTION value='DarkBlue'>DarkBlue" &_
  1584. "<OPTION value='DarkCyan'>DarkCyan" &_
  1585. "<OPTION value='DarkGoldenrod'>DarkGoldenrod" &_
  1586. "<OPTION value='DarkGray'>DarkGray" &_
  1587. "<OPTION value='DarkGreen'>DarkGreen" &_
  1588. "<OPTION value='DarkKhaki'>DarkKhaki" &_
  1589. "<OPTION value='DarkMagenta'>DarkMagenta" &_
  1590. "<OPTION value='DarkOliveGreen'>DarkOliveGreen" &_
  1591. "<OPTION value='DarkOrange'>DarkOrange" &_
  1592. "<OPTION value='DarkOrchid'>DarkOrchid" &_
  1593. "<OPTION value='DarkRed'>DarkRed" &_
  1594. "<OPTION value='DarkSalmon'>DarkSalmon" &_
  1595. "<OPTION value='DarkSeaGreen'>DarkSeaGreen" &_
  1596. "<OPTION value='DarkSlateBlue'>DarkSlateBlue" &_
  1597. "<OPTION value='DarkSlateGray'>DarkSlateGray" &_
  1598. "<OPTION value='DarkTurquoise'>DarkTurquoise" &_
  1599. "<OPTION value='DarkViolet'>DarkViolet" &_
  1600. "<OPTION value='DeepPink'>DeepPink" &_
  1601. "<OPTION value='DeepSkyBlue'>DeepSkyBlue" &_
  1602. "<OPTION value='DimGray'>DimGray" &_
  1603. "<OPTION value='DodgerBlue'>DodgerBlue" &_
  1604. "<OPTION value='Firebrick'>Firebrick" &_
  1605. "<OPTION value='FloralWhite'>FloralWhite" &_
  1606. "<OPTION value='ForestGreen'>ForestGreen" &_
  1607. "<OPTION value='Fuchsia'>Fuchsia" &_
  1608. "<OPTION value='Gainsboro'>Gainsboro" &_
  1609. "<OPTION value='GhostWhite'>GhostWhite" &_
  1610. "<OPTION value='Gold'>Gold" &_
  1611. "<OPTION value='Goldenrod'>Goldenrod" &_
  1612. "<OPTION value='Gray'>Gray" &_
  1613. "<OPTION value='Green'>Green" &_
  1614. "<OPTION value='GreenYellow'>GreenYellow" &_
  1615. "<OPTION value='Honeydew'>Honeydew" &_
  1616. "<OPTION value='HotPink'>HotPink" &_
  1617. "<OPTION value='IndianRed'>IndianRed" &_
  1618. "<OPTION value='Indigo'>Indigo" &_
  1619. "<OPTION value='Ivory'>Ivory" &_
  1620. "<OPTION value='Khaki'>Khaki" &_
  1621. "<OPTION value='Lavender'>Lavender" &_
  1622. "<OPTION value='LavenderBlush'>LavenderBlush" &_
  1623. "<OPTION value='LawnGreen'>LawnGreen" &_
  1624. "<OPTION value='LemonChiffon'>LemonChiffon" &_
  1625. "<OPTION value='LightBlue'>LightBlue" &_
  1626. "<OPTION value='LightCoral'>LightCoral" &_
  1627. "<OPTION value='LightCyan'>LightCyan" &_
  1628. "<OPTION value='LightGoldenrodYellow'>LightGoldenrodYellow" &_
  1629. "<OPTION value='LightGray'>LightGray" &_
  1630. "<OPTION value='LightGreen'>LightGreen" &_
  1631. "<OPTION value='LightPink'>LightPink" &_
  1632. "<OPTION value='LightSalmon'>LightSalmon" &_
  1633. "<OPTION value='LightSeaGreen'>LightSeaGreen" &_
  1634. "<OPTION value='LightSkyBlue'>LightSkyBlue" &_
  1635. "<OPTION value='LightSlateGray'>LightSlateGray" &_
  1636. "<OPTION value='LightSteelBlue'>LightSteelBlue" &_
  1637. "<OPTION value='LightYellow'>LightYellow" &_
  1638. "<OPTION value='Lime'>Lime" &_
  1639. "<OPTION value='LimeGreen'>LimeGreen" &_
  1640. "<OPTION value='Linen'>Linen" &_
  1641. "<OPTION value='Magenta'>Magenta" &_
  1642. "<OPTION value='Maroon'>Maroon" &_
  1643. "<OPTION value='MediumAquamarine'>MediumAquamarine" &_
  1644. "<OPTION value='MediumBlue'>MediumBlue" &_
  1645. "<OPTION value='MediumOrchid'>MediumOrchid" &_
  1646. "<OPTION value='MediumPurple'>MediumPurple" &_
  1647. "<OPTION value='MediumSeaGreen'>MediumSeaGreen" &_
  1648. "<OPTION value='MediumSlateBlue'>MediumSlateBlue" &_
  1649. "<OPTION value='MediumSpringGreen'>MediumSpringGreen" &_
  1650. "<OPTION value='MediumTurquoise'>MediumTurquoise" &_
  1651. "<OPTION value='MediumVioletRed'>MediumVioletRed" &_
  1652. "<OPTION value='MidnightBlue'>MidnightBlue" &_
  1653. "<OPTION value='MintCream'>MintCream" &_
  1654. "<OPTION value='MistyRose'>MistyRose" &_
  1655. "<OPTION value='Moccasin'>Moccasin" &_
  1656. "<OPTION value='NavajoWhite'>NavajoWhite" &_
  1657. "<OPTION value='Navy'>Navy" &_
  1658. "<OPTION value='OldLace'>OldLace" &_
  1659. "<OPTION value='Olive'>Olive" &_
  1660. "<OPTION value='OliveDrab'>OliveDrab" &_
  1661. "<OPTION value='Orange'>Orange" &_
  1662. "<OPTION value='OrangeRed'>OrangeRed" &_
  1663. "<OPTION value='Orchid'>Orchid" &_
  1664. "<OPTION value='PaleGoldenrod'>PaleGoldenrod" &_
  1665. "<OPTION value='PaleGreen'>PaleGreen" &_
  1666. "<OPTION value='PaleTurquoise'>PaleTurquoise" &_
  1667. "<OPTION value='PaleVioletRed'>PaleVioletRed" &_
  1668. "<OPTION value='PapayaWhip'>PapayaWhip" &_
  1669. "<OPTION value='PeachPuff'>PeachPuff" &_
  1670. "<OPTION value='Peru'>Peru" &_
  1671. "<OPTION value='Pink'>Pink" &_
  1672. "<OPTION value='Plum'>Plum" &_
  1673. "<OPTION value='PowderBlue'>PowderBlue" &_
  1674. "<OPTION value='Purple'>Purple" &_
  1675. "<OPTION value='Red'>Red" &_
  1676. "<OPTION value='RosyBrown'>RosyBrown" &_
  1677. "<OPTION value='RoyalBlue'>RoyalBlue" &_
  1678. "<OPTION value='SaddleBrown'>SaddleBrown" &_
  1679. "<OPTION value='Salmon'>Salmon" &_
  1680. "<OPTION value='SandyBrown'>SandyBrown" &_
  1681. "<OPTION value='SeaGreen'>SeaGreen" &_
  1682. "<OPTION value='SeaShell'>SeaShell" &_
  1683. "<OPTION value='Sienna'>Sienna" &_
  1684. "<OPTION value='Silver'>Silver" &_
  1685. "<OPTION value='SkyBlue'>SkyBlue" &_
  1686. "<OPTION value='SlateBlue'>SlateBlue" &_
  1687. "<OPTION value='SlateGray'>SlateGray" &_
  1688. "<OPTION value='Snow'>Snow" &_
  1689. "<OPTION value='SpringGreen'>SpringGreen" &_
  1690. "<OPTION value='SteelBlue'>SteelBlue" &_
  1691. "<OPTION value='Tan'>Tan" &_
  1692. "<OPTION value='Teal'>Teal" &_
  1693. "<OPTION value='Thistle'>Thistle" &_
  1694. "<OPTION value='Tomato'>Tomato" &_
  1695. "<OPTION value='Transparent'>Transparent" &_
  1696. "<OPTION value='Turquoise'>Turquoise" &_
  1697. "<OPTION value='Violet'>Violet" &_
  1698. "<OPTION value='Wheat'>Wheat" &_
  1699. "<OPTION value='White'>White" &_
  1700. "<OPTION value='WhiteSmoke'>WhiteSmoke" &_
  1701. "<OPTION value='Yellow'>Yellow" &_
  1702. "<OPTION value='YellowGreen'>YellowGreen" &_
  1703. "</SELECT>" &_
  1704. "</table>" &_
  1705. "</br>" &_
  1706. "<table>" &_
  1707. "<TD><font size='2'>Auto Resize DMD</font><input type='checkbox' name='resizeDMD' Onclick='UpdateOpt'></TD>" &_
  1708. "<TD><font size='2'>DMD Width</font><input type='text' name='DMDWPos' size='10' disabled></TD>" &_
  1709. "</tr>" &_
  1710. "<TD></TD>" &_
  1711. "<TD><font size='2'>DMD Height</font><input type='text' name='DMDHPos' size='10' disabled></TD>" &_
  1712. "</table>" &_
  1713. "</br>" &_
  1714. "<table>" &_
  1715. "<tr>" &_
  1716. "<TD><font size='2'>Auto Position DMD</font><input type='checkbox' name='posDMD' Onclick='UpdateOpt'></TD>" &_
  1717. "<TD><font size='2'>DMD X Position</font><input type='text' name='DMDXPos' size='10' disabled></TD>" &_
  1718. "</tr>" &_
  1719. "<TD></TD>" &_
  1720. "<TD><font size='2'>DMD Y Position</font><input type='text' name='DMDYPos' size='10' disabled></TD>" &_
  1721. "</table>" &_
  1722. "</br>" &_
  1723. "</br>" &_
  1724. "<TD><font size='2'>Enable this menu on next start</font><input type='checkbox' name='enabledonstart'></TD>" &_
  1725. "<td><input id=1 class='button' type='button' name='btnSubmit' value='OK' onClick='status=1'></td>" &_
  1726. "</html>"
  1727.  
  1728. 'Create the window we need
  1729. with HTABox("lightgrey", 500, 450, 700, 250,TableOptName)
  1730. 'Set window title
  1731. .document.title = title
  1732. 'Fill the objects we need
  1733. .document.write sHTMLCode
  1734. ' .msg.innerHTML = sHTMLCode
  1735. .enabledonstart.Checked=optOpenAtStart
  1736. .colorDMD.Checked=optUseFullColor
  1737. .colorDMDSet.Checked=optDMDColorChange
  1738. If .colorDMDSet.Checked Then .dmdtxtcol.disabled=false Else .dmdtxtcol.disabled=true End If
  1739. .dmdtxtcol.Value=optDMDColorType
  1740. .DMDWPos.Value=optUDMDWidth
  1741. .DMDHPos.Value=optUDMDHeight
  1742. .DMDXPos.Value=optDMDPosX
  1743. .DMDYPos.Value=optDMDPosY
  1744. 'Put focus on the OK button
  1745. .btnSubmit.focus
  1746. 'set the status to 0 (then we will check it in a loop)
  1747. .status=0
  1748.  
  1749. 'Check the status of the window
  1750. Do
  1751. On Error Resume Next
  1752. status = .status
  1753. 'If the window is closed with the [X] button, there will be an error of access to it
  1754. If Err.number <> 0 Then
  1755. On Error Goto 0
  1756. 'In this case we leave the cycle
  1757. Exit Do
  1758. Else
  1759. if status = 1 Then Exit Do
  1760. End if
  1761. Loop
  1762.  
  1763. 'If the status is "1", then we write the filled values
  1764. If status = 1 Then
  1765. Dim WshShell
  1766. Set WshShell = CreateObject("WScript.Shell")
  1767. If .enabledonstart.Checked Then optOpenAtStart=1 Else optOpenAtStart=0
  1768. If .colorDMD.Checked Then optUseFullColor=1 Else optUseFullColor=0
  1769. If optUseFullColor=1 then
  1770. WshShell.RegWrite "HKCU\Software\UltraDMD\fullcolor", "True" ,"REG_SZ"
  1771. Else
  1772. WshShell.RegWrite "HKCU\Software\UltraDMD\fullcolor", "False" ,"REG_SZ"
  1773. End If
  1774. If .colorDMDSet.Checked Then
  1775. SaveValue TableOptName, "DMD Color", .dmdtxtcol.Value
  1776. WshShell.RegWrite "HKCU\Software\UltraDMD\color",.dmdtxtcol.Value,"REG_SZ"
  1777. Else
  1778. WshShell.RegWrite "HKCU\Software\UltraDMD\color",cDefaultDMDColor,"REG_SZ"
  1779. End If
  1780. If StrComp(cDefaultDMDColor,WshShell.RegRead("HKCU\Software\UltraDMD\color"),1)=0 Then optDMDColorChange=0 Else optDMDColorChange=1 End If
  1781. If .resizeDMD.Checked Then
  1782. WshShell.RegWrite "HKCU\Software\UltraDMD\w",.DMDWPos.Value,"REG_DWORD"
  1783. WshShell.RegWrite "HKCU\Software\UltraDMD\h",.DMDHPos.Value,"REG_DWORD"
  1784. End If
  1785. If .posDMD.Checked Then
  1786. WshShell.RegWrite "HKCU\Software\UltraDMD\x",.DMDXPos.Value,"REG_DWORD"
  1787. WshShell.RegWrite "HKCU\Software\UltraDMD\y",.DMDYPos.Value,"REG_DWORD"
  1788. End If
  1789. UDMDoptions = optOpenAtStart*2^0 + optDMDColorChange*2^1 + optUseFullColor*2^2
  1790. 'msgbox "Enabled on Start: " & optOpenAtStart & VbCrLf &_
  1791. ' "Use Full color: " & optUseFullColor & VbCrLf &_
  1792. ' "Change DMD color: " & optDMDColorChange
  1793. SaveValue TableOptName, "DMD Options", UDMDoptions
  1794. WshShell.Terminate
  1795. End If
  1796. .close
  1797. End With
  1798. End Function
  1799.  
  1800. 'Function to create an HTA application
  1801. Function HTABox(sBgColor, w, h, x, y, TableOptName)
  1802. Dim IE, HTA, nRnd, sCmd, objShell,objExec
  1803.  
  1804. randomize : nRnd = Int(1000000 * rnd)
  1805. sCmd = "mshta.exe ""javascript:{new " _
  1806. & "ActiveXObject(""InternetExplorer.Application"")" _
  1807. & ".PutProperty('" & nRnd & "',window);" _
  1808. & "window.resizeTo(" & w & "," & h & ");" _
  1809. & "window.moveTo(" & x & "," & y & ")}"""
  1810.  
  1811. Set objShell = CreateObject("WScript.Shell")
  1812. Set objExec = objShell.Exec (sCmd)
  1813.  
  1814. do until objShell.AppActivate("javascript:{new "): On Error Resume Next:loop
  1815.  
  1816. For Each IE In CreateObject("Shell.Application").windows
  1817. If IsObject(IE.GetProperty(nRnd)) Then
  1818. set HTABox = IE.GetProperty(nRnd)
  1819. IE.Quit
  1820. HTABox.document.title = "HTABox"
  1821.  
  1822. HTABox.document.write _
  1823. "<HTA:Application contextMenu=no border=thin minimizebutton=no maximizebutton=no >" _
  1824. & "<body scroll='no' style='background-color:" _
  1825. & sBgColor & ";font:normal 10pt Arial;" _
  1826. & "border-Style:outset;border-Width:3px'>" _
  1827. & "<center><span id=msg>&nbsp;</span></center></body>"
  1828. Exit Function
  1829. End If
  1830. Next
  1831.  
  1832. ' In case of error
  1833. objExec.Terminate
  1834. SaveValue TableOptName, "DMD Options", 4
  1835. MsgBox "There was an error with DMD Options window ! Options are set to defaults."
  1836. End Function
  1837.  
  1838. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1839. ' X X X X X X X X X X X X X X X X X X X X X X X
  1840. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  1841. ' ULTRADMD SCRIPTING
  1842. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  1843. ' X X X X X X X X X X X X X X X X X X X X X X X
  1844.  
  1845. ' Dim UltraDMD
  1846.  
  1847. Sub DMD(background, toptext, bottomtext, duration)
  1848. If turnonultradmd = 0 then exit sub
  1849. UltraDMD.DisplayScene00 background, toptext, 15, bottomtext, 15, 14, duration, 14
  1850. UltraDMDTimer.Enabled = 1 'to show the score after the animation/message
  1851. End Sub
  1852.  
  1853. Sub DMDScore
  1854. If turnonultradmd = 0 then exit sub
  1855. UltraDMD.SetScoreboardBackgroundImage "scoreboard-background.jpg", 15, 15
  1856. UltraDMD.DisplayScoreboard PlayersPlayingGame, CurrentPlayer, Score(1), Score(2), Score(3), Score(4), "Player " & CurrentPlayer, "Ball " & Balls
  1857. End Sub
  1858.  
  1859. Sub DMDScoreNow
  1860. If turnonultradmd = 0 then exit sub
  1861. DMDFlush
  1862. DMDScore
  1863. End Sub
  1864.  
  1865. Sub DMDFLush
  1866. If turnonultradmd = 0 then exit sub
  1867. UltraDMDTimer.Enabled = 0
  1868. UltraDMD.CancelRendering
  1869. End Sub
  1870.  
  1871. Sub DMDScrollCredits(background, text, duration)
  1872. If turnonultradmd = 0 then exit sub
  1873. UltraDMD.ScrollingCredits background, text, 15, 14, duration, 14
  1874. End Sub
  1875.  
  1876. Sub DMDId(id, background, toptext, bottomtext, duration)
  1877. If turnonultradmd = 0 then exit sub
  1878. UltraDMD.DisplayScene00ExwithID id, False, background, toptext, 15, 0, bottomtext, 15, 0, 14, duration, 14
  1879. End Sub
  1880.  
  1881. Sub DMDMod(id, toptext, bottomtext, duration)
  1882. If turnonultradmd = 0 then exit sub
  1883. UltraDMD.ModifyScene00Ex id, toptext, bottomtext, duration
  1884. End Sub
  1885.  
  1886. Sub UltraDMDTimer_Timer 'used for the attrackmode and the instant info.
  1887. If turnonultradmd = 0 then exit sub
  1888. If bInstantInfo Then
  1889. InstantInfo
  1890. ElseIf bAttractMode Then
  1891. ElseIf NOT UltraDMD.IsRendering Then
  1892. DMDScoreNow
  1893. ElseIf bromconfig Then
  1894. romconfig
  1895. End If
  1896. End Sub
  1897.  
  1898. Sub DMD_Init
  1899. If turnonultradmd = 0 then exit sub
  1900. Set UltraDMD = CreateObject("UltraDMD.DMDObject")
  1901. If UltraDMD is Nothing Then
  1902. MsgBox "No UltraDMD found. This table will NOT run without it."
  1903. Exit Sub
  1904. End If
  1905.  
  1906. UltraDMD.Init
  1907. If turnonultradmd = 0 then exit sub
  1908. If Not UltraDMD.GetMajorVersion = 1 Then
  1909. MsgBox "Incompatible Version of UltraDMD found."
  1910. Exit Sub
  1911. End If
  1912.  
  1913. If UltraDMD.GetMinorVersion <1 Then
  1914. If turnonultradmd = 0 then exit sub
  1915. MsgBox "Incompatible Version of UltraDMD found. Please update to version 1.1 or newer."
  1916. Exit Sub
  1917. End If
  1918.  
  1919. Dim fso:Set fso = CreateObject("Scripting.FileSystemObject")
  1920. Dim curDir:curDir = fso.GetAbsolutePathName(".")
  1921.  
  1922. Dim DirName
  1923. DirName = curDir& "\" &TableName& ".UltraDMD"
  1924.  
  1925. If Not fso.FolderExists(DirName) Then _
  1926. Msgbox "UltraDMD userfiles directory '" & DirName & "' does not exist." & CHR(13) & "No graphic images will be displayed on the DMD"
  1927. UltraDMD.SetProjectFolder DirName
  1928.  
  1929. ' wait for the animation to end
  1930. While UltraDMD.IsRendering = True
  1931. WEnd
  1932.  
  1933. End Sub
  1934.  
  1935.  
  1936.  
  1937. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1938. ' X X X X X X X X X X X X X X X X X X X X X X X
  1939. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  1940. ' Pinup Active Backglass
  1941. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  1942. ' X X X X X X X X X X X X X X X X X X X X X X X
  1943.  
  1944. '**************************
  1945. ' PinUp Player Config
  1946. ' Change HasPuP = True if using PinUp Player Videos
  1947. '**************************
  1948.  
  1949. Dim HasPup:HasPuP = True
  1950.  
  1951. Dim PuPlayer
  1952.  
  1953. Const pTopper=0
  1954. Const pDMD=1
  1955. Const pBackglass=2
  1956. Const pPlayfield=3
  1957. Const pMusic=4
  1958. Const pAudio=7
  1959. Const pCallouts=8
  1960.  
  1961. if HasPuP Then
  1962. on error resume next
  1963. Set PuPlayer = CreateObject("PinUpPlayer.PinDisplay")
  1964. on error goto 0
  1965. if not IsObject(PuPlayer) then HasPuP = False
  1966. end If
  1967.  
  1968. if HasPuP Then
  1969.  
  1970. PuPlayer.Init pBackglass,cGameName
  1971. PuPlayer.Init pMusic,cGameName
  1972. PuPlayer.Init pAudio,cGameName
  1973. PuPlayer.Init pCallouts,cGameName
  1974. If toppervideo = 1 Then
  1975. PuPlayer.Init pTopper,cGameName
  1976. End If
  1977.  
  1978. PuPlayer.SetScreenex pBackglass,0,0,0,0,0 'Set PuPlayer DMD TO Always ON <screen number> , xpos, ypos, width, height, POPUP
  1979. PuPlayer.SetScreenex pAudio,0,0,0,0,2
  1980. PuPlayer.hide pAudio
  1981. PuPlayer.SetScreenex pMusic,0,0,0,0,2
  1982. PuPlayer.hide pMusic
  1983. PuPlayer.SetScreenex pCallouts,0,0,0,0,2
  1984. PuPlayer.hide pCallouts
  1985.  
  1986. Sub chilloutthemusic
  1987. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 2, ""FN"":11, ""VL"":10 }"
  1988. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 4, ""FN"":11, ""VL"":10 }"
  1989. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 7, ""FN"":11, ""VL"":10 }"
  1990. vpmtimer.addtimer 3000, "turnitbackup'"
  1991. End Sub
  1992.  
  1993. Sub turnitbackup
  1994. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 2, ""FN"":11, ""VL"":99 }"
  1995. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 4, ""FN"":11, ""VL"":99 }"
  1996. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 7, ""FN"":11, ""VL"":99 }"
  1997. End Sub
  1998.  
  1999.  
  2000.  
  2001. PuPlayer.playlistadd pAudio,"audioevents", 1 , 0
  2002. PuPlayer.playlistadd pAudio,"audiobg", 1 , 0
  2003. PuPlayer.playlistadd pAudio,"audiocheers", 1 , 0
  2004. PuPlayer.playlistadd pAudio,"audioclear", 1 , 0
  2005. PuPlayer.playlistadd pAudio,"audiocallouts", 1 , 0
  2006. PuPlayer.playlistadd pAudio,"ripcurl", 1 , 0
  2007. PuPlayer.playlistadd pAudio,"newball", 1 , 0
  2008. PuPlayer.playlistadd pAudio,"reball", 1 , 0
  2009. PuPlayer.playlistadd pAudio,"extraball", 1 , 0
  2010. PuPlayer.playlistadd pAudio,"boards", 1 , 0
  2011. PuPlayer.playlistadd pAudio,"drains", 1 , 0
  2012. PuPlayer.playlistadd pAudio,"drain2", 1 , 0
  2013. PuPlayer.playlistadd pAudio,"lucky", 1 , 0
  2014.  
  2015. PuPlayer.playlistadd pMusic,"audioattract", 1 , 0
  2016. PuPlayer.playlistadd pMusic,"audioclear", 1 , 0
  2017. PuPlayer.playlistadd pMusic,"musicdiv", 1 , 0
  2018. PuPlayer.playlistadd pMusic,"musicswfmode", 1 , 0
  2019. PuPlayer.playlistadd pMusic,"musicsurfmode", 1 , 0
  2020. PuPlayer.playlistadd pMusic,"musicskeetmode", 1 , 0
  2021. PuPlayer.playlistadd pMusic,"musicendlessmode", 1 , 0
  2022. PuPlayer.playlistadd pMusic,"musicmainmode", 1 , 0
  2023. PuPlayer.playlistadd pMusic,"musicpostmode", 1 , 0
  2024.  
  2025. PuPlayer.playlistadd pCallouts,"audiocallouts", 1 , 0
  2026.  
  2027. PuPlayer.playlistadd pBackglass,"backglass", 1 , 0
  2028. PuPlayer.playlistadd pBackglass,"PuPOverlays", 1 , 0
  2029. PuPlayer.playlistadd pBackglass,"videoattract", 1 , 0
  2030. PuPlayer.playlistadd pBackglass,"videoaerial", 1 , 0
  2031. PuPlayer.playlistadd pBackglass,"videoballsaved", 1 , 0
  2032. PuPlayer.playlistadd pBackglass,"videoboards", 1 , 0
  2033. PuPlayer.playlistadd pBackglass,"videodiv",1,0
  2034. PuPlayer.playlistadd pBackglass,"videoloop",1,0
  2035. PuPlayer.playlistadd pBackglass,"topper",1,0
  2036. PuPlayer.playlistadd pBackglass,"videomaster",1,0
  2037. PuPlayer.playlistadd pBackglass,"videooffthelip",1,0
  2038. PuPlayer.playlistadd pBackglass,"videospots",1,0
  2039. PuPlayer.playlistadd pBackglass,"videowipeouts",1,0
  2040. PuPlayer.playlistadd pBackglass,"videotakeoff",1,0
  2041.  
  2042. PuPlayer.playlistadd pTopper,"topper",1,0
  2043.  
  2044. If toppervideo = 1 Then
  2045. PuPlayer.playlistadd pTopper,"topper", 1 , 0
  2046. End If
  2047.  
  2048. End if
  2049.  
  2050. If toppervideo = 1 Then
  2051. PuPlayer.playlistplayex pTopper,"topper","topper.mp4",0,1
  2052. PuPlayer.SetBackground pTopper,1
  2053. End If
  2054.  
  2055.  
  2056. PuPlayer.LabelInit pBackglass
  2057.  
  2058.  
  2059.  
  2060. '*******
  2061. PuPlayer.LabelNew pBackglass,"Ballingame",typefont, 9,65535 ,0,0,1,25,9,1,1
  2062. PuPlayer.LabelNew pBackglass,"Ballnumber",numberfont, 7,16711935 ,0,0,1,49,9,1,1
  2063. PuPlayer.LabelNew pBackglass,"Score",typefont, 9,65535 ,0,0,1,25,16,1,1
  2064. PuPlayer.LabelNew pBackglass,"scoreplayer",numberfont, 7,16711935 ,0,0,1,40,16,1,1
  2065. PuPlayer.LabelNew pBackglass,"Bonus",typefont, 8,65535 ,0,0,1,5,21,1,1
  2066. PuPlayer.LabelNew pBackglass,"ESbonus",typefont, 6,16711935 ,0,0,1,0,28,1,1
  2067. PuPlayer.LabelNew pBackglass,"ESbonuscount",numberfont, 5,65535 ,0,0,1,20,28,1,1
  2068. PuPlayer.LabelNew pBackglass,"SKTBonus",typefont, 6,16711935 ,0,0,1,0,35,1,1
  2069. PuPlayer.LabelNew pBackglass,"SKTbonuscount",numberfont, 5,65535 ,0,0,1,20,35,1,1
  2070. PuPlayer.LabelNew pBackglass,"SWFBonus",typefont, 6,16711935 ,0,0,1,0,42,1,1
  2071. PuPlayer.LabelNew pBackglass,"SWFBonuscount",numberfont, 5,65535 ,0,0,1,20,42,1,1
  2072. PuPlayer.LabelNew pBackglass,"LoopBonus",typefont, 6,16711935 ,0,0,1,0,49,1,1
  2073. PuPlayer.LabelNew pBackglass,"LoopBonuscount",numberfont, 5,65535 ,0,0,1,20,49,1,1
  2074. PuPlayer.LabelNew pBackglass,"AerialBonus",typefont, 6,16711935 ,0,0,1,0,56,1,1
  2075. PuPlayer.LabelNew pBackglass,"AerialBonuscount",numberfont, 5,65535 ,0,0,1,20,56,1,1
  2076. PuPlayer.LabelNew pBackglass,"OffthelipBonus",typefont, 6,16711935 ,0,0,1,0,63,1,1
  2077. PuPlayer.LabelNew pBackglass,"OffthelipBonuscount",numberfont, 5,65535 ,0,0,1,20,63,1,1
  2078. PuPlayer.LabelNew pBackglass,"Diversitymultiplier",typefont, 6,16711935 ,0,0,1,0,70,1,1
  2079. PuPlayer.LabelNew pBackglass,"Diversitymultipliercount",numberfont, 5,65535 ,0,0,1,20,70,1,1
  2080. PuPlayer.LabelNew pBackglass,"Extraballs",typefont, 6,16711935 ,0,0,1,0,77,1,1
  2081. PuPlayer.LabelNew pBackglass,"Extraballscount",numberfont, 5,65535 ,0,0,1,20,77,1,1
  2082. PuPlayer.LabelNew pBackglass,"Sharks",typefont, 6,16711935 ,0,0,1,0,84,1,1
  2083. PuPlayer.LabelNew pBackglass,"of",typefont, 6,16711935 ,0,0,1,15,84,1,1
  2084. PuPlayer.LabelNew pBackglass,"Sharkextraballs",numberfont, 5,65535 ,0,0,1,14,84,1,1
  2085. PuPlayer.LabelNew pBackglass,"three",numberfont, 5,65535 ,0,0,1,20,84,1,1
  2086. '*********
  2087. PuPlayer.LabelNew pBackglass,"Highscores",typefont, 8,65535 ,0,0,1,80,42,1,1
  2088. PuPlayer.LabelNew pBackglass,"high1name",typefont, 6,65535 ,0,0,1,78,50,1,1
  2089. PuPlayer.LabelNew pBackglass,"high1score",numberfont, 5,16711935 ,0,0,1,84,50,1,1
  2090. PuPlayer.LabelNew pBackglass,"high2name",typefont, 6,65535 ,0,0,1,78,58,1,1
  2091. PuPlayer.LabelNew pBackglass,"high2score",numberfont, 5,16711935 ,0,0,1,84,58,1,1
  2092. PuPlayer.LabelNew pBackglass,"high3name",typefont, 6,65535 ,0,0,1,78,66,1,1
  2093. PuPlayer.LabelNew pBackglass,"high3score",numberfont, 5,16711935 ,0,0,1,84,66,1,1
  2094. PuPlayer.LabelNew pBackglass,"high4name",typefont, 6,65535 ,0,0,1,78,74,1,1
  2095. PuPlayer.LabelNew pBackglass,"high4score",numberfont, 5,16711935 ,0,0,1,84,74,1,1
  2096.  
  2097.  
  2098. Sub resetbackglass
  2099. Loadhs
  2100. PuPlayer.LabelShowPage pBackglass,1,0,""
  2101. PuPlayer.playlistplayex pBackglass,"backglass","backglasswaves.mp4",0,1
  2102. PuPlayer.SetBackground pBackglass,1
  2103. PuPlayer.LabelSet pBackglass,"hstitle","HIGH SCORE",1,""
  2104. PuPlayer.LabelSet pBackglass,"hs","" & FormatNumber(HighScore(0),0),1,""
  2105. PuPlayer.LabelSet pBackglass,"gptitle","GAMES",1,""
  2106. PuPlayer.LabelSet pBackglass,"gp","" & FormatNumber(TotalGamesPlayed,0),1,""
  2107. PuPlayer.LabelSet pBackglass,"Ball","PRESS\rSTART",1,""
  2108. End Sub
  2109.  
  2110.  
  2111. Dim titlepos
  2112. titlepos = 0
  2113. titletimer.enabled = 0
  2114. dim title
  2115. title = ""
  2116. dim subtitle
  2117. subtitle = ""
  2118.  
  2119. Sub titletimer_timer
  2120. titlepos = titlepos + 1
  2121. Select Case titlepos
  2122. Case 1
  2123. PuPlayer.LabelSet pBackglass,"title",title,1,"{'mt':2,'color':2565927, 'size': 0, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2124. PuPlayer.LabelSet pBackglass,"titlebg",title,1,"{'mt':2,'color':0, 'size': 0, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2125. PuPlayer.LabelSet pBackglass,"title2",subtitle,1,"{'mt':2,'color':2565927, 'size': 0, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2126. PuPlayer.LabelSet pBackglass,"titlebg2",subtitle,1,"{'mt':2,'color':0, 'size': 0, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2127. Case 2
  2128. PuPlayer.LabelSet pBackglass,"title",title,1,"{'mt':2,'color':5066061, 'size': 0.6, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2129. PuPlayer.LabelSet pBackglass,"titlebg",title,1,"{'mt':2,'color':0, 'size': 0.6, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2130. PuPlayer.LabelSet pBackglass,"title2",subtitle,1,"{'mt':2,'color':5066061, 'size': 0.4, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2131. PuPlayer.LabelSet pBackglass,"titlebg2",subtitle,1,"{'mt':2,'color':0, 'size': 0.4, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2132. Case 3
  2133. PuPlayer.LabelSet pBackglass,"title",title,1,"{'mt':2,'color':7960953, 'size': 1.2, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2134. PuPlayer.LabelSet pBackglass,"titlebg",title,1,"{'mt':2,'color':0, 'size': 1.2, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2135. PuPlayer.LabelSet pBackglass,"title2",subtitle,1,"{'mt':2,'color':7960953, 'size': 0.8, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2136. PuPlayer.LabelSet pBackglass,"titlebg2",subtitle,1,"{'mt':2,'color':0, 'size': 0.8, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2137. Case 4
  2138. PuPlayer.LabelSet pBackglass,"title",title,1,"{'mt':2,'color':9671571, 'size': 1.8, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2139. PuPlayer.LabelSet pBackglass,"titlebg",title,1,"{'mt':2,'color':0, 'size': 1.8, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2140. PuPlayer.LabelSet pBackglass,"title2",subtitle,1,"{'mt':2,'color':9671571, 'size': 1.2, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2141. PuPlayer.LabelSet pBackglass,"titlebg2",subtitle,1,"{'mt':2,'color':0, 'size': 1.2, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2142. Case 5
  2143. PuPlayer.LabelSet pBackglass,"title",title,1,"{'mt':2,'color':11842740, 'size': 2.4, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2144. PuPlayer.LabelSet pBackglass,"titlebg",title,1,"{'mt':2,'color':0, 'size': 2.4, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2145. PuPlayer.LabelSet pBackglass,"title2",subtitle,1,"{'mt':2,'color':11842740, 'size': 1.6, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2146. PuPlayer.LabelSet pBackglass,"titlebg2",subtitle,1,"{'mt':2,'color':0, 'size': 1.6, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2147. Case 6
  2148. PuPlayer.LabelSet pBackglass,"title",title,1,"{'mt':2,'color':13224393, 'size': 3, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2149. PuPlayer.LabelSet pBackglass,"titlebg",title,1,"{'mt':2,'color':0, 'size': 3, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2150. PuPlayer.LabelSet pBackglass,"title2",subtitle,1,"{'mt':2,'color':13224393, 'size': 2, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2151. PuPlayer.LabelSet pBackglass,"titlebg2",subtitle,1,"{'mt':2,'color':0, 'size': 2, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2152. Case 7
  2153. PuPlayer.LabelSet pBackglass,"title",title,1,"{'mt':2,'color':14671839, 'size': 3.6, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2154. PuPlayer.LabelSet pBackglass,"titlebg",title,1,"{'mt':2,'color':0, 'size': 3.6, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2155. PuPlayer.LabelSet pBackglass,"title2",subtitle,1,"{'mt':2,'color':14671839, 'size': 2.4, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2156. PuPlayer.LabelSet pBackglass,"titlebg2",subtitle,1,"{'mt':2,'color':0, 'size': 2.4, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2157. Case 8
  2158. PuPlayer.LabelSet pBackglass,"title",title,1,"{'mt':2,'color':15790320, 'size': 4.2, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2159. PuPlayer.LabelSet pBackglass,"titlebg",title,1,"{'mt':2,'color':0, 'size': 4.2, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2160. PuPlayer.LabelSet pBackglass,"title2",subtitle,1,"{'mt':2,'color':15790320, 'size': 2.8, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2161. PuPlayer.LabelSet pBackglass,"titlebg2",subtitle,1,"{'mt':2,'color':0, 'size': 2.8, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2162. Case 9
  2163. PuPlayer.LabelSet pBackglass,"title",title,1,"{'mt':2,'color':16316664, 'size': 4.8, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2164. PuPlayer.LabelSet pBackglass,"titlebg",title,1,"{'mt':2,'color':0, 'size': 4.8, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2165. PuPlayer.LabelSet pBackglass,"title2",subtitle,1,"{'mt':2,'color':16316664, 'size': 3.2, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2166. PuPlayer.LabelSet pBackglass,"titlebg2",subtitle,1,"{'mt':2,'color':0, 'size': 3.2, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2167. Case 10
  2168. PuPlayer.LabelSet pBackglass,"title",title,1,"{'mt':2,'color':16777215, 'size': 5.4, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2169. PuPlayer.LabelSet pBackglass,"titlebg",title,1,"{'mt':2,'color':0, 'size': 5.4, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2170. PuPlayer.LabelSet pBackglass,"title2",subtitle,1,"{'mt':2,'color':16777215, 'size': 3.6, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2171. PuPlayer.LabelSet pBackglass,"titlebg2",subtitle,1,"{'mt':2,'color':0, 'size': 3.6, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2172. Case 11
  2173. PuPlayer.LabelSet pBackglass,"title",title,1,"{'mt':2,'color':16777215, 'size': 6, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2174. PuPlayer.LabelSet pBackglass,"titlebg",title,1,"{'mt':2,'color':0, 'size': 6, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2175. PuPlayer.LabelSet pBackglass,"title2",subtitle,1,"{'mt':2,'color':16777215, 'size': 4, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2176. PuPlayer.LabelSet pBackglass,"titlebg2",subtitle,1,"{'mt':2,'color':0, 'size': 4, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2177. Case 150
  2178. PuPlayer.LabelSet pBackglass,"title","",1,"{'mt':2,'color':16777215, 'size': 6, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2179. PuPlayer.LabelSet pBackglass,"titlebg","",1,"{'mt':2,'color':0, 'size': 6, 'xpos': 50, 'xalign': 1, 'ypos': 36, 'yalign': 0}"
  2180. PuPlayer.LabelSet pBackglass,"title2","",1,"{'mt':2,'color':16777215, 'size': 4, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2181. PuPlayer.LabelSet pBackglass,"titlebg2","",1,"{'mt':2,'color':0, 'size': 4, 'xpos': 50, 'xalign': 1, 'ypos': 45, 'yalign': 0}"
  2182. titlepos = 0
  2183. titletimer.enabled = 0
  2184. End Select
  2185. End Sub
  2186.  
  2187.  
  2188. sub scorebg_timer()
  2189. PuPlayer.LabelSet pBackglass,"Score"," Score",1,""
  2190. PuPlayer.LabelSet pBackglass,"scoreplayer","" & score(1),1,""
  2191. end sub
  2192.  
  2193. sub showhighscores
  2194. PuPlayer.playlistplayex pBackglass,"backglass","backglasswaves.mp4",0,1
  2195. PuPlayer.LabelSet pBackglass,"Score"," Score",1,""
  2196. PuPlayer.LabelSet pBackglass,"scoreplayer","" & score(1),1,""
  2197. PuPlayer.LabelSet pBackglass,"Highscores"," Highscores",1,""
  2198. PuPlayer.LabelSet pBackglass,"high1name"," " & highscorename(0),1,""
  2199. PuPlayer.LabelSet pBackglass,"high1score"," " & highscore(0),1,""
  2200. PuPlayer.LabelSet pBackglass,"high2name"," " & highscorename(1),1,""
  2201. PuPlayer.LabelSet pBackglass,"high2score"," " & highscore(1),1,""
  2202. PuPlayer.LabelSet pBackglass,"high3name"," " & highscorename(2),1,""
  2203. PuPlayer.LabelSet pBackglass,"high3score"," " & highscore(2),1,""
  2204. PuPlayer.LabelSet pBackglass,"high4name"," " & highscorename(3),1,""
  2205. PuPlayer.LabelSet pBackglass,"high4score"," " & highscore(3),1,""
  2206. end sub
  2207.  
  2208. Sub currentplayerbonusstat
  2209. if sexwaxfrenzy.enabled=false and Triggerloop.enabled=false and Triggeroffthelip.enabled=false and Triggeraerial.enabled=false then PuPlayer.playlistplayex pBackglass,"backglass","backglasswaves.mp4",0,1
  2210. PuPlayer.LabelSet pBackglass,"Ballingame"," Ball in game",1,""
  2211. PuPlayer.LabelSet pBackglass,"Ballnumber","" & bpgcurrent - BallsRemaining(CurrentPlayer) + 1 ,1,""
  2212. PuPlayer.LabelSet pBackglass,"Score"," Score",1,""
  2213. PuPlayer.LabelSet pBackglass,"scoreplayer","" & score(1),1,""
  2214. PuPlayer.LabelSet pBackglass,"Bonus"," Bonus",1,""
  2215. PuPlayer.LabelSet pBackglass,"ESBonus"," Endless Summer",1,""
  2216. PuPlayer.LabelSet pBackglass,"ESBonuscount","" & endlesssummerbonus,1,""
  2217. PuPlayer.LabelSet pBackglass,"SKTBonus"," Skeet Surfin",1,""
  2218. PuPlayer.LabelSet pBackglass,"SKTBonuscount","" & skeetbonus,1,""
  2219. PuPlayer.LabelSet pBackglass,"SWFBonus"," SexWaxFrenzy",1,""
  2220. PuPlayer.LabelSet pBackglass,"SWFBonuscount","" & sexwaxfrenzybonus,1,""
  2221. PuPlayer.LabelSet pBackglass,"LoopBonus"," Loops ",1,""
  2222. PuPlayer.LabelSet pBackglass,"LoopBonuscount","" & loopbonus,1,""
  2223. PuPlayer.LabelSet pBackglass,"AerialBonus"," Aerials",1,""
  2224. PuPlayer.LabelSet pBackglass,"AerialBonuscount","" & aerialbonus,1,""
  2225. PuPlayer.LabelSet pBackglass,"OffthelipBonus"," Off The Lips",1,""
  2226. PuPlayer.LabelSet pBackglass,"OffthelipBonuscount","" & offthelipbonus,1,""
  2227. PuPlayer.LabelSet pBackglass,"Diversitymultiplier"," Variety",1,""
  2228. PuPlayer.LabelSet pBackglass,"Diversitymultipliercount","" & diversitymultiplier,1,""
  2229. PuPlayer.LabelSet pBackglass,"Extraballs"," Extraballs",1,""
  2230. PuPlayer.LabelSet pBackglass,"Extraballscount","" & Extraballscount,1,""
  2231. PuPlayer.LabelSet pBackglass,"Sharks"," Sharks",1,""
  2232. PuPlayer.LabelSet pBackglass,"of"," of",1,""
  2233. PuPlayer.LabelSet pBackglass,"Sharkextraballs","" & Sharkextraballs,1,""
  2234. PuPlayer.LabelSet pBackglass,"three","3",1,""
  2235. bonusstat.enabled=true
  2236. End Sub
  2237.  
  2238. sub Bonusstat_timer()
  2239. bonusstat.enabled=false
  2240. end sub
  2241.  
  2242. '***************************
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250. Sub pUpdateScores
  2251. PuPlayer.LabelSet pBackglass,"curscore",FormatNumber(Score(CurrentPlayer),0),1,""
  2252. PuPlayer.LabelSet pBackglass,"curplayer","Player " & CurrentPlayer,1,""
  2253. If CurrentPlayer = 1 Then
  2254. PuPlayer.LabelSet pBackglass,"Play1score","" & FormatNumber(Score(CurrentPlayer),0),1,"{'mt':2,'color':16777215, 'size': 2.4 }"
  2255. PuPlayer.LabelSet pBackglass,"Play1","Player 1",1,"{'mt':2,'color':16777215 }"
  2256. 'make other scores red (inactive)
  2257. If PlayersPlayingGame = 2 Then
  2258. PuPlayer.LabelSet pBackglass,"Play2score","" & FormatNumber(Score(2),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2259. PuPlayer.LabelSet pBackglass,"Play2","Player 2",1,"{'mt':2,'color':8421504}"
  2260. End If
  2261. If PlayersPlayingGame = 3 Then
  2262. PuPlayer.LabelSet pBackglass,"Play2score","" & FormatNumber(Score(2),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2263. PuPlayer.LabelSet pBackglass,"Play2","Player 2",1,"{'mt':2,'color':8421504}"
  2264. PuPlayer.LabelSet pBackglass,"Play3score","" & FormatNumber(Score(3),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2265. PuPlayer.LabelSet pBackglass,"Play3","Player 3",1,"{'mt':2,'color':8421504}"
  2266. End If
  2267. If PlayersPlayingGame = 4 Then
  2268. PuPlayer.LabelSet pBackglass,"Play2score","" & FormatNumber(Score(2),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2269. PuPlayer.LabelSet pBackglass,"Play2","Player 2",1,"{'mt':2,'color':8421504}"
  2270. PuPlayer.LabelSet pBackglass,"Play3score","" & FormatNumber(Score(3),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2271. PuPlayer.LabelSet pBackglass,"Play3","Player 3",1,"{'mt':2,'color':8421504}"
  2272. PuPlayer.LabelSet pBackglass,"Play4score","" & FormatNumber(Score(4),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2273. PuPlayer.LabelSet pBackglass,"Play4","Player 4",1,"{'mt':2,'color':8421504}"
  2274. End If
  2275. End If
  2276. If CurrentPlayer = 2 Then
  2277. PuPlayer.LabelSet pBackglass,"Play2score","" & FormatNumber(Score(CurrentPlayer),0),1,"{'mt':2,'color':16777215, 'size': 2.4 }"
  2278. PuPlayer.LabelSet pBackglass,"Play2","Player 2",1,"{'mt':2,'color':16777215 }"
  2279. If PlayersPlayingGame = 2 Then
  2280. PuPlayer.LabelSet pBackglass,"Play1score","" & FormatNumber(Score(1),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2281. PuPlayer.LabelSet pBackglass,"Play1","Player 1",1,"{'mt':2,'color':8421504}"
  2282. End If
  2283. If PlayersPlayingGame = 3 Then
  2284. PuPlayer.LabelSet pBackglass,"Play1score","" & FormatNumber(Score(1),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2285. PuPlayer.LabelSet pBackglass,"Play1","Player 1",1,"{'mt':2,'color':8421504}"
  2286. PuPlayer.LabelSet pBackglass,"Play3score","" & FormatNumber(Score(3),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2287. PuPlayer.LabelSet pBackglass,"Play3","Player 3",1,"{'mt':2,'color':8421504}"
  2288. End If
  2289. If PlayersPlayingGame = 4 Then
  2290. PuPlayer.LabelSet pBackglass,"Play1score","" & FormatNumber(Score(1),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2291. PuPlayer.LabelSet pBackglass,"Play1","Player 1",1,"{'mt':2,'color':8421504}"
  2292. PuPlayer.LabelSet pBackglass,"Play3score","" & FormatNumber(Score(3),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2293. PuPlayer.LabelSet pBackglass,"Play3","Player 3",1,"{'mt':2,'color':8421504}"
  2294. PuPlayer.LabelSet pBackglass,"Play4score","" & FormatNumber(Score(4),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2295. PuPlayer.LabelSet pBackglass,"Play4","Player 4",1,"{'mt':2,'color':8421504}"
  2296. End If
  2297. End If
  2298. If CurrentPlayer = 3 Then
  2299. PuPlayer.LabelSet pBackglass,"Play3score","" & FormatNumber(Score(CurrentPlayer),0),1,"{'mt':2,'color':16777215, 'size': 2.4 }"
  2300. PuPlayer.LabelSet pBackglass,"Play3","Player 3",1,"{'mt':2,'color':16777215 }"
  2301. If PlayersPlayingGame = 3 Then
  2302. PuPlayer.LabelSet pBackglass,"Play1score","" & FormatNumber(Score(1),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2303. PuPlayer.LabelSet pBackglass,"Play1","Player 1",1,"{'mt':2,'color':8421504}"
  2304. PuPlayer.LabelSet pBackglass,"Play2score","" & FormatNumber(Score(2),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2305. PuPlayer.LabelSet pBackglass,"Play2","Player 2",1,"{'mt':2,'color':8421504}"
  2306. End If
  2307. If PlayersPlayingGame = 4 Then
  2308. PuPlayer.LabelSet pBackglass,"Play1score","" & FormatNumber(Score(1),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2309. PuPlayer.LabelSet pBackglass,"Play1","Player 1",1,"{'mt':2,'color':8421504}"
  2310. PuPlayer.LabelSet pBackglass,"Play2score","" & FormatNumber(Score(2),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2311. PuPlayer.LabelSet pBackglass,"Play2","Player 2",1,"{'mt':2,'color':8421504}"
  2312. PuPlayer.LabelSet pBackglass,"Play4score","" & FormatNumber(Score(4),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2313. PuPlayer.LabelSet pBackglass,"Play4","Player 4",1,"{'mt':2,'color':8421504}"
  2314. End If
  2315. End If
  2316. If CurrentPlayer = 4 Then
  2317. PuPlayer.LabelSet pBackglass,"Play4score","" & FormatNumber(Score(CurrentPlayer),0),1,"{'mt':2,'color':16777215, 'size': 2.4 }"
  2318. PuPlayer.LabelSet pBackglass,"Play4","Player 4",1,"{'mt':2,'color':16777215 }"
  2319. If PlayersPlayingGame = 4 Then
  2320. PuPlayer.LabelSet pBackglass,"Play1score","" & FormatNumber(Score(1),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2321. PuPlayer.LabelSet pBackglass,"Play1","Player 1",1,"{'mt':2,'color':8421504}"
  2322. PuPlayer.LabelSet pBackglass,"Play2score","" & FormatNumber(Score(2),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2323. PuPlayer.LabelSet pBackglass,"Play2","Player 2",1,"{'mt':2,'color':8421504}"
  2324. PuPlayer.LabelSet pBackglass,"Play3score","" & FormatNumber(Score(3),0),1,"{'mt':2,'color':8421504, 'size': 2.4 }"
  2325. PuPlayer.LabelSet pBackglass,"Play3","Player 3",1,"{'mt':2,'color':8421504}"
  2326. End If
  2327. End If
  2328. PuPlayer.LabelSet pBackglass,"Ball","Ball " & bpgcurrent - BallsRemaining(CurrentPlayer) + 1 ,1,""
  2329. end Sub
  2330.  
  2331. '' Orbital Highscore functions (BACKGLASS):
  2332. ''XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  2333. '' X X X X X X X X X X X X X X X X X X X X X X X
  2334. ''/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  2335. '' High Scores
  2336. ''\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  2337. '' X X X X X X X X X X X X X X X X X X X X X X X
  2338.  
  2339. '
  2340. '
  2341. Sub Savegp
  2342. SaveValue TableName, "TotalGamesPlayed", TotalGamesPlayed
  2343. vpmtimer.addtimer 1000, "Loadhs'"
  2344. End Sub
  2345. '
  2346. '
  2347. '
  2348.  
  2349. '*****************************
  2350. ' Load / Save / Highscore
  2351. '*****************************
  2352.  
  2353. Sub Loadhs
  2354. Dim x
  2355. x = LoadValue(cGameName, "HighScore1")
  2356. If(x <> "") Then HighScore(0) = CDbl(x) Else HighScore(0) = 1000000 End If
  2357.  
  2358. x = LoadValue(cGameName, "HighScore1Name")
  2359. If(x <> "") Then HighScoreName(0) = x Else HighScoreName(0) = "MAK" End If
  2360.  
  2361. x = LoadValue(cGameName, "HighScore2")
  2362. If(x <> "") then HighScore(1) = CDbl(x) Else HighScore(1) = 900000 End If
  2363.  
  2364. x = LoadValue(cGameName, "HighScore2Name")
  2365. If(x <> "") then HighScoreName(1) = x Else HighScoreName(1) = "MAI" End If
  2366.  
  2367. x = LoadValue(cGameName, "HighScore3")
  2368. If(x <> "") then HighScore(2) = CDbl(x) Else HighScore(2) = 800000 End If
  2369.  
  2370. x = LoadValue(cGameName, "HighScore3Name")
  2371. If(x <> "") then HighScoreName(2) = x Else HighScoreName(2) = "TAT" End If
  2372.  
  2373. x = LoadValue(cGameName, "HighScore4")
  2374. If(x <> "") then HighScore(3) = CDbl(x) Else HighScore(3) = 700000 End If
  2375.  
  2376. x = LoadValue(cGameName, "HighScore4Name")
  2377. If(x <> "") then HighScoreName(3) = x Else HighScoreName(3) = "DAN" End If
  2378.  
  2379. x = LoadValue(cGameName, "Credits")
  2380. If(x <> "") then Credits = CInt(x):DOF 114, DOFOn:Else Credits = 0 End If
  2381.  
  2382. 'x = LoadValue(cGameName, "Jackpot")
  2383. 'If(x <> "") then Jackpot = CDbl(x) Else Jackpot = 200000 End If
  2384. x = LoadValue(cGameName, "TotalGamesPlayed")
  2385. If(x <> "") then TotalGamesPlayed = CInt(x) Else TotalGamesPlayed = 0 End If
  2386. End Sub
  2387.  
  2388. Sub Savehs
  2389. SaveValue cGameName, "HighScore1", HighScore(0)
  2390. SaveValue cGameName, "HighScore1Name", HighScoreName(0)
  2391. SaveValue cGameName, "HighScore2", HighScore(1)
  2392. SaveValue cGameName, "HighScore2Name", HighScoreName(1)
  2393. SaveValue cGameName, "HighScore3", HighScore(2)
  2394. SaveValue cGameName, "HighScore3Name", HighScoreName(2)
  2395. SaveValue cGameName, "HighScore4", HighScore(3)
  2396. SaveValue cGameName, "HighScore4Name", HighScoreName(3)
  2397. SaveValue cGameName, "Credits", Credits
  2398. 'SaveValue cGameName, "Jackpot", Jackpot
  2399. SaveValue cGameName, "TotalGamesPlayed", TotalGamesPlayed
  2400. End Sub
  2401.  
  2402. ' ***********************************************************
  2403. ' High Score Initals Entry Functions - based on Black's code
  2404. ' ***********************************************************
  2405.  
  2406. Dim hsbModeActive
  2407. Dim hsEnteredName
  2408. Dim hsEnteredDigits(3)
  2409. Dim hsCurrentDigit
  2410. Dim hsValidLetters
  2411. Dim hsCurrentLetter
  2412. Dim hsLetterFlash
  2413.  
  2414. Sub CheckHighscore()
  2415. Dim tmp
  2416. tmp = Score(1)
  2417.  
  2418. If Score(2)> tmp Then tmp = Score(2)
  2419. If Score(3)> tmp Then tmp = Score(3)
  2420. If Score(4)> tmp Then tmp = Score(4)
  2421.  
  2422. If tmp> HighScore(1) Then 'add 1 credit for beating the highscore
  2423. AwardSpecial
  2424. End If
  2425.  
  2426. If tmp> HighScore(3) Then
  2427. HighScore(3) = tmp
  2428. 'enter player's name
  2429. HighScoreEntryInit()
  2430. Else
  2431. EndOfBallComplete()
  2432. End If
  2433. End Sub
  2434.  
  2435. Sub HighScoreEntryInit()
  2436. PuPlayer.playlistplayex pAudio,"audiocallouts","highscore.mp3",100,1
  2437. PuPlayer.playlistplayex pMusic,"musicdiv","best.mp3",100, 1
  2438. hsbModeActive = True
  2439. hsLetterFlash = 0
  2440.  
  2441. hsEnteredDigits(0) = "A"
  2442. hsEnteredDigits(1) = " "
  2443. hsEnteredDigits(2) = " "
  2444. hsCurrentDigit = 0
  2445.  
  2446. hsValidLetters = " ABCDEFGHIJKLMNOPQRSTUVWXYZ<+-0123456789" ' < is used to delete the last letter
  2447. hsCurrentLetter = 1
  2448. DMDFlush
  2449. DMDId "hsc", "black.jpg", "YOUR NAME:", " ", 999999
  2450. HighScoreDisplayName()
  2451. End Sub
  2452.  
  2453. Sub EnterHighScoreKey(keycode)
  2454. If keycode = LeftFlipperKey Then
  2455. Playsound "drop1"
  2456. hsCurrentLetter = hsCurrentLetter - 1
  2457. if(hsCurrentLetter = 0) then
  2458. hsCurrentLetter = len(hsValidLetters)
  2459. end if
  2460. HighScoreDisplayName()
  2461. End If
  2462.  
  2463. If keycode = RightFlipperKey Then
  2464. Playsound "drop2"
  2465. hsCurrentLetter = hsCurrentLetter + 1
  2466. if(hsCurrentLetter> len(hsValidLetters) ) then
  2467. hsCurrentLetter = 1
  2468. end if
  2469. HighScoreDisplayName()
  2470. End If
  2471.  
  2472. If keycode = StartGameKey OR keycode = PlungerKey Then
  2473. if(mid(hsValidLetters, hsCurrentLetter, 1) <> "<") then
  2474. playsound "drop3"
  2475. hsEnteredDigits(hsCurrentDigit) = mid(hsValidLetters, hsCurrentLetter, 1)
  2476. hsCurrentDigit = hsCurrentDigit + 1
  2477. if(hsCurrentDigit = 3) then
  2478. HighScoreCommitName()
  2479. else
  2480. HighScoreDisplayName()
  2481. end if
  2482. else
  2483. playsound "drop4"
  2484. hsEnteredDigits(hsCurrentDigit) = " "
  2485. if(hsCurrentDigit> 0) then
  2486. hsCurrentDigit = hsCurrentDigit - 1
  2487. end if
  2488. HighScoreDisplayName()
  2489. end if
  2490. end if
  2491. End Sub
  2492.  
  2493. Sub HighScoreDisplayName()
  2494. Dim i, TempStr
  2495.  
  2496. TempStr = " >"
  2497. if(hsCurrentDigit> 0) then TempStr = TempStr & hsEnteredDigits(0)
  2498. if(hsCurrentDigit> 1) then TempStr = TempStr & hsEnteredDigits(1)
  2499. if(hsCurrentDigit> 2) then TempStr = TempStr & hsEnteredDigits(2)
  2500.  
  2501. if(hsCurrentDigit <> 3) then
  2502. if(hsLetterFlash <> 0) then
  2503. TempStr = TempStr & "_"
  2504. else
  2505. TempStr = TempStr & mid(hsValidLetters, hsCurrentLetter, 1)
  2506. end if
  2507. end if
  2508.  
  2509. if(hsCurrentDigit <1) then TempStr = TempStr & hsEnteredDigits(1)
  2510. if(hsCurrentDigit <2) then TempStr = TempStr & hsEnteredDigits(2)
  2511.  
  2512. TempStr = TempStr & "< "
  2513. DMDMod "hsc", "YOUR NAME:", Mid(TempStr, 2, 5), 999999
  2514. End Sub
  2515.  
  2516. Sub HighScoreCommitName()
  2517. PuPlayer.playlistplayex pAudio,"audiocheers","cheer1.mp3",100,1
  2518. hsbModeActive = False
  2519. PlaySound "drop1"
  2520. hsEnteredName = hsEnteredDigits(0) & hsEnteredDigits(1) & hsEnteredDigits(2)
  2521. if(hsEnteredName = " ") then
  2522. hsEnteredName = "YOU"
  2523. end if
  2524.  
  2525. HighScoreName(3) = hsEnteredName
  2526. SortHighscore
  2527. DMDFlush
  2528. EndOfBallComplete()
  2529. End Sub
  2530.  
  2531. Sub SortHighscore
  2532. Dim tmp, tmp2, i, j
  2533. For i = 0 to 3
  2534. For j = 0 to 2
  2535. If HighScore(j) <HighScore(j + 1) Then
  2536. tmp = HighScore(j + 1)
  2537. tmp2 = HighScoreName(j + 1)
  2538. HighScore(j + 1) = HighScore(j)
  2539. HighScoreName(j + 1) = HighScoreName(j)
  2540. HighScore(j) = tmp
  2541. HighScoreName(j) = tmp2
  2542. End If
  2543. Next
  2544. Next
  2545. savehs
  2546. showhighscores
  2547. startattractmode
  2548. End Sub
  2549.  
  2550. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  2551. ' X X X X X X X X X X X X X X X X X X X X X X X
  2552. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  2553. ' ATTRACT MODE
  2554. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  2555. ' X X X X X X X X X X X X X X X X X X X X X X X
  2556. '
  2557.  
  2558.  
  2559. Sub StartAttractMode()
  2560. DOF 323, DOFOn 'DOF MX - Attract Mode ON
  2561. bAttractMode = True
  2562. UltraDMDTimer.Enabled = 1
  2563. StartLightSeq
  2564. 'ShowTableInfo
  2565. DMDintroloop
  2566. DMDattract.Enabled = 1
  2567. intromover.enabled = true
  2568. ruleshelperoff
  2569. PuPlayer.playlistplayex pBackglass, "videoattract","videoattract.mp4",100,1
  2570. PuPlayer.playlistplayex pTopper, "topper","topper.mp4",100,1
  2571.  
  2572. PuPlayer.LabelSet pBackglass,"Bonus","Bonus",0,""
  2573. PuPlayer.LabelSet pBackglass,"ESBonus","Endless Summer :",0,""
  2574. PuPlayer.LabelSet pBackglass,"ESBonuscount","" & endlesssummerbonus,0,""
  2575. PuPlayer.LabelSet pBackglass,"SKTBonus","Skeet Surfin´ :",0,""
  2576. PuPlayer.LabelSet pBackglass,"SKTBonuscount","" & skeetbonus,0,""
  2577. PuPlayer.LabelSet pBackglass,"SWFBonus","SexWaxFrenzy :",0,""
  2578. PuPlayer.LabelSet pBackglass,"SWFBonuscount","" & sexwaxfrenzybonus,0,""
  2579. PuPlayer.LabelSet pBackglass,"LoopBonus","Loops :",0,""
  2580. PuPlayer.LabelSet pBackglass,"LoopBonuscount","" & loopbonus,0,""
  2581. PuPlayer.LabelSet pBackglass,"AerialBonus","Aerial 360s :",0,""
  2582. PuPlayer.LabelSet pBackglass,"AerialBonuscount","" & aerialbonus,0,""
  2583. PuPlayer.LabelSet pBackglass,"OffthelipBonus","Off The Lips :",0,""
  2584. PuPlayer.LabelSet pBackglass,"OffthelipBonuscount","" & offthelipbonus,0,""
  2585. PuPlayer.LabelSet pBackglass,"Diversitymultiplier","Variety :",0,""
  2586. PuPlayer.LabelSet pBackglass,"Diversitymultipliercount","" & diversitymultiplier,0,""
  2587. PuPlayer.LabelSet pBackglass,"Extraballs","Extraballs",0,""
  2588. PuPlayer.LabelSet pBackglass,"Extraballscount","" & Extraballscount,0,""
  2589. PuPlayer.LabelSet pBackglass,"Ballingame"," Ball in game",0,""
  2590. PuPlayer.LabelSet pBackglass,"Ballnumber","" & bpgcurrent - BallsRemaining(CurrentPlayer) + 1 ,0,""
  2591. PuPlayer.LabelSet pBackglass,"Sharks"," Sharks",0,""
  2592. PuPlayer.LabelSet pBackglass,"of"," of",0,""
  2593. PuPlayer.LabelSet pBackglass,"Sharkextraballs","" & Sharkextraballs,0,""
  2594. PuPlayer.LabelSet pBackglass,"three","3",0,""
  2595.  
  2596. PuPlayer.LabelSet pBackglass,"scoreplayer","" & score(1),1,""
  2597.  
  2598. PuPlayer.LabelSet pBackglass,"Highscores"," Highscores",1,""
  2599. PuPlayer.LabelSet pBackglass,"high1name"," " & highscorename(0),1,""
  2600. PuPlayer.LabelSet pBackglass,"high1score"," " & highscore(0),1,""
  2601. PuPlayer.LabelSet pBackglass,"high2name"," " & highscorename(1),1,""
  2602. PuPlayer.LabelSet pBackglass,"high2score"," " & highscore(1),1,""
  2603. PuPlayer.LabelSet pBackglass,"high3name"," " & highscorename(2),1,""
  2604. PuPlayer.LabelSet pBackglass,"high3score"," " & highscore(2),1,""
  2605. PuPlayer.LabelSet pBackglass,"high4name"," " & highscorename(3),1,""
  2606. PuPlayer.LabelSet pBackglass,"high4score"," " & highscore(3),1,""
  2607.  
  2608. end sub
  2609.  
  2610. Sub StopAttractMode()
  2611. DOF 323, DOFOff 'DOF MX - Attract Mode Off
  2612. bAttractMode = False
  2613. DMDScoreNow
  2614. LightSeq001.StopPlay
  2615. LightSeqAttract2.StopPlay
  2616. DMDattract.Enabled = 0
  2617. intromover.enabled = false
  2618. End Sub
  2619.  
  2620.  
  2621.  
  2622. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  2623. ' X X X X X X X X X X X X X X X X X X X X X X X
  2624. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  2625. ' CINEMATIC SKIPPING
  2626. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  2627. ' X X X X X X X X X X X X X X X X X X X X X X X
  2628.  
  2629.  
  2630. Dim ldown:ldown = 0
  2631. Dim rdown:rdown = 0
  2632.  
  2633. Sub checkdown
  2634. If ldown + rdown = 2 Then
  2635. skipscene
  2636. End If
  2637. End Sub
  2638.  
  2639. Sub skipscene
  2640.  
  2641. End Sub
  2642.  
  2643.  
  2644.  
  2645.  
  2646. Sub StartLightSeq()
  2647.  
  2648. LightSeq001.UpdateInterval = 8
  2649. LightSeq001.Play SeqUpOn, 50, 1
  2650. LightSeq001.UpdateInterval = 8
  2651. LightSeq001.Play SeqDownOn, 25, 1
  2652. LightSeq001.UpdateInterval = 8
  2653. LightSeq001.Play SeqCircleOutOn, 15, 2
  2654. LightSeq001.UpdateInterval = 8
  2655. LightSeq001.Play SeqUpOn, 25, 1
  2656. LightSeq001.UpdateInterval = 8
  2657. LightSeq001.Play SeqDownOn, 25, 1
  2658. LightSeq001.UpdateInterval = 8
  2659. LightSeq001.Play SeqUpOn, 25, 1
  2660. LightSeq001.UpdateInterval = 8
  2661. LightSeq001.Play SeqDownOn, 25, 1
  2662. LightSeq001.UpdateInterval = 10
  2663. LightSeq001.Play SeqCircleOutOn, 15, 3
  2664. LightSeq001.UpdateInterval = 5
  2665. LightSeq001.Play SeqRightOn, 50, 1
  2666. LightSeq001.UpdateInterval = 5
  2667. LightSeq001.Play SeqLeftOn, 50, 1
  2668. LightSeq001.UpdateInterval = 8
  2669. LightSeq001.Play SeqRightOn, 50, 1
  2670. LightSeq001.UpdateInterval = 8
  2671. LightSeq001.Play SeqLeftOn, 50, 1
  2672. LightSeq001.UpdateInterval = 8
  2673. LightSeq001.Play SeqRightOn, 40, 1
  2674. LightSeq001.UpdateInterval = 8
  2675. LightSeq001.Play SeqLeftOn, 40, 1
  2676. LightSeq001.UpdateInterval = 10
  2677. LightSeq001.Play SeqRightOn, 30, 1
  2678. LightSeq001.UpdateInterval = 10
  2679. LightSeq001.Play SeqLeftOn, 30, 1
  2680. LightSeq001.UpdateInterval = 8
  2681. LightSeq001.Play SeqRightOn, 25, 1
  2682. LightSeq001.UpdateInterval = 8
  2683. LightSeq001.Play SeqLeftOn, 25, 1
  2684. LightSeq001.UpdateInterval = 8
  2685. LightSeq001.Play SeqRightOn, 15, 1
  2686. LightSeq001.UpdateInterval = 8
  2687. LightSeq001.Play SeqLeftOn, 15, 1
  2688. LightSeq001.UpdateInterval = 10
  2689. LightSeq001.Play SeqCircleOutOn, 15, 3
  2690. LightSeq001.UpdateInterval = 8
  2691. LightSeq001.Play SeqLeftOn, 25, 1
  2692. LightSeq001.UpdateInterval = 8
  2693. LightSeq001.Play SeqRightOn, 25, 1
  2694. LightSeq001.UpdateInterval = 8
  2695. LightSeq001.Play SeqLeftOn, 25, 1
  2696. LightSeq001.UpdateInterval = 8
  2697. LightSeq001.Play SeqUpOn, 25, 1
  2698. LightSeq001.UpdateInterval = 8
  2699. LightSeq001.Play SeqDownOn, 25, 1
  2700. LightSeq001.UpdateInterval = 8
  2701. LightSeq001.Play SeqUpOn, 25, 1
  2702. LightSeq001.UpdateInterval = 8
  2703. LightSeq001.Play SeqDownOn, 25, 1
  2704. LightSeq001.UpdateInterval = 5
  2705. LightSeq001.Play SeqStripe1VertOn, 50, 2
  2706. LightSeq001.UpdateInterval = 8
  2707. LightSeq001.Play SeqCircleOutOn, 15, 2
  2708. LightSeq001.UpdateInterval = 8
  2709. LightSeq001.Play SeqStripe1VertOn, 50, 3
  2710. LightSeq001.UpdateInterval = 8
  2711. LightSeq001.Play SeqLeftOn, 25, 1
  2712. LightSeq001.UpdateInterval = 8
  2713. LightSeq001.Play SeqRightOn, 25, 1
  2714. LightSeq001.UpdateInterval = 8
  2715. LightSeq001.Play SeqLeftOn, 25, 1
  2716. LightSeq001.UpdateInterval = 8
  2717. LightSeq001.Play SeqUpOn, 25, 1
  2718. LightSeq001.UpdateInterval = 8
  2719. LightSeq001.Play SeqDownOn, 25, 1
  2720. LightSeq001.UpdateInterval = 8
  2721. LightSeq001.Play SeqCircleOutOn, 15, 2
  2722. LightSeq001.UpdateInterval = 8
  2723. LightSeq001.Play SeqStripe2VertOn, 50, 3
  2724. LightSeq001.UpdateInterval = 8
  2725. LightSeq001.Play SeqLeftOn, 25, 1
  2726. LightSeq001.UpdateInterval = 8
  2727. LightSeq001.Play SeqRightOn, 25, 1
  2728. LightSeq001.UpdateInterval = 8
  2729. LightSeq001.Play SeqLeftOn, 25, 1
  2730. LightSeq001.UpdateInterval = 8
  2731. LightSeq001.Play SeqUpOn, 25, 1
  2732. LightSeq001.UpdateInterval = 8
  2733. LightSeq001.Play SeqDownOn, 25, 1
  2734. LightSeq001.UpdateInterval = 8
  2735. LightSeq001.Play SeqUpOn, 25, 1
  2736. LightSeq001.UpdateInterval = 8
  2737. LightSeq001.Play SeqDownOn, 25, 1
  2738. LightSeq001.UpdateInterval = 8
  2739. LightSeq001.Play SeqStripe1VertOn, 25, 3
  2740. LightSeq001.UpdateInterval = 8
  2741. LightSeq001.Play SeqStripe2VertOn, 25, 3
  2742. LightSeq001.UpdateInterval = 8
  2743. LightSeq001.Play SeqUpOn, 15, 1
  2744. LightSeq001.UpdateInterval = 8
  2745. LightSeq001.Play SeqDownOn, 15, 1
  2746. LightSeq001.UpdateInterval = 8
  2747. LightSeq001.Play SeqUpOn, 15, 1
  2748. LightSeq001.UpdateInterval = 8
  2749. LightSeq001.Play SeqDownOn, 15, 1
  2750. LightSeq001.UpdateInterval = 8
  2751. LightSeq001.Play SeqUpOn, 15, 1
  2752. LightSeq001.UpdateInterval = 8
  2753. LightSeq001.Play SeqDownOn, 15, 1
  2754. LightSeq001.UpdateInterval = 8
  2755. LightSeq001.Play SeqRightOn, 15, 1
  2756. LightSeq001.UpdateInterval = 8
  2757. LightSeq001.Play SeqLeftOn, 15, 1
  2758. LightSeq001.UpdateInterval = 8
  2759. LightSeq001.Play SeqRightOn, 15, 1
  2760. LightSeq001.UpdateInterval = 8
  2761. LightSeq001.Play SeqLeftOn, 15, 1
  2762. end sub
  2763.  
  2764.  
  2765. Sub GiOn
  2766. DOF 126, DOFOn
  2767. For each a in GI
  2768. a.State = 1
  2769. a.Intensity = 2
  2770. a.color = RGB(255, 155, 64) 'default color
  2771. a.colorfull = RGB(255, 255, 255) 'default color
  2772. Next
  2773. End Sub
  2774.  
  2775. Sub GiOff
  2776. DOF 126, DOFOff
  2777. For each a in GI
  2778. a.State = 0
  2779. Next
  2780. End Sub
  2781.  
  2782.  
  2783.  
  2784.  
  2785. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  2786. ' X X X X X X X X X X X X X X X X X X X X X X X
  2787. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  2788. ' SCORING FUNCTIONS
  2789. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  2790. ' X X X X X X X X X X X X X X X X X X X X X X X
  2791.  
  2792. Sub AddScore(points)
  2793. If(Tilted = False) Then
  2794. ' add the points to the current players score variable
  2795. Score(CurrentPlayer) = Score(CurrentPlayer) + points
  2796. DMDScore
  2797. pUpdateScores
  2798. End if
  2799. End Sub
  2800.  
  2801. Sub AwardExtraBall()
  2802. ExtraBallscount = ExtraBallscount + 1':chilloutthemusic
  2803. if sharkmode=0 then LightSharkMode1.state=0:LightSharkMode2.state=0:LightSharkMode3.state=0:LightSharkMode4.state=0
  2804. If extraballscount > 0 Then
  2805. Light_extraball.State = 1:PostFlasher.state = 1
  2806. ExtraBallsAwards(CurrentPlayer) = ExtraBallsAwards(CurrentPlayer) + 1
  2807. bExtraBallWonThisBall = True
  2808. DOF 402, DOFPulse 'DOF MX - Extra Ball
  2809. 'extraballready(CurrentPlayer) = 0
  2810. If bMultiBallMode = false Then
  2811. PuPlayer.playlistplayex pBackglass,"videodiv","extraball.mp4",0,1
  2812. DMDFlush:DMD "black.jpg", "EXTRABALL!", "", 3000
  2813. PuPlayer.playlistplayex pAudio,"audiocallouts","congrats_extraball.mp3",100,1
  2814.  
  2815. End If
  2816. Else
  2817. AddScore 4000000
  2818. END If
  2819. End Sub
  2820.  
  2821. Sub AwardSpecial()
  2822. Credits = Credits + 1:SaveValue cGameName, "Credits", Credits
  2823. DOF 140, DOFOn
  2824. PlaySound SoundFXDOF("knocker",136,DOFPulse,DOFKnocker)
  2825. DOF 115, DOFPulse
  2826. DOF 400, DOFPulse 'DOF MX - Special
  2827. End Sub
  2828.  
  2829. Sub AwardBonusJackpot()
  2830. addscore 1000000
  2831. DMD "black.jpg", "JACKPOT!", "1000000!", 3000
  2832. PuPlayer.playlistplayex paudio,"audiocallouts","Jackpot.mp3",100,1
  2833. if skeetbonus = 15 then jackpotwait.enabled=true
  2834. if endlesssummerbonus = 15 then jackpotwait.enabled=true
  2835. if sexwaxfrenzybonus = 15 then jackpotwait.enabled=true
  2836. DOF 140, DOFOn
  2837. PlaySound SoundFXDOF("knocker",136,DOFPulse,DOFKnocker)
  2838. DOF 115, DOFPulse
  2839. DOF 400, DOFPulse 'DOF MX - Special
  2840. End Sub
  2841.  
  2842. sub jackpotwait_timer()
  2843. if skeetbonus = 15 then DMDFlush:DMD "black.jpg", "Skeetsurfin mode", "maxed out!", 3000:PuPlayer.playlistplayex paudio,"audiocallouts","bonusmaxjackpot.mp3",100,1
  2844. if endlesssummerbonus = 15 then DMDFlush:DMD "black.jpg", "Endless summer mode", "maxed out!", 3000:PuPlayer.playlistplayex paudio,"audiocallouts","bonusmaxjackpot.mp3",100,1
  2845. if sexwaxfrenzybonus = 15 then DMDFlush:DMD "black.jpg", "sexwaxfrenzy mode", "maxed out!", 3000:PuPlayer.playlistplayex paudio,"audiocallouts","bonusmaxjackpot.mp3",100,1
  2846. jackpotwait.enabled=false
  2847. end sub
  2848.  
  2849. Sub AwardSkillshot()
  2850. Dim i
  2851. DOF 125, DOFPulse
  2852. ResetSkillShotTimer_Timer
  2853. AddScore SkillshotValue(CurrentPLayer)
  2854.  
  2855. timerskill.enabled=false
  2856. PuPlayer.playlistplayex paudio,"audiocallouts","yay.mp3",100,1
  2857. DMDFlush:DMD "black.jpg", "Nice Skillshot!", "" &SkillShotValue(CurrentPLayer), 3000
  2858. Light_skillhit_flash_white.state=2:skill_hit_flash.enabled=true
  2859. lightSeqSkillSuccess.Play SeqCircleInOn,10:lightSeqSkillSuccess.Play SeqCircleOutOn,10:lightSeqSkillSuccess.Play SeqCircleInOn,10
  2860. PuPlayer.playlistplayex pBackglass,"videodiv","skillshot.mp4",0,1
  2861. Targetskill1.isdropped=true:Targetskill2.isdropped=true:Targetskill3.isdropped=true
  2862. Targetskill1.collidable=false:Targetskill2.collidable=false:Targetskill3.collidable=false
  2863. TimerPrim.Enabled = True
  2864. LightPrim1.state=0:LightPrim2.state=0:LightPrim3.state=0
  2865.  
  2866. SkillShotValue(CurrentPLayer) = SkillShotValue(CurrentPLayer) + 10000
  2867. wall_inv_skt.isdropped=true
  2868. wall_inv_ES.isdropped=true
  2869.  
  2870. PrimTarget1.image="aluminum":PrimTarget2.image="aluminum":PrimTarget3.image="aluminum"
  2871.  
  2872. fakeboard1.isdropped=true:fakeboard2.isdropped=true:fakeboard3.isdropped=true
  2873. if progress(currentplayer)=0 then PuPlayer.playlistplayex pMusic,"musicmainmode","ESsong_mainball1.mp3",100, 1'(if not surfmode)
  2874. if progress(currentplayer)=1 then PuPlayer.playlistplayex pMusic,"musicsurfmode","",100, 1:TimerBoardwall3up.Enabled = true'(if surfmode)
  2875.  
  2876. 'DMDScoreNow
  2877. DOF 105, DOFOn
  2878. DOF 900, DOFOn
  2879.  
  2880. End Sub
  2881.  
  2882.  
  2883.  
  2884. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  2885. ' X X X X X X X X X X X X X X X X X X X X X X X
  2886. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  2887. ' BALL FUNCTIONS & DRAINS
  2888. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  2889. ' X X X X X X X X X X X X X X X X X X X X X X X
  2890.  
  2891.  
  2892. Function Balls
  2893. Dim tmp
  2894. tmp = bpgcurrent - BallsRemaining(CurrentPlayer) + 1
  2895. If tmp> bpgcurrent Then
  2896. Balls = bpgcurrent
  2897. Else
  2898. Balls = tmp
  2899. End If
  2900. End Function
  2901.  
  2902.  
  2903. Sub FirstBall
  2904. ResetForNewPlayerBall()
  2905. CreateNewBall()
  2906. End Sub
  2907.  
  2908.  
  2909. Sub ResetForNewPlayerBall()
  2910. PuPlayer.playresume 4
  2911. If PlayersPlayingGame > 1 Then
  2912. If CurrentPlayer = 1 Then
  2913. PuPlayer.playlistplayex paudio,"audiocallouts","player1.mp3",100,1
  2914. chilloutthemusic
  2915. Elseif currentplayer = 2 Then
  2916. PuPlayer.playlistplayex paudio,"audiocallouts","player2.mp3",100,1
  2917. chilloutthemusic
  2918. Elseif currentplayer = 3 Then
  2919. PuPlayer.playlistplayex paudio,"audiocallouts","player3.mp3",100,1
  2920. chilloutthemusic
  2921. Elseif currentplayer = 4 Then
  2922. PuPlayer.playlistplayex paudio,"audiocallouts","player4.mp3",100,1
  2923. chilloutthemusic
  2924. End If
  2925. Else
  2926. DMD "black.jpg", "BALL " & Balls, "Get on the water!", 2000
  2927. End If
  2928. AddScore 0
  2929. BonusPoints(CurrentPlayer) = 0
  2930. bBonusHeld = False
  2931. if extraballscount = 0 then bExtraBallWonThisBall = False
  2932. if extraballscount > 0 then bExtraBallWonThisBall = True
  2933. ResetNewBallLights()
  2934. ResetNewBallVariables
  2935. bBallSaverReady = True
  2936. bSkillShotReady = True
  2937.  
  2938. AwardPoints = 0
  2939. TotalBonus = 0
  2940.  
  2941. End Sub
  2942.  
  2943.  
  2944. Sub CreateNewBall()
  2945. BallRelease.CreateSizedball BallSize / 2
  2946. BallsOnPlayfield = BallsOnPlayfield + 1
  2947. PlaySoundAt SoundFXDOF("ballrelease", 113, DOFPulse, DOFContactors), BallRelease
  2948. playsound "ballrelease"
  2949. BallRelease.Kick 90, 4
  2950. If BallsOnPlayfield > 1 Then
  2951. bMultiBallMode = True
  2952. DOF 127, DOFOn 'Beacon ON
  2953. bAutoPlunger = True
  2954. End If
  2955. PuPlayer.playlistplayex pTopper, "topper","topper.mp4",100,1
  2956. End Sub
  2957.  
  2958.  
  2959. Sub AddMultiball(nballs)
  2960. mBalls2Eject = mBalls2Eject + nballs
  2961. CreateMultiballTimer.Enabled = True
  2962. End Sub
  2963.  
  2964. Sub CreateMultiballTimer_Timer()
  2965. If bBallInPlungerLane Then
  2966. Exit Sub
  2967. Else
  2968. If BallsOnPlayfield <MaxMultiballs Then
  2969. CreateNewBall()
  2970. mBalls2Eject = mBalls2Eject -1
  2971. If mBalls2Eject = 0 Then
  2972. Me.Enabled = False
  2973. End If
  2974. Else
  2975. mBalls2Eject = 0
  2976. Me.Enabled = False
  2977. End If
  2978. End If
  2979. End Sub
  2980.  
  2981. Sub EndOfBall()
  2982. Dim waittime
  2983. waittime=0
  2984. 'Dim AwardPoints, TotalBonus, ii
  2985.  
  2986. ' the first ball has been lost. From this point on no new players can join in
  2987. bOnTheFirstBall = False
  2988.  
  2989. if diversitymultiplier > 0 and endlesssummerbonuspre+Skeetbonuspre+Sexwaxfrenzybonuspre+offthelipbonuspre+loopbonuspre+aerialbonuspre > 0 then
  2990.  
  2991. 'Bonuscount + calculation.
  2992. playsound "wusha"
  2993.  
  2994. 'endlesssummerbonus
  2995. if endlesssummerbonuspre>0 then
  2996. waittime=waittime+1800
  2997. AwardPoints = endlesssummerbonuspre * 10000
  2998. TotalBonus = TotalBonus + AwardPoints
  2999. vpmtimer.addtimer waittime, "PlaySound ""wush0"", 0, 1, 0, 0, 0, 0, 0 '"
  3000.  
  3001. Select Case Int(Rnd * 12) + 1
  3002. Case 1:DMD "bon1.wmv", "Endlesssummer Bonus", awardpoints, 1500
  3003. Case 2:DMD "bon2.wmv", "Endlesssummer Bonus", awardpoints, 1500
  3004. Case 3:DMD "bon3.wmv", "Endlesssummer Bonus", awardpoints, 1500
  3005. Case 4:DMD "bon4.wmv", "Endlesssummer Bonus", awardpoints, 1500
  3006. Case 5:DMD "bon5.wmv", "Endlesssummer Bonus", awardpoints, 1500
  3007. Case 6:DMD "bon6.wmv", "Endlesssummer Bonus", awardpoints, 1500
  3008. Case 7:DMD "bon7.wmv", "Endlesssummer Bonus", awardpoints, 1500
  3009. Case 8:DMD "bon8.wmv", "Endlesssummer Bonus", awardpoints, 1500
  3010. Case 9:DMD "bon9.wmv", "Endlesssummer Bonus", awardpoints, 1500
  3011. Case 10:DMD "bon10.wmv", "Endlesssummer Bonus", awardpoints, 1500
  3012. Case 11:DMD "bon11.wmv", "Endlesssummer Bonus", awardpoints, 1500
  3013. Case 12:DMD "bon12.wmv", "Endlesssummer Bonus", awardpoints, 1500
  3014. End Select
  3015. end If
  3016.  
  3017.  
  3018. 'skeetbonus
  3019. if skeetbonuspre>0 then
  3020. waittime=waittime+1800
  3021. AwardPoints = skeetbonuspre * 10000
  3022. TotalBonus = TotalBonus + Awardpoints
  3023.  
  3024. Select Case Int(Rnd * 12) + 1
  3025. Case 1:DMD "bon1.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  3026. Case 2:DMD "bon2.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  3027. Case 3:DMD "bon3.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  3028. Case 4:DMD "bon4.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  3029. Case 5:DMD "bon5.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  3030. Case 6:DMD "bon6.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  3031. Case 7:DMD "bon7.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  3032. Case 8:DMD "bon8.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  3033. Case 9:DMD "bon9.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  3034. Case 10:DMD "bon10.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  3035. Case 11:DMD "bon11.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  3036. Case 12:DMD "bon12.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  3037. End Select
  3038. vpmtimer.addtimer waittime, "PlaySound ""wush1"", 0, 1, 0, 0, 0, 0, 0 '"
  3039. end if
  3040.  
  3041. 'sexwaxfrenzybonus
  3042. if sexwaxfrenzybonuspre>0 then
  3043. waittime=waittime+1800
  3044. AwardPoints = sexwaxfrenzybonuspre * 10000
  3045. TotalBonus = TotalBonus + AwardPoints
  3046. vpmtimer.addtimer waittime, "PlaySound ""wush2"", 0, 1, 0, 0, 0, 0, 0 '"
  3047.  
  3048. Select Case Int(Rnd * 12) + 1
  3049. Case 1:DMD "bon1.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  3050. Case 2:DMD "bon2.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  3051. Case 3:DMD "bon3.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  3052. Case 4:DMD "bon4.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  3053. Case 5:DMD "bon5.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  3054. Case 6:DMD "bon6.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  3055. Case 7:DMD "bon7.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  3056. Case 8:DMD "bon8.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  3057. Case 9:DMD "bon9.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  3058. Case 10:DMD "bon10.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  3059. Case 11:DMD "bon11.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  3060. Case 12:DMD "bon12.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  3061. End Select
  3062.  
  3063. end If
  3064.  
  3065. 'offthelipbonus
  3066. if offthelipbonuspre>0 then
  3067. waittime=waittime+1800
  3068. AwardPoints = offthelipbonuspre * 10000
  3069. TotalBonus = Totalbonus + AwardPoints
  3070.  
  3071. Select Case Int(Rnd * 12) + 1
  3072. Case 1:DMD "bon1.wmv", "Off the lip Bonus", awardpoints, 1500
  3073. Case 2:DMD "bon2.wmv", "Off the lip Bonus", awardpoints, 1500
  3074. Case 3:DMD "bon3.wmv", "Off the lip Bonus", awardpoints, 1500
  3075. Case 4:DMD "bon4.wmv", "Off the lip Bonus", awardpoints, 1500
  3076. Case 5:DMD "bon5.wmv", "Off the lip Bonus", awardpoints, 1500
  3077. Case 6:DMD "bon6.wmv", "Off the lip Bonus", awardpoints, 1500
  3078. Case 7:DMD "bon7.wmv", "Off the lip Bonus", awardpoints, 1500
  3079. Case 8:DMD "bon8.wmv", "Off the lip Bonus", awardpoints, 1500
  3080. Case 9:DMD "bon9.wmv", "Off the lip Bonus", awardpoints, 1500
  3081. Case 10:DMD "bon10.wmv", "Off the lip Bonus", awardpoints, 1500
  3082. Case 11:DMD "bon11.wmv", "Off the lip Bonus", awardpoints, 1500
  3083. Case 12:DMD "bon12.wmv", "Off the lip Bonus", awardpoints, 1500
  3084. End Select
  3085. vpmtimer.addtimer waittime, "PlaySound ""wush3"", 0, 1, 0, 0, 0, 0, 0 '"
  3086.  
  3087. end If
  3088.  
  3089. 'loopbonus
  3090. if loopbonuspre>0 then
  3091. waittime=waittime+1800
  3092. AwardPoints = loopBonuspre * 10000
  3093. TotalBonus = TotalBonus + Awardpoints
  3094.  
  3095. Select Case Int(Rnd * 12) + 1
  3096. Case 1:DMD "bon1.wmv", "Loop Bonus", awardpoints, 1500
  3097. Case 2:DMD "bon2.wmv", "Loop Bonus", awardpoints, 1500
  3098. Case 3:DMD "bon3.wmv", "Loop Bonus", awardpoints, 1500
  3099. Case 4:DMD "bon4.wmv", "Loop Bonus", awardpoints, 1500
  3100. Case 5:DMD "bon5.wmv", "Loop Bonus", awardpoints, 1500
  3101. Case 6:DMD "bon6.wmv", "Loop Bonus", awardpoints, 1500
  3102. Case 7:DMD "bon7.wmv", "Loop Bonus", awardpoints, 1500
  3103. Case 8:DMD "bon8.wmv", "Loop Bonus", awardpoints, 1500
  3104. Case 9:DMD "bon9.wmv", "Loop Bonus", awardpoints, 1500
  3105. Case 10:DMD "bon10.wmv", "Loop Bonus", awardpoints, 1500
  3106. Case 11:DMD "bon11.wmv", "Loop Bonus", awardpoints, 1500
  3107. Case 12:DMD "bon12.wmv", "Loop Bonus", awardpoints, 1500
  3108. End Select
  3109. vpmtimer.addtimer waittime, "PlaySound ""wush4"", 0, 1, 0, 0, 0, 0, 0 '"
  3110.  
  3111.  
  3112. end if
  3113.  
  3114. 'aerialbonus
  3115. if aerialbonuspre>0 then
  3116. waittime=waittime+1800
  3117. AwardPoints = aerialbonuspre * 10000
  3118. TotalBonus = TotalBonus + AwardPoints
  3119.  
  3120. Select Case Int(Rnd * 12) + 1
  3121. Case 1:DMD "bon1.wmv", "Aerial 360 Bonus", awardpoints, 1500
  3122. Case 2:DMD "bon2.wmv", "Aerial 360 Bonus", awardpoints, 1500
  3123. Case 3:DMD "bon3.wmv", "Aerial 360 Bonus", awardpoints, 1500
  3124. Case 4:DMD "bon4.wmv", "Aerial 360 Bonus", awardpoints, 1500
  3125. Case 5:DMD "bon5.wmv", "Aerial 360 Bonus", awardpoints, 1500
  3126. Case 6:DMD "bon6.wmv", "Aerial 360 Bonus", awardpoints, 1500
  3127. Case 7:DMD "bon7.wmv", "Aerial 360 Bonus", awardpoints, 1500
  3128. Case 8:DMD "bon8.wmv", "Aerial 360 Bonus", awardpoints, 1500
  3129. Case 9:DMD "bon9.wmv", "Aerial 360 Bonus", awardpoints, 1500
  3130. Case 10:DMD "bon10.wmv", "Aerial 360 Bonus", awardpoints, 1500
  3131. Case 11:DMD "bon11.wmv", "Aerial 360 Bonus", awardpoints, 1500
  3132. Case 12:DMD "bon12.wmv", "Aerial 360 Bonus", awardpoints, 1500
  3133. End Select
  3134. vpmtimer.addtimer waittime, "PlaySound ""wush5"", 0, 1, 0, 0, 0, 0, 0 '"
  3135. end if
  3136.  
  3137. 'diversitymultiplier
  3138. AwardPoints = diversitymultiplier
  3139. 'TotalBonus = TotalBonus * diversitymultiplier
  3140. Select Case Int(Rnd * 12) + 1
  3141. Case 1:DMD "bon1.wmv", "variety Multiplier", awardpoints, 1500
  3142. Case 2:DMD "bon2.wmv", "variety Multiplier", awardpoints, 1500
  3143. Case 3:DMD "bon3.wmv", "variety Multiplier", awardpoints, 1500
  3144. Case 4:DMD "bon4.wmv", "variety Multiplier", awardpoints, 1500
  3145. Case 5:DMD "bon5.wmv", "variety Multiplier", awardpoints, 1500
  3146. Case 6:DMD "bon6.wmv", "variety Multiplier", awardpoints, 1500
  3147. Case 7:DMD "bon7.wmv", "variety Multiplier", awardpoints, 1500
  3148. Case 8:DMD "bon8.wmv", "variety Multiplier", awardpoints, 1500
  3149. Case 9:DMD "bon9.wmv", "variety Multiplier", awardpoints, 1500
  3150. Case 10:DMD "bon10.wmv", "variety Multiplier", awardpoints, 1500
  3151. Case 11:DMD "bon11.wmv", "variety Multiplier", awardpoints, 1500
  3152. Case 12:DMD "bon12.wmv", "variety Multiplier", awardpoints, 1500
  3153. End Select
  3154.  
  3155.  
  3156. ' calculate the totalbon
  3157. TotalBonus = TotalBonus * diversitymultiplier
  3158.  
  3159.  
  3160. ' Add the bonus to the score
  3161. DMD "black.jpg", "TOTAL BONUS X " &diversitymultiplier, "= "&TotalBonus , 3000
  3162. waittime=waittime+1800
  3163. vpmtimer.addtimer waittime, "PlaySound ""yahoo"", 0, 1, 0, 0, 0, 0, 0 '" ' if Bonus=0 then playsound "yesterday"
  3164. AddScore TotalBonus
  3165. waittime=waittime+3500
  3166. vpmtimer.addtimer waittime, "EndOfBall2 '"
  3167. else
  3168. 'end If
  3169. '
  3170. 'if diversitymultiplier=0 then
  3171. Select Case Int(Rnd * 2) + 1
  3172. Case 1: PuPlayer.playlistplayex paudio,"audiocallouts","nobonus_yesterday.mp3",100, 1
  3173. Case 2: PuPlayer.playlistplayex paudio,"audiocallouts","Aww.mp3",100, 1
  3174. End Select
  3175. DMD "black.jpg", "Back to surf school!", "no Bonus", 3000
  3176. vpmtimer.addtimer 3500, "EndOfBall2 '"
  3177. end if
  3178.  
  3179. End Sub
  3180.  
  3181.  
  3182. Sub EndOfBall2()
  3183. Tilted = False
  3184. Tilt = 0
  3185. DisableTable False
  3186. tilttableclear.enabled = False
  3187. tilttime = 0
  3188. If(ExtraBallsAwards(CurrentPlayer) <> 0) Then
  3189. ExtraBallsAwards(CurrentPlayer) = ExtraBallsAwards(CurrentPlayer) - 1
  3190. ExtraBallscount = ExtraBallscount - 1
  3191. If(ExtraBallsAwards(CurrentPlayer) = 0) Then
  3192. Light_extraball.State = 0:PostFlasher.state = 0
  3193. End If
  3194.  
  3195. CreateNewBall()
  3196. ResetForNewPlayerBall
  3197. DMD "black.jpg", "same player", "shoot again", 3000
  3198. ballstate=2
  3199. chilloutthemusic
  3200. Else
  3201. BallsRemaining(CurrentPlayer) = BallsRemaining(CurrentPlayer) - 1
  3202. If(BallsRemaining(CurrentPlayer) <= 0) Then
  3203. CheckHighScore()
  3204. Else
  3205. EndOfBallComplete()
  3206. End If
  3207. End If
  3208. End Sub
  3209.  
  3210. Sub EndOfBallComplete()
  3211. ResetNewBallVariables
  3212. CounterTimer.Enabled = 0
  3213. Dim NextPlayer
  3214. If(PlayersPlayingGame> 1) Then
  3215. NextPlayer = CurrentPlayer + 1
  3216. If(NextPlayer> PlayersPlayingGame) Then
  3217. NextPlayer = 1
  3218. End If
  3219. Else
  3220. NextPlayer = CurrentPlayer
  3221. End If
  3222. If((BallsRemaining(CurrentPlayer) <= 0) AND(BallsRemaining(NextPlayer) <= 0) ) Then
  3223. EndOfGame()
  3224. Else
  3225. CurrentPlayer = NextPlayer
  3226. AddScore 0
  3227. ResetForNewPlayerBall()
  3228. CreateNewBall()
  3229. If PlayersPlayingGame> 1 Then
  3230. PlaySound "vo_player" &CurrentPlayer
  3231. End If
  3232. End If
  3233. End Sub
  3234.  
  3235. Sub Balldrained
  3236. DOF 312, DOFPulse
  3237. End Sub
  3238.  
  3239. Sub Drain_Hit()
  3240. Drain.DestroyBall
  3241. BallsOnPlayfield = BallsOnPlayfield - 1
  3242. PlaySoundAt "fx_drain", Drain
  3243. If Tilted Then
  3244. StopEndOfBallMode
  3245. End If
  3246. If(bGameInPLay = True) AND(Tilted = False) Then
  3247. If(bBallSaverActive = True) Then
  3248. AddMultiball 1
  3249. bAutoPlunger = True
  3250. If bMultiBallMode = False Then
  3251. 'Ballsaved
  3252. PuPlayer.playlistplayex pAudio,"audioevents","phoenix.mp3",100, 1
  3253. 'chilloutthemusic
  3254. DMD "black.jpg", "Ball", "saved!", 3000
  3255. PuPlayer.playlistplayex pBackglass,"videoballsaved","",100,1
  3256. ballstate=1
  3257. End If
  3258. Else
  3259. If(BallsOnPlayfield = 1) Then
  3260. If(bMultiBallMode = True) then
  3261. bMultiBallMode = False
  3262. DOF 127, DOFOff 'DOF - Beacon - OFF
  3263. End If
  3264. if(ballsonplayfield = 1) and kickerticket.enabled=true then 'if there is a ball locked then release that ball
  3265. kickerticket.kick 170,1:playsound "fx_ball_drop0"
  3266. kickerticket.enabled=false
  3267. DMD "black.jpg", "too bad", "no multiball!", 3000
  3268. DMD "black.jpg", "Go boarding!", "", 3000
  3269. PuPlayer.playlistplayex pAudio,"audiocallouts","no_multiball.mp3",80, 1
  3270. end if
  3271. bMultiBallMode = False
  3272.  
  3273. End If
  3274. If(BallsOnPlayfield = 0) Then
  3275. bMultiBallMode = False
  3276. vpmtimer.addtimer 1000, "Balldrained '"
  3277. vpmtimer.addtimer 6000, "EndOfBall '"
  3278. if middlebump.isdropped=false then
  3279. middlebump.isdropped=true:P_Post.Transy = 0:P_Post.image = "Post_blue2"
  3280. middlebumptimer.enabled=false:bumpercount=0
  3281. end if
  3282. PuPlayer.playlistplayex pMusic,"audioclear","clear.mp3",100, 1
  3283. StopEndOfBallMode
  3284. End If
  3285. End If
  3286. End If
  3287. End Sub
  3288.  
  3289.  
  3290. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  3291. ' X X X X X X X X X X X X X X X X X X X X X X X
  3292. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  3293. ' BALL SAVE & LAUNCH
  3294. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  3295. ' X X X X X X X X X X X X X X X X X X X X X X X
  3296.  
  3297.  
  3298. Sub shorttimeballsaver_hit
  3299. If(bBallSaverReady = True) AND(15 <> 0) And(bBallSaverActive = False) Then
  3300. EnableBallSaver 15
  3301. End If
  3302. End Sub
  3303.  
  3304. Sub swPlungerRest_Hit()
  3305. PlaySoundAt "fx_sensor", ActiveBall
  3306. ' PlaySoundAt SoundFXDOF("fx_sensor", 112, DOFPulse, DOFContactors), ActiveBall
  3307. bBallInPlungerLane = True
  3308. If bAutoPlunger Then
  3309. DOF 114, DOFPulse
  3310. DOF 115, DOFPulse
  3311. DOF 318, DOFPulse
  3312. bAutoPlunger = False
  3313. End If
  3314. DOF 141, DOFOn
  3315. DOF 317, DOFOn
  3316. If bSkillShotReady Then
  3317. swPlungerRest.TimerEnabled = 1
  3318. UpdateSkillshot()
  3319. End If
  3320. LastSwitchHit = "swPlungerRest"
  3321. End Sub
  3322.  
  3323.  
  3324. Sub swPlungerRest_UnHit()
  3325. bBallInPlungerLane = False
  3326. swPlungerRest.TimerEnabled = 0 'stop the launch ball timer if active
  3327. If bSkillShotReady Then
  3328. ResetSkillShotTimer.Enabled = 1
  3329. End If
  3330. DOF 317, DOFOff 'DOF MX - Ball is ready to Launch - OFF
  3331. End Sub
  3332.  
  3333.  
  3334. Sub swPlungerRest_Timer
  3335. 'DMD "start-5.wmv", "", "", 6000
  3336. swPlungerRest.TimerEnabled = 0
  3337. End Sub
  3338.  
  3339. Sub EnableBallSaver(seconds)
  3340. bBallSaverActive = True
  3341. bBallSaverReady = False
  3342. BallSaverTimerExpired.Interval = 1000 * seconds
  3343. BallSaverTimerExpired.Enabled = True
  3344. BallSaverSpeedUpTimer.Interval = 1000 * seconds -(1000 * seconds) / 3
  3345. BallSaverSpeedUpTimer.Enabled = True
  3346. ' if you have a ball saver light you might want to turn it on at this point (or make it flash)
  3347. Light_extraball.BlinkInterval = 160:PostFlasher.BlinkInterval=160
  3348. Light_extraball.State = 2:PostFlasher.state = 2
  3349. End Sub
  3350.  
  3351.  
  3352. Sub BallSaverTimerExpired_Timer()
  3353.  
  3354. BallSaverTimerExpired.Enabled = False
  3355.  
  3356. Dim waittime
  3357. waittime = 1000
  3358. vpmtimer.addtimer waittime, "ballsavegrace'"
  3359. ' if you have a ball saver light then turn it off at this point
  3360. If bExtraBallWonThisBall = True Then
  3361. Light_extraball.State = 1:PostFlasher.state = 1
  3362. Else
  3363. Light_extraball.State = 0:PostFlasher.state = 0
  3364. End If
  3365. End Sub
  3366.  
  3367. Sub ballsavegrace
  3368. bBallSaverActive = False
  3369. End Sub
  3370.  
  3371. Sub BallSaverSpeedUpTimer_Timer()
  3372. 'debug.print "Ballsaver Speed Up Light"
  3373. BallSaverSpeedUpTimer.Enabled = False
  3374. ' Speed up the blinking
  3375. Light_extraball.BlinkInterval = 80:PostFlasher.BlinkInterval = 80
  3376. Light_extraball.State = 2:PostFlasher.state =2
  3377. End Sub
  3378.  
  3379.  
  3380. '********************************************************************************************************************************************
  3381. '********************************************************************************************************************************************
  3382. 'FRAMEWORK BASE CODE END HERE
  3383. '********************************************************************************************************************************************
  3384. '********************************************************************************************************************************************
  3385.  
  3386.  
  3387. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  3388. ' X X X X X X X X X X X X X X X X X X X X X X X
  3389. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  3390. ' ATTRACT MODE
  3391. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  3392. ' X X X X X X X X X X X X X X X X X X X X X X X
  3393. '
  3394.  
  3395.  
  3396. Dim introposition
  3397. introposition = 0
  3398.  
  3399. Sub DMDintroloop
  3400. introtime = 0
  3401. introposition = introposition + 1
  3402. Select Case introposition
  3403.  
  3404. Case 1
  3405. If Credits> 0 Then
  3406. DMD "Black.jpg", "Credits " &credits, "HIT THE LIP!", 2000
  3407. PuPlayer.playlistplayex pBackglass, "videoattract", "videoattract.mp4",100,1
  3408.  
  3409. Else
  3410. DMD "Black.jpg", "Come on...", "WE NEED BALLS!", 2000
  3411. PuPlayer.playlistplayex pBackglass, "videoattract", "videoattract.mp4",100,1
  3412. End If
  3413.  
  3414. introposition = 0
  3415. End Select
  3416. End Sub
  3417.  
  3418.  
  3419. Dim introtime
  3420. introtime = 0
  3421.  
  3422. Sub intromover_timer
  3423. End Sub
  3424.  
  3425.  
  3426.  
  3427. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  3428. ' X X X X X X X X X X X X X X X X X X X X X X X
  3429. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  3430. ' GAME STARTING & RESETS
  3431. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  3432. ' X X X X X X X X X X X X X X X X X X X X X X X
  3433. '
  3434.  
  3435. Sub Game_Init() 'called at the start of a new game
  3436. Dim i
  3437. For i = 0 to 4
  3438. SkillshotValue(i) = 10000 ' increases by 10000 each time it is collected
  3439. BonusPoints(i)=0
  3440. Score(i)=0
  3441. waxcount (i)=0
  3442. boards (i)=0
  3443. spotmastered (i)=0
  3444. progress (i)=0
  3445.  
  3446.  
  3447. Next
  3448. lrflashtime.Enabled = False
  3449. bExtraBallWonThisBall = False
  3450. Sharkextraballs = 0
  3451. For each xx in aTargetsES:xx.blenddisablelighting=1 : Next
  3452. for each xx in aTargetsSKEET:xx.blenddisablelighting=1:next
  3453. PuPlayer.LabelSet pBackglass,"high1name","",1,""
  3454. PuPlayer.LabelSet pBackglass,"high1score","",1,""
  3455. PuPlayer.LabelSet pBackglass,"high2name","",1,""
  3456. PuPlayer.LabelSet pBackglass,"high2score","",1,""
  3457. PuPlayer.LabelSet pBackglass,"high3name","",1,""
  3458. PuPlayer.LabelSet pBackglass,"high3score","",1,""
  3459. PuPlayer.LabelSet pBackglass,"high4name","",1,""
  3460. PuPlayer.LabelSet pBackglass,"high4score","",1,""
  3461. PuPlayer.LabelShowPage pBackglass,1,0,""
  3462. pUpdateScores
  3463. PuPlayer.SetBackground pBackglass,1
  3464. PuPlayer.LabelSet pBackglass,"Play1","PLAYER 1",1,"{'mt':2,'color':16777215}"
  3465. PuPlayer.LabelSet pBackglass,"notetitle","",1,""
  3466. PuPlayer.LabelSet pBackglass,"notecopy","",1,""
  3467. ruleshelperon
  3468. resetbackglass
  3469. PuPlayer.playlistplayex pMusic,"audioclear","clear.mp3",100, 1
  3470. outro.enabled=false
  3471. End Sub
  3472.  
  3473. Sub StopEndOfBallMode() 'this sub is called after the last ball is drained
  3474. ResetSkillShotTimer_Timer
  3475. if light_waxbowl.state=2 and lightsurfmode1.state=0 then
  3476. waxcount(currentplayer)=0
  3477. waxcount10.visible=false
  3478. waxcount9.visible=false
  3479. waxcount8.visible=false
  3480. waxcount7.visible=false
  3481. waxcount6.visible=false
  3482. waxcount5.visible=false
  3483. waxcount4.visible=false
  3484. waxcount3.visible=false
  3485. waxcount2.visible=false
  3486. waxcount1.visible=false
  3487. end if
  3488. End Sub
  3489.  
  3490. Sub ResetNewBallVariables()
  3491. PuPlayer.SetLoop 4,1
  3492. End Sub
  3493.  
  3494. Sub TurnOffPlayfieldLights()
  3495. End Sub
  3496.  
  3497. Sub ResetNewBallLights() 'turn on or off the needed lights before a new ball is released
  3498. TurnOffPlayfieldLights()
  3499. End Sub
  3500.  
  3501. Sub startamultiball
  3502. Dim waittime
  3503. waittime = 1000
  3504. vpmtimer.addtimer waittime, "closeupshop'"
  3505. End Sub
  3506.  
  3507. Sub closeupshop
  3508.  
  3509. End Sub
  3510.  
  3511. Sub endamultiball
  3512.  
  3513. End Sub
  3514.  
  3515.  
  3516. Sub UpdateSkillShot() 'Updates the skillshot light
  3517. End Sub
  3518.  
  3519. Sub SkillshotOff_Hit 'trigger to stop the skillshot due to a weak plunger shot
  3520. If bSkillShotReady Then
  3521.  
  3522. ResetSkillShotTimer_Timer
  3523. End If
  3524. End Sub
  3525.  
  3526. Sub ResetSkillShotTimer_Timer 'timer to reset the skillshot lights & variables
  3527. ResetSkillShotTimer.Enabled = 0
  3528. bSkillShotReady = False
  3529. End Sub
  3530.  
  3531.  
  3532. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  3533. ' X X X X X X X X X X X X X X X X X X X X X X X
  3534. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  3535. ' RULES HELPER FOR YOUR BACKGLASS
  3536. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  3537. ' X X X X X X X X X X X X X X X X X X X X X X X
  3538. '
  3539.  
  3540.  
  3541. Sub ruleshelperon
  3542. rulestime.enabled = 1
  3543. End Sub
  3544.  
  3545. Sub ruleshelperoff
  3546. rulestime.enabled = 0
  3547. End Sub
  3548.  
  3549. Dim rulesposition
  3550. rulesposition = 0
  3551.  
  3552. Sub rulestime_timer ' seems to be below the backglass -> invisible... :-(
  3553. If turnoffrules = 1 then exit sub end if
  3554. rulesposition = rulesposition + 1
  3555. Select Case rulesposition
  3556. Case 1
  3557. PuPlayer.LabelSet pBackglass,"notetitle","Endless Summer Mode",1,""
  3558. PuPlayer.LabelSet pBackglass,"notecopy","Hit ENDLESS SUMMER targets then ride upper lanes",1,""
  3559. Case 8
  3560. PuPlayer.LabelSet pBackglass,"notetitle","Skeet Mode",1,""
  3561. PuPlayer.LabelSet pBackglass,"notecopy","Hit SKEET targets then hit flashing targets",1,""
  3562. Case 15
  3563. PuPlayer.LabelSet pBackglass,"notetitle","Sexwaxfrenzy Mode",1,""
  3564. PuPlayer.LabelSet pBackglass,"notecopy","Hit bumper 3 times then hit boards and bowl alternatingly",1,""
  3565. Case 24
  3566. PuPlayer.LabelSet pBackglass,"notetitle","Surf Mode (1)",1,""
  3567. PuPlayer.LabelSet pBackglass,"notecopy","Hit 3 equip targets (left) and get 3 boards (right ramp)",1,""
  3568. Case 32
  3569. PuPlayer.LabelSet pBackglass,"notetitle","Surf Mode (2)",1,""
  3570. PuPlayer.LabelSet pBackglass,"notecopy","then get ticket and take your flight",1,""
  3571. Case 40
  3572. PuPlayer.LabelSet pBackglass,"notetitle","Surf Mode (3)",1,""
  3573. PuPlayer.LabelSet pBackglass,"notecopy","now wax your boards then go surfing",1,""
  3574. Case 48
  3575. PuPlayer.LabelSet pBackglass,"notetitle","Surf Mode (4)",1,""
  3576. PuPlayer.LabelSet pBackglass,"notecopy","ride upperlanes, bowl and right ramp for boni",1,""
  3577. Case 56
  3578. PuPlayer.LabelSet pBackglass,"notetitle","Surf Mode (5)",1,""
  3579. PuPlayer.LabelSet pBackglass,"notecopy","ride tubes (left ramp) 3 times to master the spot",1,""
  3580. Case 64
  3581. rulesposition = 0
  3582. End Select
  3583. End Sub
  3584.  
  3585.  
  3586.  
  3587.  
  3588.  
  3589. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  3590. ' X X X X X X X X X X X X X X X X X X X X X X X
  3591. '/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
  3592. ' SECONDARY HIT EVENTS
  3593. '\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
  3594. ' X X X X X X X X X X X X X X X X X X X X X X X
  3595. '
  3596.  
  3597. Dim RStep, Lstep
  3598.  
  3599. Sub RightSlingShot1_slingshot
  3600. PlaySoundAt SoundFXDOF("fx_slingshot", 103, DOFPulse, DOFContactors), RightInlane
  3601. End Sub
  3602.  
  3603. Sub LeftSlingShot1_slingshot
  3604. PlaySoundAt SoundFXDOF("fx_slingshot", 103, DOFPulse, DOFContactors), LeftInlane
  3605. End Sub
  3606.  
  3607. Sub RightSlingShot_Slingshot
  3608. PlaySoundAt SoundFXDOF("fx_slingshot", 103, DOFPulse, DOFContactors), RightInlane
  3609. Gi1.intensity=10:Gi2.intensity=10
  3610. PlaySound SoundFX("right_slingshot",DOFContactors), 0,1, 0.05,0.05 '0,1, AudioPan(RightSlingShot), 0.05,0,0,1,AudioFade(RightSlingShot)
  3611. DOF 109, DOFPulse
  3612. RSling.Visible = 0
  3613. RSling1.Visible = 1
  3614. sling1.TransZ = -20
  3615. RStep = 0
  3616. RightSlingShot.TimerEnabled = 1
  3617. AddScore 25
  3618. 'Board2Shake
  3619. ' cBall2.velx = boardshake * (2*RND(1)-1)
  3620. ' cBall2.vely = boardshake * (2*RND(1)-1)
  3621. End Sub
  3622.  
  3623. Sub RightSlingShot_Timer
  3624. Select Case RStep
  3625. Case 3:RSLing1.Visible = 0:RSLing2.Visible = 1:sling1.TransZ = -10
  3626. Case 4:RSLing2.Visible = 0:RSLing.Visible = 1:sling1.TransZ = 0:RightSlingShot.TimerEnabled = 0
  3627. End Select
  3628. RStep = RStep + 1
  3629. Gi1.intensity=2:Gi2.intensity=2
  3630. End Sub
  3631.  
  3632. Sub LeftSlingShot_Slingshot
  3633. PlaySoundAt SoundFXDOF("fx_slingshot", 103, DOFPulse, DOFContactors), LeftInlane
  3634. Gi3.intensity=10:Gi4.intensity=10
  3635. PlaySound SoundFX("left_slingshot",DOFContactors), 0,1, -0.05,0.05 '0,1, AudioPan(LeftSlingShot), 0.05,0,0,1,AudioFade(LeftSlingShot)
  3636. DOF 108, DOFPulse
  3637. LSling.Visible = 0
  3638. LSling1.Visible = 1
  3639. sling2.TransZ = -20
  3640. LStep = 0
  3641. LeftSlingShot.TimerEnabled = 1
  3642. AddScore 25
  3643. 'Board1Shake
  3644. ' cBall1.velx = boardshake * (2*RND(1)-1)
  3645. ' cBall1.vely = boardshake * (2*RND(1)-1)
  3646. End Sub
  3647.  
  3648. Sub LeftSlingShot_Timer
  3649. Select Case LStep
  3650. Case 3:LSLing1.Visible = 0:LSLing2.Visible = 1:sling2.TransZ = -10
  3651. Case 4:LSLing2.Visible = 0:LSLing.Visible = 1:sling2.TransZ = 0:LeftSlingShot.TimerEnabled = 0
  3652. End Select
  3653. LStep = LStep + 1
  3654. Gi3.intensity=2:Gi4.intensity=2
  3655. End Sub
  3656.  
  3657.  
  3658. ' *********************************************************************
  3659. ' some special physics behaviour
  3660. ' *********************************************************************
  3661. '!if target or rubber post is hit - let the ball jump a bit (dont know if it really works...does not seem so...)
  3662.  
  3663. Dim LetTheBallJump
  3664. LetTheBallJump=3
  3665.  
  3666. Sub aTargetsES_Hit()
  3667. ActiveBall.VelZ = ActiveBall.VelZ * (0.5 + (Rnd()*LetTheBallJump + Rnd()*LetTheBallJump + 1) / 6)
  3668. End Sub
  3669.  
  3670. Sub aTargetsSKEET_Hit()
  3671. ActiveBall.VelZ = ActiveBall.VelZ * (0.5 + (Rnd()*LetTheBallJump + Rnd()*LetTheBallJump + 1) / 6)
  3672. End Sub
  3673.  
  3674. Sub aTargetsEquip_Hit()
  3675. ActiveBall.VelZ = ActiveBall.VelZ * (0.5 + (Rnd()*LetTheBallJump + Rnd()*LetTheBallJump + 1) / 6)
  3676. End Sub
  3677.  
  3678. Sub Rubbers_Hit(idx)
  3679. ActiveBall.VelZ = ActiveBall.VelZ * (0.5 + (Rnd()*LetTheBallJump + Rnd()*LetTheBallJump + 1) / 6)
  3680. end Sub
  3681.  
  3682. '********************************************************************************************************************
  3683. '********************************************************************************************************************
  3684. '********************************************************************************************************************
  3685. '******************************** ENDLESS SUMMER PINBALL ************************************************************
  3686. '***** makmaks glorious code starts here - sorry for being so noobish ;-) *******************************************
  3687. '********************************************************************************************************************
  3688. '********************************************************************************************************************
  3689. '********************************************************************************************************************
  3690.  
  3691.  
  3692. '***** conditions on new ball *****
  3693.  
  3694. sub gate1_hit()
  3695. DMDFlush:DMD "black.jpg", "Prepare for", "Skillshot!", 2500
  3696. For each xx in aPlasticsDark:xx.isdropped=true : Next
  3697. if kickerticket.enabled=true and light_ticket.state=1 then TimerBoardwall1down.enabled=true:Light_Triggershot_right.state=0
  3698. if light_ticketarrow.state=2 then kickerticket.enabled=true
  3699. if l31.state+l32.state+l33.state>3 then gateramp.collidable=true
  3700. Light_skeetmodehit1.state=0:Light_skeetmodehit2.state=0:Light_skeetmodehit3.state=0:Light_skeetmodehit4.state=0:flash_left_uplane.state=0:flash_right_uplane.state=0
  3701. wall_inv_skt.isdropped=true
  3702. wall_inv_ES.isdropped=true
  3703. For each xx in aPlasticsBlack:xx.isdropped=true : Next
  3704. TargetSWFMode.isdropped=True
  3705. TargetSWFMode.collidable=false
  3706. if boards(CurrentPlayer)=3 and l31.state+l32.state+l33.state=3 then gateramp.collidable=false
  3707. PuPlayer.playlistplayex pMusic,"musicdiv","oceanbeach.mp3",100, 1
  3708. Boardwall3.transY = -100:boardwall3.collidable=false:wallboard3.collidable=false
  3709. middlebump.isdropped=true:P_Post.Transy = 0:P_Post.image = "Post_blue2"
  3710. TargetSharkmode1.collidable=true:TargetSharkmode2.collidable=true:TargetSharkMode3.collidable=true:TargetSharkmode4.collidable=true'if progress(CurrentPlayer)=0 then
  3711. scorebg.enabled=true
  3712. if ballstate=0 then PuPlayer.playlistplayex paudio,"newball","",80, 1:ballstate=0
  3713. if ballstate=1 Then PuPlayer.playlistplayex paudio,"reball","",80, 1:ballstate=0
  3714. if ballstate=2 then PuPlayer.playlistplayex paudio,"extraball","",80, 1:ballstate=0
  3715.  
  3716.  
  3717.  
  3718. if BallsOnPlayfield=1 then
  3719. endlesssummerbonuspre=0
  3720. Skeetbonuspre=0
  3721. Sexwaxfrenzybonuspre=0
  3722. loopbonuspre=0
  3723. offthelipbonuspre=0
  3724. aerialbonuspre=0
  3725. currentplayerbonusstat
  3726. showhighscores
  3727. sharkwall.isdropped=true
  3728. sharkstate=1
  3729.  
  3730. end if
  3731. if spotmastered(CurrentPlayer)=1 then l11.state=1:l12.state=2
  3732. if spotmastered(CurrentPlayer)=2 then l11.state=1:l12.state=1:l13.state=2
  3733. if spotmastered(CurrentPlayer)=3 then l11.state=1:l12.state=1:l13.state=1:l14.state=2
  3734. if spotmastered(CurrentPlayer)=4 then l11.state=1:l12.state=1:l13.state=1:l14.state=1:l15.state=2
  3735. if spotmastered(CurrentPlayer)=5 then l11.state=1:l12.state=1:l13.state=1:l14.state=1:l15.state=1:l16.state=2
  3736. if spotmastered(CurrentPlayer)=6 then l11.state=1:l12.state=1:l13.state=1:l14.state=1:l15.state=1:l16.state=1:l17.state=2
  3737. end Sub
  3738.  
  3739.  
  3740.  
  3741.  
  3742. '*************** Skillshot ************
  3743.  
  3744.  
  3745. Sub Triggerskillshot1_hit
  3746. PrimTarget1.visible=true:PrimTarget2.visible=true:PrimTarget3.visible=true
  3747. PrimTarget1.transX = -130:PrimTarget2.transX = -130:PrimTarget3.transX = -130
  3748. Targetskill1.isdropped=false:Targetskill2.isdropped=false:Targetskill3.isdropped=false
  3749. Targetskill1.collidable=true:Targetskill2.collidable=true:Targetskill3.collidable=true
  3750. LightPrim1.state=0:PrimTarget1.image = "aluminum": LightPrim1.intensity=3
  3751. LightPrim2.state=0:PrimTarget2.image = "aluminum": LightPrim2.intensity=3
  3752. LightPrim3.state=0:PrimTarget3.image = "aluminum": LightPrim3.intensity=3
  3753. lightSeqSkillshot.Play SeqCircleInOn,20,1
  3754. end Sub
  3755.  
  3756. Sub TriggerSkillshot2_Hit
  3757. DMDScoreNow
  3758. DMD "black.jpg", "Prepare for", "Skillshot!", 2500
  3759. PuPlayer.playlistplayex pAudio,"audioevents","Drum Roll.mp3",100, 1
  3760. DMDScoreNow
  3761. PuPlayer.playlistplayex pBackglass,"videotakeoff","",0,1
  3762. TimerPrim2.enabled=true
  3763. TimerSkill.enabled=true
  3764. fakeboard1.isdropped=false:fakeboard2.isdropped=false:fakeboard3.isdropped=false
  3765. Select Case Int(Rnd * 3) + 1
  3766. Case 1:LightPrim1.state=1:PrimTarget1.image = "boardimage_a3_white_light"' "aluminum_white"
  3767. Case 2:LightPrim2.state=1:PrimTarget2.image = "boardimage_a3_white_light"' "aluminum_white"
  3768. Case 3:LightPrim3.state=1:PrimTarget3.image = "boardimage_a3_white_light"' "aluminum_white"
  3769. End Select
  3770. if progress(currentplayer)=1 then
  3771. gateleft.open=false:gateright.open=false
  3772. triggerloop.enabled=false
  3773. skillwithprogress.enabled=true
  3774. end if
  3775. DOF 105, DOFOn
  3776. end sub
  3777.  
  3778. Sub skillwithprogress_timer()
  3779. gateleft.open=true:gateright.open=true:triggerloop.enabled=true:TimerBoardwall3up.Enabled = true
  3780. skillwithprogress.enabled=false
  3781. DMDScoreNow
  3782. DOF 900, DOFOn
  3783. end sub
  3784.  
  3785. Sub TimerSkill_Timer()
  3786. LightPrim1.state=0:LightPrim2.state=0:LightPrim3.state=0
  3787. PrimTarget1.image="aluminum":PrimTarget2.image="aluminum":PrimTarget3.image="aluminum"
  3788. if targetskill1.collidable=true then TimerPrim.Enabled = True: DOF 105, DOFOn
  3789. Targetskill1.isdropped=true:Targetskill2.isdropped=true:Targetskill3.isdropped=true
  3790. Targetskill1.collidable=false:Targetskill2.collidable=false:Targetskill3.collidable=false
  3791. wall_inv_skt.isdropped=true
  3792. wall_inv_ES.isdropped=true
  3793. fakeboard1.isdropped=true:fakeboard2.isdropped=true:fakeboard3.isdropped=true
  3794. if progress(currentplayer)=0 then PuPlayer.playlistplayex pMusic,"musicmainmode","ESsong_mainball1.mp3",100, 1'(if not surfmode)
  3795. if progress(currentplayer)=1 then PuPlayer.playlistplayex pMusic,"musicsurfmode","",100, 1:TimerBoardwall3up.Enabled = true'(if surfmode)
  3796. TimerSkill.enabled=false
  3797.  
  3798. DMDScoreNow
  3799. DOF 900, DOFOn
  3800. end sub
  3801.  
  3802.  
  3803.  
  3804. Sub TargetSkill1_Hit()
  3805. if lightPrim1.state=1 then
  3806. awardskillshot
  3807. Targetskill1.collidable=false:Targetskill2.collidable=false:Targetskill3.collidable=false
  3808. else skillshotmiss
  3809. end if
  3810. End Sub
  3811.  
  3812. Sub TargetSkill2_Hit()
  3813. if lightPrim2.state=1 then
  3814. awardskillshot
  3815. Targetskill1.collidable=false:Targetskill2.collidable=false:Targetskill3.collidable=false
  3816. Else skillshotmiss
  3817. end if
  3818. End Sub
  3819.  
  3820. Sub TargetSkill3_Hit()
  3821. if lightPrim3.state=1 then
  3822. awardskillshot
  3823. Targetskill1.collidable=false:Targetskill2.collidable=false:Targetskill3.collidable=false:
  3824. else skillshotmiss
  3825. end if
  3826. End Sub
  3827.  
  3828. Sub skillshotmiss()
  3829.  
  3830. PuPlayer.playlistplayex pAudio,"audiocallouts","skillmiss.mp3",100,1
  3831. Targetskill1.isdropped=true:Targetskill2.isdropped=true:Targetskill3.isdropped=true
  3832. Targetskill1.collidable=false:Targetskill2.collidable=false:Targetskill3.collidable=false
  3833. TimerPrim.Enabled = True
  3834. LightPrim1.state=0:LightPrim2.state=0:LightPrim3.state=0
  3835. wall_inv_skt.isdropped=true
  3836. wall_inv_ES.isdropped=true
  3837. DMDFlush:DMD "black.jpg", "You really", "missed it!", 3000
  3838. timerskill.enabled=false
  3839. PrimTarget1.image="aluminum":PrimTarget2.image="aluminum":PrimTarget3.image="aluminum"
  3840. fakeboard1.isdropped=true:fakeboard2.isdropped=true:fakeboard3.isdropped=true
  3841. if progress(currentplayer)=0 then PuPlayer.playlistplayex pMusic,"musicmainmode","ESsong_mainball1.mp3",100, 1'(if not surfmode)
  3842. if progress(currentplayer)=1 then PuPlayer.playlistplayex pMusic,"musicsurfmode","",100, 1 '(if surfmode)
  3843. DOF 105, DOFOn
  3844. DOF 900, DOFOn
  3845. End Sub
  3846.  
  3847.  
  3848. sub skill_hit_flash_timer()
  3849. Light_skillhit_flash_white.state=0:skill_hit_flash.enabled=false
  3850. end sub
  3851.  
  3852.  
  3853.  
  3854.  
  3855. Dim PrimTargetXStep
  3856.  
  3857. Sub TimerPrim2_Timer
  3858. PrimTargetXStep = PrimTargetXStep + 1
  3859. Select Case PrimTargetXStep
  3860. Case 1:
  3861. PrimTarget1.transX = -120:PrimTarget2.transX = -120:PrimTarget3.transX = -120
  3862. Case 2:
  3863. PrimTarget1.transX = -110:PrimTarget2.transX = -110:PrimTarget3.transX = -110
  3864. Case 3:
  3865. PrimTarget1.transX = -100:PrimTarget2.transX = -100:PrimTarget3.transX = -100
  3866. Case 4:
  3867. PrimTarget1.transX = -90:PrimTarget2.transX = -90:PrimTarget3.transX = -90
  3868. Case 5:
  3869. PrimTarget1.transX = -80:PrimTarget2.transX = -80:PrimTarget3.transX = -80
  3870. Case 6:
  3871. PrimTarget1.transX = -70:PrimTarget2.transX = -70:PrimTarget3.transX = -70
  3872. Case 7:
  3873. PrimTarget1.transX = -60:PrimTarget2.transX = -60:PrimTarget3.transX = -60
  3874. Case 8:
  3875. PrimTarget1.transX = -50:PrimTarget2.transX = -50:PrimTarget3.transX = -50
  3876. Case 9:
  3877. PrimTarget1.transX = -40:PrimTarget2.transX = -40:PrimTarget3.transX = -40
  3878. Case 10:
  3879. PrimTarget1.transX = -30:PrimTarget2.transX = -30:PrimTarget3.transX = -30
  3880. Case 11:
  3881. PrimTarget1.transX = -20:PrimTarget2.transX = -20:PrimTarget3.transX = -20
  3882. Case 12:
  3883. PrimTarget1.transX = -10:PrimTarget2.transX = -10:PrimTarget3.transX = -10
  3884. Case 13:
  3885. PrimTarget1.transX = 0:PrimTarget2.transX = 0:PrimTarget3.transX = 0: DOF 105, DOFOff
  3886. TimerPrim2.Enabled = False
  3887. PrimTargetXStep=0
  3888. End select
  3889.  
  3890. End Sub
  3891.  
  3892.  
  3893. Sub TimerPrim_Timer
  3894. PrimTargetXStep = PrimTargetXStep + 1
  3895. Select Case PrimTargetXStep
  3896. Case 1:
  3897. PrimTarget1.transX = -10:PrimTarget2.transX = -10:PrimTarget3.transX = -10
  3898. Case 2:
  3899. PrimTarget1.transX = -20:PrimTarget2.transX = -20:PrimTarget3.transX = -20
  3900. Case 3:
  3901. PrimTarget1.transX = -30:PrimTarget2.transX = -30:PrimTarget3.transX = -30
  3902. Case 4:
  3903. PrimTarget1.transX = -40:PrimTarget2.transX = -40:PrimTarget3.transX = -40
  3904. Case 5:
  3905. PrimTarget1.transX = -50:PrimTarget2.transX = -50:PrimTarget3.transX = -50
  3906. Case 6:
  3907. PrimTarget1.transX = -60:PrimTarget2.transX = -60:PrimTarget3.transX = -60
  3908. Case 7:
  3909. PrimTarget1.transX = -70:PrimTarget2.transX = -70:PrimTarget3.transX = -70
  3910. Case 8:
  3911. PrimTarget1.transX = -80:PrimTarget2.transX = -80:PrimTarget3.transX = -80
  3912. Case 9:
  3913. PrimTarget1.transX = -90:PrimTarget2.transX = -90:PrimTarget3.transX = -90
  3914. Case 10:
  3915. PrimTarget1.transX = -100:PrimTarget2.transX = -100:PrimTarget3.transX = -100
  3916. Case 11:
  3917. PrimTarget1.transX = -110:PrimTarget2.transX = -110:PrimTarget3.transX = -110
  3918. Case 12:
  3919. PrimTarget1.transX = -120:PrimTarget2.transX = -120:PrimTarget3.transX = -120
  3920. Case 13:
  3921. PrimTarget1.transX = -130:PrimTarget2.transX = -130:PrimTarget3.transX = -130: DOF 105, DOFOff
  3922. PrimTarget1.visible=false:PrimTarget2.visible=false:PrimTarget3.visible=false
  3923. TimerPrim.Enabled = False
  3924. PrimTargetXStep = 0
  3925. fakeboard1.isdropped=true:fakeboard2.isdropped=true:fakeboard3.isdropped=true
  3926. End Select
  3927. End Sub
  3928.  
  3929.  
  3930.  
  3931. '***** kicker *****
  3932.  
  3933. sub kickerleft_hit()
  3934.  
  3935. dim c
  3936. c = int (rnd*15)+1
  3937. if c = 15 then
  3938. PuPlayer.playlistplayex pBackglass,"videodiv","surprise.mp4",0,1:PuPlayer.playlistplayex paudio,"audiocallouts","surprise.mp3",100, 1
  3939. kickerleft.kick 0,55:Timerkickerleft.enabled=true
  3940. end if
  3941. if c <> 15 then
  3942. kickerleft.kick 0,55:Timerkickerleft.enabled=true:PuPlayer.playlistplayex paudio,"audiocallouts","yahoo.mp3",100,1
  3943. end if
  3944. if sexwaxfrenzy.enabled=false and c <> 15 then PuPlayer.playlistplayex pBackglass,"videoballsaved","",0,1
  3945. l1.state=0:l2.state=0:l3.state=0:l4.state=0:light_kickback.state=0
  3946. kickerleft.enabled=false
  3947. end sub
  3948.  
  3949. sub Timerkickerleft_timer()
  3950. timerkickerleft.enabled=false:l1.state=0
  3951. DOF 111, DOFPulse
  3952. end sub
  3953.  
  3954.  
  3955.  
  3956. '***** bumper*****
  3957.  
  3958. sub bumper_hit()
  3959. if progress(CurrentPlayer)=0 and sexwaxfrenzybonus = 15 then
  3960. PuPlayer.playlistplayex paudio,"audiocallouts","seagull.mp3",100, 1
  3961. DMDFlush:DMD "black.jpg", "Sexwaxfrenzymode", "maxed out!", 3000
  3962. end if
  3963.  
  3964. if progress(CurrentPlayer)=1 then PuPlayer.playlistplayex paudio,"audiocallouts","seagull.mp3",100, 1
  3965. lightbumper.state=1:addscore 1000:timerbumper.enabled=true
  3966. if progress(CurrentPlayer)=0 and sexwaxfrenzybonus < 15 then
  3967. PlaySound "bumper", 0, 1, Audiopan(ActiveBall)
  3968. if l61.state=0 and wall_inv_skt.isdropped=true and light_waxbowl.state=0 then bumpercount=bumpercount+1:if bumpercount=1 then PuPlayer.playlistplayex paudio,"audiocallouts","bumper_twomore.mp3",100, 1
  3969. if light_waxbowl.state <> 2 then DMDFlush:DMD "black.jpg", "Bumperhits: " &bumpercount, "you need 3", 3000
  3970. if bumpercount=2 then PuPlayer.playlistplayex paudio,"audiocallouts","bumper_onemore.mp3",100, 1
  3971. if bumpercount=3 then StartSexwaxfrenzyMode
  3972. end if
  3973. end sub
  3974.  
  3975. sub timerbumper_timer()
  3976. timerbumper.enabled=false:lightbumper.state=0
  3977. end sub
  3978.  
  3979.  
  3980. '******* sexwaxfrenzymode ************
  3981. '********* 3 bumperhits during the same ball starts sexwaxfrenzymode (if no other mode is active) *************
  3982.  
  3983. sub StartsexwaxfrenzyMode()
  3984. 'if sexwaxfrenzybonus = 15 then DMDFlush:DMD "black.jpg", "Sexwaxfrenzy mode", "maxed out!", 3000:PuPlayer.playlistplayex paudio,"audiocallouts","bonusmaxedout.mp3",100,1
  3985. TargetSharkmode1.collidable=false:TargetSharkmode2.collidable=false:TargetSharkmode3.collidable=false:TargetSharkmode4.collidable=false':stopsharkmode
  3986. lightSeqSWMode.Play SeqClockRightOn,25,2:LightSeqSWMode.UpdateInterval = 1
  3987. PuPlayer.playlistplayex pMusic,"musicswfmode","",100, 1
  3988. PuPlayer.playlistplayex pBackglass,"videodiv","sexwaxfrenzymode.mp4",0,1
  3989. light_waxbowl.state=1:lightsexwaxfrenzybowl.state=2:sexwaxfrenzyspotleft.state=2:sexwaxfrenzyspotright.state=2
  3990. FlasherSWmode.visible=true:sexwaxfrenzy.enabled=true:For each xx in aPlasticsBlack:xx.isdropped=false : Next
  3991. wall_inv_skt.isdropped=false:wall_inv_es.isdropped=false
  3992. gateramp.collidable=false:TargetTriggershot_right.collidable=false:targetequip01.collidable=false:targetequip02.collidable=false:targetequip03.collidable=false:bumperwall.collidable=true:bumper.collidable=false
  3993. LightPrim1.state=2:PrimTarget1.image = "board_blue": LightPrim1.intensity=100
  3994. LightPrim2.state=2:PrimTarget2.image = "board_blue": LightPrim2.intensity=100
  3995. LightPrim3.state=2:PrimTarget3.image = "board_blue": LightPrim3.intensity=100
  3996. primblinkoff.enabled=true
  3997. PrimTarget1.visible=true:PrimTarget2.visible=true:PrimTarget3.visible=true
  3998. TargetSkeetmode01.collidable=false:TargetSkeetmode02.collidable=false:TargetSkeetmode02.collidable=false:TargetSkeetmode02.collidable=false
  3999. TimerPrim2SWFMode.enabled=true:DOF 105, DOFOn
  4000. TargetSWFMode.isdropped=false
  4001. TargetSWFMode.collidable=true
  4002. frenzycounter.enabled=true
  4003. sexwaxfrenzy.enabled=true
  4004. For each xx in aTargetsES:xx.blenddisablelighting=0 : Next
  4005. for each xx in aTargetsSKEET:xx.blenddisablelighting=0:next
  4006. DMDFlush:DMD "black.jpg", "SexWaxFrenzy", "Mode", 3000
  4007. DOF 900, DOFOff:DOF 905, DOFOn
  4008. audiowait3.enabled=true
  4009. end Sub
  4010.  
  4011. sub audiowait3_timer()
  4012. PuPlayer.playlistplayex paudio,"audiocallouts","swfmode.mp3",100,1
  4013. audiowait3.enabled=False
  4014. end Sub
  4015.  
  4016. sub primblinkon_timer()
  4017. PrimTarget1.image = "schwarz"
  4018. PrimTarget2.image = "schwarz"
  4019. PrimTarget3.image = "schwarz"
  4020. primblinkon.enabled=false:primblinkoff.enabled=true
  4021. end sub
  4022.  
  4023. sub primblinkoff_timer()
  4024. PrimTarget1.image = "board_blue"
  4025. PrimTarget2.image = "board_blue"
  4026. PrimTarget3.image = "board_blue"
  4027. primblinkoff.enabled=false:primblinkon.enabled=true
  4028. end sub
  4029.  
  4030.  
  4031.  
  4032.  
  4033.  
  4034. '**** moving boards up *****
  4035.  
  4036. Sub TimerPrim2SWFMode_Timer
  4037. PrimTargetXStep = PrimTargetXStep + 1
  4038. Select Case PrimTargetXStep
  4039. Case 1:
  4040. PrimTarget1.transX = -120:PrimTarget2.transX = -120:PrimTarget3.transX = -120
  4041. Case 2:
  4042. PrimTarget1.transX = -110:PrimTarget2.transX = -110:PrimTarget3.transX = -110
  4043. Case 3:
  4044. PrimTarget1.transX = -100:PrimTarget2.transX = -100:PrimTarget3.transX = -100
  4045. Case 4:
  4046. PrimTarget1.transX = -90:PrimTarget2.transX = -90:PrimTarget3.transX = -90
  4047. Case 5:
  4048. PrimTarget1.transX = -80:PrimTarget2.transX = -80:PrimTarget3.transX = -80
  4049. Case 6:
  4050. PrimTarget1.transX = -70:PrimTarget2.transX = -70:PrimTarget3.transX = -70
  4051. Case 7:
  4052. PrimTarget1.transX = -60:PrimTarget2.transX = -60:PrimTarget3.transX = -60
  4053. Case 8:
  4054. PrimTarget1.transX = -50:PrimTarget2.transX = -50:PrimTarget3.transX = -50
  4055. Case 9:
  4056. PrimTarget1.transX = -40:PrimTarget2.transX = -40:PrimTarget3.transX = -40
  4057. Case 10:
  4058. PrimTarget1.transX = -30:PrimTarget2.transX = -30:PrimTarget3.transX = -30
  4059. Case 11:
  4060. PrimTarget1.transX = -20:PrimTarget2.transX = -20:PrimTarget3.transX = -20
  4061. Case 12:
  4062. PrimTarget1.transX = -10:PrimTarget2.transX = -10:PrimTarget3.transX = -10
  4063. Case 13:
  4064. PrimTarget1.transX = 0:PrimTarget2.transX = 0:PrimTarget3.transX = 0: DOF 105, DOFOff
  4065. TimerPrim2SWFMode.Enabled = False
  4066. PrimTargetXStep=0
  4067. End select
  4068. End Sub
  4069.  
  4070.  
  4071. '******* moving boards down **********
  4072.  
  4073. Sub TimerPrimSWFMode_Timer
  4074. PrimTargetXStep = PrimTargetXStep + 1
  4075. Select Case PrimTargetXStep
  4076. Case 1:
  4077. PrimTarget1.transX = -10:PrimTarget2.transX = -10:PrimTarget3.transX = -10
  4078. Case 2:
  4079. PrimTarget1.transX = -20:PrimTarget2.transX = -20:PrimTarget3.transX = -20
  4080. Case 3:
  4081. PrimTarget1.transX = -30:PrimTarget2.transX = -30:PrimTarget3.transX = -30
  4082. Case 4:
  4083. PrimTarget1.transX = -40:PrimTarget2.transX = -40:PrimTarget3.transX = -40
  4084. Case 5:
  4085. PrimTarget1.transX = -50:PrimTarget2.transX = -50:PrimTarget3.transX = -50
  4086. Case 6:
  4087. PrimTarget1.transX = -60:PrimTarget2.transX = -60:PrimTarget3.transX = -60
  4088. Case 7:
  4089. PrimTarget1.transX = -70:PrimTarget2.transX = -70:PrimTarget3.transX = -70
  4090. Case 8:
  4091. PrimTarget1.transX = -80:PrimTarget2.transX = -80:PrimTarget3.transX = -80
  4092. Case 9:
  4093. PrimTarget1.transX = -90:PrimTarget2.transX = -90:PrimTarget3.transX = -90
  4094. Case 10:
  4095. PrimTarget1.transX = -100:PrimTarget2.transX = -100:PrimTarget3.transX = -100
  4096. Case 11:
  4097. PrimTarget1.transX = -110:PrimTarget2.transX = -110:PrimTarget3.transX = -110
  4098. Case 12:
  4099. PrimTarget1.transX = -120:PrimTarget2.transX = -120:PrimTarget3.transX = -120
  4100. Case 13:
  4101. PrimTarget1.transX = -130:PrimTarget2.transX = -130:PrimTarget3.transX = -130: DOF 105, DOFOff
  4102. PrimTarget1.visible=false:PrimTarget2.visible=false:PrimTarget3.visible=false
  4103. TimerPrimSWFMode.Enabled = False
  4104. PrimTargetXStep = 0
  4105. End Select
  4106. LightPrim1.state=0:PrimTarget1.image = "aluminum": LightPrim1.intensity=3
  4107. LightPrim2.state=0:PrimTarget2.image = "aluminum": LightPrim2.intensity=3
  4108. LightPrim3.state=0:PrimTarget3.image = "aluminum": LightPrim3.intensity=3
  4109. End Sub
  4110.  
  4111.  
  4112. '******* hit just one of the three boards *******
  4113.  
  4114. Sub TargetSWFMode_hit()
  4115.  
  4116. Sexwaxfrenzybonuspre=Sexwaxfrenzybonuspre+1:sexwaxfrenzybonus=sexwaxfrenzybonus+1:if sexwaxfrenzybonus=1 then diversitymultiplier=diversitymultiplier+1:currentplayerbonusstat
  4117.  
  4118. addscore 500
  4119. lightSeqSWMode.Play SeqClockRightOn,25,2:LightSeqSWMode.UpdateInterval = 1
  4120. TargetSWFMode.isdropped=True:TargetSWFMode.collidable=false
  4121. PrimTarget1.transX = -130:PrimTarget2.transX = -130:PrimTarget3.transX = -130
  4122. lightsexwaxfrenzybowl.state=2:sexwaxfrenzyspotleft.state=2:sexwaxfrenzyspotright.state=2
  4123. LightPrim1.state=0:LightPrim2.state=0:LightPrim3.state=0
  4124. DMDFlush:DMD "black.jpg", " " &sexwaxfrenzybonuspre, "Hits", 3000
  4125. PlaySound "swfboardhit", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  4126. Playsound "Bumper", 0, 1, Audiopan(ActiveBall)
  4127. frenzycounter.enabled=true
  4128. Light_skillhit_flash_white.state=2:skill_hit_flash.enabled=true
  4129. primblinkon.enabled=false:primblinkoff.enabled=false
  4130.  
  4131.  
  4132. if sexwaxfrenzybonus = 10 then awardextraball
  4133. if sexwaxfrenzybonus = 15 then awardbonusjackpot:StopSexwaxfrenzyMode
  4134. currentplayerbonusstat
  4135.  
  4136. end sub
  4137.  
  4138.  
  4139. '********* hit the waxbowl **********
  4140.  
  4141. sub frenzycounter_hit()
  4142.  
  4143. Sexwaxfrenzybonuspre=Sexwaxfrenzybonuspre+1:sexwaxfrenzybonus=sexwaxfrenzybonus+1:if sexwaxfrenzybonus=1 then diversitymultiplier=diversitymultiplier+1:currentplayerbonusstat
  4144.  
  4145. addscore 500
  4146. lightSeqSWMode.Play SeqClockLeftOn,25,2:LightSeqSWMode.UpdateInterval = 1
  4147. TargetSWFMode.isdropped=false:TargetSWFMode.collidable=true
  4148. PrimTarget1.transX = 0:PrimTarget2.transX = 0:PrimTarget3.transX = 0
  4149. TimerPrim2SWFMode.enabled=true
  4150. lightsexwaxfrenzybowl.state=0:sexwaxfrenzyspotleft.state=0:sexwaxfrenzyspotright.state=0
  4151. LightPrim1.state=2:LightPrim2.state=2:LightPrim3.state=2
  4152. DMDFlush:DMD "black.jpg", " " &sexwaxfrenzybonuspre, "Hits", 3000
  4153. PlaySound "swfboardhit", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  4154. frenzycounter.enabled=false
  4155. Light_skillhit_flash_white.state=2:skill_hit_flash.enabled=true
  4156. primblinkoff.enabled=true
  4157.  
  4158.  
  4159. if sexwaxfrenzybonus=10 then AwardExtraBall
  4160. if sexwaxfrenzybonus=15 then awardbonusjackpot:StopSexwaxfrenzyMode
  4161. currentplayerbonusstat
  4162. end sub
  4163.  
  4164.  
  4165. sub sexwaxfrenzy_Timer()
  4166. sexwaxfrenzy.enabled=false:StopSexwaxfrenzyMode
  4167. end sub
  4168.  
  4169.  
  4170.  
  4171. Sub StopSexwaxfrenzyMode()
  4172. TargetSharkmode1.collidable=true:TargetSharkmode2.collidable=true:TargetSharkmode3.collidable=true:TargetSharkmode4.collidable=true
  4173. light_waxbowl.state=0
  4174. FlasherSWmode.visible=false
  4175. wall_inv_skt.isdropped=true:wall_inv_es.isdropped=true
  4176. gateramp.collidable=true:TargetTriggershot_right.collidable=true:targetequip01.collidable=true:targetequip02.collidable=true:targetequip03.collidable=true:bumperwall.collidable=false:bumper.collidable=true
  4177. For each xx in aPlasticsBlack:xx.isdropped=true : Next
  4178. bumpercount=0
  4179. sexwaxfrenzyspotleft.state=0:sexwaxfrenzyspotright.state=0:lightsexwaxfrenzybowl.state=0
  4180. sexwaxfrenzy.enabled=false
  4181. TimerPrim.enabled=true
  4182. TimerPrimSWFMode.enabled=true:DOF 105, DOFOn
  4183. if progress(currentplayer)=0 then PuPlayer.playlistplayex pMusic,"musicpostmode","",100, 1
  4184. if progress(CurrentPlayer)=1 then startsurfmodemusic
  4185. LightPrim1.state=0:PrimTarget1.image = "aluminum": LightPrim1.intensity=3
  4186. LightPrim2.state=0:PrimTarget2.image = "aluminum": LightPrim2.intensity=3
  4187. LightPrim3.state=0:PrimTarget3.image = "aluminum": LightPrim3.intensity=3
  4188. TargetSWFMode.isdropped=true
  4189. TargetSWFMode.collidable=false
  4190. TargetSkeetmode01.collidable=true:TargetSkeetmode02.collidable=true:TargetSkeetmode02.collidable=true:TargetSkeetmode02.collidable=true
  4191. frenzycounter.enabled=false
  4192. LightSeqSWMode.UpdateInterval = 5
  4193. sexwaxfrenzy.enabled=false
  4194. For each xx in aTargetsSKEET
  4195. if xx.isdropped=false then xx.blenddisablelighting=1
  4196. next
  4197. for each xx in aTargetsES
  4198. if xx.isdropped=false then xx.blenddisablelighting=1
  4199. next
  4200. primblinkon.enabled=false:primblinkoff.enabled=false
  4201. if BallsOnPlayfield>0 then popsensor.enabled=true:sensortimer.enabled=true:bumcheck=2
  4202. if progress(CurrentPlayer)=1 then TimerBoardwall3up.enabled=true
  4203. waitforendmode.enabled=true
  4204.  
  4205. currentplayerbonusstat
  4206. DOF 905, DOFOff:DOF 900, DOFOn
  4207. end Sub
  4208.  
  4209. sub middlebumptimer_timer()
  4210. if middlebump.isdropped=false then middlebump.isdropped=true:P_Post.Transy = 0:P_Post.image = "Post_blue2":PlaySound "boom"
  4211. middlebumptimer.enabled=false
  4212. end sub
  4213.  
  4214.  
  4215.  
  4216. '************* avoid ball drain by popping up-post *******
  4217.  
  4218. dim Bumcheck
  4219.  
  4220. sub bumpercheck()
  4221.  
  4222. if bumcheck=0 then
  4223. middlebump.isdropped=false
  4224. P_Post.Transy = 65:P_Post.image = "Post_blue_lit2"
  4225. middlebumptimer.enabled=true
  4226. PlaySound "boom"
  4227. popsensor.enabled=false
  4228. end if
  4229.  
  4230. if bumcheck=2 then
  4231. middlebump.isdropped=false
  4232. P_Post.Transy = 65:P_Post.image = "Post_blue_lit2"
  4233. middlebumptimer.enabled=true
  4234. PlaySound "boom"
  4235. popsensor.enabled=false
  4236. end if
  4237.  
  4238. if bumcheck=1 then sensortimer.enabled=true
  4239.  
  4240. end Sub
  4241.  
  4242. sub popsensor_hit()
  4243. bumcheck=1:bumpercheck
  4244. end sub
  4245.  
  4246. sub popsensor_unhit()
  4247. bumcheck=0:popsensor.enabled=false:bumpercheck
  4248. end sub
  4249.  
  4250. sub sensortimer_timer()
  4251. sensortimer.enabled=false:bumpercheck
  4252. end sub
  4253.  
  4254.  
  4255.  
  4256.  
  4257.  
  4258.  
  4259. '********* targets equipment *******
  4260.  
  4261. Sub TargetEquip01_Hit()
  4262. if l21.state=2 then PlaySound "drop1", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  4263. if l21.state=1 then PlaySound "Dong", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  4264. Addscore 500
  4265. if l21.state=2 then l21.state=1
  4266. EquipCountCheck
  4267. end sub
  4268.  
  4269. Sub TargetEquip02_Hit()
  4270. if l22.state=2 then PlaySound "drop1", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  4271. if l22.state=1 then PlaySound "Dong", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  4272. addscore 500
  4273. if l22.state=2 then l22.state=1
  4274. EquipCountCheck
  4275. end sub
  4276.  
  4277. Sub TargetEquip03_Hit()
  4278. if l23.state=2 then PlaySound "drop1", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  4279. if l23.state=1 then PlaySound "Dong", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  4280. addscore 500
  4281. if l23.state=2 then l23.state=1
  4282. EquipCountCheck
  4283. end sub
  4284.  
  4285. Sub EquipCountCheck()
  4286. if l21.State + l22.State + l23.State=3 and boards(CurrentPlayer) = 3 and light_ticket.state=0 then Light_Triggershot_right.State=2:PuPlayer.playlistplayex paudio,"audiocallouts","order_ticket.mp3",100, 1:AddScore 10000
  4287. if l21.State + l22.State + l23.State=3 and boards(CurrentPlayer) < 3 and light_ticket.state=0 then DMDFlush:DMD "black.jpg", "You need ", "more boards!", 2000:PuPlayer.playlistplayex pAudio,"audiocallouts","moreboards.mp3",100, 1
  4288.  
  4289. End Sub
  4290.  
  4291.  
  4292.  
  4293. '***** collect boards (right ramp) *****
  4294.  
  4295. Sub gateramp_hit()
  4296. gateramptimer.enabled=true
  4297. gateramp.collidable=false
  4298.  
  4299. PlaySound "fx_gate", 0, 1, Audiopan(ActiveBall)
  4300. if boards (currentplayer)<3 then PuPlayer.playlistplayex paudio,"boards","",100, 1
  4301.  
  4302. addscore 500
  4303. boards(CurrentPlayer)=boards(CurrentPlayer)+1
  4304. if boards (currentplayer)<3 then PuPlayer.playlistplayex paudio,"boards","",100, 1
  4305. if boards(CurrentPlayer)=1 then l31.state=1:AddScore 5000:PuPlayer.playlistplayex pBackglass,"videoboards","",100,1
  4306. if boards(CurrentPlayer)=2 then l32.state=1:AddScore 5000:PuPlayer.playlistplayex pBackglass,"videoboards","",100,1
  4307. if boards(CurrentPlayer)=3 then l33.state=1:Light_ramp_right_arrow.state=0:AddScore 15000:PuPlayer.playlistplayex pBackglass,"videoboards","",100,1
  4308. if boards(CurrentPlayer)=4 then boards(CurrentPlayer)=3
  4309. if boards(currentplayer)=3 and l21.State + l22.State + l23.State=3 and light_ticket.state=0 then PlaySound "fx_gate", 0, 1, Audiopan(ActiveBall):Light_Triggershot_right.State=2:gateramp.collidable=false:PuPlayer.playlistplayex paudio,"audiocallouts","order_ticket.mp3",100, 1:AddScore 10000 : DMDFlush:DMD "black.jpg", "Get your", "Ticket !", 3000:PuPlayer.playlistplayex pAudio,"audiocallouts","get_your_ticket.mp3",100, 1
  4310. if boards(currentplayer)=3 and l21.State + l22.State + l23.State>3 and light_ticket.state=0 then PlaySound "fx_gate", 0, 1, Audiopan(ActiveBall):DMDFlush:DMD "black.jpg", "Get your", "equipment !", 3000:PuPlayer.playlistplayex pAudio,"audiocallouts","get_equip.mp3",100, 1
  4311. end sub
  4312.  
  4313. sub gateramptimer_timer()
  4314. gateramp.collidable=true
  4315. gateramptimer.enabled=false
  4316. end sub
  4317.  
  4318.  
  4319. '***** targets endless summer *****
  4320.  
  4321. Sub TargetES01_Hit()
  4322. if Timerskill.enabled=true then skillshotmiss
  4323. AddScore 1000
  4324. l41.state=1:TargetES01.blenddisablelighting=0
  4325. TargetsendlesssummerCheck
  4326. End Sub
  4327.  
  4328. Sub TargetES02_Hit()
  4329. if Timerskill.enabled=true then skillshotmiss
  4330. AddScore 1000
  4331. l42.state=1:TargetES02.blenddisablelighting=0
  4332. TargetsendlesssummerCheck
  4333. End Sub
  4334.  
  4335. Sub TargetES03_Hit()
  4336. if Timerskill.enabled=true then skillshotmiss
  4337. AddScore 1000
  4338. l43.state=1:TargetES03.blenddisablelighting=0
  4339. TargetsendlesssummerCheck
  4340. End Sub
  4341.  
  4342. Sub TargetES04_Hit()
  4343. if Timerskill.enabled=true then skillshotmiss
  4344. AddScore 1000
  4345. l44.state=1:TargetES04.blenddisablelighting=0
  4346. TargetsendlesssummerCheck
  4347. End Sub
  4348.  
  4349. Sub TargetES05_Hit()
  4350. if Timerskill.enabled=true then skillshotmiss
  4351. AddScore 1000
  4352. l45.state=1:TargetES05.blenddisablelighting=0
  4353. TargetsendlesssummerCheck
  4354. End Sub
  4355.  
  4356. Sub TargetES06_Hit()
  4357. if Timerskill.enabled=true then skillshotmiss
  4358. AddScore 1000
  4359. l46.state=1:TargetES06.blenddisablelighting=0
  4360. TargetsendlesssummerCheck
  4361. End Sub
  4362.  
  4363. Sub TargetES07_Hit()
  4364. if Timerskill.enabled=true then skillshotmiss
  4365. AddScore 1000
  4366. l47.state=1:TargetES07.blenddisablelighting=0
  4367. TargetsendlesssummerCheck
  4368. End Sub
  4369.  
  4370. Sub TargetES08_Hit()
  4371. if Timerskill.enabled=true then skillshotmiss
  4372. AddScore 1000
  4373. l48.state=1:TargetES08.blenddisablelighting=0
  4374. TargetsendlesssummerCheck
  4375. End Sub
  4376.  
  4377. Sub TargetES09_Hit()
  4378. if Timerskill.enabled=true then skillshotmiss
  4379. AddScore 1000
  4380. l49.state=1:TargetES09.blenddisablelighting=0
  4381. TargetsendlesssummerCheck
  4382. End Sub
  4383.  
  4384. Sub TargetES10_Hit()
  4385. if Timerskill.enabled=true then skillshotmiss
  4386. AddScore 1000
  4387. l410.state=1:TargetES10.blenddisablelighting=0
  4388. TargetsendlesssummerCheck
  4389. End Sub
  4390.  
  4391. Sub TargetES11_Hit()
  4392. if Timerskill.enabled=true then skillshotmiss
  4393. AddScore 1000
  4394. l411.state=1:TargetES11.blenddisablelighting=0
  4395. TargetsendlesssummerCheck
  4396. End Sub
  4397.  
  4398. Sub TargetES12_Hit()
  4399. if Timerskill.enabled=true then skillshotmiss
  4400. AddScore 1000
  4401. l412.state=1:TargetES12.blenddisablelighting=0
  4402. TargetsendlesssummerCheck
  4403. End Sub
  4404.  
  4405. Sub TargetES13_Hit()
  4406. if Timerskill.enabled=true then skillshotmiss
  4407. AddScore 1000
  4408. l413.state=1:TargetES13.blenddisablelighting=0
  4409. TargetsendlesssummerCheck
  4410. End Sub
  4411.  
  4412.  
  4413.  
  4414. '***** endless summer mode *****
  4415.  
  4416. Sub TargetsendlesssummerCheck()
  4417. if progress(CurrentPlayer)=0 and l41.state + l42.state + l43.state + l44.state + l45.state + l46.state + l47.state + l48.state + l49.state + l410.state + l411.state + l412.state + l413.state = 13 and endlesssummerbonus < 15 then StartESMode
  4418. if progress(CurrentPlayer)=0 and l41.state + l42.state + l43.state + l44.state + l45.state + l46.state + l47.state + l48.state + l49.state + l410.state + l411.state + l412.state + l413.state = 13 and endlesssummerbonus = 15 then eswait.enabled=true
  4419. if progress(CurrentPlayer)=0 and l41.state + l42.state + l43.state + l44.state + l45.state + l46.state + l47.state + l48.state + l49.state + l410.state + l411.state + l412.state + l413.state = 16 and endlesssummerbonus < 15 then PuPlayer.playlistplayex paudio,"audiocallouts","few_more_targets.mp3",100, 1
  4420. if progress(CurrentPlayer)=1 and l41.state + l42.state + l43.state + l44.state + l45.state + l46.state + l47.state + l48.state + l49.state + l410.state + l411.state + l412.state + l413.state = 13 then eswait.enabled=true
  4421.  
  4422. End Sub
  4423.  
  4424. sub eswait_timer()
  4425. For each xx in aTargetsES:xx.isdropped = false : Next
  4426. if progress(currentplayer)=0 then
  4427. For each xx in aTargetsES:xx.blenddisablelighting=1 : Next
  4428. end if
  4429. For each xx in aLightsES:xx.state=2 : Next
  4430. if endlesssummerbonus < 15 then DMDFlush:DMD "black.jpg", "Endless Summer", "not available now", 3000
  4431. if endlesssummerbonus = 15 then
  4432. DMDFlush:DMD "black.jpg", "Endless Summer mode", "maxed out!", 3000
  4433. select case int (rnd*2)+1
  4434. Case 1 : PuPlayer.playlistplayex paudio,"audiocallouts","bonusmaxstopfussing.mp3",100,1
  4435. Case 2 : PuPlayer.playlistplayex paudio,"audiocallouts","bonusmaxmission.mp3",100, 1
  4436. end select
  4437. end if
  4438. eswait.enabled=false
  4439. end sub
  4440.  
  4441.  
  4442.  
  4443. Sub StartESMode()
  4444. TargetSharkmode1.collidable=false:TargetSharkmode2.collidable=false:TargetSharkmode3.collidable=false:TargetSharkmode4.collidable=false':stopsharkmode
  4445. TimerESmode.Enabled=True
  4446. lightSeqESMode.Play SeqUpOn, 40,3
  4447. For each xx in aLightsESmode:xx.state=2 : Next
  4448. gateramp.collidable=false:TargetTriggershot_right.collidable=false:targetequip01.collidable=false:targetequip02.collidable=false:targetequip03.collidable=false:bumperwall.collidable=true:bumper.collidable=false:gateleft.open=true:gateright.open=true
  4449. AddScore 50000
  4450. PuPlayer.playlistplayex pMusic,"musicendlessmode","",100, 1
  4451. For each xx in aLightsPlastics:xx.state=0 : Next
  4452. wall_inv_skt.isdropped=false
  4453. For each xx in aLightsCurl:xx.state=2 : Next
  4454. For each xx in aPlasticsDark:xx.isdropped=false : Next
  4455. For each xx in aTargetsSKEET:xx.blenddisablelighting=0:next
  4456. for each xx in aTargetsES:xx.blenddisablelighting=0:next
  4457. flash_left_uplane.state=2:flash_right_uplane.state=2
  4458. spinner.MotorOn=true
  4459. flasherESmode.visible=true
  4460. TimerBoardwall3up.enabled=true:Wallboard3.collidable=true
  4461. ESmodeTrigger.enabled=true
  4462. PuPlayer.playlistplayex pBackglass,"videodiv","esmode.mp4",0,1
  4463. PuPlayer.playlistplayex paudio,"audiocallouts","esmode.mp3",100,1
  4464. DOF 105, DOFOn
  4465. DOF 900, DOFOff:DOF 905, DOFOn
  4466. end sub
  4467.  
  4468. sub ESmodeTrigger_hit()
  4469. endlesssummerbonuspre=endlesssummerbonuspre+1:endlesssummerbonus=endlesssummerbonus+1:if endlesssummerbonus=1 then diversitymultiplier=diversitymultiplier+1:currentplayerbonusstat
  4470.  
  4471. addscore 500
  4472. DMDFlush:DMD "black.jpg", "Endless Summer", "Bonus: " &endlesssummerbonuspre, 3000
  4473. if endlesssummerbonus=10 then AwardExtraBall
  4474. if endlesssummerbonus=15 then awardbonusjackpot:stopesmode
  4475. currentplayerbonusstat
  4476. end sub
  4477.  
  4478.  
  4479. Sub StopESMode()
  4480. TargetSharkmode1.collidable=true:TargetSharkmode2.collidable=true:TargetSharkmode3.collidable=true:TargetSharkmode4.collidable=true'if progress(currentplayer)=0 then
  4481. wall_inv_skt.isdropped=true
  4482. if progress(currentplayer)=0 then PuPlayer.playlistplayex pMusic,"musicpostmode","",100, 1
  4483. if progress(CurrentPlayer)=1 then startsurfmodemusic
  4484. For each xx in aTargetsES:xx.isdropped = false : Next
  4485. gateramp.collidable=true:TargetTriggershot_right.collidable=true:targetequip01.collidable=true:targetequip02.collidable=true:targetequip03.collidable=true:bumperwall.collidable=false:bumper.collidable=true:gateleft.open=false:gateright.open=false
  4486. For each xx in aLightsESmode:xx.state=0 : Next
  4487. For each xx in aLightsES:xx.state=2 : Next
  4488. For each xx in aLightsPlastics:xx.state=1 : Next
  4489. For each xx in aTargetsSKEET
  4490. if xx.isdropped=false then xx.blenddisablelighting=1
  4491. next
  4492. for each xx in aTargetsES:xx.blenddisablelighting=1:next
  4493. flash_left_uplane.state=0:flash_right_uplane.state=0
  4494. For each xx in aLightsCurl:xx.state=0 : Next
  4495. For each xx in aPlasticsDark:xx.isdropped=true : Next
  4496. spinner.MotorOn = false
  4497. flasherESmode.visible=false
  4498. TimerBoardwall3down.enabled=true:wallboard3.collidable=false
  4499. TimerESmode.Enabled=false
  4500. Triggerloop.enabled=false
  4501. if BallsOnPlayfield>0 then popsensor.enabled=true:sensortimer.enabled=true:bumcheck=2
  4502. ESmodeTrigger.enabled=false
  4503. PuPlayer.playlistplayex pAudio,"audioevents","boom.mp3",100,1
  4504. if progress(CurrentPlayer)=1 then TimerBoardwall3up.enabled=true
  4505. waitforendmode.enabled=true
  4506. currentplayerbonusstat
  4507. DOF 105, DOFOn
  4508. DOF 900, DOFOn:DOF 905, DOFOff
  4509. End Sub
  4510.  
  4511. Dim Boardwall3XStep
  4512.  
  4513. Sub TimerBoardwall3up_Timer
  4514. Boardwall3XStep = Boardwall3XStep + 1
  4515. Select Case Boardwall3XStep
  4516.  
  4517. Case 1:
  4518. Boardwall3.transY = -100:boardwall3.collidable=true:boardwall3.visible=true
  4519. Case 2:
  4520. Boardwall3.transY = -90
  4521. Case 3:
  4522. Boardwall3.transY = -80
  4523. Case 4:
  4524. Boardwall3.transY = -70
  4525. Case 5:
  4526. Boardwall3.transY = -60
  4527. Case 6:
  4528. Boardwall3.transY = -50
  4529. Case 7:
  4530. Boardwall3.transY = -40
  4531. Case 8:
  4532. Boardwall3.transY = -30:DOF 105, DOFOff
  4533.  
  4534. TimerBoardwall3up.Enabled = False
  4535. Boardwall3XStep=0
  4536. End select
  4537.  
  4538. End Sub
  4539.  
  4540. Sub TimerBoardwall3down_Timer
  4541. Boardwall3XStep = Boardwall3XStep + 1
  4542. Select Case Boardwall3XStep
  4543. Case 1:
  4544. Boardwall3.transY = -10
  4545. Case 2:
  4546. Boardwall3.transY = -20
  4547. Case 3:
  4548. Boardwall3.transY = -30
  4549. Case 4:
  4550. Boardwall3.transY = -40
  4551. Case 5:
  4552. Boardwall3.transY = -50
  4553. Case 6:
  4554. Boardwall3.transY = -60
  4555. Case 7:
  4556. Boardwall3.transY = -70
  4557. Case 8:
  4558. Boardwall3.transY = -80
  4559. Case 9:
  4560. Boardwall3.transY = -90:boardwall3.collidable=false:boardwall3.visible=false:DOF 105, DOFOff
  4561.  
  4562. TimerBoardwall3down.Enabled = False
  4563. Boardwall3XStep = 0
  4564. End Select
  4565.  
  4566. End Sub
  4567.  
  4568. sub Boardwall3_hit()
  4569. playsound "fx_metalhit", 0, 1, Audiopan(ActiveBall)
  4570. end sub
  4571.  
  4572. Sub TimerESmode_Timer()
  4573. TimerESmode.Enabled=false:StopESMode 'DMD show number of ESbonus
  4574. End Sub
  4575.  
  4576.  
  4577. '**** upper lanes light & sound **********
  4578.  
  4579. sub triggerl71_Hit()
  4580. if l61.state=2 then l71.state=1:timerl71.enabled=true:playsound "wush1"
  4581. End Sub
  4582.  
  4583. Sub timerl71_Timer()
  4584. l71.state=0:timerl71.Enabled = False
  4585. end sub
  4586.  
  4587. sub Triggerl72_Hit()
  4588. if l61.state=2 then l72.state=1:timerl72.enabled=true:playsound "wush1"
  4589. End Sub
  4590.  
  4591. Sub timerl72_Timer()
  4592. l72.state=0:timerl72.Enabled = False
  4593. end sub
  4594.  
  4595. sub Triggerl73_Hit()
  4596. if l61.state=2 then l73.state=1:timerl73.enabled=true:playsound "wush1"
  4597. End Sub
  4598.  
  4599. Sub timerl73_Timer()
  4600. l73.state=0:timerl73.Enabled = False
  4601. end sub
  4602.  
  4603. sub Triggerl74_Hit()
  4604. if l61.state=2 then l74.state=1:timerl74.enabled=true:playsound "wush1"
  4605. End Sub
  4606.  
  4607. Sub timerl74_Timer()
  4608. l74.state=0:timerl74.Enabled = False
  4609. end sub
  4610.  
  4611. sub Triggerl75_Hit()
  4612. if l61.state=2 then l75.state=1:timerl75.enabled=true:playsound "wush1"
  4613. End Sub
  4614.  
  4615. Sub timerl75_Timer()
  4616. l75.state=0:timerl75.Enabled = False
  4617. end sub
  4618.  
  4619. sub Triggerl76_Hit()
  4620. if l61.state=2 then l76.state=1:timerl76.enabled=true:playsound "wush1"
  4621. End Sub
  4622.  
  4623. Sub timerl76_Timer()
  4624. l76.state=0:timerl76.Enabled = False
  4625. end sub
  4626.  
  4627. sub Triggerl77_Hit()
  4628. if l61.state=2 then l77.state=1:timerl77.enabled=true:playsound "wush1"
  4629. End Sub
  4630.  
  4631. Sub timerl77_Timer()
  4632. l77.state=0:timerl77.Enabled = False
  4633. end sub
  4634.  
  4635. sub Triggerl78_Hit()
  4636. if l61.state=2 then l78.state=1:timerl78.enabled=true:playsound "wush1"
  4637. End Sub
  4638.  
  4639. Sub timerl78_Timer()
  4640. l78.state=0:timerl78.Enabled = False
  4641. end sub
  4642.  
  4643. sub Triggerl79_Hit()
  4644. if l61.state=2 then l79.state=1:timerl79.enabled=true:playsound "wush1"
  4645. End Sub
  4646.  
  4647. Sub timerl79_Timer()
  4648. l79.state=0:timerl79.Enabled = False
  4649. end sub
  4650.  
  4651. sub Triggerl710_Hit()
  4652. if l61.state=2 then l710.state=1:timerl710.enabled=true:playsound "wush1"
  4653. End Sub
  4654.  
  4655. Sub timerl710_Timer()
  4656. l710.state=0:timerl710.Enabled = False
  4657. end sub
  4658.  
  4659. sub Triggerl711_Hit()
  4660. if l61.state=2 then l711.state=1:timerl711.enabled=true:playsound "wush1"
  4661. End Sub
  4662.  
  4663. Sub timerl711_Timer()
  4664. l711.state=0:timerl711.Enabled = False
  4665. end sub
  4666.  
  4667. sub Triggerl712_Hit()
  4668. if l61.state=2 then l712.state=1:timerl712.enabled=true:playsound "wush1"
  4669. End Sub
  4670.  
  4671. Sub timerl712_Timer()
  4672. l712.state=0:timerl712.Enabled = False
  4673. end sub
  4674.  
  4675.  
  4676.  
  4677. '***** skeet targets *****
  4678.  
  4679. Sub TargetSkt01_Hit()
  4680. if Timerskill.enabled=true then skillshotmiss
  4681. AddScore 1000
  4682. l51.state=1:TargetSkt01.blenddisablelighting=0
  4683. TargetsktCheck
  4684. End Sub
  4685.  
  4686. Sub TargetSkt02_Hit()
  4687. if Timerskill.enabled=true then skillshotmiss
  4688. AddScore 1000
  4689. l52.state=1:TargetSkt02.blenddisablelighting=0
  4690. TargetsktCheck
  4691. End Sub
  4692.  
  4693. Sub TargetSkt03_Hit()
  4694. if Timerskill.enabled=true then skillshotmiss
  4695. AddScore 1000
  4696. l53.state=1:TargetSkt03.blenddisablelighting=0
  4697. TargetsktCheck
  4698. End Sub
  4699.  
  4700. Sub TargetSkt04_Hit()
  4701. if Timerskill.enabled=true then skillshotmiss
  4702. AddScore 1000
  4703. l54.state=1:TargetSkt04.blenddisablelighting=0
  4704. TargetsktCheck
  4705. End Sub
  4706.  
  4707. Sub TargetSkt05_Hit()
  4708. if Timerskill.enabled=true then skillshotmiss
  4709. AddScore 1000
  4710. l55.state=1:TargetSkt05.blenddisablelighting=0
  4711. TargetsktCheck
  4712. End Sub
  4713.  
  4714.  
  4715.  
  4716. '***** skeet surfin mode *****
  4717.  
  4718. Sub TargetsktCheck()
  4719. if progress(CurrentPlayer)=0 and l51.state + l52.state + l53.state + l54.state + l55.state=5 and skeetbonus < 15 then StartSKEETMode
  4720. if progress(CurrentPlayer)=0 and l51.state + l52.state + l53.state + l54.state + l55.state=5 and skeetbonus = 15 then skeetwait.enabled=true
  4721. if progress(CurrentPlayer)=1 and l51.state + l52.state + l53.state + l54.state + l55.state=5 then skeetwait.enabled=true
  4722. End Sub
  4723.  
  4724. sub skeetwait_timer()
  4725. For each xx in aTargetsSKEET:xx.isdropped = false : Next
  4726. if progress(currentplayer)=0 then
  4727. For each xx in aTargetsSKEET:xx.blenddisablelighting=1:next
  4728. end if
  4729. For each xx in aLightsSKEET:xx.state=2 : Next
  4730. if skeetbonus < 15 then DMDFlush:DMD "black.jpg", "Skeetsurfing", "not available now", 3000
  4731. if skeetbonus = 15 then
  4732. DMDFlush:DMD "black.jpg", "SkeetSurfin mode", "maxed out!", 3000
  4733. select case int (rnd*2)+1
  4734. Case 1 : PuPlayer.playlistplayex paudio,"audiocallouts","bonusmaxstopfussing.mp3",100,1
  4735. Case 2 : PuPlayer.playlistplayex paudio,"audiocallouts","bonusmaxmission.mp3",100, 1
  4736. end select
  4737. end if
  4738. skeetwait.enabled=false
  4739. end sub
  4740.  
  4741.  
  4742. Sub StartSKEETMode()
  4743. TargetSharkmode1.collidable=false:TargetSharkmode2.collidable=false:TargetSharkmode3.collidable=false:TargetSharkmode4.collidable=false':StopSharkMode:
  4744. Timerskeetmode.Enabled=true:AddScore 50000
  4745. l81.state=2:l82.state=2:l83.state=2:l84.state=2
  4746. if skeetbonus <3 then PuPlayer.playlistplayex pMusic,"musicskeetmode","ESsong_skeetsurfingmode1.mp3",100, 1
  4747. if skeetbonus >2 then PuPlayer.playlistplayex pMusic,"musicskeetmode","",100, 1
  4748. PuPlayer.playlistplayex pBackglass,"videodiv","Skeetmodestart.mp4",0,1
  4749. PuPlayer.playlistplayex paudio,"audiocallouts","skeetmode.mp3",100,1
  4750. lightseqSktMode.Play SeqMiddleInVertOn, 25,3
  4751. trigger3.enabled=true:magna3.enabled=true
  4752. wall_inv_ES.isdropped=false
  4753. gateramp.collidable=false:TargetTriggershot_right.collidable=false:targetequip01.collidable=false:targetequip02.collidable=false:targetequip03.collidable=false:bumperwall.collidable=true:bumper.collidable=false
  4754. skeetgreen.enabled=true
  4755. Light_skeet_flash_green.state=2
  4756. For each a in GI
  4757. a.State = 2
  4758. a.blinkpattern=1000
  4759. a.blinkinterval= 300
  4760. a.Intensity = 10
  4761. a.color = RGB(0, 18, 0)
  4762. a.colorfull = RGB(0, 255, 0)
  4763. Next
  4764. DOF 900, DOFOff:DOF 901, DOFOn
  4765. End Sub
  4766.  
  4767.  
  4768. sub skeetgreen_timer()
  4769. Light_skeet_flash_green.state=0:Light_skeet_flash_yellow.state=2:skeetgreen.enabled=false:skeetyellow.enabled=true
  4770. For each a in GI
  4771. a.blinkpattern=100
  4772. a.blinkinterval= 200
  4773. a.Intensity = 20
  4774. a.color = RGB(18, 18, 0)
  4775. a.colorfull = RGB(255, 255, 0)
  4776. Next
  4777. if skeetbonuspre = 0 then PuPlayer.playlistplayex pAudio,"audiocallouts","shoot_targets.mp3",100, 1
  4778. DOF 901, DOFOff:DOF 902, DOFOn
  4779. end sub
  4780.  
  4781. sub skeetyellow_timer()
  4782. Light_skeet_flash_yellow.state=0:Light_skeet_flash_red.state=2:skeetred.enabled=false:skeetred.enabled=true
  4783. For each a in GI
  4784. a.blinkpattern=10
  4785. a.blinkinterval= 100
  4786. a.Intensity = 30
  4787. a.color = RGB(18, 0, 0)
  4788. a.colorfull = RGB(255, 0, 0)
  4789. Next
  4790. PuPlayer.playlistplayex pAudio,"audiocallouts","hurry.mp3",100, 1
  4791. DOF 902, DOFOff:DOF 903, DOFOn
  4792. end sub
  4793. '
  4794. sub skeetred_timer()
  4795. For each a in GI
  4796. a.State = 0
  4797. a.Intensity = 2
  4798. a.color = RGB(255, 155, 64) 'default color
  4799. a.colorfull = RGB(255, 255, 255) 'default color
  4800. Next
  4801. GIOff
  4802. DOF 903, DOFOff:DOF 900, DOFOn
  4803. Light_skeet_flash_red.state=0:skeetred.enabled=false
  4804. end sub
  4805.  
  4806.  
  4807.  
  4808. Sub StopSKEETMode()
  4809. TargetSharkmode1.collidable=true:TargetSharkmode2.collidable=true:TargetSharkmode3.collidable=true:TargetSharkmode4.collidable=true'if progress(currentplayer)=0 then
  4810. For each xx in aTargetsSKEET:xx.isdropped = false : Next
  4811. For each xx in aTargetsSKEET:xx.blenddisablelighting=1:next
  4812. For each xx in aLightsSKEET:xx.state=2 : Next
  4813. For each xx in aLightsSkeetmodeTargets:xx.state=0 : Next
  4814. wall_inv_ES.isdropped=true
  4815. gateramp.collidable=true:TargetTriggershot_right.collidable=true:targetequip01.collidable=true:targetequip02.collidable=true:targetequip03.collidable=true:bumperwall.collidable=false:bumper.collidable=true
  4816. if progress(currentplayer)=0 then PuPlayer.playlistplayex pMusic,"musicpostmode","",100, 1
  4817. if progress(CurrentPlayer)=1 then startsurfmodemusic
  4818. timerskeetmode.enabled=false
  4819. skeetgreen.enabled=false:skeetyellow.enabled=false:skeetred.enabled=false:light_skeet_flash_green.state=0:light_skeet_flash_yellow.state=0:light_skeet_flash_red.state=0
  4820. if BallsOnPlayfield>0 then popsensor.enabled=true:sensortimer.enabled=true:bumcheck=2
  4821. DMDFlush:DMD "black.jpg", "Clays hit: ", "" &skeetbonuspre, 2500
  4822. mMagna3Save.MagnetOn = 0
  4823. magnettimer3.enabled=0
  4824. trigger3.enabled=false
  4825. magna3.enabled=false
  4826. mMagna3Save.MagnetOn = 0
  4827. if progress(CurrentPlayer)=1 then TimerBoardwall3up.enabled=true
  4828. waitforendmode.enabled=true
  4829. currentplayerbonusstat
  4830. For each a in GI
  4831. a.State = 0
  4832. a.Intensity = 2
  4833. a.color = RGB(255, 155, 64) 'default color
  4834. a.colorfull = RGB(255, 255, 255) 'default color
  4835. Next
  4836. GiOff
  4837. DOF 901, DOFOff:DOF 902, DOFOff:DOF 903, DOFOff:DOF 900, DOFOn
  4838. End Sub
  4839.  
  4840.  
  4841.  
  4842. '******waiting time (magnet catch) skeet surfin modus *************
  4843.  
  4844. Dim mMagna3Save
  4845. Set mMagna3Save = New cvpmMagnet : With mMagna3Save
  4846. .InitMagnet Magna3, 25
  4847. End With
  4848.  
  4849.  
  4850. Sub Magna3_Hit():mMagna3Save.AddBall ActiveBall: End Sub
  4851. Sub Magna3_UnHit(): mMagna3Save.RemoveBall ActiveBall: End Sub
  4852.  
  4853.  
  4854. sub trigger3_hit()
  4855. mMagna3Save.MagnetOn = 1
  4856. magnettimer3.enabled=1
  4857.  
  4858. end sub
  4859.  
  4860. sub magnettimer3_timer()
  4861. magnettimer3.enabled=0
  4862. mMagna3Save.MagnetOn = 0:playsound "fx_ball_drop0"
  4863. trigger3.enabled=false
  4864. magna3.enabled=false
  4865. end Sub
  4866.  
  4867.  
  4868. Sub Timerskeetmode_Timer()
  4869. Timerskeetmode.Enabled=false:StopSKEETMode
  4870. End Sub
  4871.  
  4872.  
  4873.  
  4874.  
  4875.  
  4876. '***** targets skeet surfin mode *****
  4877.  
  4878. Sub Targetskeetmode01_hit()
  4879.  
  4880. if l81.state=0 then PlaySound "drop1", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall) :addscore 100
  4881. if l81.state=2 then
  4882. PuPlayer.playlistplayex pBackglass,"videodiv","Skeethit.mp4",0,1
  4883. light_skeetmodehit1.state=1
  4884. Skeetbonuspre=Skeetbonuspre+1:skeetbonus=skeetbonus+1:Timerflashskeettarget1.Enabled = True:if skeetbonus=1 then diversitymultiplier=diversitymultiplier+1
  4885. playsound "shot", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 0, 0, AudioFade(ActiveBall):skeethit1.state=1
  4886. DMDFlush:DMD "black.jpg", " " &skeetbonuspre, "Clays", 2500
  4887. DOF 899, DOFOn
  4888. if skeetbonuspre=3 then PuPlayer.playlistplayex pAudio,"audiocallouts","robinhood.mp3",100, 1
  4889.  
  4890. end if
  4891.  
  4892. currentplayerbonusstat
  4893. End Sub
  4894.  
  4895. Sub Timerflashskeettarget1_Timer()
  4896. light_skeetmodehit1.state=0:skeethit1.state=0
  4897. if skeetbonus=10 then awardextraball
  4898. if skeetbonus=15 then awardbonusjackpot:StopSKEETMode
  4899. DOF 899, DOFOff
  4900. Timerflashskeettarget1.Enabled = False
  4901. end sub
  4902.  
  4903.  
  4904. Sub Targetskeetmode02_hit()
  4905. if l82.state=0 then PlaySound "drop1", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall) :addscore 100
  4906. if l82.state=2 then
  4907. PuPlayer.playlistplayex pBackglass,"videodiv","Skeethit.mp4",0,1
  4908. light_skeetmodehit2.state=1
  4909. Skeetbonuspre=Skeetbonuspre+1:skeetbonus=skeetbonus+1:Timerflashskeettarget2.Enabled = True:if skeetbonus=1 then diversitymultiplier=diversitymultiplier+1
  4910. playsound "shot", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 0, 0, AudioFade(ActiveBall):skeethit2.state=1
  4911. DMDFlush:DMD "black.jpg", " " &skeetbonuspre, "Clays", 2500
  4912. DOF 899, DOFOn
  4913. if skeetbonuspre=3 then PuPlayer.playlistplayex pAudio,"audiocallouts","robinhood.mp3",100, 1
  4914.  
  4915. end if
  4916.  
  4917. currentplayerbonusstat
  4918. End Sub
  4919.  
  4920. Sub Timerflashskeettarget2_Timer()
  4921. light_skeetmodehit2.state=0:skeethit2.state=0
  4922. if skeetbonus=10 then awardextraball
  4923. if skeetbonus=15 then awardbonusjackpot:StopSKEETMode
  4924. DOF 899, DOFOff
  4925. Timerflashskeettarget2.Enabled = False
  4926. end sub
  4927.  
  4928. Sub Targetskeetmode03_hit()
  4929. if l83.state=0 then PlaySound "drop1", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall) :addscore 100
  4930. if l83.state=2 then
  4931. PuPlayer.playlistplayex pBackglass,"videodiv","Skeethit.mp4",0,1
  4932. light_skeetmodehit3.state=1
  4933. Skeetbonuspre=Skeetbonuspre+1:skeetbonus=skeetbonus+1:Timerflashskeettarget3.Enabled = True:if skeetbonus=1 then diversitymultiplier=diversitymultiplier+1
  4934. playsound "shot", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 0, 0, AudioFade(ActiveBall):skeethit3.state=1
  4935. DMDFlush:DMD "black.jpg", " " &skeetbonuspre, "Clays", 2500
  4936. DOF 899, DOFOn
  4937. if skeetbonuspre=3 then PuPlayer.playlistplayex pAudio,"audiocallouts","robinhood.mp3",100, 1
  4938.  
  4939. end if
  4940. currentplayerbonusstat
  4941. End Sub
  4942.  
  4943. Sub Timerflashskeettarget3_Timer()
  4944. light_skeetmodehit3.state=0:skeethit3.state=0
  4945. if skeetbonus=10 then awardextraball
  4946. if skeetbonus=15 then awardbonusjackpot:StopSKEETMode
  4947. DOF 899, DOFOff
  4948. Timerflashskeettarget3.Enabled = False
  4949. end sub
  4950.  
  4951. Sub Targetskeetmode04_hit()
  4952. if l84.state=0 then PlaySound "drop1", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall) :addscore 100
  4953. if l84.state=2 then
  4954. PuPlayer.playlistplayex pBackglass,"videodiv","Skeethit.mp4",0,1
  4955. light_skeetmodehit4.state=1
  4956. Skeetbonuspre=Skeetbonuspre+1:skeetbonus=skeetbonus+1:Timerflashskeettarget4.Enabled = True:if skeetbonus=1 then diversitymultiplier=diversitymultiplier+1
  4957. playsound "shot", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 0, 0, AudioFade(ActiveBall):skeethit4.state=1
  4958. DMDFlush:DMD "black.jpg", " " &skeetbonuspre, "Clays", 2500
  4959. DOF 899, DOFOn
  4960. if skeetbonuspre=3 then PuPlayer.playlistplayex pAudio,"audiocallouts","robinhood.mp3",100, 1
  4961.  
  4962. end if
  4963.  
  4964. currentplayerbonusstat
  4965. End Sub
  4966.  
  4967. Sub Timerflashskeettarget4_Timer()
  4968. light_skeetmodehit4.state=0:skeethit4.state=0
  4969. if skeetbonus=10 then awardextraball
  4970. if skeetbonus=15 then awardbonusjackpot:StopSKEETMode
  4971. DOF 899, DOFOff
  4972. Timerflashskeettarget4.Enabled = False
  4973. end sub
  4974.  
  4975.  
  4976. '****** Surfers Nightmare **********
  4977.  
  4978. sub TargetSharkMode1_hit()
  4979. if lightSharkMode1.state=0 then lightSharkMode1.state=1
  4980. if bExtraBallWonThisBall=false and Sharkextraballs < 3 then
  4981. PlaySound "drop1", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  4982.  
  4983. addscore 1000
  4984. end if
  4985. Sharkmodecheck
  4986. end Sub
  4987.  
  4988. sub TargetSharkMode2_hit()
  4989. if lightSharkMode2.state=0 then lightSharkMode2.state=1
  4990. if bExtraBallWonThisBall=false and Sharkextraballs < 3 then
  4991. PlaySound "drop1", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  4992.  
  4993. addscore 1000
  4994. end If
  4995. Sharkmodecheck
  4996. end Sub
  4997.  
  4998. sub TargetSharkMode3_hit()
  4999. if lightSharkMode3.state=0 then lightSharkMode3.state=1
  5000. if bExtraBallWonThisBall=false and Sharkextraballs < 3 then
  5001. PlaySound "drop1", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  5002.  
  5003. addscore 1000
  5004. end If
  5005. Sharkmodecheck
  5006. end Sub
  5007.  
  5008. sub TargetSharkMode4_hit()
  5009. if lightSharkMode4.state=0 then lightSharkMode4.state=1
  5010. if bExtraBallWonThisBall=false and Sharkextraballs < 3 then
  5011. PlaySound "drop1", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  5012.  
  5013. addscore 1000
  5014. end If
  5015. Sharkmodecheck
  5016. end Sub
  5017.  
  5018.  
  5019. Sub SharkModeCheck()
  5020. if lightSharkMode1.state=1 and lightSharkMode2.state=1 and lightSharkMode3.state=1 and lightSharkMode4.state=1 then StartSharkMode
  5021.  
  5022. end sub
  5023.  
  5024. Sub StartSharkMode()
  5025. sharkmode=1
  5026. if bExtraBallWonThisBall = true and sharkextraballs < 3 then
  5027. lightSharkMode1.state=0:lightSharkMode2.state=0:lightSharkMode3.state=0:lightSharkMode4.state=0:DMDFlush:DMD "black.jpg", "Nice orange lights! ;-)", "10000 for you!", 3000:addscore 10000:exit sub
  5028. end if
  5029.  
  5030. if ballsonplayfield = 2 then
  5031. lightSharkMode1.state=0:lightSharkMode2.state=0:lightSharkMode3.state=0:lightSharkMode4.state=0:DMDFlush:DMD "black.jpg", "Nice orange lights!", "10.000 for you!", 3000:addscore 10000:exit sub
  5032. end if
  5033.  
  5034. if Sharkextraballs < 3 and bExtraBallWonThisBall = false then
  5035. lightSharkMode1.state=2:lightSharkMode2.state=2:lightSharkMode3.state=2:lightSharkMode4.state=2
  5036. DMDFlush:DMD "black.jpg", "Surfers", "Nightmare!", 3000
  5037. PuPlayer.playlistplayex pBackglass,"videodiv","sharkstart.mp4",100, 1
  5038. PuPlayer.playlistplayex pAudio,"audioevents","jaws_short.mp3",100, 1
  5039. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 4, ""FN"":11, ""VL"":65 }":sharkwait.enabled=true
  5040. DOF 906, DOFOn
  5041. DOF 900, DOFOff
  5042. lightseqshark.Play SeqCircleInOn,15,2
  5043. end if
  5044.  
  5045. if sharkextraballs = 3 then
  5046. lightSharkMode1.state=0
  5047. lightSharkMode2.state=0
  5048. lightSharkMode3.state=0
  5049. lightSharkMode4.state=0
  5050. addscore 10000
  5051. DMDFlush:DMD "black.jpg", "no more beasts", "thank you!", 3000
  5052. end if
  5053. end sub
  5054.  
  5055. sub sharkwait_timer()
  5056. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 4, ""FN"":11, ""VL"":100 }"
  5057. PuPlayer.playlistplayex pAudio,"audiocallouts","kill_the_beast.mp3",100, 1
  5058. sharkwait.enabled=false
  5059. end Sub
  5060.  
  5061. Sub StopSharkMode()
  5062. sharkmode=0
  5063. lightSharkMode1.state=0:lightSharkMode2.state=0:lightSharkMode3.state=0:lightSharkMode4.state=0
  5064. SharkModeCounter=0
  5065. sharkwall.collidable=false
  5066. if Shark.TransZ <> 200 then timersharkdown.enabled=true
  5067. sharkstate=1
  5068. DOF 906, DOFOff
  5069. DOF 903, DOFOff
  5070. DOF 900, DOFOn
  5071. DOF 105, DOFOff
  5072. end Sub
  5073.  
  5074.  
  5075. sub Sharkwall_Hit()
  5076. if sharkmodecounter < 5 then
  5077. PlaySound "rubber_hit_1", 0, 1, Audiopan(ActiveBall)
  5078. DOF 903, DOFOn:DOF 906, DOFOn
  5079. lightsharkorange.state=1:addscore 1000:timersharkorange.enabled=true
  5080. SharkModeCounter=SharkModeCounter+1
  5081. end if
  5082. if Sharkmodecounter=5 then
  5083. SharkExtra
  5084. end if
  5085. end Sub
  5086.  
  5087. sub timersharkorange_timer()
  5088. lightsharkorange.state=0
  5089. DOF 903, DOFOff
  5090. timerSharkorange.enabled=false
  5091. end sub
  5092.  
  5093.  
  5094. Dim Sharkstate
  5095.  
  5096. sub triggershark_hit()
  5097. if lightSharkMode1.state=2 and lightSharkMode2.state=2 and lightSharkMode3.state=2 and lightSharkMode4.state=2 then
  5098. if sharkstate=1 then
  5099. sharkstate=2
  5100. timerSharkUp.enabled=true
  5101. timersharkdown.enabled=false
  5102. sharkwall.isdropped=false
  5103. sharkwall.collidable=true
  5104. Sharkwall002.visible=true
  5105. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 4, ""FN"":11, ""VL"":45 }"
  5106. PuPlayer.playlistplayex pAudio,"audioevents","jaws.mp3",100, 1
  5107. DOF 105,DOFOn
  5108. end if
  5109. end if
  5110. end Sub
  5111.  
  5112. sub triggershark_unhit()
  5113. if sharkstate=2 then
  5114. sharkstate=1
  5115. timersharkup.enabled=false
  5116. timersharkdown.enabled=true
  5117. sharkwall.isdropped=true
  5118. sharkwall.collidable=false
  5119. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 4, ""FN"":11, ""VL"":100 }"
  5120. PuPlayer.playlistplayex pAudio,"audioclear","clear.mp3",100, 1
  5121. DOF 105,DOFOn
  5122. end if
  5123. end sub
  5124.  
  5125. Dim SharkStep
  5126.  
  5127. sub timersharkup_timer()
  5128. SharkStep = SharkStep + 1
  5129. Select Case SharkStep
  5130.  
  5131. Case 1:
  5132. Shark.TransZ = 200:kickervideomode.DrawStyle=1 '0=Hidden, 1=Hole, 2=Cup, 3=Invisible
  5133. Case 2:
  5134. Shark.TransZ = 195
  5135. Case 3:
  5136. Shark.TransZ = 190
  5137. Case 4:
  5138. Shark.TransZ = 185
  5139. Case 5:
  5140. Shark.TransZ = 180
  5141. Case 6:
  5142. Shark.TransZ = 175
  5143. Case 7:
  5144. Shark.TransZ = 170
  5145. Case 8:
  5146. Shark.TransZ = 165
  5147. Case 9:
  5148. Shark.TransZ = 160:DOF 105,DOFOff
  5149. timersharkup.enabled=false
  5150. SharkStep=0
  5151. End select
  5152.  
  5153. end Sub
  5154.  
  5155. sub timersharkdown_timer()
  5156. SharkStep = SharkStep + 1
  5157. Select Case SharkStep
  5158.  
  5159. Case 1:
  5160. Shark.TransZ = 160
  5161. Case 2:
  5162. Shark.TransZ = 165
  5163. Case 3:
  5164. Shark.TransZ = 170
  5165. Case 4:
  5166. Shark.TransZ = 175
  5167. Case 5:
  5168. Shark.TransZ = 180
  5169. Case 6:
  5170. Shark.TransZ = 185
  5171. Case 7:
  5172. Shark.TransZ = 190
  5173. Case 8:
  5174. Shark.TransZ = 195
  5175. Case 9:
  5176. Shark.TransZ = 200:kickervideomode.DrawStyle=0:Sharkwall002.visible=false:DOF 105,DOFOff
  5177. timersharkdown.enabled=false
  5178. SharkStep=0
  5179. End select
  5180. end Sub
  5181.  
  5182.  
  5183. Sub SharkExtra()
  5184. stopSharkmode
  5185.  
  5186. ExtraBallscount = ExtraBallscount + 1
  5187. Light_extraball.State = 1:PostFlasher.state = 1
  5188. ExtraBallsAwards(CurrentPlayer) = ExtraBallsAwards(CurrentPlayer) + 1
  5189. bExtraBallWonThisBall = True
  5190. PuPlayer.playlistplayex pBackglass,"videodiv","sharkend.mp4",100,1
  5191. DMDFlush:DMD "black.jpg", "You finished", "him off!", 3000
  5192. currentplayerbonusstat
  5193. PuPlayer.playlistplayex pAudio,"audioevents","sonofa.mp3",100, 1
  5194. Sharkextraballs=Sharkextraballs+1
  5195. DOF 903, DOFOff
  5196. DOF 906, DOFOff
  5197. DOF 900, DOFOn
  5198. lightseqshark.Play SeqCircleOutOn,15,2
  5199. waitextra.enabled=true
  5200. End Sub
  5201.  
  5202.  
  5203. sub waitextra_timer()
  5204. PuPlayer.playlistplayex pBackglass,"videodiv","extraball.mp4",0,1
  5205. DMD "black.jpg", "EXTRABALL!", "", 3000
  5206. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 4, ""FN"":11, ""VL"":100 }"
  5207. waitextra.enabled=false
  5208. Shark.TransZ = 200
  5209. end sub
  5210.  
  5211.  
  5212.  
  5213. '****** wax your board counter (cup) *****
  5214.  
  5215.  
  5216. sub Trigger_waxbowl_counter_Hit()
  5217.  
  5218. waxcountleft=10-waxcount(currentplayer)
  5219. if light_waxbowl.state=2 then waxcount(CurrentPlayer)=waxcount(CurrentPlayer)+1
  5220.  
  5221. addscore 300
  5222.  
  5223. if waxcount(currentplayer)=1 then waxcount9.visible=true:waxcount10.visible=false:DMDFlush:DMD "black.jpg", " "&waxcountleft, "more!", 500
  5224. if waxcount(currentplayer)=2 then waxcount8.visible=true:waxcount9.visible=false:DMDFlush:DMD "black.jpg", " "&waxcountleft, "more!", 500
  5225. if waxcount(currentplayer)=3 then waxcount7.visible=true:waxcount8.visible=false:DMDFlush:DMD "black.jpg", " "&waxcountleft, "more!", 500
  5226. if waxcount(currentplayer)=4 then waxcount6.visible=true:waxcount7.visible=false:DMDFlush:DMD "black.jpg", " "&waxcountleft, "more!", 500
  5227. if waxcount(currentplayer)=5 then waxcount5.visible=true:waxcount6.visible=false:DMDFlush:DMD "black.jpg", " "&waxcountleft, "more!", 500
  5228. if waxcount(currentplayer)=6 then waxcount4.visible=true:waxcount5.visible=false:DMDFlush:DMD "black.jpg", " "&waxcountleft, "more!", 500
  5229. if waxcount(currentplayer)=7 then waxcount3.visible=true:waxcount4.visible=false:DMDFlush:DMD "black.jpg", " "&waxcountleft, "more!", 500
  5230. if waxcount(currentplayer)=8 then waxcount2.visible=true:waxcount3.visible=false:DMDFlush:DMD "black.jpg", " "&waxcountleft, "more!", 500
  5231. if waxcount(currentplayer)=9 then waxcount1.visible=true:waxcount2.visible=false:DMDFlush:DMD "black.jpg", " "&waxcountleft, "more!", 500
  5232. if waxcount(currentplayer)=10 then waxcount1.visible=false:light_waxbowl.state=0:Light_Tubearrow1.state=2:Light_Tubewave1.state=2:trigger_waxbowl_counter.enabled=false:timerboardwall2down.enabled=true:waxcount(currentplayer)=0:DMDFlush:DMD "black.jpg", "Get some", "waves!", 3000:PuPlayer.playlistplayex paudio,"audiocallouts","outta bedn.mp3",100,1:startsurfmode
  5233. end sub
  5234.  
  5235.  
  5236.  
  5237. sub Trigger_waxbowl_entry_hit()
  5238. if triggeraerial.enabled=false then
  5239. if light_waxbowl.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","waxing surfboards.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videodiv","wax.mp4",0,1:PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 4, ""FN"":11, ""VL"":25 }"
  5240. end if
  5241. end sub
  5242.  
  5243. sub Trigger_waxbowl_exit_hit() 'placed on invisible wall 020 at height of 125
  5244. if triggeraerial.enabled=false then
  5245. if light_waxbowl.state=0 and progress(CurrentPlayer)=0 then PuPlayer.playlistplayex pBackglass,"videodiv","splashsound.mp4",100,1
  5246. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 4, ""FN"":11, ""VL"":100 }"
  5247. end if
  5248. end sub
  5249.  
  5250. sub Trigger_waxbowl_exitb_hit() 'placed on invisible wall 020b at height of 60
  5251. playsound "fx_ball_drop0"
  5252. if triggeraerial.enabled=false then
  5253. if light_waxbowl.state=1 then PuPlayer.playlistplayex pAudio,"audioevents","bowlsplash.mp3",100,1
  5254. if light_waxbowl.state=2 and waxcount(currentplayer)<7 then PuPlayer.playlistplayex paudio,"audiocallouts","morewax.mp3",100,1:DMDFlush:DMD "black.jpg", " "&waxcountleft, "more!", 2500
  5255. if light_waxbowl.state=2 and waxcount(currentplayer)>=7 then PuPlayer.playlistplayex paudio,"audiocallouts","morewax2.mp3",100,1:DMDFlush:DMD "black.jpg", " "&waxcountleft, "more!", 2500
  5256. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 4, ""FN"":11, ""VL"":100 }"
  5257. end if
  5258. end sub
  5259.  
  5260.  
  5261.  
  5262. sub StartSurfmode()
  5263. startsurfmodemusic
  5264. gateleft.open=true:gateright.open=true
  5265. progress(CurrentPlayer)=1
  5266. For each xx in aTargetsSKEET:xx.blenddisablelighting=0:next
  5267. for each xx in aTargetsES:xx.blenddisablelighting=0:next
  5268. triggerloop.enabled=true
  5269. triggeroffthelip.enabled=true
  5270. triggeraerial.enabled=true
  5271. lightSurfMode1.state=2:lightSurfMode2.state=2:lightSurfMode3.state=2:lightSurfMode4.state=2
  5272. DOF 105, DOFOn
  5273. GiOn
  5274. For each a in GI
  5275. a.blinkpattern=10
  5276. a.blinkinterval= 1000
  5277. a.State = 2
  5278. a.Intensity = 5
  5279. a.color = RGB(255, 155, 64) 'default color
  5280. a.colorfull = RGB(255, 255, 255) 'default color
  5281. a.fadespeedup=0.01
  5282. a.fadespeeddown=0.01
  5283. Next
  5284. TimerBoardwall3up.Enabled = True
  5285. DOF 900, DOFOff:DOF 899, DOFOn
  5286.  
  5287. end sub
  5288.  
  5289. sub StopSurfMode()
  5290. surfmusic1.enabled=false:surfmusic2.enabled=false:surfmusic3.enabled=false:surfmusic4.enabled=false:surfmusic5.enabled=false
  5291. gateleft.open=false:gateright.open=false
  5292. triggerloop.enabled=false
  5293. triggeroffthelip.enabled=false
  5294. triggeraerial.enabled=false
  5295. For each xx in aTargetsSKEET
  5296. if xx.isdropped=false then xx.blenddisablelighting=1
  5297. next
  5298. for each xx in aTargetsES
  5299. if xx.isdropped=false then xx.blenddisablelighting=1
  5300. next
  5301. lightSurfMode1.state=0:lightSurfMode2.state=0:lightSurfMode3.state=0:lightSurfMode4.state=0
  5302. DOF 105, DOFOn
  5303. GiOff
  5304. For each a in GI
  5305. a.State = 0
  5306. a.Intensity=2
  5307. a.fadespeedup=0.1
  5308. a.fadespeeddown=0.1
  5309. Next
  5310. TimerBoardwall3down.Enabled = true
  5311.  
  5312. DOF 899, DOFOff:DOF 900, DOFOn
  5313. end sub
  5314.  
  5315.  
  5316. sub startsurfmodemusic()
  5317. select case int (rnd*5)+1
  5318. Case 1 : PuPlayer.playlistplayex pMusic,"musicsurfmode","",100, 1:surfmusic1.enabled=true
  5319. Case 2 : PuPlayer.playlistplayex pMusic,"musicsurfmode","",100, 1:surfmusic2.enabled=true
  5320. Case 3 : PuPlayer.playlistplayex pMusic,"musicsurfmode","",100, 1:surfmusic3.enabled=true
  5321. Case 4 : PuPlayer.playlistplayex pMusic,"musicsurfmode","",100, 1:surfmusic4.enabled=true
  5322. Case 5 : PuPlayer.playlistplayex pMusic,"musicsurfmode","",100, 1:surfmusic5.enabled=true
  5323. end select
  5324. end Sub
  5325.  
  5326. sub surfmusic1_timer()
  5327. startsurfmodemusic:surfmusic1.enabled=false
  5328. end sub
  5329.  
  5330. sub surfmusic2_timer()
  5331. startsurfmodemusic:surfmusic2.enabled=false
  5332. end sub
  5333.  
  5334. sub surfmusic3_timer()
  5335. startsurfmodemusic:surfmusic3.enabled=false
  5336. end sub
  5337.  
  5338. sub surfmusic4_timer()
  5339. startsurfmodemusic:surfmusic4.enabled=false
  5340. end sub
  5341.  
  5342. sub surfmusic5_timer()
  5343. startsurfmodemusic:surfmusic5.enabled=false
  5344. end sub
  5345.  
  5346. sub Triggerloop_hit()
  5347.  
  5348. addscore 20000
  5349. loopbonuspre=loopbonuspre+1:loopbonus=loopbonus+1:loops.enabled=true:if loopbonus=1 then diversitymultiplier=diversitymultiplier+1
  5350. PuPlayer.playlistplayex pBackglass,"videoloop","",0,1
  5351. DMDFlush:DMD "black.jpg", "Loop", "Bonus: " &loopbonuspre, 2000
  5352. LightSeq001.Play SeqRightOn, 50, 1
  5353. LightSeq001.UpdateInterval = 5
  5354. LightSeq001.Play SeqLeftOn, 50, 1
  5355. LightSeq001.UpdateInterval = 8
  5356.  
  5357. triggerloop.enabled=false
  5358.  
  5359. select case int (rnd*3)+1
  5360. Case 1 : PuPlayer.playlistplayex pAudio,"audiocheers","cheer4.mp3",100,1
  5361. Case 2 : PuPlayer.playlistplayex pAudio,"audiocheers","cheer5.mp3",100,1
  5362. Case 3 : PuPlayer.playlistplayex pAudio,"audiocheers","cheer6.mp3",100,1
  5363. end select
  5364. currentplayerbonusstat
  5365. end sub
  5366.  
  5367. sub loops_timer()
  5368.  
  5369.  
  5370. if loopbonus = 15 then awardextraball
  5371. if loopbonus = 20 then awardbonusjackpot
  5372.  
  5373. triggerloop.enabled=true:loops.enabled=false
  5374. end sub
  5375.  
  5376.  
  5377. sub Triggeroffthelip_hit()
  5378.  
  5379. addscore 20000
  5380. offthelipbonuspre=offthelipbonuspre+1:offthelipbonus=offthelipbonus+1:offthelip.enabled=true:if offthelipbonus=1 then diversitymultiplier=diversitymultiplier+1
  5381. PuPlayer.playlistplayex pBackglass,"videooffthelip","",0,1
  5382. DMDFlush:DMD "black.jpg", "Off-the-Lip", "Bonus: " &offthelipbonuspre, 2000
  5383. LightSeq001.Play SeqRightOn, 50, 1
  5384. LightSeq001.UpdateInterval = 5
  5385. LightSeq001.Play SeqLeftOn, 50, 1
  5386. LightSeq001.UpdateInterval = 8
  5387.  
  5388. triggeroffthelip.enabled=false
  5389.  
  5390. select case int (rnd*3)+1
  5391. Case 1 : PuPlayer.playlistplayex pAudio,"audiocheers","cheer4.mp3",100,1
  5392. Case 2 : PuPlayer.playlistplayex pAudio,"audiocheers","cheer5.mp3",100,1
  5393. Case 3 : PuPlayer.playlistplayex pAudio,"audiocheers","cheer6.mp3",100,1
  5394. end select
  5395. currentplayerbonusstat
  5396. end sub
  5397.  
  5398. sub offthelip_timer()
  5399.  
  5400. if offthelipbonus = 15 then awardextraball
  5401. if offthelipbonus = 20 then awardbonusjackpot
  5402.  
  5403. offthelip.enabled=false:triggeroffthelip.enabled=true
  5404. end sub
  5405.  
  5406.  
  5407. sub Triggeraerial_hit()
  5408.  
  5409. addscore 20000
  5410. aerialbonuspre=aerialbonuspre+1:aerialbonus=aerialbonus+1:aerial.enabled=true:if aerialbonus=1 then diversitymultiplier=diversitymultiplier+1
  5411. PuPlayer.playlistplayex pBackglass,"videoaerial","",0,1
  5412. DMDFlush:DMD "black.jpg", "Aerial 360", "Bonus: " &aerialbonuspre, 2000
  5413. LightSeq001.Play SeqRightOn, 50, 1
  5414. LightSeq001.UpdateInterval = 5
  5415. LightSeq001.Play SeqLeftOn, 50, 1
  5416. LightSeq001.UpdateInterval = 8
  5417.  
  5418. triggeraerial.enabled=false
  5419.  
  5420. select case int (rnd*3)+1
  5421. Case 1 : PuPlayer.playlistplayex pAudio,"audiocheers","cheer4.mp3",100,1
  5422. Case 2 : PuPlayer.playlistplayex pAudio,"audiocheers","cheer5.mp3",100,1
  5423. Case 3 : PuPlayer.playlistplayex pAudio,"audiocheers","cheer6.mp3",100,1
  5424. end select
  5425. currentplayerbonusstat
  5426. end sub
  5427.  
  5428. sub aerial_timer()
  5429. if aerialbonus = 15 then awardextraball
  5430. if aerialbonus = 20 then awardbonusjackpot
  5431. aerial.enabled=false:triggeraerial.enabled=true
  5432. end sub
  5433.  
  5434.  
  5435. '****kickertuberide *****
  5436.  
  5437. sub kickerrampbrake_hit 'sets speed for ball coming up the ramp to prevent missing the next trigger
  5438. Kickerrampbrake.kick 0,30
  5439. end sub
  5440.  
  5441. sub REnd2_hit()
  5442. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 4, ""FN"":11, ""VL"":100 }"
  5443. StopSound "metalrolling"
  5444. playsound "fx_ball_drop0"
  5445. end sub
  5446.  
  5447. sub starttuberide_timer()
  5448. if light_tubearrow1.state=2 then light_tubewave1.state=1
  5449. if light_tubearrow2.state=2 then light_tubewave2.state=1
  5450. if light_tubearrow3.state=2 then light_tubewave3.state=1
  5451. Kickertakeoff.kick 90,3
  5452. addscore 100000
  5453. starttuberide.enabled=0
  5454. startwave.enabled=true
  5455. end sub
  5456.  
  5457. Dim WaveStep
  5458.  
  5459. sub startwave_timer()
  5460. WaveStep = WaveStep + 1
  5461. Select Case WaveStep
  5462.  
  5463. Case 1:
  5464. PrimTube2.rotx = 0
  5465. Case 2:
  5466. PrimTube2.rotx = -15
  5467. Case 3:
  5468. PrimTube2.rotx = -30:primtube2.visible=true
  5469. Case 4:
  5470. PrimTube2.rotx = -45
  5471. Case 5:
  5472. PrimTube2.rotx = -60
  5473. Case 6:
  5474. PrimTube2.rotx = -75
  5475. Case 7:
  5476. PrimTube2.rotx = -90
  5477. Case 8:
  5478. PrimTube2.rotx = -105
  5479. Case 9:
  5480. PrimTube2.rotx = -120
  5481. Case 10:
  5482. PrimTube2.rotx = -135
  5483. Case 11:
  5484. PrimTube2.rotx = -150
  5485. Case 12:
  5486. PrimTube2.rotx = -165
  5487. Case 13:
  5488. PrimTube2.rotx = -180
  5489. Case 14:
  5490. PrimTube2.rotx = -195
  5491. Case 15:
  5492. PrimTube2.rotx = -210
  5493. Case 16:
  5494. PrimTube2.rotx = -225
  5495. Case 17:
  5496. PrimTube2.rotx = -240
  5497. Case 18:
  5498. PrimTube2.rotx = -255
  5499. Case 19:
  5500. PrimTube2.rotx = -270:primtube2.visible=false
  5501.  
  5502. startwave.Enabled = False
  5503. WaveStep=0
  5504. End select
  5505. end sub
  5506.  
  5507.  
  5508.  
  5509. sub kickertakeoff_hit()
  5510. starttuberide.enabled=1:gateramptube.collidable=false:PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 4, ""FN"":11, ""VL"":01 }"
  5511. if l11.state=2 and light_tubearrow1.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_coxos1.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","coxos1.mp4",0,1
  5512. if l11.state=2 and light_tubearrow2.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_coxos2.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","coxos2.mp4",0,1
  5513. if l11.state=2 and light_tubearrow3.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_coxos1.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","coxos3.mp4",0,1
  5514. if l12.state=2 and light_tubearrow1.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_munda1.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","Munda1.mp4",0,1
  5515. if l12.state=2 and light_tubearrow2.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_munda2.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","Munda2.mp4",0,1
  5516. if l12.state=2 and light_tubearrow3.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_munda1.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","Munda3.mp4",0,1
  5517. if l13.state=2 and light_tubearrow1.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_mulla2.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","Mulla1.mp4",0,1
  5518. if l13.state=2 and light_tubearrow2.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_mulla3.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","Mulla2.mp4",0,1
  5519. if l13.state=2 and light_tubearrow3.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_mulla2.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","Mulla3.mp4",0,1
  5520. if l14.state=2 and light_tubearrow1.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_ships1.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","ship1.mp4",0,1
  5521. if l14.state=2 and light_tubearrow2.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_ships2.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","ship2.mp4",0,1
  5522. if l14.state=2 and light_tubearrow3.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_ships1.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","ship3.mp4",0,1
  5523. if l15.state=2 and light_tubearrow1.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_skele1.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","skel1.mp4",0,1
  5524. if l15.state=2 and light_tubearrow2.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_skele2.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","skel2.mp4",0,1
  5525. if l15.state=2 and light_tubearrow3.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_skele1.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","skel3.mp4",0,1
  5526. if l16.state=2 and light_tubearrow1.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_bingin1.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","bingin1.mp4",0,1
  5527. if l16.state=2 and light_tubearrow2.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_bingin2.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","bingin2.mp4",0,1
  5528. if l16.state=2 and light_tubearrow3.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_bingin1.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","bingin3.mp4",0,1
  5529. if l17.state=2 and light_tubearrow1.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_pipeline1.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","pipe1.mp4",0,1
  5530. if l17.state=2 and light_tubearrow2.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_pipeline2.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","pipe2.mp4",0,1
  5531. if l17.state=2 and light_tubearrow3.state=2 then PuPlayer.playlistplayex pAudio,"audioevents","wave_pipeline1.mp3",100,1:PuPlayer.playlistplayex pBackglass,"videospots","pipe3.mp4",0,1
  5532. end sub
  5533.  
  5534.  
  5535. sub triggertubeend_hit()
  5536. if light_tubewave1.state=1 and light_tubewave2.state=0 then Light_Tubearrow2.state=2: light_tubewave2.state=2:light_tubearrow1.state=0:DMDFlush:DMD "black.jpg", "Nice", "Tuberide!", 3000
  5537. if light_tubewave2.state=1 and light_tubewave3.state=0 then Light_Tubearrow3.state=2: light_tubewave3.state=2:Light_Tubearrow2.state=0:light_tubearrow1.state=0:DMDFlush:DMD "black.jpg", "Nice", "Tuberide!", 3000
  5538. if light_tubewave3.state=1 and l11.state=2 then l11.state=1:l12.state=2:DMDFlush:DMD "black.jpg", "Nice", "Tuberide!", 3000:gotspot
  5539. if light_tubewave3.state=1 and l12.state=2 then l12.state=1:l13.state=2:DMDFlush:DMD "black.jpg", "Nice", "Tuberide!", 3000:gotspot
  5540. if light_tubewave3.state=1 and l13.state=2 then l13.state=1:l14.state=2:DMDFlush:DMD "black.jpg", "Nice", "Tuberide!", 3000:gotspot
  5541. if light_tubewave3.state=1 and l14.state=2 then l14.state=1:l15.state=2:DMDFlush:DMD "black.jpg", "Nice", "Tuberide!", 3000:gotspot
  5542. if light_tubewave3.state=1 and l15.state=2 then l15.state=1:l16.state=2:DMDFlush:DMD "black.jpg", "Nice", "Tuberide!", 3000:gotspot
  5543. if light_tubewave3.state=1 and l16.state=2 then l16.state=1:l17.state=2:DMDFlush:DMD "black.jpg", "Nice", "Tuberide!", 3000:gotspot
  5544. if light_tubewave3.state=1 and l17.state=2 then l17.state=1:l11.state=2:light_tubewave1.state=0:light_tubewave2.state=0:light_tubewave3.state=0:light_tubearrow3.state=0:l21.state=2:l22.state=2:l23.state=2:l31.state=2:l32.state=2:l33.state=2:Light_ramp_right_arrow.state=2:boards(CurrentPlayer)=0:TimerBoardwall1up.enabled=true:timerboardwall2up.enabled=true:gateramp.collidable=true:TargetEquip01.collidable=true:TargetEquip02.collidable=true:TargetEquip03.collidable=true:waxcount(currentplayer)=0:lightgotspot.state=2:Timerlightgotspot.enabled=true:light_ticket.state=0:light_plane.state=0:l12.state=0:l13.state=0:l14.state=0:l15.state=0:l16.state=0:l17.state=0:l61.state=0:addscore 1000000:StopSurfMode:DMDFlush:DMD "black.jpg", "Nice", "Tuberide!", 3000:gotspot'PauseBall:some heavy or all lights going on/off big final
  5545. gateramptube.collidable=true
  5546. end sub
  5547.  
  5548. sub bestbarrel_hit()
  5549. if Light_Tubearrow2.state=2 and light_tubewave2.state=2 and light_tubearrow1.state=0 then PuPlayer.playlistplayex paudio,"audiocallouts","best barrel ever dude.mp3",100, 1
  5550. if light_tubewave3.state=2 and Light_Tubearrow2.state=0 and light_tubearrow1.state=0 then PuPlayer.playlistplayex paudio,"audiocallouts","best barrel ever dude.mp3",100, 1
  5551. end sub
  5552.  
  5553.  
  5554.  
  5555. sub gotspot()
  5556. dim waittime
  5557. waittime=1500
  5558. vpmtimer.addtimer waittime, "PlaySound """", 0, 1, 0, 0, 0, 0, 0 '"
  5559. gotspotkicker.enabled=true
  5560. light_tubewave1.state=0:light_tubewave2.state=0:light_tubewave3.state=0:light_tubearrow3.state=0
  5561. l21.state=2:l22.state=2:l23.state=2:l31.state=2:l32.state=2:l33.state=2
  5562. Light_ramp_right_arrow.state=2
  5563. spotmastered(CurrentPlayer)=spotmastered(CurrentPlayer)+1
  5564. boards(CurrentPlayer)=0
  5565. TimerBoardwall1up.enabled=true:timerboardwall2up.enabled=true
  5566. gateramp.collidable=true
  5567. TargetEquip01.collidable=true:TargetEquip02.collidable=true:TargetEquip03.collidable=true
  5568. waxcount(currentplayer)=0
  5569. lightgotspot.state=2:Timerlightgotspot.enabled=true
  5570. light_ticket.state=0:light_plane.state=0
  5571. l61.state=0
  5572. if spotmastered(CurrentPlayer)=1 then addscore 1000000
  5573. if spotmastered(CurrentPlayer)=2 then addscore 2000000
  5574. if spotmastered(CurrentPlayer)=3 then addscore 3000000
  5575. if spotmastered(CurrentPlayer)=4 then addscore 4000000
  5576. if spotmastered(CurrentPlayer)=5 then addscore 5000000
  5577. if spotmastered(CurrentPlayer)=6 then addscore 6000000
  5578. if spotmastered(CurrentPlayer)=7 then addscore 10000000
  5579.  
  5580. StopSurfMode
  5581. awardextraball
  5582. progress(CurrentPlayer)=0
  5583. ripcurl.enabled=true
  5584.  
  5585. ' PauseBall:StartDMDMiniGame - maybe soemtimes later
  5586. DOF 105, DOFOn
  5587.  
  5588. select case int (rnd*3)+1
  5589. Case 1 : PuPlayer.playlistplayex pAudio,"audiocheers","cheer1.mp3",100,1
  5590. Case 2 : PuPlayer.playlistplayex pAudio,"audiocheers","cheer2.mp3",100,1
  5591. Case 3 : PuPlayer.playlistplayex pAudio,"audiocheers","cheer3.mp3",100,1
  5592. end select
  5593. gotspotbonuscount
  5594. end sub
  5595.  
  5596.  
  5597. sub Timerlightgotspot_timer()
  5598. Timerlightgotspot.Enabled=False
  5599. lightgotspot.state=0
  5600. end sub
  5601.  
  5602. sub gotspotkicker_hit()
  5603. PuPlayer.playlistplayex pBackglass,"videomaster","",100,2
  5604. gotspottimer.enabled=true
  5605. end Sub
  5606.  
  5607. sub gotspottimer_timer()
  5608. gotspotkicker.kick 0,1:playsound "fx_ball_drop0"
  5609. gotspottimer.enabled=false:gotspotkicker.enabled=false
  5610. DMDFlush:DMD "black.jpg", "You really OWNED it!", "travel on!", 3500
  5611. currentplayerbonusstat
  5612. PuPlayer.playlistplayex pMusic,"musicmainmode","",100, 1
  5613. TimerBoardwall3down.Enabled = true
  5614. end Sub
  5615.  
  5616.  
  5617.  
  5618. sub gotspotbonuscount()
  5619. dim waittime
  5620. waittime=0
  5621. PuPlayer.playlistplayex pAudio,"audioclear","clear.mp3",100,1
  5622. 'Bonuscount + calculation.
  5623. PuPlayer.playlistplayex pMusic,"musicdiv","best.mp3",100, 1
  5624. playsound "wusha"
  5625. 'endlesssummerbonus
  5626. if endlesssummerbonuspre>0 then
  5627. waittime=waittime+1800
  5628. AwardPoints = endlesssummerbonuspre * 10000
  5629. TotalBonus = TotalBonus + AwardPoints
  5630. vpmtimer.addtimer waittime, "PlaySound ""wush0"", 0, 1, 0, 0, 0, 0, 0 '"
  5631.  
  5632. Select Case Int(Rnd * 12) + 1
  5633. Case 1:DMD "bon1.wmv", "Endlesssummer Bonus", awardpoints, 1500
  5634. Case 2:DMD "bon2.wmv", "Endlesssummer Bonus", awardpoints, 1500
  5635. Case 3:DMD "bon3.wmv", "Endlesssummer Bonus", awardpoints, 1500
  5636. Case 4:DMD "bon4.wmv", "Endlesssummer Bonus", awardpoints, 1500
  5637. Case 5:DMD "bon5.wmv", "Endlesssummer Bonus", awardpoints, 1500
  5638. Case 6:DMD "bon6.wmv", "Endlesssummer Bonus", awardpoints, 1500
  5639. Case 7:DMD "bon7.wmv", "Endlesssummer Bonus", awardpoints, 1500
  5640. Case 8:DMD "bon8.wmv", "Endlesssummer Bonus", awardpoints, 1500
  5641. Case 9:DMD "bon9.wmv", "Endlesssummer Bonus", awardpoints, 1500
  5642. Case 10:DMD "bon10.wmv", "Endlesssummer Bonus", awardpoints, 1500
  5643. Case 11:DMD "bon11.wmv", "Endlesssummer Bonus", awardpoints, 1500
  5644. Case 12:DMD "bon12.wmv", "Endlesssummer Bonus", awardpoints, 1500
  5645. End Select
  5646. end If
  5647.  
  5648.  
  5649. 'skeetbonus
  5650. if skeetbonuspre>0 then
  5651. waittime=waittime+1800
  5652. AwardPoints = skeetbonuspre * 10000
  5653. TotalBonus = TotalBonus + Awardpoints
  5654.  
  5655. Select Case Int(Rnd * 12) + 1
  5656. Case 1:DMD "bon1.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  5657. Case 2:DMD "bon2.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  5658. Case 3:DMD "bon3.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  5659. Case 4:DMD "bon4.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  5660. Case 5:DMD "bon5.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  5661. Case 6:DMD "bon6.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  5662. Case 7:DMD "bon7.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  5663. Case 8:DMD "bon8.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  5664. Case 9:DMD "bon9.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  5665. Case 10:DMD "bon10.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  5666. Case 11:DMD "bon11.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  5667. Case 12:DMD "bon12.wmv", "Skeetsurfing Bonus", awardpoints, 1500
  5668. End Select
  5669. vpmtimer.addtimer waittime, "PlaySound ""wush1"", 0, 1, 0, 0, 0, 0, 0 '"
  5670. end if
  5671.  
  5672. 'sexwaxfrenzybonus
  5673. if sexwaxfrenzybonuspre>0 then
  5674. waittime=waittime+1800
  5675. AwardPoints = sexwaxfrenzybonuspre * 10000
  5676. TotalBonus = TotalBonus + AwardPoints
  5677. vpmtimer.addtimer waittime, "PlaySound ""wush2"", 0, 1, 0, 0, 0, 0, 0 '"
  5678.  
  5679. Select Case Int(Rnd * 12) + 1
  5680. Case 1:DMD "bon1.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  5681. Case 2:DMD "bon2.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  5682. Case 3:DMD "bon3.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  5683. Case 4:DMD "bon4.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  5684. Case 5:DMD "bon5.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  5685. Case 6:DMD "bon6.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  5686. Case 7:DMD "bon7.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  5687. Case 8:DMD "bon8.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  5688. Case 9:DMD "bon9.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  5689. Case 10:DMD "bon10.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  5690. Case 11:DMD "bon11.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  5691. Case 12:DMD "bon12.wmv", "SexWaxFrenzy Bonus", awardpoints, 1500
  5692. End Select
  5693.  
  5694. end If
  5695.  
  5696. 'offthelipbonus
  5697. if offthelipbonuspre>0 then
  5698. waittime=waittime+1800
  5699. AwardPoints = offthelipbonuspre * 10000
  5700. TotalBonus = Totalbonus + AwardPoints
  5701.  
  5702. Select Case Int(Rnd * 12) + 1
  5703. Case 1:DMD "bon1.wmv", "Off the lip Bonus", awardpoints, 1500
  5704. Case 2:DMD "bon2.wmv", "Off the lip Bonus", awardpoints, 1500
  5705. Case 3:DMD "bon3.wmv", "Off the lip Bonus", awardpoints, 1500
  5706. Case 4:DMD "bon4.wmv", "Off the lip Bonus", awardpoints, 1500
  5707. Case 5:DMD "bon5.wmv", "Off the lip Bonus", awardpoints, 1500
  5708. Case 6:DMD "bon6.wmv", "Off the lip Bonus", awardpoints, 1500
  5709. Case 7:DMD "bon7.wmv", "Off the lip Bonus", awardpoints, 1500
  5710. Case 8:DMD "bon8.wmv", "Off the lip Bonus", awardpoints, 1500
  5711. Case 9:DMD "bon9.wmv", "Off the lip Bonus", awardpoints, 1500
  5712. Case 10:DMD "bon10.wmv", "Off the lip Bonus", awardpoints, 1500
  5713. Case 11:DMD "bon11.wmv", "Off the lip Bonus", awardpoints, 1500
  5714. Case 12:DMD "bon12.wmv", "Off the lip Bonus", awardpoints, 1500
  5715. End Select
  5716. vpmtimer.addtimer waittime, "PlaySound ""wush3"", 0, 1, 0, 0, 0, 0, 0 '"
  5717.  
  5718. end If
  5719.  
  5720. 'loopbonus
  5721. if loopbonuspre>0 then
  5722. waittime=waittime+1800
  5723. AwardPoints = loopBonuspre * 10000
  5724. TotalBonus = TotalBonus + Awardpoints
  5725.  
  5726. Select Case Int(Rnd * 12) + 1
  5727. Case 1:DMD "bon1.wmv", "Loop Bonus", awardpoints, 1500
  5728. Case 2:DMD "bon2.wmv", "Loop Bonus", awardpoints, 1500
  5729. Case 3:DMD "bon3.wmv", "Loop Bonus", awardpoints, 1500
  5730. Case 4:DMD "bon4.wmv", "Loop Bonus", awardpoints, 1500
  5731. Case 5:DMD "bon5.wmv", "Loop Bonus", awardpoints, 1500
  5732. Case 6:DMD "bon6.wmv", "Loop Bonus", awardpoints, 1500
  5733. Case 7:DMD "bon7.wmv", "Loop Bonus", awardpoints, 1500
  5734. Case 8:DMD "bon8.wmv", "Loop Bonus", awardpoints, 1500
  5735. Case 9:DMD "bon9.wmv", "Loop Bonus", awardpoints, 1500
  5736. Case 10:DMD "bon10.wmv", "Loop Bonus", awardpoints, 1500
  5737. Case 11:DMD "bon11.wmv", "Loop Bonus", awardpoints, 1500
  5738. Case 12:DMD "bon12.wmv", "Loop Bonus", awardpoints, 1500
  5739. End Select
  5740. vpmtimer.addtimer waittime, "PlaySound ""wush4"", 0, 1, 0, 0, 0, 0, 0 '"
  5741.  
  5742.  
  5743. end if
  5744.  
  5745. 'aerialbonus
  5746. if aerialbonuspre>0 then
  5747. waittime=waittime+1800
  5748. AwardPoints = aerialbonuspre * 10000
  5749. TotalBonus = TotalBonus + AwardPoints
  5750.  
  5751. Select Case Int(Rnd * 12) + 1
  5752. Case 1:DMD "bon1.wmv", "Aerial 360 Bonus", awardpoints, 1500
  5753. Case 2:DMD "bon2.wmv", "Aerial 360 Bonus", awardpoints, 1500
  5754. Case 3:DMD "bon3.wmv", "Aerial 360 Bonus", awardpoints, 1500
  5755. Case 4:DMD "bon4.wmv", "Aerial 360 Bonus", awardpoints, 1500
  5756. Case 5:DMD "bon5.wmv", "Aerial 360 Bonus", awardpoints, 1500
  5757. Case 6:DMD "bon6.wmv", "Aerial 360 Bonus", awardpoints, 1500
  5758. Case 7:DMD "bon7.wmv", "Aerial 360 Bonus", awardpoints, 1500
  5759. Case 8:DMD "bon8.wmv", "Aerial 360 Bonus", awardpoints, 1500
  5760. Case 9:DMD "bon9.wmv", "Aerial 360 Bonus", awardpoints, 1500
  5761. Case 10:DMD "bon10.wmv", "Aerial 360 Bonus", awardpoints, 1500
  5762. Case 11:DMD "bon11.wmv", "Aerial 360 Bonus", awardpoints, 1500
  5763. Case 12:DMD "bon12.wmv", "Aerial 360 Bonus", awardpoints, 1500
  5764. End Select
  5765. vpmtimer.addtimer waittime, "PlaySound ""wush5"", 0, 1, 0, 0, 0, 0, 0 '"
  5766. end if
  5767.  
  5768. 'diversitymultiplier
  5769. AwardPoints = diversitymultiplier
  5770. 'TotalBonus = TotalBonus * diversitymultiplier
  5771. Select Case Int(Rnd * 12) + 1
  5772. Case 1:DMD "bon1.wmv", "variety Multiplier", awardpoints, 1500
  5773. Case 2:DMD "bon2.wmv", "variety Multiplier", awardpoints, 1500
  5774. Case 3:DMD "bon3.wmv", "variety Multiplier", awardpoints, 1500
  5775. Case 4:DMD "bon4.wmv", "variety Multiplier", awardpoints, 1500
  5776. Case 5:DMD "bon5.wmv", "variety Multiplier", awardpoints, 1500
  5777. Case 6:DMD "bon6.wmv", "variety Multiplier", awardpoints, 1500
  5778. Case 7:DMD "bon7.wmv", "variety Multiplier", awardpoints, 1500
  5779. Case 8:DMD "bon8.wmv", "variety Multiplier", awardpoints, 1500
  5780. Case 9:DMD "bon9.wmv", "variety Multiplier", awardpoints, 1500
  5781. Case 10:DMD "bon10.wmv", "variety Multiplier", awardpoints, 1500
  5782. Case 11:DMD "bon11.wmv", "variety Multiplier", awardpoints, 1500
  5783. Case 12:DMD "bon12.wmv", "variety Multiplier", awardpoints, 1500
  5784. End Select
  5785.  
  5786. ' calculate the totalbonus
  5787. TotalBonus = TotalBonus * diversitymultiplier
  5788.  
  5789.  
  5790.  
  5791. ' Add the bonus to the score
  5792. DMD "bonustotal.wmv", "TOTAL BONUS X " &diversitymultiplier, "= "&TotalBonus , 3000
  5793.  
  5794. vpmtimer.addtimer waittime, "PlaySound ""yahoo"", 0, 1, 0, 0, 0, 0, 0 '": endlesssummerbonuspre=0:skeetbonuspre=0:sexwaxfrenzybonuspre=0:offthelipbonuspre=0:loopbonuspre=0:aerialbonuspre=0
  5795. AddScore TotalBonus
  5796. DMD "black.jpg", "YOU really OWNED IT!", "travel on!", 3500
  5797. end sub
  5798.  
  5799.  
  5800.  
  5801.  
  5802. '******magnet lucky outlane right************
  5803.  
  5804. sub trigger2_hit()
  5805. if ballsonplayfield = 1 then RandomSave':trigger2.enabled=false:triggerpause.enabled=true
  5806. end sub
  5807.  
  5808. Sub RandomSave()
  5809.  
  5810. dim l
  5811. l = int (rnd*3)+1
  5812. if l = 3 then PuPlayer.playlistplayex paudio,"lucky","",100,1:mMagna2Save.MagnetOn = 1:magnettimer2.enabled=1:wallsave.collidable=true:DMDFlush:DMD "black.jpg", "LUCKY", "SAVE", 2000
  5813.  
  5814.  
  5815. End Sub
  5816.  
  5817. Dim mMagna2Save
  5818.  
  5819. Set mMagna2Save = New cvpmMagnet : With mMagna2Save
  5820. .InitMagnet Magna2, 15
  5821. End With
  5822.  
  5823. Sub Magna2_Hit():mMagna2Save.AddBall ActiveBall: End Sub
  5824.  
  5825. Sub Magna2_UnHit(): mMagna2Save.RemoveBall ActiveBall: End Sub
  5826.  
  5827. sub magnettimer2_timer()
  5828. wallsave.collidable=false
  5829. magnettimer2.enabled=0
  5830. mMagna2Save.MagnetOn = 0
  5831. playsound "fx_ball_drop0"
  5832. end Sub
  5833.  
  5834.  
  5835.  
  5836. '************* equip, boards, ticket, flight ready ***********
  5837.  
  5838. sub timerflight_timer()
  5839. kickerticket.drawstyle=0
  5840. kickerflight.drawstyle=0
  5841. kickerticket.kick 170,1:playsound "fx_ball_drop0"
  5842. kickerflight.kick 190,1:playsound "fx_ball_drop0"
  5843. kickerflight.enabled=false
  5844. light_planearrow.state=0:light_waxbowl.state=2
  5845. waxcount10.visible=true
  5846. addscore 2000
  5847. timerflight.enabled=false:Triggerflight.enabled=false
  5848. kickerflight.enabled=false:kickerticket.enabled=false
  5849.  
  5850. end sub
  5851.  
  5852.  
  5853.  
  5854. '***** order flight ticket *****
  5855.  
  5856. sub TargetTriggershot_right_hit()
  5857. if Light_Triggershot_right.State=0 then PlaySound "Dong", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  5858. if Light_Triggershot_right.State=2 then
  5859. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 4, ""FN"":11, ""VL"":40 }"
  5860. Light_Ticketarrow.state=2:ripcurl.enabled=0
  5861. light_ticket.state=2
  5862. light_triggershot_right.state=0
  5863. kickerticket.enabled=true
  5864. pausesong.enabled=true
  5865. AddScore 10000
  5866. DMDFlush:DMD "black.jpg", "Ticket ordered", "Get it!", 1000
  5867. PuPlayer.playlistplayex paudio,"audiocallouts","get_your_ticket.mp3",100,1
  5868. end if
  5869. end sub
  5870.  
  5871. sub pausesong_timer()
  5872. PuPlayer.SendMSG "{ ""mt"":301, ""SN"": 4, ""FN"":11, ""VL"":100 }"
  5873. pausesong.enabled=false
  5874. end sub
  5875.  
  5876.  
  5877. '***** get flight ticket ******
  5878.  
  5879. sub TriggerMagna_hit()
  5880. if Light_Ticketarrow.state=2 then kickerticket.enabled=true:triggermagna.enabled=false
  5881. end sub
  5882.  
  5883.  
  5884.  
  5885. '***** flight start + release ball + start tuberiding *****
  5886.  
  5887.  
  5888. sub triggerflight_hit()
  5889. if light_planearrow.state=2 then timerflight.enabled=true:light_plane.state=1:kickerflight.enabled=true:triggerflight.enabled=false
  5890. trigger_waxbowl_counter.enabled=true:audiowait4.enabled=false
  5891. DMDFlush:DMD "black.jpg", "Now wax", "your boards!", 3000
  5892. if BallsOnPlayfield=1 then PuPlayer.playlistplayex pBackglass,"videodiv","flight_single.mp4",0,1:PuPlayer.playlistplayex pAudio,"audioevents","takeoff.mp3",100,1:audiowait1.enabled=true
  5893. if BallsOnPlayfield=2 then PuPlayer.playlistplayex pBackglass,"videodiv","flight_double.mp4",0,1:PuPlayer.playlistplayex pAudio,"audioevents","takeoff.mp3",100,1:audiowait2.enabled=true
  5894. ripcurl.enabled=true:ripcurl2.enabled=true
  5895. end sub
  5896.  
  5897. sub audiowait1_timer()
  5898. PuPlayer.playlistplayex paudio,"audiocallouts","waxyourboards.mp3",100,1
  5899. audiowait1.enabled=false
  5900. end Sub
  5901.  
  5902. sub audiowait2_timer()
  5903. PuPlayer.playlistplayex paudio,"audiocallouts","waxyourboards.mp3",100,1
  5904. audiowait2.enabled=false
  5905. end sub
  5906.  
  5907. '************ kicker *********
  5908.  
  5909. sub kickerticket_hit()
  5910. Light_Ticketarrow.state=0
  5911. Light_ticket.state=1
  5912. Light_planearrow.state=2
  5913. light_plane.state=2
  5914. addscore 3000
  5915. BallRelease.CreateBall
  5916. BallRelease.Kick 90, 7
  5917. BallsOnPlayfield = BallsOnPlayfield + 1
  5918. triggerflight.enabled=true:TimerBoardwall1down.enabled=true:gateramp.collidable=false:ripcurl2.enabled=false
  5919. chilloutthemusic
  5920. PuPlayer.playlistplayex paudio,"audiocallouts","security advice",100,1:audiowait4.enabled=true
  5921. DMDFlush:DMD "black.jpg", "Checked in,", "go boarding!", 3000
  5922. DOF 105, DOFOn
  5923. end sub
  5924.  
  5925. sub audiowait4_timer()
  5926. PuPlayer.playlistplayex paudio,"audiocallouts","go_boarding1.mp3",100,1
  5927. audiowait4.enabled=false
  5928. end sub
  5929.  
  5930.  
  5931.  
  5932. sub kickerflight_hit()
  5933. light_planearrow.state=0:light_plane.state=1:timerflight.enabled=true
  5934. end sub
  5935.  
  5936.  
  5937.  
  5938.  
  5939. '********** moving boardwalls up and down **************
  5940.  
  5941. Dim Boardwall1XStep
  5942.  
  5943. Sub TimerBoardwall1up_Timer
  5944. Boardwall1XStep = Boardwall1XStep + 1
  5945. Select Case Boardwall1XStep
  5946.  
  5947. Case 1:
  5948. Boardwall1.transY = -90:boardwall1.collidable=true:boardwall1.visible=true
  5949. Case 2:
  5950. Boardwall1.transY = -80
  5951. Case 3:
  5952. Boardwall1.transY = -70
  5953. Case 4:
  5954. Boardwall1.transY = -60
  5955. Case 5:
  5956. Boardwall1.transY = -50
  5957. Case 6:
  5958. Boardwall1.transY = -40
  5959. Case 7:
  5960. Boardwall1.transY = -30
  5961. Case 8:
  5962. Boardwall1.transY = -20
  5963. Case 9:
  5964. Boardwall1.transY = -10
  5965. Case 10:
  5966. Boardwall1.transY = 0: DOF 105, DOFOff
  5967.  
  5968. TimerBoardwall1up.Enabled = False
  5969. Boardwall1XStep=0
  5970. End select
  5971.  
  5972. End Sub
  5973.  
  5974. Sub TimerBoardwall1down_Timer
  5975. Boardwall1XStep = Boardwall1XStep + 1
  5976. Select Case Boardwall1XStep
  5977. Case 1:
  5978. Boardwall1.transY = -10
  5979. Case 2:
  5980. Boardwall1.transY = -20
  5981. Case 3:
  5982. Boardwall1.transY = -30
  5983. Case 4:
  5984. Boardwall1.transY = -40
  5985. Case 5:
  5986. Boardwall1.transY = -50
  5987. Case 6:
  5988. Boardwall1.transY = -60
  5989. Case 7:
  5990. Boardwall1.transY = -70
  5991. Case 8:
  5992. Boardwall1.transY = -80
  5993. Case 9:
  5994. Boardwall1.transY = -90:boardwall1.collidable=false:boardwall1.visible=false:DOF 105, DOFOff
  5995.  
  5996. TimerBoardwall1down.Enabled = False
  5997. Boardwall1XStep = 0
  5998. End Select
  5999.  
  6000. End Sub
  6001.  
  6002. sub Boardwall1_hit()
  6003. playsound "fx_metalhit", 0, 1, Audiopan(ActiveBall)
  6004. end sub
  6005.  
  6006.  
  6007. Dim Boardwall2XStep
  6008.  
  6009. Sub TimerBoardwall2up_Timer
  6010. Boardwall2XStep = Boardwall2XStep + 1
  6011. Select Case Boardwall2XStep
  6012.  
  6013. Case 1:
  6014. Boardwall2.transY = -90:boardwall2.collidable=true:boardwall2.visible=true
  6015. Case 2:
  6016. Boardwall2.transY = -80
  6017. Case 3:
  6018. Boardwall2.transY = -70
  6019. Case 4:
  6020. Boardwall2.transY = -60
  6021. Case 5:
  6022. Boardwall2.transY = -50
  6023. Case 6:
  6024. Boardwall2.transY = -40
  6025. Case 7:
  6026. Boardwall2.transY = -30
  6027. Case 8:
  6028. Boardwall2.transY = -20
  6029. Case 9:
  6030. Boardwall2.transY = -10
  6031. Case 10:
  6032. Boardwall2.transY = 0:DOF 105, DOFOff
  6033.  
  6034. TimerBoardwall2up.Enabled = False
  6035. Boardwall2XStep=0
  6036. End select
  6037.  
  6038. End Sub
  6039.  
  6040. Sub TimerBoardwall2down_Timer
  6041. Boardwall2XStep = Boardwall2XStep + 1
  6042. Select Case Boardwall2XStep
  6043. Case 1:
  6044. Boardwall2.transY = -10
  6045. Case 2:
  6046. Boardwall2.transY = -20
  6047. Case 3:
  6048. Boardwall2.transY = -30
  6049. Case 4:
  6050. Boardwall2.transY = -40
  6051. Case 5:
  6052. Boardwall2.transY = -50
  6053. Case 6:
  6054. Boardwall2.transY = -60
  6055. Case 7:
  6056. Boardwall2.transY = -70
  6057. Case 8:
  6058. Boardwall2.transY = -80
  6059. Case 9:
  6060. Boardwall2.transY = -90:boardwall2.collidable=false:boardwall2.visible=false:DOF 105, DOFOff
  6061.  
  6062. TimerBoardwall2down.Enabled = False
  6063. Boardwall2XStep = 0
  6064. End Select
  6065.  
  6066. End Sub
  6067.  
  6068. sub Boardwall2_hit()
  6069. playsound "fx_metalhit", 0, 1, Audiopan(ActiveBall)
  6070. end sub
  6071.  
  6072. '***** turntable in curl ******
  6073. dim spinner
  6074. Set spinner = New cvpmTurntable
  6075. With spinner
  6076. .InitTurntable spindisc, 40
  6077. .SpinDown = 10
  6078. .CreateEvents "spinner"
  6079. End With
  6080.  
  6081.  
  6082.  
  6083. '**********************
  6084. ' Flipper Lanes: WAVE
  6085. '**********************
  6086.  
  6087. Sub LeftOutlane_hit
  6088. PlaySound "fx_sensor", 0, 1, Audiopan(ActiveBall)
  6089. addscore 100
  6090. if l1.state=0 then l1.State = 1:CheckLanes
  6091. End Sub
  6092.  
  6093. Sub LeftInLane_Hit
  6094. PlaySound "fx_sensor", 0, 1, Audiopan(ActiveBall)
  6095. addscore 100
  6096. if l2.state=0 then l2.State = 1:CheckLanes
  6097. End Sub
  6098.  
  6099. Sub RightInLane_Hit
  6100. PlaySound "fx_sensor", 0, 1, Audiopan(ActiveBall)
  6101. addscore 100
  6102. if l3.state=0 then l3.State = 1:CheckLanes
  6103. End Sub
  6104.  
  6105. Sub RightOutLane_Hit
  6106. PlaySound "fx_sensor", 0, 1, Audiopan(ActiveBall)
  6107. addscore 100
  6108. if l4.state=0 then l4.State = 1:CheckLanes
  6109. End Sub
  6110.  
  6111.  
  6112. Sub CheckLanes()
  6113. If l1.State + l2.State + l3.State + l4.State = 4 Then
  6114. DMDFlush:DMD "black.jpg", "re-entry activated", "W A V E", 3000
  6115. PuPlayer.playlistplayex paudio,"audiocallouts","backtolineupactivated.mp3",100,1
  6116. light_kickback.state=1
  6117. kickerleft.enabled=true
  6118. addscore 500
  6119. End If
  6120. End Sub
  6121.  
  6122.  
  6123.  
  6124. '***** rotate wave lights by flippers ******
  6125.  
  6126. Sub RotateLaneLightsLeft()
  6127. Dim wave
  6128. wave = l1.State
  6129. l1.state = l2.State
  6130. l2.State = l3.State
  6131. l3.State = l4.State
  6132. l4.State = wave
  6133. End Sub
  6134.  
  6135. Sub RotateLaneLightsRight()
  6136. Dim wave2
  6137. wave2 = l4.State
  6138. l4.state = l3.State
  6139. l3.State = l2.State
  6140. l2.State = l1.State
  6141. l1.State = wave2
  6142. End Sub
  6143.  
  6144.  
  6145.  
  6146. '***** spinners *****
  6147.  
  6148. sub Spinnerleft_Spin
  6149. PlaySound "fx_spinner", 0, 1.5, AudioPan(Spinnerleft), 0.25, 0, 0, 1, AudioFade(Spinnerleft):Addscore 50
  6150. end sub
  6151.  
  6152. sub Spinnerright_Spin
  6153. PlaySound "fx_spinner", 0, 1.5, AudioPan(Spinnerright), 0.25, 0, 0, 1, AudioFade(Spinnerright):Addscore 50
  6154. end sub
  6155.  
  6156.  
  6157. '***** gates *****
  6158.  
  6159. sub gateleft_hit
  6160. PlaySound "fx_gate", 0, 1, Audiopan(ActiveBall)
  6161. end Sub
  6162.  
  6163. sub gateright_hit
  6164. PlaySound "fx_gate", 0, 1, Audiopan(ActiveBall)
  6165. end Sub
  6166.  
  6167. sub gateramptube_hit
  6168. PlaySound "fx_gate", 0, 1, Audiopan(ActiveBall)
  6169. end Sub
  6170.  
  6171.  
  6172.  
  6173. '***** wipeouts *****
  6174.  
  6175. Sub Trigger_wipeout_left_Hit
  6176.  
  6177. lightSeqDrainLeft.Play SeqDiagDownLeftOn, 40,1
  6178. StopSharkMode:sharkwait.enabled=false
  6179.  
  6180. if BallsOnPlayfield=1 then drainfun
  6181. DOF 900, DOFOff
  6182.  
  6183. drainwaittimer.enabled=true
  6184. End Sub
  6185.  
  6186. Sub Trigger_wipeout_center_Hit
  6187. 'lightSeqDrainCenter.Play SeqDownOn, 40,1 sometimes causes crashes when ball is too fast, why?
  6188. StopSharkMode:sharkwait.enabled=false
  6189.  
  6190. if BallsOnPlayfield=1 then drainfun
  6191. DOF 900, DOFOff
  6192.  
  6193. drainwaittimer2.enabled=true
  6194.  
  6195. End Sub
  6196.  
  6197. Sub Trigger_wipeout_right_Hit
  6198. lightSeqDrainRight.Play SeqDiagDownRightOn, 40,1
  6199. StopSharkMode:sharkwait.enabled=false
  6200.  
  6201. if BallsOnPlayfield=1 then drainfun
  6202. DOF 900, DOFOff
  6203.  
  6204. drainwaittimer.enabled=true
  6205. End Sub
  6206.  
  6207. sub drainwaittimer_timer()
  6208. if TimerESmode.Enabled=true and BallsOnPlayfield=0 then StopESMode
  6209. if Timerskeetmode.Enabled=true and BallsOnPlayfield=0 then StopSKEETMode
  6210. if sexwaxfrenzy.enabled=true and BallsOnPlayfield= 0 then StopSexwaxfrenzyMode
  6211.  
  6212. drainwaittimer.enabled=false
  6213. end sub
  6214.  
  6215. sub drainwaittimer2_timer()
  6216. if TimerESmode.Enabled=true and BallsOnPlayfield=0 then StopESMode
  6217. if Timerskeetmode.Enabled=true and BallsOnPlayfield=0 then StopSKEETMode
  6218. if sexwaxfrenzy.enabled=true and BallsOnPlayfield= 0 then StopSexwaxfrenzyMode
  6219.  
  6220. drainwaittimer2.enabled=false
  6221. end sub
  6222.  
  6223. sub drainfun
  6224. if Light_extraball.state <> 2 then
  6225. PuPlayer.playlistplayex pTopper, "topper","topper2.mp4",100,1
  6226. DMDFlush:DMD "black.jpg", "HEAVY", "Wipeout!", 6000
  6227. end if
  6228.  
  6229. dim c
  6230. c = int (rnd*20)+1
  6231.  
  6232. if light_extraball.state=0 and c = 20 then PuPlayer.playlistplayex paudio,"drain2","",80, 1:PuPlayer.playlistplayex pBackglass,"videowipeouts","",0,1
  6233. if light_extraball.state=0 and c <> 20 then PuPlayer.playlistplayex paudio,"drains","",80, 1:PuPlayer.playlistplayex pBackglass,"videowipeouts","",0,1
  6234. if light_extraball.state=1 then PuPlayer.playlistplayex paudio,"drains","",80, 1:PuPlayer.playlistplayex pBackglass,"videowipeouts","",0,1
  6235. end sub
  6236.  
  6237.  
  6238.  
  6239.  
  6240. sub wirerampright_hit()
  6241. PlaySound "metalrolling", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  6242. end Sub
  6243.  
  6244.  
  6245. sub ripcurl_hit()
  6246. PuPlayer.playlistplayex pAudio,"ripcurl","",100, 1:addscore 5000
  6247. end sub
  6248.  
  6249. sub ripcurl2_hit()
  6250. PuPlayer.playlistplayex pAudio,"ripcurl","",100, 1:addscore 5000
  6251. end sub
  6252.  
  6253.  
  6254. '************** silversurfer rotate ***************
  6255. 'surfer
  6256. sub surferrottrigger_hit()
  6257. surferrottrigger.enabled=false
  6258. silversurfertimer.enabled=true
  6259. PlaySound "spin", 0, Vol(ActiveBall), AudioPan(ActiveBall), 0, Pitch(ActiveBall), 1, 0, AudioFade(ActiveBall)
  6260. surfertimer.enabled=true
  6261. end sub
  6262.  
  6263.  
  6264. sub surfertimer_timer()
  6265. surferrottrigger.enabled=true
  6266. end sub
  6267.  
  6268.  
  6269. Dim silversurferXStep
  6270.  
  6271. Sub silversurfertimer_Timer
  6272. silversurferXStep = silversurferXStep + 1
  6273. Select Case silversurferXStep
  6274.  
  6275. Case 1:
  6276. silversurfer.objrotz = 190
  6277. Case 2:
  6278. silversurfer.objrotz = 210
  6279. Case 3:
  6280. silversurfer.objrotz = 240
  6281. Case 4:
  6282. silversurfer.objrotz = 280
  6283. Case 5:
  6284. silversurfer.objrotz = 330
  6285. Case 6:
  6286. silversurfer.objrotz = 15
  6287. Case 7:
  6288. silversurfer.objrotz = 68
  6289. Case 8:
  6290. silversurfer.objrotz = 110
  6291. Case 9:
  6292. silversurfer.objrotz = 151
  6293. Case 10:
  6294. silversurfer.objrotz = 191
  6295. Case 11:
  6296. silversurfer.objrotz = 230
  6297. Case 12:
  6298. silversurfer.objrotz = 268
  6299. Case 13:
  6300. silversurfer.objrotz = 305
  6301. Case 14:
  6302. silversurfer.objrotz = 341
  6303. Case 15:
  6304. silversurfer.objrotz = 16
  6305. Case 16:
  6306. silversurfer.objrotz = 50
  6307. Case 17:
  6308. silversurfer.objrotz = 83
  6309. Case 18:
  6310. silversurfer.objrotz = 115
  6311. Case 19:
  6312. silversurfer.objrotz = 146
  6313. Case 20:
  6314. silversurfer.objrotz = 176
  6315. Case 21:
  6316. silversurfer.objrotz = 205
  6317. Case 22:
  6318. silversurfer.objrotz = 233
  6319. Case 23:
  6320. silversurfer.objrotz = 260
  6321. Case 24:
  6322. silversurfer.objrotz = 286
  6323. Case 25:
  6324. silversurfer.objrotz = 311
  6325. Case 26:
  6326. silversurfer.objrotz = 335
  6327. Case 27:
  6328. silversurfer.objrotz = 358
  6329. Case 28:
  6330. silversurfer.objrotz = 20
  6331. Case 29:
  6332. silversurfer.objrotz = 41
  6333. Case 30:
  6334. silversurfer.objrotz = 61
  6335. Case 31:
  6336. silversurfer.objrotz = 80
  6337. Case 32:
  6338. silversurfer.objrotz = 98
  6339. Case 33:
  6340. silversurfer.objrotz = 115
  6341. Case 34:
  6342. silversurfer.objrotz = 131
  6343. Case 35:
  6344. silversurfer.objrotz = 146
  6345. Case 36:
  6346. silversurfer.objrotz = 160
  6347. Case 37:
  6348. silversurfer.objrotz = 175
  6349. Case 38:
  6350. silversurfer.objrotz = 180
  6351.  
  6352. silversurfertimer.Enabled = False
  6353. silversurferXStep=0
  6354. End select
  6355.  
  6356. End Sub
  6357.  
  6358.  
  6359.  
  6360. '*********************************************************
  6361. ' board shake
  6362. '*********************************************************
  6363.  
  6364.  
  6365. Dim cBall1, cBall2, pMod, rmmod
  6366.  
  6367.  
  6368. Dim mMagnet, mMagnet2
  6369.  
  6370.  
  6371. Set mMagnet = new cvpmMagnet
  6372. With mMagnet
  6373. .InitMagnet WobbleMagnet, 5
  6374. .Size = 100
  6375. .MagnetOn = True
  6376. End With
  6377.  
  6378. Set mMagnet2 = new cvpmMagnet
  6379. With mMagnet
  6380. .InitMagnet WobbleMagnet2, 5
  6381. .Size = 100
  6382. .MagnetOn = True
  6383. End With
  6384.  
  6385.  
  6386.  
  6387. WobbleInit
  6388.  
  6389.  
  6390. 'Includes stripped down version of my reverse slope scripting for a single ball
  6391. Dim ngrav, ngravmod, slopemod, nslope ',pslope
  6392.  
  6393. Sub WobbleInit
  6394. nslope = Table1.SlopeMin +((Table1.SlopeMax - Table1.SlopeMin) * Table1.GlobalDifficulty)
  6395. ' nslope = pslope
  6396. 'Pcup1.rotx=nslope
  6397. 'Pcup2.rotx=nslope
  6398.  
  6399.  
  6400. slopemod = 2*nslope 'pslope + nslope
  6401. ngravmod = 60/aWobbleTimer.interval
  6402. ngrav = slopemod * .0905 * Table1.Gravity / ngravmod
  6403. pMod = .15 'percentage of hit power transfered to captive wobble ball
  6404. Set cBall1 = cKicker1.createball:cball1.image = "blank":cKicker1.Kick 0,0 ':mMagnet1.addball cball1
  6405. Set cBall2 = cKicker2.createball:cball2.image = "blank":ckicker2.Kick 0,0 ':mMagnet2.addball cball2
  6406. aWobbleTimer.enabled = 1
  6407. End Sub
  6408.  
  6409. Sub aWobbleTimer_Timer 'modifier for slope reversal/cancellation
  6410. cBall1.Vely = cBall1.VelY-ngrav
  6411. cBall2.Vely = cBall2.VelY-ngrav
  6412. Primitive004.objrotx = (ckicker1.y - cball1.y)+180'*rmmod
  6413. Primitive004.objroty = (cball1.x - ckicker1.x)'*rmmod
  6414. Primitive003.objrotx = -(cKicker2.y - cBall2.y)'*rmmod
  6415. Primitive003.objroty = -(cBall2.x - cKicker2.x)'*rmmod
  6416.  
  6417. End Sub
  6418.  
  6419.  
  6420.  
  6421. '************** videomode **************
  6422.  
  6423. sub waitforendmode_timer()
  6424. if ballsonplayfield=1 then
  6425. modecount=modecount+1:videomodecheck
  6426. end If
  6427. waitforendmode.enabled=false
  6428. end Sub
  6429.  
  6430.  
  6431. sub videomodecheck()
  6432. if modecount = 3 then chancevideomode
  6433. if modecount = 6 then chancevideomode
  6434. if modecount = 9 then chancevideomode
  6435. if modecount = 12 then chancevideomode
  6436. end sub
  6437.  
  6438. sub chancevideomode()
  6439. PuPlayer.playlistplayex pMusic,"musicdiv","chancevideomode.mp3",100, 1
  6440. PuPlayer.playlistplayex pBackglass,"videodiv","videomode_countdown.mp4",0, 1
  6441. timerchancevideomode.enabled=true
  6442. ' 'start timercountdown on backglass:PuPlayer.playlistplayex pBackglass,"videodiv","countdown.mp4",100, 1
  6443. DMDFlush:DMD "black.jpg", "hurry up! chance for", "videomode!", 10000
  6444. kickervideomode.enabled=true
  6445. kickervideomode.DrawStyle=1:kickervideomode.enabled=true:shark.visible=false '0=Hidden, 1=Hole, 2=Cup, 3=Invisible
  6446. videomodelock.state=2
  6447. flasherchancevideomode.visible=true
  6448. For each xx in aPlasticsBlack:xx.isdropped=false:Next
  6449. wall_inv_skt.isdropped=false:wall_inv_es.isdropped=false
  6450. gateramp.collidable=false:TargetTriggershot_right.collidable=false:targetequip01.collidable=false:targetequip02.collidable=false:targetequip03.collidable=false:bumperwall.collidable=true:bumper.collidable=false
  6451. TargetSkeetmode01.collidable=false:TargetSkeetmode02.collidable=false:TargetSkeetmode02.collidable=false:TargetSkeetmode02.collidable=false
  6452. For each xx in aTargetsES:xx.blenddisablelighting=0 : Next
  6453. for each xx in aTargetsSKEET:xx.blenddisablelighting=0:next
  6454. end sub
  6455.  
  6456.  
  6457. sub Timerchancevideomode_timer()
  6458. DMDFlush:DMD "black.jpg", "you missed chance", "for videomode", 3000
  6459. PuPlayer.playlistplayex pBackglass,"videodiv","videomode_missed.mp4",0, 1
  6460. kickervideomode.DrawStyle=0:kickervideomode.enabled=false:shark.visible=true
  6461. timerchancevideomode.enabled=false
  6462. PuPlayer.playlistplayex pMusic,"musicmainmode","",100, 1
  6463. PuPlayer.playlistplayex pBackglass,"videodiv","countdown.mp4",100, 1
  6464. videomodelock.state=0
  6465. flasherchancevideomode.visible=false
  6466. For each xx in aPlasticsBlack:xx.isdropped=true:Next
  6467. wall_inv_skt.isdropped=true:wall_inv_es.isdropped=true
  6468. gateramp.collidable=true:TargetTriggershot_right.collidable=true:targetequip01.collidable=true:targetequip02.collidable=true:targetequip03.collidable=true:bumperwall.collidable=false:bumper.collidable=true
  6469. TargetSkeetmode01.collidable=true:TargetSkeetmode02.collidable=true:TargetSkeetmode02.collidable=true:TargetSkeetmode02.collidable=true
  6470. For each xx in aTargetsSKEET
  6471. if xx.isdropped=false then xx.blenddisablelighting=1
  6472. next
  6473. for each xx in aTargetsES
  6474. if xx.isdropped=false then xx.blenddisablelighting=1
  6475. next
  6476. end sub
  6477.  
  6478. sub kickervideomode_hit()
  6479. 'stop timercountdown on backglass
  6480. timerchancevideomode.enabled=false
  6481. timervideomodewait.enabled=true
  6482. PuPlayer.playlistplayex pTopper,"Topper","black.png",100, 1
  6483. PuPlayer.playlistplayex pMusic,"musicdiv","videomodetuberide.mp3",100, 1
  6484. PuPlayer.playlistplayex pBackglass,"videodiv","videomode_tuberide_BG.mp4",0, 1
  6485. DMDFlush:DMD "videomode.wmv", "imagine a cool", "videomode 8-)", 21000:waittimertext.enabled=true
  6486. videomodelock.state=0
  6487. end Sub
  6488.  
  6489. sub timervideomodewait_timer()
  6490. kickervideomode.kick 10,10:playsound "fx_ball_drop0":kickervideomode.DrawStyle=0:kickervideomode.enabled=false:shark.visible=true
  6491. timerchancevideomode.enabled=False
  6492. timervideomodewait.enabled=false
  6493. flasherchancevideomode.visible=false
  6494. For each xx in aPlasticsBlack:xx.isdropped=true : Next
  6495. wall_inv_skt.isdropped=true:wall_inv_es.isdropped=true
  6496. gateramp.collidable=true:TargetTriggershot_right.collidable=true:targetequip01.collidable=true:targetequip02.collidable=true:targetequip03.collidable=true:bumperwall.collidable=false:bumper.collidable=true
  6497. TargetSkeetmode01.collidable=true:TargetSkeetmode02.collidable=true:TargetSkeetmode02.collidable=true:TargetSkeetmode02.collidable=true
  6498. For each xx in aTargetsSKEET
  6499. if xx.isdropped=false then xx.blenddisablelighting=1
  6500. next
  6501. for each xx in aTargetsES
  6502. if xx.isdropped=false then xx.blenddisablelighting=1
  6503. next
  6504. PuPlayer.playlistplayex pBackglass,"backglass","backglasswaves.mp4",0,1
  6505. PuPlayer.playlistplayex pMusic,"musicmainmode","",100, 1
  6506. PuPlayer.playlistplayex pTopper,"Topper","Topper.mp4",0, 1
  6507. videomodelock.state=0
  6508. addscore 1000000
  6509. end Sub
  6510.  
  6511. sub waittimertext_timer()
  6512. DMDFlush:DMD "videomode.wmv", "for now just points:", "1.000.000", 20000
  6513. waittimertext.enabled=false
  6514. end Sub
Advertisement
Add Comment
Please, Sign In to add comment