global function ClGameModeSNS_Init global function ServerCallback_AnnounceKillLeaderBankrupt global function ServerCallback_AnnounceBankrupt void function ClGameModeSNS_Init() { ClGameState_RegisterGameStateAsset( $"ui/gamestate_info_ffa.rpak" ) // add music for mode, this is copied directly from the ffa/fra music registered in cl_music.gnut RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "music_mp_freeagents_intro", TEAM_IMC ) RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "music_mp_freeagents_intro", TEAM_MILITIA ) RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_WIN, "music_mp_freeagents_outro_win", TEAM_IMC ) RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_WIN, "music_mp_freeagents_outro_win", TEAM_MILITIA ) RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_DRAW, "music_mp_freeagents_outro_lose", TEAM_IMC ) RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_DRAW, "music_mp_freeagents_outro_lose", TEAM_MILITIA ) RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LOSS, "music_mp_freeagents_outro_lose", TEAM_IMC ) RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LOSS, "music_mp_freeagents_outro_lose", TEAM_MILITIA ) RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_THREE_MINUTE, "music_mp_freeagents_almostdone", TEAM_IMC ) RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_THREE_MINUTE, "music_mp_freeagents_almostdone", TEAM_MILITIA ) RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LAST_MINUTE, "music_mp_freeagents_lastminute", TEAM_IMC ) RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LAST_MINUTE, "music_mp_freeagents_lastminute", TEAM_MILITIA ) AddCallback_GameStateEnter( eGameState.Postmatch, DisplayPostMatchTop3 ) } void function ServerCallback_AnnounceKillLeaderBankrupt( int leaderEHandle, int killerEHandle ) { entity player = GetEntityFromEncodedEHandle( leaderEHandle ) entity killer = GetEntityFromEncodedEHandle( killerEHandle ) AnnouncementData announcement = Announcement_Create( "#SNS_LEADER_BANKRUPT" ) Announcement_SetSubText( announcement, Localize( "#SNS_LEADER_BANKRUPT_SUB", player.GetPlayerName(), killer.GetPlayerName())) Announcement_SetTitleColor( announcement, <1,1,0> ) Announcement_SetPurge( announcement, true ) Announcement_SetPriority( announcement, 200 ) //Be higher priority than Titanfall ready indicator etc Announcement_SetSoundAlias( announcement, SFX_HUD_ANNOUNCE_QUICK ) Announcement_SetStyle( announcement, ANNOUNCEMENT_STYLE_QUICK ) AnnouncementFromClass( GetLocalViewPlayer(), announcement ) } void function ServerCallback_AnnounceBankrupt(int killerEHandle) { entity killer = GetEntityFromEncodedEHandle( killerEHandle ) AnnouncementData announcement = Announcement_Create( "#SNS_BANKRUPT" ) Announcement_SetSubText( announcement, Localize( "#SNS_BANKRUPT_SUB", killer.GetPlayerName() )) Announcement_SetTitleColor( announcement, <1,0,0> ) Announcement_SetPurge( announcement, true ) Announcement_SetPriority( announcement, 200 ) //Be higher priority than Titanfall ready indicator etc Announcement_SetSoundAlias( announcement, SFX_HUD_ANNOUNCE_QUICK ) Announcement_SetStyle( announcement, ANNOUNCEMENT_STYLE_QUICK ) AnnouncementFromClass( GetLocalViewPlayer(), announcement ) }