Outhere

Blue Vs Pink - BAM Edition 1.1

Dec 28th, 2021
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 188.36 KB | None | 0 0
  1. ' *********************************************************************
  2. ' ** **
  3. ' ** FUTURE PINBALL **
  4. ' ** **
  5. ' ** Blue Vs Pink **
  6. ' ** **
  7. ' ** (C) 2009 Brendan Bailey **
  8. ' ** **
  9. ' ** BAM Edition mod by TerryRed **
  10. ' ** **
  11. ' *********************************************************************
  12.  
  13.  
  14. ' BAM Edition 1.1 : Dec 24 - 2021
  15.  
  16. ' Thank you so much Brendan Bailey for supporting this update!
  17.  
  18.  
  19. ' ===========================================================================
  20.  
  21. ' Original Table by Brendan Bailey:
  22.  
  23. ' - table
  24. ' - art
  25. ' - animation
  26. ' - music
  27. ' - sounds
  28. ' - script
  29.  
  30. ' TerryRed's BAM Edition update:
  31.  
  32. ' - new G.I. lighting (dynamic lighting - x4 hidden flashers in lower and upper plastics)
  33. ' - added drain flasher for accented lighting
  34. ' - new options for changing G.I lighting colours (dynamic lighting only)
  35. ' - new BAM post processing
  36. ' - added shadowmaps to most lights
  37. ' - added pre-baked shadowmaps (created by BAM) to playfield and plastics texture
  38. ' - adjusted playfield / plastics / apron, etc texture brightness to better match new lighting
  39. ' - new 3D model inserts
  40. ' - new pre-rendered insert textures
  41. ' - new bump maps for inserts
  42. ' - disabled glow radius for all inserts
  43. ' - adjusted brightness of all playfield video textures (what a pain!) to better match new lighting
  44. ' - added sphere maps to the sides of all plastics
  45. ' - added new GI on/off code
  46. ' - adjusted GI on/off brightness for all lights / inserts / playfield videos
  47. ' - added all new FLEEP sounds for all mechanical actions (flippers, bumpers, slings, drain, etc)
  48. ' - added BAM DF1 physics (updated settings in editor to better work with new physics)
  49. ' - added playfield blocker surface to prevent ball from jumping on plastics
  50.  
  51. ' Additional Contributors:
  52.  
  53. ' Schlabber34 - new pre-rendered insert images
  54. ' FLEEP - new mechanical sounds
  55.  
  56.  
  57. ' ===========================================================================
  58.  
  59.  
  60. ' REQUIREMENTS:
  61.  
  62. ' BAM 1.5-341 or higher is required to play this table!
  63.  
  64. ' https://www.ravarcade.pl/
  65.  
  66. ' Run FPLoader.exe in BAM folder to play this table. DO NOT run directly from the FuturePinball.exe
  67.  
  68.  
  69.  
  70. ' In-Game Options:
  71.  
  72. ' Special key / button 1 = change G.I. colours
  73. ' Special key / button 2 = change G.I. brightness
  74.  
  75.  
  76.  
  77. ' Table Startup Options:
  78.  
  79. ' You can set the G.I colours and brightness for table startup, as well as Ray Cast Ball Shadows in the "USER TABLE OPTIONS" below
  80.  
  81.  
  82.  
  83. ' BAM Ray Cast Ball Shadows:
  84.  
  85. ' - this table was created to look best with the new BAM Ray Cast Ball shadows
  86. ' - to enable them, open BAM menu while in-game (~ or Q by default), and goto "Addons - Configure Ball and Shadows", or in the USER TABLE OPTIONS below
  87. ' - this feature requires a fairly decent video card, and will use much more of your GPU
  88. ' - if enabling it slows down the game... then your PC may not be fast enough to handle it
  89.  
  90.  
  91.  
  92. ' BAM Menu settings:
  93.  
  94. ' Note that the BAM Lighting and Post Processig settings are set by the table script and will ALWAYS override the user's settings!
  95. ' This is needed to ensure the new BAM Edition Lighting is set correctly along with all other changes made to the table!
  96.  
  97.  
  98. ' ===========================================================================
  99.  
  100. ' DOF Setup Added By Outhere But TerryRed made it easy
  101.  
  102. '- this does NOT use or require the PinEvent vbs files
  103. '- this does not use or require DOFLinx
  104. '- You should NOT have DOFLinx running when playing a table that uses this code (so both aren't accessing DOF at the same time)
  105.  
  106. ' https://pinballnirvana.com/forums/threads/how-to-add-dof-direct-output-framework-support-to-any-future-pinball-table.20456/
  107.  
  108. ' Search for DOF 1xx
  109.  
  110. '101 - Flipper Left
  111. '102 - Flipper Right
  112. '103 - Slingshot Left
  113. '104 - Slingshot Right
  114. '105 - Bumper Back Left
  115. '106 - Bumper Back Right
  116. '107 - Bumper Back Center
  117. '108 - Put Ball in Plunger Line (Ball Release)
  118. '109 -
  119. '110 -
  120. '111 - Targetkicker
  121. '112 - Kickback Left
  122. '113 - Kickback Right
  123. '114 - Upper Left Slingshot
  124. '115 - Upper RightSlingshot
  125. '116 - left deck exit
  126. '117 - right deck exit
  127. '118 - left deck entrance
  128. '119 - right deck entrance
  129. '120 - Left Scoop
  130. '121 - Right Scoop
  131. '122 - Drop_Targets_B1toB4_Reset
  132. '123 - Drop_Targets_B5toB8_Reset
  133. '124 - Drop_Targets_B9toB12_Reset
  134. '125 - Drop_Targets_B13toB16_Reset
  135. '126 - Drop_Targets_P1toP4_Reset
  136. '127 - Drop_Targets_P5toP8_Reset
  137. '128 - Drop_Targets_P9toP12_Reset
  138. '129 - Drop_Targets_P13toP16_Reset
  139. '130 - Drop_Targets_25to34_Reset
  140.  
  141.  
  142.  
  143.  
  144. Option Explicit ' Force explicit variable declaration
  145.  
  146. '/////////////////////// iCOM BAM PLUG-IN - USE COM OBJECTS ////////////////////////////
  147.  
  148. ' The iCOM plug-in for BAM must be installed and enabled in the BAM Plug-ins menu!
  149.  
  150. ' This will allow programs such as DOF, Pinup Player, and more to work directly with Future Pinball.
  151.  
  152. Dim icom : Set icom = xBAM.Get("icom") ' "icom" is name of "icom.dll" in BAM\Plugins dir
  153.  
  154. Function CreateObject(className)
  155. Set CreateObject = icom.CreateObject(className)
  156. End Function
  157.  
  158. '///////////////////////////////////////////////////////////////////////////////////////
  159.  
  160.  
  161. '//////////////////////// DOF: STARTUP & CONTROL SECTION /////////////////////////////
  162.  
  163. ' This is used for the startup and control of DOF (Direct Output Framework)
  164.  
  165. Dim useDOF: useDOF = false
  166. Dim DOFStatus:DofStatus=false
  167. Dim DOFObject
  168. Dim cGamename
  169.  
  170. Sub DOFStart(DOFProfile) 'Start DOF Session
  171. if DofStatus=true then Exit Sub
  172. if useDOF=true Then
  173. Set DOFObject = CreateObject("DirectOutput.ComObject")
  174. If DOFObject is Nothing Then
  175. AddDebugText "DOF is not installed or detected"
  176. useDOF=false
  177. DofStatus=false
  178. else
  179. DOFObject.Init "B2SServer","",DOFProfile
  180. DOFStatus=true
  181. AddDebugText "Start DOF"
  182. end if
  183. End if
  184. end sub
  185.  
  186. Sub DOFClose() 'PinEvent - Close out DOF session. Add this to FuturePinball_EndPlay()
  187. if DOFStatus=false then Exit Sub
  188. DOFStatus=false
  189. DOFObject.Finish()
  190. Set DOFObject=nothing
  191. end sub
  192.  
  193. Sub dof(dID,dValue)
  194. if DOFStatus=false then Exit Sub
  195. if dValue=0 Then DOFObject.UpdateNamedTableElement "E"&dID,0
  196. if dValue=1 Then DOFObject.UpdateNamedTableElement "E"&dID,1
  197. if dValue=2 Then
  198. DOFObject.UpdateNamedTableElement "E"&dID,1
  199. DOFObject.UpdateNamedTableElement "E"&dID,0
  200. End If
  201. end Sub
  202.  
  203. ' Usage: dof(dID,dValue)
  204.  
  205. ' dID = DOF Exxx trigger
  206. ' dValue = trigger action. 0 = off, 1 = on, 2 = pulse
  207.  
  208. ' Example:
  209.  
  210. ' dof 103,1
  211.  
  212. ' The above example will trigger DOF event E103 as ON
  213.  
  214.  
  215. '///////////////////////////////////////////////////////////////////////////////////////
  216.  
  217.  
  218. '////////////// START DOF ////////////////
  219.  
  220. useDOF = true ' enable DOF
  221. cGamename = "fp_bvp" ' name of this table's DOF Config as listed on the "DOF Config Tool" web site
  222. DOFStart(cGamename) ' check for DOF - If found, then start DOF Session
  223.  
  224. '/////////////////////////////////////////
  225.  
  226. xBAM.CreateAllExt() ' create BAM Extension commands. This should be at the top of the script (below Option Explicit)
  227.  
  228.  
  229.  
  230. Dim GI_Colour_Startup
  231. Dim GI_Brightness_Startup
  232. Dim use_RayCast_Shadows
  233.  
  234.  
  235.  
  236. ' ############# USER TABLE OPTIONS ###############
  237.  
  238.  
  239. ' Choose the colour of the G.I. on table startup
  240. ' Choices are: 1 = original, 2 = Blue / Pink, 3 = Blue / Red
  241.  
  242. GI_Colour_Startup = 1
  243.  
  244. ' Choose the brightness of the G.I. on table startup
  245. ' Choices are: 1 = low, 2 = medium, 3 = high
  246.  
  247. GI_Brightness_Startup = 2
  248.  
  249. ' Bam Ray Cast Ball Shadows (needs good GPU)
  250.  
  251. use_RayCast_Shadows = false
  252.  
  253.  
  254. ' ################################################
  255.  
  256.  
  257. '###########################################################################################
  258. '#################################### PHYSICS SETTINGS #####################################
  259.  
  260. '=============================== PHYSICS XML ===========================
  261. '<?xml version="1.0" encoding="utf-8"?>
  262. '<document>
  263. ' <!Custom Physics -->
  264. ' <physics fps="296" threaded="1"></physics>
  265. ' <ball newtonDamping="0" mass="70" gravity="6000" damping="0.65"></ball>
  266. ' <flipper releaseOmega="18" rotationSpeedChart="{0.0,100.0}[0.0,100.0]" newtonDamping="1" mass="20150" omega="43" moeMethod="0"
  267. ' leftXoff="0" leftYoff="500" leftZoff="0"
  268. ' rightXoff="0" rightYoff="500" rightZoff="0"></flipper>
  269. ' <bumper impulse="90.0" impulseRandomness="0" vectorRandomness="6"></bumper>
  270. ' <autoplunger mass="20000.0" force="60000.0"></autoplunger>
  271. ' <diverter mass="10000.0" omega="33.0"></diverter>
  272. ' <gate mass="5.0" gravity="2500.0" damping="0.25"></gate>
  273. ' <kicker impulse="1200.0" vukImpulse="1400.0" impulseRandomness="2" vectorRandomness="1"></kicker>
  274. ' <plunger mass="20000.0" force="30000.0"></plunger>
  275. ' <slingshot impulse="650.0" impulseRandomness="15" vectorRandomness="3"></slingshot>
  276. ' <spindisk mass="10000.0" angularDamp="0.33" linearDamp="0.25"></spindisk>
  277. ' <spinner mass="60.0" gravity="100.0" angularDamp="0.25" angularAccel="5.25"
  278. ' spinDampLoose="0.55" spinBackLoose="1.70"
  279. ' spinDampNorm="0.75" spinBackNorm="1.80"
  280. ' spinDampTight="0.95" spinBackTight="1.90"></spinner>
  281. ' <emkicker mass="10000.0" omega="80.0"></emkicker>
  282. ' <varitarget mass="500.0" damping="0.9" tension="3.0" return="15.0"></varitarget>
  283. ' <magnet impulse="10.0" impulseRandomness="2"></magnet>
  284. ' <nudge impulse="240.0" impulseRandomness="25.0" warningLevel="350" leftAngle="60" upAngle="0" rightAngle="320"
  285. ' vectorRandomness="5" visualDistance="3" waitPeriod="300" maxBallVelocity="500.0"></nudge>
  286. ' <defaultMat softnessCoef="0.03" elasticCoef="0.1" staticFriction="0.01" kineticFriction="0.02"></defaultMat>
  287. ' <playfieldMat softnessCoef="0.02" elasticCoef="0.1" staticFriction="0.01" kineticFriction="0.02"></playfieldMat>
  288. ' <metalMat softnessCoef="0.01" elasticCoef="0.15" staticFriction="0.02" kineticFriction="0.02"></metalMat>
  289. ' <woodMat softnessCoef="0.03" elasticCoef="0.15" staticFriction="0.03" kineticFriction="0.02"></woodMat>
  290. ' <plasticMat softnessCoef="0.02" elasticCoef="0.2" staticFriction="0.02" kineticFriction="0.01"></plasticMat>
  291. ' <rubberHardMat softnessCoef="0.08" elasticCoef="0.50" staticFriction="0.04" kineticFriction="0.055"></rubberHardMat>
  292. ' <rubberIntMat softnessCoef="0.1" elasticCoef="0.72" staticFriction="0.05" kineticFriction="0.065"></rubberIntMat>
  293. ' <rubberSoftMat softnessCoef="0.12" elasticCoef="0.83" staticFriction="0.06" kineticFriction="0.075"></rubberSoftMat>
  294. ' <gateMat softnessCoef="0.05" elasticCoef="0.65" staticFriction="0" kineticFriction="0"></gateMat>
  295. ' <kickerMat softnessCoef="0.01" elasticCoef="0.05" staticFriction="0.8" kineticFriction="0.8"></kickerMat>
  296. ' <rampMat softnessCoef="0.01" elasticCoef="0.01" staticFriction="0.01" kineticFriction="0.01"></rampMat>
  297. ' <plungerMat softnessCoef="0.04" elasticCoef="0.55" staticFriction="0.02" kineticFriction="0.02"></plungerMat>
  298. ' <spindiskMat softnessCoef="0.05" elasticCoef="0.5" staticFriction="1.5" kineticFriction="2"></spindiskMat>
  299. '</document>
  300. '=============================== PHYSICS XML ===========================
  301.  
  302.  
  303. ' === Dynamic Flipper Settings ===
  304.  
  305. Const BAM_VERSION = 0
  306.  
  307. AddDebugText "BAM Version: " & BAM_VERSION
  308.  
  309. Dim RightFlipperExt,LeftFlipperExt
  310. Dim omegaCorrectionR
  311. Dim omegaCorrectionL
  312.  
  313. xBAM.BallSpeedLimit = 3000
  314.  
  315. Sub OnPreHitFlipperSettings(FlipperExt)
  316. OnPreHitFlipperSettings_bounceControl(FlipperExt)
  317. End Sub
  318.  
  319. const MaxOmega = 45 ' Omega at base of flipper. Must be > MinOmega. Default = 45
  320. const MinOmega = 32 ' Omega at tip of flipper. Must be < MaxOmega. Default = 32
  321.  
  322. Sub LeftFlipper_prehit()
  323. OnPreHitFlipperSettings(LeftFlipperExt)
  324. omegaCorrectionL = MaxOmega - (LeftFlipperExt.ContactPoint * ((MaxOmega - MinOmega)/1.2))
  325. If LeftFlipperExt.ContactPoint < 0.0 then LeftFlipperExt.Omega = MaxOmega
  326. If LeftFlipperExt.ContactPoint > 1.2 then LeftFlipperExt.Omega = MinOmega
  327. If (LeftFlipperExt.ContactPoint => 0.0) And (LeftFlipperExt.ContactPoint =< 1.2) then
  328. LeftFlipperExt.Omega = omegaCorrectionL
  329. End if
  330. End Sub
  331.  
  332. Sub RightFlipper_prehit()
  333. OnPreHitFlipperSettings(RightFlipperExt)
  334. omegaCorrectionR = MaxOmega - (RightFlipperExt.ContactPoint * ((MaxOmega - MinOmega)/1.2))
  335. If RightFlipperExt.ContactPoint < 0.0 then RightFlipperExt.Omega = MaxOmega
  336. If RightFlipperExt.ContactPoint > 1.2 then RightFlipperExt.Omega = MinOmega
  337. If (RightFlipperExt.ContactPoint => 0.0) And (RightFlipperExt.ContactPoint =< 1.2) then
  338. RightFlipperExt.Omega = omegaCorrectionR
  339. End if
  340. End Sub
  341.  
  342. Sub OnPreHitFlipperSettings_bounceControl(FlipperExt)
  343. ' PARAMETERS TO TWEAK
  344. const base_elasticCoef = 0.80 ' very bouncy flipper rubber
  345. const expected_ball_speed_after_hit = 300 ' calc elasticCoef to get desired ball speed after ball hit flipper
  346. const minimum_elasticCoef_to_scale_fast_balls = 0.15 ' we will add this to calculated elastiCoef, so ball after hit will have aditional 5% of speed before hit
  347. const reduction_for_flipper_in_motion = 0.15 ' if flipper is not in starting point, reduce elasticCoef by 20%
  348.  
  349. If FlipperExt.Hit Then
  350. Dim elasticCoef
  351. Dim maxElasticCoef
  352. Dim ballSpeed
  353. ballSpeed = (FlipperExt.BallVSpeed + xBAM.Ball.Speed) * 0.5 ' averge speed of
  354.  
  355. maxElasticCoef = base_elasticCoef
  356. If FlipperExt.AngleDiff > 1 Then maxElasticCoef = maxElasticCoef - reduction_for_flipper_in_motion
  357.  
  358. elasticCoef = base_elasticCoef
  359. If ballSpeed > 1 Then elasticCoef = expected_ball_speed_after_hit / ballSpeed
  360. elasticCoef = elasticCoef + minimum_elasticCoef_to_scale_fast_balls
  361.  
  362. If elasticCoef > maxElasticCoef Then elasticCoef = maxElasticCoef
  363.  
  364. FlipperExt.SetMaterial elasticCoef
  365. End If
  366. End Sub
  367.  
  368. ' ========= End of Dynamic Flipper Settings ===========
  369.  
  370.  
  371. '############################### END OF PHYSICS SETTINGS ###################################
  372. '############################################################################################
  373.  
  374.  
  375.  
  376.  
  377. ' ****** BAM Lighting and Post Processing ******
  378.  
  379. Sub SetLightsParamsInBAM()
  380. xBAM.Lights.EnableNewRenderer = TRUE
  381. xBAM.Lights.MainLightLock = TRUE
  382. ' --- SetMainLightPosition not used because MainLightLock = FALSE
  383. ' xBAM.Lights.SetMainLightPosition 250, 650, 500
  384. xBAM.Lights.SetMainLightProperties 1, 0.35, 1, 0.075
  385. xBAM.Lights.SetMainLightAttenuation 1, 0, 0
  386. xBAM.Lights.SetOtherLightsAttenuation 0.066, 0, 0.333
  387. xBAM.Lights.EnablePostprocessing = FALSE
  388. xBAM.Lights.SetPostprocessing 1, 0, 1, 1
  389. xBAM.Lights.SetPostprocessingForNewRenderer 1, 0, 1, 1, 1, 1, 1, 1, 1
  390. xBAM.Lights.BallReflection = 2
  391. xBAM.Lights.BallShininess = 400
  392. xBAM.Lights.BallSpecular = 0.4
  393. End Sub
  394.  
  395.  
  396. ' ****** BAM Shadowmaps ******
  397.  
  398. Sub BAM_Init
  399. xBAM.ShadowMap "bulb1", 2000 , 1 , 2, 5, 2, 0, 0
  400. xBAM.ShadowMap "bulb22", 2000 , 1 , 2, 5, 2, 0, 0
  401. xBAM.ShadowMap "bulb25", 2000 , 1 , 2, 5, 2, 0, 0
  402. xBAM.ShadowMap "bulb3", 2000 , 1 , 2, 5, 2, 0, 0
  403. xBAM.ShadowMap "bulb5", 2000 , 1 , 2, 5, 3, 0, 0
  404. xBAM.ShadowMap "bulb6", 2000 , 1 , 2, 5, 2, 0, 0
  405. xBAM.ShadowMap "bulb7", 2000 , 1 , 2, 5, 2, 0, 0
  406. xBAM.ShadowMap "leftslingshotbulb1", 2000 , 1 , 2, 5, 2, 0, 0
  407. xBAM.ShadowMap "leftslingshotbulb2", 2000 , 1 , 2, 5, 2, 0, 0
  408. xBAM.ShadowMap "rightslingshotbulb1", 2000 , 1 , 2, 5, 2, 0, 0
  409. xBAM.ShadowMap "rightslingshotbulb2", 2000 , 1 , 2, 5, 2, 0, 0
  410. End Sub
  411.  
  412.  
  413.  
  414. ' ****** BAM Ray Cast Ball Shadows ******
  415.  
  416. ' This feature can be enabled and adjusted in the BAM menu while playing
  417. ' (Addons - Configure Ball and Flipper Shadows - Ray Cast)
  418.  
  419. ' - all flashers by default will project ball shadows
  420. ' - flashers that are inside of a ball "should" not project a ball shadow (but can be disabled manually)
  421. ' - normal lights / bulbs must have a shadowmap created and enabled to cast a ball shadow
  422. ' - ray cast ball shadows are based on the position and height of the light sources "model"
  423.  
  424. if use_RayCast_Shadows = true then xBAM.RayCastShadows.Set 0.85, -1.0
  425.  
  426.  
  427. ' This will disable these flashers from projecting a ball shadow
  428.  
  429. GI_Flasher1Ext.EnableRayCastShadows = False
  430. GI_Flasher2Ext.EnableRayCastShadows = False
  431. GI_Flasher3Ext.EnableRayCastShadows = False
  432. GI_Flasher4Ext.EnableRayCastShadows = False
  433.  
  434.  
  435.  
  436.  
  437.  
  438. ' ############## BAM - Flashers, Bulbs, and Lights #################
  439.  
  440.  
  441. ' **** Flashers ****
  442.  
  443. xBAM.Lights.LockFlasherBrightness = FALSE
  444. xBAM.Lights.LockGlowBrightness = FALSE
  445.  
  446. GI_Flasher1Ext.DetachLight = True
  447. GI_Flasher1Ext.SetPosition 103,758,25
  448. GI_Flasher1Ext.Brightness = 0.25
  449. GI_Flasher2Ext.DetachLight = True
  450. GI_Flasher2Ext.SetPosition 364,758,25
  451. GI_Flasher2Ext.Brightness = 0.25
  452.  
  453. GI_Flasher3Ext.DetachLight = True
  454. GI_Flasher3Ext.Brightness = 0.25
  455. GI_Flasher3Ext.SetPosition 58,362,75
  456. GI_Flasher4Ext.DetachLight = True
  457. GI_Flasher4Ext.Brightness = 0.25
  458. GI_Flasher4Ext.SetPosition 410,362,75
  459.  
  460. Drain_FlasherExt.DetachLight = True
  461. Drain_FlasherExt.SetPosition 232,1010,25
  462. Drain_FlasherExt.Brightness = 0.5
  463.  
  464.  
  465.  
  466. ' ********** Inserts **********
  467.  
  468. ' --- Glow Settings ---
  469.  
  470. twoXlightExt.glowradius = 0
  471. threeXlightExt.glowradius = 0
  472. fourxlightExt.glowradius = 0
  473. fivexlightExt.glowradius = 0
  474. ShootAgainLightExt.glowradius = 0
  475. Lock1Ext.glowradius = 0
  476. Lock2Ext.glowradius = 0
  477. Lock3Ext.glowradius = 0
  478. Lock4Ext.glowradius = 0
  479. Quick1Ext.glowradius = 0
  480. Quick2Ext.glowradius = 0
  481. Quick3Ext.glowradius = 0
  482. Quick4Ext.glowradius = 0
  483. Quick5Ext.glowradius = 0
  484. lightkickback1Ext.glowradius = 0
  485. lightkickback2Ext.glowradius = 0
  486. advx1Ext.glowradius = 0
  487. advx2Ext.glowradius = 0
  488. looplight2Ext.glowradius = 0
  489. quickscorelight2Ext.glowradius = 0
  490. looplight1Ext.glowradius = 0
  491. quickscorelight1Ext.glowradius = 0
  492. B1LExt.glowradius = 0
  493. B2LExt.glowradius = 0
  494. B3LExt.glowradius = 0
  495. B4LExt.glowradius = 0
  496. P4LExt.glowradius = 0
  497. P3LExt.glowradius = 0
  498. P2LExt.glowradius = 0
  499. P1LExt.glowradius = 0
  500. advexballlightExt.glowradius = 0
  501. extraballlightExt.glowradius = 0
  502. P5LExt.glowradius = 0
  503. P6LExt.glowradius = 0
  504. P7LExt.glowradius = 0
  505. P8LExt.glowradius = 0
  506. P9LExt.glowradius = 0
  507. P10LExt.glowradius = 0
  508. P11LExt.glowradius = 0
  509. P12LExt.glowradius = 0
  510. B5LExt.glowradius = 0
  511. B6LExt.glowradius = 0
  512. B7LExt.glowradius = 0
  513. B8LExt.glowradius = 0
  514. B9LExt.glowradius = 0
  515. B10LExt.glowradius = 0
  516. B11LExt.glowradius = 0
  517. B12LExt.glowradius = 0
  518. Locklit1Ext.glowradius = 0
  519. Locklit2Ext.glowradius = 0
  520. jackpotlightExt.glowradius = 0
  521. HundredK1Ext.glowradius = 0
  522. HundredK2Ext.glowradius = 0
  523. bluearrowExt.glowradius = 0
  524. pinkarrowExt.glowradius = 0
  525. LeftkicklightExt.glowradius = 0
  526. RightkicklightExt.glowradius = 0
  527.  
  528. ' --- Brightness Settings ---
  529.  
  530. Dim Inserts_Brightness_GI_ON
  531. Dim Inserts_Brightness_GI_OFF
  532.  
  533. Inserts_Brightness_GI_OFF = 3.25
  534. Inserts_Brightness_GI_ON = 3
  535.  
  536. Sub Inserts_Brightness_GION
  537. twoXlightExt.brightness = 3
  538. threeXlightExt.brightness = 3
  539. fourxlightExt.brightness = 3
  540. fivexlightExt.brightness = 3
  541. ShootAgainLightExt.brightness = 3
  542. Lock1Ext.brightness = 3
  543. Lock2Ext.brightness = 3
  544. Lock3Ext.brightness = 3
  545. Lock4Ext.brightness = 3
  546. Quick1Ext.brightness = 3
  547. Quick2Ext.brightness = 3
  548. Quick3Ext.brightness = 3
  549. Quick4Ext.brightness = 3
  550. Quick5Ext.brightness = 3
  551. lightkickback1Ext.brightness = 3
  552. lightkickback2Ext.brightness = 3
  553. advx1Ext.brightness = 3
  554. advx2Ext.brightness = 3
  555. looplight2Ext.brightness = 3
  556. quickscorelight2Ext.brightness = 3
  557. looplight1Ext.brightness = 3
  558. quickscorelight1Ext.brightness = 3
  559. B1LExt.brightness = 3
  560. B2LExt.brightness = 3
  561. B3LExt.brightness = 3
  562. B4LExt.brightness = 3
  563. P4LExt.brightness = 3
  564. P3LExt.brightness = 3
  565. P2LExt.brightness = 3
  566. P1LExt.brightness = 3
  567. advexballlightExt.brightness = 3
  568. extraballlightExt.brightness = 3
  569. jackpotlightExt.brightness = 3
  570. 'upper playfield
  571. P5LExt.brightness = 5
  572. P6LExt.brightness = 5
  573. P7LExt.brightness = 5
  574. P8LExt.brightness = 5
  575. P9LExt.brightness = 5
  576. P10LExt.brightness = 5
  577. P11LExt.brightness = 5
  578. P12LExt.brightness = 5
  579. B5LExt.brightness = 5
  580. B6LExt.brightness = 5
  581. B7LExt.brightness = 5
  582. B8LExt.brightness = 5
  583. B9LExt.brightness = 5
  584. B10LExt.brightness = 5
  585. B11LExt.brightness = 5
  586. B12LExt.brightness = 5
  587. Locklit1Ext.brightness = 5
  588. Locklit2Ext.brightness = 5
  589. HundredK1Ext.brightness = 5
  590. HundredK2Ext.brightness = 5
  591. bluearrowExt.brightness = 4
  592. pinkarrowExt.brightness = 4
  593. LeftkicklightExt.brightness = 4
  594. RightkicklightExt.brightness = 4
  595. End Sub
  596.  
  597. Sub Inserts_Brightness_GIOFF
  598. twoXlightExt.brightness = 6
  599. threeXlightExt.brightness = 6
  600. fourxlightExt.brightness = 6
  601. fivexlightExt.brightness = 6
  602. ShootAgainLightExt.brightness = 6
  603. Lock1Ext.brightness = 7
  604. Lock2Ext.brightness = 7
  605. Lock3Ext.brightness = 7
  606. Lock4Ext.brightness = 7
  607. Quick1Ext.brightness = 7
  608. Quick2Ext.brightness = 7
  609. Quick3Ext.brightness = 7
  610. Quick4Ext.brightness = 7
  611. Quick5Ext.brightness = 7
  612. lightkickback1Ext.brightness = 7
  613. lightkickback2Ext.brightness = 7
  614. advx1Ext.brightness = 7
  615. advx2Ext.brightness = 7
  616. looplight2Ext.brightness = 7
  617. quickscorelight2Ext.brightness = 7
  618. looplight1Ext.brightness = 7
  619. quickscorelight1Ext.brightness = 7
  620. B1LExt.brightness = 7
  621. B2LExt.brightness = 7
  622. B3LExt.brightness = 7
  623. B4LExt.brightness = 7
  624. P4LExt.brightness = 7
  625. P3LExt.brightness = 7
  626. P2LExt.brightness = 7
  627. P1LExt.brightness = 7
  628. advexballlightExt.brightness = 7
  629. extraballlightExt.brightness = 7
  630. jackpotlightExt.brightness = 7
  631. 'upper playfield
  632. P5LExt.brightness = 8
  633. P6LExt.brightness = 8
  634. P7LExt.brightness = 8
  635. P8LExt.brightness = 8
  636. P9LExt.brightness = 8
  637. P10LExt.brightness = 8
  638. P11LExt.brightness = 8
  639. P12LExt.brightness = 8
  640. B5LExt.brightness = 8
  641. B6LExt.brightness = 8
  642. B7LExt.brightness = 8
  643. B8LExt.brightness = 8
  644. B9LExt.brightness = 8
  645. B10LExt.brightness = 8
  646. B11LExt.brightness = 8
  647. B12LExt.brightness = 8
  648. Locklit1Ext.brightness = 8
  649. Locklit2Ext.brightness = 8
  650. HundredK1Ext.brightness = 8
  651. HundredK2Ext.brightness = 8
  652. bluearrowExt.brightness = 7
  653. pinkarrowExt.brightness = 7
  654. LeftkicklightExt.brightness = 6
  655. RightkicklightExt.brightness = 6
  656. End Sub
  657.  
  658. Sub Inserts_ALL_ON
  659. twoXlight.state = bulbon
  660. threeXlight.state = bulbon
  661. fourxlight.state = bulbon
  662. fivexlight.state = bulbon
  663. ShootAgainLight.state = bulbon
  664. Lock1.state = bulbon
  665. Lock2.state = bulbon
  666. Lock3.state = bulbon
  667. Lock4.state = bulbon
  668. Quick1.state = bulbon
  669. Quick2.state = bulbon
  670. Quick3.state = bulbon
  671. Quick4.state = bulbon
  672. Quick5.state = bulbon
  673. lightkickback1.state = bulbon
  674. lightkickback2.state = bulbon
  675. advx1.state = bulbon
  676. advx2.state = bulbon
  677. looplight2.state = bulbon
  678. quickscorelight2.state = bulbon
  679. looplight1.state = bulbon
  680. quickscorelight1.state = bulbon
  681. B1L.state = bulbon
  682. B2L.state = bulbon
  683. B3L.state = bulbon
  684. B4L.state = bulbon
  685. P4L.state = bulbon
  686. P3L.state = bulbon
  687. P2L.state = bulbon
  688. P1L.state = bulbon
  689. advexballlight.state = bulbon
  690. extraballlight.state = bulbon
  691. jackpotlight.state = bulbon
  692. 'upper playfield
  693. P5L.state = bulbon
  694. P6L.state = bulbon
  695. P7L.state = bulbon
  696. P8L.state = bulbon
  697. P9L.state = bulbon
  698. P10L.state = bulbon
  699. P11L.state = bulbon
  700. P12L.state = bulbon
  701. B5L.state = bulbon
  702. B6L.state = bulbon
  703. B7L.state = bulbon
  704. B8L.state = bulbon
  705. B9L.state = bulbon
  706. B10L.state = bulbon
  707. B11L.state = bulbon
  708. B12L.state = bulbon
  709. Locklit1.state = bulbon
  710. Locklit2.state = bulbon
  711. HundredK1.state = bulbon
  712. HundredK2.state = bulbon
  713. bluearrow.state = bulbon
  714. pinkarrow.state = bulbon
  715. Leftkicklight.state = bulbon
  716. Rightkicklight.state = bulbon
  717. End Sub
  718.  
  719. Sub Inserts_ALL_OFF
  720. twoXlight.state = bulboff
  721. threeXlight.state = bulboff
  722. fourxlight.state = bulboff
  723. fivexlight.state = bulboff
  724. ShootAgainLight.state = bulboff
  725. Lock1.state = bulboff
  726. Lock2.state = bulboff
  727. Lock3.state = bulboff
  728. Lock4.state = bulboff
  729. Quick1.state = bulboff
  730. Quick2.state = bulboff
  731. Quick3.state = bulboff
  732. Quick4.state = bulboff
  733. Quick5.state = bulboff
  734. lightkickback1.state = bulboff
  735. lightkickback2.state = bulboff
  736. advx1.state = bulboff
  737. advx2.state = bulboff
  738. looplight2.state = bulboff
  739. quickscorelight2.state = bulboff
  740. looplight1.state = bulboff
  741. quickscorelight1.state = bulboff
  742. B1L.state = bulboff
  743. B2L.state = bulboff
  744. B3L.state = bulboff
  745. B4L.state = bulboff
  746. P4L.state = bulboff
  747. P3L.state = bulboff
  748. P2L.state = bulboff
  749. P1L.state = bulboff
  750. advexballlight.state = bulboff
  751. extraballlight.state = bulboff
  752. jackpotlight.state = bulboff
  753. 'upper playfield
  754. P5L.state = bulboff
  755. P6L.state = bulboff
  756. P7L.state = bulboff
  757. P8L.state = bulboff
  758. P9L.state = bulboff
  759. P10L.state = bulboff
  760. P11L.state = bulboff
  761. P12L.state = bulboff
  762. B5L.state = bulboff
  763. B6L.state = bulboff
  764. B7L.state = bulboff
  765. B8L.state = bulboff
  766. B9L.state = bulboff
  767. B10L.state = bulboff
  768. B11L.state = bulboff
  769. B12L.state = bulboff
  770. Locklit1.state = bulboff
  771. Locklit2.state = bulboff
  772. HundredK1.state = bulboff
  773. HundredK2.state = bulboff
  774. bluearrow.state = bulboff
  775. pinkarrow.state = bulboff
  776. Leftkicklight.state = bulboff
  777. Rightkicklight.state = bulboff
  778. End Sub
  779.  
  780.  
  781.  
  782.  
  783. '################ G.I. (General Illumination) ##################
  784.  
  785. ' - used to turn on and off G.I. (general illumination) lights
  786. ' - typically consists of a few hidden nano flashers and bulbs within plastics
  787. ' - certain lights (such as inserts) may need their brightness adjusted for GI ON / OFF
  788.  
  789. Sub GI_OFF_TIMER_expired()
  790. GI_OFF_TIMER.enabled = false
  791. GI_ON()
  792. End Sub
  793.  
  794.  
  795. Sub GI_OFF
  796. LeftSlingshotBulb1.state = bulboff
  797. LeftSlingshotBulb2.state = bulboff
  798. Bulb23.state = bulboff
  799. Bulb24.state = bulboff
  800. RightSlingshotBulb1.state = bulboff
  801. RightSlingshotBulb2.state = bulboff
  802. RightLaneBulb1.state = bulboff
  803. Bulb2.state = bulboff
  804. GI_Flasher1.state = bulboff
  805. GI_Flasher2.state = bulboff
  806. GI_Flasher3.state = bulboff
  807. GI_Flasher4.state = bulboff
  808. Bulb5.state = bulboff
  809. Bulb25.state = bulboff
  810. Bulb22.state = bulboff
  811. Bulb7.state = bulboff
  812. Bulb21.state = bulboff
  813. Bulb20.state = bulboff
  814. Bulb19.state = bulboff
  815. Bulb16.state = bulboff
  816. Bulb18.state = bulboff
  817. Bulb17.state = bulboff
  818. Bulb15.state = bulboff
  819. Bulb14.state = bulboff
  820. Bulb12.state = bulboff
  821. Bulb13.state = bulboff
  822. Bulb11.state = bulboff
  823. Bulb10.state = bulboff
  824. Bulb9.state = bulboff
  825. Bulb8.state = bulboff
  826. Bulb6.state = bulboff
  827. Bulb3.state = bulboff
  828. Bulb4.state = bulboff
  829. Bulb1.state = bulboff
  830. Inserts_Brightness_GIOFF
  831. pf_videos_brightness = 4
  832. PF_Video_Brightness_Change
  833. PuP_Plug_Tex.ReplaceTexture plastics_tex, plastics_tex
  834. PuP_Plug_Tex.ReplaceTexture plastics_upper_tex, plastics_upper_tex
  835. xBAM.GetTexture("lower plastics copy").brightness = 1
  836. xBAM.GetTexture("upper plastics").brightness = 1
  837. End Sub
  838.  
  839.  
  840. Sub GI_ON
  841. LeftSlingshotBulb1.state = bulbon
  842. LeftSlingshotBulb2.state = bulbon
  843. Bulb23.state = bulbon
  844. Bulb24.state = bulbon
  845. RightSlingshotBulb1.state = bulbon
  846. RightSlingshotBulb2.state = bulbon
  847. RightLaneBulb1.state = bulbon
  848. Bulb2.state = bulbon
  849. GI_Flasher1.state = bulbon
  850. GI_Flasher2.state = bulbon
  851. GI_Flasher3.state = bulbon
  852. GI_Flasher4.state = bulbon
  853. Bulb5.state = bulbon
  854. Bulb25.state = bulbon
  855. Bulb22.state = bulbon
  856. Bulb7.state = bulbon
  857. Bulb21.state = bulbon
  858. Bulb20.state = bulbon
  859. Bulb19.state = bulbon
  860. Bulb16.state = bulbon
  861. Bulb18.state = bulbon
  862. Bulb17.state = bulbon
  863. Bulb15.state = bulbon
  864. Bulb14.state = bulbon
  865. Bulb12.state = bulbon
  866. Bulb13.state = bulbon
  867. Bulb11.state = bulbon
  868. Bulb10.state = bulbon
  869. Bulb9.state = bulbon
  870. Bulb8.state = bulbon
  871. Bulb6.state = bulbon
  872. Bulb3.state = bulbon
  873. Bulb4.state = bulbon
  874. Bulb1.state = bulbon
  875. Inserts_Brightness_GION
  876. pf_videos_brightness = 2.25
  877. PF_Video_Brightness_Change
  878. PuP_Plug_Tex.ReplaceTexture plastics_tex, plastics_gi_on_tex
  879. PuP_Plug_Tex.ReplaceTexture plastics_upper_tex, plastics_upper_gi_on_tex
  880. xBAM.GetTexture("lower plastics copy").brightness = 6
  881. xBAM.GetTexture("upper plastics").brightness = 6
  882. End Sub
  883.  
  884.  
  885.  
  886. Sub GI_White
  887. GI_Flasher1Ext.Brightness = 0.175
  888. GI_Flasher2Ext.Brightness = 0.175
  889. GI_Flasher3Ext.Brightness = 0.175
  890. GI_Flasher4Ext.Brightness = 0.175
  891. GI_Flasher1Ext.setLitColor 255,255,255
  892. GI_Flasher2Ext.setLitColor 255,255,255
  893. GI_Flasher3Ext.setLitColor 255,255,255
  894. GI_Flasher4Ext.setLitColor 255,255,255
  895. End Sub
  896.  
  897. Sub GI_Blue_Pink
  898. GI_Flasher1Ext.Brightness = 0.25
  899. GI_Flasher2Ext.Brightness = 0.25
  900. GI_Flasher3Ext.Brightness = 0.25
  901. GI_Flasher4Ext.Brightness = 0.25
  902. GI_Flasher1Ext.setLitColor 0,128,255
  903. GI_Flasher2Ext.setLitColor 255,0,255
  904. GI_Flasher3Ext.setLitColor 0,128,255
  905. GI_Flasher4Ext.setLitColor 255,0,255
  906. End Sub
  907.  
  908. Sub GI_Blue_Red
  909. GI_Flasher1Ext.Brightness = 0.25
  910. GI_Flasher2Ext.Brightness = 0.25
  911. GI_Flasher3Ext.Brightness = 0.25
  912. GI_Flasher4Ext.Brightness = 0.25
  913. GI_Flasher1Ext.setLitColor 0,128,255
  914. GI_Flasher2Ext.setLitColor 255,0,0
  915. GI_Flasher3Ext.setLitColor 0,128,255
  916. GI_Flasher4Ext.setLitColor 255,0,0
  917. End Sub
  918.  
  919. Sub GI_Brightness_Low
  920. GI_Flasher1Ext.Brightness = 0.10
  921. GI_Flasher2Ext.Brightness = 0.10
  922. GI_Flasher3Ext.Brightness = 0.10
  923. GI_Flasher4Ext.Brightness = 0.10
  924. End Sub
  925.  
  926. Sub GI_Brightness_Medium
  927. GI_Flasher1Ext.Brightness = 0.175
  928. GI_Flasher2Ext.Brightness = 0.175
  929. GI_Flasher3Ext.Brightness = 0.175
  930. GI_Flasher4Ext.Brightness = 0.175
  931. End Sub
  932.  
  933. Sub GI_Brightness_High
  934. GI_Flasher1Ext.Brightness = 0.25
  935. GI_Flasher2Ext.Brightness = 0.25
  936. GI_Flasher3Ext.Brightness = 0.25
  937. GI_Flasher4Ext.Brightness = 0.25
  938. End Sub
  939.  
  940. Dim GI_Brightness_Level: GI_Brightness_Level = 1
  941.  
  942. Sub GI_Brightness_Change
  943. GI_Brightness_Level = GI_Brightness_Level +1
  944. if GI_Brightness_Level >3 then GI_Brightness_Level = 1
  945. Select Case GI_Brightness_Level
  946. Case 1:
  947. GI_Flasher1Ext.Brightness = 0.10
  948. GI_Flasher2Ext.Brightness = 0.10
  949. GI_Flasher3Ext.Brightness = 0.10
  950. GI_Flasher4Ext.Brightness = 0.10
  951. maintext.flushqueue()
  952. bluetext.flushqueue()
  953. pinktext.flushqueue()
  954. Maintext.queuetext " Brightness - 1 ", sescrollupover, 1000
  955. bluetext.queuetext "", sescrollupover, 1000
  956. pinktext.queuetext "", sescrollupover, 1000
  957. maintext2.flushqueue()
  958. bluetext2.flushqueue()
  959. pinktext2.flushqueue()
  960. Maintext2.queuetext " Brightness - 1 ", sescrollupover, 1000
  961. bluetext2.queuetext "", sescrollupover, 1000
  962. pinktext2.queuetext "", sescrollupover, 1000
  963. Case 2:
  964. GI_Flasher1Ext.Brightness = 0.175
  965. GI_Flasher2Ext.Brightness = 0.175
  966. GI_Flasher3Ext.Brightness = 0.175
  967. GI_Flasher4Ext.Brightness = 0.175
  968. maintext.flushqueue()
  969. bluetext.flushqueue()
  970. pinktext.flushqueue()
  971. Maintext.queuetext " Brightness - 2 ", sescrollupover, 1000
  972. bluetext.queuetext "", sescrollupover, 1000
  973. pinktext.queuetext "", sescrollupover, 1000
  974. maintext2.flushqueue()
  975. bluetext2.flushqueue()
  976. pinktext2.flushqueue()
  977. Maintext2.queuetext " Brightness - 2 ", sescrollupover, 1000
  978. bluetext2.queuetext "", sescrollupover, 1000
  979. pinktext2.queuetext "", sescrollupover, 1000
  980. Case 3:
  981. GI_Flasher1Ext.Brightness = 0.25
  982. GI_Flasher2Ext.Brightness = 0.25
  983. GI_Flasher3Ext.Brightness = 0.25
  984. GI_Flasher4Ext.Brightness = 0.25
  985. maintext.flushqueue()
  986. bluetext.flushqueue()
  987. pinktext.flushqueue()
  988. Maintext.queuetext " Brightness - 3 ", sescrollupover, 1000
  989. bluetext.queuetext "", sescrollupover, 1000
  990. pinktext.queuetext "", sescrollupover, 1000
  991. maintext2.flushqueue()
  992. bluetext2.flushqueue()
  993. pinktext2.flushqueue()
  994. Maintext2.queuetext " Brightness - 3 ", sescrollupover, 1000
  995. bluetext2.queuetext "", sescrollupover, 1000
  996. pinktext2.queuetext "", sescrollupover, 1000
  997. End Select
  998. End Sub
  999.  
  1000. Dim GI_Color_Preset: GI_Color_Preset = 1
  1001.  
  1002. Sub GI_Color_Preset_Change
  1003. GI_Color_Preset = GI_Color_Preset +1
  1004. if GI_Color_Preset >3 then GI_Color_Preset = 1
  1005. Select Case GI_Color_Preset
  1006. Case 1: GI_White:
  1007. maintext.flushqueue()
  1008. bluetext.flushqueue()
  1009. pinktext.flushqueue()
  1010. Maintext.queuetext " GI - Original ", sescrollupover, 1000
  1011. bluetext.queuetext "", sescrollupover, 1000
  1012. pinktext.queuetext "", sescrollupover, 1000
  1013. maintext2.flushqueue()
  1014. bluetext2.flushqueue()
  1015. pinktext2.flushqueue()
  1016. Maintext2.queuetext " GI - Original ", sescrollupover, 1000
  1017. bluetext2.queuetext "", sescrollupover, 1000
  1018. pinktext2.queuetext "", sescrollupover, 1000
  1019. Case 2: GI_Blue_Pink
  1020. maintext.flushqueue()
  1021. bluetext.flushqueue()
  1022. pinktext.flushqueue()
  1023. Maintext.queuetext " GI - Blue/Pink ", sescrollupover, 1000
  1024. bluetext.queuetext "", sescrollupover, 1000
  1025. pinktext.queuetext "", sescrollupover, 1000
  1026. maintext2.flushqueue()
  1027. bluetext2.flushqueue()
  1028. pinktext2.flushqueue()
  1029. Maintext2.queuetext " GI - Blue/Pink ", sescrollupover, 1000
  1030. bluetext2.queuetext "", sescrollupover, 1000
  1031. pinktext2.queuetext "", sescrollupover, 1000
  1032. Case 3: GI_Blue_Red
  1033. maintext.flushqueue()
  1034. bluetext.flushqueue()
  1035. pinktext.flushqueue()
  1036. Maintext.queuetext " GI - Blue/Red ", sescrollupover, 1000
  1037. bluetext.queuetext "", sescrollupover, 1000
  1038. pinktext.queuetext "", sescrollupover, 1000
  1039. maintext2.flushqueue()
  1040. bluetext2.flushqueue()
  1041. pinktext2.flushqueue()
  1042. Maintext2.queuetext " GI - Blue/Red ", sescrollupover, 1000
  1043. bluetext2.queuetext "", sescrollupover, 1000
  1044. pinktext2.queuetext "", sescrollupover, 1000
  1045. End Select
  1046. End Sub
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052. ' ################### Texture Adjustments ####################
  1053.  
  1054. ' - used for adjusting brightness, colour, etc of textures
  1055.  
  1056. xBAM.GetTexture("lower plastics copy").brightness = 1
  1057. xBAM.GetTexture("upper plastics").brightness = 1
  1058. xBAM.GetTexture("backdrop copy").brightness = 2
  1059. xBAM.GetTexture("apron").brightness = 1.5
  1060. xBAM.GetTexture("surface25").brightness = 1.5
  1061.  
  1062.  
  1063.  
  1064. ' ###### BUMP / Normal Maps ######
  1065.  
  1066. Dim tex_insert_round_small_ColorMap
  1067. Set tex_insert_round_small_ColorMap = xBAM.GetTexture("insert_round_small-ColorMap")
  1068. tex_insert_round_small_ColorMap.normalMap = "insert_round_small-NormalMap"
  1069. tex_insert_round_small_ColorMap.normalMapScale = -0.5
  1070. tex_insert_round_small_ColorMap.SetSpecularColor 0, 0, 0
  1071.  
  1072. Dim tex_insert_square_ColorMap
  1073. Set tex_insert_square_ColorMap = xBAM.GetTexture("insert_square-ColorMap")
  1074. tex_insert_square_ColorMap.normalMap = "insert_square-NormalMap"
  1075. tex_insert_square_ColorMap.normalMapScale = -0.5
  1076. tex_insert_square_ColorMap.SetSpecularColor 0, 0, 0
  1077.  
  1078. Dim tex_insert_triangle_ColorMap
  1079. Set tex_insert_triangle_ColorMap = xBAM.GetTexture("insert_triangle-ColorMap")
  1080. tex_insert_triangle_ColorMap.normalMap = "insert_triangle-NormalMap"
  1081. tex_insert_triangle_ColorMap.normalMapScale = -0.5
  1082. tex_insert_triangle_ColorMap.SetSpecularColor 0, 0, 0
  1083.  
  1084. Dim tex_insert_arrow_small_ColorMap
  1085. Set tex_insert_arrow_small_ColorMap = xBAM.GetTexture("insert_arrow_small-ColorMap")
  1086. tex_insert_arrow_small_ColorMap.normalMap = "insert_arrow_small-NormalMap"
  1087. tex_insert_arrow_small_ColorMap.normalMapScale = -0.5
  1088. tex_insert_arrow_small_ColorMap.SetSpecularColor 0, 0, 0
  1089.  
  1090. Dim tex_insert_arrow_bh_ColorMap
  1091. Set tex_insert_arrow_bh_ColorMap = xBAM.GetTexture("insert_arrow_bh-ColorMap")
  1092. tex_insert_arrow_bh_ColorMap.normalMap = "insert_arrow_bh-NormalMap"
  1093. tex_insert_arrow_bh_ColorMap.normalMapScale = -0.5
  1094. tex_insert_arrow_bh_ColorMap.SetSpecularColor 0, 0, 0
  1095.  
  1096. Dim tex_insert_longhole_ColorMap
  1097. Set tex_insert_longhole_ColorMap = xBAM.GetTexture("insert_longhole-ColorMap")
  1098. tex_insert_longhole_ColorMap.normalMap = "insert_longhole-NormalMap"
  1099. tex_insert_longhole_ColorMap.normalMapScale = -0.5
  1100. tex_insert_longhole_ColorMap.SetSpecularColor 0, 0, 0
  1101.  
  1102. Dim tex_insert_diamond_ColorMap
  1103. Set tex_insert_diamond_ColorMap = xBAM.GetTexture("insert_diamond-ColorMap")
  1104. tex_insert_diamond_ColorMap.normalMap = "insert_diamond-NormalMap"
  1105. tex_insert_diamond_ColorMap.normalMapScale = -0.5
  1106. tex_insert_diamond_ColorMap.SetSpecularColor 0, 0, 0
  1107.  
  1108.  
  1109.  
  1110. ' ###### Playfield Video Brightness ######
  1111.  
  1112. ' - the FP Overlay on a playfield does not brighten on its own (and is affected by all other lighting)
  1113. ' - we need to manually brighten all images used on the overlay so it looks correct to match the rest of the new lighting
  1114. ' - it's a pain :(
  1115.  
  1116. Dim pf_videos_brightness: pf_videos_brightness = 2
  1117. Dim videos_basename
  1118. Dim videos_frame: videos_frame = 0
  1119.  
  1120. Sub PF_Video_Brightness_Change
  1121. videos_frame = 0
  1122. xBAM.GetTexture("bvp").brightness = pf_videos_brightness
  1123. videos_basename = "bvp (00"
  1124. bvp_brightness
  1125.  
  1126. videos_frame = 0
  1127. xBAM.GetTexture("2x").brightness = pf_videos_brightness
  1128. videos_basename = "2x ("
  1129. x2_brightness
  1130.  
  1131. videos_frame = 0
  1132. xBAM.GetTexture("3x").brightness = pf_videos_brightness
  1133. videos_basename = "3x ("
  1134. x3_brightness
  1135.  
  1136. videos_frame = 0
  1137. xBAM.GetTexture("4x").brightness = pf_videos_brightness
  1138. videos_basename = "4x ("
  1139. x4_brightness
  1140.  
  1141. videos_frame = 0
  1142. xBAM.GetTexture("5x").brightness = pf_videos_brightness
  1143. videos_basename = "5x ("
  1144. x5_brightness
  1145.  
  1146. videos_frame = 0
  1147. xBAM.GetTexture("aeb").brightness = pf_videos_brightness
  1148. videos_basename = "aeb ("
  1149. aeb_brightness
  1150.  
  1151. videos_frame = 0
  1152. xBAM.GetTexture("b100k").brightness = pf_videos_brightness
  1153. videos_basename = "b100k ("
  1154. b100k_brightness
  1155.  
  1156. videos_frame = 0
  1157. xBAM.GetTexture("count").brightness = pf_videos_brightness
  1158. videos_basename = "count ("
  1159. count_brightness
  1160.  
  1161. videos_frame = 0
  1162. xBAM.GetTexture("eb").brightness = pf_videos_brightness
  1163. videos_basename = "eb ("
  1164. eb_brightness
  1165.  
  1166. videos_frame = 0
  1167. xBAM.GetTexture("ebl").brightness = pf_videos_brightness
  1168. videos_basename = "ebl ("
  1169. ebl_brightness
  1170.  
  1171. videos_frame = 0
  1172. xBAM.GetTexture("go").brightness = pf_videos_brightness
  1173. videos_basename = "go ("
  1174. go_brightness
  1175.  
  1176. videos_frame = 0
  1177. xBAM.GetTexture("ic").brightness = pf_videos_brightness
  1178. videos_basename = "ic ("
  1179. ic_brightness
  1180.  
  1181. videos_frame = 0
  1182. xBAM.GetTexture("mb").brightness = pf_videos_brightness
  1183. videos_basename = "mb ("
  1184. mb_brightness
  1185.  
  1186. videos_frame = 0
  1187. xBAM.GetTexture("mbl").brightness = pf_videos_brightness
  1188. videos_basename = "mbl ("
  1189. mbl_brightness
  1190.  
  1191. videos_frame = 0
  1192. xBAM.GetTexture("p100k").brightness = pf_videos_brightness
  1193. videos_basename = "p100k ("
  1194. p100k_brightness
  1195.  
  1196. videos_frame = 0
  1197. xBAM.GetTexture("ps").brightness = pf_videos_brightness
  1198. videos_basename = "ps ("
  1199. ps_brightness
  1200.  
  1201. videos_frame = 0
  1202. xBAM.GetTexture("qmb").brightness = pf_videos_brightness
  1203. videos_basename = "qmb ("
  1204. qmb_brightness
  1205.  
  1206. videos_frame = 0
  1207. xBAM.GetTexture("sa").brightness = pf_videos_brightness
  1208. videos_basename = "sa ("
  1209. sa_brightness
  1210.  
  1211. lil_brightness
  1212. End Sub
  1213.  
  1214. Sub bvp_brightness
  1215. videos_frame = videos_frame +2
  1216. if videos_frame = 10 then videos_basename = "bvp (0"
  1217. if videos_frame = 100 then videos_basename = "bvp ("
  1218. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1219. if videos_frame = 148 then exit sub
  1220. bvp_brightness
  1221. End Sub
  1222.  
  1223. Sub x2_brightness
  1224. videos_frame = videos_frame +2
  1225. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1226. if videos_frame = 44 then exit sub
  1227. x2_brightness
  1228. End Sub
  1229.  
  1230. Sub x3_brightness
  1231. videos_frame = videos_frame +2
  1232. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1233. if videos_frame = 44 then exit sub
  1234. x3_brightness
  1235. End Sub
  1236.  
  1237. Sub x4_brightness
  1238. videos_frame = videos_frame +2
  1239. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1240. if videos_frame = 44 then exit sub
  1241. x4_brightness
  1242. End Sub
  1243.  
  1244. Sub x5_brightness
  1245. videos_frame = videos_frame +2
  1246. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1247. if videos_frame = 44 then exit sub
  1248. x5_brightness
  1249. End Sub
  1250.  
  1251. Sub aeb_brightness
  1252. videos_frame = videos_frame +2
  1253. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1254. if videos_frame = 28 then exit sub
  1255. aeb_brightness
  1256. End Sub
  1257.  
  1258. Sub b100k_brightness
  1259. videos_frame = videos_frame +2
  1260. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1261. if videos_frame = 28 then exit sub
  1262. b100k_brightness
  1263. End Sub
  1264.  
  1265. Sub count_brightness
  1266. videos_frame = videos_frame +2
  1267. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1268. if videos_frame = 74 then exit sub
  1269. count_brightness
  1270. End Sub
  1271.  
  1272. Sub eb_brightness
  1273. videos_frame = videos_frame +2
  1274. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1275. if videos_frame = 58 then exit sub
  1276. eb_brightness
  1277. End Sub
  1278.  
  1279. Sub ebl_brightness
  1280. videos_frame = videos_frame +2
  1281. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1282. if videos_frame = 18 then exit sub
  1283. ebl_brightness
  1284. End Sub
  1285.  
  1286. Sub go_brightness
  1287. videos_frame = videos_frame +2
  1288. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1289. if videos_frame = 28 then exit sub
  1290. go_brightness
  1291. End Sub
  1292.  
  1293. Sub ic_brightness
  1294. videos_frame = videos_frame +2
  1295. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1296. if videos_frame = 28 then exit sub
  1297. ic_brightness
  1298. End Sub
  1299.  
  1300. Sub mb_brightness
  1301. videos_frame = videos_frame +2
  1302. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1303. if videos_frame = 28 then exit sub
  1304. mb_brightness
  1305. End Sub
  1306.  
  1307. Sub mbl_brightness
  1308. videos_frame = videos_frame +2
  1309. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1310. if videos_frame = 58 then exit sub
  1311. mbl_brightness
  1312. End Sub
  1313.  
  1314. Sub p100k_brightness
  1315. videos_frame = videos_frame +2
  1316. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1317. if videos_frame = 28 then exit sub
  1318. p100k_brightness
  1319. End Sub
  1320.  
  1321. Sub ps_brightness
  1322. videos_frame = videos_frame +2
  1323. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1324. if videos_frame = 28 then exit sub
  1325. ps_brightness
  1326. End Sub
  1327.  
  1328. Sub qmb_brightness
  1329. videos_frame = videos_frame +2
  1330. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1331. if videos_frame = 88 then exit sub
  1332. qmb_brightness
  1333. End Sub
  1334.  
  1335. Sub sa_brightness
  1336. videos_frame = videos_frame +2
  1337. xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
  1338. if videos_frame = 58 then exit sub
  1339. sa_brightness
  1340. End Sub
  1341.  
  1342. Sub lil_brightness
  1343. xBAM.GetTexture("lil (10)002").brightness = pf_videos_brightness
  1344. xBAM.GetTexture("lil (100)003").brightness = pf_videos_brightness
  1345. xBAM.GetTexture("lil (102)005").brightness = pf_videos_brightness
  1346. xBAM.GetTexture("lil (104)007").brightness = pf_videos_brightness
  1347. xBAM.GetTexture("lil (106)009").brightness = pf_videos_brightness
  1348. xBAM.GetTexture("lil (108)011").brightness = pf_videos_brightness
  1349. xBAM.GetTexture("lil (110)014").brightness = pf_videos_brightness
  1350. xBAM.GetTexture("lil (112)016").brightness = pf_videos_brightness
  1351. xBAM.GetTexture("lil (114)018").brightness = pf_videos_brightness
  1352. xBAM.GetTexture("lil (116)020").brightness = pf_videos_brightness
  1353. xBAM.GetTexture("lil (118)022").brightness = pf_videos_brightness
  1354. xBAM.GetTexture("lil (12)024").brightness = pf_videos_brightness
  1355. xBAM.GetTexture("lil (120)025").brightness = pf_videos_brightness
  1356. xBAM.GetTexture("lil (122)027").brightness = pf_videos_brightness
  1357. xBAM.GetTexture("lil (124)029").brightness = pf_videos_brightness
  1358. xBAM.GetTexture("lil (126)031").brightness = pf_videos_brightness
  1359. xBAM.GetTexture("lil (128)033").brightness = pf_videos_brightness
  1360. xBAM.GetTexture("lil (130)036").brightness = pf_videos_brightness
  1361. xBAM.GetTexture("lil (132)038").brightness = pf_videos_brightness
  1362. xBAM.GetTexture("lil (134)040").brightness = pf_videos_brightness
  1363. xBAM.GetTexture("lil (136)042").brightness = pf_videos_brightness
  1364. xBAM.GetTexture("lil (138)044").brightness = pf_videos_brightness
  1365. xBAM.GetTexture("lil (14)046").brightness = pf_videos_brightness
  1366. xBAM.GetTexture("lil (140)047").brightness = pf_videos_brightness
  1367. xBAM.GetTexture("lil (142)049").brightness = pf_videos_brightness
  1368. xBAM.GetTexture("lil (144)051").brightness = pf_videos_brightness
  1369. xBAM.GetTexture("lil (146)053").brightness = pf_videos_brightness
  1370. xBAM.GetTexture("lil (148)055").brightness = pf_videos_brightness
  1371. xBAM.GetTexture("lil (150)058").brightness = pf_videos_brightness
  1372. xBAM.GetTexture("lil (152)060").brightness = pf_videos_brightness
  1373. xBAM.GetTexture("lil (154)062").brightness = pf_videos_brightness
  1374. xBAM.GetTexture("lil (156)064").brightness = pf_videos_brightness
  1375. xBAM.GetTexture("lil (158)066").brightness = pf_videos_brightness
  1376. xBAM.GetTexture("lil (16)068").brightness = pf_videos_brightness
  1377. xBAM.GetTexture("lil (160)069").brightness = pf_videos_brightness
  1378. xBAM.GetTexture("lil (162)071").brightness = pf_videos_brightness
  1379. xBAM.GetTexture("lil (164)073").brightness = pf_videos_brightness
  1380. xBAM.GetTexture("lil (18)075").brightness = pf_videos_brightness
  1381. xBAM.GetTexture("lil (2)077").brightness = pf_videos_brightness
  1382. xBAM.GetTexture("lil (20)078").brightness = pf_videos_brightness
  1383. xBAM.GetTexture("lil (22)080").brightness = pf_videos_brightness
  1384. xBAM.GetTexture("lil (24)082").brightness = pf_videos_brightness
  1385. xBAM.GetTexture("lil (26)084").brightness = pf_videos_brightness
  1386. xBAM.GetTexture("lil (28)086").brightness = pf_videos_brightness
  1387. xBAM.GetTexture("lil (30)089").brightness = pf_videos_brightness
  1388. xBAM.GetTexture("lil (32)091").brightness = pf_videos_brightness
  1389. xBAM.GetTexture("lil (34)093").brightness = pf_videos_brightness
  1390. xBAM.GetTexture("lil (36)095").brightness = pf_videos_brightness
  1391. xBAM.GetTexture("lil (38)097").brightness = pf_videos_brightness
  1392. xBAM.GetTexture("lil (4)099").brightness = pf_videos_brightness
  1393. xBAM.GetTexture("lil (40)100").brightness = pf_videos_brightness
  1394. xBAM.GetTexture("lil (42)102").brightness = pf_videos_brightness
  1395. xBAM.GetTexture("lil (44)104").brightness = pf_videos_brightness
  1396. xBAM.GetTexture("lil (46)106").brightness = pf_videos_brightness
  1397. xBAM.GetTexture("lil (48)108").brightness = pf_videos_brightness
  1398. xBAM.GetTexture("lil (50)111").brightness = pf_videos_brightness
  1399. xBAM.GetTexture("lil (52)113").brightness = pf_videos_brightness
  1400. xBAM.GetTexture("lil (54)115").brightness = pf_videos_brightness
  1401. xBAM.GetTexture("lil (56)117").brightness = pf_videos_brightness
  1402. xBAM.GetTexture("lil (58)119").brightness = pf_videos_brightness
  1403. xBAM.GetTexture("lil (6)121").brightness = pf_videos_brightness
  1404. xBAM.GetTexture("lil (60)122").brightness = pf_videos_brightness
  1405. xBAM.GetTexture("lil (62)124").brightness = pf_videos_brightness
  1406. xBAM.GetTexture("lil (64)126").brightness = pf_videos_brightness
  1407. xBAM.GetTexture("lil (66)128").brightness = pf_videos_brightness
  1408. xBAM.GetTexture("lil (68)130").brightness = pf_videos_brightness
  1409. xBAM.GetTexture("lil (70)133").brightness = pf_videos_brightness
  1410. xBAM.GetTexture("lil (72)135").brightness = pf_videos_brightness
  1411. xBAM.GetTexture("lil (74)137").brightness = pf_videos_brightness
  1412. xBAM.GetTexture("lil (76)139").brightness = pf_videos_brightness
  1413. xBAM.GetTexture("lil (78)141").brightness = pf_videos_brightness
  1414. xBAM.GetTexture("lil (8)143").brightness = pf_videos_brightness
  1415. xBAM.GetTexture("lil (80)144").brightness = pf_videos_brightness
  1416. xBAM.GetTexture("lil (82)146").brightness = pf_videos_brightness
  1417. xBAM.GetTexture("lil (84)148").brightness = pf_videos_brightness
  1418. xBAM.GetTexture("lil (86)150").brightness = pf_videos_brightness
  1419. xBAM.GetTexture("lil (88)152").brightness = pf_videos_brightness
  1420. xBAM.GetTexture("lil (90)155").brightness = pf_videos_brightness
  1421. xBAM.GetTexture("lil (92)157").brightness = pf_videos_brightness
  1422. xBAM.GetTexture("lil (94)159").brightness = pf_videos_brightness
  1423. xBAM.GetTexture("lil (96)161").brightness = pf_videos_brightness
  1424. xBAM.GetTexture("lil (98)163").brightness = pf_videos_brightness
  1425. xBAM.GetTexture("lil165").brightness = pf_videos_brightness
  1426. End Sub
  1427.  
  1428.  
  1429. ' ###### End of Playfield Video Brightness ######
  1430.  
  1431.  
  1432.  
  1433. ' ################### PUP Plug-in: Texture Swaps and Animations ##################
  1434.  
  1435. ' - used on all objects where the normal BAM texture swapping commands won't work (like ornaments, ramps, etc)
  1436. ' - can be used to swap textures with pretty much anything
  1437. ' - replacement textures that are not used on any surface or object must be added to an Image Sequence (so BAM can "see" it)
  1438. ' - note, that EVERY texture you are swapping (to and from) needs to use GetTextureId to fetch the texture
  1439. ' - then you simply just need to use the ReplaceTexture command to replace each texture
  1440. ' - keep in mind... this will replace the texture on ALL objects / surfaces that use it, so you may need uniquely named textures
  1441. ' - you must SAVE the table after adding new textures before running the table or this may not work!
  1442. ' - any changes made to the source texture (brightness, colour, etc) will effect the swapped out texture!
  1443.  
  1444.  
  1445. ' **** Initialize the pup plug-in ****
  1446.  
  1447. Dim PuP_Plug_Tex
  1448.  
  1449. Set PuP_Plug_Tex = xBAM.Get("PuPPlugin")
  1450. If PuP_Plug_Tex Is Nothing Then
  1451. AddDebugText "PuP Plugin is missing"
  1452. Else
  1453. AddDebugText "PuP Plugin has started"
  1454. End if
  1455.  
  1456.  
  1457. Dim plastics_tex
  1458. Dim plastics_gi_on_tex
  1459. Dim plastics_upper_tex
  1460. Dim plastics_upper_gi_on_tex
  1461.  
  1462. plastics_tex = PuP_Plug_Tex.GetTextureId("lower plastics copy")
  1463. plastics_gi_on_tex = PuP_Plug_Tex.GetTextureId("lower_plastics_gi_on")
  1464. plastics_upper_tex = PuP_Plug_Tex.GetTextureId("upper plastics")
  1465. plastics_upper_gi_on_tex = PuP_Plug_Tex.GetTextureId("upper_plastics_gi_on")
  1466.  
  1467.  
  1468. ' ########## Table Startup ##########
  1469.  
  1470. GI_ON
  1471. SetLightsParamsInBAM
  1472. if GI_Colour_Startup = 1 then GI_White
  1473. if GI_Colour_Startup = 2 then GI_Blue_Pink
  1474. if GI_Colour_Startup = 3 then GI_Blue_Red
  1475. if GI_Brightness_Startup = 1 then GI_Brightness_Low
  1476. if GI_Brightness_Startup = 2 then GI_Brightness_Medium
  1477. if GI_Brightness_Startup = 3 then GI_Brightness_High
  1478.  
  1479.  
  1480.  
  1481. ' Some extra functions for formating the score etc
  1482.  
  1483. function RandomNumber(ByVal max)
  1484. RandomNumber = Int(max * Rnd + 1)
  1485. end function
  1486.  
  1487. Function FormatScore(num)
  1488. Dim n, f, s
  1489. n = CStr(num)
  1490. f = ""
  1491.  
  1492. do while len(n)>3
  1493. if len(f)>0 then
  1494. f = Right(n, 3) & "," & f
  1495. else
  1496. f = Right(n, 3)
  1497. end if
  1498. n = Left(n, Len(n)-3)
  1499. loop
  1500. if len(n)>0 then
  1501. if len(f) > 0 then
  1502. f = n & "," & f
  1503. else
  1504. f = n
  1505. end if
  1506. end if
  1507. FormatScore = f
  1508. End Function
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516. ' ################ MECHANICAL SOUNDS AND FEEDBACK #################
  1517.  
  1518. ' - all mechanical sounds for all tiems in the editor are set to none
  1519. ' - they are all controlled by PinMechSound commands instead of playsound
  1520. ' - this makes it easier to allow for support for PUP SSF and DOF (for cabinet users)
  1521.  
  1522.  
  1523. '*** Flippers ***
  1524.  
  1525. Sub PinEvent_Left_Flipper_On
  1526. PinMechSound "mech_Flipper_L0"&RandomNumber(5), LeftFlipper, 1, 801, 1, "flipper"
  1527. DOF 101, 1
  1528. End Sub
  1529.  
  1530. Sub PinEvent_Left_Flipper_Off
  1531. PinMechSound "mech_Flipper_Left_Down_"&RandomNumber(5), LeftFlipper, 1, 801, 0, "flipper"
  1532. DOF 101, 0
  1533. End Sub
  1534.  
  1535. Sub PinEvent_Right_Flipper_On
  1536. PinMechSound "mech_Flipper_R0"&RandomNumber(5), RightFlipper, 1, 802, 1, "flipper"
  1537. DOF 102, 1
  1538. End Sub
  1539.  
  1540. Sub PinEvent_Right_Flipper_Off
  1541. PinMechSound "mech_Flipper_Right_Down_"&RandomNumber(5), RightFlipper, 1, 802, 0, "flipper"
  1542. DOF 102, 0
  1543. End Sub
  1544.  
  1545. '*** Slingshots ***
  1546.  
  1547. Sub PinEvent_Left_Slingshot_Hit
  1548. PinMechSound "mech_Sling_L"&RandomNumber(5), LeftInLaneTrigger, 1, 810, 2, "slingshot"
  1549. DOF 103, 2
  1550. End Sub
  1551.  
  1552. Sub PinEvent_Right_Slingshot_Hit
  1553. PinMechSound "mech_Sling_R"&RandomNumber(5), RightInLaneTrigger, 1, 811, 2, "slingshot"
  1554. DOF 104, 2
  1555. End Sub
  1556.  
  1557. Sub PinEvent_Upper_Left_Slingshot_Hit
  1558. PinMechSound "mech_Sling_L"&RandomNumber(5), Bulb21, 1, 812, 2, "slingshot"
  1559. DOF 114, 2
  1560. End Sub
  1561.  
  1562. Sub PinEvent_Upper_Right_Slingshot_Hit
  1563. PinMechSound "mech_Sling_R"&RandomNumber(5), Bulb8, 1, 813, 2, "slingshot"
  1564. DOF 115, 2
  1565. End Sub
  1566.  
  1567. '*** Bumpers ***
  1568.  
  1569. Sub PinEvent_Bumper1_Hit
  1570. PinMechSound "mech_Bumpers_Top_"&RandomNumber(5), Bumper3, 1, 820, 2, "bumper"
  1571. DOF 105, 2
  1572. End Sub
  1573.  
  1574. Sub PinEvent_Bumper2_Hit
  1575. PinMechSound "mech_Bumpers_Middle_"&RandomNumber(5), Bumper3, 1, 821, 2, "bumper"
  1576. DOF 107, 2
  1577. End Sub
  1578.  
  1579. Sub PinEvent_Bumper3_Hit
  1580. PinMechSound "mech_Bumpers_Bottom_"&RandomNumber(5), Bumper3, 1, 822, 2, "bumper"
  1581. DOF 106, 2
  1582. End Sub
  1583.  
  1584. '*** AutoPlunger, Kickback ***
  1585.  
  1586. Sub PinEvent_Kickback_Left
  1587. PinMechSound "mech_BallRelease"&RandomNumber(5), leftkickback, 1, 831, 2, "solenoid"
  1588. DOF 112, 2
  1589. End Sub
  1590.  
  1591. Sub PinEvent_Kickback_Right
  1592. PinMechSound "mech_BallRelease"&RandomNumber(5), rightkickback, 1, 832, 2, "solenoid"
  1593. DOF 113, 2
  1594. End Sub
  1595.  
  1596. '*** Kickers, VUKs ***
  1597.  
  1598. Sub PinEvent_PlungerKicker
  1599. PinMechSound "mech_BallRelease"&RandomNumber(5), PlungerKicker, 1, 840, 2, "solenoid"
  1600. DOF 108, 2
  1601. End Sub
  1602.  
  1603. sub PinEvent_leftdeckexit_Hit
  1604. PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), leftdeckexit, 1, , , ""
  1605. end sub
  1606.  
  1607. sub PinEvent_leftdeckexit
  1608. PinMechSound "mech_BallRelease"&RandomNumber(5), leftdeckexit, 1, 841, 2, "solenoid"
  1609. DOF 116, 2
  1610. end sub
  1611.  
  1612. sub PinEvent_leftdeckentrance_hit
  1613. PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), leftdeckentrance, 1, , , ""
  1614. end sub
  1615.  
  1616. sub PinEvent_leftdeckentrance
  1617. PinMechSound "mech_BallRelease"&RandomNumber(5), leftdeckentrance, 1, 842, 2, "solenoid"
  1618. DOF 118, 2
  1619. end sub
  1620.  
  1621. sub PinEvent_rightdeckexit_Hit
  1622. PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), rightdeckexit, 1, , , ""
  1623. end sub
  1624.  
  1625. sub PinEvent_rightdeckexit
  1626. PinMechSound "mech_BallRelease"&RandomNumber(5), rightdeckexit, 1, 843, 2, "solenoid"
  1627. DOF 117, 2
  1628. end sub
  1629.  
  1630. sub PinEvent_rightdeckentrance_hit
  1631. PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), rightdeckentrance, 1, , , ""
  1632. end sub
  1633.  
  1634. sub PinEvent_rightdeckentrance
  1635. PinMechSound "mech_BallRelease"&RandomNumber(5), rightdeckentrance, 1, 844, 2, "solenoid"
  1636. DOF 119, 2
  1637. end sub
  1638.  
  1639. sub PinEvent_Targetkicker
  1640. PinMechSound "mech_BallRelease"&RandomNumber(5), Targetkicker, 1, 845, 2, "solenoid"
  1641. DOF 111, 2
  1642. end sub
  1643.  
  1644. sub PinEvent_Leftkicker_Hit
  1645. PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), Leftkicker, 1, , , ""
  1646. end sub
  1647.  
  1648. sub PinEvent_Rightkicker_Hit
  1649. PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), Rightkicker, 1, , , ""
  1650. end sub
  1651.  
  1652. sub PinEvent_leftdeckdrain_Hit
  1653. PinMechSound "mech_Ball_Drop_"&RandomNumber(5), leftdeckdrain, 1, , , ""
  1654. end sub
  1655.  
  1656. sub PinEvent_rightdeckdrain_Hit
  1657. PinMechSound "mech_Ball_Drop_"&RandomNumber(5), rightdeckdrain, 1, , , ""
  1658. end sub
  1659.  
  1660. Sub PinEvent_LeftScoop_Hit
  1661. PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), LeftScoop, 1, , , ""
  1662. end sub
  1663.  
  1664. sub PinEvent_LeftScoop
  1665. PinMechSound "mech_BallRelease"&RandomNumber(5), LeftScoop, 1, 846, 2, "solenoid"
  1666. DOF 120, 2
  1667. end sub
  1668.  
  1669. Sub PinEvent_RightScoop_Hit
  1670. PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), RightScoop, 1, , , ""
  1671. end sub
  1672.  
  1673. sub PinEvent_RightScoop
  1674. PinMechSound "mech_BallRelease"&RandomNumber(5), RightScoop, 1, 847, 2, "solenoid"
  1675. DOF 121, 2
  1676. end sub
  1677.  
  1678. '*** Drop Targets ***
  1679.  
  1680. Sub PinEvent_Drop_Targets_B1toB4_Hit
  1681. PinMechSound "mech_DropTarget_Down", B1, 1, 870, 2, "droptarget"
  1682. End Sub
  1683.  
  1684. Sub PinEvent_Drop_Targets_B1toB4_Reset
  1685. PinMechSound "mech_DropTarget_Up", B1, 1, 871, 2, "droptarget"
  1686. DOF 122, 2
  1687. End Sub
  1688.  
  1689. Sub PinEvent_Drop_Targets_B5toB8_Hit
  1690. PinMechSound "mech_DropTarget_Down", B8, 1, 872, 2, "droptarget"
  1691. End Sub
  1692.  
  1693. Sub PinEvent_Drop_Targets_B5toB8_Reset
  1694. PinMechSound "mech_DropTarget_Up", B8, 1, 873, 2, "droptarget"
  1695. DOF 123, 2
  1696. End Sub
  1697.  
  1698. Sub PinEvent_Drop_Targets_B9toB12_Hit
  1699. PinMechSound "mech_DropTarget_Down", B9, 1, 874, 2, "droptarget"
  1700. End Sub
  1701.  
  1702. Sub PinEvent_Drop_Targets_B9toB12_Reset
  1703. PinMechSound "mech_DropTarget_Up", B9, 1, 875, 2, "droptarget"
  1704. DOF 124, 2
  1705. End Sub
  1706.  
  1707. Sub PinEvent_Drop_Targets_B13toB16_Hit
  1708. PinMechSound "mech_DropTarget_Down", B13, 1, 876, 2, "droptarget"
  1709. End Sub
  1710.  
  1711. Sub PinEvent_Drop_Targets_B13toB16_Reset
  1712. PinMechSound "mech_DropTarget_Up", B13, 1, 877, 2, "droptarget"
  1713. DOF 125, 2
  1714. End Sub
  1715.  
  1716. Sub PinEvent_Drop_Targets_P1toP4_Hit
  1717. PinMechSound "mech_DropTarget_Down", P1, 1, 878, 2, "droptarget"
  1718. End Sub
  1719.  
  1720. Sub PinEvent_Drop_Targets_P1toP4_Reset
  1721. PinMechSound "mech_DropTarget_Up", P1, 1, 879, 2, "droptarget"
  1722. DOF 126, 2
  1723. End Sub
  1724.  
  1725. Sub PinEvent_Drop_Targets_P5toP8_Hit
  1726. PinMechSound "mech_DropTarget_Down", P8, 1, 880, 2, "droptarget"
  1727. End Sub
  1728.  
  1729. Sub PinEvent_Drop_Targets_P5toP8_Reset
  1730. PinMechSound "mech_DropTarget_Up", P8, 1, 881, 2, "droptarget"
  1731. DOF 127, 2
  1732. End Sub
  1733.  
  1734. Sub PinEvent_Drop_Targets_P9toP12_Hit
  1735. PinMechSound "mech_DropTarget_Down", P9, 1, 882, 2, "droptarget"
  1736. End Sub
  1737.  
  1738. Sub PinEvent_Drop_Targets_P9toP12_Reset
  1739. PinMechSound "mech_DropTarget_Up", P9, 1, 883, 2, "droptarget"
  1740. DOF 128, 2
  1741. End Sub
  1742.  
  1743. Sub PinEvent_Drop_Targets_P13toP16_Hit
  1744. PinMechSound "mech_DropTarget_Down", P13, 1, 884, 2, "droptarget"
  1745. End Sub
  1746.  
  1747. Sub PinEvent_Drop_Targets_P13toP16_Reset
  1748. PinMechSound "mech_DropTarget_Up", P13, 1, 885, 2, "droptarget"
  1749. DOF 129, 2
  1750. End Sub
  1751.  
  1752. Sub PinEvent_Drop_Targets_25to34_Hit
  1753. PinMechSound "mech_DropTarget_Down", DropTarget29, 1, 886, 2, "droptarget"
  1754. End Sub
  1755.  
  1756. Sub PinEvent_Drop_Targets_25to34_Reset
  1757. PinMechSound "mech_DropTarget_Up", DropTarget29, 1, 887, 2, "droptarget"
  1758. DOF 130, 2
  1759. End Sub
  1760.  
  1761. Sub PinEvent_CenterTarget_Hit
  1762. PinMechSound "mech_DropTarget_Down", CenterTarget, 1, 888, 2, "droptarget"
  1763. End Sub
  1764.  
  1765. Sub PinEvent_CenterTarget_Reset
  1766. PinMechSound "mech_DropTarget_Up", CenterTarget, 1, 889, 2, "droptarget"
  1767. End Sub
  1768.  
  1769.  
  1770.  
  1771. '********** FP Mechanical Sounds and SSF Sounds (NO DOF) ***********
  1772.  
  1773. ' This is for pinball mechanical events that are only used with FP or PUP SSF sounds (not used for DOF feedback)
  1774.  
  1775. Sub PinEvent_Drain_Hit
  1776. PinMechSound "mech_Drain_"&RandomNumber(5), Drain, 1, , , ""
  1777. End Sub
  1778.  
  1779. Sub PinEvent_CoinIn_Sound
  1780. PinMechSound "mech_Coin_In_"&RandomNumber(3), Drain, 1, , , ""
  1781. End Sub
  1782.  
  1783. Sub PinEvent_Nudge
  1784. PinMechSound "mech_Nudge_"&RandomNumber(3), Drain, 1, , , ""
  1785. End sub
  1786.  
  1787. Sub PinEvent_Rollovers_Left_Hit
  1788. PinMechSound "mech_Rollover_"&RandomNumber(4), LeftInLaneTrigger, 1, , , ""
  1789. End Sub
  1790.  
  1791. Sub PinEvent_Rollovers_Right_Hit
  1792. PinMechSound "mech_Rollover_"&RandomNumber(4), RightInLaneTrigger, 1, , , ""
  1793. End Sub
  1794.  
  1795. Sub PinEvent_WireRamp_Left
  1796. PinMechSound "mech_wireramp_no hit", Trigger3, 1, , , ""
  1797. End Sub
  1798.  
  1799. Sub PinEvent_WireRamp_Right
  1800. PinMechSound "mech_wireramp_no hit", Trigger2, 1, , , ""
  1801. End Sub
  1802.  
  1803. Sub Left_Sling_Top_Hit
  1804. PinMechSound "mech_Rubber_"&RandomNumber(5), Left_Sling_Top, 1, , , ""
  1805. End Sub
  1806.  
  1807. Sub Left_Sling_Bottom_Hit
  1808. PinMechSound "mech_Rubber_"&RandomNumber(5), Left_Sling_Bottom, 1, , , ""
  1809. End Sub
  1810.  
  1811. Sub Left_Ramp_Drop_Hit
  1812. PinMechSound "mech_Ball_Drop_"&RandomNumber(5), Left_Ramp_Drop, 1, , , ""
  1813. End Sub
  1814.  
  1815. Sub Left_Ramp_Exit_Hit
  1816. PinMechSound "mech_Ball_Drop_"&RandomNumber(5), Left_Ramp_Exit, 1, , , ""
  1817. End Sub
  1818.  
  1819. Sub Left_Ramp_End_Hit
  1820. PinMechSound "mech_WireRamp_Stop", Left_Ramp_End, 1, , , ""
  1821. End Sub
  1822.  
  1823. Sub Left_Inlane_Metal_Hit
  1824. PinMechSound "mech_Metal_Touch_"&RandomNumber(5), Left_Inlane_Metal, 1, , , ""
  1825. End Sub
  1826.  
  1827. Sub PinEvent_LeftOutLaneTrigger_Hit
  1828. PinMechSound "mech_Rollover_"&RandomNumber(4), LeftOutLaneTrigger, 1, , , ""
  1829. If leftkicklight.state = bulbon Then PinMechSound "mech_Apron_Soft_"&RandomNumber(3), LeftOutLaneTrigger, 1, , , ""
  1830. End Sub
  1831.  
  1832. Sub Right_Sling_Top_Hit
  1833. PinMechSound "mech_Rubber_"&RandomNumber(5), Right_Sling_Top, 1, , , ""
  1834. End Sub
  1835.  
  1836. Sub Right_Sling_Bottom_Hit
  1837. PinMechSound "mech_Rubber_"&RandomNumber(5), Right_Sling_Bottom, 1, , , ""
  1838. End Sub
  1839.  
  1840. Sub Right_Ramp_Drop_Hit
  1841. PinMechSound "mech_Ball_Drop_"&RandomNumber(5), Right_Ramp_Drop, 1, , , ""
  1842. End Sub
  1843.  
  1844. Sub Right_Ramp_Exit_Hit
  1845. PinMechSound "mech_Ball_Drop_"&RandomNumber(5), Right_Ramp_Exit, 1, , , ""
  1846. End Sub
  1847.  
  1848. Sub Right_Ramp_End_Hit
  1849. PinMechSound "mech_WireRamp_Stop", Right_Ramp_End, 1, , , ""
  1850. End Sub
  1851.  
  1852. Sub Right_Inlane_Metal_Hit
  1853. PinMechSound "mech_Metal_Touch_"&RandomNumber(5), Right_Inlane_Metal, 1, , , ""
  1854. End Sub
  1855.  
  1856. Sub PinEvent_RightOutLaneTrigger_Hit
  1857. PinMechSound "mech_Rollover_"&RandomNumber(4), RightOutLaneTrigger, 1, , , ""
  1858. If rightkicklight.state = bulbon Then PinMechSound "mech_Apron_Soft_"&RandomNumber(3), RightOutLaneTrigger, 1, , , ""
  1859. End Sub
  1860.  
  1861. Sub Launch_Ramp_Hit
  1862. PinMechSound "mech_wireramp_no hit_short", Launch_Ramp, 1, , , ""
  1863. End Sub
  1864.  
  1865. Sub Launch_Ramp_Exit_Hit
  1866. PinMechSound "mech_Ball_Drop_"&RandomNumber(5), Launch_Ramp_Exit, 1, , , ""
  1867. End Sub
  1868.  
  1869. Sub Launch_Ramp_End_Hit
  1870. PinMechSound "mech_WireRamp_Stop", Launch_Ramp_End, 1, , , ""
  1871. End Sub
  1872.  
  1873. Sub PinEvent_Plunger_Pull
  1874. PinMechSound "mech_Plunger_Pull_1", PlungerLaneTrigger, 1, , , ""
  1875. End Sub
  1876.  
  1877. Sub PinEvent_Plunger_Release
  1878. PinMechSound "mech_Plunger_Release_No_Ball", PlungerLaneTrigger, 1, , , ""
  1879. End Sub
  1880.  
  1881.  
  1882. ' ################## END OF MECHANICNAL SOUNDS AND FEEDBACK ####################
  1883.  
  1884.  
  1885.  
  1886.  
  1887. ' ########## PinMechSound ##########
  1888.  
  1889. ' this command is used to output mechanical sounds to either FP, or to PUP for SSF, and also to trigger DOF for feedback (cabinets)
  1890. ' there is no benefit to using this with other table mods (it's what I use for my PinEvent mods)
  1891.  
  1892. Dim usePUP: Dim usePUP_SSF: Dim PUPStatus: Dim useFP_Sounds
  1893.  
  1894. ' DO NOT MODIFY - This version of the table only supports FP Sounds for mechanical feedback!
  1895.  
  1896. useFP_Sounds = true
  1897.  
  1898. usePUP = false: usePUP_SSF = false : PUPStatus = false
  1899.  
  1900. ' sound = mechanical / feedback sound
  1901. ' fp_item = FP table item name
  1902. ' volume = between 0 to 1.0 (FP)
  1903. ' dID = DOF Exxx trigger or PuP Exxx trigger from PuP-Pack
  1904. ' dValue = DOF trigger action. 0 = off, 1 = on, 2 = pulse
  1905. ' dType = type of feedback / sound
  1906.  
  1907. Dim PUPSoundZ : PUPSoundZ = 1
  1908. Dim PUPSoundVol : PUPSoundVol = 100
  1909. Dim TableWidth_FP : TableWidth_FP = xBAM.Table.width
  1910. Dim TableLength_FP : TableLength_FP = xBAM.Table.length
  1911.  
  1912. Sub PinMechSound(sound,fp_item,volume,dID,dValue,dType)
  1913. AddDebugText "Item: " & fp_item.Name
  1914. Dim PUPSoundX : PUPSoundX = ((fp_item.x/TableWidth_FP)*20)-10
  1915. Dim PUPSoundY : PUPSoundY = ((fp_item.y/TableLength_FP)*10)*-1
  1916. If (useFP_Sounds = true) then
  1917. playsound sound,volume : AddDebugText "playsound: "& sound
  1918. End If
  1919. If (usePUP_SSF = true and PUPStatus = true) then
  1920. PuPlayer.PuPSound sound&".wav",PUPSoundX,PUPSoundZ,PUPSoundY,PUPSoundVol,"" : AddDebugText "PuPSound: "& sound
  1921. end if
  1922. End Sub
  1923.  
  1924. 'Example: PinMechSound "mech_FlipperL", Left_Flipper, 1.0, 102, 1, "flipper"
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.  
  1931. ' ##########################################################################################
  1932.  
  1933.  
  1934. ' Define any Constants
  1935. Const constMaxPlayers = 1 ' Maximum number of players per game (between 1 and 4)
  1936. Const constBallSaverTime = 5000 ' Time in which a free ball is given if it lost very quickly
  1937. ' Set this to 0 if you don't want this feature
  1938. Const constMaxMultiplier = 6 ' Defines the maximum bonus multiplier level
  1939.  
  1940. ' Define Global Variables
  1941. '
  1942. Dim PlayersPlayingGame ' number of players playing the current game
  1943. Dim CurrentPlayer ' current player (1-4) playing the game
  1944. Dim BonusPoints(4) ' Bonus Points for the current player
  1945. Dim BonusMultiplier(4) ' Bonus Multiplier for the current player
  1946. Dim BallsRemaining(4) ' Balls remaining to play (inclusive) for each player
  1947. Dim ExtraBallsAwards(4) ' number of EB's out-standing (for each player)
  1948.  
  1949. ' Define Game Control Variables
  1950. Dim LastSwitchHit ' Id of last switch hit
  1951. Dim BallsOnPlayfield ' number of balls on playfield (multiball exclusive)
  1952. Dim BallsInLock ' number of balls in multi-ball lock
  1953.  
  1954. ' Define Game Flags
  1955. Dim bFreePlay ' Either in Free Play or Handling Credits
  1956. Dim bOnTheFirstBall ' First Ball (player one). Used for Adding New Players
  1957. Dim bBallInPlungerLane ' is there a ball in the plunger lane
  1958. Dim bBallSaverActive ' is the ball saver active
  1959. Dim bMultiBallMode ' multiball mode active ?
  1960. Dim bEnteringAHighScore ' player is entering their name into the high score table
  1961.  
  1962.  
  1963.  
  1964. ' *********************************************************************
  1965. ' ** **
  1966. ' ** Future Pinball Defined Script Events **
  1967. ' ** **
  1968. ' *********************************************************************
  1969.  
  1970.  
  1971. ' The Method Is Called Immediately the Game Engine is Ready to
  1972. ' Start Processing the Script.
  1973. '
  1974. Sub FuturePinball_BeginPlay()
  1975. ' seed the randomiser (rnd(1) function)
  1976. Randomize
  1977.  
  1978. ' initalise the player display reel to the last known player scores
  1979.  
  1980.  
  1981. ' We want the player to put in credits (Change this
  1982. bFreePlay = FALSE
  1983.  
  1984. ' kill the last switch hit (this this variable is very usefull for game control)
  1985. set LastSwitchHit = DummyTrigger
  1986.  
  1987. ' initialse any other flags
  1988. bOnTheFirstBall = FALSE
  1989. bEnteringAHighScore = FALSE
  1990. BallsOnPlayfield = 0
  1991. BallsInLock = 0
  1992. Targetkicker.createcaptiveball()
  1993. EndOfGame()
  1994. startattractmode()
  1995. nvcredits = nvcredits - nvcredits
  1996. End Sub
  1997.  
  1998. Sub Tablereset()
  1999. extraballlit = false
  2000. extraballislit = false
  2001. displayint = false
  2002. maintext.flushqueue()
  2003. pinktext.flushqueue()
  2004. bluetext.flushqueue()
  2005. maintext2.flushqueue()
  2006. pinktext2.flushqueue()
  2007. bluetext2.flushqueue()
  2008. mainseq.stopplay()
  2009. mainseq2.stopplay()
  2010. blueseq.stopplay()
  2011. pinkseq.stopplay()
  2012. enterblue = true
  2013. bluearrow.state=bulbon
  2014. pinkarrow.state=bulboff
  2015. enterpink = false
  2016. leftkick = false
  2017. rightkick = true
  2018. firstballoverride = true
  2019. locklit = false
  2020. resetlock
  2021. balllockleft = false
  2022. balllockright = false
  2023. multiballlit = false
  2024. quickmballlit = false
  2025. song = 1
  2026. playsong()
  2027. playintro()
  2028. screenattract.enabled = false
  2029. advxleft = false
  2030. advxright = false
  2031. lightkickbackleft = false
  2032. lightkickbackright = false
  2033. lightkickback()
  2034. rightkicklight.state = bulbon
  2035. leftlooptarget.popdown()
  2036. Rightlooptarget.popdown()
  2037. Resetbumpers()
  2038. nvscore(currentplayer) = nvscore(currentplayer) - nvscore(currentplayer)
  2039. bluescore = bluescore - bluescore
  2040. pinkscore = pinkscore - pinkscore
  2041. bluebonus = bluebonus - bluebonus
  2042. pinkbonus = pinkbonus - pinkbonus
  2043. mainbonus = mainbonus - mainbonus
  2044. addscore(0)
  2045. addscoreblue(0)
  2046. addscorepink(0)
  2047. resetlights()
  2048. resetquickmball()
  2049. resetextraball()
  2050. bonusx = bonusx - bonusx
  2051. ballslocked = ballslocked - ballslocked
  2052. attracter.enabled = false
  2053. messages.enabled = false
  2054. message = message - message
  2055. tie = false
  2056. bluewins = false
  2057. pinkwins = false
  2058. end sub
  2059.  
  2060. sub Resetlights()
  2061.  
  2062. twoxlight.set bulboff, "10", 150
  2063. threexlight.set bulboff, "10", 150
  2064. fourxlight.set bulboff, "10", 150
  2065. fivexlight.set bulboff, "10", 150
  2066. leftkicklight.set bulboff, "10", 150
  2067.  
  2068. shootagainlight.set bulboff, "10", 150
  2069.  
  2070. advx1.set bulboff, "10", 150
  2071. looplight1.set bulboff, "10", 150
  2072. quickscorelight1.set bulboff, "10", 150
  2073.  
  2074. advx2.set bulboff, "10", 150
  2075. looplight2.set bulboff, "10", 150
  2076. quickscorelight2.set bulboff, "10", 150
  2077.  
  2078. Lock1.set bulboff, "10", 150
  2079. Lock2.set bulboff, "10", 150
  2080. Lock3.set bulboff, "10", 150
  2081. Lock4.set bulboff, "10", 150
  2082.  
  2083. Quick1.set bulboff, "10", 150
  2084. Quick2.set bulboff, "10", 150
  2085. Quick3.set bulboff, "10", 150
  2086. Quick4.set bulboff, "10", 150
  2087. Quick5.set bulboff, "10", 150
  2088.  
  2089. advexballlight.set bulboff, "10", 150
  2090. jackpotlight.set bulboff, "10", 150
  2091. lightkickback1.set bulboff, "10", 150
  2092. lightkickback2.set bulboff, "10", 150
  2093.  
  2094. Quicksignbulb1.set bulboff, "10", 150
  2095. Quicksignbulb2.set bulboff, "10", 150
  2096. Quicksignbulb3.set bulboff, "10", 150
  2097. Quicksignbulb4.set bulboff, "10", 150
  2098.  
  2099. HundredK1.set bulboff, "10", 150
  2100. Locklit1.set bulboff, "10", 150
  2101. HundredK2.set bulboff, "10", 150
  2102. Locklit2.set bulboff, "10", 150
  2103.  
  2104. B1L.set bulboff, "10", 150
  2105. B2L.set bulboff, "10", 150
  2106. B3L.set bulboff, "10", 150
  2107. B4L.set bulboff, "10", 150
  2108.  
  2109. P1L.set bulboff, "10", 150
  2110. P2L.set bulboff, "10", 150
  2111. P3L.set bulboff, "10", 150
  2112. P4L.set bulboff, "10", 150
  2113.  
  2114. B5L.set bulboff, "10", 150
  2115. B6L.set bulboff, "10", 150
  2116. B7L.set bulboff, "10", 150
  2117. B8L.set bulboff, "10", 150
  2118.  
  2119. P5L.set bulboff, "10", 150
  2120. P6L.set bulboff, "10", 150
  2121. P7L.set bulboff, "10", 150
  2122. P8L.set bulboff, "10", 150
  2123.  
  2124. B9L.set bulboff, "10", 150
  2125. B10L.set bulboff, "10", 150
  2126. B11L.set bulboff, "10", 150
  2127. B12L.set bulboff, "10", 150
  2128.  
  2129. P9L.set bulboff, "10", 150
  2130. P10L.set bulboff, "10", 150
  2131. P11L.set bulboff, "10", 150
  2132. P12L.set bulboff, "10", 150
  2133.  
  2134. bulb31.set bulboff, "10", 150
  2135. bulb32.set bulboff, "10", 150
  2136. extraballlight.set bulboff, "10", 150
  2137.  
  2138. skill1.set bulboff, "10", 150
  2139. skill2.set bulboff, "10", 150
  2140. skill3.set bulboff, "10", 150
  2141.  
  2142. bumper1.state = bulboff
  2143. bumper2.state = bulboff
  2144. bumper3.state = bulboff
  2145.  
  2146. end sub
  2147.  
  2148.  
  2149. ' This Method is Called when the user has exited the Game Player. It should
  2150. ' save any RAM variables that need to be persistant.
  2151. '
  2152. Sub FuturePinball_EndPlay()
  2153. DOFClose()
  2154. End Sub
  2155.  
  2156.  
  2157. ' The User Has Pressed A Key on the Keyboard..
  2158. '
  2159. Sub FuturePinball_KeyPressed(ByVal KeyCode)
  2160.  
  2161.  
  2162. If (KeyCode = 45) Then GI_ON: Inserts_ALL_ON: Inserts_Brightness_GION: GI_White
  2163. If (KeyCode = 47) Then GI_OFF: Inserts_Brightness_GIOFF
  2164. If (KeyCode = 48) Then
  2165. Select Case RandomNumber(3)
  2166. Case 1: GI_ON: Inserts_ALL_ON: Inserts_Brightness_GION: GI_White
  2167. Case 2: GI_ON: Inserts_ALL_ON: Inserts_Brightness_GION: GI_Blue_Pink
  2168. Case 3: GI_ON: Inserts_ALL_ON: Inserts_Brightness_GION: GI_Blue_red
  2169. End Select
  2170. end if
  2171.  
  2172. 'AddDebugText "KeyCode = " & KeyCode
  2173. 'AddDebugText "Titled = " & fpTilted
  2174. '
  2175. ' Process any keys which are valid at all times
  2176.  
  2177. If (KeyCode = GetKeyCode(Special1Key)) Then GI_Color_Preset_Change
  2178.  
  2179. If (KeyCode = GetKeyCode(Special2Key)) Then GI_Brightness_Change
  2180.  
  2181. ' The Player has Inserted a Coin
  2182. If (KeyCode = GetKeyCode(InsertCoinKey)) Then
  2183. 'PlaySound "CoinIn"
  2184. PinEvent_CoinIn_Sound
  2185. playmusic 8, "sound 8", false
  2186. nvCredits = nvCredits + 1
  2187. If (fpGameInPlay = false) then
  2188. playpressstart()
  2189. sattract = 1
  2190. screenattract.enabled = true
  2191. mainseq.updateinterval = 50
  2192. Mainseq.Play SeqMiddleOutHorizOn, 30
  2193. GI_ON
  2194. Displayinterrupt()
  2195. maintext.flushqueue()
  2196. bluetext.flushqueue()
  2197. pinktext.flushqueue()
  2198. Maintext.queuetext "Credits " & nvcredits , sescrollupover, 100
  2199. bluetext.text = " "
  2200. pinktext.text = " "
  2201. maintext2.flushqueue()
  2202. bluetext2.flushqueue()
  2203. pinktext2.flushqueue()
  2204. Maintext2.queuetext "Credits " & nvcredits , sescrollupover, 100
  2205. bluetext2.text = " "
  2206. pinktext2.text = " "
  2207. message = message - message
  2208.  
  2209. end if
  2210.  
  2211. 'AddDebugText "Insert Coin, Credits = " & nvCredits
  2212. ' If not Tilted, then give some feed back to the player
  2213. If (fpTilted = FALSE) Then
  2214. ' Flash the Slingshot Bulbs. This is rather Common on Pinball machines
  2215. ' though you can do anything at this point
  2216. GIflash()
  2217. ' Maybe play a sound at this point or put something on the display
  2218. End If
  2219. End If
  2220.  
  2221. ' The Player is Pulling back the Plunger
  2222. If (KeyCode = GetKeyCode(PlungerKey)) Then
  2223. Plunger.Pull
  2224. PinEvent_Plunger_Pull
  2225. If bBallinplungerlane = true then
  2226. playmusic 8, "sound26", false
  2227. end if
  2228. End If
  2229. '
  2230. ' Process The Next set of keys depeding of wether there is a game in progress or not
  2231. '
  2232.  
  2233. ' Is A Game in Progress?
  2234. If (fpGameInPlay = TRUE) Then
  2235. ' and not Tilted ?
  2236. If (fpTilted = FALSE) Then
  2237.  
  2238. ' If the Left Flipper Key Has Been Press, Activate The Left Flipper(s)
  2239. If (KeyCode = GetKeyCode(LeftFlipperKey)) Then
  2240. LeftFlipper.SolenoidOn
  2241. LeftFlipper2.SolenoidOn
  2242. LeftFlipper3.SolenoidOn
  2243. LeftFlipper4.SolenoidOn
  2244. 'PlaySound "Flipper"
  2245. PinEvent_Left_Flipper_On
  2246. if kickbacklit = true then
  2247. Rightkick = true
  2248. Leftkick = false
  2249. Rightkicklight.state=bulbon
  2250. Leftkicklight.state=bulboff
  2251. end if
  2252. End If
  2253.  
  2254. ' If the Right Flipper Key Has Been Press, Activate The Right Flipper(s)
  2255. If (KeyCode = GetKeyCode(RightFlipperKey)) Then
  2256. RightFlipper.SolenoidOn
  2257. RightFlipper2.SolenoidOn
  2258. RightFlipper3.SolenoidOn
  2259. RightFlipper4.SolenoidOn
  2260. 'PlaySound "Flipper"
  2261. PinEvent_Right_Flipper_On
  2262. If kickbacklit = true then
  2263. Rightkick = false
  2264. Leftkick = true
  2265. Rightkicklight.state=bulboff
  2266. Leftkicklight.state=bulbon
  2267. end if
  2268. End If
  2269.  
  2270. ' Another player starting?
  2271. If (KeyCode = GetKeyCode(StartGameKey)) Then
  2272. ' must be less than max players and must be on the the very first ball of the game
  2273. If ((PlayersPlayingGame < constMaxPlayers) And (bOnTheFirstBall = TRUE)) Then
  2274. ' free play or credits
  2275. If (bFreePlay = TRUE) Then
  2276. ' add the extra player
  2277. PlayersPlayingGame = PlayersPlayingGame + 1
  2278. 'AddDebugText "Extra Player (Free Play)" & PlayersPlayingGame
  2279. ' Update the stats
  2280. nvTotalGamesPlayed = nvTotalGamesPlayed + 1
  2281. Else
  2282. If (nvCredits > 0) then
  2283. PlayersPlayingGame = PlayersPlayingGame + 1
  2284. 'AddDebugText "Extra Player (Credits)" & PlayersPlayingGame
  2285. ' update the stats
  2286. nvTotalGamesPlayed = nvTotalGamesPlayed + 1
  2287. nvCredits = nvCredits - 1
  2288. Else
  2289. ' Not Enough Credits to start a game.
  2290. ' Maybe Play a Sound or put "Insert Coin" on a display
  2291. End If
  2292. End If
  2293. End If
  2294. End If
  2295. End If ' If (fpTilted)
  2296.  
  2297. Else ' If (fpGameInPlay)
  2298.  
  2299. ' there isn't a game in play (we are in the attract mode)
  2300. ' wait for the start key to be pressed and start a new game
  2301. If (KeyCode = GetKeyCode(StartGameKey)) Then
  2302. ' Free Play Mode ?
  2303. If (bFreePlay = TRUE) Then
  2304. ' Yep. Only allow a game to Start if there are no balls on the playfield.
  2305. ' This can happen if the player starts a game too quick after finishing the
  2306. ' last game and the machine is ejecting any locked balls.
  2307. If (BallsOnPlayfield = 0) Then
  2308. ' A Game is now in progress, reset the table for a new Game
  2309. ResetForNewGame()
  2310. End If
  2311. Else
  2312. If (nvCredits = 0) then
  2313. Displayinterrupt()
  2314. playmusic 2, "sound63", false
  2315. maintext.flushqueue()
  2316. bluetext.flushqueue()
  2317. pinktext.flushqueue()
  2318. Maintext.queuetext " Insert Coin ", sescrollupover, 100
  2319. bluetext.text = " "
  2320. pinktext.text = " "
  2321. maintext2.flushqueue()
  2322. bluetext2.flushqueue()
  2323. pinktext2.flushqueue()
  2324. Maintext2.queuetext " Insert Coin ", sescrollupover, 100
  2325. bluetext2.text = " "
  2326. pinktext2.text = " "
  2327. message = message - message
  2328. end if
  2329. ' paying by credits, do we have any ?
  2330. If (nvCredits > 0) Then
  2331. ' Yep. Only allow a game to start if there are no balls on the playfield
  2332. If (BallsOnPlayfield = 0) Then
  2333. ' remove a credit
  2334. nvCredits = nvCredits - 1
  2335. ' much the same as above
  2336. ResetForNewGame()
  2337. End If
  2338. Else
  2339. ' Not Enough Credits to start a game.
  2340. ' Maybe Play a Sound or put "Insert Coin" on a display
  2341. End If
  2342. End If
  2343. End If
  2344.  
  2345. End If ' If (fpGameInPlay)
  2346. End Sub
  2347.  
  2348. dim kickbacklit
  2349.  
  2350. ' The User Has Released A Key on the Keyboard..
  2351. '
  2352. Sub FuturePinball_KeyReleased(ByVal KeyCode)
  2353.  
  2354. '
  2355. ' Process any keys which are valid at all times
  2356. '
  2357.  
  2358. ' The Player has released the Plunger, Let it go..
  2359. If (KeyCode = GetKeyCode(PlungerKey)) Then
  2360. Plunger.LetGo
  2361. 'PlaySound "PlungerRelease"
  2362. PinEvent_Plunger_Release
  2363. End If
  2364.  
  2365. '
  2366. ' Process The Next set of keys depeding of wether there is a game in progress or not
  2367. '
  2368.  
  2369. ' Is A Game in Progress?
  2370. If (fpGameInPlay = TRUE) Then
  2371. ' and not tilted
  2372. If (fpTilted = FALSE) Then
  2373.  
  2374. ' The Left Flipper Key has been released, Turn Off the Left Flipper(s)
  2375. If (KeyCode = GetKeyCode(LeftFlipperKey)) Then
  2376. LeftFlipper.SolenoidOff
  2377. LeftFlipper2.SolenoidOff
  2378. LeftFlipper3.SolenoidOff
  2379. LeftFlipper4.SolenoidOff
  2380. PinEvent_Left_Flipper_Off
  2381. End If
  2382.  
  2383. ' The Right Flipper Key has been released, Turn Off the Right Flipper(s)
  2384. If (KeyCode = GetKeyCode(RightFlipperKey)) Then
  2385. RightFlipper.SolenoidOff
  2386. RightFlipper2.SolenoidOff
  2387. RightFlipper3.SolenoidOff
  2388. RightFlipper4.SolenoidOff
  2389. PinEvent_Right_Flipper_Off
  2390. End If
  2391. End If
  2392. End If
  2393. End Sub
  2394.  
  2395.  
  2396. ' The User Has Paused The Game..
  2397. '
  2398. Sub FuturePinball_Paused()
  2399. End Sub
  2400.  
  2401.  
  2402. ' The User Has UnPaused (Resumed) The Game..
  2403. '
  2404. Sub FuturePinball_UnPaused()
  2405. End Sub
  2406.  
  2407.  
  2408. ' The Played has Nudged the Table a little too hard/much and a Warning
  2409. ' must be given to the player
  2410. '
  2411. Sub FuturePinball_TiltWarning(ByVal Warnings)
  2412. 'AddDebugText "Tilt Warning" & Warnings
  2413. 'PlaySound "Tilt"
  2414. PinEvent_Nudge
  2415. ' play a sound at this point and put something on a display
  2416. End Sub
  2417.  
  2418.  
  2419. ' The Player has tilted the machine (Too Many Warnings)
  2420. '
  2421. Sub FuturePinball_Tilted()
  2422. 'AddDebugText "**Tilted**"
  2423.  
  2424. ' play a sound
  2425. PlaySound "Tilt"
  2426. stopmusic 1
  2427. stopmusic 2
  2428. stopmusic 3
  2429. stopmusic 4
  2430. stopmusic 5
  2431. stopmusic 6
  2432. stopmusic 7
  2433. stopmusic 8
  2434. advx1.state = bulboff
  2435. advx2.state = bulboff
  2436. advexballlight.state = bulboff
  2437. lightkickback1.state = bulboff
  2438. lightkickback2.state = bulboff
  2439. bluebonus = bluebonus - bluebonus
  2440. pinkbonus = pinkbonus - pinkbonus
  2441. mainbonus = mainbonus - mainbonus
  2442.  
  2443. displayint = false
  2444.  
  2445. resetalltargets()
  2446.  
  2447. tilttimer.enabled = true
  2448.  
  2449. ' ensure that the flippers are down (as the keys won't work from now on)
  2450. RightFlipper.SolenoidOff
  2451. RightFlipper2.SolenoidOff
  2452. RightFlipper3.SolenoidOff
  2453. RightFlipper4.SolenoidOff
  2454. LeftFlipper.SolenoidOff
  2455. LeftFlipper2.SolenoidOff
  2456. LeftFlipper3.SolenoidOff
  2457. LeftFlipper4.SolenoidOff
  2458. PinEvent_Left_Flipper_Off
  2459. PinEvent_Right_Flipper_Off
  2460.  
  2461. ' you may wish to turn off any lights at this point. (The Light Sequencer
  2462. ' will make this very easy)
  2463.  
  2464. ' start the tilt recovery timer which waits until all balls have drained
  2465. ' before doing the end of ball sequence (or end of game)
  2466. TiltRecoveryTimer.Interval = 2000
  2467. TiltRecoveryTimer.Enabled = TRUE
  2468. End Sub
  2469.  
  2470. sub tilttimer_expired()
  2471. stopmusic 1
  2472. stopmusic 2
  2473. stopmusic 3
  2474. stopmusic 4
  2475. stopmusic 5
  2476. stopmusic 6
  2477. stopmusic 7
  2478. stopmusic 8
  2479. mainseq.stopplay()
  2480. mainseq2.stopplay()
  2481. blueseq.stopplay()
  2482. pinkseq.stopplay()
  2483. maintext.flushqueue()
  2484. bluetext.flushqueue()
  2485. pinktext.flushqueue()
  2486. maintext2.flushqueue()
  2487. bluetext2.flushqueue()
  2488. pinktext2.flushqueue()
  2489. maintext.text = "tilttilttilttilt"
  2490. bluetext.text = " "
  2491. pinktext.text = " "
  2492. maintext2.text = "tilttilttilttilt"
  2493. bluetext2.text = " "
  2494. pinktext2.text = " "
  2495. end sub
  2496.  
  2497.  
  2498. ' A Music Channel has finished Playing.
  2499. '
  2500. ' Channel is set to the channel number that has finished.
  2501. '
  2502. Sub FuturePinball_MusicFinished(ByVal Channel)
  2503.  
  2504. End Sub
  2505.  
  2506.  
  2507. ' High Score entry has been completed by the player.
  2508. '
  2509. ' Position is set to the position in the high score table (1 - 4)
  2510. ' if it is set to 0 then there was no new High Score
  2511. '
  2512. ' Special is set to 1 if the Special High Score was beaten
  2513. '
  2514. Sub FuturePinball_NameEntryComplete(ByVal Position, ByVal Special)
  2515. ' has the player beaten a high score
  2516. If (Position <> 0) Then
  2517. ' maybe award something (like an extra credit) based on the high score position
  2518. End If
  2519.  
  2520. ' has the player beaten the special score (if applicable)
  2521. If (Special <> 0) Then
  2522. End If
  2523.  
  2524. bEnteringAHighScore = FALSE
  2525. LookAtPlayfield()
  2526. gameover()
  2527.  
  2528. ' check to see if there are any more players playing to the current game
  2529. EndOfBallComplete()
  2530. End Sub
  2531.  
  2532.  
  2533.  
  2534. ' *********************************************************************
  2535. ' ** **
  2536. ' ** User Defined Script Events **
  2537. ' ** **
  2538. ' *********************************************************************
  2539.  
  2540. ' Initialise the Table for a new Game
  2541. '
  2542. Sub ResetForNewGame()
  2543. Dim i
  2544.  
  2545. 'AddDebugText "ResetForNewGame"
  2546.  
  2547. ' get Future Pinball to zero out the nvScore (and nvSpecialScore) Variables
  2548. ' aswell and ensure the camera is looking in the right direction.
  2549. ' this also Sets the fpGameInPlay flag
  2550. BeginGame()
  2551. Tablereset()
  2552.  
  2553. ' increment the total number of games played
  2554. nvTotalGamesPlayed = nvTotalGamesPlayed + 1
  2555.  
  2556. ' Start with player 1
  2557. CurrentPlayer = 1
  2558.  
  2559. ' Single player (for now, more can be added in later)
  2560. PlayersPlayingGame = 1
  2561.  
  2562. ' We are on the First Ball (for Player One)
  2563. bOnTheFirstBall = TRUE
  2564.  
  2565. ' initialise all the variables which are used for the duration of the game
  2566. ' (do all players incase any new ones start a game)
  2567. For i = 1 To constMaxPlayers
  2568. ' Bonus Points for the current player
  2569. BonusPoints(i) = 0
  2570. ' Initial Bonus Multiplier
  2571. BonusMultiplier(i) = 1
  2572. ' Balls Per Game
  2573. BallsRemaining(i) = nvBallsPerGame
  2574. ' Number of EB's out-standing
  2575. ExtraBallsAwards(i) = 0
  2576. Next
  2577.  
  2578. ' initialise any other flags
  2579. bMultiBallMode = FALSE
  2580.  
  2581. ' you may wish to start some music, play a sound, do whatever at this point
  2582.  
  2583. ' set up the start delay to handle any Start of Game Attract Sequence
  2584. FirstBallDelayTimer.Interval = 500
  2585. FirstBallDelayTimer.Enabled = TRUE
  2586. End Sub
  2587.  
  2588. sub lightkickback()
  2589. if kickbacklit = false then
  2590. kickbacklit = true
  2591. rightkick = true
  2592. Rightkicklight.state=bulbon
  2593. end if
  2594. end sub
  2595.  
  2596.  
  2597. ' This Timer is used to delay the start of a game to allow any attract sequence to
  2598. ' complete. When it expires it creates a ball for the player to start playing with
  2599. '
  2600. Sub FirstBallDelayTimer_Expired()
  2601. ' stop the timer
  2602. FirstBallDelayTimer.Enabled = FALSE
  2603.  
  2604. ' reset the table for a new ball
  2605. ResetForNewPlayerBall()
  2606.  
  2607. ' create a new ball in the shooters lane
  2608. CreateNewBall()
  2609. End Sub
  2610.  
  2611.  
  2612. ' (Re-)Initialise the Table for a new ball (either a new ball after the player has
  2613. ' lost one or we have moved onto the next player (if multiple are playing))
  2614. '
  2615. Sub ResetForNewPlayerBall()
  2616. ' make sure the correct display is upto date
  2617. AddScore(0)
  2618.  
  2619. ' set the current players bonus multiplier back down to 1X
  2620. SetBonusMultiplier(1)
  2621.  
  2622. ' reset any drop targets, lights, game modes etc..
  2623. End Sub
  2624.  
  2625. Dim firstballoverride
  2626.  
  2627. ' Create a new ball on the Playfield
  2628. '
  2629. Sub CreateNewBall()
  2630. GI_ON
  2631. ' create a ball in the plunger lane kicker.
  2632. PlungerKicker.CreateBall
  2633. Resetlooptriggers()
  2634. Ballindrain = false
  2635. If bonusx = 0 then
  2636. twoxlight.state = bulboff
  2637. threexlight.state = bulboff
  2638. fourxlight.state = bulboff
  2639. fivexlight.state = bulboff
  2640. end if
  2641.  
  2642. ' There is a (or another) ball on the playfield
  2643. BallsOnPlayfield = BallsOnPlayfield + 1
  2644.  
  2645. ' kick it out..
  2646. PlungerKicker.SolenoidPulse
  2647. PinEvent_PlungerKicker
  2648.  
  2649. skillshottimer.enabled = true
  2650.  
  2651. If firstballoverride = false then
  2652.  
  2653. Playballreleasesound()
  2654.  
  2655. If (locklit = false) and (quickmultiballon = false) then
  2656. Song = 7
  2657. playsong()
  2658. end if
  2659.  
  2660. If (locklit = true) and (quickmultiballon = false) then
  2661. Song = 6
  2662. playsong()
  2663. end if
  2664.  
  2665. If Quickmultiballon = true then
  2666. Song = 4
  2667. playsong()
  2668. end if
  2669.  
  2670. End if
  2671.  
  2672. End Sub
  2673.  
  2674. Sub entrancetrigger_hit()
  2675. addbonus(2000)
  2676. addbonusblue(1000)
  2677. addbonuspink(1000)
  2678. firstballoverridetimer.enabled = true
  2679. awardskillshot()
  2680.  
  2681. If firstballoverride = false then
  2682.  
  2683. If (locklit = false) and (quickmultiballon = false) then
  2684. playmusic 1, "bvp main theme restart", true
  2685. end if
  2686.  
  2687. If (locklit = true) and (quickmultiballon = false) then
  2688. Song = 2
  2689. playsong()
  2690. end if
  2691.  
  2692. If Quickmultiballon = true then
  2693. Song = 5
  2694. playsong()
  2695. centerholetimer.enabled = true
  2696. ksoundtimer.enabled = true
  2697. quickmultiballsafety = false
  2698. quickmultiballsafetytimer.enabled = false
  2699. If enterpink = true then
  2700. activestrobe1 = 11
  2701. activestrobe2 = 8
  2702. end if
  2703. If enterblue = true then
  2704. activestrobe1 = 11
  2705. activestrobe2 = 3
  2706. end if
  2707. end if
  2708.  
  2709. end if
  2710.  
  2711. end sub
  2712.  
  2713. sub quickmultiballsafetytimer_expired()
  2714. quickmultiballsafetytimer.enabled = false
  2715. If quickmultiballsafety = true then
  2716. centerholetimer.enabled = true
  2717. quickmultiballsafety = false
  2718. ksoundtimer.enabled = true
  2719. If enterpink = true then
  2720. activestrobe1 = 11
  2721. activestrobe2 = 8
  2722. end if
  2723. If enterblue = true then
  2724. activestrobe1 = 11
  2725. activestrobe2 = 3
  2726. end if
  2727. If Quickmultiballon = true then
  2728. Song = 5
  2729. playsong()
  2730. end if
  2731. end if
  2732. end sub
  2733.  
  2734. sub firstballoverridetimer_expired()
  2735. firstballoverridetimer.enabled = false
  2736. firstballoverride = false
  2737. end sub
  2738.  
  2739. ' The Player has lost his ball (there are no more balls on the playfield).
  2740. ' Handle any bonus points awarded
  2741. '
  2742.  
  2743. dim ballindrain
  2744.  
  2745. Sub EndOfBall()
  2746.  
  2747. GI_OFF
  2748.  
  2749. ballindrain = true
  2750.  
  2751. If (fptilted = false) then
  2752.  
  2753. stopmusic 2
  2754. stopmusic 3
  2755. stopmusic 4
  2756. stopmusic 5
  2757. stopmusic 6
  2758. stopmusic 7
  2759. advx1.state = bulboff
  2760. advx2.state = bulboff
  2761. advexballlight.state = bulboff
  2762. lightkickback1.state = bulboff
  2763. lightkickback2.state = bulboff
  2764. mainseq.stopplay()
  2765. mainseq2.stopplay()
  2766. blueseq.stopplay()
  2767. pinkseq.stopplay()
  2768. maintext.flushqueue()
  2769. bluetext.flushqueue()
  2770. pinktext.flushqueue()
  2771. maintext2.flushqueue()
  2772. bluetext2.flushqueue()
  2773. pinktext2.flushqueue()
  2774. displayint = false
  2775. addscore(0)
  2776. addscoreblue(0)
  2777. addscorepink(0)
  2778.  
  2779. If locklit = true then
  2780. playmusic 1, "bvp locklit ball lost", false
  2781. end if
  2782.  
  2783. if locklit = false then
  2784. playmusic 1, "bvp main ball lost", false
  2785. end if
  2786.  
  2787. end if
  2788.  
  2789. Dim BonusDelayTime
  2790.  
  2791. 'AddDebugText "EndOfBall"
  2792.  
  2793. ' the first ball has been lost. From this point on no new players can join in
  2794. bOnTheFirstBall = FALSE
  2795.  
  2796. ' only process any of this if the table is not tilted. (the tilt recovery
  2797. ' mechanism will handle any extra balls or end of game)
  2798. If (fpTilted = FALSE) Then
  2799. Dim AwardPoints
  2800.  
  2801. ' add in any bonus points (multipled by the bunus multiplier)
  2802. AwardPoints = BonusPoints(CurrentPlayer) * BonusMultiplier(CurrentPlayer)
  2803. AddScore(AwardPoints)
  2804. Awardbonus()
  2805. 'AddDebugText "Bonus Points = " & AwardPoints
  2806.  
  2807. ' you may wish to do some sort of display effects which the bonus is
  2808. ' being added to the players score
  2809.  
  2810. ' add a bit of a delay to allow for the bonus points to be added up
  2811. If (ballsremaining(currentplayer) > 1) or (extraball = true) then
  2812. If bonusx = 0 then
  2813. BonusDelayTime = 7000
  2814. end if
  2815. If bonusx = 1 then
  2816. BonusDelayTime = 8000
  2817. end if
  2818. If bonusx = 2 then
  2819. BonusDelayTime = 9000
  2820. end if
  2821. If bonusx = 3 then
  2822. BonusDelayTime = 10000
  2823. end if
  2824. If bonusx = 4 then
  2825. BonusDelayTime = 11000
  2826. end if
  2827. end if
  2828. If (ballsremaining(currentplayer) = 1) and (extraball = false) then
  2829. If bonusx = 0 then
  2830. BonusDelayTime = 8000
  2831. end if
  2832. If bonusx = 1 then
  2833. BonusDelayTime = 9000
  2834. end if
  2835. If bonusx = 2 then
  2836. BonusDelayTime = 10000
  2837. end if
  2838. If bonusx = 3 then
  2839. BonusDelayTime = 11000
  2840. end if
  2841. If bonusx = 4 then
  2842. BonusDelayTime = 12000
  2843. end if
  2844. end if
  2845. Else
  2846. ' no bonus, so move to the next state quickly
  2847. BonusDelayTime = 20
  2848. End If
  2849.  
  2850. If fptilted = true then
  2851. BonusDelayTime = 20
  2852. EndOfBallTimer.Interval = BonusDelayTime
  2853. EndOfBallTimer.Enabled = TRUE
  2854. addscoreblue(0)
  2855. addscorepink(0)
  2856. end if
  2857.  
  2858.  
  2859. ' start the end of ball timer which allows you to add a delay at this point
  2860. EndOfBallTimer.Interval = BonusDelayTime
  2861. EndOfBallTimer.Enabled = TRUE
  2862. End Sub
  2863.  
  2864. Dim Bonus
  2865. Dim MBonus
  2866. Dim BlueMBonus
  2867. Dim PinkMBonus
  2868. Dim Bonuscounton
  2869.  
  2870. sub awardbonus()
  2871. Bonusshow.enabled = true
  2872. Mbonus = MainBonus
  2873. BlueMBonus = BlueBonus
  2874. PinkMBonus = PinkBonus
  2875. bonuscounton = true
  2876. shutoffmainplay()
  2877. end sub
  2878.  
  2879. sub bonusshow_expired()
  2880. Bonus = bonus + 1
  2881. If bonus = 20 then
  2882. playmusic 2, "sound41", false
  2883. Maintext.text = "Outhole Bonus"
  2884. bluetext.text = (bluebonus)
  2885. Maintext2.text = "Outhole Bonus"
  2886. bluetext2.text = (bluebonus)
  2887. end if
  2888. If bonus = 25 then
  2889. playmusic 2, "sound38", false
  2890. pinktext.text = (pinkbonus)
  2891. pinktext2.text = (pinkbonus)
  2892. end if
  2893.  
  2894. If (Bonus = 30) and (BonusX = 0) then
  2895. countbonus()
  2896. end if
  2897.  
  2898. If (Bonus = 30) and (BonusX = 1) then
  2899. Addbonus(Mbonus)
  2900. Addbonusblue(BlueMBonus)
  2901. AddBonuspink(PinkMBonus)
  2902. bluetext.text = (bluebonus)
  2903. pinktext.text = (pinkbonus)
  2904. bluetext2.text = (bluebonus)
  2905. pinktext2.text = (pinkbonus)
  2906. playmusic 2, "sound53", false
  2907. twoxlight.flashforms 500, 50, bulbon
  2908. maintext.text = "22222222XXXXXXXX"
  2909. maintext2.text = "22222222XXXXXXXX"
  2910. screen.frame 98
  2911. end if
  2912. If (Bonus = 35) and (BonusX = 1) then
  2913. countbonus()
  2914. end if
  2915.  
  2916. If (Bonus = 30) and (BonusX = 2) then
  2917. Addbonus(Mbonus)
  2918. Addbonusblue(BlueMBonus)
  2919. AddBonuspink(PinkMBonus)
  2920. bluetext.text = (bluebonus)
  2921. pinktext.text = (pinkbonus)
  2922. bluetext2.text = (bluebonus)
  2923. pinktext2.text = (pinkbonus)
  2924. playmusic 2, "sound53", false
  2925. twoxlight.flashforms 500, 50, bulbon
  2926. maintext.text = "22222222XXXXXXXX"
  2927. maintext2.text = "22222222XXXXXXXX"
  2928. screen.frame 98
  2929. end if
  2930. If (Bonus = 35) and (BonusX = 2) then
  2931. Addbonus(Mbonus)
  2932. Addbonusblue(BlueMBonus)
  2933. AddBonuspink(PinkMBonus)
  2934. bluetext.text = (bluebonus)
  2935. pinktext.text = (pinkbonus)
  2936. bluetext2.text = (bluebonus)
  2937. pinktext2.text = (pinkbonus)
  2938. playmusic 3, "sound53a", false
  2939. stopmusic 2
  2940. threexlight.flashforms 500, 50, bulbon
  2941. maintext.text = "33333333XXXXXXXX"
  2942. maintext2.text = "33333333XXXXXXXX"
  2943. screen.frame 121
  2944. end if
  2945. If (Bonus = 40) and (BonusX = 2) then
  2946. countbonus()
  2947. end if
  2948.  
  2949. If (Bonus = 30) and (BonusX = 3) then
  2950. Addbonus(Mbonus)
  2951. Addbonusblue(BlueMBonus)
  2952. AddBonuspink(PinkMBonus)
  2953. bluetext.text = (bluebonus)
  2954. pinktext.text = (pinkbonus)
  2955. bluetext2.text = (bluebonus)
  2956. pinktext2.text = (pinkbonus)
  2957. playmusic 2, "sound53", false
  2958. twoxlight.flashforms 500, 50, bulbon
  2959. maintext.text = "22222222XXXXXXXX"
  2960. maintext2.text = "22222222XXXXXXXX"
  2961. screen.frame 98
  2962. end if
  2963. If (Bonus = 35) and (BonusX = 3) then
  2964. Addbonus(Mbonus)
  2965. Addbonusblue(BlueMBonus)
  2966. AddBonuspink(PinkMBonus)
  2967. bluetext.text = (bluebonus)
  2968. pinktext.text = (pinkbonus)
  2969. bluetext2.text = (bluebonus)
  2970. pinktext2.text = (pinkbonus)
  2971. playmusic 3, "sound53a", false
  2972. threexlight.flashforms 500, 50, bulbon
  2973. maintext.text = "33333333XXXXXXXX"
  2974. maintext2.text = "33333333XXXXXXXX"
  2975. screen.frame 121
  2976. end if
  2977. If (Bonus = 40) and (BonusX = 3) then
  2978. Addbonus(Mbonus)
  2979. Addbonusblue(BlueMBonus)
  2980. AddBonuspink(PinkMBonus)
  2981. bluetext.text = (bluebonus)
  2982. pinktext.text = (pinkbonus)
  2983. bluetext2.text = (bluebonus)
  2984. pinktext2.text = (pinkbonus)
  2985. playmusic 2, "sound53", false
  2986. fourxlight.flashforms 500, 50, bulbon
  2987. maintext.text = "44444444XXXXXXXX"
  2988. maintext2.text = "44444444XXXXXXXX"
  2989. screen.frame 144
  2990. end if
  2991. If (Bonus = 45) and (BonusX = 3) then
  2992. countbonus()
  2993. end if
  2994.  
  2995. If (Bonus = 30) and (BonusX > 3) then
  2996. Addbonus(Mbonus)
  2997. Addbonusblue(BlueMBonus)
  2998. AddBonuspink(PinkMBonus)
  2999. bluetext.text = (bluebonus)
  3000. pinktext.text = (pinkbonus)
  3001. bluetext2.text = (bluebonus)
  3002. pinktext2.text = (pinkbonus)
  3003. playmusic 2, "sound53", false
  3004. twoxlight.flashforms 500, 50, bulbon
  3005. maintext.text = "22222222XXXXXXXX"
  3006. maintext2.text = "22222222XXXXXXXX"
  3007. screen.frame 98
  3008. end if
  3009. If (Bonus = 35) and (BonusX > 3) then
  3010. Addbonus(Mbonus)
  3011. Addbonusblue(BlueMBonus)
  3012. AddBonuspink(PinkMBonus)
  3013. bluetext.text = (bluebonus)
  3014. pinktext.text = (pinkbonus)
  3015. bluetext2.text = (bluebonus)
  3016. pinktext2.text = (pinkbonus)
  3017. playmusic 3, "sound53a", false
  3018. threexlight.flashforms 500, 50, bulbon
  3019. maintext.text = "33333333XXXXXXXX"
  3020. maintext2.text = "33333333XXXXXXXX"
  3021. screen.frame 121
  3022. end if
  3023. If (Bonus = 40) and (BonusX > 3) then
  3024. Addbonus(Mbonus)
  3025. Addbonusblue(BlueMBonus)
  3026. AddBonuspink(PinkMBonus)
  3027. bluetext.text = (bluebonus)
  3028. pinktext.text = (pinkbonus)
  3029. bluetext2.text = (bluebonus)
  3030. pinktext2.text = (pinkbonus)
  3031. playmusic 2, "sound53", false
  3032. fourxlight.flashforms 500, 50, bulbon
  3033. maintext.text = "44444444XXXXXXXX"
  3034. maintext2.text = "44444444XXXXXXXX"
  3035. screen.frame 144
  3036. end if
  3037. If (Bonus = 45) and (BonusX > 3) then
  3038. Addbonus(Mbonus)
  3039. Addbonusblue(BlueMBonus)
  3040. AddBonuspink(PinkMBonus)
  3041. bluetext.text = (bluebonus)
  3042. pinktext.text = (pinkbonus)
  3043. bluetext2.text = (bluebonus)
  3044. pinktext2.text = (pinkbonus)
  3045. playmusic 3, "sound53a", false
  3046. fivexlight.flashforms 500, 50, bulbon
  3047. maintext.text = "55555555XXXXXXXX"
  3048. maintext2.text = "55555555XXXXXXXX"
  3049. screen.frame 167
  3050. end if
  3051. If (Bonus = 50) and (BonusX > 3) then
  3052. countbonus()
  3053. end if
  3054.  
  3055. end sub
  3056.  
  3057. dim count
  3058.  
  3059. sub countbonus()
  3060. shutoffmainplay()
  3061. counter.enabled = true
  3062. addscore(mainbonus)
  3063. addscoreblue(bluebonus)
  3064. addscorepink(pinkbonus)
  3065. bonusshow.enabled = false
  3066. Bonus = Bonus - bonus
  3067. playmusic 1, "bonus_count", false
  3068. playbonuscount()
  3069. If bonusx > 3 then
  3070. bonusx = bonusx - bonusx
  3071. end if
  3072. end sub
  3073.  
  3074. sub counter_expired()
  3075. count = count + 1
  3076.  
  3077. If (bluebonus >= 5000) or (pinkbonus >= 5000) or (count > 200) then
  3078. If bluebonus > 100 then
  3079. Bluebonus = bluebonus - 100
  3080. end if
  3081. if bluebonus =< 100 then
  3082. bluebonus = bluebonus - bluebonus
  3083. end if
  3084.  
  3085. If pinkbonus > 100 then
  3086. pinkbonus = pinkbonus - 100
  3087. end if
  3088.  
  3089. if pinkbonus =< 100 then
  3090. pinkbonus = pinkbonus - pinkbonus
  3091. end if
  3092.  
  3093. If (count > 200) and (bluebonus > 1000) then
  3094. Bluebonus = bluebonus - 900
  3095. bluetext.text = (bluebonus)
  3096. bluetext2.text = (bluebonus)
  3097. end if
  3098.  
  3099. If (count > 200) and (pinkbonus > 1000) then
  3100. Pinkbonus = Pinkbonus - 900
  3101. pinktext.text = (pinkbonus)
  3102. pinktext2.text = (pinkbonus)
  3103. end if
  3104. end if
  3105.  
  3106. If (bluebonus < 5000) and (pinkbonus < 5000) and (count < 200) then
  3107. If bluebonus > 10 then
  3108. Bluebonus = bluebonus - 10
  3109. end if
  3110. if bluebonus =< 10 then
  3111. bluebonus = bluebonus - bluebonus
  3112. end if
  3113.  
  3114. If pinkbonus > 10 then
  3115. pinkbonus = pinkbonus - 10
  3116. end if
  3117.  
  3118. if pinkbonus =< 10 then
  3119. pinkbonus = pinkbonus - pinkbonus
  3120. end if
  3121. end if
  3122.  
  3123.  
  3124. bluetext.text = (bluebonus)
  3125. pinktext.text = (pinkbonus)
  3126. bluetext2.text = (bluebonus)
  3127. pinktext2.text = (pinkbonus)
  3128.  
  3129. If count = 250 then
  3130. bonuscounton = false
  3131. maintext.queuetext "Total = " & nvscore(currentplayer), seWipeRadarRight, 500
  3132. maintext2.queuetext "Total = " & nvscore(currentplayer), seWipeRadarRight, 500
  3133. addscoreblue(0)
  3134. addscorepink(0)
  3135. counter.enabled = false
  3136. count = count - count
  3137. pinkbonus = pinkbonus - pinkbonus
  3138. bluebonus = bluebonus - bluebonus
  3139. mainbonus = mainbonus - mainbonus
  3140. end if
  3141. end sub
  3142.  
  3143.  
  3144. 'BonusX = BonusX + 1
  3145. 'If BonusX = 1 Then
  3146. ' twoxlight.state = bulbon
  3147. 'end if
  3148. 'If BonusX = 2 Then
  3149. ' threexlight.state = bulbon
  3150. 'end if
  3151. 'If BonusX = 3 Then
  3152. ' fourxlight.state = bulbon
  3153. 'end if
  3154. 'If BonusX = 4 Then
  3155. ' fivexlight.state = bulbon
  3156. 'end if
  3157.  
  3158.  
  3159. ' The Timer which delays the machine to allow any bonus points to be added up
  3160. ' has expired. Check to see if there are any extra balls for this player.
  3161. ' if not, then check to see if this was the last ball (of the currentplayer)
  3162. '
  3163. Sub EndOfBallTimer_Expired()
  3164. ' disable the timer
  3165. EndOfBallTimer.Enabled = FALSE
  3166. Resetalltargets()
  3167.  
  3168. ' if were tilted, reset the internal tilted flag (this will also
  3169. ' set fpTiltWarnings back to zero) which is useful if we are changing player LOL
  3170. fpTilted = FALSE
  3171. tilttimer.enabled = false
  3172.  
  3173. ' has the player won an extra-ball ? (might be multiple outstanding)
  3174. If (ExtraBallsAwards(CurrentPlayer) <> 0) Then
  3175.  
  3176. 'AddDebugText "Extra Ball"
  3177.  
  3178. ' yep got to give it to them
  3179. ExtraBallsAwards(CurrentPlayer) = ExtraBallsAwards(CurrentPlayer) - 1
  3180.  
  3181.  
  3182. ' if no more EB's then turn off any shoot again light
  3183. If (ExtraBallsAwards(CurrentPlayer) = 0) Then
  3184. ShootAgainLight.State = BulbOff
  3185. resetextraball()
  3186. End If
  3187.  
  3188. ' You may wish to do a bit of a song and dance at this point
  3189.  
  3190. ' Create a new ball in the shooters lane
  3191. Extraballshow()
  3192.  
  3193. Else ' no extra balls
  3194.  
  3195. BallsRemaining(CurrentPlayer) = BallsRemaining(CurrentPlayer) - 1
  3196.  
  3197. ' was that the last ball ?
  3198. If (BallsRemaining(CurrentPlayer) <= 0) Then
  3199.  
  3200. 'AddDebugText "No More Balls, High Score Entry"
  3201.  
  3202. ' Submit the currentplayers score to the High Score system built into Future Pinball
  3203. ' if they have gotten a high score then it will ask them for their initials. If not
  3204. ' it will call the FuturePinball_NameEntryComplete right away
  3205. bEnteringAHighScore = TRUE
  3206. EnterHighScore(CurrentPlayer)
  3207. Gameovertimer.enabled=true
  3208.  
  3209. ' you may wish to play some music at this point
  3210.  
  3211. Else
  3212.  
  3213. ' not the last ball (for that player)
  3214. ' if multiple players are playing then move onto the next one
  3215. EndOfBallComplete()
  3216.  
  3217.  
  3218. End If
  3219. End If
  3220. End Sub
  3221.  
  3222. dim gameoversong
  3223.  
  3224. sub gameovertimer_expired()
  3225. gameovertimer.enabled = false
  3226. If bEnteringAHighScore = true then
  3227. LookAtBackbox()
  3228. playmusic 1, "BVP Highscore", false
  3229. end if
  3230. If bEnteringAHighScore = false then
  3231. Gameover()
  3232. droptarget25.solenoidpulse(100)
  3233. droptarget26.solenoidpulse(100)
  3234. droptarget27.solenoidpulse(100)
  3235. droptarget28.solenoidpulse(100)
  3236. droptarget29.solenoidpulse(100)
  3237. droptarget30.solenoidpulse(100)
  3238. droptarget31.solenoidpulse(100)
  3239. droptarget32.solenoidpulse(100)
  3240. droptarget33.solenoidpulse(100)
  3241. droptarget34.solenoidpulse(100)
  3242. PinEvent_Drop_Targets_25to34_Reset
  3243. gameoversong = gameoversong + 1
  3244. if gameoversong = 1 then
  3245. playmusic 1, "bvp gameover", false
  3246. end if
  3247. if gameoversong = 2 then
  3248. playmusic 1, "bvp gameover 2", false
  3249. gameoversong = gameoversong - gameoversong
  3250. end if
  3251. end if
  3252. end sub
  3253.  
  3254. sub gameover()
  3255. logscores()
  3256. startattractmode()
  3257. end sub
  3258.  
  3259. Sub extraballshow()
  3260. esoundtimer.enabled=true
  3261. maintext.flushqueue()
  3262. maintext2.flushqueue()
  3263. maintext.queuetext "shoot again", seblink, 1200
  3264. maintext2.queuetext "shoot again", seblink, 1200
  3265. playmusic 4, "sound15", false
  3266. CreateNewBalltimer.enabled = true
  3267. playshootagain()
  3268. screeninterrupt()
  3269. end sub
  3270.  
  3271. dim esound
  3272.  
  3273. sub esoundtimer_expired()
  3274. esound = esound + 1
  3275. If esound = 1 then
  3276. playmusic 4, "sound15", false
  3277. end if
  3278. If esound = 2 then
  3279. playmusic 4, "sound15", false
  3280. end if
  3281. If esound = 3 then
  3282. playmusic 4, "sound15", false
  3283. esoundtimer.enabled = false
  3284. esound = esound - esound
  3285. end if
  3286. end sub
  3287.  
  3288.  
  3289.  
  3290. ' This function is called when the end of bonus display
  3291. ' (or high score entry finished) and it either end the game or
  3292. ' move onto the next player (or the next ball of the same player)
  3293. '
  3294. Sub EndOfBallComplete()
  3295. Dim NextPlayer
  3296.  
  3297. 'AddDebugText "EndOfBall - Complete"
  3298.  
  3299. ' are there multiple players playing this game ?
  3300. If (PlayersPlayingGame > 1) Then
  3301. ' then move to the next player
  3302. NextPlayer = CurrentPlayer + 1
  3303. ' are we going from the last player back to the first
  3304. ' (ie say from player 4 back to player 1)
  3305. If (NextPlayer > PlayersPlayingGame) Then
  3306. NextPlayer = 1
  3307. End If
  3308. Else
  3309. NextPlayer = CurrentPlayer
  3310. End If
  3311.  
  3312. 'AddDebugText "Next Player = " & NextPlayer
  3313.  
  3314. ' is it the end of the game ? (all balls been lost for all players)
  3315. If ((BallsRemaining(CurrentPlayer) <= 0) And (BallsRemaining(NextPlayer) <= 0)) Then
  3316. ' you may wish to do some sort of Point Match free game award here
  3317. ' generally only done when not in free play mode
  3318.  
  3319. ' set the machine into game over mode
  3320. EndOfGame()
  3321.  
  3322. ' you may wish to put a Game Over message on the
  3323.  
  3324. Else
  3325. ' set the next player
  3326. CurrentPlayer = NextPlayer
  3327.  
  3328. ' make sure the correct display is upto date
  3329. AddScore(0)
  3330.  
  3331. ' reset the playfield for the new player (or new ball)
  3332. ResetForNewPlayerBall()
  3333.  
  3334. ' and create a new ball
  3335. CreateNewBall()
  3336. If kickbacklit = false then
  3337. lightkickback()
  3338. end if
  3339. mainplay()
  3340.  
  3341. End If
  3342. End Sub
  3343.  
  3344.  
  3345. ' This frunction is called at the End of the Game, it should reset all
  3346. ' Drop targets, and eject any 'held' balls, start any attract sequences etc..
  3347. Sub EndOfGame()
  3348. 'AddDebugText "End Of Game"
  3349.  
  3350. ' let Future Pinball know that the game has finished.
  3351. ' This also clear the fpGameInPlay flag.
  3352. EndGame()
  3353.  
  3354. ' ensure that the flippers are down
  3355. RightFlipper.SolenoidOff
  3356. RightFlipper2.SolenoidOff
  3357. RightFlipper3.SolenoidOff
  3358. RightFlipper4.SolenoidOff
  3359. LeftFlipper.SolenoidOff
  3360. LeftFlipper2.SolenoidOff
  3361. LeftFlipper3.SolenoidOff
  3362. LeftFlipper4.SolenoidOff
  3363. PinEvent_Left_Flipper_Off
  3364. PinEvent_Right_Flipper_Off
  3365. if balllockleft = true then
  3366. leftdeckexit.destroyball
  3367. ballsonplayfield = ballsonplayfield - 1
  3368. end if
  3369. if balllockright = true then
  3370. rightdeckexit.destroyball
  3371. ballsonplayfield = ballsonplayfield - 1
  3372. end if
  3373.  
  3374.  
  3375. ' turn off the reel bulbs
  3376.  
  3377.  
  3378. ' set any lights for the attract mode
  3379.  
  3380. ' you may wish to light any Game Over Light you may have
  3381. End Sub
  3382.  
  3383.  
  3384. ' The tilt recovery timer waits for all the balls to drain before continuing on
  3385. ' as per normal
  3386. '
  3387. Sub TiltRecoveryTimer_Expired()
  3388. ' disable the timer
  3389. TiltRecoveryTimer.Enabled = FALSE
  3390. ' if all the balls have been drained then..
  3391. If (BallsOnPlayfield = 0) Then
  3392. ' do the normal end of ball thing (this dosn't give a bonus if the table is tilted)
  3393. 'EndOfBall()
  3394. Else
  3395. ' else retry (checks again in another second)
  3396. 'TiltRecoveryTimer.Interval = 1000
  3397. 'TiltRecoveryTimer.Enabled = TRUE
  3398. End If
  3399. End Sub
  3400.  
  3401.  
  3402. ' Set any lights for the Attract Mode.
  3403. '
  3404. Sub SetAllLightsForAttractMode()
  3405. startattractmode()
  3406. End Sub
  3407.  
  3408. sub startattractmode()
  3409. shutoffmainplay()
  3410. normalattract()
  3411. Messages.enabled = true
  3412. attracter.enabled=true
  3413. screenattract.enabled = true
  3414. Maintext.text = " game over "
  3415. bluetext.text = " "
  3416. pinktext.text = " "
  3417. Maintext2.text = " game over "
  3418. bluetext2.text = " "
  3419. pinktext2.text = " "
  3420. playgameover()
  3421. end sub
  3422.  
  3423. dim sattract
  3424.  
  3425. sub screenattract_expired()
  3426. sattract = sattract + 1
  3427. If sattract = 1 then
  3428. If nvcredits = 0 then
  3429. playinsertcoin()
  3430. end if
  3431. if nvcredits > 0 then
  3432. playpressstart()
  3433. end if
  3434. end if
  3435. If sattract = 2 then
  3436. playgameover()
  3437. sattract = sattract - sattract
  3438. end if
  3439. end sub
  3440.  
  3441.  
  3442. sub attracter_expired()
  3443. mainseq2.updateinterval = 10
  3444. mainSeq2.Play SeqUpOn, 50, 3
  3445. end sub
  3446.  
  3447. sub normalattract()
  3448.  
  3449. bumper1.state = bulboff
  3450. bumper2.state = bulboff
  3451. bumper3.state = bulboff
  3452.  
  3453. twoxlight.Set BulbBlink, "100000", 100
  3454. threexlight.Set BulbBlink, "010001", 100
  3455. fourxlight.Set BulbBlink, "001010", 100
  3456. fivexlight.Set BulbBlink, "000100", 100
  3457.  
  3458. shootagainlight.set bulbblink, "100100", 100
  3459.  
  3460. leftkicklight.Set BulbBlink, "10000", 150
  3461. advx1.Set BulbBlink, "01000", 150
  3462. looplight1.Set BulbBlink, "00100", 150
  3463. quickscorelight1.Set BulbBlink, "00010", 150
  3464.  
  3465. rightkicklight.Set BulbBlink, "10000", 150
  3466. advx2.Set BulbBlink, "01000", 150
  3467. looplight2.Set BulbBlink, "00100", 150
  3468. quickscorelight2.Set BulbBlink, "00010", 150
  3469.  
  3470. Lock1.set bulbblink, "1110000000", 75
  3471. Lock2.set bulbblink, "0001000001", 75
  3472. Lock3.set bulbblink, "0000100010", 75
  3473. Lock4.set bulbblink, "0000011100", 75
  3474.  
  3475. Quick1.set bulbblink, "1111100000", 150
  3476. Quick2.set bulbblink, "0111110000", 150
  3477. Quick3.set bulbblink, "0011111000", 150
  3478. Quick4.set bulbblink, "0001111100", 150
  3479. Quick5.set bulbblink, "0000111110", 150
  3480.  
  3481. bluearrow.set bulbblink, "10", 300
  3482. pinkarrow.set bulbblink, "01", 300
  3483.  
  3484. advexballlight.set bulbblink, "100", 175
  3485. jackpotlight.set bulbblink, "010", 175
  3486. lightkickback1.set bulbblink, "001", 175
  3487. lightkickback2.set bulbblink, "001", 175
  3488.  
  3489. Quicksignbulb1.set bulbblink, "10000", 150
  3490. Quicksignbulb2.set bulbblink, "01000", 150
  3491. Quicksignbulb3.set bulbblink, "00100", 150
  3492. Quicksignbulb4.set bulbblink, "00010", 150
  3493.  
  3494. HundredK1.set bulbblink, "10000", 100
  3495. Locklit1.set bulbblink, "01000", 100
  3496. HundredK2.set bulbblink, "00100", 100
  3497. Locklit2.set bulbblink, "00010", 100
  3498.  
  3499. B1L.set bulbblink, "1000", 100
  3500. B2L.set bulbblink, "0100", 100
  3501. B3L.set bulbblink, "0010", 100
  3502. B4L.set bulbblink, "0001", 100
  3503.  
  3504. P1L.set bulbblink, "0001", 100
  3505. P2L.set bulbblink, "0010", 100
  3506. P3L.set bulbblink, "0100", 100
  3507. P4L.set bulbblink, "1000", 100
  3508.  
  3509. B5L.set bulbblink, "1111000", 100
  3510. B6L.set bulbblink, "0111100", 100
  3511. B7L.set bulbblink, "0011110", 100
  3512. B8L.set bulbblink, "0001111", 100
  3513.  
  3514. P5L.set bulbblink, "0001111", 100
  3515. P6L.set bulbblink, "0011110", 100
  3516. P7L.set bulbblink, "0111100", 100
  3517. P8L.set bulbblink, "1111000", 100
  3518.  
  3519. B9L.set bulbblink, "1000", 100
  3520. B10L.set bulbblink, "0100", 100
  3521. B11L.set bulbblink, "0010", 100
  3522. B12L.set bulbblink, "0001", 100
  3523.  
  3524. P9L.set bulbblink, "0001", 100
  3525. P10L.set bulbblink, "0010", 100
  3526. P11L.set bulbblink, "0100", 100
  3527. P12L.set bulbblink, "1000", 100
  3528.  
  3529. bulb31.set bulbblink, "10", 75
  3530. bulb32.set bulbblink, "10", 75
  3531. extraballlight.set bulbblink, "01", 75
  3532.  
  3533. skill1.set bulbblink, "11100", 100
  3534. skill2.set bulbblink, "01110", 100
  3535. skill3.set bulbblink, "00111", 100
  3536.  
  3537. end sub
  3538.  
  3539. dim message
  3540.  
  3541. Sub messages_expired()
  3542. If displayint = false then
  3543. message = message + 1
  3544. If Message = 1 then
  3545. maintext.flushqueue()
  3546. Maintext.QueueText "score " & (nvscore(currentplayer)), seWipeRadarright, 3000
  3547. maintext2.flushqueue()
  3548. Maintext2.QueueText "score " & (nvscore(currentplayer)), seWipeRadarright, 3000
  3549. addscoreblue(0)
  3550. addscorepink(0)
  3551. end if
  3552. If Message = 2 then
  3553. Maintext.QueueText " Welcome to ", seWipeRadarright, 3000
  3554. bluetext.QueueText " ", seWipeRadarLeft, 3000
  3555. pinktext.QueueText " ", seWipeRadarright, 3000
  3556. Maintext2.QueueText " Welcome to ", seWipeRadarright, 3000
  3557. bluetext2.QueueText " ", seWipeRadarLeft, 3000
  3558. pinktext2.QueueText " ", seWipeRadarright, 3000
  3559. end if
  3560. If Message = 3 then
  3561. bluetext.QueueText "* Blue ", seWipeRadarright, 3000
  3562. pinktext.QueueText " Pink *", seWipeRadarleft, 3000
  3563. bluetext2.QueueText "* Blue ", seWipeRadarright, 3000
  3564. pinktext2.QueueText " Pink *", seWipeRadarleft, 3000
  3565. end if
  3566.  
  3567. If Message = 4 then
  3568. Maintext.QueueText " by Pinwizkid ", seWipeRadarright, 3000
  3569. bluetext.QueueText " ", seWipeRadarLeft, 3000
  3570. pinktext.QueueText " ", seWipeRadarright, 3000
  3571. Maintext2.QueueText " by Pinwizkid ", seWipeRadarright, 3000
  3572. bluetext2.QueueText " ", seWipeRadarLeft, 3000
  3573. pinktext2.QueueText " ", seWipeRadarright, 3000
  3574. end if
  3575.  
  3576. If Message = 5 then
  3577. Maintext.QueueText " BAM Edition ", seWipeRadarright, 3000
  3578. bluetext.QueueText " ", seWipeRadarLeft, 3000
  3579. pinktext.QueueText " ", seWipeRadarright, 3000
  3580. Maintext2.QueueText " BAM Edition ", seWipeRadarright, 3000
  3581. bluetext2.QueueText " ", seWipeRadarLeft, 3000
  3582. pinktext2.QueueText " ", seWipeRadarright, 3000
  3583. end if
  3584.  
  3585. If Message = 6 then
  3586. Maintext.QueueText " by TerryRed ", seWipeRadarright, 3000
  3587. bluetext.QueueText " ", seWipeRadarLeft, 3000
  3588. pinktext.QueueText " ", seWipeRadarright, 3000
  3589. Maintext2.QueueText " by TerryRed ", seWipeRadarright, 3000
  3590. bluetext2.QueueText " ", seWipeRadarLeft, 3000
  3591. pinktext2.QueueText " ", seWipeRadarright, 3000
  3592. end if
  3593.  
  3594. If Message = 7 then
  3595. Maintext.QueueText "The Standings - ", seWipeRadarright, 3000
  3596. bluetext.QueueText nvR1, seWipeBarUp, 3000
  3597. pinktext.QueueText nvR2, seWipeBarUp, 3000
  3598. Maintext2.QueueText "The Standings - ", seWipeRadarright, 3000
  3599. bluetext2.QueueText nvR1, seWipeBarUp, 3000
  3600. pinktext2.QueueText nvR2, seWipeBarUp, 3000
  3601. end if
  3602. If message = 8 then
  3603. Maintext.QueueText " Game over ", seWipeRadarright, 3000
  3604. bluetext.QueueText " ", seWipeBarUp, 3000
  3605. pinktext.QueueText " ", seWipeBarUp, 3000
  3606. Maintext2.QueueText " Game over ", seWipeRadarright, 3000
  3607. bluetext2.QueueText " ", seWipeBarUp, 3000
  3608. pinktext2.QueueText " ", seWipeBarUp, 3000
  3609. message = message - message
  3610. end if
  3611. end if
  3612.  
  3613. end sub
  3614.  
  3615. dim bluewins
  3616. dim pinkwins
  3617. dim tie
  3618.  
  3619. Sub logscores()
  3620.  
  3621. If (bluescore) > (pinkscore) then
  3622. nvR1 = nvR1 + 1
  3623. bluewins = true
  3624. end if
  3625.  
  3626. If (bluescore) < (pinkscore) then
  3627. nvR2 = nvR2 + 1
  3628. pinkwins = true
  3629. end if
  3630.  
  3631. If (bluescore) = (pinkscore) then
  3632. tie = true
  3633. end if
  3634.  
  3635. end sub
  3636.  
  3637.  
  3638.  
  3639.  
  3640.  
  3641. ' *********************************************************************
  3642. ' ** **
  3643. ' ** Drain / Plunger Functions **
  3644. ' ** **
  3645. ' *********************************************************************
  3646.  
  3647. ' lost a ball ;-( check to see how many balls are on the playfield.
  3648. ' if only one then decrement the remaining count and test for End of game
  3649. ' if more than 1 ball (multi-ball) then kill of the ball but don't create
  3650. ' a new one
  3651.  
  3652. dim multiballon
  3653. dim quickmultiballon
  3654. '
  3655. Sub Drain_Hit()
  3656. ' Destroy the ball
  3657. Drain.DestroyBall
  3658. BallsOnPlayfield = BallsOnPlayfield - 1
  3659. ' pretend to knock the ball into the ball storage mech
  3660. 'PlaySound "Drain"
  3661. PinEvent_Drain_Hit
  3662.  
  3663. ' if there is a game in progress and
  3664. If (fpGameInPlay = TRUE) And (fpTilted = FALSE) Then
  3665.  
  3666. ' is the ball saver active
  3667. ' cancel any multiball if on last ball (ie. lost all other balls)
  3668. '
  3669. If (BallsOnPlayfield = 1) Then
  3670. ' and in a multi-ball??
  3671. If (multiballon = True) then
  3672. ' not in multiball mode any more
  3673. endmultiball()
  3674. ' you may wish to change any music over at this point and
  3675. ' turn off any multiball specific lights
  3676. End If
  3677.  
  3678. If (quickmultiballon = true) then
  3679. endquickmultiball()
  3680. end if
  3681. End If
  3682.  
  3683. If quickmultiballon = true then
  3684.  
  3685. If (ballsonplayfield = 2) and ((balllockleft = true) or (balllockright = true)) then
  3686. endquickmultiball()
  3687. end if
  3688.  
  3689. If (ballsonplayfield = 3) and ((balllockleft = true) and (balllockright = true)) then
  3690. endquickmultiball()
  3691. end if
  3692.  
  3693. End if
  3694. ' was that the last ball on the playfield
  3695. If (BallsOnPlayfield = 0) Then
  3696. ' handle the end of ball (change player, high score entry etc..)
  3697. EndOfBall()
  3698. End If
  3699.  
  3700. If (ballsonplayfield = 1) and ((balllockleft = true) or (balllockright = true)) then
  3701. Endofball()
  3702. End if
  3703.  
  3704. If (ballsonplayfield = 2) and ((balllockleft = true) and (balllockright = true)) then
  3705. Endofball()
  3706. End if
  3707. End If
  3708.  
  3709. If (fpGameInPlay = TRUE) And (fpTilted = true) Then
  3710. If (BallsOnPlayfield = 1) Then
  3711. ' and in a multi-ball??
  3712. If (multiballon = True) then
  3713. ' not in multiball mode any more
  3714. endmultiball()
  3715. ' you may wish to change any music over at this point and
  3716. ' turn off any multiball specific lights
  3717. End If
  3718.  
  3719. If (quickmultiballon = true) then
  3720. endquickmultiball()
  3721. end if
  3722. End If
  3723.  
  3724. If quickmultiballon = true then
  3725.  
  3726. If (ballsonplayfield = 2) and ((balllockleft = true) or (balllockright = true)) then
  3727. endquickmultiball()
  3728. end if
  3729.  
  3730. If (ballsonplayfield = 3) and ((balllockleft = true) and (balllockright = true)) then
  3731. endquickmultiball()
  3732. end if
  3733.  
  3734. End if
  3735. ' was that the last ball on the playfield
  3736. If (BallsOnPlayfield = 0) Then
  3737. ' handle the end of ball (change player, high score entry etc..)
  3738. EndOfBall()
  3739. End If
  3740.  
  3741. If (ballsonplayfield = 1) and ((balllockleft = true) or (balllockright = true)) then
  3742. Endofball()
  3743. End if
  3744.  
  3745. If (ballsonplayfield = 2) and ((balllockleft = true) and (balllockright = true)) then
  3746. Endofball()
  3747. End if
  3748. end if
  3749.  
  3750. End Sub
  3751.  
  3752. sub endmultiball()
  3753. multiballon = false
  3754. playmusic 1, "bvp main theme", true
  3755. resetlock()
  3756. hundredK1.state = bulboff
  3757. hundredK2.state = bulboff
  3758. jackpotlight.state = bulboff
  3759. locklit = false
  3760. lightlockonhold = false
  3761. resetalltargets()
  3762. mainplay()
  3763. If holdingquickmball = true then
  3764. relightquickmball()
  3765. end if
  3766. end sub
  3767.  
  3768. sub endquickmultiball()
  3769. quickmultiballon = false
  3770. mainplay()
  3771. resetquickmball()
  3772. resetlocklights()
  3773. If multiballlit = true then
  3774. jackpotlight.state = bulbblink
  3775. end if
  3776. If lightlockonhold = true then
  3777. Lightlock()
  3778. lightlockonholdtimer.enabled=true
  3779. end if
  3780. If lightlockonhold = false then
  3781. If locklit = false then
  3782. playmusic 1, "bvp main theme", true
  3783. end if
  3784. If Locklit = true then
  3785. Lock1.set bulbblink, "1110000000", 75
  3786. Lock2.set bulbblink, "0001000001", 75
  3787. Lock3.set bulbblink, "0000100010", 75
  3788. Lock4.set bulbblink, "0000011100", 75
  3789. Song = 2
  3790. playsong()
  3791. end if
  3792. end if
  3793. end sub
  3794.  
  3795. sub lightlockonbholdtimer_expired()
  3796. lightlockonholdtimer.enabled=false
  3797. lightlockonhold = false
  3798. end sub
  3799.  
  3800.  
  3801. ' A ball is pressing down the trigger in the shooters lane
  3802. '
  3803. Sub PlungerLaneTrigger_Hit()
  3804. bBallInPlungerLane = TRUE
  3805.  
  3806. ' remember last trigger hit by the ball
  3807. set LastSwitchHit = PlungerLaneTrigger
  3808. quickmultiballsafetytimer.enabled = false
  3809. End Sub
  3810.  
  3811. Sub PlungerlaneTrigger_unhit()
  3812. bBallinplungerlane = false
  3813. playmusic 8, "sound56", false
  3814. mainseq.updateinterval = 5
  3815. mainseq.play SeqUpOn, 50
  3816. If quickmultiballon = true then
  3817. quickmultiballsafetytimer.enabled = true
  3818. end if
  3819. end sub
  3820.  
  3821.  
  3822. ' A Ball may of rolled into the Plunger Lane Kicker, if so then kick it
  3823. ' back out again
  3824. '
  3825. Sub PlungerKicker_Hit()
  3826. PlungerKicker.SolenoidPulse
  3827. PinEvent_PlungerKicker
  3828. End Sub
  3829.  
  3830.  
  3831. ' The Ball has rolled out of the Plunger Lane. Check to see if a ball saver machanisim
  3832. ' is needed and if so fire it up.
  3833. '
  3834. Sub PlungerLaneGate_Hit()
  3835. ' if there is a need for a ball saver, then start off a timer
  3836. ' only start if it is currently not running, else it will reset the time period
  3837. If (constBallSaverTime <> 0) And (bBallSaverActive <> TRUE) Then
  3838. ' and only if the last trigger hit was the plunger wire.
  3839. ' (ball in the shooters lane)
  3840. If (LastSwitchHit.Name = "PlungerLaneTrigger") Then
  3841. ' set our game flag
  3842. bBallSaverActive = TRUE
  3843. ' start the timer
  3844. BallSaverTimer.Enabled = FALSE
  3845. BallSaverTimer.Interval = constBallSaverTime
  3846. BallSaverTimer.Enabled = TRUE
  3847. ' if you have a ball saver light you might want to turn it on at this
  3848. ' point (or make it flash)
  3849. End If
  3850. End If
  3851. End Sub
  3852.  
  3853.  
  3854. ' The ball saver timer has expired. Turn it off and reset the game flag
  3855. '
  3856. Sub BallSaverTimer_Expired()
  3857. ' stop the timer from repeating
  3858. BallSaverTimer.Enabled = FALSE
  3859. ' clear the flag
  3860. bBallSaverActive = FALSE
  3861. ' if you have a ball saver light then turn it off at this point
  3862. End Sub
  3863.  
  3864.  
  3865.  
  3866. ' *********************************************************************
  3867. ' ** **
  3868. ' ** Supporting Score Functions **
  3869. ' ** **
  3870. ' *********************************************************************
  3871.  
  3872. ' Add points to the score and update the score board
  3873. '
  3874. Sub AddScore(points)
  3875. If (fpTilted = FALSE) Then
  3876. ' add the points to the current players score variable
  3877. nvScore(CurrentPlayer) = nvScore(CurrentPlayer) + points
  3878.  
  3879. ' update the score displays
  3880. If (displayint = false) and (bumperdisplay = false) and (bonuscounton = false) then
  3881. If ballsremaining(currentplayer) = 3 then
  3882. maintext.text = nvScore(CurrentPlayer) & " ball 1"
  3883. maintext2.text = nvScore(CurrentPlayer) & " ball 1"
  3884. end if
  3885. If ballsremaining(currentplayer) = 2 then
  3886. maintext.text = nvScore(CurrentPlayer) & " ball 2"
  3887. maintext2.text = nvScore(CurrentPlayer) & " ball 2"
  3888. end if
  3889. If ballsremaining(currentplayer) = 1 then
  3890. maintext.text = nvScore(CurrentPlayer) & " ball 3"
  3891. maintext2.text = nvScore(CurrentPlayer) & " ball 3"
  3892. end if
  3893. end if
  3894.  
  3895.  
  3896. ' add the points to the correct display and light the current players display
  3897.  
  3898. End if
  3899.  
  3900. ' you may wish to check to see if the player has gotten a replay
  3901. End Sub
  3902.  
  3903. sub addbonus(points)
  3904. If (FpTilted = false) then
  3905. mainbonus = mainbonus + points
  3906. end if
  3907. end sub
  3908.  
  3909. sub addbonusblue(points)
  3910. If (FpTilted = false) then
  3911. bluebonus = bluebonus + points
  3912. end if
  3913. end sub
  3914.  
  3915. sub addbonuspink(points)
  3916. If (FpTilted = false) then
  3917. pinkbonus = pinkbonus + points
  3918. end if
  3919. end sub
  3920.  
  3921. sub erasebonus()
  3922. mainbonus = mainbonus - mainbonus
  3923. bluebonus = bluebonus - bluebonus
  3924. pinkbonus = pinkbonus - pinkbonus
  3925. end sub
  3926.  
  3927. dim bluescore
  3928. dim pinkscore
  3929. dim bluebonus
  3930. dim pinkbonus
  3931. dim mainbonus
  3932.  
  3933. dim displayint
  3934.  
  3935. sub addscoreblue(points)
  3936. If (fpTilted = FALSE) Then
  3937. bluescore = bluescore + points
  3938. if (displayint = false) and (bonuscounton = false) then
  3939. Bluetext.text = (bluescore)
  3940. Bluetext2.text = (bluescore)
  3941. end if
  3942. end if
  3943. end sub
  3944.  
  3945.  
  3946. sub addscorepink(points)
  3947. If (fpTilted = FALSE) Then
  3948. pinkscore = pinkscore + points
  3949. if (displayint = false) and (bonuscounton = false) then
  3950. pinktext.text = (pinkscore)
  3951. pinktext2.text = (pinkscore)
  3952. end if
  3953. End If
  3954. end sub
  3955.  
  3956.  
  3957. ' Add some points to the current Jackpot.
  3958. '
  3959. Sub AddJackpot(points)
  3960. ' Jackpots only generally increment in multiball mode and not tilted
  3961. ' but this dosn't have to tbe the case
  3962. If (fpTilted = False) Then
  3963.  
  3964. If (bMultiBallMode = TRUE) Then
  3965. nvJackpot = nvJackpot + points
  3966. ' you may wish to limit the jackpot to a upper limit, ie..
  3967. ' If (nvJackpot >= 6000) Then
  3968. ' nvJackpot = 6000
  3969. ' End if
  3970. End if
  3971. End if
  3972. End Sub
  3973.  
  3974.  
  3975. ' Will increment the Bonus Multiplier to the next level
  3976. '
  3977. Sub IncrementBonusMultiplier()
  3978. Dim NewBonusLevel
  3979.  
  3980. ' if not at the maximum bonus level
  3981. if (BonusMultiplier(CurrentPlayer) < constMaxMultiplier) then
  3982. ' then set it the next next one and set the lights
  3983. NewBonusLevel = BonusMultiplier(CurrentPlayer) + 1
  3984. SetBonusMultiplier(NewBonusLevel)
  3985. End if
  3986. End Sub
  3987.  
  3988.  
  3989. ' Set the Bonus Multiplier to the specified level and set any lights accordingly
  3990. '
  3991. Sub SetBonusMultiplier(Level)
  3992. ' Set the multiplier to the specified level
  3993. BonusMultiplier(CurrentPlayer) = Level
  3994.  
  3995. ' If the multiplier is 1 then turn off all the bonus lights
  3996. If (BonusMultiplier(CurrentPlayer) = 1) Then
  3997. ' insert your own code here
  3998. Else
  3999. ' there is a bonus, turn on all the lights upto the current level
  4000. If (BonusMultiplier(CurrentPlayer) >= 2) Then
  4001. ' insert your own code here
  4002. End If
  4003. ' etc..
  4004. End If
  4005. End Sub
  4006.  
  4007.  
  4008.  
  4009. ' *********************************************************************
  4010. ' ** **
  4011. ' ** Table Object Script Events **
  4012. ' ** **
  4013. ' *********************************************************************
  4014.  
  4015. ' The Left Slingshot has been Hit, Add Some Points and Flash the Slingshot Lights
  4016. '
  4017. Sub LeftSlingshotRubber_Hit()
  4018. ' add some points
  4019. addscore(100)
  4020. addscoreblue(100)
  4021. addscorepink(0)
  4022. addbonus(10)
  4023. addbonusblue(10)
  4024. addbonuspink(0)
  4025.  
  4026. ' flash the lights around the slingshot
  4027. 'LeftSlingshotBulb1.FlashForMs 100, 50, BulbOff
  4028. 'LeftSlingshotBulb2.FlashForMs 100, 50, BulbOff
  4029. playmusic 2, "sound 10", false
  4030. bs1.flashforms 100, 100, bulboff
  4031. PinEvent_Left_Slingshot_Hit
  4032. End Sub
  4033.  
  4034.  
  4035. ' The Right Slingshot has been Hit, Add Some Points and Flash the Slingshot Lights
  4036. '
  4037. Sub RightSlingshotRubber_Hit()
  4038. ' add some points
  4039. addscore(100)
  4040. addscoreblue(0)
  4041. addscorepink(100)
  4042. addbonus(10)
  4043. addbonusblue(0)
  4044. addbonuspink(10)
  4045. ' flash the lights around the slingshot
  4046. 'RightSlingshotBulb1.FlashForMs 100, 50, BulbOff
  4047. 'RightSlingshotBulb2.FlashForMs 100, 50, BulbOff
  4048. playmusic 2, "sound 10", false
  4049. ps1.flashforms 100, 100, bulboff
  4050. PinEvent_Right_Slingshot_Hit
  4051. End Sub
  4052.  
  4053.  
  4054. ' The Left InLane trigger has been Hit
  4055. '
  4056. Sub LeftInLaneTrigger_Hit()
  4057. PinEvent_Rollovers_Left_Hit
  4058. ' add some points
  4059. addscore(1000)
  4060. addscoreblue(1000)
  4061. addscorepink(0)
  4062. addbonus(100)
  4063. addbonusblue(100)
  4064. addbonuspink(0)
  4065.  
  4066. playmusic 2, "sound 12", false
  4067. lightrightside()
  4068. ' remember last trigger hit by the ball
  4069. set LastSwitchHit = LeftInLaneTrigger
  4070. End Sub
  4071.  
  4072.  
  4073. ' The Right InLane trigger has been Hit
  4074. '
  4075. Sub RightInLaneTrigger_Hit()
  4076. PinEvent_Rollovers_Right_Hit
  4077. ' add some points
  4078. addscore(1000)
  4079. addscoreblue(0)
  4080. addscorepink(1000)
  4081. addbonus(100)
  4082. addbonusblue(0)
  4083. addbonuspink(100)
  4084.  
  4085. playmusic 2, "sound 12", false
  4086. lightleftside()
  4087. ' remember last trigger hit by the ball
  4088. set LastSwitchHit = RightInLaneTrigger
  4089. End Sub
  4090.  
  4091. dim advxleft
  4092. dim advxright
  4093. dim lightkickbackleft
  4094. dim lightkickbackright
  4095.  
  4096. sub lightleftside()
  4097. If kickbacklit = false then
  4098. lightkickback1.state=bulbblink
  4099. lightkickbackleft = true
  4100. leftsidetimer.enabled = true
  4101. end if
  4102. If bonusx < 4 then
  4103. advx1.state=bulbblink
  4104. advxleft = true
  4105. leftsidetimer.enabled = true
  4106. end if
  4107. end sub
  4108.  
  4109. sub leftsidetimer_expired()
  4110. leftsidetimer.enabled = false
  4111. advx1.state=bulboff
  4112. lightkickback1.state=bulboff
  4113. advxleft = false
  4114. lightkickbackleft = false
  4115. end sub
  4116.  
  4117. sub lightrightside()
  4118. If kickbacklit = false then
  4119. lightkickback2.state=bulbblink
  4120. lightkickbackright = true
  4121. rightsidetimer.enabled = true
  4122. end if
  4123. If bonusx < 4 then
  4124. advx2.state=bulbblink
  4125. advxright = true
  4126. rightsidetimer.enabled = true
  4127. end if
  4128. end sub
  4129.  
  4130. sub rightsidetimer_expired()
  4131. rightsidetimer.enabled = false
  4132. advx2.state=bulboff
  4133. lightkickback2.state=bulboff
  4134. advxright = false
  4135. lightkickbackright = false
  4136. end sub
  4137.  
  4138. ' The Left OutLane trigger has been Hit
  4139. '
  4140.  
  4141. Dim Leftkick
  4142. Dim Rightkick
  4143.  
  4144. Sub LeftOutLaneTrigger_Hit()
  4145. PinEvent_LeftOutLaneTrigger_Hit
  4146. If fptilted = false then
  4147. ' add some points
  4148. addscore(3000)
  4149. addscoreblue(3000)
  4150. addscorepink(0)
  4151. addbonus(300)
  4152. addbonusblue(300)
  4153. addbonuspink(0)
  4154.  
  4155. ' remember last trigger hit by the ball
  4156. set LastSwitchHit = LeftOutLaneTrigger
  4157. If (kickbacklit = true) and (Leftkick = true) then
  4158. leftkickback.solenoidpulse(100)
  4159. PinEvent_Kickback_Left
  4160. Playmusic 3, "sound58a", false
  4161. kickbackgrace.enabled=true
  4162. leftkicklight.flashforms 500, 50
  4163. blueseq.updateinterval = 5
  4164. blueSeq.Play SequpOn, 30
  4165. end if
  4166. If (kickbacklit = false) or (Leftkick = false) then
  4167. Playoutlanesound()
  4168. mainseq.updateinterval = 15
  4169. mainseq.play SeqMiddleOutVertOn, 100
  4170. end if
  4171. end if
  4172. End Sub
  4173.  
  4174.  
  4175. ' The Right OutLane trigger has been Hit
  4176. '
  4177. Sub RightOutLaneTrigger_Hit()
  4178. PinEvent_RightOutLaneTrigger_Hit
  4179. If fptilted = false then
  4180. ' add some points
  4181. addscore(3000)
  4182. addscoreblue(0)
  4183. addscorepink(3000)
  4184. addbonus(300)
  4185. addbonusblue(0)
  4186. addbonuspink(300)
  4187.  
  4188. ' remember last trigger hit by the ball
  4189. set LastSwitchHit = RightOutLaneTrigger
  4190. If (kickbacklit = true) and (Rightkick = true) then
  4191. Rightkickback.solenoidpulse(100)
  4192. PinEvent_Kickback_Right
  4193. Playmusic 3, "sound58a", false
  4194. kickbackgrace.enabled=true
  4195. rightkicklight.flashforms 500, 50, bulboff
  4196. pinkseq.updateinterval = 5
  4197. pinkSeq.Play SequpOn, 30
  4198. end if
  4199. If (kickbacklit = false) or (rightkick = false) then
  4200. Playoutlanesound()
  4201. mainseq.updateinterval = 15
  4202. mainseq.play SeqMiddleOutVertOn, 100
  4203. end if
  4204. end if
  4205. End Sub
  4206.  
  4207. sub kickbackgrace_expired()
  4208. kickbacklit = false
  4209. leftkicklight.state = bulboff
  4210. rightkicklight.state = bulboff
  4211. kickbackgrace.enabled=false
  4212. end sub
  4213.  
  4214. Dim Ballinleftscoop
  4215.  
  4216. Sub Leftscoop_hit()
  4217. PinEvent_LeftScoop_Hit
  4218. addscore(2500)
  4219. addscoreblue(2500)
  4220. addscorepink(0)
  4221. addbonus(250)
  4222. addbonusblue(250)
  4223. addbonuspink(0)
  4224.  
  4225. Leftscoop.destroyball
  4226. Ballinleftscoop = Ballinleftscoop + 1
  4227. Leftscooptimer.enabled = true
  4228. ksoundtimer.enabled = true
  4229. activestrobe1 = 1
  4230. activestrobe2 = 0
  4231. if advxleft = true then
  4232. AdvanceBonusX()
  4233. advxleft = false
  4234. advx1.state=bulboff
  4235. end if
  4236. End sub
  4237.  
  4238. sub leftscooptimer_expired()
  4239. If ballinleftscoop > 0 then
  4240. leftscoop.createball
  4241. Leftscoop.solenoidpulse(100)
  4242. PinEvent_LeftScoop
  4243. ballinleftscoop = ballinleftscoop - 1
  4244. else
  4245. leftscooptimer.enabled = false
  4246. end if
  4247. end sub
  4248.  
  4249. Dim Ballinrightscoop
  4250.  
  4251. Sub rightscoop_hit()
  4252. PinEvent_RightScoop_Hit
  4253. addscore(2500)
  4254. addscoreblue(0)
  4255. addscorepink(2500)
  4256. addbonus(250)
  4257. addbonusblue(0)
  4258. addbonuspink(250)
  4259.  
  4260. rightscoop.destroyball
  4261. Ballinrightscoop = Ballinrightscoop + 1
  4262. rightscooptimer.enabled = true
  4263. ksoundtimer.enabled = true
  4264. activestrobe1 = 6
  4265. activestrobe2 = 0
  4266. if advxright = true then
  4267. AdvanceBonusX()
  4268. advxright = false
  4269. advx2.state=bulboff
  4270. end if
  4271. End sub
  4272.  
  4273. sub rightscooptimer_expired()
  4274. If ballinrightscoop > 0 then
  4275. rightscoop.createball
  4276. rightscoop.solenoidpulse(100)
  4277. PinEvent_RightScoop
  4278. ballinrightscoop = ballinrightscoop - 1
  4279. else
  4280. rightscooptimer.enabled = false
  4281. end if
  4282. end sub
  4283.  
  4284.  
  4285. sub leftdeckdrain_hit()
  4286. PinEvent_leftdeckdrain_Hit
  4287. If (multiballon = false) and (quickmultiballon = false) then
  4288. resetupperbanks()
  4289. end if
  4290. If (multiballlit = false) and (multiballon = false) and (quickmultiballon = false) then
  4291. Centertarget.solenoidpulse(100)
  4292. PinEvent_CenterTarget_Reset
  4293. extraballlit = false
  4294. advexballlight.state = bulboff
  4295. end if
  4296. leftdeckdrain.destroyball
  4297. bs3.flashforms 400, 50, bulboff
  4298. Ballinleftscoop = Ballinleftscoop + 1
  4299. Leftscooptimer.enabled = true
  4300. playmusic 2, "sound 11", false
  4301. ksoundtimer.enabled = true
  4302. activestrobe1 = 1
  4303. activestrobe2 = 0
  4304. end sub
  4305.  
  4306. sub rightdeckdrain_hit()
  4307. PinEvent_rightdeckdrain_Hit
  4308. If (multiballon = false) and (quickmultiballon = false) then
  4309. resetupperbanks()
  4310. end if
  4311. If (multiballlit = false) and (multiballon = false) and (quickmultiballon = false) then
  4312. Centertarget.solenoidpulse(100)
  4313. PinEvent_CenterTarget_Reset
  4314. extraballlit = false
  4315. advexballlight.state = bulboff
  4316. end if
  4317. rightdeckdrain.destroyball
  4318. ps3.flashforms 400, 50, bulboff
  4319. Ballinrightscoop = Ballinrightscoop + 1
  4320. rightscooptimer.enabled = true
  4321. playmusic 2, "sound35", false
  4322. ksoundtimer.enabled = true
  4323. activestrobe1 = 6
  4324. activestrobe2 = 0
  4325. end sub
  4326.  
  4327. Dim enterblue
  4328. Dim enterpink
  4329.  
  4330. Dim Ballincenter 'number of balls in center hole
  4331. Dim Ballinleft 'number of balls in left hole
  4332. Dim Ballinright 'number oif balls in right hole
  4333.  
  4334. Sub centerhole_hit()
  4335.  
  4336. addscore(4000)
  4337. addscoreblue(2000)
  4338. addscorepink(2000)
  4339. addbonus(400)
  4340. addbonusblue(200)
  4341. addbonuspink(200)
  4342.  
  4343. centerhole.destroyball
  4344. ballincenter = ballincenter + 1
  4345. centertarget.solenoidpulse()
  4346. PinEvent_CenterTarget_Reset
  4347. if (extraballlit = true) and (Loops = 0) then
  4348. extraballlit = false
  4349. advexballlight.state = bulboff
  4350. extraballtimer.enabled = false
  4351. advanceextraball()
  4352. end if
  4353. if (quickmultiballon = true) or (multiballon = true) then
  4354. centerholetimer.enabled = true
  4355. ksoundtimer.enabled = true
  4356. If enterpink = true then
  4357. activestrobe1 = 11
  4358. activestrobe2 = 8
  4359. end if
  4360. If enterblue = true then
  4361. activestrobe1 = 11
  4362. activestrobe2 = 3
  4363. end if
  4364. end if
  4365. if (quickmultiballon = false) and (multiballon = false) then
  4366. If (multiballlit = false) and (quickmballlit = false) then
  4367. Resetlooptriggers()
  4368. centerholetimer.enabled = true
  4369. ksoundtimer.enabled = true
  4370. If enterpink = true then
  4371. activestrobe1 = 11
  4372. activestrobe2 = 8
  4373. end if
  4374. If enterblue = true then
  4375. activestrobe1 = 11
  4376. activestrobe2 = 3
  4377. end if
  4378. end if
  4379. If (multiballlit = true) and (loops = 0) then
  4380. startmultiball()
  4381. end if
  4382. If (multiballlit = true) and (loops = 1) and (quickmballlit = false) then
  4383. Resetlooptriggers()
  4384. centerholetimer.enabled = true
  4385. ksoundtimer.enabled = true
  4386. If enterpink = true then
  4387. activestrobe1 = 11
  4388. activestrobe2 = 8
  4389. end if
  4390. If enterblue = true then
  4391. activestrobe1 = 11
  4392. activestrobe2 = 3
  4393. end if
  4394. end if
  4395. If (multiballlit = false) and (loops = 0) and (quickmballlit = true) then
  4396. Resetlooptriggers()
  4397. centerholetimer.enabled = true
  4398. ksoundtimer.enabled = true
  4399. If enterpink = true then
  4400. activestrobe1 = 11
  4401. activestrobe2 = 8
  4402. end if
  4403. If enterblue = true then
  4404. activestrobe1 = 11
  4405. activestrobe2 = 3
  4406. end if
  4407. end if
  4408. If (Loops = 1) and (quickmballlit = true) then
  4409. startquickmultiball()
  4410. end if
  4411. end if
  4412. end sub
  4413.  
  4414. sub startmultiball()
  4415. maintext.flushqueue()
  4416. pinktext.flushqueue()
  4417. bluetext.flushqueue()
  4418. maintext2.flushqueue()
  4419. pinktext2.flushqueue()
  4420. bluetext2.flushqueue()
  4421. multiballon = true
  4422. mballshow.enabled=true
  4423. EffectMusic 1, fadevolume, 0.0, 1000
  4424. playmusic 2, "sound46", false
  4425. playmusic 3, "sound17", false
  4426. displayinterrupt()
  4427. maintext.queuetext " Computing - ", seWipeRadarright, 2000
  4428. bluetext.queuetext " please", seWipeRadarright, 2000
  4429. pinktext.queuetext " wait ", seWipeRadarright, 2000
  4430. maintext2.queuetext " Computing - ", seWipeRadarright, 2000
  4431. bluetext2.queuetext " please", seWipeRadarright, 2000
  4432. pinktext2.queuetext " wait ", seWipeRadarright, 2000
  4433. playintro()
  4434. shutoffmainplay()
  4435. mainseq.updateinterval = 10
  4436. mainseq.play SeqRandom, 20, ,3000
  4437. If kickbacklit = false then
  4438. lightkickback()
  4439. end if
  4440. If quickmballlit = true then
  4441. holdquickmball()
  4442. end if
  4443. end sub
  4444.  
  4445. dim mbs
  4446.  
  4447. sub mballshow_expired
  4448. mbs = mbs + 1
  4449. If mbs = 6 then
  4450. displayinterrupt()
  4451. Maintext.text = " multi "
  4452. bluetext.text = " "
  4453. pinktext.text = " "
  4454. Maintext2.text = " multi "
  4455. bluetext2.text = " "
  4456. pinktext2.text = " "
  4457. Playmusic 2, "sound57", false
  4458. playmusic 4, "sound53", false
  4459. mainseq.stopplay()
  4460. mainseq.play SeqCircleOutOn, 30
  4461. end if
  4462. If mbs = 8 then
  4463. displayinterrupt()
  4464. Maintext.text = " multi ball "
  4465. bluetext.text = " "
  4466. pinktext.text = " "
  4467. Maintext2.text = " multi ball "
  4468. bluetext2.text = " "
  4469. pinktext2.text = " "
  4470. Playmusic 2, "sound57", false
  4471. playmusic 4, "sound53a", false
  4472. mainseq.stopplay()
  4473. mainseq.play SeqCircleOutOn, 30
  4474. end if
  4475. If mbs = 10 then
  4476. displayinterrupt()
  4477. Maintext.text = " multi ball "
  4478. bluetext.text = " is"
  4479. pinktext.text = " "
  4480. Maintext2.text = " multi ball "
  4481. bluetext2.text = " is"
  4482. pinktext2.text = " "
  4483. Playmusic 2, "sound57", false
  4484. playmusic 4, "sound53", false
  4485. mainseq.stopplay()
  4486. mainseq.play SeqCircleOutOn, 30
  4487. end if
  4488. If mbs = 12 then
  4489. displayinterrupt()
  4490. Maintext.text = " multi ball "
  4491. bluetext.text = " is"
  4492. pinktext.text = "on "
  4493. Maintext2.text = " multi ball "
  4494. bluetext2.text = " is"
  4495. pinktext2.text = "on "
  4496. Playmusic 2, "sound57", false
  4497. playmusic 4, "sound53a", false
  4498. mainseq.stopplay()
  4499. mainseq.play SeqCircleOutOn, 30
  4500. end if
  4501. If mbs = 14 then
  4502. activatemultiball()
  4503. displayinterrupt()
  4504. Maintext.queuetext " shoot the top ", seWipeRadarright, 2000
  4505. bluetext.queuetext " kick", seWipeRadarright, 2000
  4506. pinktext.queuetext "outs ", seWipeRadarleft, 2000
  4507. Maintext2.queuetext " shoot the top ", seWipeRadarright, 2000
  4508. bluetext2.queuetext " kick", seWipeRadarright, 2000
  4509. pinktext2.queuetext "outs ", seWipeRadarleft, 2000
  4510. Playmusic 3, "sound 3", false
  4511. mballshow.enabled = false
  4512. mbs = mbs - mbs
  4513. mainseq.stopplay()
  4514. mainseq.play SeqCircleOutOn, 30
  4515. end if
  4516.  
  4517. end sub
  4518.  
  4519. sub activatemultiball()
  4520. lock1.state = bulbon
  4521. lock2.state = bulbon
  4522. lock3.state = bulbon
  4523. lock4.state = bulbon
  4524. Locklit = false
  4525. multiballlit = false
  4526. balllockleft = false
  4527. balllockright = false
  4528. song = 3
  4529. playsong()
  4530. multiballreleasetimer.enabled = true
  4531. jackpotlight.state = bulbon
  4532. HundredK1.state = bulbblink
  4533. HundredK2.state = bulbblink
  4534. mainplay()
  4535. end sub
  4536.  
  4537. sub multiballreleasetimer_expired()
  4538. multiballreleasetimer.enabled = false
  4539. leftdeckexit.solenoidpulse(100)
  4540. PinEvent_leftdeckexit
  4541. rightdeckexit.solenoidpulse(100)
  4542. PinEvent_rightdeckexit
  4543. centerholetimer.enabled = true
  4544. ballslocked = ballslocked - ballslocked
  4545. ksoundtimer.enabled = true
  4546. If enterpink = true then
  4547. activestrobe1 = 11
  4548. activestrobe2 = 8
  4549. end if
  4550. If enterblue = true then
  4551. activestrobe1 = 11
  4552. activestrobe2 = 3
  4553. end if
  4554.  
  4555. end sub
  4556.  
  4557. dim holdingquickmball
  4558.  
  4559. sub holdquickmball()
  4560. holdingquickmball = true
  4561. quickmballlit = false
  4562. quicksignbulb1.state = bulboff
  4563. quicksignbulb2.state = bulboff
  4564. quicksignbulb3.state = bulboff
  4565. quicksignbulb4.state = bulboff
  4566. looplight1.state = bulboff
  4567. looplight2.state = bulboff
  4568. end sub
  4569.  
  4570. sub relightquickmball()
  4571. holdingquickmball = false
  4572. quickmballlit = true
  4573. quicksignbulb1.state = bulbblink
  4574. quicksignbulb2.state = bulbblink
  4575. quicksignbulb3.state = bulbblink
  4576. quicksignbulb4.state = bulbblink
  4577. looplight1.state = bulbblink
  4578. looplight2.state = bulbblink
  4579. leftlooptarget.solenoidpulse(100)
  4580. rightlooptarget.solenoidpulse(100)
  4581. playquickmultiball()
  4582. screeninterrupt()
  4583. end sub
  4584.  
  4585. dim quickmultiballsafety
  4586.  
  4587. sub startquickmultiball()
  4588. mainseq.updateinterval = 20
  4589. mainseq.play SeqMiddleOutVertOn, 50
  4590. Resetlooptriggers()
  4591. quickmultiballon = true
  4592. Createnewball()
  4593. leftlooptarget.popdown()
  4594. Rightlooptarget.popdown()
  4595. quickmballlit = false
  4596. quicksignbulb1.state = bulbon
  4597. quicksignbulb2.state = bulbon
  4598. quicksignbulb3.state = bulbon
  4599. quicksignbulb4.state = bulbon
  4600. looplight1.state = bulbon
  4601. looplight2.state = bulbon
  4602. quickscorelight1.state = bulbblink
  4603. quickscorelight2.state = bulbblink
  4604. locklit1.state = bulboff
  4605. locklit2.state = bulboff
  4606. jackpotlight.state = bulboff
  4607. displayinterrupt()
  4608. maintext.flushqueue()
  4609. pinktext.flushqueue()
  4610. bluetext.flushqueue()
  4611. maintext.queuetext "quick multiball", seWipeRadarright, 3000
  4612. bluetext.queuetext " shoot ", seWipeRadarright, 3000
  4613. pinktext.queuetext " loops ", seWipeRadarright, 3000
  4614. maintext2.flushqueue()
  4615. pinktext2.flushqueue()
  4616. bluetext2.flushqueue()
  4617. maintext2.queuetext "quick multiball", seWipeRadarright, 3000
  4618. bluetext2.queuetext " shoot ", seWipeRadarright, 3000
  4619. pinktext2.queuetext " loops ", seWipeRadarright, 3000
  4620. Quick1.set bulbblink, "1111100000", 150
  4621. Quick2.set bulbblink, "0111110000", 150
  4622. Quick3.set bulbblink, "0011111000", 150
  4623. Quick4.set bulbblink, "0001111100", 150
  4624. Quick5.set bulbblink, "0000111110", 150
  4625. mainplay()
  4626. shutoffmainplay()
  4627. quickmultiballsafety = true
  4628. If kickbacklit = false then
  4629. lightkickback()
  4630. end if
  4631. If (locklit = true) then
  4632. lock1.state = bulbon
  4633. lock2.state = bulbon
  4634. lock3.state = bulbon
  4635. lock4.state = bulbon
  4636. end if
  4637. end sub
  4638.  
  4639. Sub centerholetimer_expired()
  4640. If ballincenter > 0 then
  4641. switchcolors()
  4642. If enterpink = true then
  4643. rightdeckentrance.createball
  4644. rightdeckentrance.solenoidpulse(100)
  4645. PinEvent_rightdeckentrance
  4646. ballincenter = ballincenter - 1
  4647. end if
  4648. If enterblue = true then
  4649. leftdeckentrance.createball
  4650. leftdeckentrance.solenoidpulse(100)
  4651. PinEvent_leftdeckentrance
  4652. ballincenter = ballincenter - 1
  4653. end if
  4654. end if
  4655. If ballincenter = 0 then
  4656. centerholetimer.enabled = false
  4657. end if
  4658. end sub
  4659.  
  4660. sub switchcolors()
  4661. If (enterpink = true) and (enterblue = false) then
  4662. switchtoblue.enabled = true
  4663. end if
  4664. If (enterblue = true) and (enterpink = false) then
  4665. switchtopink.enabled = true
  4666. end if
  4667. end sub
  4668.  
  4669. sub switchtoblue_expired()
  4670. enterpink = false
  4671. enterblue = true
  4672. pinkarrow.state=bulboff
  4673. bluearrow.state=bulbon
  4674. switchtoblue.enabled=false
  4675. end sub
  4676.  
  4677. sub switchtopink_expired()
  4678. enterblue = false
  4679. enterpink = true
  4680. pinkarrow.state=bulbon
  4681. bluearrow.state=bulboff
  4682. switchtopink.enabled=false
  4683. end sub
  4684.  
  4685. dim activestrobe1
  4686. dim activestrobe2
  4687.  
  4688. sub leftkicker_hit()
  4689.  
  4690. addscore(1000)
  4691. addscoreblue(1000)
  4692. addscorepink(0)
  4693. addbonus(100)
  4694. addbonusblue(100)
  4695. addbonuspink(0)
  4696.  
  4697. ballinleft = ballinleft + 1
  4698. leftkicker.destroyball
  4699. PinEvent_Leftkicker_Hit
  4700. leftkickertimer.enabled = true
  4701. ksoundtimer.enabled = true
  4702. activestrobe1 = 11
  4703. activestrobe2 = 3
  4704. if lightkickbackleft = true then
  4705. Lightkickback()
  4706. Lightkickbackleft = false
  4707. Lightkickback1.state = bulboff
  4708. playmusic 2, "sound19", false
  4709. maintext.queuetext " kickback lit ", seWipeRadarRight, 2000
  4710. maintext2.queuetext " kickback lit ", seWipeRadarRight, 2000
  4711. end if
  4712. end sub
  4713.  
  4714. sub leftkickertimer_expired()
  4715. If ballinleft > 0 then
  4716. leftdeckentrance.createball
  4717. leftdeckentrance.solenoidpulse(100)
  4718. PinEvent_leftdeckentrance
  4719. ballinleft = ballinleft - 1
  4720. end if
  4721. If ballinleft = 0 then
  4722. leftkickertimer.enabled = false
  4723. end if
  4724. end sub
  4725.  
  4726. sub rightkicker_hit()
  4727.  
  4728. addscore(1000)
  4729. addscoreblue(0)
  4730. addscorepink(1000)
  4731. addbonus(100)
  4732. addbonusblue(0)
  4733. addbonuspink(100)
  4734.  
  4735. ballinright = ballinright + 1
  4736. rightkicker.destroyball
  4737. PinEvent_Rightkicker_Hit
  4738. rightkickertimer.enabled = true
  4739. ksoundtimer.enabled = true
  4740. activestrobe1 = 11
  4741. activestrobe2 = 8
  4742. if lightkickbackright = true then
  4743. Lightkickback()
  4744. Lightkickbackright = false
  4745. Lightkickback2.state = bulboff
  4746. playmusic 2, "sound19", false
  4747. maintext.queuetext " kickback lit ", seWipeRadarRight, 2000
  4748. maintext2.queuetext " kickback lit ", seWipeRadarRight, 2000
  4749. end if
  4750. end sub
  4751.  
  4752. sub rightkickertimer_expired()
  4753. If ballinright > 0 then
  4754. rightdeckentrance.createball
  4755. rightdeckentrance.solenoidpulse(100)
  4756. PinEvent_rightdeckentrance
  4757. ballinright = ballinright - 1
  4758. end if
  4759. If ballinright = 0 then
  4760. rightkickertimer.enabled=false
  4761. end if
  4762. end sub
  4763.  
  4764. sub leftlooptarget_hit()
  4765. If quickmballlit = false then
  4766. leftlooptarget.popdown()
  4767. Rightlooptarget.popdown()
  4768. end if
  4769. If quickmballlit = true then
  4770. leftlooptarget.solenoidpulse()
  4771. rightlooptarget.solenoidpulse()
  4772. end if
  4773. end sub
  4774.  
  4775. sub rightlooptarget_hit()
  4776. If quickmballlit = false then
  4777. leftlooptarget.popdown()
  4778. Rightlooptarget.popdown()
  4779. end if
  4780. If quickmballlit = true then
  4781. leftlooptarget.solenoidpulse()
  4782. rightlooptarget.solenoidpulse()
  4783. end if
  4784. end sub
  4785.  
  4786. dim multiballlit
  4787.  
  4788. sub leftdeckexit_hit()
  4789. PinEvent_leftdeckexit_Hit
  4790. bs4.flashforms 400, 50
  4791. bs5.flashforms 400, 50
  4792.  
  4793. addscore(5000)
  4794. addscoreblue(5000)
  4795. addscorepink(0)
  4796. addbonus(500)
  4797. addbonusblue(500)
  4798. addbonuspink(0)
  4799.  
  4800. If multiballon = true then
  4801.  
  4802. addscore(100000)
  4803. addscoreblue(100000)
  4804. addscorepink(0)
  4805. addbonus(1000)
  4806. addbonusblue(1000)
  4807. addbonuspink(0)
  4808.  
  4809. Displayinterrupt()
  4810. maintext.flushqueue()
  4811. pinktext.flushqueue()
  4812. bluetext.flushqueue()
  4813. maintext.queuetext "100K Blue Points", seWipeRadarRight, 4000
  4814. bluetext.queuetext " 100000", seblinkfast, 4000
  4815. pinktext.text = " "
  4816. maintext2.flushqueue()
  4817. pinktext2.flushqueue()
  4818. bluetext2.flushqueue()
  4819. maintext2.queuetext "100K Blue Points", seWipeRadarRight, 4000
  4820. bluetext2.queuetext " 100000", seblinkfast, 4000
  4821. pinktext2.text = " "
  4822. Playblue100K()
  4823. screeninterrupt()
  4824.  
  4825. playmusic 8, "sound57", false
  4826.  
  4827. blueseq.updateinterval = 5
  4828. blueseq.play SeqLeftOn, 50, 4
  4829.  
  4830. end if
  4831.  
  4832. If (locklit = false) or (quickmultiballon = true) then
  4833. leftdeckexittimer.enabled=true
  4834. end if
  4835. If (locklit = true) and (quickmultiballon = false) then
  4836. locklit1.state = bulbon
  4837. resetpinkinlines.enabled=true
  4838. resetblueinlines.enabled=true
  4839. balllockleft = true
  4840. ballslocked = ballslocked + 1
  4841. checklockedballs()
  4842. end if
  4843. end sub
  4844.  
  4845. sub leftdeckexittimer_expired()
  4846. leftdeckexit.solenoidpulse(100)
  4847. PinEvent_leftdeckexit
  4848. leftdeckexittimer.enabled=false
  4849. playmusic 5, "sound48", false
  4850. playmusic 6,"sound36", false
  4851. mainseq.updateinterval = 15
  4852. mainseq.play SeqDownOn, 40
  4853. end sub
  4854.  
  4855. sub rightdeckexit_hit()
  4856. PinEvent_rightdeckexit_Hit
  4857. ps4.flashforms 400, 50
  4858. ps5.flashforms 400, 50
  4859.  
  4860. addscore(5000)
  4861. addscoreblue(0)
  4862. addscorepink(5000)
  4863. addbonus(500)
  4864. addbonusblue(0)
  4865. addbonuspink(500)
  4866.  
  4867. If multiballon = true then
  4868.  
  4869. addscore(100000)
  4870. addscoreblue(0)
  4871. addscorepink(100000)
  4872. addbonus(1000)
  4873. addbonusblue(0)
  4874. addbonuspink(1000)
  4875.  
  4876. Displayinterrupt()
  4877. maintext.flushqueue()
  4878. pinktext.flushqueue()
  4879. bluetext.flushqueue()
  4880. maintext.queuetext "100K Pink Points", seWipeRadarRight, 4000
  4881. bluetext.text = " "
  4882. pinktext.queuetext " 100000", seblinkfast, 4000
  4883. maintext2.flushqueue()
  4884. pinktext2.flushqueue()
  4885. bluetext2.flushqueue()
  4886. maintext2.queuetext "100K Pink Points", seWipeRadarRight, 4000
  4887. bluetext2.text = " "
  4888. pinktext2.queuetext " 100000", seblinkfast, 4000
  4889. Playpink100K()
  4890. screeninterrupt()
  4891.  
  4892. playmusic 8, "sound57", false
  4893.  
  4894. pinkseq.updateinterval = 5
  4895. pinkseq.play SeqLeftOn, 50, 4
  4896.  
  4897. end if
  4898.  
  4899. If (locklit = false) or (quickmultiballon = true) then
  4900. rightdeckexittimer.enabled=true
  4901. end if
  4902. If (locklit = true) and (quickmultiballon = false) then
  4903. locklit2.state = bulbon
  4904. resetpinkinlines.enabled=true
  4905. resetblueinlines.enabled=true
  4906. balllockright = true
  4907. ballslocked = ballslocked + 1
  4908. checklockedballs()
  4909. end if
  4910. end sub
  4911.  
  4912. sub rightdeckexittimer_expired()
  4913. rightdeckexit.solenoidpulse(100)
  4914. PinEvent_rightdeckexit
  4915. rightdeckexittimer.enabled=false
  4916. playmusic 5, "sound48", false
  4917. playmusic 6,"sound36", false
  4918. mainseq.updateinterval = 20
  4919. mainseq.play SeqDownOn, 40
  4920. end sub
  4921.  
  4922. sub checklockedballs()
  4923. EffectMusic 1, fadevolume, 0.0, 1000
  4924. createnewballtimer.enabled=true
  4925.  
  4926. If ((balllockleft = true) and (balllockright = false)) or ((balllockleft = false) and (balllockright = true)) then
  4927. maintext.flushqueue()
  4928. pinktext.flushqueue()
  4929. bluetext.flushqueue()
  4930. maintext.queuetext "Ball one locked", seblink, 1200
  4931. bluetext.queuetext " ", seWipeRadarleft, 3000
  4932. pinktext.queuetext " ", seWipeRadarRight, 3000
  4933. maintext2.flushqueue()
  4934. pinktext2.flushqueue()
  4935. bluetext2.flushqueue()
  4936. maintext2.queuetext "Ball one locked", seblink, 1200
  4937. bluetext2.queuetext " ", seWipeRadarleft, 3000
  4938. pinktext2.queuetext " ", seWipeRadarRight, 3000
  4939. playmusic 4, "sound60", false , 0.2
  4940. lsoundtimer.enabled=true
  4941. displayinterrupt()
  4942. end if
  4943.  
  4944. If (balllockleft = true) and (balllockright = true) then
  4945. maintext.flushqueue()
  4946. pinktext.flushqueue()
  4947. bluetext.flushqueue()
  4948. maintext.queuetext "Ball two locked", seblink, 1200, 0, true
  4949. bluetext.queuetext " ", seWipeRadarleft, 3000
  4950. pinktext.queuetext " ", seWipeRadarRight, 3000
  4951. maintext2.flushqueue()
  4952. pinktext2.flushqueue()
  4953. bluetext2.flushqueue()
  4954. maintext2.queuetext "Ball two locked", seblink, 1200, 0, true
  4955. bluetext2.queuetext " ", seWipeRadarleft, 3000
  4956. pinktext2.queuetext " ", seWipeRadarRight, 3000
  4957. mballmessagetimer.enabled = true
  4958. playmusic 4, "sound60", false, 0.2
  4959. lsoundtimer.enabled=true
  4960. displayinterrupt()
  4961. multiballlit = true
  4962. Jackpotlight.state=bulbblink
  4963. end if
  4964.  
  4965. end sub
  4966.  
  4967. 'If ballslocked = 1 then
  4968. 'maintext.queuetext "Ball one locked", seblink, 1200
  4969. 'playmusic 4, "sound15", false
  4970. 'lsoundtimer.enabled=true
  4971. 'displayinterrupt()
  4972. 'end if
  4973. 'if ballslocked = 2 then
  4974. 'maintext.queuetext "Ball two locked", seblink, 1200, 0, true
  4975. 'mballmessagetimer.enabled = true
  4976. 'playmusic 4, "sound15", false
  4977. 'lsoundtimer.enabled=true
  4978. 'displayinterrupt()
  4979. 'multiballlit = true
  4980. 'Jackpotlight.state=bulbblink
  4981. 'end if
  4982.  
  4983. sub resetlocklights()
  4984. If locklit = true then
  4985. If balllockleft = true then
  4986. locklit1.state = bulbon
  4987. end if
  4988. If balllockleft = false then
  4989. locklit1.state = bulbblink
  4990. end if
  4991. If balllockright = true then
  4992. locklit2.state = bulbon
  4993. end if
  4994. If balllockright = false then
  4995. locklit2.state = bulbblink
  4996. end if
  4997. end if
  4998. If locklit = false then
  4999. locklit1.state = bulboff
  5000. locklit2.state = bulboff
  5001. end if
  5002. end sub
  5003.  
  5004. sub mballmessagetimer_expired()
  5005. maintext.text = "multiball is lit"
  5006. maintext2.text = "multiball is lit"
  5007. mballmessagetimer.enabled=false
  5008. playmusic 5, "sound28", false
  5009. mainseq.updateinterval = 10
  5010. mainseq.play SeqCircleOutOn, 40
  5011. mainplay()
  5012. end sub
  5013.  
  5014. sub createnewballtimer_expired()
  5015. createnewballtimer.enabled=false
  5016. createnewball()
  5017. end sub
  5018.  
  5019. sub trigger2_hit()
  5020. PinEvent_WireRamp_Right
  5021. If multiballon = false then
  5022. resetpinkinlines.enabled=true
  5023. resetblueinlines.enabled=true
  5024. end if
  5025. If multiballon = true then
  5026. P13.popdown()
  5027. P14.popdown()
  5028. P15.popdown()
  5029. P16.popdown()
  5030. end if
  5031. end sub
  5032.  
  5033. sub trigger3_hit()
  5034. PinEvent_WireRamp_Left
  5035. If multiballon = false then
  5036. resetpinkinlines.enabled=true
  5037. resetblueinlines.enabled=true
  5038. end if
  5039. If multiballon = true then
  5040. B13.popdown()
  5041. B14.popdown()
  5042. B15.popdown()
  5043. B16.popdown()
  5044. end if
  5045. end sub
  5046.  
  5047.  
  5048. Dim Song
  5049.  
  5050. sub playsong()
  5051. If song = 1 then
  5052. playmusic 1, "BVP Main Theme", True, 1.0
  5053. End if
  5054. If song = 2 then
  5055. playmusic 1, "BVP Locklit", True, 1.0
  5056. End if
  5057. If song = 3 then
  5058. playmusic 1, "BVP Multiball", True, 1.0
  5059. End if
  5060. If song = 4 then
  5061. playmusic 1, "BVP Quick Multiball Shooter", True, 1.0
  5062. End if
  5063. If song = 5 then
  5064. playmusic 1, "BVP Quick Multiball", True, 1.0
  5065. End if
  5066. If song = 6 then
  5067. playmusic 1, "BVP Locklit Shooter Theme", True, 1.0
  5068. End if
  5069. If song = 7 then
  5070. playmusic 1, "BVP Main Shooter Theme", True, 1.0
  5071. End if
  5072. If song = 8 then
  5073. Song = song - song
  5074. playmusic 1, "BVP HighScore", True, 1.0
  5075. Playsong()
  5076. End if
  5077. end sub
  5078.  
  5079. Dim Lock
  5080. Dim Locklit
  5081. Dim Ballslocked
  5082.  
  5083. sub advancelock()
  5084. lock = lock + 1
  5085. If lock = 1 then
  5086. Lock1.state=bulbon
  5087. playlocklitL()
  5088. screeninterrupt()
  5089. end if
  5090. If lock = 2 then
  5091. Lock2.state=bulbon
  5092. playlocklitO()
  5093. screeninterrupt()
  5094. end if
  5095. If lock = 3 then
  5096. Lock3.state=bulbon
  5097. playlocklitC()
  5098. screeninterrupt()
  5099. end if
  5100. If lock = 4 then
  5101. Lock4.state=bulbon
  5102. Lightlock()
  5103. end if
  5104. end sub
  5105.  
  5106. Dim Lightlockonhold
  5107.  
  5108. Sub Lightlock()
  5109. If quickmultiballon = false then
  5110. Locklit = true
  5111. balllockleft = false
  5112. balllockright = false
  5113. song = 2
  5114. If ballindrain = false then
  5115. playmusic 1, "BVP Locklit", True, 1.0, 1200
  5116. end if
  5117. locklitshow()
  5118. locklit1.state=bulbblink
  5119. locklit2.state=bulbblink
  5120. end if
  5121. If quickmultiballon = true then
  5122. Lightlockonhold = true
  5123. end if
  5124. end sub
  5125.  
  5126. sub resetlock()
  5127. lock = lock - lock
  5128. lock1.state = bulboff
  5129. lock2.state = bulboff
  5130. lock3.state = bulboff
  5131. lock4.state = bulboff
  5132. resetlocklights()
  5133. end sub
  5134.  
  5135. dim lsound
  5136.  
  5137. sub locklitshow()
  5138. maintext.flushqueue()
  5139. pinktext.flushqueue()
  5140. bluetext.flushqueue()
  5141. maintext2.flushqueue()
  5142. pinktext2.flushqueue()
  5143. bluetext2.flushqueue()
  5144. Lock1.set bulbblink, "1110000000", 75
  5145. Lock2.set bulbblink, "0001000001", 75
  5146. Lock3.set bulbblink, "0000100010", 75
  5147. Lock4.set bulbblink, "0000011100", 75
  5148. playmusic 5, "sound15", false
  5149. lsoundtimer.enabled=true
  5150. maintext.queuetext "Lock is lit", seBlink, 1200
  5151. bluetext.queuetext " ", seWipeRadarleft, 3000
  5152. pinktext.queuetext " ", seWipeRadarRight, 3000
  5153. maintext2.queuetext "Lock is lit", seBlink, 1200
  5154. bluetext2.queuetext " ", seWipeRadarleft, 3000
  5155. pinktext2.queuetext " ", seWipeRadarRight, 3000
  5156. displayinterrupt()
  5157. mainseq.play seqblinking, , 4, 100
  5158. playlocklitK()
  5159. screeninterrupt()
  5160. end sub
  5161.  
  5162. sub lsoundtimer_expired()
  5163. lsound = lsound + 1
  5164. if (balllockright = false) and (balllockleft = false) then
  5165. If lsound = 1 then
  5166. playmusic 5, "sound15", false
  5167. end if
  5168. If lsound = 2 then
  5169. playmusic 5, "sound15", false
  5170. end if
  5171. If lsound = 3 then
  5172. playmusic 5, "sound15", false
  5173. lsoundtimer.enabled = false
  5174. lsound = lsound - lsound
  5175. end if
  5176. end if
  5177. if (balllockright = true) or (balllockleft = true) then
  5178. If lsound = 1 then
  5179. playmusic 4, "sound60", false, 0.4
  5180. end if
  5181. If lsound = 2 then
  5182. playmusic 4, "sound60", false, 0.6
  5183. end if
  5184. If lsound = 3 then
  5185. playmusic 4, "sound60", false, 0.8
  5186. lsoundtimer.enabled = false
  5187. lsound = lsound - lsound
  5188. end if
  5189. end if
  5190. end sub
  5191.  
  5192. sub resetalltargets()
  5193.  
  5194. B1.solenoidpulse(100)
  5195. B2.solenoidpulse(100)
  5196. B3.solenoidpulse(100)
  5197. B4.solenoidpulse(100)
  5198. B1L.state=bulboff
  5199. B2L.state=bulboff
  5200. B3L.state=bulboff
  5201. B4L.state=bulboff
  5202.  
  5203. P1.solenoidpulse(100)
  5204. P2.solenoidpulse(100)
  5205. P3.solenoidpulse(100)
  5206. P4.solenoidpulse(100)
  5207. P1L.state=bulboff
  5208. P2L.state=bulboff
  5209. P3L.state=bulboff
  5210. P4L.state=bulboff
  5211.  
  5212. B5.solenoidpulse(100)
  5213. B6.solenoidpulse(100)
  5214. B7.solenoidpulse(100)
  5215. B8.solenoidpulse(100)
  5216. B5L.state=bulboff
  5217. B6L.state=bulboff
  5218. B7L.state=bulboff
  5219. B8L.state=bulboff
  5220.  
  5221. P5.solenoidpulse(100)
  5222. P6.solenoidpulse(100)
  5223. P7.solenoidpulse(100)
  5224. P8.solenoidpulse(100)
  5225. P5L.state=bulboff
  5226. P6L.state=bulboff
  5227. P7L.state=bulboff
  5228. P8L.state=bulboff
  5229.  
  5230. B9.solenoidpulse(100)
  5231. B10.solenoidpulse(100)
  5232. B11.solenoidpulse(100)
  5233. B12.solenoidpulse(100)
  5234. B9L.state=bulboff
  5235. B10L.state=bulboff
  5236. B11L.state=bulboff
  5237. B12L.state=bulboff
  5238.  
  5239. P9.solenoidpulse(100)
  5240. P10.solenoidpulse(100)
  5241. P11.solenoidpulse(100)
  5242. P12.solenoidpulse(100)
  5243. P9L.state=bulboff
  5244. P10L.state=bulboff
  5245. P11L.state=bulboff
  5246. P12L.state=bulboff
  5247.  
  5248. B13.solenoidpulse(100)
  5249. B14.solenoidpulse(100)
  5250. B15.solenoidpulse(100)
  5251. B16.solenoidpulse(100)
  5252.  
  5253. P13.solenoidpulse(100)
  5254. P14.solenoidpulse(100)
  5255. P15.solenoidpulse(100)
  5256. P16.solenoidpulse(100)
  5257.  
  5258. Centertarget.solenoidpulse(100)
  5259. PinEvent_CenterTarget_Reset
  5260.  
  5261. end sub
  5262.  
  5263. sub resetupperbanks()
  5264.  
  5265. B5.solenoidpulse(100)
  5266. B6.solenoidpulse(100)
  5267. B7.solenoidpulse(100)
  5268. B8.solenoidpulse(100)
  5269. B5L.state=bulboff
  5270. B6L.state=bulboff
  5271. B7L.state=bulboff
  5272. B8L.state=bulboff
  5273.  
  5274. P5.solenoidpulse(100)
  5275. P6.solenoidpulse(100)
  5276. P7.solenoidpulse(100)
  5277. P8.solenoidpulse(100)
  5278. P5L.state=bulboff
  5279. P6L.state=bulboff
  5280. P7L.state=bulboff
  5281. P8L.state=bulboff
  5282.  
  5283. B9.solenoidpulse(100)
  5284. B10.solenoidpulse(100)
  5285. B11.solenoidpulse(100)
  5286. B12.solenoidpulse(100)
  5287. B9L.state=bulboff
  5288. B10L.state=bulboff
  5289. B11L.state=bulboff
  5290. B12L.state=bulboff
  5291.  
  5292. P9.solenoidpulse(100)
  5293. P10.solenoidpulse(100)
  5294. P11.solenoidpulse(100)
  5295. P12.solenoidpulse(100)
  5296. P9L.state=bulboff
  5297. P10L.state=bulboff
  5298. P11L.state=bulboff
  5299. P12L.state=bulboff
  5300.  
  5301. end sub
  5302.  
  5303. Sub B1_hit()
  5304. B1L.state=bulbon
  5305. checksetB1timer.enabled=true
  5306. playmusic 2, "sound41", false
  5307.  
  5308. addscore(500)
  5309. addscoreblue(500)
  5310. addscorepink(0)
  5311. addbonus(50)
  5312. addbonusblue(50)
  5313. addbonuspink(0)
  5314. PinEvent_Drop_Targets_B1toB4_Hit
  5315. end sub
  5316.  
  5317. Sub B2_hit()
  5318. B2L.state=bulbon
  5319. checksetB1timer.enabled=true
  5320. playmusic 2, "sound41", false
  5321.  
  5322. addscore(500)
  5323. addscoreblue(500)
  5324. addscorepink(0)
  5325. addbonus(50)
  5326. addbonusblue(50)
  5327. addbonuspink(0)
  5328. PinEvent_Drop_Targets_B1toB4_Hit
  5329. end sub
  5330.  
  5331. Sub B3_hit()
  5332. B3L.state=bulbon
  5333. checksetB1timer.enabled=true
  5334. playmusic 2, "sound41", false
  5335.  
  5336. addscore(500)
  5337. addscoreblue(500)
  5338. addscorepink(0)
  5339. addbonus(50)
  5340. addbonusblue(50)
  5341. addbonuspink(0)
  5342. PinEvent_Drop_Targets_B1toB4_Hit
  5343. end sub
  5344.  
  5345. Sub B4_hit()
  5346. B4L.state=bulbon
  5347. checksetB1timer.enabled=true
  5348. playmusic 2, "sound41", false
  5349.  
  5350. addscore(500)
  5351. addscoreblue(500)
  5352. addscorepink(0)
  5353. addbonus(50)
  5354. addbonusblue(50)
  5355. addbonuspink(0)
  5356. PinEvent_Drop_Targets_B1toB4_Hit
  5357. end sub
  5358.  
  5359. sub checksetb1timer_expired()
  5360. checksetB1timer.enabled=false
  5361. checksetB1()
  5362. end sub
  5363.  
  5364. sub checksetB1()
  5365. If (B1.dropped = true) and (B2.dropped = true) and (B3.dropped = true) and (B4.dropped = true) then
  5366. Advancelock()
  5367. B1.solenoidpulse(100)
  5368. B2.solenoidpulse(100)
  5369. B3.solenoidpulse(100)
  5370. B4.solenoidpulse(100)
  5371. B1L.state=bulboff
  5372. B2L.state=bulboff
  5373. B3L.state=bulboff
  5374. B4L.state=bulboff
  5375. P1.solenoidpulse(100)
  5376. P2.solenoidpulse(100)
  5377. P3.solenoidpulse(100)
  5378. P4.solenoidpulse(100)
  5379. P1L.state=bulboff
  5380. P2L.state=bulboff
  5381. P3L.state=bulboff
  5382. P4L.state=bulboff
  5383.  
  5384. addscore(5000)
  5385. addscoreblue(5000)
  5386. addscorepink(0)
  5387. addbonus(500)
  5388. addbonusblue(500)
  5389. addbonuspink(0)
  5390. bluebank()
  5391. PinEvent_Drop_Targets_B1toB4_Reset
  5392. end if
  5393. end sub
  5394.  
  5395. Sub B5_hit()
  5396. B5L.state=bulbon
  5397. checksetB2timer.enabled=true
  5398. playmusic 2, "sound41", false
  5399.  
  5400. addscore(500)
  5401. addscoreblue(500)
  5402. addscorepink(0)
  5403. addbonus(50)
  5404. addbonusblue(50)
  5405. addbonuspink(0)
  5406. PinEvent_Drop_Targets_B5toB8_Hit
  5407. end sub
  5408.  
  5409. Sub B6_hit()
  5410. B6L.state=bulbon
  5411. checksetB2timer.enabled=true
  5412. playmusic 2, "sound41", false
  5413.  
  5414. addscore(500)
  5415. addscoreblue(500)
  5416. addscorepink(0)
  5417. addbonus(50)
  5418. addbonusblue(50)
  5419. addbonuspink(0)
  5420. PinEvent_Drop_Targets_B5toB8_Hit
  5421. end sub
  5422.  
  5423. Sub B7_hit()
  5424. B7L.state=bulbon
  5425. checksetB2timer.enabled=true
  5426. playmusic 2, "sound41", false
  5427.  
  5428. addscore(500)
  5429. addscoreblue(500)
  5430. addscorepink(0)
  5431. addbonus(50)
  5432. addbonusblue(50)
  5433. addbonuspink(0)
  5434. PinEvent_Drop_Targets_B5toB8_Hit
  5435. end sub
  5436.  
  5437. Sub B8_hit()
  5438. B8L.state=bulbon
  5439. checksetB2timer.enabled=true
  5440. playmusic 2, "sound41", false
  5441.  
  5442. addscore(500)
  5443. addscoreblue(500)
  5444. addscorepink(0)
  5445. addbonus(50)
  5446. addbonusblue(50)
  5447. addbonuspink(0)
  5448. PinEvent_Drop_Targets_B5toB8_Hit
  5449. end sub
  5450.  
  5451. sub checksetb2timer_expired()
  5452. checksetB2timer.enabled=false
  5453. checksetB2()
  5454. end sub
  5455.  
  5456. sub checksetB2()
  5457. If (B5.dropped = true) and (B6.dropped = true) and (B7.dropped = true) and (B8.dropped = true) then
  5458. Advancelock()
  5459. B5.solenoidpulse(100)
  5460. B6.solenoidpulse(100)
  5461. B7.solenoidpulse(100)
  5462. B8.solenoidpulse(100)
  5463. B5L.state=bulboff
  5464. B6L.state=bulboff
  5465. B7L.state=bulboff
  5466. B8L.state=bulboff
  5467. P5.solenoidpulse(100)
  5468. P6.solenoidpulse(100)
  5469. P7.solenoidpulse(100)
  5470. P8.solenoidpulse(100)
  5471. P5L.state=bulboff
  5472. P6L.state=bulboff
  5473. P7L.state=bulboff
  5474. P8L.state=bulboff
  5475.  
  5476. addscore(5000)
  5477. addscoreblue(5000)
  5478. addscorepink(0)
  5479. addbonus(500)
  5480. addbonusblue(500)
  5481. addbonuspink(0)
  5482. bluebank()
  5483. PinEvent_Drop_Targets_B5toB8_Reset
  5484. end if
  5485. end sub
  5486.  
  5487. Sub B9_hit()
  5488. B9L.state=bulbon
  5489. checksetB3timer.enabled=true
  5490. playmusic 2, "sound41", false
  5491.  
  5492. addscore(500)
  5493. addscoreblue(500)
  5494. addscorepink(0)
  5495. addbonus(50)
  5496. addbonusblue(50)
  5497. addbonuspink(0)
  5498. PinEvent_Drop_Targets_B9toB12_Hit
  5499. end sub
  5500.  
  5501. Sub B10_hit()
  5502. B10L.state=bulbon
  5503. checksetB3timer.enabled=true
  5504. playmusic 2, "sound41", false
  5505.  
  5506. addscore(500)
  5507. addscoreblue(500)
  5508. addscorepink(0)
  5509. addbonus(50)
  5510. addbonusblue(50)
  5511. addbonuspink(0)
  5512. PinEvent_Drop_Targets_B9toB12_Hit
  5513. end sub
  5514.  
  5515. Sub B11_hit()
  5516. B11L.state=bulbon
  5517. checksetB3timer.enabled=true
  5518. playmusic 2, "sound41", false
  5519.  
  5520. addscore(500)
  5521. addscoreblue(500)
  5522. addscorepink(0)
  5523. addbonus(50)
  5524. addbonusblue(50)
  5525. addbonuspink(0)
  5526. PinEvent_Drop_Targets_B9toB12_Hit
  5527. end sub
  5528.  
  5529. Sub B12_hit()
  5530. B12L.state=bulbon
  5531. checksetB3timer.enabled=true
  5532. playmusic 2, "sound41", false
  5533.  
  5534. addscore(500)
  5535. addscoreblue(500)
  5536. addscorepink(0)
  5537. addbonus(50)
  5538. addbonusblue(50)
  5539. addbonuspink(0)
  5540. PinEvent_Drop_Targets_B9toB12_Hit
  5541. end sub
  5542.  
  5543. sub checksetb3timer_expired()
  5544. checksetB3timer.enabled=false
  5545. checksetB3()
  5546. end sub
  5547.  
  5548. sub checksetB3()
  5549. If (B9.dropped = true) and (B10.dropped = true) and (B11.dropped = true) and (B12.dropped = true) then
  5550. Advancelock()
  5551. B9.solenoidpulse(100)
  5552. B10.solenoidpulse(100)
  5553. B11.solenoidpulse(100)
  5554. B12.solenoidpulse(100)
  5555. B9L.state=bulboff
  5556. B10L.state=bulboff
  5557. B11L.state=bulboff
  5558. B12L.state=bulboff
  5559. P9.solenoidpulse(100)
  5560. P10.solenoidpulse(100)
  5561. P11.solenoidpulse(100)
  5562. P12.solenoidpulse(100)
  5563. P9L.state=bulboff
  5564. P10L.state=bulboff
  5565. P11L.state=bulboff
  5566. P12L.state=bulboff
  5567.  
  5568. addscore(5000)
  5569. addscoreblue(5000)
  5570. addscorepink(0)
  5571. addbonus(500)
  5572. addbonusblue(500)
  5573. addbonuspink(0)
  5574. bluebank()
  5575. PinEvent_Drop_Targets_B9toB12_Reset
  5576. end if
  5577. end sub
  5578.  
  5579. Sub B13_hit()
  5580. checksetB4timer.enabled=true
  5581. playmusic 2, "sound41", false
  5582.  
  5583. addscore(500)
  5584. addscoreblue(500)
  5585. addscorepink(0)
  5586. addbonus(50)
  5587. addbonusblue(50)
  5588. addbonuspink(0)
  5589. PinEvent_Drop_Targets_B13toB16_Hit
  5590. end sub
  5591.  
  5592. Sub B14_hit()
  5593. checksetB4timer.enabled=true
  5594. playmusic 2, "sound41", false
  5595.  
  5596. addscore(500)
  5597. addscoreblue(500)
  5598. addscorepink(0)
  5599. addbonus(50)
  5600. addbonusblue(50)
  5601. addbonuspink(0)
  5602. PinEvent_Drop_Targets_B13toB16_Hit
  5603. end sub
  5604.  
  5605. Sub B15_hit()
  5606. checksetB4timer.enabled=true
  5607. playmusic 2, "sound41", false
  5608.  
  5609. addscore(500)
  5610. addscoreblue(500)
  5611. addscorepink(0)
  5612. addbonus(50)
  5613. addbonusblue(50)
  5614. addbonuspink(0)
  5615. PinEvent_Drop_Targets_B13toB16_Hit
  5616. end sub
  5617.  
  5618. Sub B16_hit()
  5619. checksetB4timer.enabled=true
  5620. playmusic 2, "sound41", false
  5621.  
  5622. addscore(500)
  5623. addscoreblue(500)
  5624. addscorepink(0)
  5625. addbonus(50)
  5626. addbonusblue(50)
  5627. addbonuspink(0)
  5628. PinEvent_Drop_Targets_B13toB16_Hit
  5629. end sub
  5630.  
  5631. sub checksetb4timer_expired()
  5632. checksetB4timer.enabled=false
  5633. checksetB4()
  5634. end sub
  5635.  
  5636. sub checksetB4()
  5637. If (B13.dropped = true) and (B14.dropped = true) and (B15.dropped = true) and (B16.dropped = true) then
  5638. Advancelock()
  5639.  
  5640. addscore(5000)
  5641. addscoreblue(5000)
  5642. addscorepink(0)
  5643. addbonus(500)
  5644. addbonusblue(500)
  5645. addbonuspink(0)
  5646. bluebank()
  5647. if balllockleft = true then
  5648. resetblueinlines.enabled=true
  5649. resetpinkinlines.enabled=true
  5650. end if
  5651. PinEvent_Drop_Targets_B13toB16_Reset
  5652. end if
  5653. end sub
  5654.  
  5655. sub resetblueinlines_expired()
  5656. Resetblueinlines.enabled=false
  5657. B13.solenoidpulse(100)
  5658. B14.solenoidpulse(100)
  5659. B15.solenoidpulse(100)
  5660. B16.solenoidpulse(100)
  5661. end sub
  5662.  
  5663. sub resetpinkinlines_expired()
  5664. Resetpinkinlines.enabled=false
  5665. P13.solenoidpulse(100)
  5666. P14.solenoidpulse(100)
  5667. P15.solenoidpulse(100)
  5668. P16.solenoidpulse(100)
  5669. end sub
  5670.  
  5671. dim balllockleft
  5672. dim balllockright
  5673.  
  5674. Sub P1_hit()
  5675. P1L.state=bulbon
  5676. checksetP1timer.enabled=true
  5677. playmusic 2, "sound38", false
  5678.  
  5679. addscore(500)
  5680. addscoreblue(0)
  5681. addscorepink(500)
  5682. addbonus(50)
  5683. addbonusblue(0)
  5684. addbonuspink(50)
  5685. PinEvent_Drop_Targets_P1toP4_Hit
  5686. end sub
  5687.  
  5688. Sub P2_hit()
  5689. P2L.state=bulbon
  5690. checksetP1timer.enabled=true
  5691. playmusic 2, "sound38", false
  5692.  
  5693. addscore(500)
  5694. addscoreblue(0)
  5695. addscorepink(500)
  5696. addbonus(50)
  5697. addbonusblue(0)
  5698. addbonuspink(50)
  5699. PinEvent_Drop_Targets_P1toP4_Hit
  5700. end sub
  5701.  
  5702. Sub P3_hit()
  5703. P3L.state=bulbon
  5704. checksetP1timer.enabled=true
  5705. playmusic 2, "sound38", false
  5706.  
  5707. addscore(500)
  5708. addscoreblue(0)
  5709. addscorepink(500)
  5710. addbonus(50)
  5711. addbonusblue(0)
  5712. addbonuspink(50)
  5713. PinEvent_Drop_Targets_P1toP4_Hit
  5714. end sub
  5715.  
  5716. Sub P4_hit()
  5717. P4L.state=bulbon
  5718. checksetP1timer.enabled=true
  5719. playmusic 2, "sound38", false
  5720.  
  5721. addscore(500)
  5722. addscoreblue(0)
  5723. addscorepink(500)
  5724. addbonus(50)
  5725. addbonusblue(0)
  5726. addbonuspink(50)
  5727. PinEvent_Drop_Targets_P1toP4_Hit
  5728. end sub
  5729.  
  5730. sub checksetP1timer_expired()
  5731. checksetP1timer.enabled=false
  5732. checksetP1()
  5733. end sub
  5734.  
  5735. sub checksetP1()
  5736. If (P1.dropped = true) and (P2.dropped = true) and (P3.dropped = true) and (P4.dropped = true) then
  5737. Advancelock()
  5738. P1.solenoidpulse(100)
  5739. P2.solenoidpulse(100)
  5740. P3.solenoidpulse(100)
  5741. P4.solenoidpulse(100)
  5742. P1L.state=bulboff
  5743. P2L.state=bulboff
  5744. P3L.state=bulboff
  5745. P4L.state=bulboff
  5746. B1.solenoidpulse(100)
  5747. B2.solenoidpulse(100)
  5748. B3.solenoidpulse(100)
  5749. B4.solenoidpulse(100)
  5750. B1L.state=bulboff
  5751. B2L.state=bulboff
  5752. B3L.state=bulboff
  5753. B4L.state=bulboff
  5754.  
  5755. addscore(5000)
  5756. addscoreblue(0)
  5757. addscorepink(5000)
  5758. addbonus(500)
  5759. addbonusblue(0)
  5760. addbonuspink(500)
  5761. pinkbank()
  5762. PinEvent_Drop_Targets_P1toP4_Reset
  5763. end if
  5764. end sub
  5765.  
  5766. Sub P5_hit()
  5767. P5L.state=bulbon
  5768. checksetP2timer.enabled=true
  5769. playmusic 2, "sound38", false
  5770.  
  5771. addscore(500)
  5772. addscoreblue(0)
  5773. addscorepink(500)
  5774. addbonus(50)
  5775. addbonusblue(0)
  5776. addbonuspink(50)
  5777. PinEvent_Drop_Targets_P5toP8_Hit
  5778. end sub
  5779.  
  5780. Sub P6_hit()
  5781. P6L.state=bulbon
  5782. checksetP2timer.enabled=true
  5783. playmusic 2, "sound38", false
  5784.  
  5785. addscore(500)
  5786. addscoreblue(0)
  5787. addscorepink(500)
  5788. addbonus(50)
  5789. addbonusblue(0)
  5790. addbonuspink(50)
  5791. PinEvent_Drop_Targets_P5toP8_Hit
  5792. end sub
  5793.  
  5794. Sub P7_hit()
  5795. P7L.state=bulbon
  5796. checksetP2timer.enabled=true
  5797. playmusic 2, "sound38", false
  5798.  
  5799. addscore(500)
  5800. addscoreblue(0)
  5801. addscorepink(500)
  5802. addbonus(50)
  5803. addbonusblue(0)
  5804. addbonuspink(50)
  5805. PinEvent_Drop_Targets_P5toP8_Hit
  5806. end sub
  5807.  
  5808. Sub P8_hit()
  5809. P8L.state=bulbon
  5810. checksetP2timer.enabled=true
  5811. playmusic 2, "sound38", false
  5812.  
  5813. addscore(500)
  5814. addscoreblue(0)
  5815. addscorepink(500)
  5816. addbonus(50)
  5817. addbonusblue(0)
  5818. addbonuspink(50)
  5819. PinEvent_Drop_Targets_P5toP8_Hit
  5820. end sub
  5821.  
  5822. sub checksetP2timer_expired()
  5823. checksetP2timer.enabled=false
  5824. checksetP2()
  5825. end sub
  5826.  
  5827. sub checksetP2()
  5828. If (P5.dropped = true) and (P6.dropped = true) and (P7.dropped = true) and (P8.dropped = true) then
  5829. Advancelock()
  5830. P5.solenoidpulse(100)
  5831. P6.solenoidpulse(100)
  5832. P7.solenoidpulse(100)
  5833. P8.solenoidpulse(100)
  5834. P5L.state=bulboff
  5835. P6L.state=bulboff
  5836. P7L.state=bulboff
  5837. P8L.state=bulboff
  5838. B5.solenoidpulse(100)
  5839. B6.solenoidpulse(100)
  5840. B7.solenoidpulse(100)
  5841. B8.solenoidpulse(100)
  5842. B5L.state=bulboff
  5843. B6L.state=bulboff
  5844. B7L.state=bulboff
  5845. B8L.state=bulboff
  5846.  
  5847. addscore(5000)
  5848. addscoreblue(0)
  5849. addscorepink(5000)
  5850. addbonus(500)
  5851. addbonusblue(0)
  5852. addbonuspink(500)
  5853. pinkbank()
  5854. PinEvent_Drop_Targets_P5toP8_Reset
  5855. end if
  5856. end sub
  5857.  
  5858. Sub P9_hit()
  5859. P9L.state=bulbon
  5860. checksetP3timer.enabled=true
  5861. playmusic 2, "sound38", false
  5862.  
  5863. addscore(500)
  5864. addscoreblue(0)
  5865. addscorepink(500)
  5866. addbonus(50)
  5867. addbonusblue(0)
  5868. addbonuspink(50)
  5869. PinEvent_Drop_Targets_P9toP12_Hit
  5870. end sub
  5871.  
  5872. Sub P10_hit()
  5873. P10L.state=bulbon
  5874. checksetP3timer.enabled=true
  5875. playmusic 2, "sound38", false
  5876.  
  5877. addscore(500)
  5878. addscoreblue(0)
  5879. addscorepink(500)
  5880. addbonus(50)
  5881. addbonusblue(0)
  5882. addbonuspink(50)
  5883. PinEvent_Drop_Targets_P9toP12_Hit
  5884. end sub
  5885.  
  5886. Sub P11_hit()
  5887. P11L.state=bulbon
  5888. checksetP3timer.enabled=true
  5889. playmusic 2, "sound38", false
  5890.  
  5891. addscore(500)
  5892. addscoreblue(0)
  5893. addscorepink(500)
  5894. addbonus(50)
  5895. addbonusblue(0)
  5896. addbonuspink(50)
  5897. PinEvent_Drop_Targets_P9toP12_Hit
  5898. end sub
  5899.  
  5900. Sub P12_hit()
  5901. P12L.state=bulbon
  5902. checksetP3timer.enabled=true
  5903. playmusic 2, "sound38", false
  5904.  
  5905. addscore(500)
  5906. addscoreblue(0)
  5907. addscorepink(500)
  5908. addbonus(50)
  5909. addbonusblue(0)
  5910. addbonuspink(50)
  5911. PinEvent_Drop_Targets_P9toP12_Hit
  5912. end sub
  5913.  
  5914. sub checksetP3timer_expired()
  5915. checksetP3timer.enabled=false
  5916. checksetP3()
  5917. end sub
  5918.  
  5919. sub checksetP3()
  5920. If (P9.dropped = true) and (P10.dropped = true) and (P11.dropped = true) and (P12.dropped = true) then
  5921. Advancelock()
  5922. P9.solenoidpulse(100)
  5923. P10.solenoidpulse(100)
  5924. P11.solenoidpulse(100)
  5925. P12.solenoidpulse(100)
  5926. P9L.state=bulboff
  5927. P10L.state=bulboff
  5928. P11L.state=bulboff
  5929. P12L.state=bulboff
  5930. B9.solenoidpulse(100)
  5931. B10.solenoidpulse(100)
  5932. B11.solenoidpulse(100)
  5933. B12.solenoidpulse(100)
  5934. B9L.state=bulboff
  5935. B10L.state=bulboff
  5936. B11L.state=bulboff
  5937. B12L.state=bulboff
  5938.  
  5939. addscore(5000)
  5940. addscoreblue(0)
  5941. addscorepink(5000)
  5942. addbonus(500)
  5943. addbonusblue(0)
  5944. addbonuspink(500)
  5945. pinkbank()
  5946. PinEvent_Drop_Targets_P9toP12_Reset
  5947. end if
  5948. end sub
  5949.  
  5950. Sub P13_hit()
  5951. checksetP4timer.enabled=true
  5952. playmusic 2, "sound38", false
  5953.  
  5954. addscore(500)
  5955. addscoreblue(0)
  5956. addscorepink(500)
  5957. addbonus(50)
  5958. addbonusblue(0)
  5959. addbonuspink(50)
  5960. PinEvent_Drop_Targets_P13toP16_Hit
  5961. end sub
  5962.  
  5963. Sub P14_hit()
  5964. checksetP4timer.enabled=true
  5965. playmusic 2, "sound38", false
  5966.  
  5967. addscore(500)
  5968. addscoreblue(0)
  5969. addscorepink(500)
  5970. addbonus(50)
  5971. addbonusblue(0)
  5972. addbonuspink(50)
  5973. PinEvent_Drop_Targets_P13toP16_Hit
  5974. end sub
  5975.  
  5976. Sub P15_hit()
  5977. checksetP4timer.enabled=true
  5978. playmusic 2, "sound38", false
  5979.  
  5980. addscore(500)
  5981. addscoreblue(0)
  5982. addscorepink(500)
  5983. addbonus(50)
  5984. addbonusblue(0)
  5985. addbonuspink(50)
  5986. PinEvent_Drop_Targets_P13toP16_Hit
  5987. end sub
  5988.  
  5989. Sub P16_hit()
  5990. checksetP4timer.enabled=true
  5991. playmusic 2, "sound38", false
  5992.  
  5993. addscore(500)
  5994. addscoreblue(0)
  5995. addscorepink(500)
  5996. addbonus(50)
  5997. addbonusblue(0)
  5998. addbonuspink(50)
  5999. PinEvent_Drop_Targets_P13toP16_Hit
  6000. end sub
  6001.  
  6002. sub checksetP4timer_expired()
  6003. checksetP4timer.enabled=false
  6004. checksetP4()
  6005. end sub
  6006.  
  6007. sub checksetP4()
  6008. If (P13.dropped = true) and (P14.dropped = true) and (P15.dropped = true) and (P16.dropped = true) then
  6009. Advancelock()
  6010.  
  6011. addscore(5000)
  6012. addscoreblue(0)
  6013. addscorepink(5000)
  6014. addbonus(500)
  6015. addbonusblue(0)
  6016. addbonuspink(500)
  6017. pinkbank()
  6018. if balllockright = true then
  6019. resetpinkinlines.enabled=true
  6020. resetblueinlines.enabled=true
  6021. end if
  6022. end if
  6023. PinEvent_Drop_Targets_P13toP16_Reset
  6024. end sub
  6025.  
  6026. Sub bumper1_hit()
  6027. playmusic 6, "sound25A", false
  6028. ws2.flashforms 100, 100, bulboff
  6029. scorebumper()
  6030.  
  6031. addscore(500)
  6032. addscoreblue(0)
  6033. addscorepink(500)
  6034. addbonus(50)
  6035. addbonusblue(0)
  6036. addbonuspink(50)
  6037. PinEvent_Bumper1_Hit
  6038. end sub
  6039.  
  6040. Sub bumper2_hit()
  6041. playmusic 6, "sound25B", false
  6042. bs5.flashforms 100, 100, bulboff
  6043. scorebumper()
  6044.  
  6045. addscore(500)
  6046. addscoreblue(500)
  6047. addscorepink(0)
  6048. addbonus(50)
  6049. addbonusblue(50)
  6050. addbonuspink(0)
  6051. PinEvent_Bumper2_Hit
  6052. end sub
  6053.  
  6054. Sub bumper3_hit()
  6055. playmusic 6, "sound25C", false
  6056. ps5.flashforms 100, 100, bulboff
  6057. scorebumper()
  6058.  
  6059. addscore(500)
  6060. addscoreblue(250)
  6061. addscorepink(250)
  6062. addbonus(60)
  6063. addbonusblue(30)
  6064. addbonuspink(30)
  6065. PinEvent_Bumper3_Hit
  6066. end sub
  6067.  
  6068. sub bluebank()
  6069. If (lock < 4) or (lock > 4) then
  6070. blueseq.updateinterval = 10
  6071. blueSeq.Play SeqUpOn, 30
  6072. playmusic 4, "sound45", false
  6073. If Displayint = false then
  6074. Displayinterrupt()
  6075. maintext.queuetext "5000 blue points", seScrollRightOver, 2000
  6076. bluetext.queuetext " ", seWipeRadarleft, 3000
  6077. pinktext.queuetext " ", seWipeRadarRight, 3000
  6078. maintext2.queuetext "5000 blue points", seScrollRightOver, 2000
  6079. bluetext2.queuetext " ", seWipeRadarleft, 3000
  6080. pinktext2.queuetext " ", seWipeRadarRight, 3000
  6081. end if
  6082. end if
  6083. end sub
  6084.  
  6085. sub pinkbank()
  6086. If (lock < 4) or (lock > 4) then
  6087. pinkseq.updateinterval = 10
  6088. pinkSeq.Play SeqUpOn, 30
  6089. playmusic 4, "sound20", false
  6090. If Displayint = false then
  6091. Displayinterrupt()
  6092. maintext.queuetext "5000 pink points", seScrollRightOver, 2000
  6093. bluetext.queuetext " ", seWipeRadarleft, 3000
  6094. pinktext.queuetext " ", seWipeRadarRight, 3000
  6095. maintext2.queuetext "5000 pink points", seScrollRightOver, 2000
  6096. bluetext2.queuetext " ", seWipeRadarleft, 3000
  6097. pinktext2.queuetext " ", seWipeRadarRight, 3000
  6098. end if
  6099. end if
  6100. end sub
  6101.  
  6102. dim bumpers
  6103. dim bumperdisplay
  6104.  
  6105. sub scorebumper()
  6106. bumpers = bumpers - 1
  6107. bumperdisplay = true
  6108. bumperdisplaytimer.enabled = true
  6109. If displayint = false then
  6110. If extraball = false then
  6111. maintext.text = (bumpers) & " to adv exball"
  6112. maintext2.text = (bumpers) & " to adv exball"
  6113. end if
  6114. if extraball = true then
  6115. maintext.text = (bumpers) & " for 100K"
  6116. maintext2.text = (bumpers) & " for 100K"
  6117. end if
  6118. end if
  6119. If bumpers < 10 then
  6120. bumper1.set bulbblink, "100", 150
  6121. bumper2.set bulbblink, "010", 150
  6122. bumper3.set bulbblink, "001", 150
  6123. end if
  6124. If bumpers = 0 then
  6125. If extraball = true then
  6126. addscore(100000)
  6127. addscoreblue(50000)
  6128. addscorepink(50000)
  6129.  
  6130. Displayinterrupt()
  6131. maintext.queuetext " 100000 Points ", seWipeRadarRight, 4000
  6132. bluetext.queuetext " 50000", seblinkfast, 4000
  6133. pinktext.queuetext "50000 ", seblinkfast, 4000
  6134. maintext2.queuetext " 100000 Points ", seWipeRadarRight, 4000
  6135. bluetext2.queuetext " 50000", seblinkfast, 4000
  6136. pinktext2.queuetext "50000 ", seblinkfast, 4000
  6137.  
  6138. If screenint = false then
  6139. playblue100K()
  6140. screeninterrupt()
  6141. end if
  6142.  
  6143. playmusic 8, "sound57", false
  6144.  
  6145. blueseq.updateinterval = 5
  6146. blueseq.play SeqLeftOn, 50, 2
  6147. pinkseq.updateinterval = 5
  6148. pinkseq.play SeqLeftOn, 50, 2
  6149. end if
  6150. If extraball = false then
  6151. advanceextraball()
  6152. end if
  6153. resetbumpers()
  6154. end if
  6155. end sub
  6156.  
  6157. sub bumperdisplaytimer_expired()
  6158. bumperdisplaytimer.enabled = false
  6159. bumperdisplay = false
  6160. addscore(0)
  6161. end sub
  6162.  
  6163. sub resetbumpers()
  6164. bumpers = 50
  6165. bumper1.state = bulboff
  6166. bumper2.state = bulboff
  6167. bumper3.state = bulboff
  6168. end sub
  6169.  
  6170. dim osound
  6171.  
  6172. sub playoutlanesound()
  6173. stopmusic 2
  6174. stopmusic 3
  6175. stopmusic 4
  6176. stopmusic 5
  6177. stopmusic 6
  6178. stopmusic 7
  6179. osound = osound + 1
  6180. If osound = 1 then
  6181. playmusic 8, "sound50", false
  6182. end if
  6183. If osound = 2 then
  6184. playmusic 8, "sound51", false
  6185. end if
  6186. If osound = 3 then
  6187. playmusic 8, "sound16", false
  6188. end if
  6189. If osound = 4 then
  6190. playmusic 8, "sound39", false
  6191. end if
  6192. If osound = 5 then
  6193. playmusic 8, "sound54", false
  6194. osound = osound - osound
  6195. end if
  6196. end sub
  6197.  
  6198. dim rsound
  6199.  
  6200. sub playballreleasesound()
  6201. rsound = rsound + 1
  6202. If rsound = 1 then
  6203. playmusic 2, "sound 4", false
  6204. end if
  6205. If rsound = 2 then
  6206. playmusic 2, "sound 7", false
  6207. end if
  6208. If rsound = 3 then
  6209. playmusic 2, "sound44", false
  6210. rsound = rsound - rsound
  6211. end if
  6212. end sub
  6213.  
  6214. dim extraballlit
  6215.  
  6216. Sub CenterTarget_hit()
  6217. PinEvent_CenterTarget_Hit
  6218. bs2.flashforms 400, 50, bulboff
  6219. ps2.flashforms 400, 50, bulboff
  6220.  
  6221. addscore(1000)
  6222. addscoreblue(500)
  6223. addscorepink(500)
  6224. addbonus(100)
  6225. addbonusblue(50)
  6226. addbonuspink(50)
  6227.  
  6228. Playmusic 2, "sound 13", false
  6229. If extraball = false then
  6230. extraballtimer.enabled=true
  6231. extraballlit = true
  6232. advexballlight.state = bulbblink
  6233. end if
  6234. end sub
  6235.  
  6236. sub extraballtimer_expired()
  6237. extraballlit = false
  6238. advexballlight.state = bulboff
  6239. extraballtimer.enabled=false
  6240. if (multiballon = true) or (quickmultiballon = true) then
  6241. centertarget.solenoidpulse(100)
  6242. PinEvent_CenterTarget_Reset
  6243. end if
  6244. end sub
  6245.  
  6246. dim skillshot
  6247.  
  6248. sub skillshottimer_expired()
  6249. skillshot = skillshot + 1
  6250. If skillshot = 1 then
  6251. skill1.state=bulbon
  6252. skill3.state=bulboff
  6253. end if
  6254. If skillshot = 2 then
  6255. skill2.state=bulbon
  6256. skill1.state=bulboff
  6257. end if
  6258. If skillshot = 3 then
  6259. skill3.state=bulbon
  6260. skill2.state=bulboff
  6261. skillshot = skillshot - skillshot
  6262. end if
  6263. end sub
  6264.  
  6265. sub awardskillshot()
  6266. skillshottimer.enabled=false
  6267. If skillshot = 1 then
  6268. addscoreblue(10000)
  6269. addscore(10000)
  6270. skill1.flashforms 1500, 75, bulboff
  6271. playmusic 3, "sound29", false
  6272. maintext.queuetext " 10000 blue ",seWipeRadarRight, 2000
  6273. maintext2.queuetext " 10000 blue ",seWipeRadarRight, 2000
  6274. end if
  6275. If skillshot = 2 then
  6276. advanceextraball()
  6277. If extraball = false then
  6278. skill2.flashforms 1500, 75, bulboff
  6279. end if
  6280. If extraball = true then
  6281. skill2.state=bulboff
  6282. addscorepink(10000)
  6283. addscore(10000)
  6284. skill3.flashforms 1500, 75, bulboff
  6285. playmusic 3, "sound40", false
  6286. maintext.queuetext " 10000 pink ",seWipeRadarRight, 2000
  6287. maintext2.queuetext " 10000 pink ",seWipeRadarRight, 2000
  6288. end if
  6289. end if
  6290. If skillshot = 0 then
  6291. addscorepink(10000)
  6292. addscore(10000)
  6293. skill3.flashforms 1500, 75, bulboff
  6294. playmusic 3, "sound40", false
  6295. maintext.queuetext " 10000 pink ",seWipeRadarRight, 2000
  6296. maintext2.queuetext " 10000 pink ",seWipeRadarRight, 2000
  6297. end if
  6298. end sub
  6299.  
  6300. sub advanceextraball()
  6301. If fpTilted = FALSE then
  6302. If extraball = false then
  6303. targetkicker.solenoidpulse(100)
  6304. PinEvent_Targetkicker
  6305. extraballlight.flashforms 1000, 100, extraballlight.state
  6306. bulb31.flashforms 1000, 100, bulb31.state
  6307. bulb32.flashforms 1000, 100, bulb32.state
  6308.  
  6309. addscore(1000)
  6310. addscoreblue(500)
  6311. addscorepink(500)
  6312. addbonus(100)
  6313. addbonusblue(50)
  6314. addbonuspink(50)
  6315. if (multiballon = false) and (quickmultiballon = false) and (extraballislit = false) then
  6316. mainseq2.updateinterval = 10
  6317. mainseq2. play SeqUpOn, 50
  6318. DisplayInterrupt()
  6319. maintext.queuetext " advance ", seWipeRadarRight, 2000
  6320. bluetext.queuetext " extra", seWipeRadarRight, 2000
  6321. pinktext.queuetext "ball ", seWipeRadarleft, 2000
  6322. maintext2.queuetext " advance ", seWipeRadarRight, 2000
  6323. bluetext2.queuetext " extra", seWipeRadarRight, 2000
  6324. pinktext2.queuetext "ball ", seWipeRadarleft, 2000
  6325. playmusic 7, "sound52", false
  6326. Playadvancextraball()
  6327. screeninterrupt()
  6328. end if
  6329. end if
  6330. end if
  6331. end sub
  6332.  
  6333. sub target1_hit
  6334. awardextraball()
  6335. extraballlight.state = bulbon
  6336. bulb31.state = bulbon
  6337. bulb32.state = bulbon
  6338. end sub
  6339.  
  6340. dim extraball
  6341. dim extraballislit
  6342.  
  6343. sub awardextraball()
  6344. extraballislit = false
  6345. playsound "knocker"
  6346. extraball = true
  6347. ExtraBallsAwards(CurrentPlayer) = ExtraBallsAwards(CurrentPlayer) + 1
  6348. shootagainlight.state = bulbon
  6349. if (multiballon = false) and (quickmultiballon = false) then
  6350. playextraballshow()
  6351. end if
  6352. end sub
  6353.  
  6354. sub playextraballshow()
  6355. playmusic 6, "sound 2", false
  6356. maintext.queuetext " extra ball ", seBlinkFast, 8000
  6357. bluetext.queuetext " extra", seBlinkFast, 8000
  6358. pinktext.queuetext "ball ", seBlinkFast, 8000
  6359. maintext2.queuetext " extra ball ", seBlinkFast, 8000
  6360. bluetext2.queuetext " extra", seBlinkFast, 8000
  6361. pinktext2.queuetext "ball ", seBlinkFast, 8000
  6362. mainseq.updateinterval = 5
  6363. mainseq. play SeqUpOn, 5, 12
  6364. playextraball()
  6365. screeninterrupt()
  6366. end sub
  6367.  
  6368. sub droptarget25_hit()
  6369. extraballlight.state = bulbblink
  6370. bulb31.state = bulbblink
  6371. bulb32.state = bulbblink
  6372. playmusic 6, "sound 5", false
  6373. extraballislit = true
  6374. PinEvent_Drop_Targets_25to34_Hit
  6375. end sub
  6376.  
  6377. sub droptarget26_hit()
  6378. playmusic 6, "sound 5", false
  6379. PinEvent_Drop_Targets_25to34_Hit
  6380. end sub
  6381.  
  6382. sub droptarget27_hit()
  6383. playmusic 6, "sound 5", false
  6384. PinEvent_Drop_Targets_25to34_Hit
  6385. end sub
  6386.  
  6387. sub droptarget28_hit()
  6388. playmusic 6, "sound 5", false
  6389. PinEvent_Drop_Targets_25to34_Hit
  6390. end sub
  6391.  
  6392. sub droptarget29_hit()
  6393. playmusic 6, "sound 5", false
  6394. PinEvent_Drop_Targets_25to34_Hit
  6395. end sub
  6396.  
  6397. sub droptarget30_hit()
  6398. playmusic 6, "sound 5", false
  6399. PinEvent_Drop_Targets_25to34_Hit
  6400. end sub
  6401.  
  6402. sub droptarget31_hit()
  6403. playmusic 6, "sound 5", false
  6404. PinEvent_Drop_Targets_25to34_Hit
  6405. end sub
  6406.  
  6407. sub droptarget32_hit()
  6408. playmusic 6, "sound 5", false
  6409. PinEvent_Drop_Targets_25to34_Hit
  6410. end sub
  6411.  
  6412. sub droptarget33_hit()
  6413. playmusic 6, "sound 5", false
  6414. PinEvent_Drop_Targets_25to34_Hit
  6415. end sub
  6416.  
  6417. sub droptarget34_hit()
  6418. playmusic 6, "sound 5", false
  6419. PinEvent_Drop_Targets_25to34_Hit
  6420. end sub
  6421.  
  6422. sub resetextraball()
  6423. droptarget25.solenoidpulse(100)
  6424. droptarget26.solenoidpulse(100)
  6425. droptarget27.solenoidpulse(100)
  6426. droptarget28.solenoidpulse(100)
  6427. droptarget29.solenoidpulse(100)
  6428. droptarget30.solenoidpulse(100)
  6429. droptarget31.solenoidpulse(100)
  6430. droptarget32.solenoidpulse(100)
  6431. droptarget33.solenoidpulse(100)
  6432. droptarget34.solenoidpulse(100)
  6433. extraballlight.state = bulboff
  6434. bulb31.state = bulboff
  6435. bulb32.state = bulboff
  6436. extraball = false
  6437. PinEvent_Drop_Targets_25to34_Reset
  6438. end sub
  6439.  
  6440. sub leftdecksling_hit()
  6441. PinEvent_Upper_Left_Slingshot_Hit
  6442. playmusic 2, "sound 10", false
  6443. bs3.flashforms 100, 100, bulboff
  6444.  
  6445. addscore(100)
  6446. addscoreblue(100)
  6447. addscorepink(0)
  6448. addbonus(10)
  6449. addbonusblue(10)
  6450. addbonuspink(0)
  6451.  
  6452. end sub
  6453.  
  6454. sub rightdecksling_hit()
  6455. PinEvent_Upper_Right_Slingshot_Hit
  6456. playmusic 2, "sound 10", false
  6457. ps3.flashforms 100, 100, bulboff
  6458.  
  6459. addscore(100)
  6460. addscoreblue(0)
  6461. addscorepink(100)
  6462. addbonus(10)
  6463. addbonusblue(0)
  6464. addbonuspink(10)
  6465.  
  6466. end sub
  6467.  
  6468. Dim BonusX
  6469.  
  6470. Sub advanceBonusX()
  6471. Displayinterrupt()
  6472. maintext.queuetext "Advance Bonus X", seWipeRadarRight, 2000
  6473. pinktext.queuetext "XXXXXXX", seWipeRadarleft, 2000
  6474. maintext2.queuetext "Advance Bonus X", seWipeRadarRight, 2000
  6475. pinktext2.queuetext "XXXXXXX", seWipeRadarleft, 2000
  6476. mainseq.updateinterval = 20
  6477. mainseq.play SeqCircleOutOn, 30
  6478. playmusic 8, "sound32", false
  6479. BonusX = BonusX + 1
  6480. If BonusX = 1 Then
  6481. If screenint = false then
  6482. Play2X()
  6483. screeninterrupt()
  6484. end if
  6485. twoxlight.state = bulbon
  6486. bluetext.queuetext "2222222", seWipeRadarRight, 2000
  6487. bluetext2.queuetext "2222222", seWipeRadarRight, 2000
  6488. end if
  6489. If BonusX = 2 Then
  6490. If screenint = false then
  6491. Play3X()
  6492. screeninterrupt()
  6493. end if
  6494. threexlight.state = bulbon
  6495. bluetext.queuetext "3333333", seWipeRadarRight, 2000
  6496. bluetext2.queuetext "3333333", seWipeRadarRight, 2000
  6497. end if
  6498. If BonusX = 3 Then
  6499. If screenint = false then
  6500. Play4X()
  6501. screeninterrupt()
  6502. end if
  6503. fourxlight.state = bulbon
  6504. bluetext.queuetext "4444444", seWipeRadarRight, 2000
  6505. bluetext2.queuetext "4444444", seWipeRadarRight, 2000
  6506. end if
  6507. If BonusX = 4 Then
  6508. If screenint = false then
  6509. Play5X()
  6510. screeninterrupt()
  6511. end if
  6512. fivexlight.state = bulbon
  6513. bluetext.queuetext "5555555", seWipeRadarRight, 2000
  6514. bluetext2.queuetext "5555555", seWipeRadarRight, 2000
  6515. end if
  6516. end sub
  6517.  
  6518. Dim ksound
  6519.  
  6520. sub ksoundtimer_expired()
  6521. ksound = ksound + 1
  6522. if ksound = 3 then
  6523. playmusic 7, "sound37", false, 0.6
  6524. activateactivestrobe()
  6525. end if
  6526. If (multiballon = false) and (quickmultiballon = false) then
  6527. if ksound = 4 then
  6528. playmusic 7, "sound37", false, 0.6
  6529. end if
  6530. if ksound = 5 then
  6531. playmusic 7, "sound37", false, 0.6
  6532. end if
  6533. if ksound = 6 then
  6534. playmusic 7, "sound37", false, 0.6
  6535. end if
  6536. end if
  6537. if ksound = 7 then
  6538. playmusic 7, "sound25a", false
  6539. end if
  6540. if ksound = 8 then
  6541. ksoundtimer.enabled = false
  6542. ksound = ksound - ksound
  6543. end if
  6544. end sub
  6545.  
  6546. 'active strobe notes:
  6547. '0 = nothing
  6548. '1 = bs1
  6549. '2 = bs2
  6550. '3 = bs3
  6551. '4 = bs4
  6552. '5 = bs5
  6553. '6 = ps1
  6554. '7 = ps2
  6555. '8 = ps3
  6556. '9 = ps4
  6557. '10 = ps5
  6558. '11 = ws1
  6559. '12 = ws2
  6560.  
  6561. Sub Activateactivestrobe()
  6562.  
  6563. If activestrobe1 = 0 then
  6564.  
  6565. end if
  6566. If activestrobe1 = 1 then
  6567. bs1.flashforms 1000, 100, bulboff
  6568. end if
  6569. If activestrobe1 = 2 then
  6570. bs2.flashforms 1000, 100, bulboff
  6571. end if
  6572. If activestrobe1 = 3 then
  6573. bs3.flashforms 1000, 100, bulboff
  6574. end if
  6575. If activestrobe1 = 4 then
  6576. bs4.flashforms 1000, 100, bulboff
  6577. end if
  6578. If activestrobe1 = 5 then
  6579. bs5.flashforms 1000, 100, bulboff
  6580. end if
  6581. If activestrobe1 = 6 then
  6582. ps1.flashforms 1000, 100, bulboff
  6583. end if
  6584. If activestrobe1 = 7 then
  6585. ps2.flashforms 1000, 100, bulboff
  6586. end if
  6587. If activestrobe1 = 8 then
  6588. ps3.flashforms 1000, 100, bulboff
  6589. end if
  6590. If activestrobe1 = 9 then
  6591. ps4.flashforms 1000, 100, bulboff
  6592. end if
  6593. If activestrobe1 = 10 then
  6594. ps5.flashforms 1000, 100, bulboff
  6595. end if
  6596. If activestrobe1 = 11 then
  6597. ws1.flashforms 1000, 100, bulboff
  6598. end if
  6599. If activestrobe1 = 12 then
  6600. ws2.flashforms 1000, 100, bulboff
  6601. end if
  6602.  
  6603. If activestrobe2 = 0 then
  6604.  
  6605. end if
  6606. If activestrobe2 = 1 then
  6607. bs1.flashforms 1000, 100, bulboff
  6608. end if
  6609. If activestrobe2 = 2 then
  6610. bs2.flashforms 1000, 100, bulboff
  6611. end if
  6612. If activestrobe2 = 3 then
  6613. bs3.flashforms 1000, 100, bulboff
  6614. end if
  6615. If activestrobe2 = 4 then
  6616. bs4.flashforms 1000, 100, bulboff
  6617. end if
  6618. If activestrobe2 = 5 then
  6619. bs5.flashforms 1000, 100, bulboff
  6620. end if
  6621. If activestrobe2 = 6 then
  6622. ps1.flashforms 1000, 100, bulboff
  6623. end if
  6624. If activestrobe2 = 7 then
  6625. ps2.flashforms 1000, 100, bulboff
  6626. end if
  6627. If activestrobe2 = 8 then
  6628. ps3.flashforms 1000, 100, bulboff
  6629. end if
  6630. If activestrobe2 = 9 then
  6631. ps4.flashforms 1000, 100, bulboff
  6632. end if
  6633. If activestrobe2 = 10 then
  6634. ps5.flashforms 1000, 100, bulboff
  6635. end if
  6636. If activestrobe2 = 11 then
  6637. ws1.flashforms 1000, 100, bulboff
  6638. end if
  6639. If activestrobe2 = 12 then
  6640. ws2.flashforms 1000, 100, bulboff
  6641. end if
  6642.  
  6643. end sub
  6644.  
  6645. sub allstrobesflash()
  6646. bs1.flashforms 1000, 100, bulboff
  6647. bs2.flashforms 1000, 100, bulboff
  6648. bs3.flashforms 1000, 100, bulboff
  6649. bs4.flashforms 1000, 100, bulboff
  6650. bs5.flashforms 1000, 100, bulboff
  6651. ps1.flashforms 1000, 100, bulboff
  6652. ps2.flashforms 1000, 100, bulboff
  6653. ps3.flashforms 1000, 100, bulboff
  6654. ps4.flashforms 1000, 100, bulboff
  6655. ps5.flashforms 1000, 100, bulboff
  6656. ws1.flashforms 1000, 100, bulboff
  6657. ws2.flashforms 1000, 100, bulboff
  6658. end sub
  6659.  
  6660. sub allbluestrobesflash()
  6661. bs1.flashforms 1000, 100, bulboff
  6662. bs2.flashforms 1000, 100, bulboff
  6663. bs3.flashforms 1000, 100, bulboff
  6664. bs4.flashforms 1000, 100, bulboff
  6665. bs5.flashforms 1000, 100, bulboff
  6666. end sub
  6667.  
  6668. sub allpinkstrobesflash
  6669. ps1.flashforms 1000, 100, bulboff
  6670. ps2.flashforms 1000, 100, bulboff
  6671. ps3.flashforms 1000, 100, bulboff
  6672. ps4.flashforms 1000, 100, bulboff
  6673. ps5.flashforms 1000, 100, bulboff
  6674. end sub
  6675.  
  6676. sub GIflash()
  6677.  
  6678. bulb1.flashforms 1000, 100, bulbon
  6679. bulb2.flashforms 1000, 100, bulbon
  6680. bulb3.flashforms 1000, 100, bulbon
  6681. bulb4.flashforms 1000, 100, bulbon
  6682. bulb5.flashforms 1000, 100, bulbon
  6683. bulb6.flashforms 1000, 100, bulbon
  6684. bulb7.flashforms 1000, 100, bulbon
  6685. bulb8.flashforms 1000, 100, bulbon
  6686. bulb9.flashforms 1000, 100, bulbon
  6687. bulb10.flashforms 1000, 100, bulbon
  6688. bulb11.flashforms 1000, 100, bulbon
  6689. bulb12.flashforms 1000, 100, bulbon
  6690. bulb13.flashforms 1000, 100, bulbon
  6691. bulb14.flashforms 1000, 100, bulbon
  6692. bulb15.flashforms 1000, 100, bulbon
  6693. bulb16.flashforms 1000, 100, bulbon
  6694. bulb17.flashforms 1000, 100, bulbon
  6695. bulb18.flashforms 1000, 100, bulbon
  6696. bulb19.flashforms 1000, 100, bulbon
  6697. bulb20.flashforms 1000, 100, bulbon
  6698. bulb21.flashforms 1000, 100, bulbon
  6699. bulb22.flashforms 1000, 100, bulbon
  6700. bulb23.flashforms 1000, 100, bulbon
  6701. bulb24.flashforms 1000, 100, bulbon
  6702. bulb25.flashforms 1000, 100, bulbon
  6703.  
  6704. bulb33.flashforms 1000, 100, bulbon
  6705. bulb34.flashforms 1000, 100, bulbon
  6706. bulb35.flashforms 1000, 100, bulbon
  6707. bulb36.flashforms 1000, 100, bulbon
  6708. bulb37.flashforms 1000, 100, bulbon
  6709. bulb38.flashforms 1000, 100, bulbon
  6710. bulb39.flashforms 1000, 100, bulbon
  6711. bulb40.flashforms 1000, 100, bulbon
  6712. bulb41.flashforms 1000, 100, bulbon
  6713. bulb42.flashforms 1000, 100, bulbon
  6714. bulb43.flashforms 1000, 100, bulbon
  6715. bulb44.flashforms 1000, 100, bulbon
  6716. bulb45.flashforms 1000, 100, bulbon
  6717.  
  6718. leftslingshotbulb1.flashforms 1000, 100, bulbon
  6719. leftslingshotbulb2.flashforms 1000, 100, bulbon
  6720. rightslingshotbulb1.flashforms 1000, 100, bulbon
  6721. rightslingshotbulb2.flashforms 1000, 100, bulbon
  6722. rightlanebulb1.flashforms 1000, 100, bulbon
  6723.  
  6724. end sub
  6725.  
  6726. Dim Loops
  6727. Dim Looptrigger1deactivated
  6728. Dim Looptrigger2deactivated
  6729.  
  6730. Sub looptrigger1_hit()
  6731. If Looptrigger1deactivated = false then
  6732. Loops = Loops + 1
  6733. Looptrigger1deactivated = true
  6734. If Loops = 2 then
  6735. GetLoop()
  6736. mainseq.updateinterval = 15
  6737. mainseq.play SeqleftOn, 30
  6738. end if
  6739. end if
  6740. end sub
  6741.  
  6742. Sub looptrigger2_hit()
  6743. If Looptrigger2deactivated = false then
  6744. Loops = Loops + 1
  6745. Looptrigger2deactivated = true
  6746. If Loops = 2 then
  6747. GetLoop()
  6748. mainseq.updateinterval = 15
  6749. mainseq.play SeqRightOn, 30
  6750. end if
  6751. end if
  6752. end sub
  6753.  
  6754. Sub GetLoop()
  6755. Resetlooptriggers()
  6756. AdvanceQuick()
  6757.  
  6758. addscore(1000)
  6759. addscoreblue(500)
  6760. addscorepink(500)
  6761. addbonus(100)
  6762. addbonusblue(50)
  6763. addbonuspink(50)
  6764.  
  6765. If quickmultiballon = true then
  6766.  
  6767. addscore(20000)
  6768. addscoreblue(10000)
  6769. addscorepink(10000)
  6770. addbonus(1000)
  6771. addbonusblue(500)
  6772. addbonuspink(500)
  6773.  
  6774. displayinterrupt()
  6775. maintext.queuetext " 20000 points ", seWipeRadarRight, 3000
  6776. bluetext.queuetext " 10000 ", seWipeRadarRight, 3000
  6777. pinktext.queuetext " 10000 ", seWipeRadarRight, 3000
  6778. maintext2.queuetext " 20000 points ", seWipeRadarRight, 3000
  6779. bluetext2.queuetext " 10000 ", seWipeRadarRight, 3000
  6780. pinktext2.queuetext " 10000 ", seWipeRadarRight, 3000
  6781. end if
  6782.  
  6783. If loops <> 5 then
  6784. Playmusic 2, "sound33", false
  6785. end if
  6786. If loops = 5 then
  6787. Playmusic 2, "sound33", false
  6788. end if
  6789. End Sub
  6790.  
  6791. Sub Resetlooptriggers()
  6792. Looptrigger1deactivated = false
  6793. Looptrigger2deactivated = false
  6794. Loops = Loops - Loops
  6795. end sub
  6796.  
  6797. Dim Quick
  6798.  
  6799. Sub AdvanceQuick()
  6800. Quick = Quick + 1
  6801. If Quick = 1 then
  6802. Quick1.state = Bulbon
  6803. End if
  6804. If Quick = 2 then
  6805. Quick2.state = Bulbon
  6806. End if
  6807. If Quick = 3 then
  6808. Quick3.state = Bulbon
  6809. End if
  6810. If Quick = 4 then
  6811. Quick4.state = Bulbon
  6812. End if
  6813. If Quick = 5 then
  6814. Quick5.state = Bulbon
  6815. Lightquickmultiball()
  6816. End if
  6817. End Sub
  6818.  
  6819. Dim Quickmballlit
  6820.  
  6821. Sub Lightquickmultiball()
  6822. If multiballon = false then
  6823. quickmballlit = true
  6824. quicksignbulb1.state = bulbblink
  6825. quicksignbulb2.state = bulbblink
  6826. quicksignbulb3.state = bulbblink
  6827. quicksignbulb4.state = bulbblink
  6828. looplight1.state = bulbblink
  6829. looplight2.state = bulbblink
  6830. leftlooptarget.solenoidpulse()
  6831. rightlooptarget.solenoidpulse()
  6832. playquickmultiball()
  6833. screeninterrupt()
  6834. end if
  6835. If multiballon = true then
  6836. holdquickmball()
  6837. end if
  6838. End Sub
  6839.  
  6840. Sub loopresettrigger1_hit()
  6841. Resetlooptriggers()
  6842. end sub
  6843.  
  6844. Sub loopresettrigger2_hit()
  6845. Resetlooptriggers()
  6846. end sub
  6847.  
  6848. sub resetquickmball()
  6849. quick = quick - quick
  6850. Quick1.state = Bulboff
  6851. Quick2.state = Bulboff
  6852. Quick3.state = Bulboff
  6853. Quick4.state = Bulboff
  6854. Quick5.state = Bulboff
  6855. quicksignbulb1.state = bulboff
  6856. quicksignbulb2.state = bulboff
  6857. quicksignbulb3.state = bulboff
  6858. quicksignbulb4.state = bulboff
  6859. looplight1.state = bulboff
  6860. looplight2.state = bulboff
  6861. quickscorelight1.state = bulboff
  6862. quickscorelight2.state = bulboff
  6863. end sub
  6864.  
  6865. sub displayinterrupt()
  6866. displayint = true
  6867. displayinttimer.enabled=true
  6868. end sub
  6869.  
  6870. sub displayinttimer_expired()
  6871. displayint = false
  6872. displayinttimer.enabled=false
  6873. If fpGameInPlay = true then
  6874. addscore(0)
  6875. addscoreblue(0)
  6876. addscorepink(0)
  6877. end if
  6878. end sub
  6879.  
  6880. sub mathcheck_expired()
  6881.  
  6882. addscore(0)
  6883. addscoreblue(0)
  6884. addscorepink(0)
  6885. addbonus(0)
  6886. addbonusblue(0)
  6887. addbonuspink(0)
  6888.  
  6889. If (bluescore + pinkscore) >< nvscore(currentplayer) then
  6890. playmusic 1, "sound19", true
  6891. end if
  6892. If (bluebonus + pinkbonus) >< mainbonus then
  6893. stopmusic 1
  6894. playmusic 2, "sound15", true
  6895. end if
  6896. end sub
  6897.  
  6898. Sub Rubber1_hit()
  6899. playmusic 7, "sound61", false
  6900. addscore(10)
  6901. addscoreblue(10)
  6902. end sub
  6903.  
  6904. Sub Rubber31_hit()
  6905. playmusic 7, "sound61", false
  6906. addscore(10)
  6907. addscorepink(10)
  6908. end sub
  6909.  
  6910. Sub Rubber4_hit()
  6911. playmusic 7, "sound61", false
  6912. addscore(10)
  6913. addscoreblue(10)
  6914. end sub
  6915.  
  6916. Sub Rubber11_hit()
  6917. playmusic 7, "sound61", false
  6918. addscore(10)
  6919. addscorepink(10)
  6920. end sub
  6921.  
  6922. Sub Rubber3_hit()
  6923. playmusic 7, "sound61", false
  6924. addscore(10)
  6925. addscoreblue(10)
  6926. end sub
  6927.  
  6928. Sub Rubber13_hit()
  6929. playmusic 7, "sound61", false
  6930. addscore(10)
  6931. addscorepink(10)
  6932. end sub
  6933.  
  6934. sub leftdeckentrance_hit()
  6935. deckentrancetimer.enabled = true
  6936. PinEvent_leftdeckentrance_hit
  6937. end sub
  6938.  
  6939. sub rightdeckentrance_hit()
  6940. deckentrancetimer.enabled = true
  6941. PinEvent_rightdeckentrance_hit
  6942. end sub
  6943.  
  6944. sub deckentrancetimer_expired()
  6945. deckentrancetimer.enabled = false
  6946. rightdeckentrance.solenoidpulse(100)
  6947. leftdeckentrance.solenoidpulse(100)
  6948. PinEvent_leftdeckentrance
  6949. PinEvent_rightdeckentrance
  6950. end sub
  6951.  
  6952. dim screentest
  6953.  
  6954. dim screenint
  6955.  
  6956. sub screeninterrupt()
  6957. screenint = true
  6958. screeninttimer.enabled = true
  6959. shutoffmainplay()
  6960. end sub
  6961.  
  6962. sub shutoffmainplay()
  6963. mainplaytimer1.enabled = false
  6964. mainplaytimer2.enabled = false
  6965. mainplaytimer3.enabled = false
  6966. mainplay1 = mainplay1 - mainplay1
  6967. mainplay2 = mainplay2 - mainplay2
  6968. mainplay3 = mainplay3 - mainplay3
  6969. end sub
  6970.  
  6971. sub screeninttimer_expired()
  6972. screeninttimer.enabled = false
  6973. screenint = false
  6974. mainplay()
  6975. end sub
  6976.  
  6977. sub mainplay()
  6978.  
  6979. screenint = false
  6980. screeninttimer.enabled = false
  6981. 'lock is not lit
  6982.  
  6983. If (locklit = false) and (quickmballlit = false) and (extraballislit = false) then
  6984. playintroloop()
  6985. end if
  6986.  
  6987. If (locklit = false) and (quickmballlit = true) and (extraballislit = false) then
  6988. playintroloop()
  6989. mainplaytimer1.enabled = true
  6990. end if
  6991.  
  6992. If (locklit = false) and (quickmballlit = true) and (extraballislit = true) then
  6993. playintroloop()
  6994. mainplaytimer3.enabled = true
  6995. end if
  6996.  
  6997. If (locklit = false) and (quickmballlit = false) and (extraballislit = true) then
  6998. playintroloop()
  6999. mainplaytimer2.enabled = true
  7000. end if
  7001.  
  7002. 'lock is lit
  7003.  
  7004. If (locklit = true) and (multiballlit = false) and (quickmballlit = false) and (extraballislit = false) then
  7005. playlocklitLoop()
  7006. end if
  7007.  
  7008. If (locklit = true) and (multiballlit = false) and (quickmballlit = true) and (extraballislit = false) then
  7009. playlocklitLoop()
  7010. mainplaytimer1.enabled = true
  7011. end if
  7012.  
  7013. If (locklit = true) and (multiballlit = false) and (quickmballlit = true) and (extraballislit = true) then
  7014. playlocklitLoop()
  7015. mainplaytimer3.enabled = true
  7016. end if
  7017.  
  7018. If (locklit = true) and (multiballlit = false) and (quickmballlit = false) and (extraballislit = true) then
  7019. playlocklitLoop()
  7020. mainplaytimer2.enabled = true
  7021. end if
  7022.  
  7023. 'multiball is lit
  7024.  
  7025. If (multiballlit = true) and (quickmballlit = false) and (extraballislit = false) then
  7026. playmultiballlit()
  7027. end if
  7028.  
  7029. If (multiballlit = true) and (quickmballlit = true) and (extraballislit = false) then
  7030. playmultiballlit()
  7031. mainplaytimer1.enabled = true
  7032. end if
  7033.  
  7034. If (multiballlit = true) and (quickmballlit = true) and (extraballislit = true) then
  7035. playmultiballlit()
  7036. mainplaytimer3.enabled = true
  7037. end if
  7038.  
  7039. If (multiballlit = true) and (quickmballlit = false) and (extraballislit = true) then
  7040. playmultiballlit()
  7041. mainplaytimer2.enabled = true
  7042. end if
  7043.  
  7044. 'Either Multiball is on
  7045.  
  7046. If (multiballon = true) or (quickmultiballon = true) then
  7047. playmultiball()
  7048. end if
  7049.  
  7050. end sub
  7051.  
  7052. dim mainplay1
  7053. dim mainplay2
  7054. dim mainplay3
  7055.  
  7056. sub mainplaytimer1_expired()
  7057. mainplay1 = mainplay1 + 1
  7058. If mainplay1 = 1 then
  7059. playquickmultiballloop()
  7060. end if
  7061. If mainplay1 = 2 then
  7062. mainplay1 = mainplay1 - mainplay1
  7063. mainplay()
  7064. end if
  7065. end sub
  7066.  
  7067. sub mainplaytimer2_expired()
  7068. mainplay2 = mainplay2 + 1
  7069. If mainplay2 = 1 then
  7070. playextraballlit()
  7071. end if
  7072. If mainplay2 = 2 then
  7073. mainplay2 = mainplay2 - mainplay2
  7074. mainplay()
  7075. end if
  7076. end sub
  7077.  
  7078. sub mainplaytimer3_expired()
  7079. mainplay3 = mainplay3 + 1
  7080. If mainplay3 = 1 then
  7081. playquickmultiballloop()
  7082. end if
  7083. If mainplay3 = 2 then
  7084. playextraballlit()
  7085. end if
  7086. If mainplay3 = 3 then
  7087. mainplay3 = mainplay3 - mainplay3
  7088. mainplay()
  7089. end if
  7090. end sub
  7091.  
  7092. sub playintro()
  7093. screen.frame 1, 75, 16
  7094. end sub
  7095.  
  7096. sub playintroloop()
  7097. screen.frame 16, 75, 16
  7098. end sub
  7099.  
  7100. sub Play2X()
  7101. screen.frame 76, 98
  7102. end sub
  7103.  
  7104. sub Play3X()
  7105. screen.frame 99, 121
  7106. end sub
  7107.  
  7108. sub Play4X()
  7109. screen.frame 122, 144
  7110. end sub
  7111.  
  7112. sub Play5X()
  7113. screen.frame 145, 167
  7114. end sub
  7115.  
  7116. Sub playadvancextraball()
  7117. screen.frame 168, 182, 178
  7118. end sub
  7119.  
  7120. sub playblue100K()
  7121. screen.frame 183, 197, 183
  7122. end sub
  7123.  
  7124. sub playbonuscount()
  7125. screen.frame 198, 235
  7126. end sub
  7127.  
  7128. sub playextraball()
  7129. screen.frame 236, 265, 251
  7130. end sub
  7131.  
  7132. sub playextraballlit()
  7133. screen.frame 266, 275, 266
  7134. end sub
  7135.  
  7136. sub playgameover()
  7137. screen.frame 276, 290, 276
  7138. end sub
  7139.  
  7140. sub playinsertcoin()
  7141. screen.frame 291, 305, 291
  7142. end sub
  7143.  
  7144. sub playlocklitL()
  7145. screen.frame 306, 322
  7146. end sub
  7147.  
  7148. sub playlocklitO()
  7149. screen.frame 323, 336
  7150. end sub
  7151.  
  7152. sub playlocklitC()
  7153. screen.frame 337, 350
  7154. end sub
  7155.  
  7156. sub playlocklitK()
  7157. screen.frame 351, 387, 373
  7158. end sub
  7159.  
  7160. sub playlocklitLoop()
  7161. screen.frame 373, 387, 373
  7162. end sub
  7163.  
  7164. Sub playmultiball()
  7165. screen.frame 388, 402, 388
  7166. end sub
  7167.  
  7168. sub playmultiballlit()
  7169. screen.frame 403, 432, 418
  7170. end sub
  7171.  
  7172. sub playpink100K()
  7173. screen.frame 433, 447, 433
  7174. end sub
  7175.  
  7176. sub playpressstart()
  7177. screen.frame 448, 462, 448
  7178. end sub
  7179.  
  7180. sub playquickmultiball()
  7181. screen.frame 463, 507, 501
  7182. end sub
  7183.  
  7184. sub playquickmultiballloop()
  7185. screen.frame 501, 507, 501
  7186. end sub
  7187.  
  7188. sub playshootagain()
  7189. screen.frame 508, 537, 523
  7190. end sub
  7191.  
  7192. sub testscreen()
  7193. screentest = screentest + 1
  7194. If screentest = 1 then
  7195. playintro()
  7196. end if
  7197. If screentest = 2 then
  7198. playintroloop()
  7199. end if
  7200. If screentest = 3 then
  7201. Play2X()
  7202. end if
  7203. If screentest = 4 then
  7204. Play3X()
  7205. end if
  7206. If screentest = 5 then
  7207. Play4X()
  7208. end if
  7209. If screentest = 6 then
  7210. Play5X()
  7211. end if
  7212. If screentest = 7 then
  7213. playadvancextraball()
  7214. end if
  7215. If screentest = 8 then
  7216. playblue100K()
  7217. end if
  7218. If screentest = 9 then
  7219. playbonuscount()
  7220. end if
  7221. If screentest = 10 then
  7222. playextraball()
  7223. end if
  7224. If screentest = 11 then
  7225. playextraballlit()
  7226. end if
  7227. If screentest = 12 then
  7228. playgameover()
  7229. end if
  7230. If screentest = 13 then
  7231. playinsertcoin()
  7232. end if
  7233. If screentest = 14 then
  7234. playlocklitL()
  7235. end if
  7236. If screentest = 15 then
  7237. playlocklitO()
  7238. end if
  7239. If screentest = 16 then
  7240. playlocklitC()
  7241. end if
  7242. If screentest = 17 then
  7243. playlocklitK()
  7244. end if
  7245. If screentest = 18 then
  7246. playlocklitLoop()
  7247. end if
  7248. If screentest = 19 then
  7249. playmultiball()
  7250. end if
  7251. If screentest = 20 then
  7252. playmultiballlit()
  7253. end if
  7254. If screentest = 21 then
  7255. playpink100K()
  7256. end if
  7257. If screentest = 22 then
  7258. playpressstart()
  7259. end if
  7260. If screentest = 23 then
  7261. playquickmultiball()
  7262. end if
  7263. If screentest = 24 then
  7264. playquickmultiballloop()
  7265. end if
  7266. If screentest = 25 then
  7267. playshootagain()
  7268. screentest = screentest - screentest
  7269. end if
  7270. end sub
  7271.  
  7272.  
  7273. 'done yay
  7274.  
  7275.  
  7276.  
  7277.  
  7278.  
  7279.  
  7280.  
Advertisement
Add Comment
Please, Sign In to add comment