Move all owned NPCs together with player on Team Switching (#789)
Uses a call back that is triggered when the player switches team to update their own entities accordingly.
This commit is contained in:
parent
f427583ec4
commit
9661372712
|
@ -96,6 +96,7 @@ void function PIN_GameStart()
|
||||||
|
|
||||||
AddCallback_OnPlayerKilled( OnPlayerKilled )
|
AddCallback_OnPlayerKilled( OnPlayerKilled )
|
||||||
AddDeathCallback( "npc_titan", OnTitanKilled )
|
AddDeathCallback( "npc_titan", OnTitanKilled )
|
||||||
|
AddCallback_EntityChangedTeam( "player", OnPlayerChangedTeam )
|
||||||
|
|
||||||
RegisterSignal( "CleanUpEntitiesForRoundEnd" )
|
RegisterSignal( "CleanUpEntitiesForRoundEnd" )
|
||||||
}
|
}
|
||||||
|
@ -1017,3 +1018,21 @@ void function DialoguePlayWinnerDetermined()
|
||||||
PlayFactionDialogueToTeam( "scoring_lost", losingTeam )
|
PlayFactionDialogueToTeam( "scoring_lost", losingTeam )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// This is to move all NPCs that a player owns from one team to the other during a match
|
||||||
|
/// Auto-Titans, Turrets, Ticks and Hacked Spectres will all move along together with the player to the new Team
|
||||||
|
/// Also possibly prevents mods that spawns other types of NPCs that players can own from breaking when switching (i.e Drones, Hacked Reapers)
|
||||||
|
void function OnPlayerChangedTeam( entity player )
|
||||||
|
{
|
||||||
|
if ( !player.hasConnected ) // Prevents players who just joined to trigger below code, as server always pre setups their teams
|
||||||
|
return
|
||||||
|
|
||||||
|
NotifyClientsOfTeamChange( player, GetOtherTeam( player.GetTeam() ), player.GetTeam() )
|
||||||
|
|
||||||
|
foreach( npc in GetNPCArray() )
|
||||||
|
{
|
||||||
|
entity bossPlayer = npc.GetBossPlayer()
|
||||||
|
if ( IsValidPlayer( bossPlayer ) && bossPlayer == player && IsAlive( npc ) )
|
||||||
|
SetTeam( npc, player.GetTeam() )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue