Multiball Configuration
The multiball configuration allows you to set up and customize multiball modes in your pinball machine. Multiball modes are special gameplay features where multiple balls are in play simultaneously, creating exciting and challenging gameplay.
Configuration Options
Basic Configuration
' Basic multiball configuration within a mode
With CreateGlfMode("mode_name", priority)
.StartEvents = Array("ball_started")
.StopEvents = Array("ball_ended")
With .Multiball("multiball_name")
.BallCount = 3 ' Number of balls in multiball
.StartEvents = Array("event1") ' Events that trigger multiball start
.StopEvents = Array("event2") ' Events that trigger multiball stop
End With
End With
Advanced Configuration
' Advanced multiball configuration within a mode
With CreateGlfMode("mode_name", priority)
.StartEvents = Array("ball_started")
.StopEvents = Array("ball_ended")
With .Multiball("multiball_name")
' Ball settings
.BallCount = 3 ' Number of balls in multiball
.BallCountType = "total" ' "total" or "additional" (Default: "total")
.BallLock = "lock_device" ' Ball device to eject balls from
' Event settings
.StartEvents = Array("event1", "event2") ' Events that trigger multiball start
.StopEvents = Array("event3", "event4") ' Events that trigger multiball stop
.ResetEvents = Array("event5", "event6") ' Events that reset multiball
.AddABallEvents = Array("event7", "event8") ' Events that add a ball to multiball
' Timing settings
.ShootAgain = 10000 ' Time in milliseconds for shoot again (Default: 10000)
.GracePeriod = 2000 ' Grace period in milliseconds after shoot again ends (Default: 0)
.HurryUp = 5000 ' Time in milliseconds before hurry up warning (Default: 0)
.AddABallShootAgain = 5000 ' Time in milliseconds for add a ball shoot again (Default: 5000)
.AddABallGracePeriod = 1000 ' Grace period in milliseconds for add a ball (Default: 0)
.AddABallHurryUpTime = 2000 ' Time in milliseconds before add a ball hurry up warning (Default: 0)
' Debug settings
.Debug = True ' Enable debug logging for this multiball
End With
End With
Property Descriptions
Ball Settings
BallCount
: Number of balls in multiball (Default: 0)BallCountType
: Type of ball count - "total" or "additional" (Default: "total")BallLock
: Ball device to eject balls from (Default: Empty)
Event Control
StartEvents
: Array of event names that trigger multiball start (Default: Empty Array)StopEvents
: Array of event names that trigger multiball stop (Default: Empty Array)ResetEvents
: Array of event names that reset multiball (Default: Empty Array)AddABallEvents
: Array of event names that add a ball to multiball (Default: Empty Array)EnableEvents
: Array of event names that enable multiball (Default: Empty Array)DisableEvents
: Array of event names that disable multiball (Default: Empty Array)
Timing Settings
ShootAgain
: Time in milliseconds for shoot again (Default: 10000)GracePeriod
: Grace period in milliseconds after shoot again ends (Default: 0)HurryUp
: Time in milliseconds before hurry up warning (Default: 0)AddABallShootAgain
: Time in milliseconds for add a ball shoot again (Default: 5000)AddABallGracePeriod
: Grace period in milliseconds for add a ball (Default: 0)AddABallHurryUpTime
: Time in milliseconds before add a ball hurry up warning (Default: 0)
Debug Settings
Debug
: Boolean to enable debug logging for this multiball (Default: False)
Example Configurations
Basic Multiball Example
' Basic multiball configuration within a mode
With CreateGlfMode("base", 10)
.StartEvents = Array("ball_started")
.StopEvents = Array("ball_ended")
With .Multiball("basic_multiball")
.BallCount = 3
.StartEvents = Array("multiball_start")
.StopEvents = Array("multiball_stop")
End With
End With
Advanced Multiball Example
' Advanced multiball configuration within a mode
With CreateGlfMode("multiball", 20)
.StartEvents = Array("ball_started")
.StopEvents = Array("ball_ended")
With .Multiball("jackpot_multiball")
' Ball settings
.BallCount = 3
.BallCountType = "total"
.BallLock = "lock_device"
' Event settings
.StartEvents = Array("jackpot_ready")
.StopEvents = Array("jackpot_collected", "ball_ended")
.ResetEvents = Array("multiball_reset")
.AddABallEvents = Array("extra_ball_awarded")
' Timing settings
.ShootAgain = 15000
.GracePeriod = 3000
.HurryUp = 5000
.AddABallShootAgain = 8000
.AddABallGracePeriod = 2000
.AddABallHurryUpTime = 3000
' Debug settings
.Debug = True
End With
End With
Multiball States
The multiball system manages several states:
enabled
: Multiball is enabled and ready to startshoot_again_enabled
: Shoot again is activegrace_period_enabled
: Grace period is activehurry_up_enabled
: Hurry up warning is active
Events
The multiball system generates several events that you can listen to:
{multiball_name}_started
: Triggered when multiball starts{multiball_name}_ended
: Triggered when multiball ends{multiball_name}_reset_event
: Triggered when multiball is reset{multiball_name}_shoot_again
: Triggered when a ball is saved during shoot again{multiball_name}_shoot_again_ended
: Triggered when shoot again ends{multiball_name}_grace_period
: Triggered when grace period starts{multiball_name}_hurry_up
: Triggered when hurry up warning starts{multiball_name}_ball_lost
: Triggered when a ball is lost during multiball
Replace {multiball_name}
with your actual multiball name (prefixed with "multiball_" internally).
Default Behavior
By default, multiballs are configured with: - 0 balls - "total" ball count type - No ball lock device - No start, stop, reset, or add a ball events - 10000ms shoot again time - 0ms grace period - 0ms hurry up time - 5000ms add a ball shoot again time - 0ms add a ball grace period - 0ms add a ball hurry up time - Debug logging disabled
Notes
- Multiballs are managed within the context of a mode
- The multiball system automatically handles ball tracking and shoot again
- Debug logging can be enabled to track multiball operations
- Multiballs can be configured to work with specific game modes or features
- The multiball system supports adding balls during gameplay
- Shoot again, grace period, and hurry up features can be customized
- Multiballs can be configured to eject balls from a ball lock device