Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ' *********************************************************************
- ' ** **
- ' ** FUTURE PINBALL **
- ' ** **
- ' ** Blue Vs Pink **
- ' ** **
- ' ** (C) 2009 Brendan Bailey **
- ' ** **
- ' ** BAM Edition mod by TerryRed **
- ' ** **
- ' *********************************************************************
- ' BAM Edition 1.1 : Dec 24 - 2021
- ' Thank you so much Brendan Bailey for supporting this update!
- ' ===========================================================================
- ' Original Table by Brendan Bailey:
- ' - table
- ' - art
- ' - animation
- ' - music
- ' - sounds
- ' - script
- ' TerryRed's BAM Edition update:
- ' - new G.I. lighting (dynamic lighting - x4 hidden flashers in lower and upper plastics)
- ' - added drain flasher for accented lighting
- ' - new options for changing G.I lighting colours (dynamic lighting only)
- ' - new BAM post processing
- ' - added shadowmaps to most lights
- ' - added pre-baked shadowmaps (created by BAM) to playfield and plastics texture
- ' - adjusted playfield / plastics / apron, etc texture brightness to better match new lighting
- ' - new 3D model inserts
- ' - new pre-rendered insert textures
- ' - new bump maps for inserts
- ' - disabled glow radius for all inserts
- ' - adjusted brightness of all playfield video textures (what a pain!) to better match new lighting
- ' - added sphere maps to the sides of all plastics
- ' - added new GI on/off code
- ' - adjusted GI on/off brightness for all lights / inserts / playfield videos
- ' - added all new FLEEP sounds for all mechanical actions (flippers, bumpers, slings, drain, etc)
- ' - added BAM DF1 physics (updated settings in editor to better work with new physics)
- ' - added playfield blocker surface to prevent ball from jumping on plastics
- ' Additional Contributors:
- ' Schlabber34 - new pre-rendered insert images
- ' FLEEP - new mechanical sounds
- ' ===========================================================================
- ' REQUIREMENTS:
- ' BAM 1.5-341 or higher is required to play this table!
- ' https://www.ravarcade.pl/
- ' Run FPLoader.exe in BAM folder to play this table. DO NOT run directly from the FuturePinball.exe
- ' In-Game Options:
- ' Special key / button 1 = change G.I. colours
- ' Special key / button 2 = change G.I. brightness
- ' Table Startup Options:
- ' 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
- ' BAM Ray Cast Ball Shadows:
- ' - this table was created to look best with the new BAM Ray Cast Ball shadows
- ' - 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
- ' - this feature requires a fairly decent video card, and will use much more of your GPU
- ' - if enabling it slows down the game... then your PC may not be fast enough to handle it
- ' BAM Menu settings:
- ' Note that the BAM Lighting and Post Processig settings are set by the table script and will ALWAYS override the user's settings!
- ' This is needed to ensure the new BAM Edition Lighting is set correctly along with all other changes made to the table!
- ' ===========================================================================
- ' DOF Setup Added By Outhere But TerryRed made it easy
- '- this does NOT use or require the PinEvent vbs files
- '- this does not use or require DOFLinx
- '- You should NOT have DOFLinx running when playing a table that uses this code (so both aren't accessing DOF at the same time)
- ' https://pinballnirvana.com/forums/threads/how-to-add-dof-direct-output-framework-support-to-any-future-pinball-table.20456/
- ' Search for DOF 1xx
- '101 - Flipper Left
- '102 - Flipper Right
- '103 - Slingshot Left
- '104 - Slingshot Right
- '105 - Bumper Back Left
- '106 - Bumper Back Right
- '107 - Bumper Back Center
- '108 - Put Ball in Plunger Line (Ball Release)
- '109 -
- '110 -
- '111 - Targetkicker
- '112 - Kickback Left
- '113 - Kickback Right
- '114 - Upper Left Slingshot
- '115 - Upper RightSlingshot
- '116 - left deck exit
- '117 - right deck exit
- '118 - left deck entrance
- '119 - right deck entrance
- '120 - Left Scoop
- '121 - Right Scoop
- '122 - Drop_Targets_B1toB4_Reset
- '123 - Drop_Targets_B5toB8_Reset
- '124 - Drop_Targets_B9toB12_Reset
- '125 - Drop_Targets_B13toB16_Reset
- '126 - Drop_Targets_P1toP4_Reset
- '127 - Drop_Targets_P5toP8_Reset
- '128 - Drop_Targets_P9toP12_Reset
- '129 - Drop_Targets_P13toP16_Reset
- '130 - Drop_Targets_25to34_Reset
- Option Explicit ' Force explicit variable declaration
- '/////////////////////// iCOM BAM PLUG-IN - USE COM OBJECTS ////////////////////////////
- ' The iCOM plug-in for BAM must be installed and enabled in the BAM Plug-ins menu!
- ' This will allow programs such as DOF, Pinup Player, and more to work directly with Future Pinball.
- Dim icom : Set icom = xBAM.Get("icom") ' "icom" is name of "icom.dll" in BAM\Plugins dir
- Function CreateObject(className)
- Set CreateObject = icom.CreateObject(className)
- End Function
- '///////////////////////////////////////////////////////////////////////////////////////
- '//////////////////////// DOF: STARTUP & CONTROL SECTION /////////////////////////////
- ' This is used for the startup and control of DOF (Direct Output Framework)
- Dim useDOF: useDOF = false
- Dim DOFStatus:DofStatus=false
- Dim DOFObject
- Dim cGamename
- Sub DOFStart(DOFProfile) 'Start DOF Session
- if DofStatus=true then Exit Sub
- if useDOF=true Then
- Set DOFObject = CreateObject("DirectOutput.ComObject")
- If DOFObject is Nothing Then
- AddDebugText "DOF is not installed or detected"
- useDOF=false
- DofStatus=false
- else
- DOFObject.Init "B2SServer","",DOFProfile
- DOFStatus=true
- AddDebugText "Start DOF"
- end if
- End if
- end sub
- Sub DOFClose() 'PinEvent - Close out DOF session. Add this to FuturePinball_EndPlay()
- if DOFStatus=false then Exit Sub
- DOFStatus=false
- DOFObject.Finish()
- Set DOFObject=nothing
- end sub
- Sub dof(dID,dValue)
- if DOFStatus=false then Exit Sub
- if dValue=0 Then DOFObject.UpdateNamedTableElement "E"&dID,0
- if dValue=1 Then DOFObject.UpdateNamedTableElement "E"&dID,1
- if dValue=2 Then
- DOFObject.UpdateNamedTableElement "E"&dID,1
- DOFObject.UpdateNamedTableElement "E"&dID,0
- End If
- end Sub
- ' Usage: dof(dID,dValue)
- ' dID = DOF Exxx trigger
- ' dValue = trigger action. 0 = off, 1 = on, 2 = pulse
- ' Example:
- ' dof 103,1
- ' The above example will trigger DOF event E103 as ON
- '///////////////////////////////////////////////////////////////////////////////////////
- '////////////// START DOF ////////////////
- useDOF = true ' enable DOF
- cGamename = "fp_bvp" ' name of this table's DOF Config as listed on the "DOF Config Tool" web site
- DOFStart(cGamename) ' check for DOF - If found, then start DOF Session
- '/////////////////////////////////////////
- xBAM.CreateAllExt() ' create BAM Extension commands. This should be at the top of the script (below Option Explicit)
- Dim GI_Colour_Startup
- Dim GI_Brightness_Startup
- Dim use_RayCast_Shadows
- ' ############# USER TABLE OPTIONS ###############
- ' Choose the colour of the G.I. on table startup
- ' Choices are: 1 = original, 2 = Blue / Pink, 3 = Blue / Red
- GI_Colour_Startup = 1
- ' Choose the brightness of the G.I. on table startup
- ' Choices are: 1 = low, 2 = medium, 3 = high
- GI_Brightness_Startup = 2
- ' Bam Ray Cast Ball Shadows (needs good GPU)
- use_RayCast_Shadows = false
- ' ################################################
- '###########################################################################################
- '#################################### PHYSICS SETTINGS #####################################
- '=============================== PHYSICS XML ===========================
- '<?xml version="1.0" encoding="utf-8"?>
- '<document>
- ' <!Custom Physics -->
- ' <physics fps="296" threaded="1"></physics>
- ' <ball newtonDamping="0" mass="70" gravity="6000" damping="0.65"></ball>
- ' <flipper releaseOmega="18" rotationSpeedChart="{0.0,100.0}[0.0,100.0]" newtonDamping="1" mass="20150" omega="43" moeMethod="0"
- ' leftXoff="0" leftYoff="500" leftZoff="0"
- ' rightXoff="0" rightYoff="500" rightZoff="0"></flipper>
- ' <bumper impulse="90.0" impulseRandomness="0" vectorRandomness="6"></bumper>
- ' <autoplunger mass="20000.0" force="60000.0"></autoplunger>
- ' <diverter mass="10000.0" omega="33.0"></diverter>
- ' <gate mass="5.0" gravity="2500.0" damping="0.25"></gate>
- ' <kicker impulse="1200.0" vukImpulse="1400.0" impulseRandomness="2" vectorRandomness="1"></kicker>
- ' <plunger mass="20000.0" force="30000.0"></plunger>
- ' <slingshot impulse="650.0" impulseRandomness="15" vectorRandomness="3"></slingshot>
- ' <spindisk mass="10000.0" angularDamp="0.33" linearDamp="0.25"></spindisk>
- ' <spinner mass="60.0" gravity="100.0" angularDamp="0.25" angularAccel="5.25"
- ' spinDampLoose="0.55" spinBackLoose="1.70"
- ' spinDampNorm="0.75" spinBackNorm="1.80"
- ' spinDampTight="0.95" spinBackTight="1.90"></spinner>
- ' <emkicker mass="10000.0" omega="80.0"></emkicker>
- ' <varitarget mass="500.0" damping="0.9" tension="3.0" return="15.0"></varitarget>
- ' <magnet impulse="10.0" impulseRandomness="2"></magnet>
- ' <nudge impulse="240.0" impulseRandomness="25.0" warningLevel="350" leftAngle="60" upAngle="0" rightAngle="320"
- ' vectorRandomness="5" visualDistance="3" waitPeriod="300" maxBallVelocity="500.0"></nudge>
- ' <defaultMat softnessCoef="0.03" elasticCoef="0.1" staticFriction="0.01" kineticFriction="0.02"></defaultMat>
- ' <playfieldMat softnessCoef="0.02" elasticCoef="0.1" staticFriction="0.01" kineticFriction="0.02"></playfieldMat>
- ' <metalMat softnessCoef="0.01" elasticCoef="0.15" staticFriction="0.02" kineticFriction="0.02"></metalMat>
- ' <woodMat softnessCoef="0.03" elasticCoef="0.15" staticFriction="0.03" kineticFriction="0.02"></woodMat>
- ' <plasticMat softnessCoef="0.02" elasticCoef="0.2" staticFriction="0.02" kineticFriction="0.01"></plasticMat>
- ' <rubberHardMat softnessCoef="0.08" elasticCoef="0.50" staticFriction="0.04" kineticFriction="0.055"></rubberHardMat>
- ' <rubberIntMat softnessCoef="0.1" elasticCoef="0.72" staticFriction="0.05" kineticFriction="0.065"></rubberIntMat>
- ' <rubberSoftMat softnessCoef="0.12" elasticCoef="0.83" staticFriction="0.06" kineticFriction="0.075"></rubberSoftMat>
- ' <gateMat softnessCoef="0.05" elasticCoef="0.65" staticFriction="0" kineticFriction="0"></gateMat>
- ' <kickerMat softnessCoef="0.01" elasticCoef="0.05" staticFriction="0.8" kineticFriction="0.8"></kickerMat>
- ' <rampMat softnessCoef="0.01" elasticCoef="0.01" staticFriction="0.01" kineticFriction="0.01"></rampMat>
- ' <plungerMat softnessCoef="0.04" elasticCoef="0.55" staticFriction="0.02" kineticFriction="0.02"></plungerMat>
- ' <spindiskMat softnessCoef="0.05" elasticCoef="0.5" staticFriction="1.5" kineticFriction="2"></spindiskMat>
- '</document>
- '=============================== PHYSICS XML ===========================
- ' === Dynamic Flipper Settings ===
- Const BAM_VERSION = 0
- AddDebugText "BAM Version: " & BAM_VERSION
- Dim RightFlipperExt,LeftFlipperExt
- Dim omegaCorrectionR
- Dim omegaCorrectionL
- xBAM.BallSpeedLimit = 3000
- Sub OnPreHitFlipperSettings(FlipperExt)
- OnPreHitFlipperSettings_bounceControl(FlipperExt)
- End Sub
- const MaxOmega = 45 ' Omega at base of flipper. Must be > MinOmega. Default = 45
- const MinOmega = 32 ' Omega at tip of flipper. Must be < MaxOmega. Default = 32
- Sub LeftFlipper_prehit()
- OnPreHitFlipperSettings(LeftFlipperExt)
- omegaCorrectionL = MaxOmega - (LeftFlipperExt.ContactPoint * ((MaxOmega - MinOmega)/1.2))
- If LeftFlipperExt.ContactPoint < 0.0 then LeftFlipperExt.Omega = MaxOmega
- If LeftFlipperExt.ContactPoint > 1.2 then LeftFlipperExt.Omega = MinOmega
- If (LeftFlipperExt.ContactPoint => 0.0) And (LeftFlipperExt.ContactPoint =< 1.2) then
- LeftFlipperExt.Omega = omegaCorrectionL
- End if
- End Sub
- Sub RightFlipper_prehit()
- OnPreHitFlipperSettings(RightFlipperExt)
- omegaCorrectionR = MaxOmega - (RightFlipperExt.ContactPoint * ((MaxOmega - MinOmega)/1.2))
- If RightFlipperExt.ContactPoint < 0.0 then RightFlipperExt.Omega = MaxOmega
- If RightFlipperExt.ContactPoint > 1.2 then RightFlipperExt.Omega = MinOmega
- If (RightFlipperExt.ContactPoint => 0.0) And (RightFlipperExt.ContactPoint =< 1.2) then
- RightFlipperExt.Omega = omegaCorrectionR
- End if
- End Sub
- Sub OnPreHitFlipperSettings_bounceControl(FlipperExt)
- ' PARAMETERS TO TWEAK
- const base_elasticCoef = 0.80 ' very bouncy flipper rubber
- const expected_ball_speed_after_hit = 300 ' calc elasticCoef to get desired ball speed after ball hit flipper
- 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
- const reduction_for_flipper_in_motion = 0.15 ' if flipper is not in starting point, reduce elasticCoef by 20%
- If FlipperExt.Hit Then
- Dim elasticCoef
- Dim maxElasticCoef
- Dim ballSpeed
- ballSpeed = (FlipperExt.BallVSpeed + xBAM.Ball.Speed) * 0.5 ' averge speed of
- maxElasticCoef = base_elasticCoef
- If FlipperExt.AngleDiff > 1 Then maxElasticCoef = maxElasticCoef - reduction_for_flipper_in_motion
- elasticCoef = base_elasticCoef
- If ballSpeed > 1 Then elasticCoef = expected_ball_speed_after_hit / ballSpeed
- elasticCoef = elasticCoef + minimum_elasticCoef_to_scale_fast_balls
- If elasticCoef > maxElasticCoef Then elasticCoef = maxElasticCoef
- FlipperExt.SetMaterial elasticCoef
- End If
- End Sub
- ' ========= End of Dynamic Flipper Settings ===========
- '############################### END OF PHYSICS SETTINGS ###################################
- '############################################################################################
- ' ****** BAM Lighting and Post Processing ******
- Sub SetLightsParamsInBAM()
- xBAM.Lights.EnableNewRenderer = TRUE
- xBAM.Lights.MainLightLock = TRUE
- ' --- SetMainLightPosition not used because MainLightLock = FALSE
- ' xBAM.Lights.SetMainLightPosition 250, 650, 500
- xBAM.Lights.SetMainLightProperties 1, 0.35, 1, 0.075
- xBAM.Lights.SetMainLightAttenuation 1, 0, 0
- xBAM.Lights.SetOtherLightsAttenuation 0.066, 0, 0.333
- xBAM.Lights.EnablePostprocessing = FALSE
- xBAM.Lights.SetPostprocessing 1, 0, 1, 1
- xBAM.Lights.SetPostprocessingForNewRenderer 1, 0, 1, 1, 1, 1, 1, 1, 1
- xBAM.Lights.BallReflection = 2
- xBAM.Lights.BallShininess = 400
- xBAM.Lights.BallSpecular = 0.4
- End Sub
- ' ****** BAM Shadowmaps ******
- Sub BAM_Init
- xBAM.ShadowMap "bulb1", 2000 , 1 , 2, 5, 2, 0, 0
- xBAM.ShadowMap "bulb22", 2000 , 1 , 2, 5, 2, 0, 0
- xBAM.ShadowMap "bulb25", 2000 , 1 , 2, 5, 2, 0, 0
- xBAM.ShadowMap "bulb3", 2000 , 1 , 2, 5, 2, 0, 0
- xBAM.ShadowMap "bulb5", 2000 , 1 , 2, 5, 3, 0, 0
- xBAM.ShadowMap "bulb6", 2000 , 1 , 2, 5, 2, 0, 0
- xBAM.ShadowMap "bulb7", 2000 , 1 , 2, 5, 2, 0, 0
- xBAM.ShadowMap "leftslingshotbulb1", 2000 , 1 , 2, 5, 2, 0, 0
- xBAM.ShadowMap "leftslingshotbulb2", 2000 , 1 , 2, 5, 2, 0, 0
- xBAM.ShadowMap "rightslingshotbulb1", 2000 , 1 , 2, 5, 2, 0, 0
- xBAM.ShadowMap "rightslingshotbulb2", 2000 , 1 , 2, 5, 2, 0, 0
- End Sub
- ' ****** BAM Ray Cast Ball Shadows ******
- ' This feature can be enabled and adjusted in the BAM menu while playing
- ' (Addons - Configure Ball and Flipper Shadows - Ray Cast)
- ' - all flashers by default will project ball shadows
- ' - flashers that are inside of a ball "should" not project a ball shadow (but can be disabled manually)
- ' - normal lights / bulbs must have a shadowmap created and enabled to cast a ball shadow
- ' - ray cast ball shadows are based on the position and height of the light sources "model"
- if use_RayCast_Shadows = true then xBAM.RayCastShadows.Set 0.85, -1.0
- ' This will disable these flashers from projecting a ball shadow
- GI_Flasher1Ext.EnableRayCastShadows = False
- GI_Flasher2Ext.EnableRayCastShadows = False
- GI_Flasher3Ext.EnableRayCastShadows = False
- GI_Flasher4Ext.EnableRayCastShadows = False
- ' ############## BAM - Flashers, Bulbs, and Lights #################
- ' **** Flashers ****
- xBAM.Lights.LockFlasherBrightness = FALSE
- xBAM.Lights.LockGlowBrightness = FALSE
- GI_Flasher1Ext.DetachLight = True
- GI_Flasher1Ext.SetPosition 103,758,25
- GI_Flasher1Ext.Brightness = 0.25
- GI_Flasher2Ext.DetachLight = True
- GI_Flasher2Ext.SetPosition 364,758,25
- GI_Flasher2Ext.Brightness = 0.25
- GI_Flasher3Ext.DetachLight = True
- GI_Flasher3Ext.Brightness = 0.25
- GI_Flasher3Ext.SetPosition 58,362,75
- GI_Flasher4Ext.DetachLight = True
- GI_Flasher4Ext.Brightness = 0.25
- GI_Flasher4Ext.SetPosition 410,362,75
- Drain_FlasherExt.DetachLight = True
- Drain_FlasherExt.SetPosition 232,1010,25
- Drain_FlasherExt.Brightness = 0.5
- ' ********** Inserts **********
- ' --- Glow Settings ---
- twoXlightExt.glowradius = 0
- threeXlightExt.glowradius = 0
- fourxlightExt.glowradius = 0
- fivexlightExt.glowradius = 0
- ShootAgainLightExt.glowradius = 0
- Lock1Ext.glowradius = 0
- Lock2Ext.glowradius = 0
- Lock3Ext.glowradius = 0
- Lock4Ext.glowradius = 0
- Quick1Ext.glowradius = 0
- Quick2Ext.glowradius = 0
- Quick3Ext.glowradius = 0
- Quick4Ext.glowradius = 0
- Quick5Ext.glowradius = 0
- lightkickback1Ext.glowradius = 0
- lightkickback2Ext.glowradius = 0
- advx1Ext.glowradius = 0
- advx2Ext.glowradius = 0
- looplight2Ext.glowradius = 0
- quickscorelight2Ext.glowradius = 0
- looplight1Ext.glowradius = 0
- quickscorelight1Ext.glowradius = 0
- B1LExt.glowradius = 0
- B2LExt.glowradius = 0
- B3LExt.glowradius = 0
- B4LExt.glowradius = 0
- P4LExt.glowradius = 0
- P3LExt.glowradius = 0
- P2LExt.glowradius = 0
- P1LExt.glowradius = 0
- advexballlightExt.glowradius = 0
- extraballlightExt.glowradius = 0
- P5LExt.glowradius = 0
- P6LExt.glowradius = 0
- P7LExt.glowradius = 0
- P8LExt.glowradius = 0
- P9LExt.glowradius = 0
- P10LExt.glowradius = 0
- P11LExt.glowradius = 0
- P12LExt.glowradius = 0
- B5LExt.glowradius = 0
- B6LExt.glowradius = 0
- B7LExt.glowradius = 0
- B8LExt.glowradius = 0
- B9LExt.glowradius = 0
- B10LExt.glowradius = 0
- B11LExt.glowradius = 0
- B12LExt.glowradius = 0
- Locklit1Ext.glowradius = 0
- Locklit2Ext.glowradius = 0
- jackpotlightExt.glowradius = 0
- HundredK1Ext.glowradius = 0
- HundredK2Ext.glowradius = 0
- bluearrowExt.glowradius = 0
- pinkarrowExt.glowradius = 0
- LeftkicklightExt.glowradius = 0
- RightkicklightExt.glowradius = 0
- ' --- Brightness Settings ---
- Dim Inserts_Brightness_GI_ON
- Dim Inserts_Brightness_GI_OFF
- Inserts_Brightness_GI_OFF = 3.25
- Inserts_Brightness_GI_ON = 3
- Sub Inserts_Brightness_GION
- twoXlightExt.brightness = 3
- threeXlightExt.brightness = 3
- fourxlightExt.brightness = 3
- fivexlightExt.brightness = 3
- ShootAgainLightExt.brightness = 3
- Lock1Ext.brightness = 3
- Lock2Ext.brightness = 3
- Lock3Ext.brightness = 3
- Lock4Ext.brightness = 3
- Quick1Ext.brightness = 3
- Quick2Ext.brightness = 3
- Quick3Ext.brightness = 3
- Quick4Ext.brightness = 3
- Quick5Ext.brightness = 3
- lightkickback1Ext.brightness = 3
- lightkickback2Ext.brightness = 3
- advx1Ext.brightness = 3
- advx2Ext.brightness = 3
- looplight2Ext.brightness = 3
- quickscorelight2Ext.brightness = 3
- looplight1Ext.brightness = 3
- quickscorelight1Ext.brightness = 3
- B1LExt.brightness = 3
- B2LExt.brightness = 3
- B3LExt.brightness = 3
- B4LExt.brightness = 3
- P4LExt.brightness = 3
- P3LExt.brightness = 3
- P2LExt.brightness = 3
- P1LExt.brightness = 3
- advexballlightExt.brightness = 3
- extraballlightExt.brightness = 3
- jackpotlightExt.brightness = 3
- 'upper playfield
- P5LExt.brightness = 5
- P6LExt.brightness = 5
- P7LExt.brightness = 5
- P8LExt.brightness = 5
- P9LExt.brightness = 5
- P10LExt.brightness = 5
- P11LExt.brightness = 5
- P12LExt.brightness = 5
- B5LExt.brightness = 5
- B6LExt.brightness = 5
- B7LExt.brightness = 5
- B8LExt.brightness = 5
- B9LExt.brightness = 5
- B10LExt.brightness = 5
- B11LExt.brightness = 5
- B12LExt.brightness = 5
- Locklit1Ext.brightness = 5
- Locklit2Ext.brightness = 5
- HundredK1Ext.brightness = 5
- HundredK2Ext.brightness = 5
- bluearrowExt.brightness = 4
- pinkarrowExt.brightness = 4
- LeftkicklightExt.brightness = 4
- RightkicklightExt.brightness = 4
- End Sub
- Sub Inserts_Brightness_GIOFF
- twoXlightExt.brightness = 6
- threeXlightExt.brightness = 6
- fourxlightExt.brightness = 6
- fivexlightExt.brightness = 6
- ShootAgainLightExt.brightness = 6
- Lock1Ext.brightness = 7
- Lock2Ext.brightness = 7
- Lock3Ext.brightness = 7
- Lock4Ext.brightness = 7
- Quick1Ext.brightness = 7
- Quick2Ext.brightness = 7
- Quick3Ext.brightness = 7
- Quick4Ext.brightness = 7
- Quick5Ext.brightness = 7
- lightkickback1Ext.brightness = 7
- lightkickback2Ext.brightness = 7
- advx1Ext.brightness = 7
- advx2Ext.brightness = 7
- looplight2Ext.brightness = 7
- quickscorelight2Ext.brightness = 7
- looplight1Ext.brightness = 7
- quickscorelight1Ext.brightness = 7
- B1LExt.brightness = 7
- B2LExt.brightness = 7
- B3LExt.brightness = 7
- B4LExt.brightness = 7
- P4LExt.brightness = 7
- P3LExt.brightness = 7
- P2LExt.brightness = 7
- P1LExt.brightness = 7
- advexballlightExt.brightness = 7
- extraballlightExt.brightness = 7
- jackpotlightExt.brightness = 7
- 'upper playfield
- P5LExt.brightness = 8
- P6LExt.brightness = 8
- P7LExt.brightness = 8
- P8LExt.brightness = 8
- P9LExt.brightness = 8
- P10LExt.brightness = 8
- P11LExt.brightness = 8
- P12LExt.brightness = 8
- B5LExt.brightness = 8
- B6LExt.brightness = 8
- B7LExt.brightness = 8
- B8LExt.brightness = 8
- B9LExt.brightness = 8
- B10LExt.brightness = 8
- B11LExt.brightness = 8
- B12LExt.brightness = 8
- Locklit1Ext.brightness = 8
- Locklit2Ext.brightness = 8
- HundredK1Ext.brightness = 8
- HundredK2Ext.brightness = 8
- bluearrowExt.brightness = 7
- pinkarrowExt.brightness = 7
- LeftkicklightExt.brightness = 6
- RightkicklightExt.brightness = 6
- End Sub
- Sub Inserts_ALL_ON
- twoXlight.state = bulbon
- threeXlight.state = bulbon
- fourxlight.state = bulbon
- fivexlight.state = bulbon
- ShootAgainLight.state = bulbon
- Lock1.state = bulbon
- Lock2.state = bulbon
- Lock3.state = bulbon
- Lock4.state = bulbon
- Quick1.state = bulbon
- Quick2.state = bulbon
- Quick3.state = bulbon
- Quick4.state = bulbon
- Quick5.state = bulbon
- lightkickback1.state = bulbon
- lightkickback2.state = bulbon
- advx1.state = bulbon
- advx2.state = bulbon
- looplight2.state = bulbon
- quickscorelight2.state = bulbon
- looplight1.state = bulbon
- quickscorelight1.state = bulbon
- B1L.state = bulbon
- B2L.state = bulbon
- B3L.state = bulbon
- B4L.state = bulbon
- P4L.state = bulbon
- P3L.state = bulbon
- P2L.state = bulbon
- P1L.state = bulbon
- advexballlight.state = bulbon
- extraballlight.state = bulbon
- jackpotlight.state = bulbon
- 'upper playfield
- P5L.state = bulbon
- P6L.state = bulbon
- P7L.state = bulbon
- P8L.state = bulbon
- P9L.state = bulbon
- P10L.state = bulbon
- P11L.state = bulbon
- P12L.state = bulbon
- B5L.state = bulbon
- B6L.state = bulbon
- B7L.state = bulbon
- B8L.state = bulbon
- B9L.state = bulbon
- B10L.state = bulbon
- B11L.state = bulbon
- B12L.state = bulbon
- Locklit1.state = bulbon
- Locklit2.state = bulbon
- HundredK1.state = bulbon
- HundredK2.state = bulbon
- bluearrow.state = bulbon
- pinkarrow.state = bulbon
- Leftkicklight.state = bulbon
- Rightkicklight.state = bulbon
- End Sub
- Sub Inserts_ALL_OFF
- twoXlight.state = bulboff
- threeXlight.state = bulboff
- fourxlight.state = bulboff
- fivexlight.state = bulboff
- ShootAgainLight.state = bulboff
- Lock1.state = bulboff
- Lock2.state = bulboff
- Lock3.state = bulboff
- Lock4.state = bulboff
- Quick1.state = bulboff
- Quick2.state = bulboff
- Quick3.state = bulboff
- Quick4.state = bulboff
- Quick5.state = bulboff
- lightkickback1.state = bulboff
- lightkickback2.state = bulboff
- advx1.state = bulboff
- advx2.state = bulboff
- looplight2.state = bulboff
- quickscorelight2.state = bulboff
- looplight1.state = bulboff
- quickscorelight1.state = bulboff
- B1L.state = bulboff
- B2L.state = bulboff
- B3L.state = bulboff
- B4L.state = bulboff
- P4L.state = bulboff
- P3L.state = bulboff
- P2L.state = bulboff
- P1L.state = bulboff
- advexballlight.state = bulboff
- extraballlight.state = bulboff
- jackpotlight.state = bulboff
- 'upper playfield
- P5L.state = bulboff
- P6L.state = bulboff
- P7L.state = bulboff
- P8L.state = bulboff
- P9L.state = bulboff
- P10L.state = bulboff
- P11L.state = bulboff
- P12L.state = bulboff
- B5L.state = bulboff
- B6L.state = bulboff
- B7L.state = bulboff
- B8L.state = bulboff
- B9L.state = bulboff
- B10L.state = bulboff
- B11L.state = bulboff
- B12L.state = bulboff
- Locklit1.state = bulboff
- Locklit2.state = bulboff
- HundredK1.state = bulboff
- HundredK2.state = bulboff
- bluearrow.state = bulboff
- pinkarrow.state = bulboff
- Leftkicklight.state = bulboff
- Rightkicklight.state = bulboff
- End Sub
- '################ G.I. (General Illumination) ##################
- ' - used to turn on and off G.I. (general illumination) lights
- ' - typically consists of a few hidden nano flashers and bulbs within plastics
- ' - certain lights (such as inserts) may need their brightness adjusted for GI ON / OFF
- Sub GI_OFF_TIMER_expired()
- GI_OFF_TIMER.enabled = false
- GI_ON()
- End Sub
- Sub GI_OFF
- LeftSlingshotBulb1.state = bulboff
- LeftSlingshotBulb2.state = bulboff
- Bulb23.state = bulboff
- Bulb24.state = bulboff
- RightSlingshotBulb1.state = bulboff
- RightSlingshotBulb2.state = bulboff
- RightLaneBulb1.state = bulboff
- Bulb2.state = bulboff
- GI_Flasher1.state = bulboff
- GI_Flasher2.state = bulboff
- GI_Flasher3.state = bulboff
- GI_Flasher4.state = bulboff
- Bulb5.state = bulboff
- Bulb25.state = bulboff
- Bulb22.state = bulboff
- Bulb7.state = bulboff
- Bulb21.state = bulboff
- Bulb20.state = bulboff
- Bulb19.state = bulboff
- Bulb16.state = bulboff
- Bulb18.state = bulboff
- Bulb17.state = bulboff
- Bulb15.state = bulboff
- Bulb14.state = bulboff
- Bulb12.state = bulboff
- Bulb13.state = bulboff
- Bulb11.state = bulboff
- Bulb10.state = bulboff
- Bulb9.state = bulboff
- Bulb8.state = bulboff
- Bulb6.state = bulboff
- Bulb3.state = bulboff
- Bulb4.state = bulboff
- Bulb1.state = bulboff
- Inserts_Brightness_GIOFF
- pf_videos_brightness = 4
- PF_Video_Brightness_Change
- PuP_Plug_Tex.ReplaceTexture plastics_tex, plastics_tex
- PuP_Plug_Tex.ReplaceTexture plastics_upper_tex, plastics_upper_tex
- xBAM.GetTexture("lower plastics copy").brightness = 1
- xBAM.GetTexture("upper plastics").brightness = 1
- End Sub
- Sub GI_ON
- LeftSlingshotBulb1.state = bulbon
- LeftSlingshotBulb2.state = bulbon
- Bulb23.state = bulbon
- Bulb24.state = bulbon
- RightSlingshotBulb1.state = bulbon
- RightSlingshotBulb2.state = bulbon
- RightLaneBulb1.state = bulbon
- Bulb2.state = bulbon
- GI_Flasher1.state = bulbon
- GI_Flasher2.state = bulbon
- GI_Flasher3.state = bulbon
- GI_Flasher4.state = bulbon
- Bulb5.state = bulbon
- Bulb25.state = bulbon
- Bulb22.state = bulbon
- Bulb7.state = bulbon
- Bulb21.state = bulbon
- Bulb20.state = bulbon
- Bulb19.state = bulbon
- Bulb16.state = bulbon
- Bulb18.state = bulbon
- Bulb17.state = bulbon
- Bulb15.state = bulbon
- Bulb14.state = bulbon
- Bulb12.state = bulbon
- Bulb13.state = bulbon
- Bulb11.state = bulbon
- Bulb10.state = bulbon
- Bulb9.state = bulbon
- Bulb8.state = bulbon
- Bulb6.state = bulbon
- Bulb3.state = bulbon
- Bulb4.state = bulbon
- Bulb1.state = bulbon
- Inserts_Brightness_GION
- pf_videos_brightness = 2.25
- PF_Video_Brightness_Change
- PuP_Plug_Tex.ReplaceTexture plastics_tex, plastics_gi_on_tex
- PuP_Plug_Tex.ReplaceTexture plastics_upper_tex, plastics_upper_gi_on_tex
- xBAM.GetTexture("lower plastics copy").brightness = 6
- xBAM.GetTexture("upper plastics").brightness = 6
- End Sub
- Sub GI_White
- GI_Flasher1Ext.Brightness = 0.175
- GI_Flasher2Ext.Brightness = 0.175
- GI_Flasher3Ext.Brightness = 0.175
- GI_Flasher4Ext.Brightness = 0.175
- GI_Flasher1Ext.setLitColor 255,255,255
- GI_Flasher2Ext.setLitColor 255,255,255
- GI_Flasher3Ext.setLitColor 255,255,255
- GI_Flasher4Ext.setLitColor 255,255,255
- End Sub
- Sub GI_Blue_Pink
- GI_Flasher1Ext.Brightness = 0.25
- GI_Flasher2Ext.Brightness = 0.25
- GI_Flasher3Ext.Brightness = 0.25
- GI_Flasher4Ext.Brightness = 0.25
- GI_Flasher1Ext.setLitColor 0,128,255
- GI_Flasher2Ext.setLitColor 255,0,255
- GI_Flasher3Ext.setLitColor 0,128,255
- GI_Flasher4Ext.setLitColor 255,0,255
- End Sub
- Sub GI_Blue_Red
- GI_Flasher1Ext.Brightness = 0.25
- GI_Flasher2Ext.Brightness = 0.25
- GI_Flasher3Ext.Brightness = 0.25
- GI_Flasher4Ext.Brightness = 0.25
- GI_Flasher1Ext.setLitColor 0,128,255
- GI_Flasher2Ext.setLitColor 255,0,0
- GI_Flasher3Ext.setLitColor 0,128,255
- GI_Flasher4Ext.setLitColor 255,0,0
- End Sub
- Sub GI_Brightness_Low
- GI_Flasher1Ext.Brightness = 0.10
- GI_Flasher2Ext.Brightness = 0.10
- GI_Flasher3Ext.Brightness = 0.10
- GI_Flasher4Ext.Brightness = 0.10
- End Sub
- Sub GI_Brightness_Medium
- GI_Flasher1Ext.Brightness = 0.175
- GI_Flasher2Ext.Brightness = 0.175
- GI_Flasher3Ext.Brightness = 0.175
- GI_Flasher4Ext.Brightness = 0.175
- End Sub
- Sub GI_Brightness_High
- GI_Flasher1Ext.Brightness = 0.25
- GI_Flasher2Ext.Brightness = 0.25
- GI_Flasher3Ext.Brightness = 0.25
- GI_Flasher4Ext.Brightness = 0.25
- End Sub
- Dim GI_Brightness_Level: GI_Brightness_Level = 1
- Sub GI_Brightness_Change
- GI_Brightness_Level = GI_Brightness_Level +1
- if GI_Brightness_Level >3 then GI_Brightness_Level = 1
- Select Case GI_Brightness_Level
- Case 1:
- GI_Flasher1Ext.Brightness = 0.10
- GI_Flasher2Ext.Brightness = 0.10
- GI_Flasher3Ext.Brightness = 0.10
- GI_Flasher4Ext.Brightness = 0.10
- maintext.flushqueue()
- bluetext.flushqueue()
- pinktext.flushqueue()
- Maintext.queuetext " Brightness - 1 ", sescrollupover, 1000
- bluetext.queuetext "", sescrollupover, 1000
- pinktext.queuetext "", sescrollupover, 1000
- maintext2.flushqueue()
- bluetext2.flushqueue()
- pinktext2.flushqueue()
- Maintext2.queuetext " Brightness - 1 ", sescrollupover, 1000
- bluetext2.queuetext "", sescrollupover, 1000
- pinktext2.queuetext "", sescrollupover, 1000
- Case 2:
- GI_Flasher1Ext.Brightness = 0.175
- GI_Flasher2Ext.Brightness = 0.175
- GI_Flasher3Ext.Brightness = 0.175
- GI_Flasher4Ext.Brightness = 0.175
- maintext.flushqueue()
- bluetext.flushqueue()
- pinktext.flushqueue()
- Maintext.queuetext " Brightness - 2 ", sescrollupover, 1000
- bluetext.queuetext "", sescrollupover, 1000
- pinktext.queuetext "", sescrollupover, 1000
- maintext2.flushqueue()
- bluetext2.flushqueue()
- pinktext2.flushqueue()
- Maintext2.queuetext " Brightness - 2 ", sescrollupover, 1000
- bluetext2.queuetext "", sescrollupover, 1000
- pinktext2.queuetext "", sescrollupover, 1000
- Case 3:
- GI_Flasher1Ext.Brightness = 0.25
- GI_Flasher2Ext.Brightness = 0.25
- GI_Flasher3Ext.Brightness = 0.25
- GI_Flasher4Ext.Brightness = 0.25
- maintext.flushqueue()
- bluetext.flushqueue()
- pinktext.flushqueue()
- Maintext.queuetext " Brightness - 3 ", sescrollupover, 1000
- bluetext.queuetext "", sescrollupover, 1000
- pinktext.queuetext "", sescrollupover, 1000
- maintext2.flushqueue()
- bluetext2.flushqueue()
- pinktext2.flushqueue()
- Maintext2.queuetext " Brightness - 3 ", sescrollupover, 1000
- bluetext2.queuetext "", sescrollupover, 1000
- pinktext2.queuetext "", sescrollupover, 1000
- End Select
- End Sub
- Dim GI_Color_Preset: GI_Color_Preset = 1
- Sub GI_Color_Preset_Change
- GI_Color_Preset = GI_Color_Preset +1
- if GI_Color_Preset >3 then GI_Color_Preset = 1
- Select Case GI_Color_Preset
- Case 1: GI_White:
- maintext.flushqueue()
- bluetext.flushqueue()
- pinktext.flushqueue()
- Maintext.queuetext " GI - Original ", sescrollupover, 1000
- bluetext.queuetext "", sescrollupover, 1000
- pinktext.queuetext "", sescrollupover, 1000
- maintext2.flushqueue()
- bluetext2.flushqueue()
- pinktext2.flushqueue()
- Maintext2.queuetext " GI - Original ", sescrollupover, 1000
- bluetext2.queuetext "", sescrollupover, 1000
- pinktext2.queuetext "", sescrollupover, 1000
- Case 2: GI_Blue_Pink
- maintext.flushqueue()
- bluetext.flushqueue()
- pinktext.flushqueue()
- Maintext.queuetext " GI - Blue/Pink ", sescrollupover, 1000
- bluetext.queuetext "", sescrollupover, 1000
- pinktext.queuetext "", sescrollupover, 1000
- maintext2.flushqueue()
- bluetext2.flushqueue()
- pinktext2.flushqueue()
- Maintext2.queuetext " GI - Blue/Pink ", sescrollupover, 1000
- bluetext2.queuetext "", sescrollupover, 1000
- pinktext2.queuetext "", sescrollupover, 1000
- Case 3: GI_Blue_Red
- maintext.flushqueue()
- bluetext.flushqueue()
- pinktext.flushqueue()
- Maintext.queuetext " GI - Blue/Red ", sescrollupover, 1000
- bluetext.queuetext "", sescrollupover, 1000
- pinktext.queuetext "", sescrollupover, 1000
- maintext2.flushqueue()
- bluetext2.flushqueue()
- pinktext2.flushqueue()
- Maintext2.queuetext " GI - Blue/Red ", sescrollupover, 1000
- bluetext2.queuetext "", sescrollupover, 1000
- pinktext2.queuetext "", sescrollupover, 1000
- End Select
- End Sub
- ' ################### Texture Adjustments ####################
- ' - used for adjusting brightness, colour, etc of textures
- xBAM.GetTexture("lower plastics copy").brightness = 1
- xBAM.GetTexture("upper plastics").brightness = 1
- xBAM.GetTexture("backdrop copy").brightness = 2
- xBAM.GetTexture("apron").brightness = 1.5
- xBAM.GetTexture("surface25").brightness = 1.5
- ' ###### BUMP / Normal Maps ######
- Dim tex_insert_round_small_ColorMap
- Set tex_insert_round_small_ColorMap = xBAM.GetTexture("insert_round_small-ColorMap")
- tex_insert_round_small_ColorMap.normalMap = "insert_round_small-NormalMap"
- tex_insert_round_small_ColorMap.normalMapScale = -0.5
- tex_insert_round_small_ColorMap.SetSpecularColor 0, 0, 0
- Dim tex_insert_square_ColorMap
- Set tex_insert_square_ColorMap = xBAM.GetTexture("insert_square-ColorMap")
- tex_insert_square_ColorMap.normalMap = "insert_square-NormalMap"
- tex_insert_square_ColorMap.normalMapScale = -0.5
- tex_insert_square_ColorMap.SetSpecularColor 0, 0, 0
- Dim tex_insert_triangle_ColorMap
- Set tex_insert_triangle_ColorMap = xBAM.GetTexture("insert_triangle-ColorMap")
- tex_insert_triangle_ColorMap.normalMap = "insert_triangle-NormalMap"
- tex_insert_triangle_ColorMap.normalMapScale = -0.5
- tex_insert_triangle_ColorMap.SetSpecularColor 0, 0, 0
- Dim tex_insert_arrow_small_ColorMap
- Set tex_insert_arrow_small_ColorMap = xBAM.GetTexture("insert_arrow_small-ColorMap")
- tex_insert_arrow_small_ColorMap.normalMap = "insert_arrow_small-NormalMap"
- tex_insert_arrow_small_ColorMap.normalMapScale = -0.5
- tex_insert_arrow_small_ColorMap.SetSpecularColor 0, 0, 0
- Dim tex_insert_arrow_bh_ColorMap
- Set tex_insert_arrow_bh_ColorMap = xBAM.GetTexture("insert_arrow_bh-ColorMap")
- tex_insert_arrow_bh_ColorMap.normalMap = "insert_arrow_bh-NormalMap"
- tex_insert_arrow_bh_ColorMap.normalMapScale = -0.5
- tex_insert_arrow_bh_ColorMap.SetSpecularColor 0, 0, 0
- Dim tex_insert_longhole_ColorMap
- Set tex_insert_longhole_ColorMap = xBAM.GetTexture("insert_longhole-ColorMap")
- tex_insert_longhole_ColorMap.normalMap = "insert_longhole-NormalMap"
- tex_insert_longhole_ColorMap.normalMapScale = -0.5
- tex_insert_longhole_ColorMap.SetSpecularColor 0, 0, 0
- Dim tex_insert_diamond_ColorMap
- Set tex_insert_diamond_ColorMap = xBAM.GetTexture("insert_diamond-ColorMap")
- tex_insert_diamond_ColorMap.normalMap = "insert_diamond-NormalMap"
- tex_insert_diamond_ColorMap.normalMapScale = -0.5
- tex_insert_diamond_ColorMap.SetSpecularColor 0, 0, 0
- ' ###### Playfield Video Brightness ######
- ' - the FP Overlay on a playfield does not brighten on its own (and is affected by all other lighting)
- ' - we need to manually brighten all images used on the overlay so it looks correct to match the rest of the new lighting
- ' - it's a pain :(
- Dim pf_videos_brightness: pf_videos_brightness = 2
- Dim videos_basename
- Dim videos_frame: videos_frame = 0
- Sub PF_Video_Brightness_Change
- videos_frame = 0
- xBAM.GetTexture("bvp").brightness = pf_videos_brightness
- videos_basename = "bvp (00"
- bvp_brightness
- videos_frame = 0
- xBAM.GetTexture("2x").brightness = pf_videos_brightness
- videos_basename = "2x ("
- x2_brightness
- videos_frame = 0
- xBAM.GetTexture("3x").brightness = pf_videos_brightness
- videos_basename = "3x ("
- x3_brightness
- videos_frame = 0
- xBAM.GetTexture("4x").brightness = pf_videos_brightness
- videos_basename = "4x ("
- x4_brightness
- videos_frame = 0
- xBAM.GetTexture("5x").brightness = pf_videos_brightness
- videos_basename = "5x ("
- x5_brightness
- videos_frame = 0
- xBAM.GetTexture("aeb").brightness = pf_videos_brightness
- videos_basename = "aeb ("
- aeb_brightness
- videos_frame = 0
- xBAM.GetTexture("b100k").brightness = pf_videos_brightness
- videos_basename = "b100k ("
- b100k_brightness
- videos_frame = 0
- xBAM.GetTexture("count").brightness = pf_videos_brightness
- videos_basename = "count ("
- count_brightness
- videos_frame = 0
- xBAM.GetTexture("eb").brightness = pf_videos_brightness
- videos_basename = "eb ("
- eb_brightness
- videos_frame = 0
- xBAM.GetTexture("ebl").brightness = pf_videos_brightness
- videos_basename = "ebl ("
- ebl_brightness
- videos_frame = 0
- xBAM.GetTexture("go").brightness = pf_videos_brightness
- videos_basename = "go ("
- go_brightness
- videos_frame = 0
- xBAM.GetTexture("ic").brightness = pf_videos_brightness
- videos_basename = "ic ("
- ic_brightness
- videos_frame = 0
- xBAM.GetTexture("mb").brightness = pf_videos_brightness
- videos_basename = "mb ("
- mb_brightness
- videos_frame = 0
- xBAM.GetTexture("mbl").brightness = pf_videos_brightness
- videos_basename = "mbl ("
- mbl_brightness
- videos_frame = 0
- xBAM.GetTexture("p100k").brightness = pf_videos_brightness
- videos_basename = "p100k ("
- p100k_brightness
- videos_frame = 0
- xBAM.GetTexture("ps").brightness = pf_videos_brightness
- videos_basename = "ps ("
- ps_brightness
- videos_frame = 0
- xBAM.GetTexture("qmb").brightness = pf_videos_brightness
- videos_basename = "qmb ("
- qmb_brightness
- videos_frame = 0
- xBAM.GetTexture("sa").brightness = pf_videos_brightness
- videos_basename = "sa ("
- sa_brightness
- lil_brightness
- End Sub
- Sub bvp_brightness
- videos_frame = videos_frame +2
- if videos_frame = 10 then videos_basename = "bvp (0"
- if videos_frame = 100 then videos_basename = "bvp ("
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 148 then exit sub
- bvp_brightness
- End Sub
- Sub x2_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 44 then exit sub
- x2_brightness
- End Sub
- Sub x3_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 44 then exit sub
- x3_brightness
- End Sub
- Sub x4_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 44 then exit sub
- x4_brightness
- End Sub
- Sub x5_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 44 then exit sub
- x5_brightness
- End Sub
- Sub aeb_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 28 then exit sub
- aeb_brightness
- End Sub
- Sub b100k_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 28 then exit sub
- b100k_brightness
- End Sub
- Sub count_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 74 then exit sub
- count_brightness
- End Sub
- Sub eb_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 58 then exit sub
- eb_brightness
- End Sub
- Sub ebl_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 18 then exit sub
- ebl_brightness
- End Sub
- Sub go_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 28 then exit sub
- go_brightness
- End Sub
- Sub ic_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 28 then exit sub
- ic_brightness
- End Sub
- Sub mb_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 28 then exit sub
- mb_brightness
- End Sub
- Sub mbl_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 58 then exit sub
- mbl_brightness
- End Sub
- Sub p100k_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 28 then exit sub
- p100k_brightness
- End Sub
- Sub ps_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 28 then exit sub
- ps_brightness
- End Sub
- Sub qmb_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 88 then exit sub
- qmb_brightness
- End Sub
- Sub sa_brightness
- videos_frame = videos_frame +2
- xBAM.GetTexture(videos_basename & videos_frame &")").brightness = pf_videos_brightness
- if videos_frame = 58 then exit sub
- sa_brightness
- End Sub
- Sub lil_brightness
- xBAM.GetTexture("lil (10)002").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (100)003").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (102)005").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (104)007").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (106)009").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (108)011").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (110)014").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (112)016").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (114)018").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (116)020").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (118)022").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (12)024").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (120)025").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (122)027").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (124)029").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (126)031").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (128)033").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (130)036").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (132)038").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (134)040").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (136)042").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (138)044").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (14)046").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (140)047").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (142)049").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (144)051").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (146)053").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (148)055").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (150)058").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (152)060").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (154)062").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (156)064").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (158)066").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (16)068").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (160)069").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (162)071").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (164)073").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (18)075").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (2)077").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (20)078").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (22)080").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (24)082").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (26)084").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (28)086").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (30)089").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (32)091").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (34)093").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (36)095").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (38)097").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (4)099").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (40)100").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (42)102").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (44)104").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (46)106").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (48)108").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (50)111").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (52)113").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (54)115").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (56)117").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (58)119").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (6)121").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (60)122").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (62)124").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (64)126").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (66)128").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (68)130").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (70)133").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (72)135").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (74)137").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (76)139").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (78)141").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (8)143").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (80)144").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (82)146").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (84)148").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (86)150").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (88)152").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (90)155").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (92)157").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (94)159").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (96)161").brightness = pf_videos_brightness
- xBAM.GetTexture("lil (98)163").brightness = pf_videos_brightness
- xBAM.GetTexture("lil165").brightness = pf_videos_brightness
- End Sub
- ' ###### End of Playfield Video Brightness ######
- ' ################### PUP Plug-in: Texture Swaps and Animations ##################
- ' - used on all objects where the normal BAM texture swapping commands won't work (like ornaments, ramps, etc)
- ' - can be used to swap textures with pretty much anything
- ' - replacement textures that are not used on any surface or object must be added to an Image Sequence (so BAM can "see" it)
- ' - note, that EVERY texture you are swapping (to and from) needs to use GetTextureId to fetch the texture
- ' - then you simply just need to use the ReplaceTexture command to replace each texture
- ' - keep in mind... this will replace the texture on ALL objects / surfaces that use it, so you may need uniquely named textures
- ' - you must SAVE the table after adding new textures before running the table or this may not work!
- ' - any changes made to the source texture (brightness, colour, etc) will effect the swapped out texture!
- ' **** Initialize the pup plug-in ****
- Dim PuP_Plug_Tex
- Set PuP_Plug_Tex = xBAM.Get("PuPPlugin")
- If PuP_Plug_Tex Is Nothing Then
- AddDebugText "PuP Plugin is missing"
- Else
- AddDebugText "PuP Plugin has started"
- End if
- Dim plastics_tex
- Dim plastics_gi_on_tex
- Dim plastics_upper_tex
- Dim plastics_upper_gi_on_tex
- plastics_tex = PuP_Plug_Tex.GetTextureId("lower plastics copy")
- plastics_gi_on_tex = PuP_Plug_Tex.GetTextureId("lower_plastics_gi_on")
- plastics_upper_tex = PuP_Plug_Tex.GetTextureId("upper plastics")
- plastics_upper_gi_on_tex = PuP_Plug_Tex.GetTextureId("upper_plastics_gi_on")
- ' ########## Table Startup ##########
- GI_ON
- SetLightsParamsInBAM
- if GI_Colour_Startup = 1 then GI_White
- if GI_Colour_Startup = 2 then GI_Blue_Pink
- if GI_Colour_Startup = 3 then GI_Blue_Red
- if GI_Brightness_Startup = 1 then GI_Brightness_Low
- if GI_Brightness_Startup = 2 then GI_Brightness_Medium
- if GI_Brightness_Startup = 3 then GI_Brightness_High
- ' Some extra functions for formating the score etc
- function RandomNumber(ByVal max)
- RandomNumber = Int(max * Rnd + 1)
- end function
- Function FormatScore(num)
- Dim n, f, s
- n = CStr(num)
- f = ""
- do while len(n)>3
- if len(f)>0 then
- f = Right(n, 3) & "," & f
- else
- f = Right(n, 3)
- end if
- n = Left(n, Len(n)-3)
- loop
- if len(n)>0 then
- if len(f) > 0 then
- f = n & "," & f
- else
- f = n
- end if
- end if
- FormatScore = f
- End Function
- ' ################ MECHANICAL SOUNDS AND FEEDBACK #################
- ' - all mechanical sounds for all tiems in the editor are set to none
- ' - they are all controlled by PinMechSound commands instead of playsound
- ' - this makes it easier to allow for support for PUP SSF and DOF (for cabinet users)
- '*** Flippers ***
- Sub PinEvent_Left_Flipper_On
- PinMechSound "mech_Flipper_L0"&RandomNumber(5), LeftFlipper, 1, 801, 1, "flipper"
- DOF 101, 1
- End Sub
- Sub PinEvent_Left_Flipper_Off
- PinMechSound "mech_Flipper_Left_Down_"&RandomNumber(5), LeftFlipper, 1, 801, 0, "flipper"
- DOF 101, 0
- End Sub
- Sub PinEvent_Right_Flipper_On
- PinMechSound "mech_Flipper_R0"&RandomNumber(5), RightFlipper, 1, 802, 1, "flipper"
- DOF 102, 1
- End Sub
- Sub PinEvent_Right_Flipper_Off
- PinMechSound "mech_Flipper_Right_Down_"&RandomNumber(5), RightFlipper, 1, 802, 0, "flipper"
- DOF 102, 0
- End Sub
- '*** Slingshots ***
- Sub PinEvent_Left_Slingshot_Hit
- PinMechSound "mech_Sling_L"&RandomNumber(5), LeftInLaneTrigger, 1, 810, 2, "slingshot"
- DOF 103, 2
- End Sub
- Sub PinEvent_Right_Slingshot_Hit
- PinMechSound "mech_Sling_R"&RandomNumber(5), RightInLaneTrigger, 1, 811, 2, "slingshot"
- DOF 104, 2
- End Sub
- Sub PinEvent_Upper_Left_Slingshot_Hit
- PinMechSound "mech_Sling_L"&RandomNumber(5), Bulb21, 1, 812, 2, "slingshot"
- DOF 114, 2
- End Sub
- Sub PinEvent_Upper_Right_Slingshot_Hit
- PinMechSound "mech_Sling_R"&RandomNumber(5), Bulb8, 1, 813, 2, "slingshot"
- DOF 115, 2
- End Sub
- '*** Bumpers ***
- Sub PinEvent_Bumper1_Hit
- PinMechSound "mech_Bumpers_Top_"&RandomNumber(5), Bumper3, 1, 820, 2, "bumper"
- DOF 105, 2
- End Sub
- Sub PinEvent_Bumper2_Hit
- PinMechSound "mech_Bumpers_Middle_"&RandomNumber(5), Bumper3, 1, 821, 2, "bumper"
- DOF 107, 2
- End Sub
- Sub PinEvent_Bumper3_Hit
- PinMechSound "mech_Bumpers_Bottom_"&RandomNumber(5), Bumper3, 1, 822, 2, "bumper"
- DOF 106, 2
- End Sub
- '*** AutoPlunger, Kickback ***
- Sub PinEvent_Kickback_Left
- PinMechSound "mech_BallRelease"&RandomNumber(5), leftkickback, 1, 831, 2, "solenoid"
- DOF 112, 2
- End Sub
- Sub PinEvent_Kickback_Right
- PinMechSound "mech_BallRelease"&RandomNumber(5), rightkickback, 1, 832, 2, "solenoid"
- DOF 113, 2
- End Sub
- '*** Kickers, VUKs ***
- Sub PinEvent_PlungerKicker
- PinMechSound "mech_BallRelease"&RandomNumber(5), PlungerKicker, 1, 840, 2, "solenoid"
- DOF 108, 2
- End Sub
- sub PinEvent_leftdeckexit_Hit
- PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), leftdeckexit, 1, , , ""
- end sub
- sub PinEvent_leftdeckexit
- PinMechSound "mech_BallRelease"&RandomNumber(5), leftdeckexit, 1, 841, 2, "solenoid"
- DOF 116, 2
- end sub
- sub PinEvent_leftdeckentrance_hit
- PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), leftdeckentrance, 1, , , ""
- end sub
- sub PinEvent_leftdeckentrance
- PinMechSound "mech_BallRelease"&RandomNumber(5), leftdeckentrance, 1, 842, 2, "solenoid"
- DOF 118, 2
- end sub
- sub PinEvent_rightdeckexit_Hit
- PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), rightdeckexit, 1, , , ""
- end sub
- sub PinEvent_rightdeckexit
- PinMechSound "mech_BallRelease"&RandomNumber(5), rightdeckexit, 1, 843, 2, "solenoid"
- DOF 117, 2
- end sub
- sub PinEvent_rightdeckentrance_hit
- PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), rightdeckentrance, 1, , , ""
- end sub
- sub PinEvent_rightdeckentrance
- PinMechSound "mech_BallRelease"&RandomNumber(5), rightdeckentrance, 1, 844, 2, "solenoid"
- DOF 119, 2
- end sub
- sub PinEvent_Targetkicker
- PinMechSound "mech_BallRelease"&RandomNumber(5), Targetkicker, 1, 845, 2, "solenoid"
- DOF 111, 2
- end sub
- sub PinEvent_Leftkicker_Hit
- PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), Leftkicker, 1, , , ""
- end sub
- sub PinEvent_Rightkicker_Hit
- PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), Rightkicker, 1, , , ""
- end sub
- sub PinEvent_leftdeckdrain_Hit
- PinMechSound "mech_Ball_Drop_"&RandomNumber(5), leftdeckdrain, 1, , , ""
- end sub
- sub PinEvent_rightdeckdrain_Hit
- PinMechSound "mech_Ball_Drop_"&RandomNumber(5), rightdeckdrain, 1, , , ""
- end sub
- Sub PinEvent_LeftScoop_Hit
- PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), LeftScoop, 1, , , ""
- end sub
- sub PinEvent_LeftScoop
- PinMechSound "mech_BallRelease"&RandomNumber(5), LeftScoop, 1, 846, 2, "solenoid"
- DOF 120, 2
- end sub
- Sub PinEvent_RightScoop_Hit
- PinMechSound "mech_Saucer_Enter_"&RandomNumber(2), RightScoop, 1, , , ""
- end sub
- sub PinEvent_RightScoop
- PinMechSound "mech_BallRelease"&RandomNumber(5), RightScoop, 1, 847, 2, "solenoid"
- DOF 121, 2
- end sub
- '*** Drop Targets ***
- Sub PinEvent_Drop_Targets_B1toB4_Hit
- PinMechSound "mech_DropTarget_Down", B1, 1, 870, 2, "droptarget"
- End Sub
- Sub PinEvent_Drop_Targets_B1toB4_Reset
- PinMechSound "mech_DropTarget_Up", B1, 1, 871, 2, "droptarget"
- DOF 122, 2
- End Sub
- Sub PinEvent_Drop_Targets_B5toB8_Hit
- PinMechSound "mech_DropTarget_Down", B8, 1, 872, 2, "droptarget"
- End Sub
- Sub PinEvent_Drop_Targets_B5toB8_Reset
- PinMechSound "mech_DropTarget_Up", B8, 1, 873, 2, "droptarget"
- DOF 123, 2
- End Sub
- Sub PinEvent_Drop_Targets_B9toB12_Hit
- PinMechSound "mech_DropTarget_Down", B9, 1, 874, 2, "droptarget"
- End Sub
- Sub PinEvent_Drop_Targets_B9toB12_Reset
- PinMechSound "mech_DropTarget_Up", B9, 1, 875, 2, "droptarget"
- DOF 124, 2
- End Sub
- Sub PinEvent_Drop_Targets_B13toB16_Hit
- PinMechSound "mech_DropTarget_Down", B13, 1, 876, 2, "droptarget"
- End Sub
- Sub PinEvent_Drop_Targets_B13toB16_Reset
- PinMechSound "mech_DropTarget_Up", B13, 1, 877, 2, "droptarget"
- DOF 125, 2
- End Sub
- Sub PinEvent_Drop_Targets_P1toP4_Hit
- PinMechSound "mech_DropTarget_Down", P1, 1, 878, 2, "droptarget"
- End Sub
- Sub PinEvent_Drop_Targets_P1toP4_Reset
- PinMechSound "mech_DropTarget_Up", P1, 1, 879, 2, "droptarget"
- DOF 126, 2
- End Sub
- Sub PinEvent_Drop_Targets_P5toP8_Hit
- PinMechSound "mech_DropTarget_Down", P8, 1, 880, 2, "droptarget"
- End Sub
- Sub PinEvent_Drop_Targets_P5toP8_Reset
- PinMechSound "mech_DropTarget_Up", P8, 1, 881, 2, "droptarget"
- DOF 127, 2
- End Sub
- Sub PinEvent_Drop_Targets_P9toP12_Hit
- PinMechSound "mech_DropTarget_Down", P9, 1, 882, 2, "droptarget"
- End Sub
- Sub PinEvent_Drop_Targets_P9toP12_Reset
- PinMechSound "mech_DropTarget_Up", P9, 1, 883, 2, "droptarget"
- DOF 128, 2
- End Sub
- Sub PinEvent_Drop_Targets_P13toP16_Hit
- PinMechSound "mech_DropTarget_Down", P13, 1, 884, 2, "droptarget"
- End Sub
- Sub PinEvent_Drop_Targets_P13toP16_Reset
- PinMechSound "mech_DropTarget_Up", P13, 1, 885, 2, "droptarget"
- DOF 129, 2
- End Sub
- Sub PinEvent_Drop_Targets_25to34_Hit
- PinMechSound "mech_DropTarget_Down", DropTarget29, 1, 886, 2, "droptarget"
- End Sub
- Sub PinEvent_Drop_Targets_25to34_Reset
- PinMechSound "mech_DropTarget_Up", DropTarget29, 1, 887, 2, "droptarget"
- DOF 130, 2
- End Sub
- Sub PinEvent_CenterTarget_Hit
- PinMechSound "mech_DropTarget_Down", CenterTarget, 1, 888, 2, "droptarget"
- End Sub
- Sub PinEvent_CenterTarget_Reset
- PinMechSound "mech_DropTarget_Up", CenterTarget, 1, 889, 2, "droptarget"
- End Sub
- '********** FP Mechanical Sounds and SSF Sounds (NO DOF) ***********
- ' This is for pinball mechanical events that are only used with FP or PUP SSF sounds (not used for DOF feedback)
- Sub PinEvent_Drain_Hit
- PinMechSound "mech_Drain_"&RandomNumber(5), Drain, 1, , , ""
- End Sub
- Sub PinEvent_CoinIn_Sound
- PinMechSound "mech_Coin_In_"&RandomNumber(3), Drain, 1, , , ""
- End Sub
- Sub PinEvent_Nudge
- PinMechSound "mech_Nudge_"&RandomNumber(3), Drain, 1, , , ""
- End sub
- Sub PinEvent_Rollovers_Left_Hit
- PinMechSound "mech_Rollover_"&RandomNumber(4), LeftInLaneTrigger, 1, , , ""
- End Sub
- Sub PinEvent_Rollovers_Right_Hit
- PinMechSound "mech_Rollover_"&RandomNumber(4), RightInLaneTrigger, 1, , , ""
- End Sub
- Sub PinEvent_WireRamp_Left
- PinMechSound "mech_wireramp_no hit", Trigger3, 1, , , ""
- End Sub
- Sub PinEvent_WireRamp_Right
- PinMechSound "mech_wireramp_no hit", Trigger2, 1, , , ""
- End Sub
- Sub Left_Sling_Top_Hit
- PinMechSound "mech_Rubber_"&RandomNumber(5), Left_Sling_Top, 1, , , ""
- End Sub
- Sub Left_Sling_Bottom_Hit
- PinMechSound "mech_Rubber_"&RandomNumber(5), Left_Sling_Bottom, 1, , , ""
- End Sub
- Sub Left_Ramp_Drop_Hit
- PinMechSound "mech_Ball_Drop_"&RandomNumber(5), Left_Ramp_Drop, 1, , , ""
- End Sub
- Sub Left_Ramp_Exit_Hit
- PinMechSound "mech_Ball_Drop_"&RandomNumber(5), Left_Ramp_Exit, 1, , , ""
- End Sub
- Sub Left_Ramp_End_Hit
- PinMechSound "mech_WireRamp_Stop", Left_Ramp_End, 1, , , ""
- End Sub
- Sub Left_Inlane_Metal_Hit
- PinMechSound "mech_Metal_Touch_"&RandomNumber(5), Left_Inlane_Metal, 1, , , ""
- End Sub
- Sub PinEvent_LeftOutLaneTrigger_Hit
- PinMechSound "mech_Rollover_"&RandomNumber(4), LeftOutLaneTrigger, 1, , , ""
- If leftkicklight.state = bulbon Then PinMechSound "mech_Apron_Soft_"&RandomNumber(3), LeftOutLaneTrigger, 1, , , ""
- End Sub
- Sub Right_Sling_Top_Hit
- PinMechSound "mech_Rubber_"&RandomNumber(5), Right_Sling_Top, 1, , , ""
- End Sub
- Sub Right_Sling_Bottom_Hit
- PinMechSound "mech_Rubber_"&RandomNumber(5), Right_Sling_Bottom, 1, , , ""
- End Sub
- Sub Right_Ramp_Drop_Hit
- PinMechSound "mech_Ball_Drop_"&RandomNumber(5), Right_Ramp_Drop, 1, , , ""
- End Sub
- Sub Right_Ramp_Exit_Hit
- PinMechSound "mech_Ball_Drop_"&RandomNumber(5), Right_Ramp_Exit, 1, , , ""
- End Sub
- Sub Right_Ramp_End_Hit
- PinMechSound "mech_WireRamp_Stop", Right_Ramp_End, 1, , , ""
- End Sub
- Sub Right_Inlane_Metal_Hit
- PinMechSound "mech_Metal_Touch_"&RandomNumber(5), Right_Inlane_Metal, 1, , , ""
- End Sub
- Sub PinEvent_RightOutLaneTrigger_Hit
- PinMechSound "mech_Rollover_"&RandomNumber(4), RightOutLaneTrigger, 1, , , ""
- If rightkicklight.state = bulbon Then PinMechSound "mech_Apron_Soft_"&RandomNumber(3), RightOutLaneTrigger, 1, , , ""
- End Sub
- Sub Launch_Ramp_Hit
- PinMechSound "mech_wireramp_no hit_short", Launch_Ramp, 1, , , ""
- End Sub
- Sub Launch_Ramp_Exit_Hit
- PinMechSound "mech_Ball_Drop_"&RandomNumber(5), Launch_Ramp_Exit, 1, , , ""
- End Sub
- Sub Launch_Ramp_End_Hit
- PinMechSound "mech_WireRamp_Stop", Launch_Ramp_End, 1, , , ""
- End Sub
- Sub PinEvent_Plunger_Pull
- PinMechSound "mech_Plunger_Pull_1", PlungerLaneTrigger, 1, , , ""
- End Sub
- Sub PinEvent_Plunger_Release
- PinMechSound "mech_Plunger_Release_No_Ball", PlungerLaneTrigger, 1, , , ""
- End Sub
- ' ################## END OF MECHANICNAL SOUNDS AND FEEDBACK ####################
- ' ########## PinMechSound ##########
- ' this command is used to output mechanical sounds to either FP, or to PUP for SSF, and also to trigger DOF for feedback (cabinets)
- ' there is no benefit to using this with other table mods (it's what I use for my PinEvent mods)
- Dim usePUP: Dim usePUP_SSF: Dim PUPStatus: Dim useFP_Sounds
- ' DO NOT MODIFY - This version of the table only supports FP Sounds for mechanical feedback!
- useFP_Sounds = true
- usePUP = false: usePUP_SSF = false : PUPStatus = false
- ' sound = mechanical / feedback sound
- ' fp_item = FP table item name
- ' volume = between 0 to 1.0 (FP)
- ' dID = DOF Exxx trigger or PuP Exxx trigger from PuP-Pack
- ' dValue = DOF trigger action. 0 = off, 1 = on, 2 = pulse
- ' dType = type of feedback / sound
- Dim PUPSoundZ : PUPSoundZ = 1
- Dim PUPSoundVol : PUPSoundVol = 100
- Dim TableWidth_FP : TableWidth_FP = xBAM.Table.width
- Dim TableLength_FP : TableLength_FP = xBAM.Table.length
- Sub PinMechSound(sound,fp_item,volume,dID,dValue,dType)
- AddDebugText "Item: " & fp_item.Name
- Dim PUPSoundX : PUPSoundX = ((fp_item.x/TableWidth_FP)*20)-10
- Dim PUPSoundY : PUPSoundY = ((fp_item.y/TableLength_FP)*10)*-1
- If (useFP_Sounds = true) then
- playsound sound,volume : AddDebugText "playsound: "& sound
- End If
- If (usePUP_SSF = true and PUPStatus = true) then
- PuPlayer.PuPSound sound&".wav",PUPSoundX,PUPSoundZ,PUPSoundY,PUPSoundVol,"" : AddDebugText "PuPSound: "& sound
- end if
- End Sub
- 'Example: PinMechSound "mech_FlipperL", Left_Flipper, 1.0, 102, 1, "flipper"
- ' ##########################################################################################
- ' Define any Constants
- Const constMaxPlayers = 1 ' Maximum number of players per game (between 1 and 4)
- Const constBallSaverTime = 5000 ' Time in which a free ball is given if it lost very quickly
- ' Set this to 0 if you don't want this feature
- Const constMaxMultiplier = 6 ' Defines the maximum bonus multiplier level
- ' Define Global Variables
- '
- Dim PlayersPlayingGame ' number of players playing the current game
- Dim CurrentPlayer ' current player (1-4) playing the game
- Dim BonusPoints(4) ' Bonus Points for the current player
- Dim BonusMultiplier(4) ' Bonus Multiplier for the current player
- Dim BallsRemaining(4) ' Balls remaining to play (inclusive) for each player
- Dim ExtraBallsAwards(4) ' number of EB's out-standing (for each player)
- ' Define Game Control Variables
- Dim LastSwitchHit ' Id of last switch hit
- Dim BallsOnPlayfield ' number of balls on playfield (multiball exclusive)
- Dim BallsInLock ' number of balls in multi-ball lock
- ' Define Game Flags
- Dim bFreePlay ' Either in Free Play or Handling Credits
- Dim bOnTheFirstBall ' First Ball (player one). Used for Adding New Players
- Dim bBallInPlungerLane ' is there a ball in the plunger lane
- Dim bBallSaverActive ' is the ball saver active
- Dim bMultiBallMode ' multiball mode active ?
- Dim bEnteringAHighScore ' player is entering their name into the high score table
- ' *********************************************************************
- ' ** **
- ' ** Future Pinball Defined Script Events **
- ' ** **
- ' *********************************************************************
- ' The Method Is Called Immediately the Game Engine is Ready to
- ' Start Processing the Script.
- '
- Sub FuturePinball_BeginPlay()
- ' seed the randomiser (rnd(1) function)
- Randomize
- ' initalise the player display reel to the last known player scores
- ' We want the player to put in credits (Change this
- bFreePlay = FALSE
- ' kill the last switch hit (this this variable is very usefull for game control)
- set LastSwitchHit = DummyTrigger
- ' initialse any other flags
- bOnTheFirstBall = FALSE
- bEnteringAHighScore = FALSE
- BallsOnPlayfield = 0
- BallsInLock = 0
- Targetkicker.createcaptiveball()
- EndOfGame()
- startattractmode()
- nvcredits = nvcredits - nvcredits
- End Sub
- Sub Tablereset()
- extraballlit = false
- extraballislit = false
- displayint = false
- maintext.flushqueue()
- pinktext.flushqueue()
- bluetext.flushqueue()
- maintext2.flushqueue()
- pinktext2.flushqueue()
- bluetext2.flushqueue()
- mainseq.stopplay()
- mainseq2.stopplay()
- blueseq.stopplay()
- pinkseq.stopplay()
- enterblue = true
- bluearrow.state=bulbon
- pinkarrow.state=bulboff
- enterpink = false
- leftkick = false
- rightkick = true
- firstballoverride = true
- locklit = false
- resetlock
- balllockleft = false
- balllockright = false
- multiballlit = false
- quickmballlit = false
- song = 1
- playsong()
- playintro()
- screenattract.enabled = false
- advxleft = false
- advxright = false
- lightkickbackleft = false
- lightkickbackright = false
- lightkickback()
- rightkicklight.state = bulbon
- leftlooptarget.popdown()
- Rightlooptarget.popdown()
- Resetbumpers()
- nvscore(currentplayer) = nvscore(currentplayer) - nvscore(currentplayer)
- bluescore = bluescore - bluescore
- pinkscore = pinkscore - pinkscore
- bluebonus = bluebonus - bluebonus
- pinkbonus = pinkbonus - pinkbonus
- mainbonus = mainbonus - mainbonus
- addscore(0)
- addscoreblue(0)
- addscorepink(0)
- resetlights()
- resetquickmball()
- resetextraball()
- bonusx = bonusx - bonusx
- ballslocked = ballslocked - ballslocked
- attracter.enabled = false
- messages.enabled = false
- message = message - message
- tie = false
- bluewins = false
- pinkwins = false
- end sub
- sub Resetlights()
- twoxlight.set bulboff, "10", 150
- threexlight.set bulboff, "10", 150
- fourxlight.set bulboff, "10", 150
- fivexlight.set bulboff, "10", 150
- leftkicklight.set bulboff, "10", 150
- shootagainlight.set bulboff, "10", 150
- advx1.set bulboff, "10", 150
- looplight1.set bulboff, "10", 150
- quickscorelight1.set bulboff, "10", 150
- advx2.set bulboff, "10", 150
- looplight2.set bulboff, "10", 150
- quickscorelight2.set bulboff, "10", 150
- Lock1.set bulboff, "10", 150
- Lock2.set bulboff, "10", 150
- Lock3.set bulboff, "10", 150
- Lock4.set bulboff, "10", 150
- Quick1.set bulboff, "10", 150
- Quick2.set bulboff, "10", 150
- Quick3.set bulboff, "10", 150
- Quick4.set bulboff, "10", 150
- Quick5.set bulboff, "10", 150
- advexballlight.set bulboff, "10", 150
- jackpotlight.set bulboff, "10", 150
- lightkickback1.set bulboff, "10", 150
- lightkickback2.set bulboff, "10", 150
- Quicksignbulb1.set bulboff, "10", 150
- Quicksignbulb2.set bulboff, "10", 150
- Quicksignbulb3.set bulboff, "10", 150
- Quicksignbulb4.set bulboff, "10", 150
- HundredK1.set bulboff, "10", 150
- Locklit1.set bulboff, "10", 150
- HundredK2.set bulboff, "10", 150
- Locklit2.set bulboff, "10", 150
- B1L.set bulboff, "10", 150
- B2L.set bulboff, "10", 150
- B3L.set bulboff, "10", 150
- B4L.set bulboff, "10", 150
- P1L.set bulboff, "10", 150
- P2L.set bulboff, "10", 150
- P3L.set bulboff, "10", 150
- P4L.set bulboff, "10", 150
- B5L.set bulboff, "10", 150
- B6L.set bulboff, "10", 150
- B7L.set bulboff, "10", 150
- B8L.set bulboff, "10", 150
- P5L.set bulboff, "10", 150
- P6L.set bulboff, "10", 150
- P7L.set bulboff, "10", 150
- P8L.set bulboff, "10", 150
- B9L.set bulboff, "10", 150
- B10L.set bulboff, "10", 150
- B11L.set bulboff, "10", 150
- B12L.set bulboff, "10", 150
- P9L.set bulboff, "10", 150
- P10L.set bulboff, "10", 150
- P11L.set bulboff, "10", 150
- P12L.set bulboff, "10", 150
- bulb31.set bulboff, "10", 150
- bulb32.set bulboff, "10", 150
- extraballlight.set bulboff, "10", 150
- skill1.set bulboff, "10", 150
- skill2.set bulboff, "10", 150
- skill3.set bulboff, "10", 150
- bumper1.state = bulboff
- bumper2.state = bulboff
- bumper3.state = bulboff
- end sub
- ' This Method is Called when the user has exited the Game Player. It should
- ' save any RAM variables that need to be persistant.
- '
- Sub FuturePinball_EndPlay()
- DOFClose()
- End Sub
- ' The User Has Pressed A Key on the Keyboard..
- '
- Sub FuturePinball_KeyPressed(ByVal KeyCode)
- If (KeyCode = 45) Then GI_ON: Inserts_ALL_ON: Inserts_Brightness_GION: GI_White
- If (KeyCode = 47) Then GI_OFF: Inserts_Brightness_GIOFF
- If (KeyCode = 48) Then
- Select Case RandomNumber(3)
- Case 1: GI_ON: Inserts_ALL_ON: Inserts_Brightness_GION: GI_White
- Case 2: GI_ON: Inserts_ALL_ON: Inserts_Brightness_GION: GI_Blue_Pink
- Case 3: GI_ON: Inserts_ALL_ON: Inserts_Brightness_GION: GI_Blue_red
- End Select
- end if
- 'AddDebugText "KeyCode = " & KeyCode
- 'AddDebugText "Titled = " & fpTilted
- '
- ' Process any keys which are valid at all times
- If (KeyCode = GetKeyCode(Special1Key)) Then GI_Color_Preset_Change
- If (KeyCode = GetKeyCode(Special2Key)) Then GI_Brightness_Change
- ' The Player has Inserted a Coin
- If (KeyCode = GetKeyCode(InsertCoinKey)) Then
- 'PlaySound "CoinIn"
- PinEvent_CoinIn_Sound
- playmusic 8, "sound 8", false
- nvCredits = nvCredits + 1
- If (fpGameInPlay = false) then
- playpressstart()
- sattract = 1
- screenattract.enabled = true
- mainseq.updateinterval = 50
- Mainseq.Play SeqMiddleOutHorizOn, 30
- GI_ON
- Displayinterrupt()
- maintext.flushqueue()
- bluetext.flushqueue()
- pinktext.flushqueue()
- Maintext.queuetext "Credits " & nvcredits , sescrollupover, 100
- bluetext.text = " "
- pinktext.text = " "
- maintext2.flushqueue()
- bluetext2.flushqueue()
- pinktext2.flushqueue()
- Maintext2.queuetext "Credits " & nvcredits , sescrollupover, 100
- bluetext2.text = " "
- pinktext2.text = " "
- message = message - message
- end if
- 'AddDebugText "Insert Coin, Credits = " & nvCredits
- ' If not Tilted, then give some feed back to the player
- If (fpTilted = FALSE) Then
- ' Flash the Slingshot Bulbs. This is rather Common on Pinball machines
- ' though you can do anything at this point
- GIflash()
- ' Maybe play a sound at this point or put something on the display
- End If
- End If
- ' The Player is Pulling back the Plunger
- If (KeyCode = GetKeyCode(PlungerKey)) Then
- Plunger.Pull
- PinEvent_Plunger_Pull
- If bBallinplungerlane = true then
- playmusic 8, "sound26", false
- end if
- End If
- '
- ' Process The Next set of keys depeding of wether there is a game in progress or not
- '
- ' Is A Game in Progress?
- If (fpGameInPlay = TRUE) Then
- ' and not Tilted ?
- If (fpTilted = FALSE) Then
- ' If the Left Flipper Key Has Been Press, Activate The Left Flipper(s)
- If (KeyCode = GetKeyCode(LeftFlipperKey)) Then
- LeftFlipper.SolenoidOn
- LeftFlipper2.SolenoidOn
- LeftFlipper3.SolenoidOn
- LeftFlipper4.SolenoidOn
- 'PlaySound "Flipper"
- PinEvent_Left_Flipper_On
- if kickbacklit = true then
- Rightkick = true
- Leftkick = false
- Rightkicklight.state=bulbon
- Leftkicklight.state=bulboff
- end if
- End If
- ' If the Right Flipper Key Has Been Press, Activate The Right Flipper(s)
- If (KeyCode = GetKeyCode(RightFlipperKey)) Then
- RightFlipper.SolenoidOn
- RightFlipper2.SolenoidOn
- RightFlipper3.SolenoidOn
- RightFlipper4.SolenoidOn
- 'PlaySound "Flipper"
- PinEvent_Right_Flipper_On
- If kickbacklit = true then
- Rightkick = false
- Leftkick = true
- Rightkicklight.state=bulboff
- Leftkicklight.state=bulbon
- end if
- End If
- ' Another player starting?
- If (KeyCode = GetKeyCode(StartGameKey)) Then
- ' must be less than max players and must be on the the very first ball of the game
- If ((PlayersPlayingGame < constMaxPlayers) And (bOnTheFirstBall = TRUE)) Then
- ' free play or credits
- If (bFreePlay = TRUE) Then
- ' add the extra player
- PlayersPlayingGame = PlayersPlayingGame + 1
- 'AddDebugText "Extra Player (Free Play)" & PlayersPlayingGame
- ' Update the stats
- nvTotalGamesPlayed = nvTotalGamesPlayed + 1
- Else
- If (nvCredits > 0) then
- PlayersPlayingGame = PlayersPlayingGame + 1
- 'AddDebugText "Extra Player (Credits)" & PlayersPlayingGame
- ' update the stats
- nvTotalGamesPlayed = nvTotalGamesPlayed + 1
- nvCredits = nvCredits - 1
- Else
- ' Not Enough Credits to start a game.
- ' Maybe Play a Sound or put "Insert Coin" on a display
- End If
- End If
- End If
- End If
- End If ' If (fpTilted)
- Else ' If (fpGameInPlay)
- ' there isn't a game in play (we are in the attract mode)
- ' wait for the start key to be pressed and start a new game
- If (KeyCode = GetKeyCode(StartGameKey)) Then
- ' Free Play Mode ?
- If (bFreePlay = TRUE) Then
- ' Yep. Only allow a game to Start if there are no balls on the playfield.
- ' This can happen if the player starts a game too quick after finishing the
- ' last game and the machine is ejecting any locked balls.
- If (BallsOnPlayfield = 0) Then
- ' A Game is now in progress, reset the table for a new Game
- ResetForNewGame()
- End If
- Else
- If (nvCredits = 0) then
- Displayinterrupt()
- playmusic 2, "sound63", false
- maintext.flushqueue()
- bluetext.flushqueue()
- pinktext.flushqueue()
- Maintext.queuetext " Insert Coin ", sescrollupover, 100
- bluetext.text = " "
- pinktext.text = " "
- maintext2.flushqueue()
- bluetext2.flushqueue()
- pinktext2.flushqueue()
- Maintext2.queuetext " Insert Coin ", sescrollupover, 100
- bluetext2.text = " "
- pinktext2.text = " "
- message = message - message
- end if
- ' paying by credits, do we have any ?
- If (nvCredits > 0) Then
- ' Yep. Only allow a game to start if there are no balls on the playfield
- If (BallsOnPlayfield = 0) Then
- ' remove a credit
- nvCredits = nvCredits - 1
- ' much the same as above
- ResetForNewGame()
- End If
- Else
- ' Not Enough Credits to start a game.
- ' Maybe Play a Sound or put "Insert Coin" on a display
- End If
- End If
- End If
- End If ' If (fpGameInPlay)
- End Sub
- dim kickbacklit
- ' The User Has Released A Key on the Keyboard..
- '
- Sub FuturePinball_KeyReleased(ByVal KeyCode)
- '
- ' Process any keys which are valid at all times
- '
- ' The Player has released the Plunger, Let it go..
- If (KeyCode = GetKeyCode(PlungerKey)) Then
- Plunger.LetGo
- 'PlaySound "PlungerRelease"
- PinEvent_Plunger_Release
- End If
- '
- ' Process The Next set of keys depeding of wether there is a game in progress or not
- '
- ' Is A Game in Progress?
- If (fpGameInPlay = TRUE) Then
- ' and not tilted
- If (fpTilted = FALSE) Then
- ' The Left Flipper Key has been released, Turn Off the Left Flipper(s)
- If (KeyCode = GetKeyCode(LeftFlipperKey)) Then
- LeftFlipper.SolenoidOff
- LeftFlipper2.SolenoidOff
- LeftFlipper3.SolenoidOff
- LeftFlipper4.SolenoidOff
- PinEvent_Left_Flipper_Off
- End If
- ' The Right Flipper Key has been released, Turn Off the Right Flipper(s)
- If (KeyCode = GetKeyCode(RightFlipperKey)) Then
- RightFlipper.SolenoidOff
- RightFlipper2.SolenoidOff
- RightFlipper3.SolenoidOff
- RightFlipper4.SolenoidOff
- PinEvent_Right_Flipper_Off
- End If
- End If
- End If
- End Sub
- ' The User Has Paused The Game..
- '
- Sub FuturePinball_Paused()
- End Sub
- ' The User Has UnPaused (Resumed) The Game..
- '
- Sub FuturePinball_UnPaused()
- End Sub
- ' The Played has Nudged the Table a little too hard/much and a Warning
- ' must be given to the player
- '
- Sub FuturePinball_TiltWarning(ByVal Warnings)
- 'AddDebugText "Tilt Warning" & Warnings
- 'PlaySound "Tilt"
- PinEvent_Nudge
- ' play a sound at this point and put something on a display
- End Sub
- ' The Player has tilted the machine (Too Many Warnings)
- '
- Sub FuturePinball_Tilted()
- 'AddDebugText "**Tilted**"
- ' play a sound
- PlaySound "Tilt"
- stopmusic 1
- stopmusic 2
- stopmusic 3
- stopmusic 4
- stopmusic 5
- stopmusic 6
- stopmusic 7
- stopmusic 8
- advx1.state = bulboff
- advx2.state = bulboff
- advexballlight.state = bulboff
- lightkickback1.state = bulboff
- lightkickback2.state = bulboff
- bluebonus = bluebonus - bluebonus
- pinkbonus = pinkbonus - pinkbonus
- mainbonus = mainbonus - mainbonus
- displayint = false
- resetalltargets()
- tilttimer.enabled = true
- ' ensure that the flippers are down (as the keys won't work from now on)
- RightFlipper.SolenoidOff
- RightFlipper2.SolenoidOff
- RightFlipper3.SolenoidOff
- RightFlipper4.SolenoidOff
- LeftFlipper.SolenoidOff
- LeftFlipper2.SolenoidOff
- LeftFlipper3.SolenoidOff
- LeftFlipper4.SolenoidOff
- PinEvent_Left_Flipper_Off
- PinEvent_Right_Flipper_Off
- ' you may wish to turn off any lights at this point. (The Light Sequencer
- ' will make this very easy)
- ' start the tilt recovery timer which waits until all balls have drained
- ' before doing the end of ball sequence (or end of game)
- TiltRecoveryTimer.Interval = 2000
- TiltRecoveryTimer.Enabled = TRUE
- End Sub
- sub tilttimer_expired()
- stopmusic 1
- stopmusic 2
- stopmusic 3
- stopmusic 4
- stopmusic 5
- stopmusic 6
- stopmusic 7
- stopmusic 8
- mainseq.stopplay()
- mainseq2.stopplay()
- blueseq.stopplay()
- pinkseq.stopplay()
- maintext.flushqueue()
- bluetext.flushqueue()
- pinktext.flushqueue()
- maintext2.flushqueue()
- bluetext2.flushqueue()
- pinktext2.flushqueue()
- maintext.text = "tilttilttilttilt"
- bluetext.text = " "
- pinktext.text = " "
- maintext2.text = "tilttilttilttilt"
- bluetext2.text = " "
- pinktext2.text = " "
- end sub
- ' A Music Channel has finished Playing.
- '
- ' Channel is set to the channel number that has finished.
- '
- Sub FuturePinball_MusicFinished(ByVal Channel)
- End Sub
- ' High Score entry has been completed by the player.
- '
- ' Position is set to the position in the high score table (1 - 4)
- ' if it is set to 0 then there was no new High Score
- '
- ' Special is set to 1 if the Special High Score was beaten
- '
- Sub FuturePinball_NameEntryComplete(ByVal Position, ByVal Special)
- ' has the player beaten a high score
- If (Position <> 0) Then
- ' maybe award something (like an extra credit) based on the high score position
- End If
- ' has the player beaten the special score (if applicable)
- If (Special <> 0) Then
- End If
- bEnteringAHighScore = FALSE
- LookAtPlayfield()
- gameover()
- ' check to see if there are any more players playing to the current game
- EndOfBallComplete()
- End Sub
- ' *********************************************************************
- ' ** **
- ' ** User Defined Script Events **
- ' ** **
- ' *********************************************************************
- ' Initialise the Table for a new Game
- '
- Sub ResetForNewGame()
- Dim i
- 'AddDebugText "ResetForNewGame"
- ' get Future Pinball to zero out the nvScore (and nvSpecialScore) Variables
- ' aswell and ensure the camera is looking in the right direction.
- ' this also Sets the fpGameInPlay flag
- BeginGame()
- Tablereset()
- ' increment the total number of games played
- nvTotalGamesPlayed = nvTotalGamesPlayed + 1
- ' Start with player 1
- CurrentPlayer = 1
- ' Single player (for now, more can be added in later)
- PlayersPlayingGame = 1
- ' We are on the First Ball (for Player One)
- bOnTheFirstBall = TRUE
- ' initialise all the variables which are used for the duration of the game
- ' (do all players incase any new ones start a game)
- For i = 1 To constMaxPlayers
- ' Bonus Points for the current player
- BonusPoints(i) = 0
- ' Initial Bonus Multiplier
- BonusMultiplier(i) = 1
- ' Balls Per Game
- BallsRemaining(i) = nvBallsPerGame
- ' Number of EB's out-standing
- ExtraBallsAwards(i) = 0
- Next
- ' initialise any other flags
- bMultiBallMode = FALSE
- ' you may wish to start some music, play a sound, do whatever at this point
- ' set up the start delay to handle any Start of Game Attract Sequence
- FirstBallDelayTimer.Interval = 500
- FirstBallDelayTimer.Enabled = TRUE
- End Sub
- sub lightkickback()
- if kickbacklit = false then
- kickbacklit = true
- rightkick = true
- Rightkicklight.state=bulbon
- end if
- end sub
- ' This Timer is used to delay the start of a game to allow any attract sequence to
- ' complete. When it expires it creates a ball for the player to start playing with
- '
- Sub FirstBallDelayTimer_Expired()
- ' stop the timer
- FirstBallDelayTimer.Enabled = FALSE
- ' reset the table for a new ball
- ResetForNewPlayerBall()
- ' create a new ball in the shooters lane
- CreateNewBall()
- End Sub
- ' (Re-)Initialise the Table for a new ball (either a new ball after the player has
- ' lost one or we have moved onto the next player (if multiple are playing))
- '
- Sub ResetForNewPlayerBall()
- ' make sure the correct display is upto date
- AddScore(0)
- ' set the current players bonus multiplier back down to 1X
- SetBonusMultiplier(1)
- ' reset any drop targets, lights, game modes etc..
- End Sub
- Dim firstballoverride
- ' Create a new ball on the Playfield
- '
- Sub CreateNewBall()
- GI_ON
- ' create a ball in the plunger lane kicker.
- PlungerKicker.CreateBall
- Resetlooptriggers()
- Ballindrain = false
- If bonusx = 0 then
- twoxlight.state = bulboff
- threexlight.state = bulboff
- fourxlight.state = bulboff
- fivexlight.state = bulboff
- end if
- ' There is a (or another) ball on the playfield
- BallsOnPlayfield = BallsOnPlayfield + 1
- ' kick it out..
- PlungerKicker.SolenoidPulse
- PinEvent_PlungerKicker
- skillshottimer.enabled = true
- If firstballoverride = false then
- Playballreleasesound()
- If (locklit = false) and (quickmultiballon = false) then
- Song = 7
- playsong()
- end if
- If (locklit = true) and (quickmultiballon = false) then
- Song = 6
- playsong()
- end if
- If Quickmultiballon = true then
- Song = 4
- playsong()
- end if
- End if
- End Sub
- Sub entrancetrigger_hit()
- addbonus(2000)
- addbonusblue(1000)
- addbonuspink(1000)
- firstballoverridetimer.enabled = true
- awardskillshot()
- If firstballoverride = false then
- If (locklit = false) and (quickmultiballon = false) then
- playmusic 1, "bvp main theme restart", true
- end if
- If (locklit = true) and (quickmultiballon = false) then
- Song = 2
- playsong()
- end if
- If Quickmultiballon = true then
- Song = 5
- playsong()
- centerholetimer.enabled = true
- ksoundtimer.enabled = true
- quickmultiballsafety = false
- quickmultiballsafetytimer.enabled = false
- If enterpink = true then
- activestrobe1 = 11
- activestrobe2 = 8
- end if
- If enterblue = true then
- activestrobe1 = 11
- activestrobe2 = 3
- end if
- end if
- end if
- end sub
- sub quickmultiballsafetytimer_expired()
- quickmultiballsafetytimer.enabled = false
- If quickmultiballsafety = true then
- centerholetimer.enabled = true
- quickmultiballsafety = false
- ksoundtimer.enabled = true
- If enterpink = true then
- activestrobe1 = 11
- activestrobe2 = 8
- end if
- If enterblue = true then
- activestrobe1 = 11
- activestrobe2 = 3
- end if
- If Quickmultiballon = true then
- Song = 5
- playsong()
- end if
- end if
- end sub
- sub firstballoverridetimer_expired()
- firstballoverridetimer.enabled = false
- firstballoverride = false
- end sub
- ' The Player has lost his ball (there are no more balls on the playfield).
- ' Handle any bonus points awarded
- '
- dim ballindrain
- Sub EndOfBall()
- GI_OFF
- ballindrain = true
- If (fptilted = false) then
- stopmusic 2
- stopmusic 3
- stopmusic 4
- stopmusic 5
- stopmusic 6
- stopmusic 7
- advx1.state = bulboff
- advx2.state = bulboff
- advexballlight.state = bulboff
- lightkickback1.state = bulboff
- lightkickback2.state = bulboff
- mainseq.stopplay()
- mainseq2.stopplay()
- blueseq.stopplay()
- pinkseq.stopplay()
- maintext.flushqueue()
- bluetext.flushqueue()
- pinktext.flushqueue()
- maintext2.flushqueue()
- bluetext2.flushqueue()
- pinktext2.flushqueue()
- displayint = false
- addscore(0)
- addscoreblue(0)
- addscorepink(0)
- If locklit = true then
- playmusic 1, "bvp locklit ball lost", false
- end if
- if locklit = false then
- playmusic 1, "bvp main ball lost", false
- end if
- end if
- Dim BonusDelayTime
- 'AddDebugText "EndOfBall"
- ' the first ball has been lost. From this point on no new players can join in
- bOnTheFirstBall = FALSE
- ' only process any of this if the table is not tilted. (the tilt recovery
- ' mechanism will handle any extra balls or end of game)
- If (fpTilted = FALSE) Then
- Dim AwardPoints
- ' add in any bonus points (multipled by the bunus multiplier)
- AwardPoints = BonusPoints(CurrentPlayer) * BonusMultiplier(CurrentPlayer)
- AddScore(AwardPoints)
- Awardbonus()
- 'AddDebugText "Bonus Points = " & AwardPoints
- ' you may wish to do some sort of display effects which the bonus is
- ' being added to the players score
- ' add a bit of a delay to allow for the bonus points to be added up
- If (ballsremaining(currentplayer) > 1) or (extraball = true) then
- If bonusx = 0 then
- BonusDelayTime = 7000
- end if
- If bonusx = 1 then
- BonusDelayTime = 8000
- end if
- If bonusx = 2 then
- BonusDelayTime = 9000
- end if
- If bonusx = 3 then
- BonusDelayTime = 10000
- end if
- If bonusx = 4 then
- BonusDelayTime = 11000
- end if
- end if
- If (ballsremaining(currentplayer) = 1) and (extraball = false) then
- If bonusx = 0 then
- BonusDelayTime = 8000
- end if
- If bonusx = 1 then
- BonusDelayTime = 9000
- end if
- If bonusx = 2 then
- BonusDelayTime = 10000
- end if
- If bonusx = 3 then
- BonusDelayTime = 11000
- end if
- If bonusx = 4 then
- BonusDelayTime = 12000
- end if
- end if
- Else
- ' no bonus, so move to the next state quickly
- BonusDelayTime = 20
- End If
- If fptilted = true then
- BonusDelayTime = 20
- EndOfBallTimer.Interval = BonusDelayTime
- EndOfBallTimer.Enabled = TRUE
- addscoreblue(0)
- addscorepink(0)
- end if
- ' start the end of ball timer which allows you to add a delay at this point
- EndOfBallTimer.Interval = BonusDelayTime
- EndOfBallTimer.Enabled = TRUE
- End Sub
- Dim Bonus
- Dim MBonus
- Dim BlueMBonus
- Dim PinkMBonus
- Dim Bonuscounton
- sub awardbonus()
- Bonusshow.enabled = true
- Mbonus = MainBonus
- BlueMBonus = BlueBonus
- PinkMBonus = PinkBonus
- bonuscounton = true
- shutoffmainplay()
- end sub
- sub bonusshow_expired()
- Bonus = bonus + 1
- If bonus = 20 then
- playmusic 2, "sound41", false
- Maintext.text = "Outhole Bonus"
- bluetext.text = (bluebonus)
- Maintext2.text = "Outhole Bonus"
- bluetext2.text = (bluebonus)
- end if
- If bonus = 25 then
- playmusic 2, "sound38", false
- pinktext.text = (pinkbonus)
- pinktext2.text = (pinkbonus)
- end if
- If (Bonus = 30) and (BonusX = 0) then
- countbonus()
- end if
- If (Bonus = 30) and (BonusX = 1) then
- Addbonus(Mbonus)
- Addbonusblue(BlueMBonus)
- AddBonuspink(PinkMBonus)
- bluetext.text = (bluebonus)
- pinktext.text = (pinkbonus)
- bluetext2.text = (bluebonus)
- pinktext2.text = (pinkbonus)
- playmusic 2, "sound53", false
- twoxlight.flashforms 500, 50, bulbon
- maintext.text = "22222222XXXXXXXX"
- maintext2.text = "22222222XXXXXXXX"
- screen.frame 98
- end if
- If (Bonus = 35) and (BonusX = 1) then
- countbonus()
- end if
- If (Bonus = 30) and (BonusX = 2) then
- Addbonus(Mbonus)
- Addbonusblue(BlueMBonus)
- AddBonuspink(PinkMBonus)
- bluetext.text = (bluebonus)
- pinktext.text = (pinkbonus)
- bluetext2.text = (bluebonus)
- pinktext2.text = (pinkbonus)
- playmusic 2, "sound53", false
- twoxlight.flashforms 500, 50, bulbon
- maintext.text = "22222222XXXXXXXX"
- maintext2.text = "22222222XXXXXXXX"
- screen.frame 98
- end if
- If (Bonus = 35) and (BonusX = 2) then
- Addbonus(Mbonus)
- Addbonusblue(BlueMBonus)
- AddBonuspink(PinkMBonus)
- bluetext.text = (bluebonus)
- pinktext.text = (pinkbonus)
- bluetext2.text = (bluebonus)
- pinktext2.text = (pinkbonus)
- playmusic 3, "sound53a", false
- stopmusic 2
- threexlight.flashforms 500, 50, bulbon
- maintext.text = "33333333XXXXXXXX"
- maintext2.text = "33333333XXXXXXXX"
- screen.frame 121
- end if
- If (Bonus = 40) and (BonusX = 2) then
- countbonus()
- end if
- If (Bonus = 30) and (BonusX = 3) then
- Addbonus(Mbonus)
- Addbonusblue(BlueMBonus)
- AddBonuspink(PinkMBonus)
- bluetext.text = (bluebonus)
- pinktext.text = (pinkbonus)
- bluetext2.text = (bluebonus)
- pinktext2.text = (pinkbonus)
- playmusic 2, "sound53", false
- twoxlight.flashforms 500, 50, bulbon
- maintext.text = "22222222XXXXXXXX"
- maintext2.text = "22222222XXXXXXXX"
- screen.frame 98
- end if
- If (Bonus = 35) and (BonusX = 3) then
- Addbonus(Mbonus)
- Addbonusblue(BlueMBonus)
- AddBonuspink(PinkMBonus)
- bluetext.text = (bluebonus)
- pinktext.text = (pinkbonus)
- bluetext2.text = (bluebonus)
- pinktext2.text = (pinkbonus)
- playmusic 3, "sound53a", false
- threexlight.flashforms 500, 50, bulbon
- maintext.text = "33333333XXXXXXXX"
- maintext2.text = "33333333XXXXXXXX"
- screen.frame 121
- end if
- If (Bonus = 40) and (BonusX = 3) then
- Addbonus(Mbonus)
- Addbonusblue(BlueMBonus)
- AddBonuspink(PinkMBonus)
- bluetext.text = (bluebonus)
- pinktext.text = (pinkbonus)
- bluetext2.text = (bluebonus)
- pinktext2.text = (pinkbonus)
- playmusic 2, "sound53", false
- fourxlight.flashforms 500, 50, bulbon
- maintext.text = "44444444XXXXXXXX"
- maintext2.text = "44444444XXXXXXXX"
- screen.frame 144
- end if
- If (Bonus = 45) and (BonusX = 3) then
- countbonus()
- end if
- If (Bonus = 30) and (BonusX > 3) then
- Addbonus(Mbonus)
- Addbonusblue(BlueMBonus)
- AddBonuspink(PinkMBonus)
- bluetext.text = (bluebonus)
- pinktext.text = (pinkbonus)
- bluetext2.text = (bluebonus)
- pinktext2.text = (pinkbonus)
- playmusic 2, "sound53", false
- twoxlight.flashforms 500, 50, bulbon
- maintext.text = "22222222XXXXXXXX"
- maintext2.text = "22222222XXXXXXXX"
- screen.frame 98
- end if
- If (Bonus = 35) and (BonusX > 3) then
- Addbonus(Mbonus)
- Addbonusblue(BlueMBonus)
- AddBonuspink(PinkMBonus)
- bluetext.text = (bluebonus)
- pinktext.text = (pinkbonus)
- bluetext2.text = (bluebonus)
- pinktext2.text = (pinkbonus)
- playmusic 3, "sound53a", false
- threexlight.flashforms 500, 50, bulbon
- maintext.text = "33333333XXXXXXXX"
- maintext2.text = "33333333XXXXXXXX"
- screen.frame 121
- end if
- If (Bonus = 40) and (BonusX > 3) then
- Addbonus(Mbonus)
- Addbonusblue(BlueMBonus)
- AddBonuspink(PinkMBonus)
- bluetext.text = (bluebonus)
- pinktext.text = (pinkbonus)
- bluetext2.text = (bluebonus)
- pinktext2.text = (pinkbonus)
- playmusic 2, "sound53", false
- fourxlight.flashforms 500, 50, bulbon
- maintext.text = "44444444XXXXXXXX"
- maintext2.text = "44444444XXXXXXXX"
- screen.frame 144
- end if
- If (Bonus = 45) and (BonusX > 3) then
- Addbonus(Mbonus)
- Addbonusblue(BlueMBonus)
- AddBonuspink(PinkMBonus)
- bluetext.text = (bluebonus)
- pinktext.text = (pinkbonus)
- bluetext2.text = (bluebonus)
- pinktext2.text = (pinkbonus)
- playmusic 3, "sound53a", false
- fivexlight.flashforms 500, 50, bulbon
- maintext.text = "55555555XXXXXXXX"
- maintext2.text = "55555555XXXXXXXX"
- screen.frame 167
- end if
- If (Bonus = 50) and (BonusX > 3) then
- countbonus()
- end if
- end sub
- dim count
- sub countbonus()
- shutoffmainplay()
- counter.enabled = true
- addscore(mainbonus)
- addscoreblue(bluebonus)
- addscorepink(pinkbonus)
- bonusshow.enabled = false
- Bonus = Bonus - bonus
- playmusic 1, "bonus_count", false
- playbonuscount()
- If bonusx > 3 then
- bonusx = bonusx - bonusx
- end if
- end sub
- sub counter_expired()
- count = count + 1
- If (bluebonus >= 5000) or (pinkbonus >= 5000) or (count > 200) then
- If bluebonus > 100 then
- Bluebonus = bluebonus - 100
- end if
- if bluebonus =< 100 then
- bluebonus = bluebonus - bluebonus
- end if
- If pinkbonus > 100 then
- pinkbonus = pinkbonus - 100
- end if
- if pinkbonus =< 100 then
- pinkbonus = pinkbonus - pinkbonus
- end if
- If (count > 200) and (bluebonus > 1000) then
- Bluebonus = bluebonus - 900
- bluetext.text = (bluebonus)
- bluetext2.text = (bluebonus)
- end if
- If (count > 200) and (pinkbonus > 1000) then
- Pinkbonus = Pinkbonus - 900
- pinktext.text = (pinkbonus)
- pinktext2.text = (pinkbonus)
- end if
- end if
- If (bluebonus < 5000) and (pinkbonus < 5000) and (count < 200) then
- If bluebonus > 10 then
- Bluebonus = bluebonus - 10
- end if
- if bluebonus =< 10 then
- bluebonus = bluebonus - bluebonus
- end if
- If pinkbonus > 10 then
- pinkbonus = pinkbonus - 10
- end if
- if pinkbonus =< 10 then
- pinkbonus = pinkbonus - pinkbonus
- end if
- end if
- bluetext.text = (bluebonus)
- pinktext.text = (pinkbonus)
- bluetext2.text = (bluebonus)
- pinktext2.text = (pinkbonus)
- If count = 250 then
- bonuscounton = false
- maintext.queuetext "Total = " & nvscore(currentplayer), seWipeRadarRight, 500
- maintext2.queuetext "Total = " & nvscore(currentplayer), seWipeRadarRight, 500
- addscoreblue(0)
- addscorepink(0)
- counter.enabled = false
- count = count - count
- pinkbonus = pinkbonus - pinkbonus
- bluebonus = bluebonus - bluebonus
- mainbonus = mainbonus - mainbonus
- end if
- end sub
- 'BonusX = BonusX + 1
- 'If BonusX = 1 Then
- ' twoxlight.state = bulbon
- 'end if
- 'If BonusX = 2 Then
- ' threexlight.state = bulbon
- 'end if
- 'If BonusX = 3 Then
- ' fourxlight.state = bulbon
- 'end if
- 'If BonusX = 4 Then
- ' fivexlight.state = bulbon
- 'end if
- ' The Timer which delays the machine to allow any bonus points to be added up
- ' has expired. Check to see if there are any extra balls for this player.
- ' if not, then check to see if this was the last ball (of the currentplayer)
- '
- Sub EndOfBallTimer_Expired()
- ' disable the timer
- EndOfBallTimer.Enabled = FALSE
- Resetalltargets()
- ' if were tilted, reset the internal tilted flag (this will also
- ' set fpTiltWarnings back to zero) which is useful if we are changing player LOL
- fpTilted = FALSE
- tilttimer.enabled = false
- ' has the player won an extra-ball ? (might be multiple outstanding)
- If (ExtraBallsAwards(CurrentPlayer) <> 0) Then
- 'AddDebugText "Extra Ball"
- ' yep got to give it to them
- ExtraBallsAwards(CurrentPlayer) = ExtraBallsAwards(CurrentPlayer) - 1
- ' if no more EB's then turn off any shoot again light
- If (ExtraBallsAwards(CurrentPlayer) = 0) Then
- ShootAgainLight.State = BulbOff
- resetextraball()
- End If
- ' You may wish to do a bit of a song and dance at this point
- ' Create a new ball in the shooters lane
- Extraballshow()
- Else ' no extra balls
- BallsRemaining(CurrentPlayer) = BallsRemaining(CurrentPlayer) - 1
- ' was that the last ball ?
- If (BallsRemaining(CurrentPlayer) <= 0) Then
- 'AddDebugText "No More Balls, High Score Entry"
- ' Submit the currentplayers score to the High Score system built into Future Pinball
- ' if they have gotten a high score then it will ask them for their initials. If not
- ' it will call the FuturePinball_NameEntryComplete right away
- bEnteringAHighScore = TRUE
- EnterHighScore(CurrentPlayer)
- Gameovertimer.enabled=true
- ' you may wish to play some music at this point
- Else
- ' not the last ball (for that player)
- ' if multiple players are playing then move onto the next one
- EndOfBallComplete()
- End If
- End If
- End Sub
- dim gameoversong
- sub gameovertimer_expired()
- gameovertimer.enabled = false
- If bEnteringAHighScore = true then
- LookAtBackbox()
- playmusic 1, "BVP Highscore", false
- end if
- If bEnteringAHighScore = false then
- Gameover()
- droptarget25.solenoidpulse(100)
- droptarget26.solenoidpulse(100)
- droptarget27.solenoidpulse(100)
- droptarget28.solenoidpulse(100)
- droptarget29.solenoidpulse(100)
- droptarget30.solenoidpulse(100)
- droptarget31.solenoidpulse(100)
- droptarget32.solenoidpulse(100)
- droptarget33.solenoidpulse(100)
- droptarget34.solenoidpulse(100)
- PinEvent_Drop_Targets_25to34_Reset
- gameoversong = gameoversong + 1
- if gameoversong = 1 then
- playmusic 1, "bvp gameover", false
- end if
- if gameoversong = 2 then
- playmusic 1, "bvp gameover 2", false
- gameoversong = gameoversong - gameoversong
- end if
- end if
- end sub
- sub gameover()
- logscores()
- startattractmode()
- end sub
- Sub extraballshow()
- esoundtimer.enabled=true
- maintext.flushqueue()
- maintext2.flushqueue()
- maintext.queuetext "shoot again", seblink, 1200
- maintext2.queuetext "shoot again", seblink, 1200
- playmusic 4, "sound15", false
- CreateNewBalltimer.enabled = true
- playshootagain()
- screeninterrupt()
- end sub
- dim esound
- sub esoundtimer_expired()
- esound = esound + 1
- If esound = 1 then
- playmusic 4, "sound15", false
- end if
- If esound = 2 then
- playmusic 4, "sound15", false
- end if
- If esound = 3 then
- playmusic 4, "sound15", false
- esoundtimer.enabled = false
- esound = esound - esound
- end if
- end sub
- ' This function is called when the end of bonus display
- ' (or high score entry finished) and it either end the game or
- ' move onto the next player (or the next ball of the same player)
- '
- Sub EndOfBallComplete()
- Dim NextPlayer
- 'AddDebugText "EndOfBall - Complete"
- ' are there multiple players playing this game ?
- If (PlayersPlayingGame > 1) Then
- ' then move to the next player
- NextPlayer = CurrentPlayer + 1
- ' are we going from the last player back to the first
- ' (ie say from player 4 back to player 1)
- If (NextPlayer > PlayersPlayingGame) Then
- NextPlayer = 1
- End If
- Else
- NextPlayer = CurrentPlayer
- End If
- 'AddDebugText "Next Player = " & NextPlayer
- ' is it the end of the game ? (all balls been lost for all players)
- If ((BallsRemaining(CurrentPlayer) <= 0) And (BallsRemaining(NextPlayer) <= 0)) Then
- ' you may wish to do some sort of Point Match free game award here
- ' generally only done when not in free play mode
- ' set the machine into game over mode
- EndOfGame()
- ' you may wish to put a Game Over message on the
- Else
- ' set the next player
- CurrentPlayer = NextPlayer
- ' make sure the correct display is upto date
- AddScore(0)
- ' reset the playfield for the new player (or new ball)
- ResetForNewPlayerBall()
- ' and create a new ball
- CreateNewBall()
- If kickbacklit = false then
- lightkickback()
- end if
- mainplay()
- End If
- End Sub
- ' This frunction is called at the End of the Game, it should reset all
- ' Drop targets, and eject any 'held' balls, start any attract sequences etc..
- Sub EndOfGame()
- 'AddDebugText "End Of Game"
- ' let Future Pinball know that the game has finished.
- ' This also clear the fpGameInPlay flag.
- EndGame()
- ' ensure that the flippers are down
- RightFlipper.SolenoidOff
- RightFlipper2.SolenoidOff
- RightFlipper3.SolenoidOff
- RightFlipper4.SolenoidOff
- LeftFlipper.SolenoidOff
- LeftFlipper2.SolenoidOff
- LeftFlipper3.SolenoidOff
- LeftFlipper4.SolenoidOff
- PinEvent_Left_Flipper_Off
- PinEvent_Right_Flipper_Off
- if balllockleft = true then
- leftdeckexit.destroyball
- ballsonplayfield = ballsonplayfield - 1
- end if
- if balllockright = true then
- rightdeckexit.destroyball
- ballsonplayfield = ballsonplayfield - 1
- end if
- ' turn off the reel bulbs
- ' set any lights for the attract mode
- ' you may wish to light any Game Over Light you may have
- End Sub
- ' The tilt recovery timer waits for all the balls to drain before continuing on
- ' as per normal
- '
- Sub TiltRecoveryTimer_Expired()
- ' disable the timer
- TiltRecoveryTimer.Enabled = FALSE
- ' if all the balls have been drained then..
- If (BallsOnPlayfield = 0) Then
- ' do the normal end of ball thing (this dosn't give a bonus if the table is tilted)
- 'EndOfBall()
- Else
- ' else retry (checks again in another second)
- 'TiltRecoveryTimer.Interval = 1000
- 'TiltRecoveryTimer.Enabled = TRUE
- End If
- End Sub
- ' Set any lights for the Attract Mode.
- '
- Sub SetAllLightsForAttractMode()
- startattractmode()
- End Sub
- sub startattractmode()
- shutoffmainplay()
- normalattract()
- Messages.enabled = true
- attracter.enabled=true
- screenattract.enabled = true
- Maintext.text = " game over "
- bluetext.text = " "
- pinktext.text = " "
- Maintext2.text = " game over "
- bluetext2.text = " "
- pinktext2.text = " "
- playgameover()
- end sub
- dim sattract
- sub screenattract_expired()
- sattract = sattract + 1
- If sattract = 1 then
- If nvcredits = 0 then
- playinsertcoin()
- end if
- if nvcredits > 0 then
- playpressstart()
- end if
- end if
- If sattract = 2 then
- playgameover()
- sattract = sattract - sattract
- end if
- end sub
- sub attracter_expired()
- mainseq2.updateinterval = 10
- mainSeq2.Play SeqUpOn, 50, 3
- end sub
- sub normalattract()
- bumper1.state = bulboff
- bumper2.state = bulboff
- bumper3.state = bulboff
- twoxlight.Set BulbBlink, "100000", 100
- threexlight.Set BulbBlink, "010001", 100
- fourxlight.Set BulbBlink, "001010", 100
- fivexlight.Set BulbBlink, "000100", 100
- shootagainlight.set bulbblink, "100100", 100
- leftkicklight.Set BulbBlink, "10000", 150
- advx1.Set BulbBlink, "01000", 150
- looplight1.Set BulbBlink, "00100", 150
- quickscorelight1.Set BulbBlink, "00010", 150
- rightkicklight.Set BulbBlink, "10000", 150
- advx2.Set BulbBlink, "01000", 150
- looplight2.Set BulbBlink, "00100", 150
- quickscorelight2.Set BulbBlink, "00010", 150
- Lock1.set bulbblink, "1110000000", 75
- Lock2.set bulbblink, "0001000001", 75
- Lock3.set bulbblink, "0000100010", 75
- Lock4.set bulbblink, "0000011100", 75
- Quick1.set bulbblink, "1111100000", 150
- Quick2.set bulbblink, "0111110000", 150
- Quick3.set bulbblink, "0011111000", 150
- Quick4.set bulbblink, "0001111100", 150
- Quick5.set bulbblink, "0000111110", 150
- bluearrow.set bulbblink, "10", 300
- pinkarrow.set bulbblink, "01", 300
- advexballlight.set bulbblink, "100", 175
- jackpotlight.set bulbblink, "010", 175
- lightkickback1.set bulbblink, "001", 175
- lightkickback2.set bulbblink, "001", 175
- Quicksignbulb1.set bulbblink, "10000", 150
- Quicksignbulb2.set bulbblink, "01000", 150
- Quicksignbulb3.set bulbblink, "00100", 150
- Quicksignbulb4.set bulbblink, "00010", 150
- HundredK1.set bulbblink, "10000", 100
- Locklit1.set bulbblink, "01000", 100
- HundredK2.set bulbblink, "00100", 100
- Locklit2.set bulbblink, "00010", 100
- B1L.set bulbblink, "1000", 100
- B2L.set bulbblink, "0100", 100
- B3L.set bulbblink, "0010", 100
- B4L.set bulbblink, "0001", 100
- P1L.set bulbblink, "0001", 100
- P2L.set bulbblink, "0010", 100
- P3L.set bulbblink, "0100", 100
- P4L.set bulbblink, "1000", 100
- B5L.set bulbblink, "1111000", 100
- B6L.set bulbblink, "0111100", 100
- B7L.set bulbblink, "0011110", 100
- B8L.set bulbblink, "0001111", 100
- P5L.set bulbblink, "0001111", 100
- P6L.set bulbblink, "0011110", 100
- P7L.set bulbblink, "0111100", 100
- P8L.set bulbblink, "1111000", 100
- B9L.set bulbblink, "1000", 100
- B10L.set bulbblink, "0100", 100
- B11L.set bulbblink, "0010", 100
- B12L.set bulbblink, "0001", 100
- P9L.set bulbblink, "0001", 100
- P10L.set bulbblink, "0010", 100
- P11L.set bulbblink, "0100", 100
- P12L.set bulbblink, "1000", 100
- bulb31.set bulbblink, "10", 75
- bulb32.set bulbblink, "10", 75
- extraballlight.set bulbblink, "01", 75
- skill1.set bulbblink, "11100", 100
- skill2.set bulbblink, "01110", 100
- skill3.set bulbblink, "00111", 100
- end sub
- dim message
- Sub messages_expired()
- If displayint = false then
- message = message + 1
- If Message = 1 then
- maintext.flushqueue()
- Maintext.QueueText "score " & (nvscore(currentplayer)), seWipeRadarright, 3000
- maintext2.flushqueue()
- Maintext2.QueueText "score " & (nvscore(currentplayer)), seWipeRadarright, 3000
- addscoreblue(0)
- addscorepink(0)
- end if
- If Message = 2 then
- Maintext.QueueText " Welcome to ", seWipeRadarright, 3000
- bluetext.QueueText " ", seWipeRadarLeft, 3000
- pinktext.QueueText " ", seWipeRadarright, 3000
- Maintext2.QueueText " Welcome to ", seWipeRadarright, 3000
- bluetext2.QueueText " ", seWipeRadarLeft, 3000
- pinktext2.QueueText " ", seWipeRadarright, 3000
- end if
- If Message = 3 then
- bluetext.QueueText "* Blue ", seWipeRadarright, 3000
- pinktext.QueueText " Pink *", seWipeRadarleft, 3000
- bluetext2.QueueText "* Blue ", seWipeRadarright, 3000
- pinktext2.QueueText " Pink *", seWipeRadarleft, 3000
- end if
- If Message = 4 then
- Maintext.QueueText " by Pinwizkid ", seWipeRadarright, 3000
- bluetext.QueueText " ", seWipeRadarLeft, 3000
- pinktext.QueueText " ", seWipeRadarright, 3000
- Maintext2.QueueText " by Pinwizkid ", seWipeRadarright, 3000
- bluetext2.QueueText " ", seWipeRadarLeft, 3000
- pinktext2.QueueText " ", seWipeRadarright, 3000
- end if
- If Message = 5 then
- Maintext.QueueText " BAM Edition ", seWipeRadarright, 3000
- bluetext.QueueText " ", seWipeRadarLeft, 3000
- pinktext.QueueText " ", seWipeRadarright, 3000
- Maintext2.QueueText " BAM Edition ", seWipeRadarright, 3000
- bluetext2.QueueText " ", seWipeRadarLeft, 3000
- pinktext2.QueueText " ", seWipeRadarright, 3000
- end if
- If Message = 6 then
- Maintext.QueueText " by TerryRed ", seWipeRadarright, 3000
- bluetext.QueueText " ", seWipeRadarLeft, 3000
- pinktext.QueueText " ", seWipeRadarright, 3000
- Maintext2.QueueText " by TerryRed ", seWipeRadarright, 3000
- bluetext2.QueueText " ", seWipeRadarLeft, 3000
- pinktext2.QueueText " ", seWipeRadarright, 3000
- end if
- If Message = 7 then
- Maintext.QueueText "The Standings - ", seWipeRadarright, 3000
- bluetext.QueueText nvR1, seWipeBarUp, 3000
- pinktext.QueueText nvR2, seWipeBarUp, 3000
- Maintext2.QueueText "The Standings - ", seWipeRadarright, 3000
- bluetext2.QueueText nvR1, seWipeBarUp, 3000
- pinktext2.QueueText nvR2, seWipeBarUp, 3000
- end if
- If message = 8 then
- Maintext.QueueText " Game over ", seWipeRadarright, 3000
- bluetext.QueueText " ", seWipeBarUp, 3000
- pinktext.QueueText " ", seWipeBarUp, 3000
- Maintext2.QueueText " Game over ", seWipeRadarright, 3000
- bluetext2.QueueText " ", seWipeBarUp, 3000
- pinktext2.QueueText " ", seWipeBarUp, 3000
- message = message - message
- end if
- end if
- end sub
- dim bluewins
- dim pinkwins
- dim tie
- Sub logscores()
- If (bluescore) > (pinkscore) then
- nvR1 = nvR1 + 1
- bluewins = true
- end if
- If (bluescore) < (pinkscore) then
- nvR2 = nvR2 + 1
- pinkwins = true
- end if
- If (bluescore) = (pinkscore) then
- tie = true
- end if
- end sub
- ' *********************************************************************
- ' ** **
- ' ** Drain / Plunger Functions **
- ' ** **
- ' *********************************************************************
- ' lost a ball ;-( check to see how many balls are on the playfield.
- ' if only one then decrement the remaining count and test for End of game
- ' if more than 1 ball (multi-ball) then kill of the ball but don't create
- ' a new one
- dim multiballon
- dim quickmultiballon
- '
- Sub Drain_Hit()
- ' Destroy the ball
- Drain.DestroyBall
- BallsOnPlayfield = BallsOnPlayfield - 1
- ' pretend to knock the ball into the ball storage mech
- 'PlaySound "Drain"
- PinEvent_Drain_Hit
- ' if there is a game in progress and
- If (fpGameInPlay = TRUE) And (fpTilted = FALSE) Then
- ' is the ball saver active
- ' cancel any multiball if on last ball (ie. lost all other balls)
- '
- If (BallsOnPlayfield = 1) Then
- ' and in a multi-ball??
- If (multiballon = True) then
- ' not in multiball mode any more
- endmultiball()
- ' you may wish to change any music over at this point and
- ' turn off any multiball specific lights
- End If
- If (quickmultiballon = true) then
- endquickmultiball()
- end if
- End If
- If quickmultiballon = true then
- If (ballsonplayfield = 2) and ((balllockleft = true) or (balllockright = true)) then
- endquickmultiball()
- end if
- If (ballsonplayfield = 3) and ((balllockleft = true) and (balllockright = true)) then
- endquickmultiball()
- end if
- End if
- ' was that the last ball on the playfield
- If (BallsOnPlayfield = 0) Then
- ' handle the end of ball (change player, high score entry etc..)
- EndOfBall()
- End If
- If (ballsonplayfield = 1) and ((balllockleft = true) or (balllockright = true)) then
- Endofball()
- End if
- If (ballsonplayfield = 2) and ((balllockleft = true) and (balllockright = true)) then
- Endofball()
- End if
- End If
- If (fpGameInPlay = TRUE) And (fpTilted = true) Then
- If (BallsOnPlayfield = 1) Then
- ' and in a multi-ball??
- If (multiballon = True) then
- ' not in multiball mode any more
- endmultiball()
- ' you may wish to change any music over at this point and
- ' turn off any multiball specific lights
- End If
- If (quickmultiballon = true) then
- endquickmultiball()
- end if
- End If
- If quickmultiballon = true then
- If (ballsonplayfield = 2) and ((balllockleft = true) or (balllockright = true)) then
- endquickmultiball()
- end if
- If (ballsonplayfield = 3) and ((balllockleft = true) and (balllockright = true)) then
- endquickmultiball()
- end if
- End if
- ' was that the last ball on the playfield
- If (BallsOnPlayfield = 0) Then
- ' handle the end of ball (change player, high score entry etc..)
- EndOfBall()
- End If
- If (ballsonplayfield = 1) and ((balllockleft = true) or (balllockright = true)) then
- Endofball()
- End if
- If (ballsonplayfield = 2) and ((balllockleft = true) and (balllockright = true)) then
- Endofball()
- End if
- end if
- End Sub
- sub endmultiball()
- multiballon = false
- playmusic 1, "bvp main theme", true
- resetlock()
- hundredK1.state = bulboff
- hundredK2.state = bulboff
- jackpotlight.state = bulboff
- locklit = false
- lightlockonhold = false
- resetalltargets()
- mainplay()
- If holdingquickmball = true then
- relightquickmball()
- end if
- end sub
- sub endquickmultiball()
- quickmultiballon = false
- mainplay()
- resetquickmball()
- resetlocklights()
- If multiballlit = true then
- jackpotlight.state = bulbblink
- end if
- If lightlockonhold = true then
- Lightlock()
- lightlockonholdtimer.enabled=true
- end if
- If lightlockonhold = false then
- If locklit = false then
- playmusic 1, "bvp main theme", true
- end if
- If Locklit = true then
- Lock1.set bulbblink, "1110000000", 75
- Lock2.set bulbblink, "0001000001", 75
- Lock3.set bulbblink, "0000100010", 75
- Lock4.set bulbblink, "0000011100", 75
- Song = 2
- playsong()
- end if
- end if
- end sub
- sub lightlockonbholdtimer_expired()
- lightlockonholdtimer.enabled=false
- lightlockonhold = false
- end sub
- ' A ball is pressing down the trigger in the shooters lane
- '
- Sub PlungerLaneTrigger_Hit()
- bBallInPlungerLane = TRUE
- ' remember last trigger hit by the ball
- set LastSwitchHit = PlungerLaneTrigger
- quickmultiballsafetytimer.enabled = false
- End Sub
- Sub PlungerlaneTrigger_unhit()
- bBallinplungerlane = false
- playmusic 8, "sound56", false
- mainseq.updateinterval = 5
- mainseq.play SeqUpOn, 50
- If quickmultiballon = true then
- quickmultiballsafetytimer.enabled = true
- end if
- end sub
- ' A Ball may of rolled into the Plunger Lane Kicker, if so then kick it
- ' back out again
- '
- Sub PlungerKicker_Hit()
- PlungerKicker.SolenoidPulse
- PinEvent_PlungerKicker
- End Sub
- ' The Ball has rolled out of the Plunger Lane. Check to see if a ball saver machanisim
- ' is needed and if so fire it up.
- '
- Sub PlungerLaneGate_Hit()
- ' if there is a need for a ball saver, then start off a timer
- ' only start if it is currently not running, else it will reset the time period
- If (constBallSaverTime <> 0) And (bBallSaverActive <> TRUE) Then
- ' and only if the last trigger hit was the plunger wire.
- ' (ball in the shooters lane)
- If (LastSwitchHit.Name = "PlungerLaneTrigger") Then
- ' set our game flag
- bBallSaverActive = TRUE
- ' start the timer
- BallSaverTimer.Enabled = FALSE
- BallSaverTimer.Interval = constBallSaverTime
- BallSaverTimer.Enabled = TRUE
- ' if you have a ball saver light you might want to turn it on at this
- ' point (or make it flash)
- End If
- End If
- End Sub
- ' The ball saver timer has expired. Turn it off and reset the game flag
- '
- Sub BallSaverTimer_Expired()
- ' stop the timer from repeating
- BallSaverTimer.Enabled = FALSE
- ' clear the flag
- bBallSaverActive = FALSE
- ' if you have a ball saver light then turn it off at this point
- End Sub
- ' *********************************************************************
- ' ** **
- ' ** Supporting Score Functions **
- ' ** **
- ' *********************************************************************
- ' Add points to the score and update the score board
- '
- Sub AddScore(points)
- If (fpTilted = FALSE) Then
- ' add the points to the current players score variable
- nvScore(CurrentPlayer) = nvScore(CurrentPlayer) + points
- ' update the score displays
- If (displayint = false) and (bumperdisplay = false) and (bonuscounton = false) then
- If ballsremaining(currentplayer) = 3 then
- maintext.text = nvScore(CurrentPlayer) & " ball 1"
- maintext2.text = nvScore(CurrentPlayer) & " ball 1"
- end if
- If ballsremaining(currentplayer) = 2 then
- maintext.text = nvScore(CurrentPlayer) & " ball 2"
- maintext2.text = nvScore(CurrentPlayer) & " ball 2"
- end if
- If ballsremaining(currentplayer) = 1 then
- maintext.text = nvScore(CurrentPlayer) & " ball 3"
- maintext2.text = nvScore(CurrentPlayer) & " ball 3"
- end if
- end if
- ' add the points to the correct display and light the current players display
- End if
- ' you may wish to check to see if the player has gotten a replay
- End Sub
- sub addbonus(points)
- If (FpTilted = false) then
- mainbonus = mainbonus + points
- end if
- end sub
- sub addbonusblue(points)
- If (FpTilted = false) then
- bluebonus = bluebonus + points
- end if
- end sub
- sub addbonuspink(points)
- If (FpTilted = false) then
- pinkbonus = pinkbonus + points
- end if
- end sub
- sub erasebonus()
- mainbonus = mainbonus - mainbonus
- bluebonus = bluebonus - bluebonus
- pinkbonus = pinkbonus - pinkbonus
- end sub
- dim bluescore
- dim pinkscore
- dim bluebonus
- dim pinkbonus
- dim mainbonus
- dim displayint
- sub addscoreblue(points)
- If (fpTilted = FALSE) Then
- bluescore = bluescore + points
- if (displayint = false) and (bonuscounton = false) then
- Bluetext.text = (bluescore)
- Bluetext2.text = (bluescore)
- end if
- end if
- end sub
- sub addscorepink(points)
- If (fpTilted = FALSE) Then
- pinkscore = pinkscore + points
- if (displayint = false) and (bonuscounton = false) then
- pinktext.text = (pinkscore)
- pinktext2.text = (pinkscore)
- end if
- End If
- end sub
- ' Add some points to the current Jackpot.
- '
- Sub AddJackpot(points)
- ' Jackpots only generally increment in multiball mode and not tilted
- ' but this dosn't have to tbe the case
- If (fpTilted = False) Then
- If (bMultiBallMode = TRUE) Then
- nvJackpot = nvJackpot + points
- ' you may wish to limit the jackpot to a upper limit, ie..
- ' If (nvJackpot >= 6000) Then
- ' nvJackpot = 6000
- ' End if
- End if
- End if
- End Sub
- ' Will increment the Bonus Multiplier to the next level
- '
- Sub IncrementBonusMultiplier()
- Dim NewBonusLevel
- ' if not at the maximum bonus level
- if (BonusMultiplier(CurrentPlayer) < constMaxMultiplier) then
- ' then set it the next next one and set the lights
- NewBonusLevel = BonusMultiplier(CurrentPlayer) + 1
- SetBonusMultiplier(NewBonusLevel)
- End if
- End Sub
- ' Set the Bonus Multiplier to the specified level and set any lights accordingly
- '
- Sub SetBonusMultiplier(Level)
- ' Set the multiplier to the specified level
- BonusMultiplier(CurrentPlayer) = Level
- ' If the multiplier is 1 then turn off all the bonus lights
- If (BonusMultiplier(CurrentPlayer) = 1) Then
- ' insert your own code here
- Else
- ' there is a bonus, turn on all the lights upto the current level
- If (BonusMultiplier(CurrentPlayer) >= 2) Then
- ' insert your own code here
- End If
- ' etc..
- End If
- End Sub
- ' *********************************************************************
- ' ** **
- ' ** Table Object Script Events **
- ' ** **
- ' *********************************************************************
- ' The Left Slingshot has been Hit, Add Some Points and Flash the Slingshot Lights
- '
- Sub LeftSlingshotRubber_Hit()
- ' add some points
- addscore(100)
- addscoreblue(100)
- addscorepink(0)
- addbonus(10)
- addbonusblue(10)
- addbonuspink(0)
- ' flash the lights around the slingshot
- 'LeftSlingshotBulb1.FlashForMs 100, 50, BulbOff
- 'LeftSlingshotBulb2.FlashForMs 100, 50, BulbOff
- playmusic 2, "sound 10", false
- bs1.flashforms 100, 100, bulboff
- PinEvent_Left_Slingshot_Hit
- End Sub
- ' The Right Slingshot has been Hit, Add Some Points and Flash the Slingshot Lights
- '
- Sub RightSlingshotRubber_Hit()
- ' add some points
- addscore(100)
- addscoreblue(0)
- addscorepink(100)
- addbonus(10)
- addbonusblue(0)
- addbonuspink(10)
- ' flash the lights around the slingshot
- 'RightSlingshotBulb1.FlashForMs 100, 50, BulbOff
- 'RightSlingshotBulb2.FlashForMs 100, 50, BulbOff
- playmusic 2, "sound 10", false
- ps1.flashforms 100, 100, bulboff
- PinEvent_Right_Slingshot_Hit
- End Sub
- ' The Left InLane trigger has been Hit
- '
- Sub LeftInLaneTrigger_Hit()
- PinEvent_Rollovers_Left_Hit
- ' add some points
- addscore(1000)
- addscoreblue(1000)
- addscorepink(0)
- addbonus(100)
- addbonusblue(100)
- addbonuspink(0)
- playmusic 2, "sound 12", false
- lightrightside()
- ' remember last trigger hit by the ball
- set LastSwitchHit = LeftInLaneTrigger
- End Sub
- ' The Right InLane trigger has been Hit
- '
- Sub RightInLaneTrigger_Hit()
- PinEvent_Rollovers_Right_Hit
- ' add some points
- addscore(1000)
- addscoreblue(0)
- addscorepink(1000)
- addbonus(100)
- addbonusblue(0)
- addbonuspink(100)
- playmusic 2, "sound 12", false
- lightleftside()
- ' remember last trigger hit by the ball
- set LastSwitchHit = RightInLaneTrigger
- End Sub
- dim advxleft
- dim advxright
- dim lightkickbackleft
- dim lightkickbackright
- sub lightleftside()
- If kickbacklit = false then
- lightkickback1.state=bulbblink
- lightkickbackleft = true
- leftsidetimer.enabled = true
- end if
- If bonusx < 4 then
- advx1.state=bulbblink
- advxleft = true
- leftsidetimer.enabled = true
- end if
- end sub
- sub leftsidetimer_expired()
- leftsidetimer.enabled = false
- advx1.state=bulboff
- lightkickback1.state=bulboff
- advxleft = false
- lightkickbackleft = false
- end sub
- sub lightrightside()
- If kickbacklit = false then
- lightkickback2.state=bulbblink
- lightkickbackright = true
- rightsidetimer.enabled = true
- end if
- If bonusx < 4 then
- advx2.state=bulbblink
- advxright = true
- rightsidetimer.enabled = true
- end if
- end sub
- sub rightsidetimer_expired()
- rightsidetimer.enabled = false
- advx2.state=bulboff
- lightkickback2.state=bulboff
- advxright = false
- lightkickbackright = false
- end sub
- ' The Left OutLane trigger has been Hit
- '
- Dim Leftkick
- Dim Rightkick
- Sub LeftOutLaneTrigger_Hit()
- PinEvent_LeftOutLaneTrigger_Hit
- If fptilted = false then
- ' add some points
- addscore(3000)
- addscoreblue(3000)
- addscorepink(0)
- addbonus(300)
- addbonusblue(300)
- addbonuspink(0)
- ' remember last trigger hit by the ball
- set LastSwitchHit = LeftOutLaneTrigger
- If (kickbacklit = true) and (Leftkick = true) then
- leftkickback.solenoidpulse(100)
- PinEvent_Kickback_Left
- Playmusic 3, "sound58a", false
- kickbackgrace.enabled=true
- leftkicklight.flashforms 500, 50
- blueseq.updateinterval = 5
- blueSeq.Play SequpOn, 30
- end if
- If (kickbacklit = false) or (Leftkick = false) then
- Playoutlanesound()
- mainseq.updateinterval = 15
- mainseq.play SeqMiddleOutVertOn, 100
- end if
- end if
- End Sub
- ' The Right OutLane trigger has been Hit
- '
- Sub RightOutLaneTrigger_Hit()
- PinEvent_RightOutLaneTrigger_Hit
- If fptilted = false then
- ' add some points
- addscore(3000)
- addscoreblue(0)
- addscorepink(3000)
- addbonus(300)
- addbonusblue(0)
- addbonuspink(300)
- ' remember last trigger hit by the ball
- set LastSwitchHit = RightOutLaneTrigger
- If (kickbacklit = true) and (Rightkick = true) then
- Rightkickback.solenoidpulse(100)
- PinEvent_Kickback_Right
- Playmusic 3, "sound58a", false
- kickbackgrace.enabled=true
- rightkicklight.flashforms 500, 50, bulboff
- pinkseq.updateinterval = 5
- pinkSeq.Play SequpOn, 30
- end if
- If (kickbacklit = false) or (rightkick = false) then
- Playoutlanesound()
- mainseq.updateinterval = 15
- mainseq.play SeqMiddleOutVertOn, 100
- end if
- end if
- End Sub
- sub kickbackgrace_expired()
- kickbacklit = false
- leftkicklight.state = bulboff
- rightkicklight.state = bulboff
- kickbackgrace.enabled=false
- end sub
- Dim Ballinleftscoop
- Sub Leftscoop_hit()
- PinEvent_LeftScoop_Hit
- addscore(2500)
- addscoreblue(2500)
- addscorepink(0)
- addbonus(250)
- addbonusblue(250)
- addbonuspink(0)
- Leftscoop.destroyball
- Ballinleftscoop = Ballinleftscoop + 1
- Leftscooptimer.enabled = true
- ksoundtimer.enabled = true
- activestrobe1 = 1
- activestrobe2 = 0
- if advxleft = true then
- AdvanceBonusX()
- advxleft = false
- advx1.state=bulboff
- end if
- End sub
- sub leftscooptimer_expired()
- If ballinleftscoop > 0 then
- leftscoop.createball
- Leftscoop.solenoidpulse(100)
- PinEvent_LeftScoop
- ballinleftscoop = ballinleftscoop - 1
- else
- leftscooptimer.enabled = false
- end if
- end sub
- Dim Ballinrightscoop
- Sub rightscoop_hit()
- PinEvent_RightScoop_Hit
- addscore(2500)
- addscoreblue(0)
- addscorepink(2500)
- addbonus(250)
- addbonusblue(0)
- addbonuspink(250)
- rightscoop.destroyball
- Ballinrightscoop = Ballinrightscoop + 1
- rightscooptimer.enabled = true
- ksoundtimer.enabled = true
- activestrobe1 = 6
- activestrobe2 = 0
- if advxright = true then
- AdvanceBonusX()
- advxright = false
- advx2.state=bulboff
- end if
- End sub
- sub rightscooptimer_expired()
- If ballinrightscoop > 0 then
- rightscoop.createball
- rightscoop.solenoidpulse(100)
- PinEvent_RightScoop
- ballinrightscoop = ballinrightscoop - 1
- else
- rightscooptimer.enabled = false
- end if
- end sub
- sub leftdeckdrain_hit()
- PinEvent_leftdeckdrain_Hit
- If (multiballon = false) and (quickmultiballon = false) then
- resetupperbanks()
- end if
- If (multiballlit = false) and (multiballon = false) and (quickmultiballon = false) then
- Centertarget.solenoidpulse(100)
- PinEvent_CenterTarget_Reset
- extraballlit = false
- advexballlight.state = bulboff
- end if
- leftdeckdrain.destroyball
- bs3.flashforms 400, 50, bulboff
- Ballinleftscoop = Ballinleftscoop + 1
- Leftscooptimer.enabled = true
- playmusic 2, "sound 11", false
- ksoundtimer.enabled = true
- activestrobe1 = 1
- activestrobe2 = 0
- end sub
- sub rightdeckdrain_hit()
- PinEvent_rightdeckdrain_Hit
- If (multiballon = false) and (quickmultiballon = false) then
- resetupperbanks()
- end if
- If (multiballlit = false) and (multiballon = false) and (quickmultiballon = false) then
- Centertarget.solenoidpulse(100)
- PinEvent_CenterTarget_Reset
- extraballlit = false
- advexballlight.state = bulboff
- end if
- rightdeckdrain.destroyball
- ps3.flashforms 400, 50, bulboff
- Ballinrightscoop = Ballinrightscoop + 1
- rightscooptimer.enabled = true
- playmusic 2, "sound35", false
- ksoundtimer.enabled = true
- activestrobe1 = 6
- activestrobe2 = 0
- end sub
- Dim enterblue
- Dim enterpink
- Dim Ballincenter 'number of balls in center hole
- Dim Ballinleft 'number of balls in left hole
- Dim Ballinright 'number oif balls in right hole
- Sub centerhole_hit()
- addscore(4000)
- addscoreblue(2000)
- addscorepink(2000)
- addbonus(400)
- addbonusblue(200)
- addbonuspink(200)
- centerhole.destroyball
- ballincenter = ballincenter + 1
- centertarget.solenoidpulse()
- PinEvent_CenterTarget_Reset
- if (extraballlit = true) and (Loops = 0) then
- extraballlit = false
- advexballlight.state = bulboff
- extraballtimer.enabled = false
- advanceextraball()
- end if
- if (quickmultiballon = true) or (multiballon = true) then
- centerholetimer.enabled = true
- ksoundtimer.enabled = true
- If enterpink = true then
- activestrobe1 = 11
- activestrobe2 = 8
- end if
- If enterblue = true then
- activestrobe1 = 11
- activestrobe2 = 3
- end if
- end if
- if (quickmultiballon = false) and (multiballon = false) then
- If (multiballlit = false) and (quickmballlit = false) then
- Resetlooptriggers()
- centerholetimer.enabled = true
- ksoundtimer.enabled = true
- If enterpink = true then
- activestrobe1 = 11
- activestrobe2 = 8
- end if
- If enterblue = true then
- activestrobe1 = 11
- activestrobe2 = 3
- end if
- end if
- If (multiballlit = true) and (loops = 0) then
- startmultiball()
- end if
- If (multiballlit = true) and (loops = 1) and (quickmballlit = false) then
- Resetlooptriggers()
- centerholetimer.enabled = true
- ksoundtimer.enabled = true
- If enterpink = true then
- activestrobe1 = 11
- activestrobe2 = 8
- end if
- If enterblue = true then
- activestrobe1 = 11
- activestrobe2 = 3
- end if
- end if
- If (multiballlit = false) and (loops = 0) and (quickmballlit = true) then
- Resetlooptriggers()
- centerholetimer.enabled = true
- ksoundtimer.enabled = true
- If enterpink = true then
- activestrobe1 = 11
- activestrobe2 = 8
- end if
- If enterblue = true then
- activestrobe1 = 11
- activestrobe2 = 3
- end if
- end if
- If (Loops = 1) and (quickmballlit = true) then
- startquickmultiball()
- end if
- end if
- end sub
- sub startmultiball()
- maintext.flushqueue()
- pinktext.flushqueue()
- bluetext.flushqueue()
- maintext2.flushqueue()
- pinktext2.flushqueue()
- bluetext2.flushqueue()
- multiballon = true
- mballshow.enabled=true
- EffectMusic 1, fadevolume, 0.0, 1000
- playmusic 2, "sound46", false
- playmusic 3, "sound17", false
- displayinterrupt()
- maintext.queuetext " Computing - ", seWipeRadarright, 2000
- bluetext.queuetext " please", seWipeRadarright, 2000
- pinktext.queuetext " wait ", seWipeRadarright, 2000
- maintext2.queuetext " Computing - ", seWipeRadarright, 2000
- bluetext2.queuetext " please", seWipeRadarright, 2000
- pinktext2.queuetext " wait ", seWipeRadarright, 2000
- playintro()
- shutoffmainplay()
- mainseq.updateinterval = 10
- mainseq.play SeqRandom, 20, ,3000
- If kickbacklit = false then
- lightkickback()
- end if
- If quickmballlit = true then
- holdquickmball()
- end if
- end sub
- dim mbs
- sub mballshow_expired
- mbs = mbs + 1
- If mbs = 6 then
- displayinterrupt()
- Maintext.text = " multi "
- bluetext.text = " "
- pinktext.text = " "
- Maintext2.text = " multi "
- bluetext2.text = " "
- pinktext2.text = " "
- Playmusic 2, "sound57", false
- playmusic 4, "sound53", false
- mainseq.stopplay()
- mainseq.play SeqCircleOutOn, 30
- end if
- If mbs = 8 then
- displayinterrupt()
- Maintext.text = " multi ball "
- bluetext.text = " "
- pinktext.text = " "
- Maintext2.text = " multi ball "
- bluetext2.text = " "
- pinktext2.text = " "
- Playmusic 2, "sound57", false
- playmusic 4, "sound53a", false
- mainseq.stopplay()
- mainseq.play SeqCircleOutOn, 30
- end if
- If mbs = 10 then
- displayinterrupt()
- Maintext.text = " multi ball "
- bluetext.text = " is"
- pinktext.text = " "
- Maintext2.text = " multi ball "
- bluetext2.text = " is"
- pinktext2.text = " "
- Playmusic 2, "sound57", false
- playmusic 4, "sound53", false
- mainseq.stopplay()
- mainseq.play SeqCircleOutOn, 30
- end if
- If mbs = 12 then
- displayinterrupt()
- Maintext.text = " multi ball "
- bluetext.text = " is"
- pinktext.text = "on "
- Maintext2.text = " multi ball "
- bluetext2.text = " is"
- pinktext2.text = "on "
- Playmusic 2, "sound57", false
- playmusic 4, "sound53a", false
- mainseq.stopplay()
- mainseq.play SeqCircleOutOn, 30
- end if
- If mbs = 14 then
- activatemultiball()
- displayinterrupt()
- Maintext.queuetext " shoot the top ", seWipeRadarright, 2000
- bluetext.queuetext " kick", seWipeRadarright, 2000
- pinktext.queuetext "outs ", seWipeRadarleft, 2000
- Maintext2.queuetext " shoot the top ", seWipeRadarright, 2000
- bluetext2.queuetext " kick", seWipeRadarright, 2000
- pinktext2.queuetext "outs ", seWipeRadarleft, 2000
- Playmusic 3, "sound 3", false
- mballshow.enabled = false
- mbs = mbs - mbs
- mainseq.stopplay()
- mainseq.play SeqCircleOutOn, 30
- end if
- end sub
- sub activatemultiball()
- lock1.state = bulbon
- lock2.state = bulbon
- lock3.state = bulbon
- lock4.state = bulbon
- Locklit = false
- multiballlit = false
- balllockleft = false
- balllockright = false
- song = 3
- playsong()
- multiballreleasetimer.enabled = true
- jackpotlight.state = bulbon
- HundredK1.state = bulbblink
- HundredK2.state = bulbblink
- mainplay()
- end sub
- sub multiballreleasetimer_expired()
- multiballreleasetimer.enabled = false
- leftdeckexit.solenoidpulse(100)
- PinEvent_leftdeckexit
- rightdeckexit.solenoidpulse(100)
- PinEvent_rightdeckexit
- centerholetimer.enabled = true
- ballslocked = ballslocked - ballslocked
- ksoundtimer.enabled = true
- If enterpink = true then
- activestrobe1 = 11
- activestrobe2 = 8
- end if
- If enterblue = true then
- activestrobe1 = 11
- activestrobe2 = 3
- end if
- end sub
- dim holdingquickmball
- sub holdquickmball()
- holdingquickmball = true
- quickmballlit = false
- quicksignbulb1.state = bulboff
- quicksignbulb2.state = bulboff
- quicksignbulb3.state = bulboff
- quicksignbulb4.state = bulboff
- looplight1.state = bulboff
- looplight2.state = bulboff
- end sub
- sub relightquickmball()
- holdingquickmball = false
- quickmballlit = true
- quicksignbulb1.state = bulbblink
- quicksignbulb2.state = bulbblink
- quicksignbulb3.state = bulbblink
- quicksignbulb4.state = bulbblink
- looplight1.state = bulbblink
- looplight2.state = bulbblink
- leftlooptarget.solenoidpulse(100)
- rightlooptarget.solenoidpulse(100)
- playquickmultiball()
- screeninterrupt()
- end sub
- dim quickmultiballsafety
- sub startquickmultiball()
- mainseq.updateinterval = 20
- mainseq.play SeqMiddleOutVertOn, 50
- Resetlooptriggers()
- quickmultiballon = true
- Createnewball()
- leftlooptarget.popdown()
- Rightlooptarget.popdown()
- quickmballlit = false
- quicksignbulb1.state = bulbon
- quicksignbulb2.state = bulbon
- quicksignbulb3.state = bulbon
- quicksignbulb4.state = bulbon
- looplight1.state = bulbon
- looplight2.state = bulbon
- quickscorelight1.state = bulbblink
- quickscorelight2.state = bulbblink
- locklit1.state = bulboff
- locklit2.state = bulboff
- jackpotlight.state = bulboff
- displayinterrupt()
- maintext.flushqueue()
- pinktext.flushqueue()
- bluetext.flushqueue()
- maintext.queuetext "quick multiball", seWipeRadarright, 3000
- bluetext.queuetext " shoot ", seWipeRadarright, 3000
- pinktext.queuetext " loops ", seWipeRadarright, 3000
- maintext2.flushqueue()
- pinktext2.flushqueue()
- bluetext2.flushqueue()
- maintext2.queuetext "quick multiball", seWipeRadarright, 3000
- bluetext2.queuetext " shoot ", seWipeRadarright, 3000
- pinktext2.queuetext " loops ", seWipeRadarright, 3000
- Quick1.set bulbblink, "1111100000", 150
- Quick2.set bulbblink, "0111110000", 150
- Quick3.set bulbblink, "0011111000", 150
- Quick4.set bulbblink, "0001111100", 150
- Quick5.set bulbblink, "0000111110", 150
- mainplay()
- shutoffmainplay()
- quickmultiballsafety = true
- If kickbacklit = false then
- lightkickback()
- end if
- If (locklit = true) then
- lock1.state = bulbon
- lock2.state = bulbon
- lock3.state = bulbon
- lock4.state = bulbon
- end if
- end sub
- Sub centerholetimer_expired()
- If ballincenter > 0 then
- switchcolors()
- If enterpink = true then
- rightdeckentrance.createball
- rightdeckentrance.solenoidpulse(100)
- PinEvent_rightdeckentrance
- ballincenter = ballincenter - 1
- end if
- If enterblue = true then
- leftdeckentrance.createball
- leftdeckentrance.solenoidpulse(100)
- PinEvent_leftdeckentrance
- ballincenter = ballincenter - 1
- end if
- end if
- If ballincenter = 0 then
- centerholetimer.enabled = false
- end if
- end sub
- sub switchcolors()
- If (enterpink = true) and (enterblue = false) then
- switchtoblue.enabled = true
- end if
- If (enterblue = true) and (enterpink = false) then
- switchtopink.enabled = true
- end if
- end sub
- sub switchtoblue_expired()
- enterpink = false
- enterblue = true
- pinkarrow.state=bulboff
- bluearrow.state=bulbon
- switchtoblue.enabled=false
- end sub
- sub switchtopink_expired()
- enterblue = false
- enterpink = true
- pinkarrow.state=bulbon
- bluearrow.state=bulboff
- switchtopink.enabled=false
- end sub
- dim activestrobe1
- dim activestrobe2
- sub leftkicker_hit()
- addscore(1000)
- addscoreblue(1000)
- addscorepink(0)
- addbonus(100)
- addbonusblue(100)
- addbonuspink(0)
- ballinleft = ballinleft + 1
- leftkicker.destroyball
- PinEvent_Leftkicker_Hit
- leftkickertimer.enabled = true
- ksoundtimer.enabled = true
- activestrobe1 = 11
- activestrobe2 = 3
- if lightkickbackleft = true then
- Lightkickback()
- Lightkickbackleft = false
- Lightkickback1.state = bulboff
- playmusic 2, "sound19", false
- maintext.queuetext " kickback lit ", seWipeRadarRight, 2000
- maintext2.queuetext " kickback lit ", seWipeRadarRight, 2000
- end if
- end sub
- sub leftkickertimer_expired()
- If ballinleft > 0 then
- leftdeckentrance.createball
- leftdeckentrance.solenoidpulse(100)
- PinEvent_leftdeckentrance
- ballinleft = ballinleft - 1
- end if
- If ballinleft = 0 then
- leftkickertimer.enabled = false
- end if
- end sub
- sub rightkicker_hit()
- addscore(1000)
- addscoreblue(0)
- addscorepink(1000)
- addbonus(100)
- addbonusblue(0)
- addbonuspink(100)
- ballinright = ballinright + 1
- rightkicker.destroyball
- PinEvent_Rightkicker_Hit
- rightkickertimer.enabled = true
- ksoundtimer.enabled = true
- activestrobe1 = 11
- activestrobe2 = 8
- if lightkickbackright = true then
- Lightkickback()
- Lightkickbackright = false
- Lightkickback2.state = bulboff
- playmusic 2, "sound19", false
- maintext.queuetext " kickback lit ", seWipeRadarRight, 2000
- maintext2.queuetext " kickback lit ", seWipeRadarRight, 2000
- end if
- end sub
- sub rightkickertimer_expired()
- If ballinright > 0 then
- rightdeckentrance.createball
- rightdeckentrance.solenoidpulse(100)
- PinEvent_rightdeckentrance
- ballinright = ballinright - 1
- end if
- If ballinright = 0 then
- rightkickertimer.enabled=false
- end if
- end sub
- sub leftlooptarget_hit()
- If quickmballlit = false then
- leftlooptarget.popdown()
- Rightlooptarget.popdown()
- end if
- If quickmballlit = true then
- leftlooptarget.solenoidpulse()
- rightlooptarget.solenoidpulse()
- end if
- end sub
- sub rightlooptarget_hit()
- If quickmballlit = false then
- leftlooptarget.popdown()
- Rightlooptarget.popdown()
- end if
- If quickmballlit = true then
- leftlooptarget.solenoidpulse()
- rightlooptarget.solenoidpulse()
- end if
- end sub
- dim multiballlit
- sub leftdeckexit_hit()
- PinEvent_leftdeckexit_Hit
- bs4.flashforms 400, 50
- bs5.flashforms 400, 50
- addscore(5000)
- addscoreblue(5000)
- addscorepink(0)
- addbonus(500)
- addbonusblue(500)
- addbonuspink(0)
- If multiballon = true then
- addscore(100000)
- addscoreblue(100000)
- addscorepink(0)
- addbonus(1000)
- addbonusblue(1000)
- addbonuspink(0)
- Displayinterrupt()
- maintext.flushqueue()
- pinktext.flushqueue()
- bluetext.flushqueue()
- maintext.queuetext "100K Blue Points", seWipeRadarRight, 4000
- bluetext.queuetext " 100000", seblinkfast, 4000
- pinktext.text = " "
- maintext2.flushqueue()
- pinktext2.flushqueue()
- bluetext2.flushqueue()
- maintext2.queuetext "100K Blue Points", seWipeRadarRight, 4000
- bluetext2.queuetext " 100000", seblinkfast, 4000
- pinktext2.text = " "
- Playblue100K()
- screeninterrupt()
- playmusic 8, "sound57", false
- blueseq.updateinterval = 5
- blueseq.play SeqLeftOn, 50, 4
- end if
- If (locklit = false) or (quickmultiballon = true) then
- leftdeckexittimer.enabled=true
- end if
- If (locklit = true) and (quickmultiballon = false) then
- locklit1.state = bulbon
- resetpinkinlines.enabled=true
- resetblueinlines.enabled=true
- balllockleft = true
- ballslocked = ballslocked + 1
- checklockedballs()
- end if
- end sub
- sub leftdeckexittimer_expired()
- leftdeckexit.solenoidpulse(100)
- PinEvent_leftdeckexit
- leftdeckexittimer.enabled=false
- playmusic 5, "sound48", false
- playmusic 6,"sound36", false
- mainseq.updateinterval = 15
- mainseq.play SeqDownOn, 40
- end sub
- sub rightdeckexit_hit()
- PinEvent_rightdeckexit_Hit
- ps4.flashforms 400, 50
- ps5.flashforms 400, 50
- addscore(5000)
- addscoreblue(0)
- addscorepink(5000)
- addbonus(500)
- addbonusblue(0)
- addbonuspink(500)
- If multiballon = true then
- addscore(100000)
- addscoreblue(0)
- addscorepink(100000)
- addbonus(1000)
- addbonusblue(0)
- addbonuspink(1000)
- Displayinterrupt()
- maintext.flushqueue()
- pinktext.flushqueue()
- bluetext.flushqueue()
- maintext.queuetext "100K Pink Points", seWipeRadarRight, 4000
- bluetext.text = " "
- pinktext.queuetext " 100000", seblinkfast, 4000
- maintext2.flushqueue()
- pinktext2.flushqueue()
- bluetext2.flushqueue()
- maintext2.queuetext "100K Pink Points", seWipeRadarRight, 4000
- bluetext2.text = " "
- pinktext2.queuetext " 100000", seblinkfast, 4000
- Playpink100K()
- screeninterrupt()
- playmusic 8, "sound57", false
- pinkseq.updateinterval = 5
- pinkseq.play SeqLeftOn, 50, 4
- end if
- If (locklit = false) or (quickmultiballon = true) then
- rightdeckexittimer.enabled=true
- end if
- If (locklit = true) and (quickmultiballon = false) then
- locklit2.state = bulbon
- resetpinkinlines.enabled=true
- resetblueinlines.enabled=true
- balllockright = true
- ballslocked = ballslocked + 1
- checklockedballs()
- end if
- end sub
- sub rightdeckexittimer_expired()
- rightdeckexit.solenoidpulse(100)
- PinEvent_rightdeckexit
- rightdeckexittimer.enabled=false
- playmusic 5, "sound48", false
- playmusic 6,"sound36", false
- mainseq.updateinterval = 20
- mainseq.play SeqDownOn, 40
- end sub
- sub checklockedballs()
- EffectMusic 1, fadevolume, 0.0, 1000
- createnewballtimer.enabled=true
- If ((balllockleft = true) and (balllockright = false)) or ((balllockleft = false) and (balllockright = true)) then
- maintext.flushqueue()
- pinktext.flushqueue()
- bluetext.flushqueue()
- maintext.queuetext "Ball one locked", seblink, 1200
- bluetext.queuetext " ", seWipeRadarleft, 3000
- pinktext.queuetext " ", seWipeRadarRight, 3000
- maintext2.flushqueue()
- pinktext2.flushqueue()
- bluetext2.flushqueue()
- maintext2.queuetext "Ball one locked", seblink, 1200
- bluetext2.queuetext " ", seWipeRadarleft, 3000
- pinktext2.queuetext " ", seWipeRadarRight, 3000
- playmusic 4, "sound60", false , 0.2
- lsoundtimer.enabled=true
- displayinterrupt()
- end if
- If (balllockleft = true) and (balllockright = true) then
- maintext.flushqueue()
- pinktext.flushqueue()
- bluetext.flushqueue()
- maintext.queuetext "Ball two locked", seblink, 1200, 0, true
- bluetext.queuetext " ", seWipeRadarleft, 3000
- pinktext.queuetext " ", seWipeRadarRight, 3000
- maintext2.flushqueue()
- pinktext2.flushqueue()
- bluetext2.flushqueue()
- maintext2.queuetext "Ball two locked", seblink, 1200, 0, true
- bluetext2.queuetext " ", seWipeRadarleft, 3000
- pinktext2.queuetext " ", seWipeRadarRight, 3000
- mballmessagetimer.enabled = true
- playmusic 4, "sound60", false, 0.2
- lsoundtimer.enabled=true
- displayinterrupt()
- multiballlit = true
- Jackpotlight.state=bulbblink
- end if
- end sub
- 'If ballslocked = 1 then
- 'maintext.queuetext "Ball one locked", seblink, 1200
- 'playmusic 4, "sound15", false
- 'lsoundtimer.enabled=true
- 'displayinterrupt()
- 'end if
- 'if ballslocked = 2 then
- 'maintext.queuetext "Ball two locked", seblink, 1200, 0, true
- 'mballmessagetimer.enabled = true
- 'playmusic 4, "sound15", false
- 'lsoundtimer.enabled=true
- 'displayinterrupt()
- 'multiballlit = true
- 'Jackpotlight.state=bulbblink
- 'end if
- sub resetlocklights()
- If locklit = true then
- If balllockleft = true then
- locklit1.state = bulbon
- end if
- If balllockleft = false then
- locklit1.state = bulbblink
- end if
- If balllockright = true then
- locklit2.state = bulbon
- end if
- If balllockright = false then
- locklit2.state = bulbblink
- end if
- end if
- If locklit = false then
- locklit1.state = bulboff
- locklit2.state = bulboff
- end if
- end sub
- sub mballmessagetimer_expired()
- maintext.text = "multiball is lit"
- maintext2.text = "multiball is lit"
- mballmessagetimer.enabled=false
- playmusic 5, "sound28", false
- mainseq.updateinterval = 10
- mainseq.play SeqCircleOutOn, 40
- mainplay()
- end sub
- sub createnewballtimer_expired()
- createnewballtimer.enabled=false
- createnewball()
- end sub
- sub trigger2_hit()
- PinEvent_WireRamp_Right
- If multiballon = false then
- resetpinkinlines.enabled=true
- resetblueinlines.enabled=true
- end if
- If multiballon = true then
- P13.popdown()
- P14.popdown()
- P15.popdown()
- P16.popdown()
- end if
- end sub
- sub trigger3_hit()
- PinEvent_WireRamp_Left
- If multiballon = false then
- resetpinkinlines.enabled=true
- resetblueinlines.enabled=true
- end if
- If multiballon = true then
- B13.popdown()
- B14.popdown()
- B15.popdown()
- B16.popdown()
- end if
- end sub
- Dim Song
- sub playsong()
- If song = 1 then
- playmusic 1, "BVP Main Theme", True, 1.0
- End if
- If song = 2 then
- playmusic 1, "BVP Locklit", True, 1.0
- End if
- If song = 3 then
- playmusic 1, "BVP Multiball", True, 1.0
- End if
- If song = 4 then
- playmusic 1, "BVP Quick Multiball Shooter", True, 1.0
- End if
- If song = 5 then
- playmusic 1, "BVP Quick Multiball", True, 1.0
- End if
- If song = 6 then
- playmusic 1, "BVP Locklit Shooter Theme", True, 1.0
- End if
- If song = 7 then
- playmusic 1, "BVP Main Shooter Theme", True, 1.0
- End if
- If song = 8 then
- Song = song - song
- playmusic 1, "BVP HighScore", True, 1.0
- Playsong()
- End if
- end sub
- Dim Lock
- Dim Locklit
- Dim Ballslocked
- sub advancelock()
- lock = lock + 1
- If lock = 1 then
- Lock1.state=bulbon
- playlocklitL()
- screeninterrupt()
- end if
- If lock = 2 then
- Lock2.state=bulbon
- playlocklitO()
- screeninterrupt()
- end if
- If lock = 3 then
- Lock3.state=bulbon
- playlocklitC()
- screeninterrupt()
- end if
- If lock = 4 then
- Lock4.state=bulbon
- Lightlock()
- end if
- end sub
- Dim Lightlockonhold
- Sub Lightlock()
- If quickmultiballon = false then
- Locklit = true
- balllockleft = false
- balllockright = false
- song = 2
- If ballindrain = false then
- playmusic 1, "BVP Locklit", True, 1.0, 1200
- end if
- locklitshow()
- locklit1.state=bulbblink
- locklit2.state=bulbblink
- end if
- If quickmultiballon = true then
- Lightlockonhold = true
- end if
- end sub
- sub resetlock()
- lock = lock - lock
- lock1.state = bulboff
- lock2.state = bulboff
- lock3.state = bulboff
- lock4.state = bulboff
- resetlocklights()
- end sub
- dim lsound
- sub locklitshow()
- maintext.flushqueue()
- pinktext.flushqueue()
- bluetext.flushqueue()
- maintext2.flushqueue()
- pinktext2.flushqueue()
- bluetext2.flushqueue()
- Lock1.set bulbblink, "1110000000", 75
- Lock2.set bulbblink, "0001000001", 75
- Lock3.set bulbblink, "0000100010", 75
- Lock4.set bulbblink, "0000011100", 75
- playmusic 5, "sound15", false
- lsoundtimer.enabled=true
- maintext.queuetext "Lock is lit", seBlink, 1200
- bluetext.queuetext " ", seWipeRadarleft, 3000
- pinktext.queuetext " ", seWipeRadarRight, 3000
- maintext2.queuetext "Lock is lit", seBlink, 1200
- bluetext2.queuetext " ", seWipeRadarleft, 3000
- pinktext2.queuetext " ", seWipeRadarRight, 3000
- displayinterrupt()
- mainseq.play seqblinking, , 4, 100
- playlocklitK()
- screeninterrupt()
- end sub
- sub lsoundtimer_expired()
- lsound = lsound + 1
- if (balllockright = false) and (balllockleft = false) then
- If lsound = 1 then
- playmusic 5, "sound15", false
- end if
- If lsound = 2 then
- playmusic 5, "sound15", false
- end if
- If lsound = 3 then
- playmusic 5, "sound15", false
- lsoundtimer.enabled = false
- lsound = lsound - lsound
- end if
- end if
- if (balllockright = true) or (balllockleft = true) then
- If lsound = 1 then
- playmusic 4, "sound60", false, 0.4
- end if
- If lsound = 2 then
- playmusic 4, "sound60", false, 0.6
- end if
- If lsound = 3 then
- playmusic 4, "sound60", false, 0.8
- lsoundtimer.enabled = false
- lsound = lsound - lsound
- end if
- end if
- end sub
- sub resetalltargets()
- B1.solenoidpulse(100)
- B2.solenoidpulse(100)
- B3.solenoidpulse(100)
- B4.solenoidpulse(100)
- B1L.state=bulboff
- B2L.state=bulboff
- B3L.state=bulboff
- B4L.state=bulboff
- P1.solenoidpulse(100)
- P2.solenoidpulse(100)
- P3.solenoidpulse(100)
- P4.solenoidpulse(100)
- P1L.state=bulboff
- P2L.state=bulboff
- P3L.state=bulboff
- P4L.state=bulboff
- B5.solenoidpulse(100)
- B6.solenoidpulse(100)
- B7.solenoidpulse(100)
- B8.solenoidpulse(100)
- B5L.state=bulboff
- B6L.state=bulboff
- B7L.state=bulboff
- B8L.state=bulboff
- P5.solenoidpulse(100)
- P6.solenoidpulse(100)
- P7.solenoidpulse(100)
- P8.solenoidpulse(100)
- P5L.state=bulboff
- P6L.state=bulboff
- P7L.state=bulboff
- P8L.state=bulboff
- B9.solenoidpulse(100)
- B10.solenoidpulse(100)
- B11.solenoidpulse(100)
- B12.solenoidpulse(100)
- B9L.state=bulboff
- B10L.state=bulboff
- B11L.state=bulboff
- B12L.state=bulboff
- P9.solenoidpulse(100)
- P10.solenoidpulse(100)
- P11.solenoidpulse(100)
- P12.solenoidpulse(100)
- P9L.state=bulboff
- P10L.state=bulboff
- P11L.state=bulboff
- P12L.state=bulboff
- B13.solenoidpulse(100)
- B14.solenoidpulse(100)
- B15.solenoidpulse(100)
- B16.solenoidpulse(100)
- P13.solenoidpulse(100)
- P14.solenoidpulse(100)
- P15.solenoidpulse(100)
- P16.solenoidpulse(100)
- Centertarget.solenoidpulse(100)
- PinEvent_CenterTarget_Reset
- end sub
- sub resetupperbanks()
- B5.solenoidpulse(100)
- B6.solenoidpulse(100)
- B7.solenoidpulse(100)
- B8.solenoidpulse(100)
- B5L.state=bulboff
- B6L.state=bulboff
- B7L.state=bulboff
- B8L.state=bulboff
- P5.solenoidpulse(100)
- P6.solenoidpulse(100)
- P7.solenoidpulse(100)
- P8.solenoidpulse(100)
- P5L.state=bulboff
- P6L.state=bulboff
- P7L.state=bulboff
- P8L.state=bulboff
- B9.solenoidpulse(100)
- B10.solenoidpulse(100)
- B11.solenoidpulse(100)
- B12.solenoidpulse(100)
- B9L.state=bulboff
- B10L.state=bulboff
- B11L.state=bulboff
- B12L.state=bulboff
- P9.solenoidpulse(100)
- P10.solenoidpulse(100)
- P11.solenoidpulse(100)
- P12.solenoidpulse(100)
- P9L.state=bulboff
- P10L.state=bulboff
- P11L.state=bulboff
- P12L.state=bulboff
- end sub
- Sub B1_hit()
- B1L.state=bulbon
- checksetB1timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B1toB4_Hit
- end sub
- Sub B2_hit()
- B2L.state=bulbon
- checksetB1timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B1toB4_Hit
- end sub
- Sub B3_hit()
- B3L.state=bulbon
- checksetB1timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B1toB4_Hit
- end sub
- Sub B4_hit()
- B4L.state=bulbon
- checksetB1timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B1toB4_Hit
- end sub
- sub checksetb1timer_expired()
- checksetB1timer.enabled=false
- checksetB1()
- end sub
- sub checksetB1()
- If (B1.dropped = true) and (B2.dropped = true) and (B3.dropped = true) and (B4.dropped = true) then
- Advancelock()
- B1.solenoidpulse(100)
- B2.solenoidpulse(100)
- B3.solenoidpulse(100)
- B4.solenoidpulse(100)
- B1L.state=bulboff
- B2L.state=bulboff
- B3L.state=bulboff
- B4L.state=bulboff
- P1.solenoidpulse(100)
- P2.solenoidpulse(100)
- P3.solenoidpulse(100)
- P4.solenoidpulse(100)
- P1L.state=bulboff
- P2L.state=bulboff
- P3L.state=bulboff
- P4L.state=bulboff
- addscore(5000)
- addscoreblue(5000)
- addscorepink(0)
- addbonus(500)
- addbonusblue(500)
- addbonuspink(0)
- bluebank()
- PinEvent_Drop_Targets_B1toB4_Reset
- end if
- end sub
- Sub B5_hit()
- B5L.state=bulbon
- checksetB2timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B5toB8_Hit
- end sub
- Sub B6_hit()
- B6L.state=bulbon
- checksetB2timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B5toB8_Hit
- end sub
- Sub B7_hit()
- B7L.state=bulbon
- checksetB2timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B5toB8_Hit
- end sub
- Sub B8_hit()
- B8L.state=bulbon
- checksetB2timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B5toB8_Hit
- end sub
- sub checksetb2timer_expired()
- checksetB2timer.enabled=false
- checksetB2()
- end sub
- sub checksetB2()
- If (B5.dropped = true) and (B6.dropped = true) and (B7.dropped = true) and (B8.dropped = true) then
- Advancelock()
- B5.solenoidpulse(100)
- B6.solenoidpulse(100)
- B7.solenoidpulse(100)
- B8.solenoidpulse(100)
- B5L.state=bulboff
- B6L.state=bulboff
- B7L.state=bulboff
- B8L.state=bulboff
- P5.solenoidpulse(100)
- P6.solenoidpulse(100)
- P7.solenoidpulse(100)
- P8.solenoidpulse(100)
- P5L.state=bulboff
- P6L.state=bulboff
- P7L.state=bulboff
- P8L.state=bulboff
- addscore(5000)
- addscoreblue(5000)
- addscorepink(0)
- addbonus(500)
- addbonusblue(500)
- addbonuspink(0)
- bluebank()
- PinEvent_Drop_Targets_B5toB8_Reset
- end if
- end sub
- Sub B9_hit()
- B9L.state=bulbon
- checksetB3timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B9toB12_Hit
- end sub
- Sub B10_hit()
- B10L.state=bulbon
- checksetB3timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B9toB12_Hit
- end sub
- Sub B11_hit()
- B11L.state=bulbon
- checksetB3timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B9toB12_Hit
- end sub
- Sub B12_hit()
- B12L.state=bulbon
- checksetB3timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B9toB12_Hit
- end sub
- sub checksetb3timer_expired()
- checksetB3timer.enabled=false
- checksetB3()
- end sub
- sub checksetB3()
- If (B9.dropped = true) and (B10.dropped = true) and (B11.dropped = true) and (B12.dropped = true) then
- Advancelock()
- B9.solenoidpulse(100)
- B10.solenoidpulse(100)
- B11.solenoidpulse(100)
- B12.solenoidpulse(100)
- B9L.state=bulboff
- B10L.state=bulboff
- B11L.state=bulboff
- B12L.state=bulboff
- P9.solenoidpulse(100)
- P10.solenoidpulse(100)
- P11.solenoidpulse(100)
- P12.solenoidpulse(100)
- P9L.state=bulboff
- P10L.state=bulboff
- P11L.state=bulboff
- P12L.state=bulboff
- addscore(5000)
- addscoreblue(5000)
- addscorepink(0)
- addbonus(500)
- addbonusblue(500)
- addbonuspink(0)
- bluebank()
- PinEvent_Drop_Targets_B9toB12_Reset
- end if
- end sub
- Sub B13_hit()
- checksetB4timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B13toB16_Hit
- end sub
- Sub B14_hit()
- checksetB4timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B13toB16_Hit
- end sub
- Sub B15_hit()
- checksetB4timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B13toB16_Hit
- end sub
- Sub B16_hit()
- checksetB4timer.enabled=true
- playmusic 2, "sound41", false
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Drop_Targets_B13toB16_Hit
- end sub
- sub checksetb4timer_expired()
- checksetB4timer.enabled=false
- checksetB4()
- end sub
- sub checksetB4()
- If (B13.dropped = true) and (B14.dropped = true) and (B15.dropped = true) and (B16.dropped = true) then
- Advancelock()
- addscore(5000)
- addscoreblue(5000)
- addscorepink(0)
- addbonus(500)
- addbonusblue(500)
- addbonuspink(0)
- bluebank()
- if balllockleft = true then
- resetblueinlines.enabled=true
- resetpinkinlines.enabled=true
- end if
- PinEvent_Drop_Targets_B13toB16_Reset
- end if
- end sub
- sub resetblueinlines_expired()
- Resetblueinlines.enabled=false
- B13.solenoidpulse(100)
- B14.solenoidpulse(100)
- B15.solenoidpulse(100)
- B16.solenoidpulse(100)
- end sub
- sub resetpinkinlines_expired()
- Resetpinkinlines.enabled=false
- P13.solenoidpulse(100)
- P14.solenoidpulse(100)
- P15.solenoidpulse(100)
- P16.solenoidpulse(100)
- end sub
- dim balllockleft
- dim balllockright
- Sub P1_hit()
- P1L.state=bulbon
- checksetP1timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P1toP4_Hit
- end sub
- Sub P2_hit()
- P2L.state=bulbon
- checksetP1timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P1toP4_Hit
- end sub
- Sub P3_hit()
- P3L.state=bulbon
- checksetP1timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P1toP4_Hit
- end sub
- Sub P4_hit()
- P4L.state=bulbon
- checksetP1timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P1toP4_Hit
- end sub
- sub checksetP1timer_expired()
- checksetP1timer.enabled=false
- checksetP1()
- end sub
- sub checksetP1()
- If (P1.dropped = true) and (P2.dropped = true) and (P3.dropped = true) and (P4.dropped = true) then
- Advancelock()
- P1.solenoidpulse(100)
- P2.solenoidpulse(100)
- P3.solenoidpulse(100)
- P4.solenoidpulse(100)
- P1L.state=bulboff
- P2L.state=bulboff
- P3L.state=bulboff
- P4L.state=bulboff
- B1.solenoidpulse(100)
- B2.solenoidpulse(100)
- B3.solenoidpulse(100)
- B4.solenoidpulse(100)
- B1L.state=bulboff
- B2L.state=bulboff
- B3L.state=bulboff
- B4L.state=bulboff
- addscore(5000)
- addscoreblue(0)
- addscorepink(5000)
- addbonus(500)
- addbonusblue(0)
- addbonuspink(500)
- pinkbank()
- PinEvent_Drop_Targets_P1toP4_Reset
- end if
- end sub
- Sub P5_hit()
- P5L.state=bulbon
- checksetP2timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P5toP8_Hit
- end sub
- Sub P6_hit()
- P6L.state=bulbon
- checksetP2timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P5toP8_Hit
- end sub
- Sub P7_hit()
- P7L.state=bulbon
- checksetP2timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P5toP8_Hit
- end sub
- Sub P8_hit()
- P8L.state=bulbon
- checksetP2timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P5toP8_Hit
- end sub
- sub checksetP2timer_expired()
- checksetP2timer.enabled=false
- checksetP2()
- end sub
- sub checksetP2()
- If (P5.dropped = true) and (P6.dropped = true) and (P7.dropped = true) and (P8.dropped = true) then
- Advancelock()
- P5.solenoidpulse(100)
- P6.solenoidpulse(100)
- P7.solenoidpulse(100)
- P8.solenoidpulse(100)
- P5L.state=bulboff
- P6L.state=bulboff
- P7L.state=bulboff
- P8L.state=bulboff
- B5.solenoidpulse(100)
- B6.solenoidpulse(100)
- B7.solenoidpulse(100)
- B8.solenoidpulse(100)
- B5L.state=bulboff
- B6L.state=bulboff
- B7L.state=bulboff
- B8L.state=bulboff
- addscore(5000)
- addscoreblue(0)
- addscorepink(5000)
- addbonus(500)
- addbonusblue(0)
- addbonuspink(500)
- pinkbank()
- PinEvent_Drop_Targets_P5toP8_Reset
- end if
- end sub
- Sub P9_hit()
- P9L.state=bulbon
- checksetP3timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P9toP12_Hit
- end sub
- Sub P10_hit()
- P10L.state=bulbon
- checksetP3timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P9toP12_Hit
- end sub
- Sub P11_hit()
- P11L.state=bulbon
- checksetP3timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P9toP12_Hit
- end sub
- Sub P12_hit()
- P12L.state=bulbon
- checksetP3timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P9toP12_Hit
- end sub
- sub checksetP3timer_expired()
- checksetP3timer.enabled=false
- checksetP3()
- end sub
- sub checksetP3()
- If (P9.dropped = true) and (P10.dropped = true) and (P11.dropped = true) and (P12.dropped = true) then
- Advancelock()
- P9.solenoidpulse(100)
- P10.solenoidpulse(100)
- P11.solenoidpulse(100)
- P12.solenoidpulse(100)
- P9L.state=bulboff
- P10L.state=bulboff
- P11L.state=bulboff
- P12L.state=bulboff
- B9.solenoidpulse(100)
- B10.solenoidpulse(100)
- B11.solenoidpulse(100)
- B12.solenoidpulse(100)
- B9L.state=bulboff
- B10L.state=bulboff
- B11L.state=bulboff
- B12L.state=bulboff
- addscore(5000)
- addscoreblue(0)
- addscorepink(5000)
- addbonus(500)
- addbonusblue(0)
- addbonuspink(500)
- pinkbank()
- PinEvent_Drop_Targets_P9toP12_Reset
- end if
- end sub
- Sub P13_hit()
- checksetP4timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P13toP16_Hit
- end sub
- Sub P14_hit()
- checksetP4timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P13toP16_Hit
- end sub
- Sub P15_hit()
- checksetP4timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P13toP16_Hit
- end sub
- Sub P16_hit()
- checksetP4timer.enabled=true
- playmusic 2, "sound38", false
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Drop_Targets_P13toP16_Hit
- end sub
- sub checksetP4timer_expired()
- checksetP4timer.enabled=false
- checksetP4()
- end sub
- sub checksetP4()
- If (P13.dropped = true) and (P14.dropped = true) and (P15.dropped = true) and (P16.dropped = true) then
- Advancelock()
- addscore(5000)
- addscoreblue(0)
- addscorepink(5000)
- addbonus(500)
- addbonusblue(0)
- addbonuspink(500)
- pinkbank()
- if balllockright = true then
- resetpinkinlines.enabled=true
- resetblueinlines.enabled=true
- end if
- end if
- PinEvent_Drop_Targets_P13toP16_Reset
- end sub
- Sub bumper1_hit()
- playmusic 6, "sound25A", false
- ws2.flashforms 100, 100, bulboff
- scorebumper()
- addscore(500)
- addscoreblue(0)
- addscorepink(500)
- addbonus(50)
- addbonusblue(0)
- addbonuspink(50)
- PinEvent_Bumper1_Hit
- end sub
- Sub bumper2_hit()
- playmusic 6, "sound25B", false
- bs5.flashforms 100, 100, bulboff
- scorebumper()
- addscore(500)
- addscoreblue(500)
- addscorepink(0)
- addbonus(50)
- addbonusblue(50)
- addbonuspink(0)
- PinEvent_Bumper2_Hit
- end sub
- Sub bumper3_hit()
- playmusic 6, "sound25C", false
- ps5.flashforms 100, 100, bulboff
- scorebumper()
- addscore(500)
- addscoreblue(250)
- addscorepink(250)
- addbonus(60)
- addbonusblue(30)
- addbonuspink(30)
- PinEvent_Bumper3_Hit
- end sub
- sub bluebank()
- If (lock < 4) or (lock > 4) then
- blueseq.updateinterval = 10
- blueSeq.Play SeqUpOn, 30
- playmusic 4, "sound45", false
- If Displayint = false then
- Displayinterrupt()
- maintext.queuetext "5000 blue points", seScrollRightOver, 2000
- bluetext.queuetext " ", seWipeRadarleft, 3000
- pinktext.queuetext " ", seWipeRadarRight, 3000
- maintext2.queuetext "5000 blue points", seScrollRightOver, 2000
- bluetext2.queuetext " ", seWipeRadarleft, 3000
- pinktext2.queuetext " ", seWipeRadarRight, 3000
- end if
- end if
- end sub
- sub pinkbank()
- If (lock < 4) or (lock > 4) then
- pinkseq.updateinterval = 10
- pinkSeq.Play SeqUpOn, 30
- playmusic 4, "sound20", false
- If Displayint = false then
- Displayinterrupt()
- maintext.queuetext "5000 pink points", seScrollRightOver, 2000
- bluetext.queuetext " ", seWipeRadarleft, 3000
- pinktext.queuetext " ", seWipeRadarRight, 3000
- maintext2.queuetext "5000 pink points", seScrollRightOver, 2000
- bluetext2.queuetext " ", seWipeRadarleft, 3000
- pinktext2.queuetext " ", seWipeRadarRight, 3000
- end if
- end if
- end sub
- dim bumpers
- dim bumperdisplay
- sub scorebumper()
- bumpers = bumpers - 1
- bumperdisplay = true
- bumperdisplaytimer.enabled = true
- If displayint = false then
- If extraball = false then
- maintext.text = (bumpers) & " to adv exball"
- maintext2.text = (bumpers) & " to adv exball"
- end if
- if extraball = true then
- maintext.text = (bumpers) & " for 100K"
- maintext2.text = (bumpers) & " for 100K"
- end if
- end if
- If bumpers < 10 then
- bumper1.set bulbblink, "100", 150
- bumper2.set bulbblink, "010", 150
- bumper3.set bulbblink, "001", 150
- end if
- If bumpers = 0 then
- If extraball = true then
- addscore(100000)
- addscoreblue(50000)
- addscorepink(50000)
- Displayinterrupt()
- maintext.queuetext " 100000 Points ", seWipeRadarRight, 4000
- bluetext.queuetext " 50000", seblinkfast, 4000
- pinktext.queuetext "50000 ", seblinkfast, 4000
- maintext2.queuetext " 100000 Points ", seWipeRadarRight, 4000
- bluetext2.queuetext " 50000", seblinkfast, 4000
- pinktext2.queuetext "50000 ", seblinkfast, 4000
- If screenint = false then
- playblue100K()
- screeninterrupt()
- end if
- playmusic 8, "sound57", false
- blueseq.updateinterval = 5
- blueseq.play SeqLeftOn, 50, 2
- pinkseq.updateinterval = 5
- pinkseq.play SeqLeftOn, 50, 2
- end if
- If extraball = false then
- advanceextraball()
- end if
- resetbumpers()
- end if
- end sub
- sub bumperdisplaytimer_expired()
- bumperdisplaytimer.enabled = false
- bumperdisplay = false
- addscore(0)
- end sub
- sub resetbumpers()
- bumpers = 50
- bumper1.state = bulboff
- bumper2.state = bulboff
- bumper3.state = bulboff
- end sub
- dim osound
- sub playoutlanesound()
- stopmusic 2
- stopmusic 3
- stopmusic 4
- stopmusic 5
- stopmusic 6
- stopmusic 7
- osound = osound + 1
- If osound = 1 then
- playmusic 8, "sound50", false
- end if
- If osound = 2 then
- playmusic 8, "sound51", false
- end if
- If osound = 3 then
- playmusic 8, "sound16", false
- end if
- If osound = 4 then
- playmusic 8, "sound39", false
- end if
- If osound = 5 then
- playmusic 8, "sound54", false
- osound = osound - osound
- end if
- end sub
- dim rsound
- sub playballreleasesound()
- rsound = rsound + 1
- If rsound = 1 then
- playmusic 2, "sound 4", false
- end if
- If rsound = 2 then
- playmusic 2, "sound 7", false
- end if
- If rsound = 3 then
- playmusic 2, "sound44", false
- rsound = rsound - rsound
- end if
- end sub
- dim extraballlit
- Sub CenterTarget_hit()
- PinEvent_CenterTarget_Hit
- bs2.flashforms 400, 50, bulboff
- ps2.flashforms 400, 50, bulboff
- addscore(1000)
- addscoreblue(500)
- addscorepink(500)
- addbonus(100)
- addbonusblue(50)
- addbonuspink(50)
- Playmusic 2, "sound 13", false
- If extraball = false then
- extraballtimer.enabled=true
- extraballlit = true
- advexballlight.state = bulbblink
- end if
- end sub
- sub extraballtimer_expired()
- extraballlit = false
- advexballlight.state = bulboff
- extraballtimer.enabled=false
- if (multiballon = true) or (quickmultiballon = true) then
- centertarget.solenoidpulse(100)
- PinEvent_CenterTarget_Reset
- end if
- end sub
- dim skillshot
- sub skillshottimer_expired()
- skillshot = skillshot + 1
- If skillshot = 1 then
- skill1.state=bulbon
- skill3.state=bulboff
- end if
- If skillshot = 2 then
- skill2.state=bulbon
- skill1.state=bulboff
- end if
- If skillshot = 3 then
- skill3.state=bulbon
- skill2.state=bulboff
- skillshot = skillshot - skillshot
- end if
- end sub
- sub awardskillshot()
- skillshottimer.enabled=false
- If skillshot = 1 then
- addscoreblue(10000)
- addscore(10000)
- skill1.flashforms 1500, 75, bulboff
- playmusic 3, "sound29", false
- maintext.queuetext " 10000 blue ",seWipeRadarRight, 2000
- maintext2.queuetext " 10000 blue ",seWipeRadarRight, 2000
- end if
- If skillshot = 2 then
- advanceextraball()
- If extraball = false then
- skill2.flashforms 1500, 75, bulboff
- end if
- If extraball = true then
- skill2.state=bulboff
- addscorepink(10000)
- addscore(10000)
- skill3.flashforms 1500, 75, bulboff
- playmusic 3, "sound40", false
- maintext.queuetext " 10000 pink ",seWipeRadarRight, 2000
- maintext2.queuetext " 10000 pink ",seWipeRadarRight, 2000
- end if
- end if
- If skillshot = 0 then
- addscorepink(10000)
- addscore(10000)
- skill3.flashforms 1500, 75, bulboff
- playmusic 3, "sound40", false
- maintext.queuetext " 10000 pink ",seWipeRadarRight, 2000
- maintext2.queuetext " 10000 pink ",seWipeRadarRight, 2000
- end if
- end sub
- sub advanceextraball()
- If fpTilted = FALSE then
- If extraball = false then
- targetkicker.solenoidpulse(100)
- PinEvent_Targetkicker
- extraballlight.flashforms 1000, 100, extraballlight.state
- bulb31.flashforms 1000, 100, bulb31.state
- bulb32.flashforms 1000, 100, bulb32.state
- addscore(1000)
- addscoreblue(500)
- addscorepink(500)
- addbonus(100)
- addbonusblue(50)
- addbonuspink(50)
- if (multiballon = false) and (quickmultiballon = false) and (extraballislit = false) then
- mainseq2.updateinterval = 10
- mainseq2. play SeqUpOn, 50
- DisplayInterrupt()
- maintext.queuetext " advance ", seWipeRadarRight, 2000
- bluetext.queuetext " extra", seWipeRadarRight, 2000
- pinktext.queuetext "ball ", seWipeRadarleft, 2000
- maintext2.queuetext " advance ", seWipeRadarRight, 2000
- bluetext2.queuetext " extra", seWipeRadarRight, 2000
- pinktext2.queuetext "ball ", seWipeRadarleft, 2000
- playmusic 7, "sound52", false
- Playadvancextraball()
- screeninterrupt()
- end if
- end if
- end if
- end sub
- sub target1_hit
- awardextraball()
- extraballlight.state = bulbon
- bulb31.state = bulbon
- bulb32.state = bulbon
- end sub
- dim extraball
- dim extraballislit
- sub awardextraball()
- extraballislit = false
- playsound "knocker"
- extraball = true
- ExtraBallsAwards(CurrentPlayer) = ExtraBallsAwards(CurrentPlayer) + 1
- shootagainlight.state = bulbon
- if (multiballon = false) and (quickmultiballon = false) then
- playextraballshow()
- end if
- end sub
- sub playextraballshow()
- playmusic 6, "sound 2", false
- maintext.queuetext " extra ball ", seBlinkFast, 8000
- bluetext.queuetext " extra", seBlinkFast, 8000
- pinktext.queuetext "ball ", seBlinkFast, 8000
- maintext2.queuetext " extra ball ", seBlinkFast, 8000
- bluetext2.queuetext " extra", seBlinkFast, 8000
- pinktext2.queuetext "ball ", seBlinkFast, 8000
- mainseq.updateinterval = 5
- mainseq. play SeqUpOn, 5, 12
- playextraball()
- screeninterrupt()
- end sub
- sub droptarget25_hit()
- extraballlight.state = bulbblink
- bulb31.state = bulbblink
- bulb32.state = bulbblink
- playmusic 6, "sound 5", false
- extraballislit = true
- PinEvent_Drop_Targets_25to34_Hit
- end sub
- sub droptarget26_hit()
- playmusic 6, "sound 5", false
- PinEvent_Drop_Targets_25to34_Hit
- end sub
- sub droptarget27_hit()
- playmusic 6, "sound 5", false
- PinEvent_Drop_Targets_25to34_Hit
- end sub
- sub droptarget28_hit()
- playmusic 6, "sound 5", false
- PinEvent_Drop_Targets_25to34_Hit
- end sub
- sub droptarget29_hit()
- playmusic 6, "sound 5", false
- PinEvent_Drop_Targets_25to34_Hit
- end sub
- sub droptarget30_hit()
- playmusic 6, "sound 5", false
- PinEvent_Drop_Targets_25to34_Hit
- end sub
- sub droptarget31_hit()
- playmusic 6, "sound 5", false
- PinEvent_Drop_Targets_25to34_Hit
- end sub
- sub droptarget32_hit()
- playmusic 6, "sound 5", false
- PinEvent_Drop_Targets_25to34_Hit
- end sub
- sub droptarget33_hit()
- playmusic 6, "sound 5", false
- PinEvent_Drop_Targets_25to34_Hit
- end sub
- sub droptarget34_hit()
- playmusic 6, "sound 5", false
- PinEvent_Drop_Targets_25to34_Hit
- end sub
- sub resetextraball()
- droptarget25.solenoidpulse(100)
- droptarget26.solenoidpulse(100)
- droptarget27.solenoidpulse(100)
- droptarget28.solenoidpulse(100)
- droptarget29.solenoidpulse(100)
- droptarget30.solenoidpulse(100)
- droptarget31.solenoidpulse(100)
- droptarget32.solenoidpulse(100)
- droptarget33.solenoidpulse(100)
- droptarget34.solenoidpulse(100)
- extraballlight.state = bulboff
- bulb31.state = bulboff
- bulb32.state = bulboff
- extraball = false
- PinEvent_Drop_Targets_25to34_Reset
- end sub
- sub leftdecksling_hit()
- PinEvent_Upper_Left_Slingshot_Hit
- playmusic 2, "sound 10", false
- bs3.flashforms 100, 100, bulboff
- addscore(100)
- addscoreblue(100)
- addscorepink(0)
- addbonus(10)
- addbonusblue(10)
- addbonuspink(0)
- end sub
- sub rightdecksling_hit()
- PinEvent_Upper_Right_Slingshot_Hit
- playmusic 2, "sound 10", false
- ps3.flashforms 100, 100, bulboff
- addscore(100)
- addscoreblue(0)
- addscorepink(100)
- addbonus(10)
- addbonusblue(0)
- addbonuspink(10)
- end sub
- Dim BonusX
- Sub advanceBonusX()
- Displayinterrupt()
- maintext.queuetext "Advance Bonus X", seWipeRadarRight, 2000
- pinktext.queuetext "XXXXXXX", seWipeRadarleft, 2000
- maintext2.queuetext "Advance Bonus X", seWipeRadarRight, 2000
- pinktext2.queuetext "XXXXXXX", seWipeRadarleft, 2000
- mainseq.updateinterval = 20
- mainseq.play SeqCircleOutOn, 30
- playmusic 8, "sound32", false
- BonusX = BonusX + 1
- If BonusX = 1 Then
- If screenint = false then
- Play2X()
- screeninterrupt()
- end if
- twoxlight.state = bulbon
- bluetext.queuetext "2222222", seWipeRadarRight, 2000
- bluetext2.queuetext "2222222", seWipeRadarRight, 2000
- end if
- If BonusX = 2 Then
- If screenint = false then
- Play3X()
- screeninterrupt()
- end if
- threexlight.state = bulbon
- bluetext.queuetext "3333333", seWipeRadarRight, 2000
- bluetext2.queuetext "3333333", seWipeRadarRight, 2000
- end if
- If BonusX = 3 Then
- If screenint = false then
- Play4X()
- screeninterrupt()
- end if
- fourxlight.state = bulbon
- bluetext.queuetext "4444444", seWipeRadarRight, 2000
- bluetext2.queuetext "4444444", seWipeRadarRight, 2000
- end if
- If BonusX = 4 Then
- If screenint = false then
- Play5X()
- screeninterrupt()
- end if
- fivexlight.state = bulbon
- bluetext.queuetext "5555555", seWipeRadarRight, 2000
- bluetext2.queuetext "5555555", seWipeRadarRight, 2000
- end if
- end sub
- Dim ksound
- sub ksoundtimer_expired()
- ksound = ksound + 1
- if ksound = 3 then
- playmusic 7, "sound37", false, 0.6
- activateactivestrobe()
- end if
- If (multiballon = false) and (quickmultiballon = false) then
- if ksound = 4 then
- playmusic 7, "sound37", false, 0.6
- end if
- if ksound = 5 then
- playmusic 7, "sound37", false, 0.6
- end if
- if ksound = 6 then
- playmusic 7, "sound37", false, 0.6
- end if
- end if
- if ksound = 7 then
- playmusic 7, "sound25a", false
- end if
- if ksound = 8 then
- ksoundtimer.enabled = false
- ksound = ksound - ksound
- end if
- end sub
- 'active strobe notes:
- '0 = nothing
- '1 = bs1
- '2 = bs2
- '3 = bs3
- '4 = bs4
- '5 = bs5
- '6 = ps1
- '7 = ps2
- '8 = ps3
- '9 = ps4
- '10 = ps5
- '11 = ws1
- '12 = ws2
- Sub Activateactivestrobe()
- If activestrobe1 = 0 then
- end if
- If activestrobe1 = 1 then
- bs1.flashforms 1000, 100, bulboff
- end if
- If activestrobe1 = 2 then
- bs2.flashforms 1000, 100, bulboff
- end if
- If activestrobe1 = 3 then
- bs3.flashforms 1000, 100, bulboff
- end if
- If activestrobe1 = 4 then
- bs4.flashforms 1000, 100, bulboff
- end if
- If activestrobe1 = 5 then
- bs5.flashforms 1000, 100, bulboff
- end if
- If activestrobe1 = 6 then
- ps1.flashforms 1000, 100, bulboff
- end if
- If activestrobe1 = 7 then
- ps2.flashforms 1000, 100, bulboff
- end if
- If activestrobe1 = 8 then
- ps3.flashforms 1000, 100, bulboff
- end if
- If activestrobe1 = 9 then
- ps4.flashforms 1000, 100, bulboff
- end if
- If activestrobe1 = 10 then
- ps5.flashforms 1000, 100, bulboff
- end if
- If activestrobe1 = 11 then
- ws1.flashforms 1000, 100, bulboff
- end if
- If activestrobe1 = 12 then
- ws2.flashforms 1000, 100, bulboff
- end if
- If activestrobe2 = 0 then
- end if
- If activestrobe2 = 1 then
- bs1.flashforms 1000, 100, bulboff
- end if
- If activestrobe2 = 2 then
- bs2.flashforms 1000, 100, bulboff
- end if
- If activestrobe2 = 3 then
- bs3.flashforms 1000, 100, bulboff
- end if
- If activestrobe2 = 4 then
- bs4.flashforms 1000, 100, bulboff
- end if
- If activestrobe2 = 5 then
- bs5.flashforms 1000, 100, bulboff
- end if
- If activestrobe2 = 6 then
- ps1.flashforms 1000, 100, bulboff
- end if
- If activestrobe2 = 7 then
- ps2.flashforms 1000, 100, bulboff
- end if
- If activestrobe2 = 8 then
- ps3.flashforms 1000, 100, bulboff
- end if
- If activestrobe2 = 9 then
- ps4.flashforms 1000, 100, bulboff
- end if
- If activestrobe2 = 10 then
- ps5.flashforms 1000, 100, bulboff
- end if
- If activestrobe2 = 11 then
- ws1.flashforms 1000, 100, bulboff
- end if
- If activestrobe2 = 12 then
- ws2.flashforms 1000, 100, bulboff
- end if
- end sub
- sub allstrobesflash()
- bs1.flashforms 1000, 100, bulboff
- bs2.flashforms 1000, 100, bulboff
- bs3.flashforms 1000, 100, bulboff
- bs4.flashforms 1000, 100, bulboff
- bs5.flashforms 1000, 100, bulboff
- ps1.flashforms 1000, 100, bulboff
- ps2.flashforms 1000, 100, bulboff
- ps3.flashforms 1000, 100, bulboff
- ps4.flashforms 1000, 100, bulboff
- ps5.flashforms 1000, 100, bulboff
- ws1.flashforms 1000, 100, bulboff
- ws2.flashforms 1000, 100, bulboff
- end sub
- sub allbluestrobesflash()
- bs1.flashforms 1000, 100, bulboff
- bs2.flashforms 1000, 100, bulboff
- bs3.flashforms 1000, 100, bulboff
- bs4.flashforms 1000, 100, bulboff
- bs5.flashforms 1000, 100, bulboff
- end sub
- sub allpinkstrobesflash
- ps1.flashforms 1000, 100, bulboff
- ps2.flashforms 1000, 100, bulboff
- ps3.flashforms 1000, 100, bulboff
- ps4.flashforms 1000, 100, bulboff
- ps5.flashforms 1000, 100, bulboff
- end sub
- sub GIflash()
- bulb1.flashforms 1000, 100, bulbon
- bulb2.flashforms 1000, 100, bulbon
- bulb3.flashforms 1000, 100, bulbon
- bulb4.flashforms 1000, 100, bulbon
- bulb5.flashforms 1000, 100, bulbon
- bulb6.flashforms 1000, 100, bulbon
- bulb7.flashforms 1000, 100, bulbon
- bulb8.flashforms 1000, 100, bulbon
- bulb9.flashforms 1000, 100, bulbon
- bulb10.flashforms 1000, 100, bulbon
- bulb11.flashforms 1000, 100, bulbon
- bulb12.flashforms 1000, 100, bulbon
- bulb13.flashforms 1000, 100, bulbon
- bulb14.flashforms 1000, 100, bulbon
- bulb15.flashforms 1000, 100, bulbon
- bulb16.flashforms 1000, 100, bulbon
- bulb17.flashforms 1000, 100, bulbon
- bulb18.flashforms 1000, 100, bulbon
- bulb19.flashforms 1000, 100, bulbon
- bulb20.flashforms 1000, 100, bulbon
- bulb21.flashforms 1000, 100, bulbon
- bulb22.flashforms 1000, 100, bulbon
- bulb23.flashforms 1000, 100, bulbon
- bulb24.flashforms 1000, 100, bulbon
- bulb25.flashforms 1000, 100, bulbon
- bulb33.flashforms 1000, 100, bulbon
- bulb34.flashforms 1000, 100, bulbon
- bulb35.flashforms 1000, 100, bulbon
- bulb36.flashforms 1000, 100, bulbon
- bulb37.flashforms 1000, 100, bulbon
- bulb38.flashforms 1000, 100, bulbon
- bulb39.flashforms 1000, 100, bulbon
- bulb40.flashforms 1000, 100, bulbon
- bulb41.flashforms 1000, 100, bulbon
- bulb42.flashforms 1000, 100, bulbon
- bulb43.flashforms 1000, 100, bulbon
- bulb44.flashforms 1000, 100, bulbon
- bulb45.flashforms 1000, 100, bulbon
- leftslingshotbulb1.flashforms 1000, 100, bulbon
- leftslingshotbulb2.flashforms 1000, 100, bulbon
- rightslingshotbulb1.flashforms 1000, 100, bulbon
- rightslingshotbulb2.flashforms 1000, 100, bulbon
- rightlanebulb1.flashforms 1000, 100, bulbon
- end sub
- Dim Loops
- Dim Looptrigger1deactivated
- Dim Looptrigger2deactivated
- Sub looptrigger1_hit()
- If Looptrigger1deactivated = false then
- Loops = Loops + 1
- Looptrigger1deactivated = true
- If Loops = 2 then
- GetLoop()
- mainseq.updateinterval = 15
- mainseq.play SeqleftOn, 30
- end if
- end if
- end sub
- Sub looptrigger2_hit()
- If Looptrigger2deactivated = false then
- Loops = Loops + 1
- Looptrigger2deactivated = true
- If Loops = 2 then
- GetLoop()
- mainseq.updateinterval = 15
- mainseq.play SeqRightOn, 30
- end if
- end if
- end sub
- Sub GetLoop()
- Resetlooptriggers()
- AdvanceQuick()
- addscore(1000)
- addscoreblue(500)
- addscorepink(500)
- addbonus(100)
- addbonusblue(50)
- addbonuspink(50)
- If quickmultiballon = true then
- addscore(20000)
- addscoreblue(10000)
- addscorepink(10000)
- addbonus(1000)
- addbonusblue(500)
- addbonuspink(500)
- displayinterrupt()
- maintext.queuetext " 20000 points ", seWipeRadarRight, 3000
- bluetext.queuetext " 10000 ", seWipeRadarRight, 3000
- pinktext.queuetext " 10000 ", seWipeRadarRight, 3000
- maintext2.queuetext " 20000 points ", seWipeRadarRight, 3000
- bluetext2.queuetext " 10000 ", seWipeRadarRight, 3000
- pinktext2.queuetext " 10000 ", seWipeRadarRight, 3000
- end if
- If loops <> 5 then
- Playmusic 2, "sound33", false
- end if
- If loops = 5 then
- Playmusic 2, "sound33", false
- end if
- End Sub
- Sub Resetlooptriggers()
- Looptrigger1deactivated = false
- Looptrigger2deactivated = false
- Loops = Loops - Loops
- end sub
- Dim Quick
- Sub AdvanceQuick()
- Quick = Quick + 1
- If Quick = 1 then
- Quick1.state = Bulbon
- End if
- If Quick = 2 then
- Quick2.state = Bulbon
- End if
- If Quick = 3 then
- Quick3.state = Bulbon
- End if
- If Quick = 4 then
- Quick4.state = Bulbon
- End if
- If Quick = 5 then
- Quick5.state = Bulbon
- Lightquickmultiball()
- End if
- End Sub
- Dim Quickmballlit
- Sub Lightquickmultiball()
- If multiballon = false then
- quickmballlit = true
- quicksignbulb1.state = bulbblink
- quicksignbulb2.state = bulbblink
- quicksignbulb3.state = bulbblink
- quicksignbulb4.state = bulbblink
- looplight1.state = bulbblink
- looplight2.state = bulbblink
- leftlooptarget.solenoidpulse()
- rightlooptarget.solenoidpulse()
- playquickmultiball()
- screeninterrupt()
- end if
- If multiballon = true then
- holdquickmball()
- end if
- End Sub
- Sub loopresettrigger1_hit()
- Resetlooptriggers()
- end sub
- Sub loopresettrigger2_hit()
- Resetlooptriggers()
- end sub
- sub resetquickmball()
- quick = quick - quick
- Quick1.state = Bulboff
- Quick2.state = Bulboff
- Quick3.state = Bulboff
- Quick4.state = Bulboff
- Quick5.state = Bulboff
- quicksignbulb1.state = bulboff
- quicksignbulb2.state = bulboff
- quicksignbulb3.state = bulboff
- quicksignbulb4.state = bulboff
- looplight1.state = bulboff
- looplight2.state = bulboff
- quickscorelight1.state = bulboff
- quickscorelight2.state = bulboff
- end sub
- sub displayinterrupt()
- displayint = true
- displayinttimer.enabled=true
- end sub
- sub displayinttimer_expired()
- displayint = false
- displayinttimer.enabled=false
- If fpGameInPlay = true then
- addscore(0)
- addscoreblue(0)
- addscorepink(0)
- end if
- end sub
- sub mathcheck_expired()
- addscore(0)
- addscoreblue(0)
- addscorepink(0)
- addbonus(0)
- addbonusblue(0)
- addbonuspink(0)
- If (bluescore + pinkscore) >< nvscore(currentplayer) then
- playmusic 1, "sound19", true
- end if
- If (bluebonus + pinkbonus) >< mainbonus then
- stopmusic 1
- playmusic 2, "sound15", true
- end if
- end sub
- Sub Rubber1_hit()
- playmusic 7, "sound61", false
- addscore(10)
- addscoreblue(10)
- end sub
- Sub Rubber31_hit()
- playmusic 7, "sound61", false
- addscore(10)
- addscorepink(10)
- end sub
- Sub Rubber4_hit()
- playmusic 7, "sound61", false
- addscore(10)
- addscoreblue(10)
- end sub
- Sub Rubber11_hit()
- playmusic 7, "sound61", false
- addscore(10)
- addscorepink(10)
- end sub
- Sub Rubber3_hit()
- playmusic 7, "sound61", false
- addscore(10)
- addscoreblue(10)
- end sub
- Sub Rubber13_hit()
- playmusic 7, "sound61", false
- addscore(10)
- addscorepink(10)
- end sub
- sub leftdeckentrance_hit()
- deckentrancetimer.enabled = true
- PinEvent_leftdeckentrance_hit
- end sub
- sub rightdeckentrance_hit()
- deckentrancetimer.enabled = true
- PinEvent_rightdeckentrance_hit
- end sub
- sub deckentrancetimer_expired()
- deckentrancetimer.enabled = false
- rightdeckentrance.solenoidpulse(100)
- leftdeckentrance.solenoidpulse(100)
- PinEvent_leftdeckentrance
- PinEvent_rightdeckentrance
- end sub
- dim screentest
- dim screenint
- sub screeninterrupt()
- screenint = true
- screeninttimer.enabled = true
- shutoffmainplay()
- end sub
- sub shutoffmainplay()
- mainplaytimer1.enabled = false
- mainplaytimer2.enabled = false
- mainplaytimer3.enabled = false
- mainplay1 = mainplay1 - mainplay1
- mainplay2 = mainplay2 - mainplay2
- mainplay3 = mainplay3 - mainplay3
- end sub
- sub screeninttimer_expired()
- screeninttimer.enabled = false
- screenint = false
- mainplay()
- end sub
- sub mainplay()
- screenint = false
- screeninttimer.enabled = false
- 'lock is not lit
- If (locklit = false) and (quickmballlit = false) and (extraballislit = false) then
- playintroloop()
- end if
- If (locklit = false) and (quickmballlit = true) and (extraballislit = false) then
- playintroloop()
- mainplaytimer1.enabled = true
- end if
- If (locklit = false) and (quickmballlit = true) and (extraballislit = true) then
- playintroloop()
- mainplaytimer3.enabled = true
- end if
- If (locklit = false) and (quickmballlit = false) and (extraballislit = true) then
- playintroloop()
- mainplaytimer2.enabled = true
- end if
- 'lock is lit
- If (locklit = true) and (multiballlit = false) and (quickmballlit = false) and (extraballislit = false) then
- playlocklitLoop()
- end if
- If (locklit = true) and (multiballlit = false) and (quickmballlit = true) and (extraballislit = false) then
- playlocklitLoop()
- mainplaytimer1.enabled = true
- end if
- If (locklit = true) and (multiballlit = false) and (quickmballlit = true) and (extraballislit = true) then
- playlocklitLoop()
- mainplaytimer3.enabled = true
- end if
- If (locklit = true) and (multiballlit = false) and (quickmballlit = false) and (extraballislit = true) then
- playlocklitLoop()
- mainplaytimer2.enabled = true
- end if
- 'multiball is lit
- If (multiballlit = true) and (quickmballlit = false) and (extraballislit = false) then
- playmultiballlit()
- end if
- If (multiballlit = true) and (quickmballlit = true) and (extraballislit = false) then
- playmultiballlit()
- mainplaytimer1.enabled = true
- end if
- If (multiballlit = true) and (quickmballlit = true) and (extraballislit = true) then
- playmultiballlit()
- mainplaytimer3.enabled = true
- end if
- If (multiballlit = true) and (quickmballlit = false) and (extraballislit = true) then
- playmultiballlit()
- mainplaytimer2.enabled = true
- end if
- 'Either Multiball is on
- If (multiballon = true) or (quickmultiballon = true) then
- playmultiball()
- end if
- end sub
- dim mainplay1
- dim mainplay2
- dim mainplay3
- sub mainplaytimer1_expired()
- mainplay1 = mainplay1 + 1
- If mainplay1 = 1 then
- playquickmultiballloop()
- end if
- If mainplay1 = 2 then
- mainplay1 = mainplay1 - mainplay1
- mainplay()
- end if
- end sub
- sub mainplaytimer2_expired()
- mainplay2 = mainplay2 + 1
- If mainplay2 = 1 then
- playextraballlit()
- end if
- If mainplay2 = 2 then
- mainplay2 = mainplay2 - mainplay2
- mainplay()
- end if
- end sub
- sub mainplaytimer3_expired()
- mainplay3 = mainplay3 + 1
- If mainplay3 = 1 then
- playquickmultiballloop()
- end if
- If mainplay3 = 2 then
- playextraballlit()
- end if
- If mainplay3 = 3 then
- mainplay3 = mainplay3 - mainplay3
- mainplay()
- end if
- end sub
- sub playintro()
- screen.frame 1, 75, 16
- end sub
- sub playintroloop()
- screen.frame 16, 75, 16
- end sub
- sub Play2X()
- screen.frame 76, 98
- end sub
- sub Play3X()
- screen.frame 99, 121
- end sub
- sub Play4X()
- screen.frame 122, 144
- end sub
- sub Play5X()
- screen.frame 145, 167
- end sub
- Sub playadvancextraball()
- screen.frame 168, 182, 178
- end sub
- sub playblue100K()
- screen.frame 183, 197, 183
- end sub
- sub playbonuscount()
- screen.frame 198, 235
- end sub
- sub playextraball()
- screen.frame 236, 265, 251
- end sub
- sub playextraballlit()
- screen.frame 266, 275, 266
- end sub
- sub playgameover()
- screen.frame 276, 290, 276
- end sub
- sub playinsertcoin()
- screen.frame 291, 305, 291
- end sub
- sub playlocklitL()
- screen.frame 306, 322
- end sub
- sub playlocklitO()
- screen.frame 323, 336
- end sub
- sub playlocklitC()
- screen.frame 337, 350
- end sub
- sub playlocklitK()
- screen.frame 351, 387, 373
- end sub
- sub playlocklitLoop()
- screen.frame 373, 387, 373
- end sub
- Sub playmultiball()
- screen.frame 388, 402, 388
- end sub
- sub playmultiballlit()
- screen.frame 403, 432, 418
- end sub
- sub playpink100K()
- screen.frame 433, 447, 433
- end sub
- sub playpressstart()
- screen.frame 448, 462, 448
- end sub
- sub playquickmultiball()
- screen.frame 463, 507, 501
- end sub
- sub playquickmultiballloop()
- screen.frame 501, 507, 501
- end sub
- sub playshootagain()
- screen.frame 508, 537, 523
- end sub
- sub testscreen()
- screentest = screentest + 1
- If screentest = 1 then
- playintro()
- end if
- If screentest = 2 then
- playintroloop()
- end if
- If screentest = 3 then
- Play2X()
- end if
- If screentest = 4 then
- Play3X()
- end if
- If screentest = 5 then
- Play4X()
- end if
- If screentest = 6 then
- Play5X()
- end if
- If screentest = 7 then
- playadvancextraball()
- end if
- If screentest = 8 then
- playblue100K()
- end if
- If screentest = 9 then
- playbonuscount()
- end if
- If screentest = 10 then
- playextraball()
- end if
- If screentest = 11 then
- playextraballlit()
- end if
- If screentest = 12 then
- playgameover()
- end if
- If screentest = 13 then
- playinsertcoin()
- end if
- If screentest = 14 then
- playlocklitL()
- end if
- If screentest = 15 then
- playlocklitO()
- end if
- If screentest = 16 then
- playlocklitC()
- end if
- If screentest = 17 then
- playlocklitK()
- end if
- If screentest = 18 then
- playlocklitLoop()
- end if
- If screentest = 19 then
- playmultiball()
- end if
- If screentest = 20 then
- playmultiballlit()
- end if
- If screentest = 21 then
- playpink100K()
- end if
- If screentest = 22 then
- playpressstart()
- end if
- If screentest = 23 then
- playquickmultiball()
- end if
- If screentest = 24 then
- playquickmultiballloop()
- end if
- If screentest = 25 then
- playshootagain()
- screentest = screentest - screentest
- end if
- end sub
- 'done yay
Advertisement
Add Comment
Please, Sign In to add comment