Dragon Ball Z The Pinball

Viewing 20 posts - 1 through 20 (of 28 total)
  • Author
    Posts
  • #115554
    Javier
    Participant
      @javier1515

      https://vpinball.com/VPBdownloads/dragon-ball-z-the-pinball_dof/

      Table created based on Dragon Ball Z cartoon.

       

      This table started over a year ago for different issues I could not finish until now ..

      I hope you like it is a table with a very simple game.

       

      The rules can be seen in the Attract mode.

       

      PD: If someone suggests something to incorporate to the table I will see how to add it.

       

       

      Cheers,

      Javier..

       

      Please, if you can help me with a small contribution to update my work team and continue to make more tables I will be eternally grateful.

       

      Paypal

      "Learning without thought is vain, thought without learning is dangerous." (Confucius)

      "Aprender sin pensar es inútil, pensar sin aprender es peligroso". (Confucio)

      Please, if you can help me with a small contribution to update my work team and continue to make more tables I will be eternally grateful.

      https://paypal.me/javier1515?locale.x=es_XC

      Total of 21 users thanked author for this post. Here are last 20 listed.
      #115556
      The Loafer
      Participant
        @theloafer
        Member

        Thanks Javier, will try it tonight. We can always use more cool originals, especially new ones from established table authors.

        #115557
        Thalamus
        Moderator
          @thalamus
          ContributorMemberModerator

          You say it is a simple game and hope that I like it. Hmm. I love almost all pinball games, so I can almost quarantee you that it will.

          Thank you Javier !

          1 user thanked author for this post.
          #115561
          randr
          Keymaster
            @randr
            ModeratorMember

            Nice surprise and cool theme thanks for sharing ??

            ********************************************************
            Messing with the VPinball app and push notifications.
            So if you haven't downloaded app yet what are you waiting for!?
            for IOS and Android

            ********************************************************

            #115576
            NickD
            Participant
              @nickd

              great theme ..1 question ..is the backglass supposed to be dull looking of am I missing something .. actual picture on backglass is not illuminated .only the dmd is light

               

              Nick

              #115581
              TerryRed
              Moderator
                @terryred
                MemberContributorModerator

                Great to see you back! Love seeing more originals coming out on VPX!

                1 user thanked author for this post.
                #115586
                Ben Logan2
                Participant
                  @benlogan2
                  Member

                  Beautiful work, Javier!

                  #115597
                  chaffee1921
                  Participant
                    @chaffee1921

                    I love the original theme built into a “newer” style layout. Lot’s of originals these days use the older style layouts which aren’t as exciting in my humble opinion. This should be fun.  :good:

                    #115604
                    VONSENSEY
                    Participant
                      @vonsensey

                      Hello nice work JAvier ! Sorry but no dof no DMD for me ! Am i missing something I have to change in the scropt ? Thanks for your help.

                      #115659
                      marie
                      Participant
                        @marie
                        Member

                        Thanks!! Cool theme. I will love  trying it out :good:

                        #115691
                        bha19
                        Participant
                          @bha19
                          Member

                          I get error line 1485 controller needed

                          #115692
                          tnjhead
                          Participant
                            @tnjhead

                            cool table! I also have no DMD. been looking in the script, don’t know where I went wrong.

                            Thanks for your hard work Javier!

                            #115769
                            Javier
                            Participant
                              @javier1515

                              I get error line 1485 controller needed

                              Delete the entire script and replace it with this new one

                               

                               

                              Option Explicit
                              Randomize

                              Sub startB2S(aB2S)
                              If B2SOn Then
                              Controller.B2SSetData 1,0
                              Controller.B2SSetData 2,0
                              Controller.B2SSetData 3,0
                              Controller.B2SSetData 4,0
                              Controller.B2SSetData 5,0
                              Controller.B2SSetData 6,0
                              Controller.B2SSetData 7,0
                              Controller.B2SSetData 8,0
                              Controller.B2SSetData 9,0
                              Controller.B2SSetData 10,0
                              Controller.B2SSetData 11,0
                              Controller.B2SSetData 12,0
                              Controller.B2SSetData 13,0
                              Controller.B2SSetData 14,0
                              Controller.B2SSetData 15,0
                              Controller.B2SSetData 16,0
                              Controller.B2SSetData 17,0
                              Controller.B2SSetData 18,0
                              Controller.B2SSetData 19,0
                              Controller.B2SSetData 20,0
                              Controller.B2SSetData 21,0
                              Controller.B2SSetData 22,0
                              Controller.B2SSetData 23,0
                              Controller.B2SSetData 24,0
                              Controller.B2SSetData 25,0
                              Controller.B2SSetData 26,0
                              Controller.B2SSetData 27,0
                              Controller.B2SSetData 28,0
                              Controller.B2SSetData 29,0
                              Controller.B2SSetData 30,0
                              Controller.B2SSetData 31,0
                              Controller.B2SSetData 32,0
                              Controller.B2SSetData 33,0
                              Controller.B2SSetData 34,0
                              Controller.B2SSetData 35,0
                              Controller.B2SSetData aB2S,1
                              End If
                              End Sub

                              Const BallSize = 50
                              Const BallMass = 1.2

                              Const directory = “HKEY_CURRENT_USER\SOFTWARE\Visual Pinball\Controller\”
                              Dim objShell
                              Dim PopupMessage
                              Dim B2SController
                              Dim Controller
                              Const DOFContactors = 1
                              Const DOFKnocker = 2
                              Const DOFChimes = 3
                              Const DOFBell = 4
                              Const DOFGear = 5
                              Const DOFShaker = 6
                              Const DOFFlippers = 7
                              Const DOFTargets = 8
                              Const DOFDropTargets = 9
                              Const DOFOff = 0
                              Const DOFOn = 1
                              Const DOFPulse = 2

                              Dim DOFeffects(9)
                              Dim B2SOn
                              Dim B2SOnALT

                              Sub LoadEM
                              LoadController(“EM”)
                              End Sub

                              Sub LoadPROC(VPMver, VBSfile, VBSver)
                              LoadVBSFiles VPMver, VBSfile, VBSver
                              LoadController(“PROC”)
                              End Sub

                              Sub LoadVPM(VPMver, VBSfile, VBSver)
                              LoadVBSFiles VPMver, VBSfile, VBSver
                              LoadController(“VPM”)
                              End Sub

                              ‘This is used for tables that need 2 controllers to be launched, one for VPM and the second one for B2S.Server
                              ‘Because B2S.Server can’t handle certain solenoid or lamps, we use this workaround to communicate to B2S.Server and DOF
                              ‘By scripting the effects using DOFAlT and SoundFXDOFALT and B2SController
                              Sub LoadVPMALT(VPMver, VBSfile, VBSver)
                              LoadVBSFiles VPMver, VBSfile, VBSver
                              LoadController(“VPMALT”)
                              End Sub

                              Sub LoadVBSFiles(VPMver, VBSfile, VBSver)
                              On Error Resume Next
                              If ScriptEngineMajorVersion < 5 Then MsgBox “VB Script Engine 5.0 or higher required”
                              ExecuteGlobal GetTextFile(VBSfile)
                              If Err Then MsgBox “Unable to open ” & VBSfile & “. Ensure that it is in the same folder as this table. ” & vbNewLine & Err.Description
                              InitializeOptions
                              End Sub

                              Sub LoadVPinMAME
                              Set Controller = CreateObject(“VPinMAME.Controller”)
                              If Err Then MsgBox “Can’t load VPinMAME.” & vbNewLine & Err.Description
                              If VPMver > “” Then If Controller.Version < VPMver Or Err Then MsgBox “VPinMAME ver ” & VPMver & ” required.”
                              If VPinMAMEDriverVer < VBSver Or Err Then MsgBox VBSFile & ” ver ” & VBSver & ” or higher required.”
                              On Error Goto 0
                              End Sub

                              ‘Try to load b2s.server and if not possible, load VPinMAME.Controller instead.
                              ‘The user can put a value of 1 for ForceDisableB2S, which will force to load VPinMAME or no controller for EM tables.
                              ‘Also defines the array of toy categories that will either play the sound or trigger the DOF effect.
                              Sub LoadController(TableType)
                              Dim FileObj
                              Dim DOFConfig
                              Dim TextStr2
                              Dim tempC
                              Dim count
                              Dim ISDOF
                              Dim Answer

                              B2SOn = False
                              B2SOnALT = False
                              tempC = 0
                              on error resume next
                              Set objShell = CreateObject(“WScript.Shell”)
                              objShell.RegRead(directory & “ForceDisableB2S”)
                              If Err.number <> 0 Then
                              PopupMessage = “This latest version of Controller.vbs stores its settings in the registry. To adjust the values, you must use VP 10.2 (or newer) and setup your configuration in the DOF section of the -Keys, Nudge and DOF- dialog of Visual Pinball.”
                              objShell.RegWrite directory & “ForceDisableB2S”,0, “REG_DWORD”
                              objShell.RegWrite directory & “DOFContactors”,2, “REG_DWORD”
                              objShell.RegWrite directory & “DOFKnocker”,2, “REG_DWORD”
                              objShell.RegWrite directory & “DOFChimes”,2, “REG_DWORD”
                              objShell.RegWrite directory & “DOFBell”,2, “REG_DWORD”
                              objShell.RegWrite directory & “DOFGear”,2, “REG_DWORD”
                              objShell.RegWrite directory & “DOFShaker”,2, “REG_DWORD”
                              objShell.RegWrite directory & “DOFFlippers”,2, “REG_DWORD”
                              objShell.RegWrite directory & “DOFTargets”,2, “REG_DWORD”
                              objShell.RegWrite directory & “DOFDropTargets”,2, “REG_DWORD”
                              MsgBox PopupMessage
                              End If
                              tempC = objShell.RegRead(directory & “ForceDisableB2S”)
                              DOFeffects(1)=objShell.RegRead(directory & “DOFContactors”)
                              DOFeffects(2)=objShell.RegRead(directory & “DOFKnocker”)
                              DOFeffects(3)=objShell.RegRead(directory & “DOFChimes”)
                              DOFeffects(4)=objShell.RegRead(directory & “DOFBell”)
                              DOFeffects(5)=objShell.RegRead(directory & “DOFGear”)
                              DOFeffects(6)=objShell.RegRead(directory & “DOFShaker”)
                              DOFeffects(7)=objShell.RegRead(directory & “DOFFlippers”)
                              DOFeffects(8)=objShell.RegRead(directory & “DOFTargets”)
                              DOFeffects(9)=objShell.RegRead(directory & “DOFDropTargets”)
                              Set objShell = nothing

                              If TableType = “PROC” or TableType = “VPMALT” Then
                              If TableType = “PROC” Then
                              Set Controller = CreateObject(“VPROC.Controller”)
                              If Err Then MsgBox “Can’t load PROC”
                              Else
                              LoadVPinMAME
                              End If
                              If tempC = 0 Then
                              On Error Resume Next
                              If Controller is Nothing Then
                              Err.Clear
                              Else
                              Set B2SController = CreateObject(“B2S.Server”)
                              If B2SController is Nothing Then
                              Err.Clear
                              Else
                              B2SController.B2SName = B2ScGameName
                              B2SController.Run()
                              On Error Goto 0
                              B2SOn = True
                              B2SOnALT = True
                              End If
                              End If
                              End If
                              Else
                              If tempC = 0 Then
                              On Error Resume Next
                              Set Controller = CreateObject(“B2S.Server”)
                              If Controller is Nothing Then
                              Err.Clear
                              If TableType = “VPM” Then
                              LoadVPinMAME
                              End If
                              Else
                              Controller.B2SName = cGameName
                              If TableType = “EM” Then
                              Controller.Run()
                              End If
                              On Error Goto 0
                              B2SOn = True
                              End If
                              Else
                              If TableType = “VPM” Then
                              LoadVPinMAME
                              End If
                              End If
                              Set DOFConfig=Nothing
                              Set FileObj=Nothing
                              End If
                              End sub

                              ‘Additional DOF sound vs toy/effect helpers:

                              ‘Mostly used for SS tables, returns the sound to be played or no sound,
                              ‘depending on the toy category that is set to play the sound or not.
                              ‘The trigger of the DOF Effect is set at the DOF method level
                              ‘because for SS tables we usually don’t need to script the DOF calls.
                              ‘Just map the Solenoid, Switches and Lamps in the ini file directly.
                              Function SoundFX (Sound, Effect)
                              If ((Effect = 0 And B2SOn) Or DOFeffects(Effect)=1) Then
                              SoundFX = “”
                              Else
                              SoundFX = Sound
                              End If
                              End Function

                              ‘Mostly used for EM tables, because in EM there is most often a direct link
                              ‘between a sound and DOF Trigger, DOFevent is the ID reference of the DOF Call
                              ‘that is used in the DOF ini file and State defines if it pulses, goes on or off.
                              ‘Example based on the constants that must be present in the table script:
                              ‘SoundFXDOF(“flipperup”,101,DOFOn,contactors)
                              Function SoundFXDOF (Sound, DOFevent, State, Effect)
                              If DOFeffects(Effect)=1 Then
                              SoundFXDOF = “”
                              DOF DOFevent, State
                              ElseIf DOFeffects(Effect)=2 Then
                              SoundFXDOF = Sound
                              DOF DOFevent, State
                              Else
                              SoundFXDOF = Sound
                              End If
                              End Function

                              ‘Method used to communicate to B2SController instead of the usual Controller
                              Function SoundFXDOFALT (Sound, DOFevent, State, Effect)
                              If DOFeffects(Effect)=1 Then
                              SoundFXDOFALT = “”
                              DOFALT DOFevent, State
                              ElseIf DOFeffects(Effect)=2 Then
                              SoundFXDOFALT = Sound
                              DOFALT DOFevent, State
                              Else
                              SoundFXDOFALT = Sound
                              End If
                              End Function

                              ‘Pure method that makes it easier to call just a DOF Event.
                              ‘Example DOF 123, DOFOn
                              ‘Where 123 refers to E123 in a line in the DOF ini.
                              Sub DOF(DOFevent, State)
                              If B2SOn Then
                              If State = 2 Then
                              Controller.B2SSetData DOFevent, 1:Controller.B2SSetData DOFevent, 0
                              Else
                              Controller.B2SSetData DOFevent, State
                              End If
                              End If
                              End Sub

                              ‘If PROC or B2SController is used, we need to pass B2S events to the B2SController instead of the usual Controller
                              ‘Use this method to pass information to DOF instead of the Sub DOF
                              Sub DOFALT(DOFevent, State)
                              If B2SOnALT Then
                              If State = 2 Then
                              B2SController.B2SSetData DOFevent, 1:B2SController.B2SSetData DOFevent, 0
                              Else
                              B2SController.B2SSetData DOFevent, State
                              End If
                              End If
                              End Sub
                              ‘ Load the core.vbs for supporting Subs and functions
                              LoadCoreVBS

                              Sub LoadCoreVBS
                              On Error Resume Next
                              ExecuteGlobal GetTextFile(“core.vbs”)
                              If Err Then MsgBox “Can’t open core.vbs”
                              On Error Goto 0
                              End Sub

                              ExecuteGlobal GetTextFile(“FPVPX.vbs”)
                              If Err Then MsgBox “you need the fpvpx.vbs for the proper functioning of the table”

                              Const cGameName = “DBZ”

                              if Table1.ShowDT Then
                              D1.visible = 1
                              Else
                              D1.visible = 0
                              End If

                              ‘ Define any Constants
                              Const TableName = “Dragon Ball Z”
                              Const myVersion = “1.0.0”
                              Const MaxPlayers = 1 ‘ from 1 to 4
                              Const BallSaverTime = 15 ‘ in seconds
                              Const MaxMultiplier = 5 ‘ limit to 5x in this game, both bonus multiplier and playfield multiplier
                              Const BallsPerGame = 3 ‘ usually 3 or 5
                              Const MaxMultiballs = 5 ‘ max number of balls during multiballs

                              ‘ Define Global Variables
                              Dim PlayersPlayingGame
                              Dim CurrentPlayer
                              Dim Credits
                              Dim BonusPoints(4)
                              Dim BonusHeldPoints(4)
                              Dim BonusMultiplier(4)
                              Dim PlayfieldMultiplier(4)
                              Dim bBonusHeld
                              Dim BallsRemaining(4)
                              Dim ExtraBallsAwards(4)
                              Dim Score(4)
                              Dim HighScore(10)
                              Dim HighScoreName(10)
                              Dim Jackpot(4)
                              Dim SuperJackpot
                              Dim Tilt
                              Dim TiltSensitivity
                              Dim Tilted
                              Dim TotalGamesPlayed
                              Dim mBalls2Eject
                              Dim SkillshotValue(4)
                              Dim bAutoPlunger
                              Dim bInstantInfo
                              Dim bAttractMode

                              ‘ Define Game Control Variables
                              Dim LastSwitchHit
                              Dim BallsOnPlayfield
                              Dim BallsInLock(4)
                              Dim BallsInHole

                              ‘ Define Game Flags
                              Dim bFreePlay
                              Dim bGameInPlay
                              Dim bOnTheFirstBall
                              Dim bBallInPlungerLane
                              Dim bBallSaverActive
                              Dim bBallSaverReady
                              Dim bMultiBallMode
                              Dim bMusicOn
                              Dim bSkillshotReady
                              Dim bExtraBallWonThisBall
                              Dim bJustStarted
                              Dim bJackpot

                              ‘ core.vbs variables
                              Dim plungerIM ‘used mostly as an autofire plunger during multiballs

                              ‘ tables variables and Mode init
                              Dim LaneBonus
                              Dim TargetBonus
                              Dim BonusBumper
                              Dim RampBonus
                              Dim BumperValue(4)
                              Dim BumperHits
                              Dim SuperBumperHits
                              Dim SpinnerValue(4)
                              Dim SpinCount
                              Dim RampHits
                              Dim OrbitHits
                              Dim TargetHits
                              Dim loopCount

                              Dim bootT
                              Sub Table1_Init()
                              Dim i
                              Randomize
                              LoadEM

                              ‘Impulse Plunger as autoplunger
                              Const IMPowerSetting = 80 ‘ Plunger Power
                              Const IMTime = 1.1 ‘ Time in seconds for Full Plunge
                              Set plungerIM = New cvpmImpulseP
                              With plungerIM
                              .InitImpulseP swplunger, IMPowerSetting, IMTime
                              .Random 1.5
                              .InitExitSnd SoundFX(“fx_kicker”, DOFContactors), SoundFX(“fx_solenoid”, DOFContactors)
                              .CreateEvents “plungerIM”
                              End With

                              Boot.enabled = 1

                              ‘ Misc. VP table objects Initialisation, droptargets, animations…
                              VPObjects_Init

                              ‘ load saved values, highscore, names, jackpot
                              Loadhs

                              ‘ freeplay or coins
                              bFreePlay = False ‘we dont want coins

                              ‘ Init main variables and any other flags
                              bAttractMode = False
                              bOnTheFirstBall = False
                              bBallInPlungerLane = False
                              bBallSaverActive = False
                              bBallSaverReady = False
                              bMultiBallMode = False
                              bGameInPlay = False
                              bAutoPlunger = False
                              bMusicOn = True
                              BallsOnPlayfield = 0
                              Tilt = 0
                              TiltSensitivity = 6
                              Tilted = False
                              bBonusHeld = False
                              bJustStarted = True
                              bJackpot = False
                              bInstantInfo = False
                              ‘ set any lights for the attract mode
                              GiOff
                              Saiyan = 0
                              LockDiverterOn

                              ‘StartAttractMode
                              vpmtimer.addtimer 4000, “StartAttractMode ‘”

                              For i = 1 To MaxPlayers
                              Score(i) = 0
                              BonusPoints(i) = 0
                              BonusHeldPoints(i) = 0
                              BonusMultiplier(i) = 1
                              BallsRemaining(i) = BallsPerGame
                              ExtraBallsAwards(i) = 0
                              Next

                              If Credits > 0 Then DOF 128, DOFOn

                              End Sub

                              Sub Boot_Timer
                              bootT = bootT + 1
                              Select Case bootT
                              Case 0:
                              D1.text = “********************************”
                              DisplayB2SText “********************************”
                              Playsound “fx_sys11_bootup”
                              Case 1:
                              D1.text = “////////////////////////////////”
                              DisplayB2SText “////////////////////////////////”
                              Playsound “fx_sys11_bootup”
                              Case 2:
                              D1.text = “********************************”
                              DisplayB2SText “********************************”
                              Playsound “fx_sys11_bootup”
                              Case 3:
                              bootT = 0
                              D1.text = ” ”
                              DisplayB2SText ” ”
                              boot.enabled = 0
                              End Select
                              End Sub

                              ‘******
                              ‘ Keys
                              ‘******

                              Sub Table1_KeyDown(ByVal Keycode)
                              If Keycode = AddCreditKey Then
                              Credits = Credits + 1
                              DOF 128, DOFOn
                              If(Tilted = False) Then
                              PlaySound “fx_coin”
                              DisplayB2SText ” CREDITS ” &credits
                              D1.Text = ” CREDITS ” &credits
                              PlaySound “go”
                              If NOT bGameInPlay Then ShowTableInfo:
                              End If
                              End If

                              If keycode = PlungerKey Then
                              PlungerIM.AutoFire
                              If bBallInPlungerLane Then DOF 109, DOFPulse
                              End If

                              If bGameInPlay AND NOT Tilted Then
                              If keycode = LeftTiltKey Then Nudge 90, 6:PlaySound “fx_nudge”, 0, 1, -0.1, 0.25:CheckTilt
                              If keycode = RightTiltKey Then Nudge 270, 6:PlaySound “fx_nudge”, 0, 1, 0.1, 0.25:CheckTilt
                              If keycode = CenterTiltKey Then Nudge 0, 7:PlaySound “fx_nudge”, 0, 1, 1, 0.25:CheckTilt

                              If keycode = LeftFlipperKey Then SolLFlipper 1
                              If keycode = RightFlipperKey Then SolRFlipper 1

                              If keycode = StartGameKey Then
                              If((PlayersPlayingGame < MaxPlayers) AND(bOnTheFirstBall = True) ) Then

                              If(bFreePlay = True) Then
                              PlayersPlayingGame = PlayersPlayingGame + 1
                              TotalGamesPlayed = TotalGamesPlayed + 1
                              Else
                              If(Credits > 0) then
                              PlayersPlayingGame = PlayersPlayingGame + 1
                              TotalGamesPlayed = TotalGamesPlayed + 1
                              Credits = Credits – 1
                              If Credits < 1 Then DOF 128, DOFOff
                              Else
                              ‘ Not Enough Credits to start a game.

                              ‘DMD CenterLine(0, “CREDITS ” & Credits), CenterLine(1, “INSERT COIN”), 0, eNone, eBlink, eNone, 500, True, “”
                              End If
                              End If
                              End If
                              End If
                              Else ‘ If (GameInPlay)

                              If keycode = StartGameKey Then
                              If(bFreePlay = True) Then
                              If(BallsOnPlayfield = 0) Then
                              ResetForNewGame()
                              End If
                              Else
                              If(Credits > 0) Then
                              If(BallsOnPlayfield = 0) Then
                              Credits = Credits – 1
                              If Credits < 1 Then DOF 128, DOFOff
                              ResetForNewGame()
                              End If
                              Else
                              ‘ Not Enough Credits to start a game.
                              D1.Text = ” CREDITS ” &credits&” INSERT COIN”
                              DisplayB2SText ” CREDITS ” &credits &” INSERT COIN ”
                              End If
                              End If
                              End If
                              End If ‘ If (GameInPlay)

                              If hsbModeActive Then EnterHighScoreKey(keycode)

                              ‘ Table specific
                              End Sub

                              Sub Table1_KeyUp(ByVal keycode)
                              If bGameInPLay AND NOT Tilted Then
                              If keycode = LeftFlipperKey Then SolLFlipper 0
                              If keycode = RightFlipperKey Then SolRFlipper 0
                              End If
                              End Sub

                              Sub InstantInfoTimer_Timer
                              InstantInfoTimer.Enabled = False
                              bInstantInfo = True
                              DMDFlush
                              UltraDMDTimer.Enabled = 1
                              End Sub

                              Sub InstantInfo
                              Jackpot = 10000 + Round(Score(CurrentPlayer) / 10, 0)
                              D1.Text = “INSTANT INFO”
                              D1.Text = “JACKPOT ” & Jackpot
                              D1.Text = “BONUS MULT ” & BonusMultiplier(CurrentPlayer)
                              D1.Text = “RAMP BONUS ” & RampBonus
                              DisplayB2SText ” INSTANT INFO ”
                              DisplayB2SText ” JACKPOT ” & Jackpot
                              DisplayB2SText ” BONUS MULT ” & BonusMultiplier(CurrentPlayer)
                              DisplayB2SText ” RAMP BONUS ” & RampBonus
                              ‘ DMD “black.jpg”, “”, “INSTANT INFO”, 500
                              ‘ DMD “black.jpg”, “JACKPOT”, Jackpot, 800
                              ‘ DMD “black.jpg”, “LEVEL”, Level(CurrentPlayer), 800
                              ‘ DMD “black.jpg”, “BONUS MULT”, BonusMultiplier(CurrentPlayer), 800
                              ‘ DMD “black.jpg”, “ORBIT BONUS”, OrbitHits, 800
                              ‘ DMD “black.jpg”, “LANE BONUS”, LaneBonus, 800
                              ‘ DMD “black.jpg”, “TARGET BONUS”, TargetBonus, 800
                              ‘ DMD “black.jpg”, “RAMP BONUS”, RampBonus, 800
                              ‘ DMD “black.jpg”, “MONSTERS KILLED”, Monsters(CurrentPlayer), 800
                              End Sub

                              ‘*************
                              ‘ Pause Table
                              ‘*************

                              Sub table1_Paused
                              End Sub

                              Sub table1_unPaused
                              End Sub

                              Sub table1_Exit
                              Savehs
                              If B2SOn Then Controller.Stop
                              End Sub

                              ‘********************
                              ‘ Flippers
                              ‘********************

                              Sub SolLFlipper(Enabled)
                              ‘ startB2S(4)
                              If Enabled Then
                              PlaySound SoundFXDOF(“fx_flipperup”, 101, DOFOn, DOFFlippers), 0, 1, -0.05, 0.15
                              LeftFlipper.RotateToEnd
                              RotateLaneLightsLeft
                              RotateLaneLightsLeftUp

                              Else
                              PlaySound SoundFXDOF(“fx_flipperdown”, 101, DOFOff, DOFFlippers), 0, 1, -0.05, 0.15
                              LeftFlipper.RotateToStart
                              End If
                              End Sub

                              Sub SolRFlipper(Enabled)
                              ‘ startB2S(4)
                              If Enabled Then
                              PlaySound SoundFXDOF(“fx_flipperup”, 102, DOFOn, DOFFlippers), 0, 1, 0.05, 0.15
                              RightFlipper.RotateToEnd
                              RotateLaneLightsRight
                              RotateLaneLightsRightUp

                              Else
                              PlaySound SoundFXDOF(“fx_flipperdown”, 102, DOFOff, DOFFlippers), 0, 1, 0.05, 0.15
                              RightFlipper.RotateToStart
                              End If
                              End Sub

                              ‘ flippers hit Sound

                              Sub LeftFlipper_Collide(parm)
                              PlaySound “fx_rubber_flipper”, 0, parm / 10, -0.05, 0.25
                              End Sub

                              Sub RightFlipper_Collide(parm)
                              PlaySound “fx_rubber_flipper”, 0, parm / 10, 0.05, 0.25
                              End Sub

                              Sub RotateLaneLightsLeftUp
                              Dim TempState
                              TempState = L11.State
                              l11.State = l12.State
                              l12.State = L13.State
                              L13.State = TempState
                              End Sub

                              Sub RotateLaneLightsRightUp
                              Dim TempState
                              TempState = L13.State
                              L13.State = l12.State
                              L12.State = L11.State
                              L11.State = TempState
                              End Sub

                              Sub RotateLaneLightsLeft
                              Dim TempState
                              TempState = l14.State
                              l14.State = l15.State
                              l15.State = l16.State
                              l16.State = l17.State
                              l17.State = TempState
                              End Sub

                              Sub RotateLaneLightsRight
                              Dim TempState
                              TempState = l17.State
                              l17.State = l16.State
                              l16.State = l15.State
                              l15.State = l14.State
                              l14.State = TempState
                              End Sub

                              ‘*********
                              ‘ TILT
                              ‘*********

                              ‘NOTE: The TiltDecreaseTimer Subtracts .01 from the “Tilt” variable every round

                              Sub CheckTilt ‘Called when table is nudged
                              Tilt = Tilt + TiltSensitivity ‘Add to tilt count
                              TiltDecreaseTimer.Enabled = True
                              If(Tilt> TiltSensitivity) AND(Tilt <15) Then ‘show a warning
                              ‘DMDFlush
                              ‘DMD “”, ” “, “CAREFUL!”, 800
                              DisplayB2SText ” CAREFUL! ”
                              End if
                              If Tilt> 15 Then ‘If more that 15 then TILT the table
                              Tilted = True
                              ‘display Tilt
                              ‘DMDFlush
                              DisplayB2SText ” TILT! ”
                              ‘ DMD “”, ” “, “TILT!”, 99999
                              DisableTable True
                              TiltRecoveryTimer.Enabled = True ‘start the Tilt delay to check for all the balls to be drained
                              End If
                              End Sub

                              Sub TiltDecreaseTimer_Timer
                              ‘ DecreaseTilt
                              If Tilt> 0 Then
                              Tilt = Tilt – 0.1
                              Else
                              TiltDecreaseTimer.Enabled = False
                              End If
                              End Sub

                              Sub DisableTable(Enabled)
                              If Enabled Then
                              ‘turn off GI and turn off all the lights
                              GiOff
                              LightSeqTilt.Play SeqAllOff
                              ‘Disable slings, bumpers etc
                              LeftFlipper.RotateToStart
                              RightFlipper.RotateToStart
                              Bumper1.Force = 0
                              Bumper2.Force = 0
                              Bumper3.Force = 0

                              LeftSlingShot.Disabled = 1
                              RightSlingShot.Disabled = 1
                              Else
                              ‘turn back on GI and the lights
                              GiOn
                              LightSeqTilt.StopPlay
                              Bumper1.Force = 7
                              Bumper2.Force = 7
                              Bumper3.Force = 7
                              LeftSlingShot.Disabled = 0
                              RightSlingShot.Disabled = 0
                              ‘clean up the buffer display
                              ‘ DMDFlush
                              End If
                              End Sub

                              Sub TiltRecoveryTimer_Timer()
                              ‘ if all the balls have been drained then..
                              If(BallsOnPlayfield = 0) Then
                              ‘ do the normal end of ball thing (this doesn’t give a bonus if the table is tilted)
                              EndOfBall()
                              TiltRecoveryTimer.Enabled = False
                              End If
                              ‘ else retry (checks again in another second or so)
                              End Sub

                              ‘********************
                              ‘ Music as wav sounds
                              ‘********************

                              Dim Song
                              Song = “”

                              Sub PlaySong(name)
                              If bMusicOn Then
                              If Song <> name Then
                              StopSound Song
                              Song = name
                              If Song = “DBZ_end” Then
                              PlaySound Song, 0, 0.1 ‘this last number is the volume, from 0 to 1
                              Else
                              PlaySound Song, -1, 0.1 ‘this last number is the volume, from 0 to 1
                              End If
                              End If
                              End If
                              End Sub

                              ‘**********************
                              ‘ GI effects
                              ‘ independent routine
                              ‘ it turns on the gi
                              ‘ when there is a ball
                              ‘ in play
                              ‘**********************

                              Dim OldGiState
                              OldGiState = -1 ‘start witht the Gi off

                              Sub ChangeGi(col) ‘changes the gi color
                              Dim bulb
                              For each bulb in aGILights
                              SetLightColor bulb, col, -1
                              Next
                              End Sub

                              Sub GIUpdateTimer_Timer
                              Dim tmp, obj
                              tmp = Getballs
                              If UBound(tmp) <> OldGiState Then
                              OldGiState = Ubound(tmp)
                              If UBound(tmp) = -1 Then ‘we have 4 captive balls on the table (-1 means no balls, 0 is the first ball, 1 is the second..)
                              GiOff ‘ turn off the gi if no active balls on the table, we could also have used the variable ballsonplayfield.
                              Else
                              Gion
                              End If
                              End If
                              End Sub

                              Sub GiOn
                              DOF 126, DOFOn
                              Dim bulb
                              For each bulb in aGiLights
                              bulb.State = 1
                              Next
                              PlaySound “fx_relay_on”
                              Table1.ColorGradeImage = “ColorGradeLUT256x16_ConSat”
                              End Sub

                              Sub GiOff
                              DOF 126, DOFOff
                              Dim bulb
                              For each bulb in aGiLights
                              bulb.State = 0
                              Next
                              PlaySound “fx_relay_off”
                              Table1.ColorGradeImage = “ColorGradeLUT256x16_ConSatDark”
                              End Sub

                              ‘ GI & light sequence effects

                              Sub GiEffect(n)
                              Dim ii
                              Select Case n
                              Case 0 ‘all off
                              LightSeqGi.Play SeqAlloff
                              Case 1 ‘all blink
                              LightSeqGi.UpdateInterval = 10
                              LightSeqGi.Play SeqBlinking, , 10, 10
                              Case 2 ‘random
                              LightSeqGi.UpdateInterval = 10
                              LightSeqGi.Play SeqRandom, 50, , 1000
                              Case 3 ‘upon
                              LightSeqGi.UpdateInterval = 4
                              LightSeqGi.Play SeqUpOn, 5, 1
                              Case 4 ‘ left-right-left
                              LightSeqGi.UpdateInterval = 5
                              LightSeqGi.Play SeqLeftOn, 10, 1
                              LightSeqGi.UpdateInterval = 5
                              LightSeqGi.Play SeqRightOn, 10, 1
                              End Select
                              End Sub

                              Sub LightEffect(n)
                              Select Case n
                              Case 0 ‘ all off
                              LightSeqInserts.Play SeqAlloff
                              Case 1 ‘all blink
                              LightSeqInserts.UpdateInterval = 10
                              LightSeqInserts.Play SeqBlinking, , 10, 10
                              Case 2 ‘random
                              LightSeqInserts.UpdateInterval = 10
                              LightSeqInserts.Play SeqRandom, 50, , 1000
                              Case 3 ‘upon
                              LightSeqInserts.UpdateInterval = 4
                              LightSeqInserts.Play SeqUpOn, 10, 1
                              Case 4 ‘ left-right-left
                              LightSeqInserts.UpdateInterval = 5
                              LightSeqInserts.Play SeqLeftOn, 10, 1
                              LightSeqInserts.UpdateInterval = 5
                              LightSeqInserts.Play SeqRightOn, 10, 1
                              End Select
                              End Sub

                              ‘ Flasher Effects using lights

                              Dim FEStep, FEffect
                              FEStep = 0
                              FEffect = 0

                              Sub FlashEffect(n)
                              Dim ii
                              Select case n
                              Case 0 ‘ all off
                              LightSeqFlasher.Play SeqAlloff
                              Case 1 ‘all blink
                              LightSeqFlasher.UpdateInterval = 10
                              LightSeqFlasher.Play SeqBlinking, , 10, 10
                              Case 2 ‘random
                              LightSeqFlasher.UpdateInterval = 10
                              LightSeqFlasher.Play SeqRandom, 50, , 1000
                              Case 3 ‘upon
                              LightSeqFlasher.UpdateInterval = 4
                              LightSeqFlasher.Play SeqUpOn, 10, 1
                              Case 4 ‘ left-right-left
                              LightSeqFlasher.UpdateInterval = 5
                              LightSeqFlasher.Play SeqLeftOn, 10, 1
                              LightSeqFlasher.UpdateInterval = 5
                              LightSeqFlasher.Play SeqRightOn, 10, 1
                              End Select
                              End Sub

                              ‘ *********************************************************************
                              ‘ Supporting Ball & Sound Functions
                              ‘ *********************************************************************

                              Function Vol(ball) ‘ Calculates the Volume of the sound based on the ball speed
                              Vol = Csng(BallVel(ball) ^2 / 1500)
                              End Function

                              Function Pan(ball) ‘ Calculates the pan for a ball based on the X position on the table. “table1” is the name of the table
                              Dim tmp
                              tmp = ball.x * 2 / table1.width-1
                              If tmp> 0 Then
                              Pan = Csng(tmp ^10)
                              Else
                              Pan = Csng(-((- tmp) ^10) )
                              End If
                              End Function

                              Function Pitch(ball) ‘ Calculates the pitch of the sound based on the ball speed
                              Pitch = BallVel(ball) * 20
                              End Function

                              Function BallVel(ball) ‘Calculates the ball speed
                              BallVel = INT(SQR((ball.VelX ^2) + (ball.VelY ^2) ) )
                              End Function

                              ‘*****************************************
                              ‘ JP’s VP10 Rolling Sounds
                              ‘*****************************************

                              Const tnob = 20 ‘ total number of balls
                              Const lob = 0 ‘number of locked balls
                              ReDim rolling(tnob)
                              InitRolling

                              Sub InitRolling
                              Dim i
                              For i = 0 to tnob
                              rolling(i) = False
                              Next
                              End Sub

                              Sub RollingUpdate()
                              Dim BOT, b, ballpitch
                              BOT = GetBalls

                              ‘ stop the sound of deleted balls
                              For b = UBound(BOT) + 1 to tnob
                              rolling(b) = False
                              StopSound(“fx_ballrolling” & b)
                              Next

                              ‘ exit the sub if no balls on the table
                              If UBound(BOT) = -1 Then Exit Sub ‘there no extra balls on this table

                              ‘ play the rolling sound for each ball
                              For b = lob to UBound(BOT)
                              If BallVel(BOT(b) )> 1 Then
                              If BOT(b).z <30 Then
                              ballpitch = Pitch(BOT(b) )
                              Else
                              ballpitch = Pitch(BOT(b) ) * 50
                              End If
                              rolling(b) = True
                              PlaySound(“fx_ballrolling” & b), -1, Vol(BOT(b) ), Pan(BOT(b) ), 0, ballpitch, 1, 0
                              Else
                              If rolling(b) = True Then
                              StopSound(“fx_ballrolling” & b)
                              rolling(b) = False
                              End If
                              End If
                              Next
                              End Sub

                              ‘**********************
                              ‘ Ball Collision Sound
                              ‘**********************

                              Sub OnBallBallCollision(ball1, ball2, velocity)
                              PlaySound(“fx_collide”), 0, Csng(velocity) ^2 / 2000, Pan(ball1), 0, Pitch(ball1), 0, 0
                              End Sub

                              ‘*********** BALL SHADOW *********************************
                              Dim BallShadow
                              BallShadow = Array (BallShadow1, BallShadow2, BallShadow3, BallShadow4, BallShadow5, BallShadow6, BallShadow7)

                              Sub BallShadowUpdate()
                              Dim BOT, b
                              BOT = GetBalls
                              ‘ render the shadow for each ball
                              For b = 0 to Ubound(BOT)
                              If BOT(b).X < Table1.Width/2 Then
                              BallShadow(b).X = ((BOT(b).X) – (Ballsize/6) + ((BOT(b).X – (Table1.Width/2))/10)) + 10
                              Else
                              BallShadow(b).X = ((BOT(b).X) + (Ballsize/6) + ((BOT(b).X – (Table1.Width/2))/10)) – 10
                              End If
                              ballShadow(b).Y = BOT(b).Y + 15
                              If BOT(b).Z > 20 Then
                              BallShadow(b).visible = 1
                              Else
                              BallShadow(b).visible = 0
                              End If
                              Next
                              End Sub

                              ‘******************************
                              ‘ Diverse Collection Hit Sounds
                              ‘******************************

                              Sub aMetals_Hit(idx):PlaySound “fx_MetalHit”, 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub
                              Sub aRubber_Bands_Hit(idx):PlaySound “fx_rubber_band”, 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub
                              Sub aRubber_Posts_Hit(idx):PlaySound “fx_postrubber”, 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub
                              Sub aRubber_Pins_Hit(idx):PlaySound “fx_rubber”, 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub
                              Sub aPlastics_Hit(idx):PlaySound “fx_plastichit”, 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub
                              Sub aGates_Hit(idx):PlaySound “fx_Gate”, 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub
                              Sub aWoods_Hit(idx):PlaySound “fx_Woodhit”, 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub

                              ‘ Ramp Soundss
                              Sub RHelp_Hit()
                              StopSound “fx_metalrolling”
                              PlaySound “fx_balldrop”, 0, 1, pan(ActiveBall)
                              End Sub

                              Sub LHelp1_Hit()
                              StopSound “fx_metalrolling”
                              PlaySound “fx_balldrop”, 0, 1, pan(ActiveBall)
                              End Sub

                              Sub RHelp1_Hit()
                              StopSound “fx_metalrolling”
                              PlaySound “DBZ_teleport”, 0, 1, pan(ActiveBall)
                              End Sub

                              Sub Trigger2_Hit()
                              PlaySound “fx_metalrolling”, 0, 1, pan(ActiveBall)
                              End Sub

                              ‘****************************************
                              ‘ Real Time updatess using the GameTimer
                              ‘****************************************
                              ‘used for all the real time updates

                              Sub GameTimer_Timer
                              RollingUpdate
                              BallShadowUpdate
                              LockDiverterP.objRotY = LockDiverter.CurrentAngle
                              End Sub

                              ‘********************************************************************************************
                              ‘ Only for VPX 10.2 and higher.
                              ‘ FlashForMs will blink light or a flasher for TotalPeriod(ms) at rate of BlinkPeriod(ms)
                              ‘ When TotalPeriod done, light or flasher will be set to FinalState value where
                              ‘ Final State values are: 0=Off, 1=On, 2=Return to previous State
                              ‘********************************************************************************************

                              Sub FlashForMs(MyLight, TotalPeriod, BlinkPeriod, FinalState) ‘thanks gtxjoe for the first version

                              If TypeName(MyLight) = “Light” Then

                              If FinalState = 2 Then
                              FinalState = MyLight.State ‘Keep the current light state
                              End If
                              MyLight.BlinkInterval = BlinkPeriod
                              MyLight.Duration 2, TotalPeriod, FinalState
                              ElseIf TypeName(MyLight) = “Flasher” Then

                              Dim steps

                              ‘ Store all blink information
                              steps = Int(TotalPeriod / BlinkPeriod + .5) ‘Number of ON/OFF steps to perform
                              If FinalState = 2 Then ‘Keep the current flasher state
                              FinalState = ABS(MyLight.Visible)
                              End If
                              MyLight.UserValue = steps * 10 + FinalState ‘Store # of blinks, and final state

                              ‘ Start blink timer and create timer subroutine
                              MyLight.TimerInterval = BlinkPeriod
                              MyLight.TimerEnabled = 0
                              MyLight.TimerEnabled = 1
                              ExecuteGlobal “Sub ” & MyLight.Name & “_Timer:” & “Dim tmp, steps, fstate:tmp=me.UserValue:fstate = tmp MOD 10:steps= tmp\10 -1:Me.Visible = steps MOD 2:me.UserValue = steps *10 + fstate:If Steps = 0 then Me.Visible = fstate:Me.TimerEnabled=0:End if:End Sub”
                              End If
                              End Sub

                              ‘******************************************
                              ‘ Change light color – simulate color leds
                              ‘ changes the light color and state
                              ‘ 10 colors: red, orange, amber, yellow…
                              ‘******************************************
                              ‘ in this table this colors are use to keep track of the progress during the acts and battles

                              ‘colors
                              Dim red, orange, amber, yellow, darkgreen, green, blue, darkblue, purple, white

                              red = 10
                              orange = 9
                              amber = 8
                              yellow = 7
                              darkgreen = 6
                              green = 5
                              blue = 4
                              darkblue = 3
                              purple = 2
                              white = 1

                              Sub SetLightColor(n, col, stat)
                              Select Case col
                              Case 0
                              n.color = RGB(18, 0, 0)
                              n.colorfull = RGB(255, 0, 0)
                              Case red
                              n.color = RGB(18, 0, 0)
                              n.colorfull = RGB(255, 0, 0)
                              Case orange
                              n.color = RGB(18, 3, 0)
                              n.colorfull = RGB(255, 64, 0)
                              Case amber
                              n.color = RGB(193, 49, 0)
                              n.colorfull = RGB(255, 153, 0)
                              Case yellow
                              n.color = RGB(18, 18, 0)
                              n.colorfull = RGB(255, 255, 0)
                              Case darkgreen
                              n.color = RGB(0, 8, 0)
                              n.colorfull = RGB(0, 64, 0)
                              Case green
                              n.color = RGB(0, 18, 0)
                              n.colorfull = RGB(0, 255, 0)
                              Case blue
                              n.color = RGB(0, 18, 18)
                              n.colorfull = RGB(0, 255, 255)
                              Case darkblue
                              n.color = RGB(0, 8, 8)
                              n.colorfull = RGB(0, 64, 64)
                              Case purple
                              n.color = RGB(128, 0, 128)
                              n.colorfull = RGB(255, 0, 255)
                              Case white
                              n.color = RGB(255, 252, 224)
                              n.colorfull = RGB(193, 91, 0)
                              Case white
                              n.color = RGB(255, 252, 224)
                              n.colorfull = RGB(193, 91, 0)
                              End Select
                              If stat <> -1 Then
                              n.State = 0
                              n.State = stat
                              End If
                              End Sub

                              Sub ResetAllLightsColor ‘ Called at a new game
                              ‘shoot again
                              SetLightColor ShootAgainLight, amber, -1
                              End Sub

                              Sub UpdateBonusColors
                              End Sub

                              ‘*************************
                              ‘ Rainbow Changing Lights
                              ‘*************************

                              Dim RGBStep, RGBFactor, rRed, rGreen, rBlue, RainbowLights

                              Sub StartRainbow(n)
                              set RainbowLights = n
                              RGBStep = 0
                              RGBFactor = 5
                              rRed = 255
                              rGreen = 0
                              rBlue = 0
                              RainbowTimer.Enabled = 1
                              End Sub

                              Sub StopRainbow()
                              Dim obj
                              RainbowTimer.Enabled = 0
                              RainbowTimer.Enabled = 0
                              End Sub

                              Sub RainbowTimer_Timer ‘rainbow led light color changing
                              Dim obj
                              Select Case RGBStep
                              Case 0 ‘Green
                              rGreen = rGreen + RGBFactor
                              If rGreen> 255 then
                              rGreen = 255
                              RGBStep = 1
                              End If
                              Case 1 ‘Red
                              rRed = rRed – RGBFactor
                              If rRed <0 then
                              rRed = 0
                              RGBStep = 2
                              End If
                              Case 2 ‘Blue
                              rBlue = rBlue + RGBFactor
                              If rBlue> 255 then
                              rBlue = 255
                              RGBStep = 3
                              End If
                              Case 3 ‘Green
                              rGreen = rGreen – RGBFactor
                              If rGreen <0 then
                              rGreen = 0
                              RGBStep = 4
                              End If
                              Case 4 ‘Red
                              rRed = rRed + RGBFactor
                              If rRed> 255 then
                              rRed = 255
                              RGBStep = 5
                              End If
                              Case 5 ‘Blue
                              rBlue = rBlue – RGBFactor
                              If rBlue <0 then
                              rBlue = 0
                              RGBStep = 0
                              End If
                              End Select
                              For each obj in RainbowLights
                              obj.color = RGB(rRed \ 10, rGreen \ 10, rBlue \ 10)
                              obj.colorfull = RGB(rRed, rGreen, rBlue)
                              Next
                              End Sub

                              ‘ ********************************
                              ‘ Table info & Attract Mode
                              ‘ ********************************

                              Sub ShowTableInfo
                              on Error Resume Next
                              Dim i
                              ‘info goes in a loop only stopped by the credits and the startkey
                              If Score(1) Then
                              DMD “”, “PLAYER 1”, Score(1), 3000
                              End If
                              If Score(2) Then
                              DMD “”, “PLAYER 2”, Score(2), 3000
                              End If
                              If Score(3) Then
                              DMD “”, “PLAYER 3”, Score(3), 3000
                              End If
                              If Score(4) Then
                              DMD “”, “PLAYER 4″, Score(4), 3000
                              End If

                              ‘coins or freeplay
                              If bFreePlay Then
                              DMD ” “, “FREE PLAY”, 2000
                              DMD “IntroMS.wmv”, “”, “”, 24500
                              Else
                              If Credits> 0 Then
                              DMD “”, “CREDITS ” &credits, “PRESS START”, 2000
                              Else
                              DMD “”, “CREDITS ” &credits, “INSERT COIN”, 2000
                              End If
                              DMD “IntroMS.wmv”, “”, “”, 24500
                              End If
                              ‘ some info about the table
                              DMD “”, “Javier And Pinwizkid”, “PRESENTS”, 3000
                              DMD “”, “”, ” Metal Slug “, 3000
                              ‘ Highscores
                              DMD “”, “HIGHSCORE 1″, HighScoreName(0) & ” ” & HighScore(0), 3000
                              DMD “”, “HIGHSCORE 2″, HighScoreName(1) & ” ” & HighScore(1), 3000
                              DMD “”, “HIGHSCORE 3″, HighScoreName(2) & ” ” & HighScore(2), 3000
                              DMD “”, “HIGHSCORE 4″, HighScoreName(3) & ” ” & HighScore(3), 3000
                              End Sub

                              Sub StartAttractMode()
                              bAttractMode = True
                              StartLightSeq
                              DisplayB2SText “”
                              DMDUpdate.enabled = 0
                              AttractMessagesTimer.Enabled = TRUE
                              End Sub

                              Sub StopAttractMode()
                              bAttractMode = False
                              LightSeqAttract.StopPlay
                              LightSeqFlasher.StopPlay
                              AttractMessagesTimer.Enabled = FALSE
                              End Sub

                              Sub StartLightSeq()
                              ‘lights sequences
                              LightSeqFlasher.UpdateInterval = 150
                              LightSeqFlasher.Play SeqRandom, 10, , 50000
                              LightSeqAttract.Play SeqBlinking, , 5, 150
                              LightSeqAttract.Play SeqRandom, 40, , 4000
                              LightSeqAttract.Play SeqAllOff
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqUpOn, 50, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqDownOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqCircleOutOn, 15, 2
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqUpOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqDownOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqUpOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqDownOn, 25, 1
                              LightSeqAttract.UpdateInterval = 10
                              LightSeqAttract.Play SeqCircleOutOn, 15, 3
                              LightSeqAttract.UpdateInterval = 5
                              LightSeqAttract.Play SeqRightOn, 50, 1
                              LightSeqAttract.UpdateInterval = 5
                              LightSeqAttract.Play SeqLeftOn, 50, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqRightOn, 50, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqLeftOn, 50, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqRightOn, 40, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqLeftOn, 40, 1
                              LightSeqAttract.UpdateInterval = 10
                              LightSeqAttract.Play SeqRightOn, 30, 1
                              LightSeqAttract.UpdateInterval = 10
                              LightSeqAttract.Play SeqLeftOn, 30, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqRightOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqLeftOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqRightOn, 15, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqLeftOn, 15, 1
                              LightSeqAttract.UpdateInterval = 10
                              LightSeqAttract.Play SeqCircleOutOn, 15, 3
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqLeftOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqRightOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqLeftOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqUpOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqDownOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqUpOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqDownOn, 25, 1
                              LightSeqAttract.UpdateInterval = 5
                              LightSeqAttract.Play SeqStripe1VertOn, 50, 2
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqCircleOutOn, 15, 2
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqStripe1VertOn, 50, 3
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqLeftOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqRightOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqLeftOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqUpOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqDownOn, 25, 1
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqCircleOutOn, 15, 2
                              LightSeqAttract.UpdateInterval = 8
                              LightSeqAttract.Play SeqStripe2VertOn, 50, 3

                              End Sub

                              Sub LightSeqAttract_PlayDone()
                              StartLightSeq()
                              End Sub

                              Sub LightSeqTilt_PlayDone()
                              LightSeqTilt.Play SeqAllOff
                              End Sub

                              Sub LightSeqSkillshot_PlayDone()
                              LightSeqSkillshot.Play SeqCircleOutOn
                              End Sub

                              ‘***********************************************************************
                              ‘ *********************************************************************
                              ‘ Table Specific Script Starts Here
                              ‘ *********************************************************************
                              ‘***********************************************************************

                              ‘ droptargets, animations, etc
                              Sub VPObjects_Init

                              End Sub

                              Sub Game_Init() ‘called at the start of a new game
                              Dim i
                              bExtraBallWonThisBall = False
                              TurnOffPlayfieldLights()
                              BumperHit = 200
                              scoopLit.state = 1
                              kamehouseLit.state = 1
                              BallsRestart
                              PinDiverterL.Isdropped = 1
                              PinDiverterR.Isdropped = 1

                              PlaySong “DBZ_GamePlay”
                              LightSeqAllBalls.Play SeqLeftOn, 50, 1
                              End Sub

                              Sub ResetNewBallLights() ‘turn on or off the needed lights before a new ball is released
                              End Sub

                              Sub TurnOffPlayfieldLights()
                              Dim a
                              For each a in aLights
                              a.State = 0
                              Next
                              End Sub

                              ‘—————————–
                              ‘—– FS Display Code —–
                              ‘—————————–

                              ‘If You want to hide a display, set the reel value of every reel to 44. This picture is transparent
                              ‘This is best done using collection:

                              ‘ If HideDisplay then
                              ‘ For Each obj in ReelsCollection:obj.setvalue(44):next
                              ‘ end if

                              Dim Char(32),i,TempText ‘increase dimension if You need larger displays

                              ‘———————————————–
                              ‘—– B2S section, not used in the demo —–
                              ‘———————————————–

                              Sub DisplayB2SText(TextPar) ‘Procedure to display Text on a 32 digit B2S LED reel. Assuming that it is display 1 with internal digit numbers 1-32
                              TempText = TextPar
                              for i = 1 to 32
                              if i <= len(TextPar) then
                              Char(i) = left(TempText,1)
                              TempText = right(Temptext,len(TempText)-1)
                              else
                              Char(i) = ” ”
                              end if
                              next
                              if B2SOn Then
                              for i = 1 to 32
                              controller.B2SSetLED i,B2SLEDValue(Char(i))
                              next
                              end if
                              End Sub

                              Function B2SLEDValue(CharPar) ‘to be used with dB2S 15-segments-LED used in Herweh’s Designer
                              B2SLEDValue = 0 ‘default for unknown characters
                              select case CharPar
                              Case “”,””: B2SLEDValue = 0
                              Case “0”: B2SLEDValue = 63
                              Case “1”: B2SLEDValue = 8704
                              Case “2”: B2SLEDValue = 2139
                              Case “3”: B2SLEDValue = 2127
                              Case “4”: B2SLEDValue = 2150
                              Case “5”: B2SLEDValue = 2157
                              Case “6”: B2SLEDValue = 2172
                              Case “7”: B2SLEDValue = 7
                              Case “8”: B2SLEDValue = 2175
                              Case “9”: B2SLEDValue = 2159
                              Case “A”: B2SLEDValue = 2167
                              Case “B”: B2SLEDValue = 10767
                              Case “C”: B2SLEDValue = 57
                              Case “D”: B2SLEDValue = 8719
                              Case “E”: B2SLEDValue = 121
                              Case “F”: B2SLEDValue = 2161
                              Case “G”: B2SLEDValue = 2109
                              Case “H”: B2SLEDValue = 2166
                              Case “I”: B2SLEDValue = 8713
                              Case “J”: B2SLEDValue = 31
                              Case “K”: B2SLEDValue = 5232
                              Case “L”: B2SLEDValue = 56
                              Case “M”: B2SLEDValue = 1334
                              Case “N”: B2SLEDValue = 4406
                              Case “O”: B2SLEDValue = 63
                              Case “P”: B2SLEDValue = 2163
                              Case “Q”: B2SLEDValue = 4287
                              Case “R”: B2SLEDValue = 6259
                              Case “S”: B2SLEDValue = 2157
                              Case “T”: B2SLEDValue = 8705
                              Case “U”: B2SLEDValue = 62
                              Case “V”: B2SLEDValue = 17456
                              Case “W”: B2SLEDValue = 20534
                              Case “X”: B2SLEDValue = 21760
                              Case “Y”: B2SLEDValue = 9472
                              Case “Z”: B2SLEDValue = 17417
                              Case “<“: B2SLEDValue = 5120
                              Case “>”: B2SLEDValue = 16640
                              Case “^”: B2SLEDValue = 17414
                              Case “.”: B2SLEDValue = 8
                              Case “!”: B2SLEDValue = 0
                              Case “.”: B2SLEDValue = 128
                              Case “*”: B2SLEDValue = 32576
                              Case “/”: B2SLEDValue = 17408
                              Case “\”: B2SLEDValue = 4352
                              Case “|”: B2SLEDValue = 8704
                              Case “=”: B2SLEDValue = 2120
                              Case “+”: B2SLEDValue = 10816
                              Case “-“: B2SLEDValue = 2112
                              end select
                              B2SLEDValue = cint(B2SLEDValue)
                              End Function

                              Dim Ball
                              Sub DisplayScore
                              If Score(1) < 10000000 Then
                              DisplayB2SText (cstr(Score(1))) & ” BALL ” & Balls
                              Else
                              DisplayB2SText (cstr(Score(1))) & (Score(1)) & String(32 – Len(Score(1)), ” “)
                              End If

                              If PlayersPlayingGame Then
                              DMDUpdate.Interval = 1500
                              DMDUpdate.enabled = 1
                              End If

                              End Sub

                              Sub DMDUpdate_Timer
                              DMDUpdate.enabled = 0
                              D1.Text = ” ”
                              DisplayB2SText ” ”
                              DisplayScore
                              AddScore (0)
                              End Sub

                              ‘*****************************
                              ‘ Load / Save / Highscore
                              ‘*****************************

                              Sub Loadhs
                              Dim x
                              x = LoadValue(TableName, “HighScore1”)
                              If(x <> “”) Then HighScore(0) = CDbl(x) Else HighScore(0) = 100000 End If

                              x = LoadValue(TableName, “HighScore1Name”)
                              If(x <> “”) Then HighScoreName(0) = x Else HighScoreName(0) = “AAA” End If

                              x = LoadValue(TableName, “HighScore2”)
                              If(x <> “”) then HighScore(1) = CDbl(x) Else HighScore(1) = 100000 End If

                              x = LoadValue(TableName, “HighScore2Name”)
                              If(x <> “”) then HighScoreName(1) = x Else HighScoreName(1) = “BBB” End If

                              x = LoadValue(TableName, “HighScore3”)
                              If(x <> “”) then HighScore(2) = CDbl(x) Else HighScore(2) = 100000 End If

                              x = LoadValue(TableName, “HighScore3Name”)
                              If(x <> “”) then HighScoreName(2) = x Else HighScoreName(2) = “CCC” End If

                              x = LoadValue(TableName, “HighScore4”)
                              If(x <> “”) then HighScore(3) = CDbl(x) Else HighScore(3) = 100000 End If

                              x = LoadValue(TableName, “HighScore4Name”)
                              If(x <> “”) then HighScoreName(3) = x Else HighScoreName(3) = “DDD” End If

                              x = LoadValue(TableName, “Credits”)
                              If(x <> “”) then Credits = CInt(x) Else Credits = 0 End If

                              ‘x = LoadValue(TableName, “Jackpot”)
                              ‘If(x <> “”) then Jackpot = CDbl(x) Else Jackpot = 200000 End If
                              x = LoadValue(TableName, “TotalGamesPlayed”)
                              If(x <> “”) then TotalGamesPlayed = CInt(x) Else TotalGamesPlayed = 0 End If
                              End Sub

                              Sub Savehs
                              SaveValue TableName, “HighScore1”, HighScore(0)
                              SaveValue TableName, “HighScore1Name”, HighScoreName(0)
                              SaveValue TableName, “HighScore2”, HighScore(1)
                              SaveValue TableName, “HighScore2Name”, HighScoreName(1)
                              SaveValue TableName, “HighScore3”, HighScore(2)
                              SaveValue TableName, “HighScore3Name”, HighScoreName(2)
                              SaveValue TableName, “HighScore4”, HighScore(3)
                              SaveValue TableName, “HighScore4Name”, HighScoreName(3)
                              SaveValue TableName, “Credits”, Credits
                              ‘SaveValue TableName, “Jackpot”, Jackpot
                              SaveValue TableName, “TotalGamesPlayed”, TotalGamesPlayed
                              End Sub

                              ‘ ***********************************************************
                              ‘ High Score Initals Entry Functions – based on Black’s code
                              ‘ ***********************************************************

                              Dim hsbModeActive
                              Dim hsEnteredName
                              Dim hsEnteredDigits(3)
                              Dim hsCurrentDigit
                              Dim hsValidLetters
                              Dim hsCurrentLetter
                              Dim hsLetterFlash

                              Sub CheckHighscore()
                              DMDUpdate.enabled = 0
                              D1.Text = ” ”
                              DisplayB2SText ” ”
                              Dim tmp
                              tmp = Score(1)

                              If Score(2)> tmp Then tmp = Score(2)
                              If Score(3)> tmp Then tmp = Score(3)
                              If Score(4)> tmp Then tmp = Score(4)

                              If tmp> HighScore(1) Then ‘add 1 credit for beating the highscore
                              AwardSpecial()
                              End If

                              If tmp> HighScore(3) Then
                              vpmtimer.addtimer 2000, “PlaySound “”vo_contratulationsgreatscore”” ‘”
                              HighScore(3) = tmp
                              ‘enter player’s name
                              HighScoreEntryInit()
                              Else
                              EndOfBallComplete()
                              End If
                              End Sub

                              Sub HighScoreEntryInit()
                              hsbModeActive = True
                              PlaySound “vo_enteryourinitials”
                              hsLetterFlash = 0

                              hsEnteredDigits(0) = “A”
                              hsEnteredDigits(1) = “A”
                              hsEnteredDigits(2) = “A”
                              hsCurrentDigit = 0

                              hsValidLetters = “ABCDEFGHIJKLMNOPQRSTUVWXYZ<+-0123456789” ‘ < is used to delete the last letter
                              hsCurrentLetter = 1
                              ‘ DMDFlush
                              D1.text = “YOUR NAME:” & ” ”
                              ‘DMDId “hsc”, “”, “YOUR NAME:”, ” “, 999999
                              HighScoreDisplayName()
                              End Sub

                              Sub EnterHighScoreKey(keycode)
                              If keycode = LeftFlipperKey Then
                              Playsound “fx_Previous”
                              hsCurrentLetter = hsCurrentLetter – 1
                              if(hsCurrentLetter = 0) then
                              hsCurrentLetter = len(hsValidLetters)
                              end if
                              HighScoreDisplayName()
                              End If

                              If keycode = RightFlipperKey Then
                              Playsound “fx_Next”
                              hsCurrentLetter = hsCurrentLetter + 1
                              if(hsCurrentLetter> len(hsValidLetters) ) then
                              hsCurrentLetter = 1
                              end if
                              HighScoreDisplayName()
                              End If

                              If keycode = StartGameKey OR keycode = PlungerKey Then
                              if(mid(hsValidLetters, hsCurrentLetter, 1) <> “<“) then
                              playsound “fx_Enter”
                              hsEnteredDigits(hsCurrentDigit) = mid(hsValidLetters, hsCurrentLetter, 1)
                              hsCurrentDigit = hsCurrentDigit + 1
                              if(hsCurrentDigit = 3) then
                              HighScoreCommitName()
                              else
                              HighScoreDisplayName()
                              end if
                              else
                              playsound “fx_Esc”
                              hsEnteredDigits(hsCurrentDigit) = ” ”
                              if(hsCurrentDigit> 0) then
                              hsCurrentDigit = hsCurrentDigit – 1
                              end if
                              HighScoreDisplayName()
                              end if
                              end if
                              End Sub

                              Sub HighScoreDisplayName()
                              DMDUpdate.enabled = 0
                              Dim i, TempStr
                              D1.text = TempStr
                              DisplayB2SText “” & TempStr
                              TempStr = ” >”
                              if(hsCurrentDigit> 0) then TempStr = TempStr & hsEnteredDigits(0)
                              if(hsCurrentDigit> 1) then TempStr = TempStr & hsEnteredDigits(1)
                              if(hsCurrentDigit> 2) then TempStr = TempStr & hsEnteredDigits(2)

                              if(hsCurrentDigit <> 3) then
                              if(hsLetterFlash <> 0) then
                              TempStr = TempStr & “_”
                              DisplayB2SText TempStr & “_”
                              D1.TEXT = TempStr & “_”
                              else
                              TempStr = TempStr & mid(hsValidLetters, hsCurrentLetter, 1)
                              DisplayB2SText TempStr & mid(hsValidLetters, hsCurrentLetter, 1)
                              D1.TEXT = TempStr & mid(hsValidLetters, hsCurrentLetter, 1)
                              end if
                              end if

                              if(hsCurrentDigit <1) then TempStr = TempStr & hsEnteredDigits(1)
                              if(hsCurrentDigit <2) then TempStr = TempStr & hsEnteredDigits(2)

                              TempStr = TempStr & “< ”
                              ‘ DMDMod “hsc”, “YOUR NAME:”, Mid(TempStr, 2, 5), 999999
                              DisplayB2SText “ENTER YOUR NAME: ” & Mid(TempStr, 2, 5)
                              D1.TEXT = “YOUR NAME:” & Mid(TempStr, 2, 5)
                              End Sub

                              Sub HighScoreCommitName()
                              hsbModeActive = False
                              ‘PlaySong “m_end”
                              hsEnteredName = hsEnteredDigits(0) & hsEnteredDigits(1) & hsEnteredDigits(2)
                              if(hsEnteredName = ” “) then
                              hsEnteredName = “YOU”
                              end if

                              HighScoreName(3) = hsEnteredName
                              SortHighscore
                              ‘ DMDFlush
                              DMDUpdate.enabled = 1
                              EndOfBallComplete()
                              End Sub

                              Sub SortHighscore
                              Dim tmp, tmp2, i, j
                              For i = 0 to 3
                              For j = 0 to 2
                              If HighScore(j) <HighScore(j + 1) Then
                              tmp = HighScore(j + 1)
                              tmp2 = HighScoreName(j + 1)
                              HighScore(j + 1) = HighScore(j)
                              HighScoreName(j + 1) = HighScoreName(j)
                              HighScore(j) = tmp
                              HighScoreName(j) = tmp2
                              End If
                              Next
                              Next
                              End Sub

                              ‘ *********************************************************************
                              ‘ User Defined Script Events
                              ‘ *********************************************************************

                              ‘ Initialise the Table for a new Game

                              Sub ResetForNewGame()
                              Dim i

                              bGameInPLay = True
                              startB2S(27)

                              ‘resets the score display, and turn off attrack mode
                              StopAttractMode
                              GiOn

                              TotalGamesPlayed = TotalGamesPlayed + 1
                              CurrentPlayer = 1
                              PlayersPlayingGame = 1
                              bOnTheFirstBall = True
                              For i = 1 To MaxPlayers
                              Score(i) = 0
                              BonusPoints(i) = 0
                              BonusMultiplier(i) = 1
                              BallsRemaining(i) = BallsPerGame
                              ExtraBallsAwards(i) = 0
                              Next

                              letsGo.enabled = 1

                              ‘ initialise any other flags
                              bMultiBallMode = False
                              Tilt = 0
                              LockL = 0
                              LockR = 0
                              LockDiverterOff
                              LockPinOff
                              shenlong = 0
                              Saiyan = 0
                              SaiyanMultiball = False
                              TargetsModeOn = False
                              LockDiverterEnabled = False
                              ExtraBallIsIit = False
                              Drain1.enabled = 0
                              Drain.enabled = 1
                              ‘ initialise Game variables
                              Game_Init()

                              ‘ 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
                              vpmtimer.addtimer 1500, “FirstBall ‘”
                              End Sub

                              ‘ This 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 FirstBall
                              ‘ 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

                              ‘ reduce the playfield multiplier
                              ‘ reset any drop targets, lights, game Mode etc..

                              BonusPoints(CurrentPlayer) = 0
                              bBonusHeld = False
                              bExtraBallWonThisBall = False
                              ResetNewBallLights()
                              ‘Reset any table specific

                              ‘This is a new ball, so activate the ballsaver
                              bBallSaverReady = True

                              ‘and the skillshot
                              bSkillShotReady = True

                              ‘Change the music ?
                              End Sub

                              ‘ Create a new ball on the Playfield

                              Sub CreateNewBall()
                              ‘ create a ball in the plunger lane kicker.
                              BallRelease.CreateSizedball BallSize / 2

                              ‘ There is a (or another) ball on the playfield
                              BallsOnPlayfield = BallsOnPlayfield + 1

                              ‘ kick it out..
                              PlaySound “BallRelease”, 0, 1, 0.1, 0.1
                              BallRelease.Kick 90, 4

                              ‘ if there is 2 or more balls then set the multibal flag (remember to check for locked balls and other balls used for animations)
                              ‘ set the bAutoPlunger flag to kick the ball in play automatically
                              If BallsOnPlayfield> 1 Then
                              bMultiBallMode = True
                              bAutoPlunger = True
                              End If
                              End Sub

                              ‘ Add extra balls to the table with autoplunger
                              ‘ Use it as AddMultiball 4 to add 4 extra balls to the table

                              Sub AddMultiball(nballs)
                              mBalls2Eject = mBalls2Eject + nballs
                              CreateMultiballTimer.Enabled = True
                              ‘and eject the first ball
                              CreateMultiballTimer_Timer
                              End Sub

                              ‘ Eject the ball after the delay, AddMultiballDelay
                              Sub CreateMultiballTimer_Timer()
                              ‘ wait if there is a ball in the plunger lane
                              If bBallInPlungerLane Then
                              Exit Sub
                              Else
                              If BallsOnPlayfield <MaxMultiballs Then
                              CreateNewBall()
                              mBalls2Eject = mBalls2Eject -1
                              If mBalls2Eject = 0 Then ‘if there are no more balls to eject then stop the timer
                              CreateMultiballTimer.Enabled = False
                              End If
                              Else ‘the max number of multiballs is reached, so stop the timer
                              mBalls2Eject = 0
                              CreateMultiballTimer.Enabled = False
                              End If
                              End If
                              End Sub

                              ‘ The Player has lost his ball (there are no more balls on the playfield).
                              ‘ Handle any bonus points awarded

                              Sub 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 NOT Tilted Then
                              DMDUpdate.enabled = 0
                              EndOfBallTimerBonus.Enabled = 1
                              ‘ add a bit of a delay to allow for the bonus points to be shown & added up
                              vpmtimer.addtimer 6000, “EndOfBall2 ‘”
                              Else ‘if tilted then only add a short delay
                              vpmtimer.addtimer 100, “EndOfBall2 ‘”
                              End If
                              End Sub

                              Dim BonusD
                              Sub EndOfBallTimerBonus_Timer()
                              Dim AwardPoints, TotalBonus, ii
                              AwardPoints = 0
                              TotalBonus = 0

                              DMDUpdate.enabled = 0
                              DisplayB2SText ” ”
                              BonusD = BonusD + 1
                              Select Case BonusD
                              Case 0:’Number of Target hits
                              AwardPoints = TargetBonus * 50
                              TotalBonus = TotalBonus + AwardPoints
                              DisplayB2SText ” TARGET BONUS: ” & AwardPoints
                              PlaySound “DBZ_teleport”

                              Case 1:’Number of Bumper hits
                              AwardPoints = BonusBumper * 10
                              TotalBonus = TotalBonus + AwardPoints
                              DisplayB2SText ” BUMPER BONUS: ” & AwardPoints
                              PlaySound “DBZ_teleport”

                              Case 2:’Lane Bonus
                              AwardPoints = LaneBonus * 10
                              TotalBonus = TotalBonus + AwardPoints
                              DisplayB2SText ” LANE BONUS: ” & AwardPoints
                              PlaySound “DBZ_teleport”

                              Case 3:’Number of Ramps completed
                              AwardPoints = RampBonus * 50
                              TotalBonus = TotalBonus + AwardPoints
                              DisplayB2SText ” RAMP BONUS ” & AwardPoints
                              PlaySound “DBZ_teleport”

                              Case 4:’calculate the totalbonus
                              TotalBonus = TotalBonus * BonusMultiplier(CurrentPlayer) + BonusHeldPoints(CurrentPlayer)
                              If Balls = BallsPerGame Then ‘ this is the last ball, so if bonus held has been awarded then double the bonus
                              TotalBonus = TotalBonus * 2
                              End If

                              ‘ Add the bonus to the score
                              DisplayB2SText ” TOTAL BONUS “&” X “& BonusMultiplier(CurrentPlayer)
                              TotalBonus = TotalBonus * BonusMultiplier(CurrentPlayer)
                              ‘AddScore TotalBonus
                              vpmtimer.addtimer 1000, “AddScore TotalBonus ‘”
                              PlaySound “DBZ_teleport”
                              BonusD = 0
                              EndOfBallTimerBonus.Enabled = 0
                              End Select

                              End Sub

                              ‘ 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 EndOfBall2()
                              ‘ if were tilted, reset the internal tilted flag (this will also
                              ‘ set TiltWarnings back to zero) which is useful if we are changing player LOL
                              Tilted = False
                              Tilt = 0
                              DisableTable False ‘enable again bumpers and slingshots

                              ‘ has the player won an extra-ball ? (might be multiple outstanding)
                              If(ExtraBallsAwards(CurrentPlayer) <> 0) Then
                              ‘debug.print “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
                              LightExtraBall.State = 0
                              End If

                              ‘ You may wish to do a bit of a song AND dance at this point
                              ‘ DMD ” “, “EXTRA BALL”, 2000

                              ‘ In this table an extra ball will have the skillshot and ball saver, so we reset the playfield for the new ball
                              ResetForNewPlayerBall()

                              ‘ Create a new ball in the shooters lane
                              CreateNewBall()
                              Else ‘ no extra balls

                              BallsRemaining(CurrentPlayer) = BallsRemaining(CurrentPlayer) – 1

                              ‘ was that the last ball ?
                              If(BallsRemaining(CurrentPlayer) <= 0) Then
                              ‘debug.print “No More Balls, High Score Entry”

                              ‘ Submit the CurrentPlayers score to the High Score system
                              CheckHighScore()
                              ‘ 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

                              ‘ 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

                              ‘debug.print “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

                              ‘debug.print “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 desktop/backglass
                              D1.Text = ” GAME OVER ”
                              DisplayB2SText ” GAME OVER ”

                              Else
                              ‘ set the next player
                              CurrentPlayer = NextPlayer

                              ‘ make sure the correct display is up to date
                              AddScore 0

                              ‘ reset the playfield for the new player (or new ball)
                              ResetForNewPlayerBall()
                              ‘ PlaySong “DBZ_GamePlay”
                              ‘ AND create a new ball
                              CreateNewBall()

                              ‘ play a sound if more than 1 player
                              If PlayersPlayingGame> 1 Then
                              PlaySound “vo_player” &CurrentPlayer
                              ‘DMD ” “, “PLAYER ” &CurrentPlayer, 800
                              End If
                              End If
                              End Sub

                              ‘ This function 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()
                              ‘debug.print “End Of Game”
                              bGameInPLay = False
                              ‘ just ended your game then play the end of game tune
                              If NOT bJustStarted Then
                              ‘ChangeSong
                              End If

                              PlaySong “DBZ_End”

                              bJustStarted = False
                              ‘ ensure that the flippers are down
                              SolLFlipper 0
                              SolRFlipper 0

                              ‘ terminate all Mode – eject locked balls
                              LockPinOff

                              ‘ most of the Mode/timers terminate at the end of the ball
                              Drain.enabled = 0
                              Drain1.enabled = 1
                              DMDUpdate.enabled = 0

                              ‘ show game over on the DMD
                              D1.Text = ” GAME OVER ”
                              DisplayB2SText ” GAME OVER ”
                              AttractMessagesTimerUserData = 16

                              ‘ set any lights for the attract mode
                              GiOff
                              StartAttractMode
                              ‘ you may wish to light any Game Over Light you may have
                              End Sub

                              Function Balls
                              Dim tmp
                              tmp = BallsPerGame – BallsRemaining(CurrentPlayer) + 1
                              If tmp> BallsPerGame Then
                              Balls = BallsPerGame
                              Else
                              Balls = tmp
                              End If
                              End Function

                              Sub AwardExtraBall()
                              If NOT bExtraBallWonThisBall Then
                              ‘DMD ” “, “EXTRA BALL”, 2000
                              D1.text = “EXTRA BALL”
                              PlaySound “vo_extraball”
                              ExtraBallsAwards(CurrentPlayer) = ExtraBallsAwards(CurrentPlayer) + 1
                              bExtraBallWonThisBall = True
                              GiEffect 2
                              LightEffect 2
                              END If
                              End Sub

                              Sub AwardSpecial()
                              ‘DMD ” “, “EXTRA GAME”, 2000
                              D1.text = “EXTRA GAME”
                              PlaySound “fx_fanfare2”
                              Credits = Credits + 1
                              LightEffect 2
                              FlashEffect 2
                              End Sub

                              Sub AwardJackpot() ‘award a normal jackpot, double or triple jackpot
                              ‘ DMD “JACKPOT”, Jackpot(CurrentPlayer), 2000
                              D1.text = “JACKPOT” & Jackpot(CurrentPlayer)
                              DisplayB2SText ” JACKPOT ” & Jackpot(CurrentPlayer)
                              PlaySound “kamehameha”
                              AddScore Jackpot(CurrentPlayer)
                              LightEffect 2
                              FlashEffect 2
                              JackpotMSNTimer.enabled = 1
                              End Sub

                              Sub AwardSuperJackpot() ‘this is actually 4 times a jackpot
                              SuperJackpot = Jackpot(CurrentPlayer) * 4
                              ‘ DMD “SUPER JACKPOT”, SuperJackpot, 2000
                              D1.text = “SUPER JACKPOT”
                              DisplayB2SText ” SUPER JACKPOT ”
                              PlaySound “vo_Jackpot2”
                              AddScore SuperJackpot
                              LightEffect 2
                              FlashEffect 2
                              ‘enabled jackpots again
                              StartJackpots
                              End Sub

                              Sub AwardSkillshot()
                              ResetSkillShotTimer_Timer
                              ‘show dmd animation
                              DMDFlush
                              DMD “SKILLSHOT”, SkillShotValue(CurrentPlayer), 2000
                              PlaySound “fx_fanfare2″
                              ‘ increment the skillshot value with 250.000
                              SkillShotValue(CurrentPlayer) = SkillShotValue(CurrentPlayer) + 25000
                              ‘do some light show
                              GiEffect 2
                              LightEffect 2
                              End Sub

                              Sub AddBonusMultiplier(n)
                              Dim NewBonusLevel
                              ‘ if not at the maximum bonus level
                              if(BonusMultiplier(CurrentPlayer) + n <= MaxMultiplier) then
                              ‘ then add and set the lights
                              NewBonusLevel = BonusMultiplier(CurrentPlayer) + n
                              SetBonusMultiplier(NewBonusLevel)
                              DisplayB2SText ” BONUS X ” & NewBonusLevel
                              D1.text = “BONUS X ” &NewBonusLevel
                              PlaySound “fx_bonux”
                              Else
                              DisplayB2SText ” 5000 ”
                              D1.text = ” 5000 ”
                              End if
                              End Sub

                              ‘ *********************************************************************
                              ‘ ** SCORING FUNCTIONS **
                              ‘ *********************************************************************

                              ‘ Add points to the score.

                              Sub AddScore(points)
                              If Not(Tilted) Then
                              ‘ Add the points to the current players score variable.
                              Score(CurrentPlayer) = Score(CurrentPlayer) + points
                              If Not(Tilted) Then
                              ‘ Display score and ball in play.
                              If Score(1) < 10000000 Then
                              DisplayScore
                              D1.Text = FormatScore(Score(1)) & ” BALL ” & Balls
                              Else
                              DisplayScore
                              D1.Text = FormatScore(Score(1)) & String(25 – Len(Score(1)), ” “)
                              End If
                              Exit Sub
                              End If
                              End If
                              End Sub

                              Function FormatScore(ByVal sc)
                              Dim fsc
                              Dim fdone
                              fdone = “”
                              While Len(sc) > 3
                              fsc = Right(sc, 3)
                              If fdone = “” Then
                              fdone = “,” & fsc
                              Else
                              fdone = “,” & fsc & fdone
                              End If
                              sc = Left(sc, Len(sc)-3)
                              Wend
                              fdone = sc & fdone
                              FormatScore = fdone
                              End Function

                              Sub Drain_Hit()
                              ‘ pretend to knock the ball into the ball storage mech
                              PlaySound “drain”
                              startB2S(30)
                              if ballsonplayfield = 2 then
                              J1.state = 0
                              J2.state = 0
                              J3.state = 0
                              J4.state = 0
                              J5.state = 0
                              J6.state = 0
                              J7.state = 0

                              PlaySong “DBZ_End”
                              PlaySong “DBZ_GamePlay”
                              end if

                              Drain.destroyball
                              BallsOnPlayfield = BallsOnPlayfield – 1

                              ‘ if there is a game in progress AND it is not Tilted
                              If(bGameInPLay = True) AND(Tilted = False) Then

                              ‘ is the ball saver active,
                              If(bBallSaverActive = True) Then

                              ‘ yep, create a new ball in the shooters lane
                              ‘ we use the Addmultiball in case the multiballs are being ejected
                              AddMultiball 1
                              ‘ we kick the ball with the autoplunger
                              bAutoPlunger = True
                              ‘ you may wish to put something on a display or play a sound at this point
                              ‘ DMD ” “, “BALL SAVE”, 2000
                              Else
                              ‘ cancel any multiball if on last ball (ie. lost all other balls)
                              If(BallsOnPlayfield = 1) Then
                              ‘ AND in a multi-ball??
                              If(bMultiBallMode = True) then
                              ‘ not in multiball mode any more
                              bMultiBallMode = False
                              ‘ you may wish to change any music over at this point and
                              ‘ turn off any multiball specific lights
                              ResetJackpotLights
                              If LockMultiball = True Then
                              ResetLockMultiball
                              End If

                              If ShenlongMultiball = True Then
                              ResetShenlongMultiball
                              End If

                              If SaiyanMultiball = True Then
                              ResetSaiyanMultiball
                              End If

                              ‘ ChangeSong
                              End If
                              End If

                              ‘ was that the last ball on the playfield
                              If(BallsOnPlayfield = 0) Then
                              ‘ End Mode and timers
                              ‘ ChangeSong
                              ChangeGi white
                              vpmtimer.addtimer 200, “EndOfBall ‘” ‘the delay is depending of the animation of the end of ball, since there is no animation then move to the end of ball
                              End If
                              End If
                              End If
                              End Sub

                              Sub Drain1_Hit()
                              PlaySound “drain”
                              Drain1.destroyball
                              BallsOnPlayfield = 0
                              End Sub

                              Sub swPlungerRest_Hit()
                              ‘debug.print “ball in plunger lane”
                              ‘ some sound according to the ball position
                              PlaySound “fx_sensor”, 0, 1, 0.15, 0.25
                              bBallInPlungerLane = True
                              ‘ turn on Launch light is there is one
                              ‘LaunchLight.State = 2
                              SkillShotLightsTimer.enabled = 1

                              ‘ kick the ball in play if the bAutoPlunger flag is on
                              If bAutoPlunger Then
                              ‘debug.print “autofire the ball”
                              PlungerIM.AutoFire
                              PlaySound “fx_fire”, 0, 1, 0.05, 0.05
                              bAutoPlunger = False
                              GateOpenSkillShot.enabled = 1
                              End If
                              ‘ if there is a need for a ball saver, then start off a timer
                              ‘ only start if it is ready, and it is currently not running, else it will reset the time period
                              If(bBallSaverReady = True) AND(BallSaverTime <> 0) And(bBallSaverActive = False) Then
                              EnableBallSaver BallSaverTime
                              Else
                              ‘ show the message to shoot the ball in case the player has fallen sleep
                              swPlungerRest.TimerEnabled = 1
                              End If
                              ‘Start the Selection of the skillshot if ready
                              If bSkillShotReady Then
                              ‘ UpdateSkillshot()
                              End If
                              ‘ remember last trigger hit by the ball.
                              LastSwitchHit = “swPlungerRest”
                              End Sub

                              Dim startSeq
                              Sub SkillShotLightsTimer_Timer
                              startSeq = startSeq + 1
                              Select Case startSeq
                              case 1: LightBall8.state = 1: DisplayB2SText ” SHOT THE BALL “: D1.text = ” SHOT THE BALL ”
                              Case 2: LightBall8.state = 0: LightBall9.state = 1
                              Case 3: LightBall9.state = 0: LightBall10.state = 1
                              Case 4: LightBall10.state = 0: LightBall11.state = 1
                              Case 5: LightBall11.state = 0: LightBall12.state = 1
                              Case 6: LightBall12.state = 0: LightBall13.state = 1
                              Case 7: LightBall13.state = 0: LightBall14.state = 1
                              Case 8: LightBall14.state = 0:
                              Case 9: startSeq = 9: UpdateLightsSkillShot
                              End Select
                              End Sub

                              Sub UpdateLightsSkillShot
                              If startSeq = 9 Then startSeq = 0: SkillShotLightsTimer.enabled = 1
                              End Sub

                              Sub GateOpenSkillShot_Timer
                              GateOpenSkillShot.enabled = 0
                              Gate1.Open = 1
                              Gate2.Open = 1
                              vpmtimer.addtimer 2000, “ResetGate ‘”
                              End Sub

                              Sub ResetGate
                              Gate1.Open = 0
                              Gate2.Open = 0
                              End Sub

                              ‘ The ball is released from the plunger turn off some flags and check for skillshot

                              Sub swPlungerRest_UnHit()
                              bBallInPlungerLane = False
                              swPlungerRest.TimerEnabled = 0 ‘stop the launch ball timer if active
                              If bSkillShotReady Then
                              ResetSkillShotTimer.Enabled = 1
                              SkillShotLightsTimer.enabled = 0
                              LightBall8.state = 0:LightBall9.state = 0:LightBall10.state = 0:LightBall11.state = 0:LightBall12.state = 0:LightBall13.state = 0:LightBall14.state = 0
                              End If
                              FlashEffect 2

                              End Sub

                              ‘ swPlungerRest timer to show the “launch ball” if the player has not shot the ball during 6 seconds

                              Sub swPlungerRest_Timer
                              ‘DMD “”, “SHOOT THE BALL”, 2000
                              D1.text “SHOOT THE BALL”
                              swPlungerRest.TimerEnabled = 0
                              End Sub

                              Sub Trigger3_Hit:startB2S(28): SkillShotLightsTimer.enabled = 0 End Sub

                              Sub EnableBallSaver(seconds)
                              ‘debug.print “Ballsaver started”
                              ‘ set our game flag
                              bBallSaverActive = True
                              bBallSaverReady = False
                              ‘ start the timer
                              BallSaverTimerExpired.Interval = 1000 * seconds
                              BallSaverTimerExpired.Enabled = True
                              BallSaverSpeedUpTimer.Interval = 1000 * seconds -(1000 * seconds) / 3
                              BallSaverSpeedUpTimer.Enabled = True
                              ‘ if you have a ball saver light you might want to turn it on at this point (or make it flash)
                              LightShootAgain.BlinkInterval = 160
                              LightShootAgain.State = 2
                              End Sub

                              ‘ The ball saver timer has expired. Turn it off AND reset the game flag

                              Sub BallSaverTimerExpired_Timer()
                              ‘debug.print “Ballsaver ended”
                              BallSaverTimerExpired.Enabled = False
                              ‘ clear the flag
                              bBallSaverActive = False
                              ‘ if you have a ball saver light then turn it off at this point
                              LightShootAgain.State = 0
                              End Sub

                              Sub BallSaverSpeedUpTimer_Timer()
                              ‘debug.print “Ballsaver Speed Up Light”
                              BallSaverSpeedUpTimer.Enabled = False
                              ‘ Speed up the blinking
                              LightShootAgain.BlinkInterval = 80
                              LightShootAgain.State = 2
                              End Sub

                              Sub UpdateSkillShot() ‘Setup and updates the skillshot lights
                              Gate1.Open = 0
                              Gate2.Open = 0
                              End Sub

                              Sub ResetSkillShotTimer_Timer ‘timer to reset the skillshot lights & variables
                              ResetSkillShotTimer.Enabled = 0
                              bSkillShotReady = False
                              ‘ LightSeqSkillshot.StopPlay
                              If L11.State = 2 Then L11.State = 0
                              L11.State = 0
                              Gate1.Open = 0
                              Gate2.Open = 0
                              ‘DMDScoreNow
                              End Sub

                              Sub CheckSuperJackpot
                              If J1.state + J2.state + J3.state + J4.state + J5.state + J6.state = 1 Then
                              AwardSuperJackpot
                              End If
                              End Sub

                              ‘********
                              ‘Bumpers
                              ‘********

                              Dim BumperHit
                              Dim ExtraBallAwardBumpers

                              ExtraBallAwardBumpers = 200

                              Sub bumper1_hit
                              If Tilted Then Exit Sub
                              startB2S(10)
                              PlaySound “fx_bumper1”
                              AddScore (100)
                              BonusBumper = BonusBumper + 1
                              Playsound “DBZ_meleemiss1″
                              BumperHit = BumperHit – 1
                              checkBumpers()
                              D1.text = ” ” & BumperHit & ” HITS ”
                              FlashForms BumperFlash, 100, 10, 0
                              flashforms bumper1L, 500, 100, 1
                              LastSwitchHit = “Bumper1”
                              End Sub

                              Sub bumper2_hit
                              If Tilted Then Exit Sub
                              startB2S(11)
                              PlaySound “fx_bumper2”
                              AddScore (100)
                              BonusBumper = BonusBumper + 1
                              Playsound “DBZ_meleemiss2″
                              BumperHit = BumperHit – 1
                              checkBumpers()
                              D1.text = ” ” & BumperHit & ” HITS ”
                              FlashForms BumperFlash, 100, 10, 0
                              flashforms bumper2L, 500, 100, 1
                              LastSwitchHit = “Bumper2”
                              End Sub

                              Sub bumper3_hit
                              If Tilted Then Exit Sub
                              startB2S(12)
                              PlaySound “fx_bumper3”
                              AddScore (100)
                              BonusBumper = BonusBumper + 1
                              Playsound “DBZ_meleemiss3″
                              BumperHit = BumperHit – 1
                              checkBumpers()
                              D1.text = ” ” & BumperHit & ” HITS ”
                              FlashForms BumperFlash, 100, 10, 0
                              flashforms bumper3L, 500, 100, 1
                              LastSwitchHit = “Bumper3″
                              End Sub

                              Sub checkBumpers()

                              ExtraBallAwardBumpers = BumperHit
                              If BumperHit <= 0 Then
                              AwardExtraBall
                              BumperHit = 200
                              D1.text = ” EXTRABALL AWARD ”
                              DisplayB2SText ” EXTRABALL AWARD ”
                              Else
                              D1.text = ” EXTRABALL AT ” & ExtraBallAwardBumpers
                              DisplayB2SText ” EXTRABALL AT ” & ” ” & ExtraBallAwardBumpers & ” HITS ”
                              End If
                              End Sub

                              ‘ Slingshots has been hit

                              Dim LStep, RStep

                              Sub LeftSlingShot_Slingshot
                              If Tilted Then Exit Sub
                              ‘ startB2S(7)
                              PlaySound SoundFXDOF(“left_slingshot”,103,DOFPulse,DOFContactors), 0, 1, -0.05, 0.05
                              LeftSling4.Visible = 1:LeftSling1.Visible = 0
                              Lemk.RotX = 26
                              LStep = 0
                              LeftSlingShot.TimerEnabled = True
                              ‘ add some points
                              AddScore (500)
                              ‘ add some effect to the table?
                              Gi2.State = 0
                              ‘ remember last trigger hit by the ball
                              LastSwitchHit = “LeftSlingShot”
                              FlashForms gi2, 100, 10, 1
                              FlashForms gi18, 100, 10, 1
                              FlashForms gi20, 100, 10, 1
                              DOF 103, DOFPulse
                              End Sub

                              Sub LeftSlingShot_Timer
                              Select Case LStep
                              Case 1:LeftSLing4.Visible = 0:LeftSLing3.Visible = 1:Lemk.RotX = 14
                              Case 2:LeftSLing3.Visible = 0:LeftSLing2.Visible = 1:Lemk.RotX = 2
                              Case 3:LeftSLing2.Visible = 0:LeftSling1.Visible = 1:Lemk.RotX = -10:Gi2.State = 1:LeftSlingShot.TimerEnabled = False
                              End Select
                              LStep = LStep + 1
                              End Sub

                              Sub RightSlingShot_Slingshot
                              ‘ startB2S(8)
                              If Tilted Then Exit Sub
                              PlaySound SoundFXDOF(“right_slingshot”,104,DOFPulse,DOFContactors), 0, 1, 0.05, 0.05
                              RightSling4.Visible = 1:RightSling1.Visible = 0
                              Remk.RotX = 26
                              RStep = 0
                              RightSlingShot.TimerEnabled = True
                              ‘ add some points
                              AddScore (500)
                              ‘ remember last trigger hit by the ball
                              LastSwitchHit = “RightSlingShot”
                              FlashForms gi1, 100, 10, 0
                              FlashForms gi19, 100, 10, 0
                              FlashForms gi21, 100, 10, 0
                              DOF 104, DOFPulse
                              End Sub

                              Sub RightSlingShot_Timer
                              Select Case RStep
                              Case 1:RightSLing4.Visible = 0:RightSLing3.Visible = 1:Remk.RotX = 14
                              Case 2:RightSLing3.Visible = 0:RightSLing2.Visible = 1:Remk.RotX = 2
                              Case 3:RightSLing2.Visible = 0:RightSLing1.Visible = 1:Remk.RotX = -10:Gi1.State = 1:RightSlingShot.TimerEnabled = False
                              End Select
                              RStep = RStep + 1
                              End Sub

                              ‘********************
                              ‘Ramps Triggers
                              ‘********************

                              Dim LockL
                              Dim LockR
                              Dim LockDiverterEnabled
                              Dim LockMultiballReady

                              Sub TriggerVukRamp_Hit
                              If Tilted Then Exit Sub
                              RampBonus = RampBonus + 1
                              Playsound “fx_metalrolling”
                              FlashForms f2, 1000, 50, 0
                              flashforms f2b, 1000, 50, 0
                              If LockR = 1 Then
                              vpmtimer.addtimer 1000, “LockR = 2 ‘”
                              LockRightRamp.state = 1
                              PinR.Isdropped = 0
                              Playsound “DiverterOn”
                              DisplayB2SText ” RIGHT LOCK DONE ”
                              vpmtimer.addtimer 1000, “UnaBolaMas ‘”
                              vpmtimer.addtimer 2000, “CheckLockDiverter ‘”
                              End If

                              If LockR = 0 Then
                              LightLock4.state = 1
                              vpmtimer.addtimer 4000, “CheckLocks ‘”
                              AddScore 500

                              Else

                              If J4.state = 2 Then
                              J4.state = 1
                              AwardJackpot
                              Else
                              AddScore 500
                              CheckSuperJackpot
                              End If
                              End If

                              End Sub

                              Sub TriggerRampL_Hit
                              If Tilted Then Exit Sub
                              RampBonus = RampBonus + 1
                              PlaySound “fx_metalrolling”, 0, 1, pan(ActiveBall)
                              FlashForms f6, 1000, 50, 0
                              DOF 210, DOFPulse
                              If BallsOnPlayfield = 1 Then
                              LightLock2.state = 1
                              AddScore 500
                              CheckLocks
                              If scoopLit.state = 0 Then
                              scoopLit.state = 1
                              End If

                              Else

                              If J2.state = 2 Then
                              J2.state = 1
                              AwardJackpot
                              Else
                              AddScore 500
                              CheckSuperJackpot
                              End If
                              End If

                              ‘check for combos
                              vpmTimer.AddTimer 100, “ComboblinkLight”
                              If ComboReady = True Then
                              if LastSwitchHit = “Leftorbittrigger” Or LastSwitchHit = “Rightorbittrigger” Or LastSwitchHit = “TriggerRampL” Or LastSwitchHit = “TriggerRampR” Then
                              Addscore jackpot(CurrentPlayer)
                              DisplayB2SText ” COMBO ” & jackpot(CurrentPlayer)
                              ComboMSNTimer.Interval = 500
                              ComboMSNTimer.enabled = 1
                              D1.TEXT = “COMBO” & jackpot(CurrentPlayer)
                              ‘ DMD “COMBO”, jackpot(CurrentPlayer), 1000
                              End If
                              End If
                              LastSwitchHit = “TriggerRampL”

                              End Sub

                              Sub TriggerRampLockL_Hit
                              Playsound “fx_metalrolling”, 0, 1, pan(ActiveBall)
                              If BallsOnPlayfield > 1 Then
                              CheckLockLeft
                              Else

                              If LockL = 1 Then
                              LockL = 2
                              LockLeftRamp.state = 1
                              PinL.Isdropped = 0
                              Playsound “DiverterOn”
                              DisplayB2SText ” LEFT LOCK DONE ”
                              vpmtimer.addtimer 1000, “UnaBolaMas ‘”
                              vpmtimer.addtimer 2000, “CheckLockDiverter ‘”
                              Else
                              CheckLockLeft
                              End If
                              End If
                              End Sub

                              Sub CheckLockLeft()
                              If LockL = 2 Then
                              PinL.Isdropped = 1
                              Playsound “DiverterOff”
                              ResetPinL.interval = 400
                              ResetPinL.enabled = 1
                              End If
                              End Sub

                              Sub ResetPinL_Timer
                              ResetPinL.enabled = 0
                              PinL.Isdropped = 0
                              Playsound “DiverterOn”
                              End Sub

                              Sub TriggerRampR_Hit
                              If Tilted Then Exit Sub
                              RampBonus = RampBonus + 1
                              PlaySound “fx_metalrolling”, 0, 1, pan(ActiveBall)
                              FlashForms f5, 1000, 50, 0
                              DOF 210, DOFPulse
                              If BallsOnPlayfield = 1 Then
                              LightLock6.state = 1
                              AddScore 500
                              vpmtimer.addtimer 3500, “CheckLocks ‘”
                              If kamehouseLit.state = 0 Then
                              kamehouseLit.state = 1
                              End If

                              Else

                              If J6.state = 2 Then
                              J6.state = 1
                              AwardJackpot
                              Else
                              AddScore 500
                              CheckSuperJackpot
                              End If
                              End If

                              ‘check for combos
                              vpmTimer.AddTimer 100, “ComboblinkLight”
                              If ComboReady = True Then
                              if LastSwitchHit = “Leftorbittrigger” Or LastSwitchHit = “Rightorbittrigger” Or LastSwitchHit = “TriggerRampL” Or LastSwitchHit = “TriggerRampR” Then
                              Addscore jackpot(CurrentPlayer)
                              DisplayB2SText ” COMBO ” & jackpot(CurrentPlayer)
                              ComboMSNTimer.Interval = 500
                              ComboMSNTimer.enabled = 1
                              D1.TEXT = “COMBO” & jackpot(CurrentPlayer)
                              ‘ DMD “COMBO”, jackpot(CurrentPlayer), 1000
                              End If
                              End If
                              LastSwitchHit = “TriggerRampR”

                              End Sub

                              Sub TriggerRampLockR_Hit
                              CheckLockRight
                              End Sub

                              Sub TriggerRampLockR1_Hit
                              CheckLockRight
                              End Sub

                              Sub CheckLockRight()
                              If LockR = 2 Then
                              PinR.Isdropped = 1
                              Playsound “DiverterOff”
                              ResetPinR.interval = 300
                              ResetPinR.enabled = 1
                              End If
                              End Sub

                              Sub ResetPinR_Timer
                              ResetPinR.enabled = 0
                              PinR.Isdropped = 0
                              Playsound “DiverterOn”
                              End Sub

                              Sub CheckLockDiverter()
                              If LockL = 2 And LockR = 2 Then
                              vpmtimer.addtimer 3000, “LockMultiballReady = True ‘”
                              DisplayB2SText ” MULTIBALL READY ”
                              LockDiverterEnabled = True
                              LockDiverterL.state = 2
                              LockDiverterR.state = 2
                              FlashForMs f1, 1000, 50, 2
                              FlashForMs f1b, 1000, 50, 2
                              End If
                              End Sub

                              Sub Leftorbittrigger_Hit
                              If Tilted Then Exit Sub
                              PlaySound “DBZ_jump”, 0, 1, pan(ActiveBall)
                              If BallsOnPlayfield = 1 Then
                              LightLock1.state = 1
                              AddScore 500
                              CheckLocks
                              If LockL = 2 And LockR = 2 And LockMultiballReady = True Then
                              LockDiverterOn
                              Gate1.Open = 1
                              PinDiverterR.Isdropped = 0
                              Playsound “DiverterOn”
                              LeftorbittriggerTimer.Interval = 2000
                              LeftorbittriggerTimer.enabled = 1
                              End If

                              Else

                              If J1.state = 2 Then
                              J1.state = 1
                              AwardJackpot
                              Else
                              CheckSuperJackpot
                              End If
                              End If

                              ‘check for combos
                              If ComboReady = True Then
                              GateOpenSkillShot.enabled = 1
                              if LastSwitchHit = “Leftorbittrigger” Or LastSwitchHit = “Rightorbittrigger” Or LastSwitchHit = “TriggerRampL” Or LastSwitchHit = “TriggerRampR” Then
                              Addscore jackpot(CurrentPlayer)
                              DisplayB2SText ” COMBO ” & jackpot(CurrentPlayer)
                              ComboMSNTimer.Interval = 500
                              ComboMSNTimer.enabled = 1
                              D1.TEXT = “COMBO” & jackpot(CurrentPlayer)
                              ‘ DMD “COMBO”, jackpot(CurrentPlayer), 1000
                              End If
                              End If

                              LastSwitchHit = “Leftorbittrigger”

                              End Sub

                              Sub LeftorbittriggerTimer_Timer
                              LeftorbittriggerTimer.enabled = 0
                              LockDiverterOff
                              Playsound “DiverterOff”
                              Gate1.Open = 0
                              PinDiverterR.Isdropped = 1
                              End Sub

                              Sub Rightorbittrigger_Hit
                              If Tilted Then Exit Sub
                              PlaySound “DBZ_jump”, 0, 1, pan(ActiveBall)
                              If BallsOnPlayfield = 1 Then
                              LightLock7.state = 1
                              AddScore 500
                              CheckLocks
                              If LockL = 2 And LockR = 2 And LockMultiballReady = True Then
                              LockDiverterOn
                              Playsound “DiverterOff”
                              Gate2.Open = 0
                              PinDiverterL.Isdropped = 0
                              RightorbittriggerTimer.interval = 1000
                              RightorbittriggerTimer.enabled = 1
                              End If

                              Else

                              If J7.state = 2 Then
                              J7.state = 1
                              AwardJackpot
                              Else
                              CheckSuperJackpot
                              End If
                              End If

                              ‘check for combos
                              If ComboReady = True Then
                              GateOpenSkillShot.enabled = 1
                              if LastSwitchHit = “Leftorbittrigger” Or LastSwitchHit = “Rightorbittrigger” Or LastSwitchHit = “TriggerRampL” Or LastSwitchHit = “TriggerRampR” Then
                              Addscore jackpot(CurrentPlayer)
                              DisplayB2SText ” COMBO ” & jackpot(CurrentPlayer)
                              ComboMSNTimer.Interval = 500
                              ComboMSNTimer.enabled = 1
                              D1.TEXT = “COMBO” & jackpot(CurrentPlayer)
                              ‘ DMD “COMBO”, jackpot(CurrentPlayer), 1000
                              End If
                              End If
                              LastSwitchHit = “Rightorbittrigger”

                              End Sub

                              Sub RightorbittriggerTimer_Timer
                              RightorbittriggerTimer.enabled = 0
                              Playsound “DiverterOff”
                              Gate2.Open = 1
                              PinDiverterL.Isdropped = 1
                              LockDiverterOff
                              End Sub

                              Sub CheckLocks()
                              If LockDiverterEnabled = True Then Exit Sub
                              If LockL = 2 Or LockR = 2 Then Exit Sub

                              If LightLock1.state = 1 And LightLock2.state = 1 And LightLock3.state = 1 And LightLock4.state = 1 And LightLock5.state = 1 And LightLock6.state = 1 And LightLock7.state = 1 Then
                              LockLeftRamp.state = 2
                              LockRightRamp.state = 2
                              LockL = 1
                              LockR = 1
                              DisplayB2SText ” LOCK THE BALLS ”
                              FlashForms f3, 500, 50, 2
                              flashforms f3b, 500, 50, 2
                              FlashForms f4, 500, 50, 2
                              flashforms f4b, 500, 50, 2
                              DOF 105 ,DOFPulse
                              DOF 106 ,DOFPulse
                              End If
                              End Sub

                              ‘******
                              ‘Oyos
                              ‘******

                              Dim ShenlongMultiball
                              Dim Shenlong
                              Sub Scoop_Hit
                              ScoopFake.enabled = 0
                              If BallsOnPlayfield > 1 Then

                              If J3.state = 2 Then
                              J3.state = 1
                              AwardJackpot
                              Else
                              CheckSuperJackpot
                              End If
                              vpmtimer.addtimer 2500, “ScoopSolenoidPulse ‘”
                              Else

                              If ExtraBallIsIit = True Then
                              ExtraBallIsIit = False
                              LightExtraBallLit.state = 0
                              LightExtraBall.state = 1
                              AwardExtraBall()
                              End If

                              ScoopTimer1.enabled = 1
                              End If
                              End Sub

                              Sub ScoopTimer1_Timer
                              ScoopTimer1.enabled = 0
                              AddScore 1000
                              If BallsOnPlayfield = 1 Then
                              LightLock3.state = 1
                              CheckLocks
                              End If
                              If scoopLit.state = 1 Then
                              scoopLit.state = 0
                              shenlong = shenlong + 1
                              CheckBalls
                              Else
                              vpmtimer.addtimer 2500, “ScoopSolenoidPulse ‘”
                              DisplayB2SText ” FIND THE DRAGON BALLS ”
                              D1.text = “FIND THE DRAGON BALLS”
                              End If
                              End Sub

                              Sub ScoopFake_Hit
                              Playsound “fx_balldrop”
                              End Sub

                              Sub CheckBalls
                              Dim i
                              If shenlong = 7 Then
                              startB2S(31)
                              LightSeqAllBalls.Play SeqRandom, 10, , 50000
                              AddMultiball 6
                              ShenlongMultiball = True
                              bMultiBallMode = True
                              LightBall1.state = 0
                              LightBall2.state = 0
                              LightBall3.state = 0
                              LightBall4.state = 0
                              LightBall5.state = 0
                              LightBall6.state = 0
                              LightBall7.state = 0
                              PlaySong “DBZ_End”
                              PlaySong “DBZ_Multiball”
                              StartJackpots
                              OjoL.state = 2
                              OjoR.state = 2
                              vpmtimer.addtimer 2500, “ScoopSolenoidPulse ‘”
                              DisplayB2SText ” SHENLONG MULTIBALL ”
                              D1.text = “SHENLONG MULTIBALL”
                              SHENLONGMSNTimer.interval = 1000
                              SHENLONGMSNTimer.enabled = 1
                              ResetLanes()
                              End If

                              If shenlong = 6 Then LightBall6.state = 1: startB2S(6): LightSeqBalls5.StopPlay: BallsMessage() :vpmtimer.addtimer 2500, “ScoopSolenoidPulse ‘”
                              If shenlong = 5 Then LightBall5.state = 1: startB2S(5): LightSeqBalls4.StopPlay: BallsMessage(): LightSeqBalls5.Play SeqLeftOn, 25, 1: LightSeqBalls5.UpdateInterval = 25:

                              LightSeqBalls5.Play SeqRightOn, 25, 1: vpmtimer.addtimer 2500, “ScoopSolenoidPulse ‘”
                              If shenlong = 4 Then LightBall4.state = 1: startB2S(4): LightSeqBalls3.StopPlay: BallsMessage(): LightSeqBalls4.Play SeqLeftOn, 25, 1: LightSeqBalls4.UpdateInterval = 25:

                              LightSeqBalls4.Play SeqRightOn, 25, 1: vpmtimer.addtimer 2500, “ScoopSolenoidPulse ‘”
                              If shenlong = 3 Then LightBall3.state = 1: startB2S(3): LightSeqBalls2.StopPlay: BallsMessage(): LightSeqBalls3.Play SeqLeftOn, 25, 1: LightSeqBalls3.UpdateInterval = 25:

                              LightSeqBalls3.Play SeqRightOn, 25, 1: vpmtimer.addtimer 2500, “ScoopSolenoidPulse ‘”
                              If shenlong = 2 Then LightBall2.state = 1: startB2S(2): LightSeqBalls1.StopPlay: BallsMessage(): LightSeqBalls2.Play SeqLeftOn, 25, 1: LightSeqBalls2.UpdateInterval = 25:

                              LightSeqBalls2.Play SeqRightOn, 25, 1: vpmtimer.addtimer 2500, “ScoopSolenoidPulse ‘”
                              If shenlong = 1 Then LightBall1.state = 1: startB2S(1): LightSeqAllBalls.StopPlay: BallsMessage(): LightSeqBalls1.Play SeqLeftOn, 25, 1: LightSeqBalls1.UpdateInterval = 25: LightSeqBalls1.Play SeqRightOn, 25, 1: vpmtimer.addtimer 2500, “ScoopSolenoidPulse ‘”
                              End Sub

                              Sub LightSeqAllBalls_PlayDone()
                              BallsRestart()
                              End Sub

                              Sub BallsRestart
                              Dim i
                              shenlong = 0
                              LightSeqAllBalls.UpdateInterval = 25
                              LightSeqAllBalls.Play SeqLeftOn, 25, 1
                              LightSeqAllBalls.UpdateInterval = 25
                              LightSeqAllBalls.Play SeqRightOn, 25, 1
                              LightSeqAllBalls.UpdateInterval = 25
                              LightSeqAllBalls.UpdateInterval = 25
                              LightSeqAllBalls.Play SeqLeftOn, 25, 1
                              LightSeqAllBalls.UpdateInterval = 25
                              LightSeqAllBalls.Play SeqRightOn, 25, 1
                              LightSeqAllBalls.UpdateInterval = 25
                              End Sub

                              Sub BallsRestart6
                              LightBall7.state = 2
                              End Sub

                              Sub LightSeqBalls5_PlayDone()
                              BallsRestart5()
                              End Sub

                              Sub BallsRestart5
                              Dim i
                              LightSeqBalls5.UpdateInterval = 25
                              LightSeqBalls5.Play SeqLeftOn, 25, 1
                              LightSeqBalls5.UpdateInterval = 25
                              LightSeqBalls5.Play SeqRightOn, 25, 1
                              LightSeqBalls5.UpdateInterval = 25
                              LightSeqBalls5.UpdateInterval = 25
                              LightSeqBalls5.Play SeqLeftOn, 25, 1
                              LightSeqBalls5.UpdateInterval = 25
                              LightSeqBalls5.Play SeqRightOn, 25, 1
                              LightSeqBalls5.UpdateInterval = 25
                              End Sub

                              Sub LightSeqBalls4_PlayDone()
                              BallsRestart4()
                              End Sub

                              Sub BallsRestart4
                              Dim i
                              LightSeqBalls4.UpdateInterval = 25
                              LightSeqBalls4.Play SeqLeftOn, 25, 1
                              LightSeqBalls4.UpdateInterval = 25
                              LightSeqBalls4.Play SeqRightOn, 25, 1
                              LightSeqBalls4.UpdateInterval = 25
                              LightSeqBalls4.UpdateInterval = 25
                              LightSeqBalls4.Play SeqLeftOn, 25, 1
                              LightSeqBalls4.UpdateInterval = 25
                              LightSeqBalls4.Play SeqRightOn, 25, 1
                              LightSeqBalls4.UpdateInterval = 25
                              End Sub

                              Sub LightSeqBalls3_PlayDone()
                              BallsRestart3()
                              End Sub

                              Sub BallsRestart3
                              Dim i
                              LightSeqBalls3.UpdateInterval = 25
                              LightSeqBalls3.Play SeqLeftOn, 25, 1
                              LightSeqBalls3.UpdateInterval = 25
                              LightSeqBalls3.Play SeqRightOn, 25, 1
                              LightSeqBalls3.UpdateInterval = 25
                              LightSeqBalls3.UpdateInterval = 25
                              LightSeqBalls3.Play SeqLeftOn, 25, 1
                              LightSeqBalls3.UpdateInterval = 25
                              LightSeqBalls3.Play SeqRightOn, 25, 1
                              LightSeqBalls3.UpdateInterval = 25
                              End Sub

                              Sub LightSeqBalls2_PlayDone()
                              BallsRestart2()
                              End Sub

                              Sub BallsRestart2
                              Dim i
                              LightSeqBalls2.UpdateInterval = 25
                              LightSeqBalls2.Play SeqLeftOn, 25, 1
                              LightSeqBalls2.UpdateInterval = 25
                              LightSeqBalls2.Play SeqRightOn, 25, 1
                              LightSeqBalls2.UpdateInterval = 25
                              LightSeqBalls2.UpdateInterval = 25
                              LightSeqBalls2.Play SeqLeftOn, 25, 1
                              LightSeqBalls2.UpdateInterval = 25
                              LightSeqBalls2.Play SeqRightOn, 25, 1
                              LightSeqBalls2.UpdateInterval = 25
                              End Sub

                              Sub LightSeqBalls1_PlayDone()
                              BallsRestart1
                              End Sub

                              Sub BallsRestart1
                              Dim i
                              LightSeqBalls1.UpdateInterval = 25
                              LightSeqBalls1.Play SeqLeftOn, 25, 1
                              LightSeqBalls1.UpdateInterval = 25
                              LightSeqBalls1.Play SeqRightOn, 25, 1
                              LightSeqBalls1.UpdateInterval = 25
                              LightSeqBalls1.UpdateInterval = 25
                              LightSeqBalls1.Play SeqLeftOn, 25, 1
                              LightSeqBalls1.UpdateInterval = 25
                              LightSeqBalls1.Play SeqRightOn, 25, 1
                              LightSeqBalls1.UpdateInterval = 25
                              End Sub

                              Sub ResetShenlongMultiball
                              D1.Text = ” END SHENLONG MULTIBALL ”
                              DisplayB2SText ” END SHENLONG MULTIBALL ”
                              ShenlongMultiball = False
                              shenlong = 0
                              LightBall1.state = 0
                              LightBall2.state = 0
                              LightBall3.state = 0
                              LightBall4.state = 0
                              LightBall5.state = 0
                              LightBall6.state = 0
                              LightBall7.state = 0
                              OjoL.state = 0
                              OjoR.state = 0
                              BallsRestart
                              ResetLanes
                              End Sub

                              Sub BallsMessage()
                              select Case shenlong
                              Case 0: If scoopLit.state = 0 Then
                              DisplayB2SText ” FIND THE DRAGON BALLS ”
                              D1.text = “FIND THE DRAGON BALLS”
                              End If
                              Case 1: If shenlong = 1 Then
                              DisplayB2SText ” DRAGON BALL 1 UNLOCKET “:
                              D1.text = “DRAGON BALL 1 UNLOCKET”
                              BallsRestart1
                              End If
                              Case 2: If shenlong = 2 Then
                              DisplayB2SText ” DRAGON BALL 2 UNLOCKET “:
                              D1.text = “DRAGON BALL 2 UNLOCKET”
                              BallsRestart2
                              End If

                              Case 3: If shenlong = 3 Then
                              DisplayB2SText ” DRAGON BALL 3 UNLOCKET “:
                              D1.text = “DRAGON BALL 3 UNLOCKET”
                              BallsRestart3
                              End If

                              Case 4: If shenlong = 4 Then
                              DisplayB2SText ” DRAGON BALL 4 UNLOCKET “:
                              D1.text = “DRAGON BALL 4 UNLOCKET”
                              BallsRestart4
                              End If

                              Case 5: If shenlong = 5 Then
                              DisplayB2SText ” DRAGON BALL 5 UNLOCKET “:
                              D1.text = “DRAGON BALL 5 UNLOCKET”
                              BallsRestart5
                              End If

                              Case 6: If shenlong = 6 Then
                              DisplayB2SText ” DRAGON BALL 6 UNLOCKET “:
                              D1.text = “DRAGON BALL 6 UNLOCKET”
                              BallsRestart6
                              End If

                              Case 7: If shenlong = 7 Then
                              DisplayB2SText ” DRAGON BALL 7 UNLOCKET “:
                              D1.text = “DRAGON BALL 7 UNLOCKET”
                              End If
                              End Select
                              End Sub

                              ‘***************
                              ‘KameHouse
                              ‘***************

                              Sub kamehouse_Hit
                              kamehouseFake.enabled = 0
                              If BallsOnPlayfield = 1 Then
                              LightLock5.state = 1
                              CheckLocks
                              RandomAwardTimer.interval = 2000
                              RandomAwardTimer.enabled = 1
                              Else
                              If J5.state = 2 Then
                              J5.state = 1
                              AwardJackpot
                              Else
                              CheckSuperJackpot
                              End If
                              vpmtimer.addtimer 2500, “kamehouseSolenoidPulse ‘”
                              End If
                              End Sub

                              Sub RandomAwardTimer_Timer
                              RandomAwardTimer.enabled = 0
                              If kamehouseLit.state = 1 Then
                              kamehouseLit.state = 0
                              kamehouseAward
                              Else
                              kamehouseSolenoidPulse
                              DisplayB2SText ” NOBODY’S HOME ”
                              D1.TEXT = “NOBODY’S HOME”
                              AddScore 1000
                              End If
                              End Sub

                              Sub kamehouseFake_Hit
                              Playsound “fx_balldrop”
                              End Sub

                              Dim ExtraBallIsIit
                              Sub kamehouseAward() ‘from the Pyramid
                              Dim tmp, tmp2

                              tmp = INT(RND(1) * 80)
                              Select Case tmp
                              Case 1, 2, 3, 4, 5, 6 ‘Lit Extra Ball
                              ‘DMD “EXTRA BALL IS LIT”, ” “, 2000
                              D1.text = “EXTRA BALL IS LIT”
                              DisplayB2SText ” EXTRA BALL IS LIT ”
                              ExtraBallIsIit = True
                              LightExtraBallLit.State = 2
                              Case 7, 8, 13, 14, 15 ‘100,000 points
                              ‘DMD “BIG POINTS”, “10000”, 2000
                              D1.text = “BIG POINTS 10000″
                              DisplayB2SText ” BIG POINTS 10000 ”
                              AddScore 10000
                              Case 9, 10, 11, 12 ‘Hold Bonus
                              ‘DMD “BONUS HELD”, “ACTIVATED”, 2000
                              DisplayB2SText ” BONUS HELD ACTIVATED ”
                              D1.text = ” BONUS HELD ACTIVATED ”
                              bBonusHeld = True
                              Case 16, 17, 18 ‘Increase Bonus Multiplier
                              ‘DMD “INCREASED”, “BONUS X”, 2000
                              D1.text = “INCREASED BONUS X”
                              DisplayB2SText ” INCREASED BONUS X ”
                              AddBonusMultiplier 1
                              Case 19, 20, 21 ‘Add a Dragon Ball
                              Shenlong = Shenlong + 1
                              D1.text = “DRAGON BALL FOUND”
                              DisplayB2SText ” DRAGON BALL FOUND ”
                              CheckBalls
                              Case 22, 23, 36, 37, 38 ‘PlayField multiplier
                              ‘ DMD “INCREASED”, “PLAYFIELD X”, 2000
                              ‘ AddPlayfieldMultiplier 1
                              Case 24, 25, 26, 27, 28 ‘100,000 points
                              ‘DMD “BIG POINTS”, “10000”, 2000
                              D1.text = “BIG POINTS 50000″
                              DisplayB2SText ” BIG POINTS 50000 ”
                              AddScore 50000
                              Case 29, 30, 31, 32, 33, 34, 35 ‘Increase Bumper value
                              BumperValue(CurrentPlayer) = BumperValue(CurrentPlayer) + 500
                              ‘ DMD “BUMPER VALUE”, BumperValue(CurrentPlayer), 2000
                              D1.text = “BUMPER VALUE” & BumperValue(CurrentPlayer)
                              DisplayB2SText ” BUMPER VALUE ” & BumperValue(CurrentPlayer)
                              Case 39, 40, 43, 44 ‘extra multiball
                              ‘DMD “EXTRA”, “MULTIBALL”, 2000
                              D1.text = “QUICK MULTIBALL”
                              DisplayB2SText ” QUICK MULTIBALL ”
                              UnaBolaMas: bMultiBallMode = True :BallsOnPlayfield = 2 : PlaySong “DBZ_End”: PlaySong “DBZ_Multiball”: EnableBallSaver 10: StartJackpots: GiEffect 2:

                              LightEffect 2
                              Case 45, 46, 47, 48 ‘ Ball Save
                              ‘ DMD “BALL SAVE”, “ACTIVATED”, 2000
                              D1.text = “BALL SAVE ACTIVATED”
                              DisplayB2SText ” BALL SAVE ACTIVATED ”
                              EnableBallSaver 20
                              Case 51, 52, 53, 54 ‘ Add Light Lock
                              Select Case tmp
                              Case 1: If LightLock1.state = 0 Then
                              LightLock1.blinkinterval = 1000
                              LightLock1.state = 1
                              CheckLocks
                              End If
                              Case 2: If LightLock2.state = 0 Then
                              LightLock2.blinkinterval = 1000
                              LightLock2.state = 1
                              CheckLocks
                              End If
                              Case 3: If LightLock3.state = 0 Then
                              LightLock3.blinkinterval = 1000
                              LightLock3.state = 1
                              CheckLocks
                              End If
                              Case 4: If LightLock4.state = 0 Then
                              LightLock4.blinkinterval = 1000
                              LightLock4.state = 1
                              CheckLocks
                              End If
                              Case 5: If LightLock5.state = 0 Then
                              LightLock5.blinkinterval = 1000
                              LightLock5.state = 1
                              CheckLocks
                              End If
                              Case 6: If LightLock6.state = 0 Then
                              LightLock6.blinkinterval = 1000
                              LightLock6.state = 1
                              CheckLocks
                              End If
                              Case 7: If LightLock7.state = 0 Then
                              LightLock7.blinkinterval = 1000
                              LightLock7.state = 1
                              CheckLocks
                              End If
                              End Select
                              D1.text = “ADD LIGHT LOCK”
                              DisplayB2SText ” ADD LIGHT LOCK ”
                              Case 60, 61, 62, 63 ‘ Add Saiyan Level
                              Saiyan = Saiyan + 1
                              CheckNivel
                              D1.text = “ADD SAIYAN LEVEL”
                              DisplayB2SText ” ADD SAIYAN LEVEL ”
                              Case ELSE ‘Add a Random score from 10.000 to 100,000 points
                              tmp2 = INT((RND) * 9) * 1000 + 10000
                              ‘ DMD “EXTRA POINTS”, tmp2, 2000
                              D1.text = “EXTRA POINTS ” & tmp2
                              DisplayB2SText ” EXTRA POINTS ” & tmp2
                              AddScore tmp2
                              End Select

                              kamehouseSolenoidPulse

                              End Sub

                              ‘**************
                              ‘ LockHole
                              ‘**************

                              Sub LockHole_Hit
                              LockDiverterOff
                              ResetLanes()
                              LockDiverterL.state = 1
                              LockDiverterR.state = 1
                              Gate4.Open = 1
                              PlaySong “DBZ_End”
                              PlaySong “DBZ_Multiball”
                              LightEffect 2
                              FlashEffect 2
                              Playsound “subway2″
                              LockHoleTimer.interval = 4000
                              LockHoleTimer.enabled = 1
                              End Sub

                              Sub LockHoleSolenoidPulse
                              ScoopFake.enabled = 0
                              LockHole.kick 225, 10
                              End Sub

                              Sub LockHoleTimer_Timer
                              LockHoleTimer.enabled = 0
                              LockMultiballReady = False
                              LockMultiball = True
                              bMultiBallMode = True
                              LockL = 0
                              LockR = 0
                              LockPinOff
                              BallsOnPlayfield = 3
                              StartJackpots
                              scoop1.enabled = 1
                              scoop.enabled = 0
                              DisplayB2SText ” MULTIBALL ”
                              MultiballMSNTimer.interval = 2000
                              MultiballMSNTimer.enabled = 1
                              LockHoleSolenoidPulse
                              FlashForMs f1, 1000, 50, 0
                              FlashForMs f1b, 1000, 50, 0
                              End Sub

                              Sub scoop1_Hit
                              scoop1.kick 0, 30 , 1.5
                              Playsound “salidadebola”
                              scoop1.enabled = 0
                              Scoop1Timer.interval = 1000
                              Scoop1Timer.enabled = 1
                              End Sub

                              Sub Scoop1Timer_Timer
                              Scoop1Timer.enabled = 0
                              scoop.enabled = 1
                              End Sub

                              Sub kamehouseSolenoidPulse
                              Playsound “salidadebola”
                              kamehouseFake.enabled = 0
                              kamehouse.kick 0, 33, 1.5
                              kamehouseTimer.interval = 500
                              kamehouseTimer.enabled = 1
                              End Sub

                              Sub kamehouseTimer_Timer
                              kamehouseTimer.enabled = 0
                              kamehouseFake.enabled = 1
                              End Sub

                              Sub ScoopSolenoidPulse
                              Playsound “salidadebola”
                              ScoopFake.enabled = 0
                              scoop.kick 0, 30 , 1.5
                              scoopTimer.interval = 500
                              scoopTimer.enabled = 1
                              End Sub
                              Sub ScoopTimer_Timer
                              ScoopTimer.enabled = 0
                              ScoopFake.enabled = 1
                              End Sub

                              Sub Kicker1_Hit
                              Kicker1.kick 180, 1
                              End Sub

                              Sub Kicker2_Hit
                              Kicker2.kick 180, 1
                              End Sub

                              Sub LockPinOff()
                              PinL.Isdropped = 1
                              PinR.Isdropped = 1
                              End Sub

                              Sub LockPinOn()
                              PinL.Isdropped = 0
                              PinR.Isdropped = 0
                              End Sub

                              Sub LockDiverterOff()
                              LockDiverter.RotateToStart
                              End Sub

                              Sub LockDiverterOn()
                              LockDiverter.RotateToEnd
                              End Sub

                              Sub IncrementBonusMultiplier()
                              Dim NewBonusLevel

                              ‘ if not at the maximum bonus level
                              if(BonusMultiplier(CurrentPlayer) < MaxMultiplier) then
                              ‘ then set it the next next one AND set the lights
                              NewBonusLevel = BonusMultiplier(CurrentPlayer) + 1
                              SetBonusMultiplier(NewBonusLevel)
                              D1.Text = ” BONUS X: ” & BonusMultiplier(CurrentPlayer)
                              DisplayB2SText ” BONUS X: ” & BonusMultiplier(CurrentPlayer)
                              End if
                              End Sub

                              Sub SetBonusMultiplier(Level)
                              ‘ Set the multiplier to the specified level
                              BonusMultiplier(CurrentPlayer) = Level
                              ‘ UPdateBonusXLights(Level)
                              End Sub

                              Sub CheckMultiplier
                              If(l11.State = 1) And(L12.State = 1) And(L13.State = 1) Then
                              AddScore 5000
                              LightSeqLanesUP.Play SeqRandom, 5, , 2000
                              IncrementBonusMultiplier()
                              L11.State = 0
                              L12.State = 0
                              L13.State = 0
                              End If
                              End Sub

                              Sub ResetJackpotLights ‘when multiball is finished, resets jackpot and superjackpot lights
                              bJackpot = False
                              J1.State = 0
                              J2.State = 0
                              J3.State = 0
                              J4.State = 0
                              J5.State = 0
                              J6.State = 0
                              J7.State = 0
                              End Sub

                              Sub StartJackpots
                              If bMultiballMode Then
                              bJackpot = True
                              J1.State = 2
                              J2.State = 2
                              J3.State = 2
                              J4.State = 2
                              J5.State = 2
                              J6.State = 2
                              J7.State = 2
                              End If
                              End Sub

                              Dim LockMultiball
                              Sub ResetLockMultiball
                              LockL = 0
                              LockR = 0
                              bJackpot = False
                              LockMultiball = False
                              LockDiverterEnabled = False
                              LightLock1.State = 0
                              LightLock2.State = 0
                              LightLock3.State = 0
                              LightLock4.State = 0
                              LightLock5.State = 0
                              LightLock6.State = 0
                              LightLock7.State = 0
                              LockRightRamp.State = 0
                              LockLeftRamp.State = 0
                              LockDiverterL.State = 0
                              LockDiverterR.State = 0
                              ResetLanes()
                              End Sub

                              Sub ResetLanes()
                              L14.state = 0
                              L15.state = 0
                              L16.state = 0
                              L17.state = 0
                              End Sub
                              ‘**********************
                              ‘LaneTriggersUp
                              ‘**********************
                              Sub LeftLaneTriggerUp_Hit()
                              If Tilted Then Exit Sub
                              LaneBonus = LaneBonus + 1
                              L11.state = 1
                              AddScore 500
                              CheckMultiplier
                              End Sub

                              Sub MiddleLaneTriggerUp_Hit()
                              If Tilted Then Exit Sub
                              LaneBonus = LaneBonus + 1
                              L12.state = 1
                              AddScore 500
                              CheckMultiplier
                              End Sub

                              Sub RightLaneTriggerUp_Hit()
                              If Tilted Then Exit Sub
                              LaneBonus = LaneBonus + 1
                              L13.state = 1
                              AddScore 500
                              CheckMultiplier
                              End Sub

                              ‘**********************
                              ‘LaneTriggersDown
                              ‘**********************
                              Sub LeftOutLaneTrigger_Hit()
                              If Tilted Then Exit Sub
                              LaneSounds()
                              LaneBonus = LaneBonus + 1
                              L14.state = 1
                              AddScore 500
                              CheckLaneTriggersDown

                              If(bBallSaverActive = True) Then
                              bBallSaverActive = False
                              EnableBallSaver 1
                              BallsOnPlayfield = BallsOnPlayfield + 1
                              UnaBolaMas
                              End If
                              End Sub

                              Sub LeftInLaneTrigger_Hit()
                              If Tilted Then Exit Sub
                              LaneBonus = LaneBonus + 1
                              LaneSounds()
                              L15.state = 1
                              AddScore 500
                              CheckLaneTriggersDown
                              End Sub

                              Sub RightInLaneTrigger_Hit()
                              If Tilted Then Exit Sub
                              LaneBonus = LaneBonus + 1
                              LaneSounds()
                              L16.state = 1
                              AddScore 500
                              CheckLaneTriggersDown
                              End Sub

                              Sub RightOutLaneTrigger_Hit()
                              If Tilted Then Exit Sub
                              LaneBonus = LaneBonus + 1
                              LaneSounds()
                              L17.state = 1
                              AddScore 500
                              CheckLaneTriggersDown

                              If(bBallSaverActive = True) Then
                              bBallSaverActive = False
                              EnableBallSaver 1
                              BallsOnPlayfield = BallsOnPlayfield + 1
                              UnaBolaMas
                              End If

                              End Sub

                              Sub CheckLaneTriggersDown()
                              If bMultiBallMode Then Exit Sub
                              If(l14.State = 1) And(L15.State = 1) And(l16.State = 1) And(L17.State = 1) Then
                              LightSeqLanesDown.Play SeqRandom, 5, , 2000
                              AddScore 4000
                              l14.State = 0
                              l15.State = 0
                              l16.State = 0
                              L17.State = 0
                              EnableBallSaver 10
                              End If
                              End Sub

                              ‘******************
                              ‘Static Targets
                              ‘******************

                              Sub TargetL1_Hit
                              If Tilted Then Exit Sub
                              AddScore 500
                              TargetBonus = TargetBonus + 1
                              TargetsSounds()
                              If bMultiBallMode Then Exit Sub
                              L81.State = 1
                              DOF 119, DOFPulse
                              TargetsMode()
                              LastSwitchHit = “TargetL1”
                              End Sub

                              Sub TargetL2_Hit
                              If Tilted Then Exit Sub
                              AddScore 500
                              TargetBonus = TargetBonus + 1
                              TargetsSounds()
                              If bMultiBallMode Then Exit Sub
                              L91.State = 1
                              DOF 119, DOFPulse
                              TargetsMode()
                              LastSwitchHit = “TargetL2”
                              End Sub

                              Sub TargetL3_Hit
                              If Tilted Then Exit Sub
                              AddScore 500
                              TargetBonus = TargetBonus + 1
                              TargetsSounds()
                              If bMultiBallMode Then Exit Sub
                              L101.State = 1
                              DOF 119, DOFPulse
                              TargetsMode()
                              LastSwitchHit = “TargetL3”
                              End Sub

                              Sub TargetR1_Hit
                              If Tilted Then Exit Sub
                              AddScore 500
                              TargetBonus = TargetBonus + 1
                              TargetsSounds()
                              If bMultiBallMode Then Exit Sub
                              L131.State = 1
                              DOF 120, DOFPulse
                              TargetsMode()
                              LastSwitchHit = “TargetR1”
                              End Sub

                              Sub TargetR2_Hit
                              If Tilted Then Exit Sub
                              AddScore 500
                              TargetBonus = TargetBonus + 1
                              TargetsSounds()
                              If bMultiBallMode Then Exit Sub
                              L121.State = 1
                              DOF 120, DOFPulse
                              TargetsMode()
                              LastSwitchHit = “TargetR2”
                              End Sub

                              Sub TargetR3_Hit
                              If Tilted Then Exit Sub
                              AddScore 500
                              TargetBonus = TargetBonus + 1
                              TargetsSounds()
                              If bMultiBallMode Then Exit Sub
                              L111.State = 1
                              DOF 120, DOFPulse
                              TargetsMode()
                              LastSwitchHit = “TargetR3″
                              End Sub

                              Dim TargetsModeOn
                              Dim Saiyan: Saiyan = 0
                              Dim SaiyanMultiball

                              Sub TargetsMode()
                              If TargetsModeOn Then Exit Sub
                              If(L81.State = 1) And(L91.State = 1) And(L101.State = 1) And(L111.State = 1) And(L121.State = 1) And(L131.State = 1) Then
                              LightSeqTargets.Play SeqRandom, 5, , 2000
                              AddScore 6000
                              D1.Text = ” TRANSFORM ”
                              DisplayB2SText ” TRANSFORM ”
                              ‘ Saiyan = Saiyan + 1
                              TargetsModeOn = True
                              vpmtimer.addtimer 400, “CheckNivel ‘”
                              EnableBallSaver 10
                              End If
                              End Sub

                              Sub CheckNivel
                              Saiyan = Saiyan + 1
                              If Saiyan >= 5 Then
                              Saiyan = 5
                              AddScore 5000
                              D1.Text = ” SAIYAN LEVEL 5 ”
                              DisplayB2SText ” SAIYAN LEVEL 5 ”
                              Playsound “burning_charge”
                              startB2S(29)
                              SetLightColor L81, yellow, 110
                              SetLightColor L91, yellow, 110
                              SetLightColor L101, yellow, 110
                              SetLightColor L111, yellow, 110
                              SetLightColor L121, yellow, 110
                              SetLightColor L131, yellow, 110

                              L81.State = 2
                              L91.State = 2
                              L101.State = 2
                              L111.State = 2
                              L121.State = 2
                              L131.State = 2
                              FlashForms f3, 2000, 50, 2
                              flashforms f3b, 2000, 50, 2
                              FlashForms f4, 2000, 50, 2
                              flashforms f4b, 2000, 50, 2
                              FlashForms f7, 2000, 50, 2
                              DOF 105 ,DOFPulse
                              DOF 106 ,DOFPulse
                              PlaySong “DBZ_End”
                              PlaySong “DBZ_Multiball”
                              StartJackpots
                              AddMultiball 5
                              SaiyanMultiball = True
                              bMultiBallMode = True
                              D1.Text = ” SAIYAN MULTIBALL ”
                              DisplayB2SText ” SAIYAN MULTIBALL ”
                              ‘vpmtimer.addtimer 2500, “TargetsLightOff ‘”
                              TargetsLightOffTimer.Interval = 2500
                              TargetsLightOffTimer.Enabled = TRUE
                              End If

                              If Saiyan = 4 Then
                              AddScore 4000
                              D1.Text = ” SAIYAN LEVEL 4 ”
                              DisplayB2SText ” SAIYAN LEVEL 4 ”
                              Playsound “burning_charge”
                              SetLightColor L81, yellow, 80
                              SetLightColor L91, yellow, 80
                              SetLightColor L101, yellow, 80
                              SetLightColor L111, yellow, 80
                              SetLightColor L121, yellow, 80
                              SetLightColor L131, yellow, 80

                              L81.State = 2
                              L91.State = 2
                              L101.State = 2
                              L111.State = 2
                              L121.State = 2
                              L131.State = 2
                              FlashForms f3, 2000, 50, 2
                              flashforms f3b, 2000, 50, 2
                              FlashForms f4, 2000, 50, 2
                              flashforms f4b, 2000, 50, 2
                              FlashForms f7, 2000, 50, 2
                              DOF 105 ,DOFPulse
                              DOF 106 ,DOFPulse
                              ‘vpmtimer.addtimer 2500, “TargetsLightOff ‘”
                              TargetsLightOffTimer.Interval = 2500
                              TargetsLightOffTimer.Enabled = TRUE
                              End If

                              If Saiyan = 3 Then
                              AddScore 3000
                              D1.Text = ” SAIYAN LEVEL 3 ”
                              DisplayB2SText ” SAIYAN LEVEL 3 ”
                              Playsound “burning_charge”
                              startB2S(29)
                              SetLightColor L81, yellow, 50
                              SetLightColor L91, yellow, 50
                              SetLightColor L101, yellow, 50
                              SetLightColor L111, yellow, 50
                              SetLightColor L121, yellow, 50
                              SetLightColor L131, yellow, 50

                              L81.State = 2
                              L91.State = 2
                              L101.State = 2
                              L111.State = 2
                              L121.State = 2
                              L131.State = 2
                              FlashForms f3, 2000, 50, 2
                              flashforms f3b, 2000, 50, 2
                              FlashForms f4, 2000, 50, 2
                              flashforms f4b, 2000, 50, 2
                              FlashForms f7, 2000, 50, 2
                              DOF 105 ,DOFPulse
                              DOF 106 ,DOFPulse
                              ‘vpmtimer.addtimer 2500, “TargetsLightOff ‘”
                              TargetsLightOffTimer.Interval = 2500
                              TargetsLightOffTimer.Enabled = TRUE
                              End If

                              If Saiyan = 2 Then
                              AddScore 2000
                              D1.Text = ” SAIYAN LEVEL 2 ”
                              DisplayB2SText ” SAIYAN LEVEL 2 ”
                              Playsound “burning_charge”
                              SetLightColor L81, yellow, 30
                              SetLightColor L91, yellow, 30
                              SetLightColor L101, yellow, 30
                              SetLightColor L111, yellow, 30
                              SetLightColor L121, yellow, 30
                              SetLightColor L131, yellow, 30

                              L81.State = 2
                              L91.State = 2
                              L101.State = 2
                              L111.State = 2
                              L121.State = 2
                              L131.State = 2
                              FlashForms f3, 2000, 50, 2
                              flashforms f3b, 2000, 50, 2
                              FlashForms f4, 2000, 50, 2
                              flashforms f4b, 2000, 50, 2
                              FlashForms f7, 2000, 50, 2
                              DOF 105 ,DOFPulse
                              DOF 106 ,DOFPulse
                              ‘vpmtimer.addtimer 2500, “TargetsLightOff ‘”
                              TargetsLightOffTimer.Interval = 2500
                              TargetsLightOffTimer.Enabled = TRUE
                              End If

                              If Saiyan <= 1 Then
                              AddScore 1000
                              D1.Text = ” SAIYAN LEVEL 1 ”
                              DisplayB2SText ” SAIYAN LEVEL 1 ”
                              Playsound “burning_charge”
                              SetLightColor L81, yellow, 1
                              SetLightColor L91, yellow, 1
                              SetLightColor L101, yellow, 1
                              SetLightColor L111, yellow, 1
                              SetLightColor L121, yellow, 1
                              SetLightColor L131, yellow, 1

                              L81.State = 2
                              L91.State = 2
                              L101.State = 2
                              L111.State = 2
                              L121.State = 2
                              L131.State = 2
                              FlashForms f3, 2000, 50, 2
                              flashforms f3b, 2000, 50, 2
                              FlashForms f4, 2000, 50, 2
                              flashforms f4b, 2000, 50, 2
                              FlashForms f7, 2000, 50, 2
                              DOF 105 ,DOFPulse
                              DOF 106 ,DOFPulse
                              ‘vpmtimer.addtimer 2500, “TargetsLightOff ‘”
                              TargetsLightOffTimer.Interval = 2500
                              TargetsLightOffTimer.Enabled = TRUE
                              End If
                              End Sub

                              Sub TargetsLightOffTimer_Timer()
                              TargetsLightOffTimer.Enabled = False
                              TargetsLightOff
                              End Sub

                              Sub TargetsLightOff
                              LightSeqTargets.StopPlay
                              L81.State = 0
                              L91.State = 0
                              L101.State = 0
                              L111.State = 0
                              L121.State = 0
                              L131.State = 0
                              TargetsModeOn = False
                              FlashForms f3, 50, 50, 2
                              flashforms f3b, 50, 50, 2
                              FlashForms f4, 50, 50, 2
                              flashforms f4b, 50, 50, 2
                              FlashForms f7, 50, 50, 2
                              DOF 105 ,DOFPulse
                              DOF 106 ,DOFPulse
                              Playsound “DBZ_aura”
                              vpmtimer.addtimer 1000, “Aura ‘”
                              End Sub

                              Sub Aura
                              FlashForms f3, 4500, 50, 2
                              flashforms f3b, 4500, 50, 2
                              FlashForms f4, 4500, 50, 2
                              flashforms f4b, 4500, 50, 2
                              FlashForms f7, 4500, 50, 2
                              DOF 105 ,DOFPulse
                              DOF 106 ,DOFPulse
                              AuraTimer.interval = 4600
                              AuraTimer.enabled = 1
                              End Sub

                              Sub AuraTimer_Timer
                              f3.State = 0
                              f3.State = 0
                              f4.State = 0
                              f4.State = 0
                              f7.State = 0
                              AuraTimer.enabled = 0
                              End Sub

                              Sub ResetSaiyanMultiball
                              D1.Text = ” END SAIYAN MULTIBALL ”
                              DisplayB2SText ” END SAIYAN MULTIBALL ”
                              SaiyanMultiball = False
                              Saiyan = 0
                              End Sub

                              Sub UnaBolaMas()
                              BallsOnPlayfield = BallsOnPlayfield -1
                              CreateNewBall()
                              bAutoPlunger = True
                              bBallInPlungerLane = True
                              End Sub

                              Dim ComboReady
                              sub ComboblinkLight(dummy)
                              ComboReady = True
                              Combo1.BlinkInterval = 180
                              Combo2.BlinkInterval = 180
                              Combo2b.BlinkInterval = 180
                              Combo3.BlinkInterval = 180
                              Combo3b.BlinkInterval = 180
                              Combo4.BlinkInterval = 180
                              Combo1.state=2
                              Combo2.state=2
                              Combo2b.state=2
                              Combo3.state=2
                              Combo3b.state=2
                              Combo4.state=2
                              ComboblinkLightTimer.Enabled = True
                              end sub

                              sub ComboblinkLightTimer_timer()
                              Combo1.state=0
                              Combo2.state=0
                              Combo2b.state=0
                              Combo3.state=0
                              Combo3b.state=0
                              Combo4.state=0
                              ComboReady = False
                              LastSwitchHit = “Sw28”
                              me.enabled=0
                              end sub

                              Sub LaneSounds()
                              If PlayersPlayingGame Then
                              Dim tmp
                              tmp = INT(RND * 3)
                              Select Case tmp
                              Case 0:PlaySound “Lane_1”
                              Case 1:PlaySound “Lane_2”
                              Case 2:PlaySound “Lane_3”
                              End Select
                              End If
                              End Sub

                              Sub TargetsSounds()
                              Dim tmp
                              tmp = INT(RND * 8)
                              Select Case tmp
                              Case 0:PlaySound “Gok_0”
                              Case 1:PlaySound “Gok_1”
                              Case 2:PlaySound “Gok_2”
                              Case 3:PlaySound “Gok_3”
                              Case 4:PlaySound “Gok_4”
                              Case 5:PlaySound “Gok_5”
                              Case 6:PlaySound “Gok_6”
                              Case 7:PlaySound “Gok_7″
                              End Select
                              End Sub

                              Dim AttractMessagesTimerUserData
                              Sub AttractMessagesTimer_Timer()
                              DMDUpdate.enabled = 0
                              DisplayB2SText ” ”
                              AttractMessagesTimerUserData = AttractMessagesTimerUserData + 1
                              Select Case AttractMessagesTimerUserData
                              Case 0:
                              D1.Text = ” DRAGON BALL Z ”
                              DisplayB2SText ” DRAGON BALL Z ”
                              Case 1:
                              D1.Text = ” GAME OVER ”
                              DisplayB2SText ” GAME OVER ”
                              Case 2:
                              D1.Text = ” JAVIER PRESENTS ”
                              DisplayB2SText ” JAVIER PRESENTS ”
                              Case 3:
                              D1.Text = “DRAGON BALL Z”
                              DisplayB2SText ” DRAGON BALL Z ”
                              Case 4:
                              D1.Text = ” BY JAVIER ”
                              DisplayB2SText ” BY JAVIER ”
                              Case 5:
                              D1.Text = ” BASED ON THE CARTOON ”
                              DisplayB2SText ” BASED ON THE CARTOON ”
                              Case 6:
                              D1.Text = ” BANDAI ”
                              DisplayB2SText ” BANDAI ”
                              Case 7:
                              D1.Text = ” SPECIAL THANKS TO ”
                              DisplayB2SText ” SPECIAL THANKS TO ”
                              Case 8:
                              D1.Text = ” DEV TEAM ”
                              DisplayB2SText ” DEV TEAM / JP SALAS ”
                              Case 9:
                              D1.Text = ” AND THE WHOLE COMMUNITY OF VP ”
                              DisplayB2SText ” AND THE WHOLE COMMUNITY OF VP ”
                              Case 10:
                              D1.Text = ” * GAME RULES * ”
                              DisplayB2SText ” * GAME RULES * ”
                              Case 11:
                              D1.Text = ” HIT BUMPERS ”
                              DisplayB2SText ” HIT BUMPERS ”
                              Case 12:
                              D1.Text = ” FOR EXTRABALL ”
                              DisplayB2SText ” FOR EXTRABALL ”
                              Case 13:
                              D1.Text = ” COLLECT LIGHT LOCKS ”
                              DisplayB2SText ” COLLECT LIGHT LOCKS ”
                              Case 14:
                              D1.Text = ” FOR MULTIBALL ”
                              DisplayB2SText ” FOR MULTIBALL ”
                              Case 15:
                              D1.Text = ” COMPLETE DRAGON BALLS ”
                              DisplayB2SText ” COMPLETE DRAGON BALLS ”
                              Case 16:
                              D1.Text = ” FOR SHENLONG MULTIBALL ”
                              DisplayB2SText ” FOR SHENLONG MULTIBALL ”
                              Case 17:
                              D1.Text = ” LEVEL UP SAIYAN ”
                              DisplayB2SText ” LEVEL UP SAIYAN ”
                              Case 18:
                              D1.Text = ” FOR SAIYAN MULTIBALL ”
                              DisplayB2SText ” FOR SAIYAN MULTIBALL ”
                              Case 19:
                              D1.Text = ” ** GOOD LUCK ON YOUR GAME ** ”
                              DisplayB2SText ” ** GOOD LUCK ON YOUR GAME ** ”
                              Case 20:
                              If Score(1) Then
                              D1.Text = “PLAYER 1″& Score(1)
                              DisplayB2SText “PLAYER 1″& Score(1)
                              End If
                              If Score(2) Then
                              D1.Text = “PLAYER 2″& Score(2)
                              DisplayB2SText “PLAYER 1″& Score(2)
                              End If
                              If Score(3) Then
                              D1.Text = “PLAYER 3″& Score(3)
                              DisplayB2SText “PLAYER 1″& Score(3)
                              End If
                              If Score(4) Then
                              D1.Text = “PLAYER 4″& Score(4)
                              DisplayB2SText “PLAYER 1″& Score(4)
                              End If

                              ‘coins or freeplay
                              If bFreePlay Then
                              D1.Text = “FREE PLAY”
                              DisplayB2SText ” FREE PLAY ”
                              Else
                              If Credits> 0 Then
                              DisplayB2SText ” CREDITS ” &credits& ” PRESS START”
                              D1.Text = “CREDITS ” &credits& ” PRESS START”
                              Else
                              DisplayB2SText ” CREDITS ” &credits& ” INSERT COIN”
                              D1.Text = “CREDITS ” &credits& ” INSERT COIN”
                              End If
                              End If
                              Case 21:
                              If (Score(1) = 0) And (Credits = 0) Then
                              D1.Text = ” PLEASE INSERT COIN ”
                              DisplayB2SText ” PLEASE INSERT COIN ”
                              ElseIf (Score(1) = 0) And (Credits > 0) Then
                              D1.Text = ” PUSH START BUTTON TO PLAY ”
                              DisplayB2SText ” PUSH START BUTTON TO PLAY ”
                              Else
                              DisplayB2SText ” LAST SCORE WAS -> ” & ” ” & Score(1)’, 0, , , -1
                              D1.Text = ” LAST SCORE WAS ” & FormatScore(Score(1)) & String(8 – Int((Len(Score(1)) – 1) / 2), ” “)

                              End If

                              Case 22:
                              DisplayB2SText ” HIGHSCORES “& “1> ” & HighScoreName(0) & ” :” & HighScore(0)’, 0, , , -1
                              D1.Text = ” HIGHSCORES”& ” 1> ” & HighScoreName(0) & ” ” & FormatNumber(HighScore(0), 0, , , -1)
                              Case 23:
                              DisplayB2SText ” HIGHSCORES “& “2> ” & HighScoreName(1) & ” :” & HighScore(1)’, 0, , , -1
                              D1.Text = ” HIGHSCORES”& ” 2> ” & HighScoreName(1) & ” ” & FormatNumber(HighScore(1), 0, , , -1)
                              Case 24:
                              DisplayB2SText ” HIGHSCORES “& “3> ” & HighScoreName(2) & ” :” & HighScore(2)’, 0, , , -1
                              D1.Text = ” HIGHSCORES”& ” 3> ” & HighScoreName(2) & ” ” & FormatNumber(HighScore(2), 0, , , -1)
                              Case 25:
                              DisplayB2SText ” HIGHSCORES “& “4> ” & HighScoreName(3) & ” :” & HighScore(3)’, 0, , , -1
                              D1.Text = ” HIGHSCORES”& ” 4> ” & HighScoreName(3) & ” ” & FormatNumber(HighScore(3), 0, , , -1)
                              AttractMessagesTimerUserData = 0
                              End Select
                              End Sub

                              ‘*****************
                              ‘Mensajes varios
                              ‘*****************

                              ‘multi 3 balls
                              Dim MultiballMSN
                              Sub MultiballMSNTimer_Timer
                              MultiballMSN = MultiballMSN + 1
                              Select Case MultiballMSN
                              Case 1:
                              DisplayB2SText ” MULTIBALL ”
                              D1.text = ” MULTIBALL ”
                              Case 2:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 3:
                              DisplayB2SText ” MULTIBALL ”
                              D1.text = ” MULTIBALL ”
                              Case 4:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 5:
                              DisplayB2SText ” MULTIBALL ”
                              D1.text = ” MULTIBALL ”
                              Case 6:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 7:
                              DisplayB2SText ” MULTIBALL ”
                              D1.text = ” MULTIBALL ”
                              Case 8:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 9:
                              DisplayB2SText ” MULTIBALL ”
                              D1.text = ” MULTIBALL ”
                              Case 10:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 11:
                              DisplayB2SText ” MULTIBALL ”
                              D1.text = ” MULTIBALL ”
                              Case 12:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 13:
                              DisplayB2SText ” MULTIBALL ”
                              D1.text = ” MULTIBALL ”
                              Case 14:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 15:
                              DisplayB2SText ” MULTIBALL ”
                              D1.text = ” MULTIBALL ”
                              Case 16:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 17:
                              DisplayB2SText ” MULTIBALL ”
                              D1.text = ” MULTIBALL ”
                              Case 18:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              MultiballMSN = 0
                              MultiballMSNTimer.enabled = 0
                              End Select
                              DisplayB2SText ” ”
                              End Sub

                              Dim SHENLONGMSN
                              Sub SHENLONGMSNTimer_Timer
                              SHENLONGMSN = SHENLONGMSN + 1
                              Select Case SHENLONGMSN
                              Case 1:
                              DisplayB2SText ” SHENLONG MULTIBALL ”
                              D1.text = ” SHENLONG MULTIBALL ”
                              Case 2:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 3:
                              DisplayB2SText ” SHENLONG MULTIBALL ”
                              D1.text = ” SHENLONG MULTIBALL ”
                              Case 4:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 5:
                              DisplayB2SText ” SHENLONG MULTIBALL ”
                              D1.text = ” SHENLONG MULTIBALL ”
                              Case 6:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 7:
                              DisplayB2SText ” SHENLONG MULTIBALL ”
                              D1.text = ” SHENLONG MULTIBALL ”
                              Case 8:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 9:
                              DisplayB2SText ” SHENLONG MULTIBALL ”
                              D1.text = ” SHENLONG MULTIBALL ”
                              Case 10:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 11:
                              DisplayB2SText ” SHENLONG MULTIBALL ”
                              D1.text = ” SHENLONG MULTIBALL ”
                              Case 12:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 13:
                              DisplayB2SText ” SHENLONG MULTIBALL ”
                              D1.text = ” SHENLONG MULTIBALL ”
                              Case 14:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 15:
                              DisplayB2SText ” SHENLONG MULTIBALL ”
                              D1.text = ” MULTIBALL ”
                              Case 16:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 17:
                              DisplayB2SText ” SHENLONG MULTIBALL ”
                              D1.text = ” SHENLONG MULTIBALL ”
                              Case 18:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              SHENLONGMSN = 0
                              SHENLONGMSNTimer.enabled = 0
                              End Select
                              DisplayB2SText ” ”
                              End Sub

                              ‘Combo
                              Dim ComboMSN
                              Sub ComboMSNTimer_Timer
                              ComboMSN = ComboMSN + 1
                              Select Case ComboMSN
                              Case 1:
                              DisplayB2SText ” COMBO ”
                              D1.text = ” COMBO ”
                              Case 2:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 3:
                              DisplayB2SText ” COMBO ”
                              D1.text = ” COMBO ”
                              Case 4:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 5:
                              DisplayB2SText ” COMBO ”
                              D1.text = ” COMBO ”
                              Case 6:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 7:
                              DisplayB2SText ” COMBO ”
                              D1.text = ” COMBO ”
                              Case 8:
                              DisplayB2SText ” ”
                              D1.text = ” ”

                              End Select
                              ComboMSN = 0
                              ComboMSNTimer.enabled = 0
                              DisplayB2SText ” ”
                              End Sub

                              ‘Jackpot
                              Dim JackpotMSN
                              Sub JackpotMSNTimer_Timer
                              JackpotMSN = JackpotMSN + 1
                              Select Case JackpotMSN
                              Case 1:
                              DisplayB2SText ” JACKPOT ” & Jackpot(CurrentPlayer)
                              D1.text = ” JACKPOT ” & Jackpot(CurrentPlayer)
                              Case 2:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 3:
                              DisplayB2SText ” JACKPOT ” & Jackpot(CurrentPlayer)
                              D1.text = ” JACKPOT ” & Jackpot(CurrentPlayer)
                              Case 4:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 5:
                              DisplayB2SText ” JACKPOT ” & Jackpot(CurrentPlayer)
                              D1.text = ” JACKPOT ” & Jackpot(CurrentPlayer)
                              Case 6:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 7:
                              DisplayB2SText ” JACKPOT ” & Jackpot(CurrentPlayer)
                              D1.text = ” JACKPOT ” & Jackpot(CurrentPlayer)
                              Case 8:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 9:
                              DisplayB2SText ” JACKPOT ” & Jackpot(CurrentPlayer)
                              D1.text = ” JACKPOT ” & Jackpot(CurrentPlayer)
                              Case 10:
                              DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 11:
                              DisplayB2SText ” JACKPOT ” & Jackpot(CurrentPlayer)
                              D1.text = ” JACKPOT ” & Jackpot(CurrentPlayer)
                              Case 12:
                              DisplayB2SText ” ”
                              D1.text = ” ”

                              End Select
                              JackpotMSN = 0
                              JackpotMSNTimer.enabled = 0
                              DisplayB2SText ” ”
                              End Sub

                              Dim letsGoMSN
                              Sub letsGo_Timer
                              letsGoMSN = letsGoMSN + 1
                              Select Case letsGoMSN
                              Case 0: DisplayB2SText ” LETS GO ”
                              D1.text = ” LETS GO ”
                              Case 1: DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 2: DisplayB2SText ” LETS GO ”
                              D1.text = ” LETS GO ”
                              Case 3: DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 4: DisplayB2SText ” LETS GO ”
                              D1.text = ” LETS GO ”
                              Case 5: DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 6: DisplayB2SText ” LETS GO ”
                              D1.text = ” LETS GO ”
                              Case 7: DisplayB2SText ” ”
                              D1.text = ” ”
                              Case 8: DisplayB2SText ” LETS GO ”
                              D1.text = ” LETS GO ”
                              Case 9: DisplayB2SText ” ”
                              D1.text = ” ”
                              End Select
                              letsGo.enabled = 0
                              End Sub

                               

                              "Learning without thought is vain, thought without learning is dangerous." (Confucius)

                              "Aprender sin pensar es inútil, pensar sin aprender es peligroso". (Confucio)

                              Please, if you can help me with a small contribution to update my work team and continue to make more tables I will be eternally grateful.

                              https://paypal.me/javier1515?locale.x=es_XC

                              #115819
                              bha19
                              Participant
                                @bha19
                                Member

                                Thanks for the updated script but it does not copy and paste because the ” does not show up correctly in the script whenever needed. I even tried to copy and paste into a text file and they show up as “, but when I then try to copy into the script It still does not show up correctly.

                                #115833
                                Thalamus
                                Moderator
                                  @thalamus
                                  ContributorMemberModerator

                                  That is correct. It is not a good idea to paste table code into any website that doesn’t have specific options for it. You would at least here press the texxt button first or use the “code” tag. Most modern websites will corrupt your code because they are designed to accept html code.

                                  #115867
                                  CarnyPriest
                                  Participant
                                    @carnypriest
                                    Member

                                    Use the Source code button when pasting code; or use a service like pastebin.com and post a link; or attach a txt file, etc.

                                    #116047
                                    BlackPredator72
                                    Participant
                                      @blackpredator72
                                      Member

                                      Also no DMD for me, hopefully in the 1.07 version?

                                      #116055
                                      Javier
                                      Participant
                                        @javier1515

                                        Sorry, Fix DBZ

                                         

                                        "Learning without thought is vain, thought without learning is dangerous." (Confucius)

                                        "Aprender sin pensar es inútil, pensar sin aprender es peligroso". (Confucio)

                                        Please, if you can help me with a small contribution to update my work team and continue to make more tables I will be eternally grateful.

                                        https://paypal.me/javier1515?locale.x=es_XC

                                        #116166
                                        bha19
                                        Participant
                                          @bha19
                                          Member

                                          Could you please upload a 2nd table with the script above since I can’t copy and paste the script correctly into visual pinball. Either that or could someone tell me exactly how to copy and paste html into visual pinball.

                                          #116170
                                          Thalamus
                                          Moderator
                                            @thalamus
                                            ContributorMemberModerator

                                            @bha19 : There is no need for a table update in this case. He uploaded the script in the message above you. When you download it is going to be called DBZ.vbs. Take that script. Rename it exactly like the table is “Dragon Ball Z.vbs”. Start the table and it is updated because VPX 10.6 will load that script instead of the one included – IF it is named exactly the same as the table ( minus the *.vpx extention of course ). Now. The next thing to do is – press save. Now you can delete the table script file you added.

                                            That is basically the whole idea behind sidecar loading of scripts. If someone has improvements to the script alone, we don’t really need a new upload of the whole table. There are several hundred improved tables available at github.

                                            1 user thanked author for this post.
                                          Viewing 20 posts - 1 through 20 (of 28 total)

                                          Forums are currently locked.

                                          ©2024 VPinBall.com

                                          Log in with your credentials

                                          Forgot your details?