- Learn
- Build a Game
- Sky Ace
- Appendices
- A Logic Reference
Appendix A — Logic Reference
Every Logic Component and Function in Sky Ace, as it is in the finished game. Each entry stands on its own: read what it does, see what it needs, and build it from its card into your own game. A card’s Shared Variables and Per Instance Variables are the values you can change. A Shared Variable holds one value for the whole Object, under Variables in its Properties. A Per Instance Variable holds one for each placement in the Scene.
A.1 Keep Inside Box
Comes whole from Myth’s templates. Built in Chapter 1, The Fighter Flies.
Clamps an instance to an authored rectangular play area every Step.
Any ObjectA.2 Top-Down Controls
Comes whole from Myth’s templates. Built in Chapter 1, The Fighter Flies.
Rebindable four-way movement assembled around one focused 2D Axis velocity primitive.
Any ObjectA.3 Fighter Guns
Built in Chapter 2, Machine Guns.
While Fire is held, fires the current weapon each time its cooldown is over: Machine Guns, Spread Shot or Rapid Guns (one Mode each).
Any Object- Action Name
machineGunsReady- Cooldown Key
fireRate
machineGunsReady.value == true- Cooldown Key
fireRate- Seconds
@self.fireRateSeconds
- caller
self
- caller
self- round
@self.round- speed
@self.roundSpeed
- Action Name
spreadShotReady- Cooldown Key
fireRate
spreadShotReady.value == true- Cooldown Key
fireRate- Seconds
@self.spreadRateSeconds
- caller
self
- caller
self- round
@self.spreadRound- count
1 + 2 * $gunLevel- direction
90- arc
@self.spreadArcPerLevel * $gunLevel- speed
@self.spreadSpeed- muzzleX
0- muzzleY
@self.spreadMuzzleY
- Action Name
rapidGunsReady- Cooldown Key
fireRate
rapidGunsReady.value == true- Cooldown Key
fireRate- Seconds
@self.rapidRateSeconds
- caller
self
- caller
self- round
@self.rapidRound- speed
@self.roundSpeed
A.4 Fire a Volley (Function)
Built in Chapter 2, Machine Guns.
Fires one machine-gun volley: a round for each Gun Patterns row of the current gun level, at that row's place and direction.
transformTransformdataCount("Gun Patterns")timesdata("Gun Patterns", local.index, "gunLevel") == $gunLevel- Applies To
Caller- Object to Create
round- Position Relative To
Self- X
data("Gun Patterns", local.index, "offsetX")- Y
data("Gun Patterns", local.index, "offsetY")
- Applies To
created- Direction
data("Gun Patterns", local.index, "direction")
- Applies To
created- Speed
speed
A.5 Remove When Out of View
Built in Chapter 2, Machine Guns.
Removes this Object once it has left the view, so nothing that has flown away keeps costing time.
Any ObjectA.6 Show Gun Level
Built in Chapter 2, Machine Guns.
Shows this power pip while the gun level is at least its level (1 to 4).
Any Object- caller
self- level
self.level- value
$gunLevel
- caller
self- level
self.level- value
$gunLevel
A.7 Add Points
Built in Chapter 3, Enemy Fighters.
Adds the points of every enemy shot down to the score, while the mission is being played.
Any Object- Action Name
stillPlaying- Game State
Playing
stillPlaying.value == true- Variable
$score- Operator
+=- Value
event("points")
A.8 Breaks on Hit
Built in Chapter 3, Enemy Fighters.
A round that hits an enemy tells it (roundHit) and breaks with a small spark.
Any Object- Applies To
other- Custom Event
roundHit
- Particles
"Hit Sparks"- Count
@self.hitSparksCount- Z Index Offset
2
- Applies To
other- Custom Event
roundHit
- Particles
"Hit Sparks"- Count
@self.hitSparksCount- Z Index Offset
2
A.9 Fly Down
Built in Chapter 3, Enemy Fighters.
Flies straight down the screen at the speed in its Enemy Stats.
Any Objectself.enemyStats- Direction
270
- Speed
self.enemyStats.speed
A.10 Meter with Thresholds
Comes whole from Myth’s templates. Built in Chapter 3, Enemy Fighters.
Owns a bounded meter update entry point and publishes its threshold crossings as Events.
Any Objectself.meterWithThresholdsDataA.11 Run Mission Timeline
Built in Chapter 3, Enemy Fighters.
Runs the Mission Timeline: each row's formation arrives at its mission time, in order.
Any Objectself.runMissionTimelineData- Timer Name
timeline- First Delay (s)
data("Mission Timeline", self.runMissionTimelineData.nextRow, "timeSeconds") - $missionTime- Ring Once
Yes
- Action Name
stillPlaying- Game State
Playing
stillPlaying.value == trueself.runMissionTimelineData.nextRow < dataCount("Mission Timeline") && data("Mission Timeline", self.runMissionTimelineData.nextRow, "timeSeconds") <= $missionTime- caller
self- row
self.runMissionTimelineData.nextRow
- Component Value
self.runMissionTimelineData.nextRow- Operator
+=- Value
1
self.runMissionTimelineData.nextRow < dataCount("Mission Timeline")- Timer Name
timeline- First Delay (s)
data("Mission Timeline", self.runMissionTimelineData.nextRow, "timeSeconds") - $missionTime- Ring Once
Yes
A.12 Shot Down
Built in Chapter 3, Enemy Fighters.
When this enemy has taken as many hits as its health it tells Game Rules (enemyShotDown) and its own Logic (shotDown), explodes and is removed.
Any Objectself.enemyStats- Custom Event
enemyShotDown
- Custom Event
shotDown
self.enemyStats.bigExplosion == true- Particles
"Big Explosion"- Count
@self.bigExplosionCount- Z Index Offset
2
- Particles
"Smoke Puff"- Count
@self.bigSmokeCount- Z Index Offset
2
- Sound
"Explosion Large"
- Intensity
@self.shakeStrength- Seconds
@self.shakeSeconds
- Particles
"Plane Explosion"- Count
@self.explosionCount- Z Index Offset
2
- Particles
"Smoke Puff"- Count
@self.smokeCount- Z Index Offset
2
- Sound
"Explosion Small"
A.13 Spawn V Formation (Function)
Built in Chapter 3, Enemy Fighters.
Creates a V of enemies above the top edge, centered on x, with its middle plane lowest.
counttimes- Applies To
Caller- Object to Create
enemy- X
x + (local.index - (count - 1) / 2) * spacing- Y
entryY + abs(local.index - (count - 1) / 2) * rowStep
A.14 Takes Hits
Built in Chapter 3, Enemy Fighters.
Each Fighter round that hits counts roundDamage on the enemy's meter and flashes it white for a moment; a bomb counts bombDamage.
Any Objectself.enemyStats- Property
Mode- Value
"solid"
- Property
Enabled- Value
true
- Timer Name
hitFlash- Repeat Every (s)
@self.flashSeconds- First Delay (s)
@self.flashSeconds- Ring Once
Yes
- Component Value
self.enemyStats.damage- Value
@self.roundDamage
- Custom Event
changeMeter
- Custom Event
hitCounted
- Property
Enabled- Value
false
- Component Value
self.enemyStats.damage- Value
@self.bombDamage
- Custom Event
changeMeter
- Custom Event
hitCounted
- Component Value
self.enemyStats.damage- Value
@self.bombDamage
- Custom Event
changeMeter
- Custom Event
hitCounted
- Property
Enabled- Value
false
A.15 Aim Down at the Fighter (Function)
Built in Chapter 4, Mission Failed.
The direction from the caller to the Fighter in degrees, kept between aimMin and aimMax (downward only), or straight down (270) when the Fighter is not below.
transformTransform- Name
across- Value
0
- Name
up- Value
0
- Name
aim- Value
0
fighter.transform.position.y < Caller.transform.position.y- Variable
across- Value
fighter.transform.position.x - Caller.transform.position.x
- Variable
up- Value
fighter.transform.position.y - Caller.transform.position.y
- Variable
aim- Value
radtodeg(atan2(up, across)) + 360
aim < aimMin- Variable
aim- Value
aimMin
aim > aimMax- Variable
aim- Value
aimMax
- Variable
aim- Value
270
- Value
aim
A.16 Breaks on Fighter
Built in Chapter 4, Mission Failed.
An enemy round that hits the Fighter breaks with a small spark.
Any Object- Particles
"Hit Sparks"- Count
@self.hitSparksCount- Z Index Offset
2
A.17 Fly Again
Built in Chapter 4, Mission Failed.
On the Game Over screen, Confirm (Enter) or Fire starts a new mission and Pause (Esc) goes to the Main Menu. It is off until the result screen shows (Mission Over turns it on).
Any Object- caller
self
- caller
self
A.18 High Score
Built in Chapter 4, Mission Failed.
Reads the high score from this device when a Scene starts, and saves a better score when the mission ends.
Any Object- Action Name
savedHighScore- Key
"highScore"- Default
0
- Variable
$highScore- Value
savedHighScore.value
- Action Name
missionFailed- Game State
Mission Failed
- Action Name
missionComplete- Game State
Mission Complete
missionFailed.value == true || missionComplete.value == trueA.19 Hurt by Enemies
Built in Chapter 4, Mission Failed.
An enemy round or an enemy plane (the Sky Fortress too) that touches the Fighter hurts it (Hurt the Fighter); it starts every mission protected.
Any Object- caller
self- seconds
@self.startProtectSeconds
- caller
self
- caller
self
- caller
self
A.20 Hurt the Fighter (Function)
Built in Chapter 4, Mission Failed.
What happens when an enemy round or plane hits the Fighter: unless it is protected, it is protected for a while, the hit is seen and heard, and fighterHit tells Game Rules (a medkit and a gun level are lost there).
- Action Name
canBeHurt- Applies To
Caller- Cooldown Key
"protection"
canBeHurt.value == true- caller
Caller- seconds
protectSeconds
- Applies To
Caller- Particles
"Plane Explosion"- Count
planeExplosionCount- Z Index Offset
2
- Applies To
Caller- Sound
"Fighter Hit"
- Applies To
Caller- Intensity
shakeStrength- Seconds
shakeSeconds
- Applies To
Caller- Color
"#ff5a3c"- Seconds
flashSeconds
- Applies To
Caller- Custom Event
fighterHit
A.21 Lose a Gun Level
Built in Chapter 4, Mission Failed.
Each hit on the Fighter costs one gun level, but the gun level never goes below 1.
Any Object$gunLevel > 1- Variable
$gunLevel- Operator
-=- Value
1
A.22 Lose a Medkit
Built in Chapter 4, Mission Failed.
Each hit on the Fighter costs one medkit.
Any Object- Variable
$medkits- Operator
-=- Value
1
$medkits <= 0- Game State
Mission Failed
A.23 Lost With the Last Medkit
Built in Chapter 4, Mission Failed.
When the mission fails, the Fighter explodes and is removed.
Any Object- Action Name
missionFailed- Game State
Mission Failed
missionFailed.value == true- Particles
"Big Explosion"- Count
@self.bigExplosionCount- Z Index Offset
2
- Particles
"Smoke Puff"- Count
@self.smokePuffCount- Z Index Offset
2
- Sound
"Explosion Large"
- Intensity
@self.shakeStrength- Seconds
@self.shakeSeconds
A.24 Mission Music
Built in Chapter 4, Mission Failed.
Stops the Title Theme; plays the Battle Theme and the engine drone during the mission, the Boss Theme for the Sky Fortress, and the Game Over Jingle or the Victory Jingle at the end.
Any Object- Operation
Stop- Sound
"Title Theme"
- Operation
Loop- Sound
"Battle Theme"
- Operation
Loop- Sound
"Engine Drone"
- Action Name
missionFailed- Game State
Mission Failed
- Action Name
missionComplete- Game State
Mission Complete
missionFailed.value == true || missionComplete.value == true- Operation
Stop- Sound
"Battle Theme"
- Operation
Stop- Sound
"Boss Theme"
- Operation
Stop- Sound
"Engine Drone"
missionFailed.value == true- Sound
"Game Over Jingle"
- Sound
"Victory Jingle"
- Operation
Stop- Sound
"Battle Theme"
- Operation
Loop- Sound
"Boss Theme"
A.25 Mission Start
Built in Chapter 4, Mission Failed.
Sets up a fresh mission each time the Gameplay Scene starts: Playing, score 0, startMedkits medkits, gun level startGunLevel.
Any Object- Game State
Playing
- Variable
$score- Value
0
- Variable
$medkits- Value
@self.startMedkits
- Variable
$gunLevel- Value
@self.startGunLevel
- Variable
$weaponName- Value
data("Weapons", "Machine Guns", "label")
- Variable
$bombs- Value
@self.startBombs
A.26 Protection Blink
Built in Chapter 4, Mission Failed.
While the Fighter is protected it blinks, dim and bright every blinkSeconds, and is bright again when protection ends.
Any Object- Timer Name
blink- Repeat Every (s)
@self.blinkSeconds- First Delay (s)
0
- Action Name
protectionOver- Cooldown Key
protection
protectionOver.value == true- Timer Name
blink
- Alpha
@self.dimAlpha
- Mode
Go Dim
- Mode
Go Bright
- Mode
Go Bright
- Mode
Go Dim
A.27 Show If At Least (Function)
Built in Chapter 4, Mission Failed.
Shows the caller while a value is at least the given level, and hides it otherwise.
value >= level- Applies To
Caller- Visible
true
- Applies To
Caller- Visible
false
A.28 Show Medkits
Built in Chapter 4, Mission Failed.
Shows this medkit icon while the Fighter has at least its number of medkits (1 to 5).
Any Object- caller
self- value
$medkits- level
self.level
- caller
self- value
$medkits- level
self.level
A.29 Show With Results
Built in Chapter 4, Mission Failed.
Shows this result screen piece when Game Rules sends showResults, if the Game State is the piece's own (or for any ending, with anyEnding Yes).
Any Object- Action Name
stateMatches- Game State
self.state
self.anyEnding == true || stateMatches.value == true- Alpha
self.opacity
- Visible
Yes
A.30 Start a New Mission (Function)
Built in Chapter 4, Mission Failed.
Starts a new mission: plays Menu Select and restarts the Gameplay Scene.
- Applies To
Caller- Sound
"Menu Select"
- Applies To
Caller
A.31 Start Protection (Function)
Built in Chapter 4, Mission Failed.
Protects the caller for some seconds: starts its protection cooldown and its blinking.
- Applies To
Caller- Cooldown Key
"protection"- Seconds
seconds
- Applies To
Caller- Custom Event
protectionStarted
A.32 Wait for the Firing Band (Function)
Built in Chapter 4, Mission Failed.
How many seconds from now a plane may first fire: delay seconds, or longer if the plane, flying straight down at speed meters per second, has not yet reached bandTop, the top of its firing band.
- Name
wait- Value
0
- Name
secondsToBand- Value
0
- Variable
wait- Value
delay
- Variable
secondsToBand- Value
(Caller.transform.position.y - bandTop) / speed
secondsToBand > wait- Variable
wait- Value
secondsToBand
- Value
wait
A.33 Zero Fighter Guns
Built in Chapter 4, Mission Failed.
A Zero Fighter fires every couple of seconds while inside its firing band: half the pilots aim down at the Fighter, the rest fire straight down.
Any Objectself.enemyStats- Action Name
pilotRoll- Maximum
99
pilotRoll.value < @self.aimedChance- Event
On the Enemy Fire Timer- Mode
Shoot Straight
- Event
On the Enemy Fire Timer- Mode
Shoot Aimed
- Action Name
firstShot- Minimum
@self.firstShotMin- Maximum
@self.firstShotMax
- Action Name
firstShotWait- caller
self- bandTop
@self.bandTop- speed
self.enemyStats.speed- delay
firstShot.value
- Timer Name
enemyFire- First Delay (s)
firstShotWait.value- Ring Once
Yes
- Action Name
stillPlaying- Game State
Playing
stillPlaying.value == false || self.transform.position.y <= @self.bandBottom- Object to Create
@self.round- Position Relative To
Self- Y
@self.muzzleY
- Applies To
created- Direction
270
- Applies To
created- Speed
@self.straightSpeed
- Action Name
fighterAim- caller
self- fighter
@self.fighter- aimMin
@self.aimMin- aimMax
@self.aimMax
- Object to Create
@self.round- Position Relative To
Self- Y
@self.muzzleY- Created As
created2
- Applies To
created2- Direction
fighterAim.value
- Applies To
created2- Speed
@self.aimedSpeed
- Particles
"Enemy Muzzle Flash"- Y
@self.muzzleY- Count
@self.enemyMuzzleFlashCount- Z Index Offset
2
- Sound
"Enemy Guns"
- Action Name
nextShot- Minimum
@self.shotGapMin- Maximum
@self.shotGapMax
- Timer Name
enemyFire- First Delay (s)
nextShot.value- Ring Once
Yes
A.34 Cast Shadow
Built in Chapter 5, Scenery.
Creates this Object's shadow down and to the right of it (the sun is high in the upper left) and attaches it, so the shadow follows every move.
Any Object- Object to Create
@self.shadow- Position Relative To
Self- X
@self.offsetX- Y
@self.offsetY
- Applies To
created- Parent
Its Creator
A.35 Drift and Return
Built in Chapter 5, Scenery.
Drifts straight down. When it has left the view it comes back above the top of the view, at a random place across the screen and a random gap.
Any Object- Direction
270
- Speed
@self.speed
- Action Name
returnX- Minimum
@self.minX- Maximum
@self.maxX
- Action Name
returnGap- Minimum
@self.gapMin- Maximum
@self.gapMax
- X
returnX.value- Y
@self.viewTop + @self.halfHeight + returnGap.value
A.36 Drift in Line
Built in Chapter 5, Scenery.
Drifts down with the ocean. When it has left the view it comes back above the sea scenery it follows, at a random place across the screen, with open sea between the two pictures, so the pieces never overlap.
Any Objectself.seaScenerySpacing- Direction
270
- Speed
@self.speed
- Name
lineTop- Value
0
- Action Name
returnX- Minimum
self.seaScenerySpacing.sideMargin- Maximum
@self.seaWidth - self.seaScenerySpacing.sideMargin
- Variable
lineTop- Value
@self.follows.transform.position.y + @self.follows.seaScenerySpacing.topEdge
- Action Name
openSea- Minimum
@self.openSeaMin- Maximum
@self.openSeaMax
- X
returnX.value- Y
lineTop + openSea.value + self.seaScenerySpacing.bottomEdge
A.37 Set Opacity
Built in Chapter 5, Scenery.
Sets how see-through this Object is when it appears (1 is solid, 0 is invisible).
Any Object- Alpha
@self.opacity
A.38 Shadow on Clouds
Built in Chapter 5, Scenery.
Shows a plane's shadow only on a cloud, clipped to that cloud's picture; over open sea it is hidden.
Any Objectself.shadowOnCloudsData- Visible
No
- Component Value
self.shadowOnCloudsData.cloudName- Value
event.otherName
- Value
"sprite"
- Property
Mask Sprite- Value
other.sprite.resource
- Property
Width- Value
@self.cloudSizeMeters * @self.artPixels / @self.sizeMeters
- Property
Height- Value
@self.cloudSizeMeters * @self.artPixels / @self.sizeMeters
- Visible
Yes
- Mode
Land on This Cloud
event.otherName == self.shadowOnCloudsData.cloudName- Component Value
self.shadowOnCloudsData.cloudAcross- Value
other.transform.position.x - self.transform.position.x
- Component Value
self.shadowOnCloudsData.cloudUp- Value
other.transform.position.y - self.transform.position.y
- Property
Offset X- Value
self.shadowOnCloudsData.cloudAcross * @self.artPixels / @self.sizeMeters
- Property
Offset Y- Value
self.shadowOnCloudsData.cloudUp * @self.artPixels / @self.sizeMeters
event.otherName == self.shadowOnCloudsData.cloudName- Visible
No
- Component Value
self.shadowOnCloudsData.cloudName
- Event
While Hitting Anything Tagged Cloud- Mode
Land on This Cloud
A.39 Make a Row Arrive (Function)
Built in Chapter 6, Mission Timeline.
Makes one Mission Timeline row arrive: the Object its object cell names, in the row's formation (a supply drop: one pickup).
data("Mission Timeline", row, "formation") == "Supply Drop"- Applies To
Caller- Object to Create
data("Mission Timeline", row, "object")- X
data("Mission Timeline", row, "x")- Y
data("Mission Timeline", row, "entryY")
data("Mission Timeline", row, "formation") == "V"- caller
Caller- enemy
data("Mission Timeline", row, "object")- x
data("Mission Timeline", row, "x")- count
data("Mission Timeline", row, "count")- spacing
data("Mission Timeline", row, "spacing")- entryY
data("Mission Timeline", row, "entryY")
data("Mission Timeline", row, "formation") == "Column"- caller
Caller- enemy
data("Mission Timeline", row, "object")- x
data("Mission Timeline", row, "x")- count
data("Mission Timeline", row, "count")- gap
data("Mission Timeline", row, "spacing")- entryY
data("Mission Timeline", row, "entryY")
data("Mission Timeline", row, "formation") == "Row"- caller
Caller- enemy
data("Mission Timeline", row, "object")- count
data("Mission Timeline", row, "count")- entryY
data("Mission Timeline", row, "entryY")
data("Mission Timeline", row, "formation") == "Side Sweep"- caller
Caller- enemy
data("Mission Timeline", row, "object")- edgeX
data("Mission Timeline", row, "x")- count
data("Mission Timeline", row, "count")
A.40 Mission Clock
Built in Chapter 6, Mission Timeline.
Counts the mission time ($missionTime): the seconds the mission has been played. A paused game runs no steps, so pauses are not counted.
Any Object- Variable
$missionTime- Value
0
- Variable
$missionTime- Operator
+=- Value
$deltaTime
A.41 Run Waves
Built in Chapter 6, Mission Timeline.
Starts each wave of the Waves table at its mission time: the HUD shows it and its banner is raised.
Any Objectself.runWavesData- Variable
$wave- Value
data("Waves", self.runWavesData.nextWave, "label")
- Timer Name
wave- First Delay (s)
data("Waves", self.runWavesData.nextWave, "startSeconds") - $missionTime- Ring Once
Yes
- Action Name
stillPlaying- Game State
Playing
stillPlaying.value == true- Variable
$wave- Value
data("Waves", self.runWavesData.nextWave, "label")
- Variable
$banner- Value
data("Waves", self.runWavesData.nextWave, "banner")
data("Waves", self.runWavesData.nextWave, "warning") == true- Custom Event
fortressWarning
- Custom Event
waveStarted
- Component Value
self.runWavesData.nextWave- Operator
+=- Value
1
self.runWavesData.nextWave < dataCount("Waves")- Timer Name
wave- First Delay (s)
data("Waves", self.runWavesData.nextWave, "startSeconds") - $missionTime- Ring Once
Yes
A.43 Spawn Column (Function)
Built in Chapter 6, Mission Timeline.
Creates a single-file line of enemies above the top edge at x, one every "gap" meters upward.
counttimes- Applies To
Caller- Object to Create
enemy- X
x- Y
entryY + local.index * gap
A.44 Spawn Row (Function)
Built in Chapter 6, Mission Timeline.
Creates a row of enemies spread evenly across the screen, just above the top edge.
counttimes- Applies To
Caller- Object to Create
enemy- X
width * (local.index + 1) / (count + 1)- Y
entryY
A.45 Spawn Side Sweep (Function)
Built in Chapter 6, Mission Timeline.
Creates a diagonal stream of enemies entering from beyond the left or right edge, flying across and down.
edgeX > 0counttimes- Applies To
Caller- Object to Create
enemy- X
width + startOut + local.index * stepOut- Y
startY - local.index * stepDown
- Applies To
created- X Velocity
-acrossSpeed- Y Velocity
-fallSpeed
counttimes- Applies To
Caller- Object to Create
enemy- X
-startOut - local.index * stepOut- Y
startY - local.index * stepDown- Created As
created2
- Applies To
created2- X Velocity
acrossSpeed- Y Velocity
-fallSpeed
A.46 Dive Attack
Built in Chapter 7, Other Enemies.
Descends to a random height, hangs there for a moment, then dives at the Fighter and drops a spread of three rounds (once the mission is over it dives straight down).
Any Objectself.enemyStats- Name
descentSeconds- Value
0
- Name
stopY- Value
0
- Action Name
stopBelow- Maximum
@self.stopRange
- Variable
stopY- Value
@self.stopHeight - stopBelow.value
- Variable
descentSeconds- Value
(self.transform.position.y - stopY) / self.enemyStats.speed
descentSeconds < 0- Variable
descentSeconds- Value
0
- Timer Name
descent- First Delay (s)
descentSeconds- Ring Once
Yes
- Speed
@self.hoverSpeed
- Timer Name
hover- First Delay (s)
@self.hoverSeconds- Ring Once
Yes
- Action Name
stillPlaying- Game State
Playing
stillPlaying.value == true- Action Name
diveAim- caller
self- fighter
@self.fighter- aimMin
@self.aimMin- aimMax
@self.aimMax
- Direction
diveAim.value
- caller
self- round
@self.round- count
@self.spreadCount- direction
diveAim.value- arc
@self.spreadArc- speed
@self.roundSpeed- muzzleY
@self.muzzleY
- Particles
"Enemy Muzzle Flash"- Y
@self.muzzleY- Count
@self.enemyMuzzleFlashCount- Z Index Offset
2
- Sound
"Enemy Guns"
- Direction
270
- Speed
@self.diveSpeed
A.47 Fire a Spread (Function)
Built in Chapter 7, Other Enemies.
Creates count rounds from the caller, fanned evenly over arc degrees around direction, each flying at speed.
transformTransformcounttimes- Applies To
Caller- Object to Create
round- Position Relative To
Self- X
muzzleX- Y
muzzleY
count == 1- Applies To
created- Direction
direction
- Applies To
created- Direction
direction - arc / 2 + arc * local.index / (count - 1)
- Applies To
created- Speed
speed
A.48 Heavy Bomber Guns
Built in Chapter 7, Other Enemies.
Inside its firing band the Heavy Bomber fires a five-round fan every 1.8 s and an aimed round from alternating wing turrets every 1.1 s.
Any Objectself.enemyStats- Action Name
bandWait- caller
self- bandTop
@self.bandTop- speed
self.enemyStats.speed- delay
0
- Timer Name
fan- Repeat Every (s)
@self.fanGap- First Delay (s)
bandWait.value + @self.fanFirst
- Timer Name
wingShot- Repeat Every (s)
@self.wingGap- First Delay (s)
bandWait.value + @self.wingFirst
- Action Name
stillPlayingForFan- Game State
Playing
stillPlayingForFan.value == true && self.transform.position.y > @self.bandBottom- caller
self- round
@self.round- count
@self.fanCount- direction
270- arc
@self.fanArc- speed
@self.fanSpeed- muzzleX
0- muzzleY
@self.fanY
- Particles
"Enemy Muzzle Flash"- Y
@self.fanY- Count
@self.enemyMuzzleFlashCount- Z Index Offset
2
- Sound
"Enemy Guns"
- Timer Name
fan
- Action Name
stillPlayingForWings- Game State
Playing
stillPlayingForWings.value == false || self.transform.position.y <= @self.bandBottom- Timer Name
wingShot
- Action Name
leftWingAim- caller
self- fighter
@self.fighter- aimMin
@self.aimMin- aimMax
@self.aimMax
- caller
self- round
@self.round- count
1- direction
leftWingAim.value- arc
0- speed
@self.wingRoundSpeed- muzzleX
-@self.wingOffset- muzzleY
@self.wingY
- Particles
"Enemy Muzzle Flash"- X
-@self.wingOffset- Y
@self.wingY- Count
@self.enemyMuzzleFlashCount- Z Index Offset
2
- Sound
"Enemy Guns"
- Mode
Left Wing
- Mode
Right Wing
- Action Name
rightWingAim- caller
self- fighter
@self.fighter- aimMin
@self.aimMin- aimMax
@self.aimMax
- caller
self- round
@self.round- count
1- direction
rightWingAim.value- arc
0- speed
@self.wingRoundSpeed- muzzleX
@self.wingOffset- muzzleY
@self.wingY
- Particles
"Enemy Muzzle Flash"- X
@self.wingOffset- Y
@self.wingY- Count
@self.enemyMuzzleFlashCount- Z Index Offset
2
- Sound
"Enemy Guns"
- Mode
Right Wing
- Mode
Left Wing
A.49 Red Ace Guns
Built in Chapter 7, Other Enemies.
Fires an aimed burst of three rounds every shotGap seconds while inside the firing band.
Any Objectself.enemyStats- Action Name
firstShot- Minimum
@self.firstShotMin- Maximum
@self.firstShotMax
- Action Name
firstBurstWait- caller
self- bandTop
@self.bandTop- speed
self.enemyStats.speed- delay
firstShot.value
- Timer Name
burst- Repeat Every (s)
@self.shotGap- First Delay (s)
firstBurstWait.value
- Action Name
stillPlaying- Game State
Playing
stillPlaying.value == true && self.transform.position.y > @self.bandBottom- Action Name
fighterAim- caller
self- fighter
@self.fighter- aimMin
@self.aimMin- aimMax
@self.aimMax
- caller
self- round
@self.round- count
@self.burstCount- direction
fighterAim.value- arc
@self.burstArc- speed
@self.roundSpeed- muzzleY
@self.muzzleY
- Particles
"Enemy Muzzle Flash"- Y
@self.muzzleY- Count
@self.enemyMuzzleFlashCount- Z Index Offset
2
- Sound
"Enemy Guns"
- Timer Name
burst
A.50 Weave
Built in Chapter 7, Other Enemies.
Weaves from side to side on the way down: the sideways speed follows a slow wave, starting at a random point of it.
Any Objectself.weaveData- Action Name
phaseRoll- Maximum
@self.phaseMax
- Component Value
self.weaveData.weavePhase- Value
phaseRoll.value
- Component Value
self.weaveData.secondsFlown- Operator
+=- Value
$deltaTime
- X Velocity
cos(@self.weaveRate * self.weaveData.secondsFlown + self.weaveData.weavePhase) * @self.weaveSpeed
A.51 Breaks on Bomb
Built in Chapter 8, Pickups, Weapons and Bombs.
An enemy round breaks with a small spark when a bomb goes off or the Sky Fortress goes down.
Any Object- Particles
"Hit Sparks"- Count
@self.blastSparksCount- Z Index Offset
2
- Particles
"Hit Sparks"- Count
@self.blastSparksCount- Z Index Offset
2
A.52 Collected by Fighter
Built in Chapter 8, Pickups, Weapons and Bombs.
When the Fighter touches this pickup while the mission is being played, it plays its sound and sparkle, sends its collectedEvent and is removed.
Any Object- Action Name
stillPlaying- Game State
Playing
stillPlaying.value == true- Sound
@self.collectSound
- Particles
"Pickup Sparkle"- Count
@self.pickupSparkleCount- Z Index Offset
2
- Custom Event
@self.collectedEvent
A.53 Drift Down
Built in Chapter 8, Pickups, Weapons and Bombs.
Falls straight down at fallSpeed and is removed once it is below lowestY.
Any Object- Name
secondsToLowest- Value
0
- Y Velocity
-@self.fallSpeed
- Variable
secondsToLowest- Value
(self.transform.position.y - @self.lowestY) / @self.fallSpeed
secondsToLowest < 0- Variable
secondsToLowest- Value
0
- Timer Name
sinking- First Delay (s)
secondsToLowest- Ring Once
Yes
A.54 Drops a Pickup
Built in Chapter 8, Pickups, Weapons and Bombs.
When this enemy is shot down it may drop a pickup where it fell: its dropChance in a hundred, the kind picked by the Pickups table's dropWeight.
Any Objectself.enemyStats- Action Name
dropRoll- Maximum
100
dropRoll.value < self.enemyStats.dropChance- Action Name
droppedKind- Table
"Pickups"- Weight Column
dropWeight
- Object to Create
data("Pickups", droppedKind.row, "object")- X
self.transform.position.x- Y
self.transform.position.y
A.55 Drops Bombs
Built in Chapter 8, Pickups, Weapons and Bombs.
Pressing Bomb while the mission is being played, with a bomb left, sets one off: everything in the sky hears bombDropped, and the Fighter is protected for a moment.
Any Object- Action Name
stillPlaying- Game State
Playing
stillPlaying.value == true && $bombs > 0- Action Name
protectionOver- Cooldown Key
protection
protectionOver.value == true- caller
self- seconds
@self.protectSeconds
- Particles
"Bomb Shockwave"- Count
@self.bombShockwaveCount- Z Index Offset
2
- Particles
"Big Explosion"- Count
@self.bombExplosionCount- Z Index Offset
2
- Sound
"Bomb Blast"
- Seconds
@self.flashSeconds
- Intensity
@self.bombShakeStrength- Seconds
@self.bombShakeSeconds
- Custom Event
bombDropped
A.56 Pickup Rewards
Built in Chapter 8, Pickups, Weapons and Bombs.
Gives the reward of each collected pickup, one more of its count up to the most or else bonus points, and shows it over the pickup.
Any Object$gunLevel < data("Pickups", "Power Up", "most")- Variable
$gunLevel- Operator
+=- Value
1
- pickup
other- words
data("Pickups", "Power Up", "popupText")- color
data("Pickups", "Power Up", "popupColor")
- Variable
$score- Operator
+=- Value
data("Pickups", "Power Up", "bonusPoints")
- pickup
other- words
+{data("Pickups", "Power Up", "bonusPoints")}- color
data("Pickups", "Power Up", "popupColor")
$medkits < data("Pickups", "Medkit", "most")- Variable
$medkits- Operator
+=- Value
1
- pickup
other- words
data("Pickups", "Medkit", "popupText")- color
data("Pickups", "Medkit", "popupColor")
- Variable
$score- Operator
+=- Value
data("Pickups", "Medkit", "bonusPoints")
- pickup
other- words
+{data("Pickups", "Medkit", "bonusPoints")}- color
data("Pickups", "Medkit", "popupColor")
$bombs < data("Pickups", "Bomb Crate", "most")- Variable
$bombs- Operator
+=- Value
1
- pickup
other- words
data("Pickups", "Bomb Crate", "popupText")- color
data("Pickups", "Bomb Crate", "popupColor")
- Variable
$score- Operator
+=- Value
data("Pickups", "Bomb Crate", "bonusPoints")
- pickup
other- words
+{data("Pickups", "Bomb Crate", "bonusPoints")}- color
data("Pickups", "Bomb Crate", "popupColor")
A.57 Show Bombs
Built in Chapter 8, Pickups, Weapons and Bombs.
Shows this bomb icon while the Fighter has at least its number of bombs (1 to 5).
Any Object- caller
self- value
$bombs- level
self.level
- caller
self- value
$bombs- level
self.level
A.58 Show Rapid Time
Built in Chapter 8, Pickups, Weapons and Bombs.
Shows the Rapid Guns meter while Rapid Guns lasts, shrinking to nothing as its time runs out.
Any Object- Visible
Yes
- Value
self.transform.scale.x- Target
0- Duration
@self.rapidSeconds
- Visible
No
A.59 Show the Reward (Function)
Built in Chapter 8, Pickups, Weapons and Bombs.
Shows what a collected pickup gave: the words rise from the pickup in the given color.
transformTransform- Applies To
pickup- Text
words- Color
color- Size
popupSize- Rise
popupRise- Seconds
popupSeconds
A.60 Sound the Guns (Function)
Built in Chapter 8, Pickups, Weapons and Bombs.
The gunfire sound and the muzzle flash at the Fighter's nose.
- Applies To
Caller- Sound
"Fighter Gunfire"
- Applies To
Caller- Particles
"Muzzle Flash"- Y
muzzleFlashY- Count
muzzleFlashCount- Z Index Offset
2
A.61 Spend a Bomb
Built in Chapter 8, Pickups, Weapons and Bombs.
Each bomb set off takes one from $bombs.
Any Object- Variable
$bombs- Operator
-=- Value
1
A.62 Weapon Pickups
Built in Chapter 8, Pickups, Weapons and Bombs.
Switches the Fighter's weapon when it collects Spread Shot or Rapid Guns, and shows it over the pickup; Rapid Guns lasts rapidSeconds, then the machine guns return.
Any Object- Event
While Fire Is Held (Fighter Guns)- Mode
Spread Shot
- Variable
$weaponName- Value
data("Weapons", "Spread Shot", "label")
- Timer Name
rapidGuns
- Custom Event
rapidGunsEnded
- pickup
other- words
data("Pickups", "Spread Shot", "popupText")- color
data("Pickups", "Spread Shot", "popupColor")
- Event
While Fire Is Held (Fighter Guns)- Mode
Rapid Guns
- Variable
$weaponName- Value
data("Weapons", "Rapid Guns", "label")
- Timer Name
rapidGuns- Repeat Every (s)
@self.rapidSeconds- First Delay (s)
@self.rapidSeconds- Ring Once
Yes
- Custom Event
rapidGunsStarted
- pickup
other- words
data("Pickups", "Rapid Guns", "popupText")- color
data("Pickups", "Rapid Guns", "popupColor")
- Event
While Fire Is Held (Fighter Guns)
- Variable
$weaponName- Value
data("Weapons", "Machine Guns", "label")
- Custom Event
rapidGunsEnded
A.63 Blink
Built in Chapter 9, The Sky Fortress.
While on, shows this Object every blinkGap seconds (first after firstShow) for showSeconds, and keeps it hidden in between.
Any Object- Timer Name
blinkOn- Repeat Every (s)
@self.blinkGap- First Delay (s)
@self.firstShow
- Timer Name
blinkOn- Repeat Every (s)
@self.blinkGap- First Delay (s)
@self.firstShow
- Visible
Yes
- Timer Name
blinkOff- Repeat Every (s)
@self.showSeconds- First Delay (s)
@self.showSeconds- Ring Once
Yes
- Visible
No
- Timer Name
blinkOn
- Visible
No
A.64 Blink Warning
Built in Chapter 9, The Sky Fortress.
When the Sky Fortress is coming, the WARNING banner blinks (its Blink Logic) for warningSeconds with the Warning Siren.
Any Object- Sound
"Warning Siren"
- Logic Component
"Blink"
- Timer Name
warningOver- Repeat Every (s)
@self.warningSeconds- First Delay (s)
@self.warningSeconds- Ring Once
Yes
- Logic Component
"Blink"- State
Disable
A.65 Calls Escorts
Built in Chapter 9, The Sky Fortress.
Once the Sky Fortress is enraged, two Zero Fighter escorts arrive above the top every escortGap seconds.
Any Object- Timer Name
escorts- Repeat Every (s)
@self.escortGap- First Delay (s)
@self.escortFirst
- Action Name
stillPlaying- Game State
Playing
stillPlaying.value == true- Object to Create
@self.escort- X
@self.leftX- Y
@self.entryY
- Object to Create
@self.escort- X
@self.rightX- Y
@self.entryY- Created As
created2
- Timer Name
escorts
A.66 Enraged Fortress Guns
Built in Chapter 9, The Sky Fortress.
While on (once the Sky Fortress is enraged), it fires Phase 2: turning rings of shells and aimed triples from its nose.
Any Objectself.enragedFortressGunsData- Timer Name
ringGun- Repeat Every (s)
@self.ringGap- First Delay (s)
@self.ringGap
- Timer Name
burstGun- Repeat Every (s)
@self.burstGap- First Delay (s)
@self.burstGap
- Action Name
stillPlayingForRing- Game State
Playing
stillPlayingForRing.value == true- Component Value
self.enragedFortressGunsData.ringAngle- Operator
+=- Value
@self.ringTurn
- caller
self- round
@self.shell- count
@self.ringCount- direction
self.enragedFortressGunsData.ringAngle + @self.ringStep * (@self.ringCount - 1) / 2- arc
@self.ringStep * (@self.ringCount - 1)- speed
@self.ringSpeed- muzzleX
0- muzzleY
@self.ringY
- Particles
"Enemy Muzzle Flash"- Y
@self.ringY- Count
@self.enemyMuzzleFlashCount- Z Index Offset
2
- Sound
"Enemy Guns"
- Timer Name
ringGun
- Action Name
stillPlayingForBurst- Game State
Playing
stillPlayingForBurst.value == true- Action Name
burstAim- caller
self- fighter
@self.fighter- aimMin
@self.aimMin- aimMax
@self.aimMax
- caller
self- round
@self.shell- count
@self.burstCount- direction
burstAim.value- arc
@self.burstArc- speed
@self.burstSpeed- muzzleX
0- muzzleY
@self.noseY
- Particles
"Enemy Muzzle Flash"- Y
@self.noseY- Count
@self.enemyMuzzleFlashCount- Z Index Offset
2
- Sound
"Enemy Guns"
- Timer Name
burstGun
- Timer Name
ringGun
- Timer Name
burstGun
A.67 Fortress Guns
Built in Chapter 9, The Sky Fortress.
While on, the Sky Fortress fires Phase 1: a fan of shells from its nose and aimed shells from its two wing guns.
Any Object- Timer Name
fanGun- Repeat Every (s)
@self.fanGap- First Delay (s)
@self.fanFirst
- Timer Name
aimedGuns- Repeat Every (s)
@self.wingGap- First Delay (s)
@self.wingFirst
- Action Name
stillPlayingForFan- Game State
Playing
stillPlayingForFan.value == true- caller
self- round
@self.shell- count
@self.fanCount- direction
270- arc
@self.fanArc- speed
@self.fanSpeed- muzzleX
0- muzzleY
@self.noseY
- Particles
"Enemy Muzzle Flash"- Y
@self.noseY- Count
@self.enemyMuzzleFlashCount- Z Index Offset
2
- Sound
"Enemy Guns"
- Timer Name
fanGun
- Action Name
stillPlayingForWingGuns- Game State
Playing
stillPlayingForWingGuns.value == true- Action Name
wingAim- caller
self- fighter
@self.fighter- aimMin
@self.aimMin- aimMax
@self.aimMax
- caller
self- round
@self.shell- count
1- direction
wingAim.value- arc
0- speed
@self.wingSpeed- muzzleX
-@self.wingX- muzzleY
@self.wingY
- Particles
"Enemy Muzzle Flash"- X
-@self.wingX- Y
@self.wingY- Count
@self.enemyMuzzleFlashCount- Z Index Offset
2
- caller
self- round
@self.shell- count
1- direction
wingAim.value- arc
0- speed
@self.wingSpeed- muzzleX
@self.wingX- muzzleY
@self.wingY
- Particles
"Enemy Muzzle Flash"- X
@self.wingX- Y
@self.wingY- Count
@self.enemyMuzzleFlashCount- Z Index Offset
2
- Sound
"Enemy Guns"
- Timer Name
aimedGuns
- Timer Name
fanGun
- Timer Name
aimedGuns
A.68 Fortress Health Fill
Built in Chapter 9, The Sky Fortress.
Keeps the health bar's fill as wide as the Sky Fortress's health left.
Any Object- Name
fill- Value
0
- Variable
fill- Value
1 - event("hitsTaken") / event("health")
- Horizontal Scale
fill
A.69 Mission Complete
Built in Chapter 9, The Sky Fortress.
Wins the mission when the Sky Fortress has sunk, if the mission is still being played.
Any Object- Action Name
stillPlaying- Game State
Playing
stillPlaying.value == true- Game State
Mission Complete
A.70 Mission Over
Built in Chapter 9, The Sky Fortress.
When the mission ends, the result screen shows a moment later (resultSeconds after a loss, victorySeconds after a win); then FLY AGAIN and MAIN MENU after a loss, or RETURN TO BASE after a win, are switched on.
Any Object- Action Name
missionFailed- Game State
Mission Failed
- Action Name
missionComplete- Game State
Mission Complete
missionFailed.value == true || missionComplete.value == truemissionFailed.value == true- Timer Name
resultScreen- First Delay (s)
@self.resultSeconds- Ring Once
Yes
- Timer Name
resultScreen- First Delay (s)
@self.victorySeconds- Ring Once
Yes
- Custom Event
showResults
- Action Name
endedInFailure- Game State
Mission Failed
endedInFailure.value == true- Logic Component
"Fly Again"
- Logic Component
"Return to Base"
A.71 Patrol
Built in Chapter 9, The Sky Fortress.
While on, drifts side to side and up and down in a slow wave around where it started patrolling (when it appeared, or when it was switched on).
Any Objectself.patrolData- Component Value
self.patrolData.secondsPatrolled- Operator
+=- Value
$deltaTime
- X Velocity
cos(@self.sideRate * self.patrolData.secondsPatrolled) * @self.sideSpeed- Y Velocity
sin(@self.bobRate * self.patrolData.secondsPatrolled) * @self.bobSpeed
A.72 Show With Fortress
Built in Chapter 9, The Sky Fortress.
Shows this health bar piece while the Sky Fortress is in the sky.
Any Object- Visible
Yes
- Visible
No
A.73 Sinks When Shot Down
Built in Chapter 9, The Sky Fortress.
When the Sky Fortress is shot down it sinks slowly with small explosions, then bursts, sends fortressSunk and is removed.
Any Object- X Velocity
0- Y Velocity
-@self.sinkSpeed
- Intensity
@self.goDownShakeStrength- Seconds
@self.goDownShakeSeconds
- Sound
"Explosion Large"
- Timer Name
sinkBlast- Repeat Every (s)
@self.blastGap- First Delay (s)
0
- Timer Name
sunk- Repeat Every (s)
@self.sinkSeconds- First Delay (s)
@self.sinkSeconds- Ring Once
Yes
- Action Name
blastX- Minimum
-@self.blastWidth- Maximum
@self.blastWidth
- Action Name
blastY- Minimum
-@self.blastHeight- Maximum
@self.blastHeight
- Particles
"Plane Explosion"- X
blastX.value- Y
blastY.value- Count
@self.planeExplosionCount- Z Index Offset
3
- Sound
"Explosion Small"
- Timer Name
sinkBlast
- Particles
"Big Explosion"- Count
@self.sunkBigExplosionCount- Z Index Offset
4
- Particles
"Smoke Puff"- Count
@self.smokePuffCount- Z Index Offset
2
- Sound
"Explosion Boss"
- Color
#fff4d6- Seconds
@self.sinkFlashSeconds
- Intensity
@self.sunkShakeStrength- Seconds
@self.sunkShakeSeconds
- Custom Event
fortressSunk
A.74 Sky Fortress Battle
Built in Chapter 9, The Sky Fortress.
Brings the Sky Fortress into the fight: Fighter rounds cannot hurt it while it comes down; once at fightY it patrols, can be hurt and fires. While the mission is being played, at half health it is enraged; with no health left it stops fighting and sends fortressDown.
Any Objectself.enemyStats- Name
secondsToPosition- Value
0
- Component Value
self.enemyStats.mark- Value
self.enemyStats.health / 2
- Variable
secondsToPosition- Value
(self.transform.position.y - @self.fightY) / self.enemyStats.speed
secondsToPosition < 0- Variable
secondsToPosition- Value
0
- Timer Name
inPosition- First Delay (s)
secondsToPosition- Ring Once
Yes
- Custom Event
fortressArrived
- Logic Component
"Takes Hits"
- Logic Component
"Patrol"
- Logic Component
"Fortress Guns"
- Custom Event
fortressDamaged
- Action Name
stillPlayingForEnrage- Game State
Playing
stillPlayingForEnrage.value == true- Component Value
self.enemyStats.mark- Value
self.enemyStats.health
- Mode
Go Down
- Variable
$banner- Value
@self.enragedWords
- Intensity
@self.enrageShakeStrength- Seconds
@self.enrageShakeSeconds
- Sound
"Explosion Large"
- Particles
"Big Explosion"- Count
@self.enrageBigExplosionCount- Z Index Offset
2
- Logic Component
"Fortress Guns"- State
Disable
- Logic Component
"Enraged Fortress Guns"
- Custom Event
fortressEnraged
- Action Name
stillPlayingForGoDown- Game State
Playing
stillPlayingForGoDown.value == true- Logic Component
"Takes Hits"- State
Disable
- Logic Component
"Patrol"- State
Disable
- Logic Component
"Enraged Fortress Guns"- State
Disable
- Logic Component
"Calls Escorts"- State
Disable
- Custom Event
enemyShotDown
- Custom Event
fortressDown
A.75 Stops When the Mission Is Won
Built in Chapter 9, The Sky Fortress.
When the mission is won the Fighter stops: it no longer flies, fires, drops bombs or can be hurt.
Any Object- Action Name
missionComplete- Game State
Mission Complete
missionComplete.value == true- Logic Component
"Top-down Controls"- State
Disable
- Logic Component
"Fighter Guns"- State
Disable
- Logic Component
"Hurt by Enemies"- State
Disable
- Logic Component
"Drops Bombs"- State
Disable
- X Velocity
0- Y Velocity
0
A.77 Close How to Play (Function)
Built in Chapter 10, Title and Menus.
Plays Menu Move and closes the How to Play panel (howToPlayClosed).
- Sound
"Menu Move"
- Custom Event
howToPlayClosed
A.78 Do What Was Chosen (Function)
Built in Chapter 10, Title and Menus.
Does the job of the chosen Main Menu button ($menuChoice): START MISSION, HOW TO PLAY or QUIT GAME.
$menuChoice == 0$menuChoice == 1$menuChoice == 2A.80 Keep a Better Score (Function)
Built in Chapter 10, Title and Menus.
Saves the score as the high score on this device when it beats the high score.
$score > $highScore- Variable
$highScore- Value
$score
- Action Name
highScoreSaved- Key
"highScore"- Value
$highScore
A.81 Lit When Chosen
Built in Chapter 10, Title and Menus.
Shows this lit button while its choice is the chosen one.
Any Object- caller
self- choice
self.choice
- caller
self- choice
self.choice
A.84 Open How to Play (Function)
Built in Chapter 10, Title and Menus.
Plays Menu Select and opens the How to Play panel (howToPlayOpened).
- Sound
"Menu Select"
- Custom Event
howToPlayOpened
A.85 Pause
Built in Chapter 10, Title and Menus.
During the mission, Pause (Esc, P) opens the PAUSED menu: RESUME MISSION continues, QUIT TO MAIN MENU keeps a better score and goes back to the Main Menu.
Any Object- Action Name
stillPlaying- Game State
Playing
stillPlaying.value == true- Sound
"Menu Move"
- Custom Event
showPauseOverlay
- Sound
"Menu Select"
- Custom Event
hidePauseOverlay
- Paused (1 pause / 0 resume)
0
- Custom Event
missionQuit
A.86 Pause Overlay Lifecycle
Comes whole from Myth’s templates. Built in Chapter 10, Title and Menus.
Composes global simulation pause with the independent viewport-fixed pause-overlay transport.
Any ObjectA.87 Quit the Game (Function)
Built in Chapter 10, Title and Menus.
Plays Menu Select and ends the game.
- Sound
"Menu Select"
A.88 Return to Base
Built in Chapter 10, Title and Menus.
On the Mission Complete screen, Confirm (Enter), Fire or Pause goes back to the Main Menu. It is off until the result screen shows (Mission Over turns it on).
Any ObjectA.89 Show If Chosen (Function)
Built in Chapter 10, Title and Menus.
Shows the caller while its choice is the chosen Main Menu button, and hides it otherwise.
$menuChoice == choice- Applies To
Caller- Visible
true
- Applies To
Caller- Visible
false
A.90 Show With How to Play
Built in Chapter 10, Title and Menus.
Shows this How to Play piece while the panel is open.
Any Object- Visible
Yes
- Visible
No
A.91 Start the Mission (Function)
Built in Chapter 10, Title and Menus.
Plays Menu Select and fades to Gameplay, where Mission Start sets up a fresh mission.
- Sound
"Menu Select"
- Scene
Gameplay- Transition
Fade- Transition Seconds
0.5
A.92 Take Off
Built in Chapter 10, Title and Menus.
On the Title, Confirm (Enter, Space, or a left click anywhere) goes to the Main Menu.
Any ObjectA.93 Title Music
Built in Chapter 10, Title and Menus.
Loops the Title Theme from the moment the game starts.
Any Object- Operation
Loop- Sound
"Title Theme"
A.94 Use Flight Controls
Built in Chapter 10, Title and Menus.
When a mission starts, the Flight controls are on and the Title controls off.
Any Object- Input Context
Flight
- Input Context
Title- Active
No
