- This topic has 27 replies, 3 voices, and was last updated 3 years, 10 months ago by Luis.
-
AuthorPosts
-
February 26, 2019 at 10:26 am #115554
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.
"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
You need to login in order to like this post: click here
Total of 21 users thanked author for this post. Here are last 20 listed.
February 26, 2019 at 10:32 am #115556Thanks Javier, will try it tonight. We can always use more cool originals, especially new ones from established table authors.
You need to login in order to like this post: click here
February 26, 2019 at 10:32 am #115557You 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 !
You need to login in order to like this post: click here
1 user thanked author for this post.
February 26, 2019 at 11:16 am #115561Nice 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********************************************************
You need to login in order to like this post: click here
February 26, 2019 at 1:29 pm #115576great 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
You need to login in order to like this post: click here
February 26, 2019 at 4:50 pm #115581Great to see you back! Love seeing more originals coming out on VPX!
You need to login in order to like this post: click here
1 user thanked author for this post.
February 26, 2019 at 6:42 pm #115586Beautiful work, Javier!
You need to login in order to like this post: click here
February 26, 2019 at 10:08 pm #115597I 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.Â
You need to login in order to like this post: click here
February 27, 2019 at 1:51 am #115604Hello 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.
You need to login in order to like this post: click here
February 27, 2019 at 2:11 pm #115659Thanks!! Cool theme. I will love trying it out
You need to login in order to like this post: click here
February 27, 2019 at 6:40 pm #115691I get error line 1485 controller needed
You need to login in order to like this post: click here
February 27, 2019 at 6:51 pm #115692cool table! I also have no DMD. been looking in the script, don’t know where I went wrong.
Thanks for your hard work Javier!
You need to login in order to like this post: click here
February 28, 2019 at 10:52 am #115769I get error line 1485 controller needed
Delete the entire script and replace it with this new one
Option Explicit
RandomizeSub 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 SubConst BallSize = 50
Const BallMass = 1.2Const 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 = 2Dim DOFeffects(9)
Dim B2SOn
Dim B2SOnALTSub LoadEM
LoadController(“EM”)
End SubSub LoadPROC(VPMver, VBSfile, VBSver)
LoadVBSFiles VPMver, VBSfile, VBSver
LoadController(“PROC”)
End SubSub 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 SubSub 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 SubSub 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 AnswerB2SOn = 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 = nothingIf 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
LoadCoreVBSSub LoadCoreVBS
On Error Resume Next
ExecuteGlobal GetTextFile(“core.vbs”)
If Err Then MsgBox “Can’t open core.vbs”
On Error Goto 0
End SubExecuteGlobal 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 loopCountDim 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 WithBoot.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
NextIf 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 IfIf keycode = PlungerKey Then
PlungerIM.AutoFire
If bBallInPlungerLane Then DOF 109, DOFPulse
End IfIf 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:CheckTiltIf keycode = LeftFlipperKey Then SolLFlipper 1
If keycode = RightFlipperKey Then SolRFlipper 1If keycode = StartGameKey Then
If((PlayersPlayingGame < MaxPlayers) AND(bOnTheFirstBall = True) ) ThenIf(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 SubSub 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 SubSub InstantInfoTimer_Timer
InstantInfoTimer.Enabled = False
bInstantInfo = True
DMDFlush
UltraDMDTimer.Enabled = 1
End SubSub 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 SubSub table1_unPaused
End SubSub 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
RotateLaneLightsLeftUpElse
PlaySound SoundFXDOF(“fx_flipperdown”, 101, DOFOff, DOFFlippers), 0, 1, -0.05, 0.15
LeftFlipper.RotateToStart
End If
End SubSub SolRFlipper(Enabled)
‘ startB2S(4)
If Enabled Then
PlaySound SoundFXDOF(“fx_flipperup”, 102, DOFOn, DOFFlippers), 0, 1, 0.05, 0.15
RightFlipper.RotateToEnd
RotateLaneLightsRight
RotateLaneLightsRightUpElse
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 SubSub RightFlipper_Collide(parm)
PlaySound “fx_rubber_flipper”, 0, parm / 10, 0.05, 0.25
End SubSub RotateLaneLightsLeftUp
Dim TempState
TempState = L11.State
l11.State = l12.State
l12.State = L13.State
L13.State = TempState
End SubSub RotateLaneLightsRightUp
Dim TempState
TempState = L13.State
L13.State = l12.State
L12.State = L11.State
L11.State = TempState
End SubSub RotateLaneLightsLeft
Dim TempState
TempState = l14.State
l14.State = l15.State
l15.State = l16.State
l16.State = l17.State
l17.State = TempState
End SubSub 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 SubSub TiltDecreaseTimer_Timer
‘ DecreaseTilt
If Tilt> 0 Then
Tilt = Tilt – 0.1
Else
TiltDecreaseTimer.Enabled = False
End If
End SubSub 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 = 0LeftSlingShot.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 SubSub 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 offSub ChangeGi(col) ‘changes the gi color
Dim bulb
For each bulb in aGILights
SetLightColor bulb, col, -1
Next
End SubSub 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 SubSub GiOn
DOF 126, DOFOn
Dim bulb
For each bulb in aGiLights
bulb.State = 1
Next
PlaySound “fx_relay_on”
Table1.ColorGradeImage = “ColorGradeLUT256x16_ConSat”
End SubSub 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 SubSub 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 = 0Sub 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 FunctionFunction 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 FunctionFunction Pitch(ball) ‘ Calculates the pitch of the sound based on the ball speed
Pitch = BallVel(ball) * 20
End FunctionFunction 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)
InitRollingSub InitRolling
Dim i
For i = 0 to tnob
rolling(i) = False
Next
End SubSub 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 SubSub LHelp1_Hit()
StopSound “fx_metalrolling”
PlaySound “fx_balldrop”, 0, 1, pan(ActiveBall)
End SubSub RHelp1_Hit()
StopSound “fx_metalrolling”
PlaySound “DBZ_teleport”, 0, 1, pan(ActiveBall)
End SubSub Trigger2_Hit()
PlaySound “fx_metalrolling”, 0, 1, pan(ActiveBall)
End Sub‘****************************************
‘ Real Time updatess using the GameTimer
‘****************************************
‘used for all the real time updatesSub 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” ThenDim 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, whitered = 10
orange = 9
amber = 8
yellow = 7
darkgreen = 6
green = 5
blue = 4
darkblue = 3
purple = 2
white = 1Sub 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 SubSub ResetAllLightsColor ‘ Called at a new game
‘shoot again
SetLightColor ShootAgainLight, amber, -1
End SubSub 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 SubSub StopRainbow()
Dim obj
RainbowTimer.Enabled = 0
RainbowTimer.Enabled = 0
End SubSub 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 SubSub StartAttractMode()
bAttractMode = True
StartLightSeq
DisplayB2SText “”
DMDUpdate.enabled = 0
AttractMessagesTimer.Enabled = TRUE
End SubSub StopAttractMode()
bAttractMode = False
LightSeqAttract.StopPlay
LightSeqFlasher.StopPlay
AttractMessagesTimer.Enabled = FALSE
End SubSub 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, 3End Sub
Sub LightSeqAttract_PlayDone()
StartLightSeq()
End SubSub LightSeqTilt_PlayDone()
LightSeqTilt.Play SeqAllOff
End SubSub LightSeqSkillshot_PlayDone()
LightSeqSkillshot.Play SeqCircleOutOn
End Sub‘***********************************************************************
‘ *********************************************************************
‘ Table Specific Script Starts Here
‘ *********************************************************************
‘***********************************************************************‘ droptargets, animations, etc
Sub VPObjects_InitEnd 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 = 1PlaySong “DBZ_GamePlay”
LightSeqAllBalls.Play SeqLeftOn, 50, 1
End SubSub ResetNewBallLights() ‘turn on or off the needed lights before a new ball is released
End SubSub 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 ifDim 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 SubFunction 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 FunctionDim 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 IfIf PlayersPlayingGame Then
DMDUpdate.Interval = 1500
DMDUpdate.enabled = 1
End IfEnd 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 Ifx = LoadValue(TableName, “HighScore1Name”)
If(x <> “”) Then HighScoreName(0) = x Else HighScoreName(0) = “AAA” End Ifx = LoadValue(TableName, “HighScore2”)
If(x <> “”) then HighScore(1) = CDbl(x) Else HighScore(1) = 100000 End Ifx = LoadValue(TableName, “HighScore2Name”)
If(x <> “”) then HighScoreName(1) = x Else HighScoreName(1) = “BBB” End Ifx = LoadValue(TableName, “HighScore3”)
If(x <> “”) then HighScore(2) = CDbl(x) Else HighScore(2) = 100000 End Ifx = LoadValue(TableName, “HighScore3Name”)
If(x <> “”) then HighScoreName(2) = x Else HighScoreName(2) = “CCC” End Ifx = LoadValue(TableName, “HighScore4”)
If(x <> “”) then HighScore(3) = CDbl(x) Else HighScore(3) = 100000 End Ifx = LoadValue(TableName, “HighScore4Name”)
If(x <> “”) then HighScoreName(3) = x Else HighScoreName(3) = “DDD” End Ifx = 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 SubSub 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 hsLetterFlashSub 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 IfIf tmp> HighScore(3) Then
vpmtimer.addtimer 2000, “PlaySound “”vo_contratulationsgreatscore”” ‘”
HighScore(3) = tmp
‘enter player’s name
HighScoreEntryInit()
Else
EndOfBallComplete()
End If
End SubSub HighScoreEntryInit()
hsbModeActive = True
PlaySound “vo_enteryourinitials”
hsLetterFlash = 0hsEnteredDigits(0) = “A”
hsEnteredDigits(1) = “A”
hsEnteredDigits(2) = “A”
hsCurrentDigit = 0hsValidLetters = “ABCDEFGHIJKLMNOPQRSTUVWXYZ<+-0123456789” ‘ < is used to delete the last letter
hsCurrentLetter = 1
‘ DMDFlush
D1.text = “YOUR NAME:” & ” ”
‘DMDId “hsc”, “”, “YOUR NAME:”, ” “, 999999
HighScoreDisplayName()
End SubSub EnterHighScoreKey(keycode)
If keycode = LeftFlipperKey Then
Playsound “fx_Previous”
hsCurrentLetter = hsCurrentLetter – 1
if(hsCurrentLetter = 0) then
hsCurrentLetter = len(hsValidLetters)
end if
HighScoreDisplayName()
End IfIf keycode = RightFlipperKey Then
Playsound “fx_Next”
hsCurrentLetter = hsCurrentLetter + 1
if(hsCurrentLetter> len(hsValidLetters) ) then
hsCurrentLetter = 1
end if
HighScoreDisplayName()
End IfIf 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 SubSub 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 ifif(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 SubSub HighScoreCommitName()
hsbModeActive = False
‘PlaySong “m_end”
hsEnteredName = hsEnteredDigits(0) & hsEnteredDigits(1) & hsEnteredDigits(2)
if(hsEnteredName = ” “) then
hsEnteredName = “YOU”
end ifHighScoreName(3) = hsEnteredName
SortHighscore
‘ DMDFlush
DMDUpdate.enabled = 1
EndOfBallComplete()
End SubSub 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 ibGameInPLay = True
startB2S(27)‘resets the score display, and turn off attrack mode
StopAttractMode
GiOnTotalGamesPlayed = 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
NextletsGo.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 withSub 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 tableSub 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 awardedSub 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 SubDim BonusD
Sub EndOfBallTimerBonus_Timer()
Dim AwardPoints, TotalBonus, ii
AwardPoints = 0
TotalBonus = 0DMDUpdate.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 SelectEnd 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 ballsBallsRemaining(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 pointElse
‘ 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 IfPlaySong “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 SubFunction Balls
Dim tmp
tmp = BallsPerGame – BallsRemaining(CurrentPlayer) + 1
If tmp> BallsPerGame Then
Balls = BallsPerGame
Else
Balls = tmp
End If
End FunctionSub 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 SubSub AwardSpecial()
‘DMD ” “, “EXTRA GAME”, 2000
D1.text = “EXTRA GAME”
PlaySound “fx_fanfare2”
Credits = Credits + 1
LightEffect 2
FlashEffect 2
End SubSub 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 SubSub 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 SubSub 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 SubSub 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 SubFunction 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 FunctionSub 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 = 0PlaySong “DBZ_End”
PlaySong “DBZ_GamePlay”
end ifDrain.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 IfIf ShenlongMultiball = True Then
ResetShenlongMultiball
End IfIf 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 SubSub Drain1_Hit()
PlaySound “drain”
Drain1.destroyball
BallsOnPlayfield = 0
End SubSub 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 SubDim 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 SubSub UpdateLightsSkillShot
If startSeq = 9 Then startSeq = 0: SkillShotLightsTimer.enabled = 1
End SubSub GateOpenSkillShot_Timer
GateOpenSkillShot.enabled = 0
Gate1.Open = 1
Gate2.Open = 1
vpmtimer.addtimer 2000, “ResetGate ‘”
End SubSub 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 2End 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 SubSub 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 SubSub BallSaverSpeedUpTimer_Timer()
‘debug.print “Ballsaver Speed Up Light”
BallSaverSpeedUpTimer.Enabled = False
‘ Speed up the blinking
LightShootAgain.BlinkInterval = 80
LightShootAgain.State = 2
End SubSub UpdateSkillShot() ‘Setup and updates the skillshot lights
Gate1.Open = 0
Gate2.Open = 0
End SubSub 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 SubSub 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 ExtraBallAwardBumpersExtraBallAwardBumpers = 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 SubSub 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 SubSub 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 SubSub 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 SubSub 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 SubSub 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 SubSub 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 LockMultiballReadySub 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 IfIf LockR = 0 Then
LightLock4.state = 1
vpmtimer.addtimer 4000, “CheckLocks ‘”
AddScore 500Else
If J4.state = 2 Then
J4.state = 1
AwardJackpot
Else
AddScore 500
CheckSuperJackpot
End If
End IfEnd 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 IfElse
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
ElseIf 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 SubSub CheckLockLeft()
If LockL = 2 Then
PinL.Isdropped = 1
Playsound “DiverterOff”
ResetPinL.interval = 400
ResetPinL.enabled = 1
End If
End SubSub ResetPinL_Timer
ResetPinL.enabled = 0
PinL.Isdropped = 0
Playsound “DiverterOn”
End SubSub 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 IfElse
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 SubSub TriggerRampLockR1_Hit
CheckLockRight
End SubSub CheckLockRight()
If LockR = 2 Then
PinR.Isdropped = 1
Playsound “DiverterOff”
ResetPinR.interval = 300
ResetPinR.enabled = 1
End If
End SubSub ResetPinR_Timer
ResetPinR.enabled = 0
PinR.Isdropped = 0
Playsound “DiverterOn”
End SubSub 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 SubSub 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 IfElse
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 IfLastSwitchHit = “Leftorbittrigger”
End Sub
Sub LeftorbittriggerTimer_Timer
LeftorbittriggerTimer.enabled = 0
LockDiverterOff
Playsound “DiverterOff”
Gate1.Open = 0
PinDiverterR.Isdropped = 1
End SubSub 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 IfElse
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 SubSub CheckLocks()
If LockDiverterEnabled = True Then Exit Sub
If LockL = 2 Or LockR = 2 Then Exit SubIf 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 ThenIf J3.state = 2 Then
J3.state = 1
AwardJackpot
Else
CheckSuperJackpot
End If
vpmtimer.addtimer 2500, “ScoopSolenoidPulse ‘”
ElseIf ExtraBallIsIit = True Then
ExtraBallIsIit = False
LightExtraBallLit.state = 0
LightExtraBall.state = 1
AwardExtraBall()
End IfScoopTimer1.enabled = 1
End If
End SubSub 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 SubSub ScoopFake_Hit
Playsound “fx_balldrop”
End SubSub 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 IfIf 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 SubSub LightSeqAllBalls_PlayDone()
BallsRestart()
End SubSub 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 SubSub BallsRestart6
LightBall7.state = 2
End SubSub LightSeqBalls5_PlayDone()
BallsRestart5()
End SubSub 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 SubSub LightSeqBalls4_PlayDone()
BallsRestart4()
End SubSub 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 SubSub LightSeqBalls3_PlayDone()
BallsRestart3()
End SubSub 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 SubSub LightSeqBalls2_PlayDone()
BallsRestart2()
End SubSub 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 SubSub LightSeqBalls1_PlayDone()
BallsRestart1
End SubSub 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 SubSub 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 SubSub 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 IfCase 3: If shenlong = 3 Then
DisplayB2SText ” DRAGON BALL 3 UNLOCKET “:
D1.text = “DRAGON BALL 3 UNLOCKET”
BallsRestart3
End IfCase 4: If shenlong = 4 Then
DisplayB2SText ” DRAGON BALL 4 UNLOCKET “:
D1.text = “DRAGON BALL 4 UNLOCKET”
BallsRestart4
End IfCase 5: If shenlong = 5 Then
DisplayB2SText ” DRAGON BALL 5 UNLOCKET “:
D1.text = “DRAGON BALL 5 UNLOCKET”
BallsRestart5
End IfCase 6: If shenlong = 6 Then
DisplayB2SText ” DRAGON BALL 6 UNLOCKET “:
D1.text = “DRAGON BALL 6 UNLOCKET”
BallsRestart6
End IfCase 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 SubSub 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 SubSub kamehouseFake_Hit
Playsound “fx_balldrop”
End SubDim ExtraBallIsIit
Sub kamehouseAward() ‘from the Pyramid
Dim tmp, tmp2tmp = 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 SelectkamehouseSolenoidPulse
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 SubSub LockHoleSolenoidPulse
ScoopFake.enabled = 0
LockHole.kick 225, 10
End SubSub 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 SubSub scoop1_Hit
scoop1.kick 0, 30 , 1.5
Playsound “salidadebola”
scoop1.enabled = 0
Scoop1Timer.interval = 1000
Scoop1Timer.enabled = 1
End SubSub Scoop1Timer_Timer
Scoop1Timer.enabled = 0
scoop.enabled = 1
End SubSub kamehouseSolenoidPulse
Playsound “salidadebola”
kamehouseFake.enabled = 0
kamehouse.kick 0, 33, 1.5
kamehouseTimer.interval = 500
kamehouseTimer.enabled = 1
End SubSub kamehouseTimer_Timer
kamehouseTimer.enabled = 0
kamehouseFake.enabled = 1
End SubSub 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 SubSub Kicker1_Hit
Kicker1.kick 180, 1
End SubSub Kicker2_Hit
Kicker2.kick 180, 1
End SubSub LockPinOff()
PinL.Isdropped = 1
PinR.Isdropped = 1
End SubSub LockPinOn()
PinL.Isdropped = 0
PinR.Isdropped = 0
End SubSub LockDiverterOff()
LockDiverter.RotateToStart
End SubSub LockDiverterOn()
LockDiverter.RotateToEnd
End SubSub 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 SubSub SetBonusMultiplier(Level)
‘ Set the multiplier to the specified level
BonusMultiplier(CurrentPlayer) = Level
‘ UPdateBonusXLights(Level)
End SubSub 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 SubSub 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 SubSub 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 SubDim 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 SubSub 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 SubSub MiddleLaneTriggerUp_Hit()
If Tilted Then Exit Sub
LaneBonus = LaneBonus + 1
L12.state = 1
AddScore 500
CheckMultiplier
End SubSub 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
CheckLaneTriggersDownIf(bBallSaverActive = True) Then
bBallSaverActive = False
EnableBallSaver 1
BallsOnPlayfield = BallsOnPlayfield + 1
UnaBolaMas
End If
End SubSub LeftInLaneTrigger_Hit()
If Tilted Then Exit Sub
LaneBonus = LaneBonus + 1
LaneSounds()
L15.state = 1
AddScore 500
CheckLaneTriggersDown
End SubSub RightInLaneTrigger_Hit()
If Tilted Then Exit Sub
LaneBonus = LaneBonus + 1
LaneSounds()
L16.state = 1
AddScore 500
CheckLaneTriggersDown
End SubSub RightOutLaneTrigger_Hit()
If Tilted Then Exit Sub
LaneBonus = LaneBonus + 1
LaneSounds()
L17.state = 1
AddScore 500
CheckLaneTriggersDownIf(bBallSaverActive = True) Then
bBallSaverActive = False
EnableBallSaver 1
BallsOnPlayfield = BallsOnPlayfield + 1
UnaBolaMas
End IfEnd 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 SubSub 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 SubSub 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 SubSub 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 SubSub 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 SubSub 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 SubDim TargetsModeOn
Dim Saiyan: Saiyan = 0
Dim SaiyanMultiballSub 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 SubSub 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, 110L81.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 IfIf 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, 80L81.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 IfIf 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, 50L81.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 IfIf 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, 30L81.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 IfIf 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, 1L81.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 SubSub TargetsLightOffTimer_Timer()
TargetsLightOffTimer.Enabled = False
TargetsLightOff
End SubSub 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 SubSub 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 SubSub AuraTimer_Timer
f3.State = 0
f3.State = 0
f4.State = 0
f4.State = 0
f7.State = 0
AuraTimer.enabled = 0
End SubSub ResetSaiyanMultiball
D1.Text = ” END SAIYAN MULTIBALL ”
DisplayB2SText ” END SAIYAN MULTIBALL ”
SaiyanMultiball = False
Saiyan = 0
End SubSub UnaBolaMas()
BallsOnPlayfield = BallsOnPlayfield -1
CreateNewBall()
bAutoPlunger = True
bBallInPlungerLane = True
End SubDim 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 subsub 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 subSub 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 SubSub 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 SubDim 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 SubDim 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 SubDim 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
You need to login in order to like this post: click here
February 28, 2019 at 6:25 pm #115819Thanks 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.
You need to login in order to like this post: click here
February 28, 2019 at 10:26 pm #115833That 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.
You need to login in order to like this post: click here
March 1, 2019 at 9:33 am #115867Use the Source code button when pasting code; or use a service like pastebin.com and post a link; or attach a txt file, etc.
You need to login in order to like this post: click here
March 2, 2019 at 8:33 am #116047Also no DMD for me, hopefully in the 1.07 version?
You need to login in order to like this post: click here
March 2, 2019 at 9:00 am #116055Sorry, 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
You need to login in order to like this post: click here
March 3, 2019 at 6:16 am #116166Could 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.
You need to login in order to like this post: click here
March 3, 2019 at 6:54 am #116170@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.
You need to login in order to like this post: click here
1 user thanked author for this post.
-
AuthorPosts
Forums are currently locked.