moddable game over i think

This commit is contained in:
WizardMantis441
2023-10-14 15:19:33 -05:00
parent 5222876fd7
commit bd673f4fef
2 changed files with 41 additions and 5 deletions
@@ -0,0 +1,30 @@
package funkin.backend.scripting.events;
import funkin.game.Character;
final class GameOverEvent extends CancellableEvent {
/**
* Character which died. Default to `boyfriend`.
*/
public var character:Character;
/**
* Character ID (name) for game over. Default to whatever is specified in the character's XML.
*/
public var deathCharID:String;
/**
* Song for the game over screen. Default to `this.gameOverSong` (`gameOver`)
*/
public var gameOverSong:String;
/**
* SFX at the beginning of the game over (Mic drop). Default to `this.lossSFX` (`gameOverSFX`)
*/
public var lossSFX:String;
/**
* SFX played whenever the player retries. Defaults to `retrySFX` (`gameOverEnd`)
*/
public var retrySFX:String;
}
+11 -5
View File
@@ -1243,11 +1243,15 @@ class PlayState extends MusicBeatState
* @param retrySFX SFX played whenever the player retries. Defaults to `retrySFX` (`gameOverEnd`)
*/
public function gameOver(?character:Character, ?deathCharID:String, ?gameOverSong:String, ?lossSFX:String, ?retrySFX:String) {
character = character.getDefault(opponentMode ? dad : boyfriend);
deathCharID = deathCharID.getDefault(character != null ? character.gameOverCharacter : "bf-dead");
gameOverSong = gameOverSong.getDefault(this.gameOverSong);
lossSFX = lossSFX.getDefault(this.lossSFX);
retrySFX = retrySFX.getDefault(this.retrySFX);
var event:GameOverEvent = scripts.event("onGameOver", EventManager.get(GameOverEvent).recycle(
character.getDefault(opponentMode ? dad : boyfriend),
deathCharID.getDefault(character != null ? character.gameOverCharacter : "bf-dead"),
gameOverSong.getDefault(this.gameOverSong),
lossSFX.getDefault(this.lossSFX),
retrySFX.getDefault(this.retrySFX)
));
if (event.cancelled) return;
if (character != null)
character.stunned = true;
@@ -1261,6 +1265,8 @@ class PlayState extends MusicBeatState
FlxG.sound.music.stop();
openSubState(new GameOverSubstate(character == null ? 0 : character.x, character == null ? 0 : character.y, deathCharID, character != null ? character.isPlayer : true, gameOverSong, lossSFX, retrySFX));
scripts.event("onGameOver", event);
}
/**