Untitled
unknown
plain_text
10 months ago
4.5 kB
20
Indexable
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Teams }
using { /Fortnite.com/Game }
using { /Fortnite.com/AI }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/Diagnostics }
Game_Manager := class(creative_device):
var PlayerMap : [player]int = map{}
var ElimsToEndGame : int = 99
@editable var WeaponGranters : []item_granter_device = array{}
@editable EndGameDevice : end_game_device = end_game_device{}
@editable var RemoteGranter : item_granter_device = item_granter_device{}
@editable var Sentries : []sentry_device = array{}
@editable var Guards : []guard_spawner_device = array{}
OnBegin<override>()<suspends>:void=
set ElimsToEndGame = WeaponGranters.Length
InitPlayers()
GrantRemoteToAllPlayers() # Grant remotes at game start
GrantRemoteToAllSentries() # Grant remotes to all sentries at game start
GrantRemoteToAllGuards() # Grant remotes to all guards at game start
GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerJoined)
# Subscribe to sentry elimination events
for (Sentry : Sentries):
Sentry.EliminatedEvent.Subscribe(OnSentryEliminated)
# Subscribe to guard elimination events
for (Guard : Guards):
Guard.EliminatedEvent.Subscribe(OnGuardEliminated)
InitPlayers() : void=
AllPlayers := GetPlayspace().GetPlayers()
for (Player : AllPlayers, FortCharacter := Player.GetFortCharacter[]):
if (set PlayerMap[Player] = 0, WeaponTier := PlayerMap[Player]):
FortCharacter.EliminatedEvent().Subscribe(OnPlayerElim)
GrantWeapon(Player, WeaponTier)
OnPlayerJoined(Player : player):void=
SetupPlayerAfterJoin(Player)
GrantRemoteToPlayer(Player)
SetupPlayerAfterJoin(Player : player) : void =
if (FortCharacter := Player.GetFortCharacter[]):
var WeaponTier : int = 0
if (ExistingTier := PlayerMap[Player]):
set WeaponTier = ExistingTier
else:
if (set PlayerMap[Player] = 0) {}
FortCharacter.EliminatedEvent().Subscribe(OnPlayerElim)
GrantWeapon(Player, WeaponTier)
GrantWeapon(Player : player, WeaponTier: int) : void=
if (ItemGranter := WeaponGranters[WeaponTier]):
ItemGranter.GrantItem(Player)
GrantRemoteToAllPlayers() : void=
AllPlayers := GetPlayspace().GetPlayers()
for (Player : AllPlayers):
GrantRemoteToPlayer(Player)
GrantRemoteToPlayer(Player : player) : void=
RemoteGranter.GrantItem(Player)
GrantRemoteToAllSentries() : void=
for (Sentry : Sentries):
Sentry.Enable()
GrantRemoteToAllGuards() : void=
for (Guard : Guards):
Guard.Enable()
OnPlayerElim(Result : elimination_result) : void=
Eliminator := Result.EliminatingCharacter
Eliminated := Result.EliminatedCharacter
# Only promote if eliminator exists and is not the same as eliminated
if (Eliminator?, Eliminated <> Eliminator?):
if (EliminatingAgent := Eliminator?.GetAgent[]):
PlayerPromotion(EliminatingAgent)
# Updated to accept device_ai_interaction_result
OnGuardEliminated(Result : device_ai_interaction_result) : void=
if (Source := Result.Source?, Player := player[Source]):
PlayerPromotion(Player)
GrantRemoteToPlayer(Player)
OnSentryEliminated(Agent : ?agent) : void=
if (Player := player[Agent?]):
PlayerPromotion(Player)
GrantRemoteToPlayer(Player)
PlayerPromotion(Agent : agent) : void=
var WeaponTier : int = 0
if (Player := player[Agent], PlayerWeaponTier := PlayerMap[Player]):
set WeaponTier = PlayerWeaponTier+1
CheckEndGame(Agent, WeaponTier)
if (Player := player[Agent], set PlayerMap[Player] = WeaponTier):
GrantWeapon(Player, WeaponTier)
GrantRemoteToPlayer(Player) # Grant remote after promotion
TestPlayerElimination(Agent :?agent) : void=
if (Player := player[Agent?]):
PlayerPromotion(Player)
CheckEndGame(Player : agent, WeaponTier : int) : void=
if (WeaponTier >= ElimsToEndGame):
EndGameDevice.Activate(Player)Editor is loading...
Leave a Comment