This repository was archived by the owner on Dec 30, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
Song Script
skellypupper edited this page Jun 3, 2023
·
29 revisions
Empty Script
Example song scripts can be found at the following links: 1 2 3 4
function create() {}
function cutscene() {
// code here
game.startCountdown();
}
function createPost() {}
function countdownTick(tick:Int) {} // 0 = 3, 1 = 2, 2 = 1, 3 = Go!
function songStart() {}
function update(elapsed:Int) {}
function updatePost() {}
function gameOver() {}
function gameOverUpdate(elapsed:Float) {}
function gameOverEnd() {}
function pause() {}
function camMove(char:String) {}
function noteSpawn(note) {}
function opponentNoteHit(note) {}
function goodNoteHit(note) {}
function noteMiss(?note) {}
function comboPop(rating:String, combo:Int, ?msTiming:Float) {}
function songEnd() {
// code here lol
game.endSong();
}
function stepHit(step:Int) {}
function beatHit(beat:Int) {}
function sectionHit(section:Int) {}
function eventLoad(eventName:String, value1:String, value2:String) {}
function event(eventName:String, value1:String, value2:String) {}You can make a global script at scripts/<yourcoolscriptname>.hxs.
You can make a song exclusive script in songs/<songname>/scripts/<yourcoolscriptname>.hxs.
These scripts execute when the playstate is active.
-
game: The active playstate instance. -
Paths: The global paths instance. -
add(object:FlxBasic): Shorthand forPlayState.instance.add. -
addToHUD(object:FlxBasic): Utility that adds a sprite to the HUD camera. -
addToTop(object:FlxBasic): Utility that adds a sprite to the top camera. -
remove(object:FlxBasic): Shorthand forPlayState.instance.remove. -
STOP: A value that can be returned in most callback functions to stop the function from completing. This could be used to create your own functionality and visuals per-callback. (does not work on every callback, list pending)
There are a few variables in the PlayState that can be useful in your song script depending on what you're looking to achieve.
-
game.moveHealthIcons: Bool, if false, the health icons won't follow the health bar. -
game.bopHealthIcons: Bool, if false, the health icons won't bop. -
game.moveCamera: Bool, if false, the camera won't move with eachmustHitSection. -
game.forceCutscene: Bool, if true, the game will show song cutscenes, even if not in story mode. -
game.disableInput: Bool, if true, the player's inputs will be disabled. -
game.camZooming: Bool, if true, the camera will bump. -
game.doStrumIntro: Bool, if false, the strums will not tween in, good for a custom intro or just repositioning strums. -
game.bopSpeed: Int, bumps the camera every X beats. (default: 4) -
game.camBumpZoom: Float, how hard the game camera bumps. (default: 0.015) -
game.hudBumpZoom: Float, how hard the hud bumps. (default: 0.03)
-
game.moveCam(target:Dynamic): Shortcut for moving the game camera, target can either be "bf", "gf", "dad" or an array with 2 floats. -
game.preloadEvent(eventName:String, value1:String, value2:String): Preloads an uncharted event. -
game.invokeEvent(eventName:String, value1:String, value2:String): Invokes an uncharted event. -
game.openDialogueBox(boxType:String, dialogue:Array<String>, callback:Void -> Void): Opens a custom dialogue box.
-
create(): Called after all song scripts are loaded. -
cutscene(): Called if available in any script and the game is in story mode. If you use this function in your script, you'll have to callgame.startCountdown(). -
createPost(): Called when PlayState#create is complete. -
countdownTick(tick:Int): Called on each countdown tick. -
songStart(): Called after the countdown is complete. -
update(elapsed:Float): Called every frame. -
updatePost(): Called after PlayState#update is complete. -
gameOver(): Called when the player runs out of health or calls a reset. If you'd like to open a custom game over substate, do it here. -
gameOverStart(): Called when the default game over substate opens. It can be accessed and altered viaGameOverSubstate.instance. -
gameOverUpdate(elapsed:Float): Called every frame on the default game over substate. -
gameOverEnd(): Called when the end function is called in the default game over substate. -
pause(): Called when the player pauses the game. -
camMove(char:String): Called when a mustHitSection camera change is made. Char is either "dad" or "bf". -
noteSpawn(note:Note): Called when a new note is created. Usenote.isSustainNoteto see if the note is a hold, andnote.mustPressto see if it's the player's note or not. -
opponentNoteHit(note:Note): Called when the opponent hits a note. -
goodNoteHit(note:Note): Same as above but for the player. -
noteMiss(?note:Note): Called if the player misses a note. Note could be null if player doesn't use ghost tapping. -
comboPop(rating:String, combo:Int, ?msTiming:Float): Called when a combo sprite is supposed to popup. If the rating is a miss,msTimingwill be null. -
songEnd(): Called when the song is about to end. If you use this function, be sure to callgame.endSong(). -
sectionHit(section:Int): Called when a section is hit. -
stepHit(step:Int): Called when a step is hit. -
beatHit(beat:Int): Called when a beat is hit. -
eventLoad(eventName:String, value1:String, value2:String): Called when an event gets preloaded. -
event(eventName:String, value1:String, value2:String): Called when an event is invoked.
Note: These do not all necessarily execute in the order shown.
Written for EE v1.1.0