aboutsummaryrefslogtreecommitdiff
path: root/Northstar.CustomServers/mod/scripts/vscripts/mp/_classic_mp.nut
diff options
context:
space:
mode:
Diffstat (limited to 'Northstar.CustomServers/mod/scripts/vscripts/mp/_classic_mp.nut')
-rw-r--r--Northstar.CustomServers/mod/scripts/vscripts/mp/_classic_mp.nut98
1 files changed, 76 insertions, 22 deletions
diff --git a/Northstar.CustomServers/mod/scripts/vscripts/mp/_classic_mp.nut b/Northstar.CustomServers/mod/scripts/vscripts/mp/_classic_mp.nut
index ac8a397f7..66bb3d6a4 100644
--- a/Northstar.CustomServers/mod/scripts/vscripts/mp/_classic_mp.nut
+++ b/Northstar.CustomServers/mod/scripts/vscripts/mp/_classic_mp.nut
@@ -1,53 +1,80 @@
untyped
global function ClassicMp_Init
-global function ClassicMP_TryDefaultIntroSetup // called in mp_sh_init
+global function ClassicMP_TryDefaultIntroSetup
+
+// intro setups
+global function ClassicMP_SetLevelIntro
global function ClassicMP_SetCustomIntro
+global function ClassicMP_SetupIntro
+
+// intro funcs
global function ClassicMP_OnIntroStarted
global function ClassicMP_OnIntroFinished
global function ClassicMP_GetIntroLength
+
+// epilogue setups
+global function ClassicMP_ForceDisableEpilogue
+global function ClassicMP_SetEpilogue
+global function ClassicMP_SetupEpilogue
+global function ClassicMP_ShouldRunEpilogue
+
global function GetClassicMPMode
struct {
- void functionref() introSetupFunc
- float introLength
+ // level intros have a lower priority than custom intros
+ // level intros are used only if a custom intro was not specified
+ void functionref() levelIntroSetupFunc
+ float levelIntroLength
+
+ void functionref() customIntroSetupFunc
+ float customIntroLength
+
+ bool epilogueForceDisabled = false
+ void functionref() epilogueSetupFunc
} file
void function ClassicMp_Init()
{
- // literally nothing to do here atm lol
+ // default level intros
+ if ( IsFFAGame() )
+ ClassicMP_SetLevelIntro( ClassicMP_DefaultNoIntro_Setup, ClassicMP_DefaultNoIntro_GetLength() )
+ else
+ ClassicMP_SetLevelIntro( ClassicMP_DefaultDropshipIntro_Setup, DROPSHIP_INTRO_LENGTH )
}
+// stub func, called in mp_sh_init
void function ClassicMP_TryDefaultIntroSetup()
{
- if ( file.introSetupFunc == null )
- {
- if ( IsFFAGame() )
- ClassicMP_SetCustomIntro( ClassicMP_DefaultNoIntro_Setup, ClassicMP_DefaultNoIntro_GetLength() )
- else
- ClassicMP_SetCustomIntro( ClassicMP_DefaultDropshipIntro_Setup, DROPSHIP_INTRO_LENGTH )
- }
-
- thread DelayedDoDefaultIntroSetup()
+
}
-void function DelayedDoDefaultIntroSetup()
+void function ClassicMP_SetLevelIntro( void functionref() setupFunc, float introLength )
{
- // wait a frame for CodeCallback_MapInit to run which generally sets custom intros
- WaitFrame()
- file.introSetupFunc()
+ file.levelIntroSetupFunc = setupFunc
+ file.levelIntroLength = introLength
}
void function ClassicMP_SetCustomIntro( void functionref() setupFunc, float introLength )
{
- file.introSetupFunc = setupFunc
- file.introLength = introLength
+ file.customIntroSetupFunc = setupFunc
+ file.customIntroLength = introLength
+}
+
+void function ClassicMP_SetupIntro()
+{
+ if ( file.customIntroSetupFunc != null )
+ file.customIntroSetupFunc()
+ else
+ file.levelIntroSetupFunc()
}
void function ClassicMP_OnIntroStarted()
{
print( "started intro!" )
- SetServerVar( "gameStartTime", Time() + file.introLength )
- SetServerVar( "roundStartTime", Time() + file.introLength )
+
+ float introLength = ClassicMP_GetIntroLength()
+ SetServerVar( "gameStartTime", Time() + introLength )
+ SetServerVar( "roundStartTime", Time() + introLength )
}
void function ClassicMP_OnIntroFinished()
@@ -58,10 +85,37 @@ void function ClassicMP_OnIntroFinished()
float function ClassicMP_GetIntroLength()
{
- return file.introLength
+ if ( file.customIntroSetupFunc != null )
+ return file.customIntroLength
+
+ return file.levelIntroLength
+}
+
+void function ClassicMP_ForceDisableEpilogue( bool disabled )
+{
+ file.epilogueForceDisabled = disabled
+}
+
+void function ClassicMP_SetEpilogue( void functionref() setupFunc )
+{
+ file.epilogueSetupFunc = setupFunc
+}
+
+void function ClassicMP_SetupEpilogue()
+{
+ if ( file.epilogueSetupFunc == null ) // default is evac
+ ClassicMP_SetEpilogue( EvacEpilogueSetup )
+
+ file.epilogueSetupFunc()
}
bool function GetClassicMPMode()
{
return GetCurrentPlaylistVarInt( "classic_mp", 1 ) == 1
+}
+
+bool function ClassicMP_ShouldRunEpilogue()
+{
+ // note: there is a run_evac playlist var, but it's unused, and default 0, so use a new one
+ return !file.epilogueForceDisabled && GetClassicMPMode() && !IsRoundBased() && GetCurrentPlaylistVarInt( "run_epilogue", 1 ) == 1
} \ No newline at end of file