public new void Exit(IemStateManager.StateManager sm) { EmbankStateManager gsm = (EmbankStateManager)sm; IemUI.UpdateGameStatusBanner("", gsm.eg); completeTimer?.Destroy(); }
public new void Execute(IemStateManager.StateManager sm) { EmbankStateManager gsm = (EmbankStateManager)sm; gsm.eg.CheckGameState(); gsm.eg.ShowGameStatus(); }
public new void Exit(IemStateManager.StateManager sm) { EmbankStateManager gsm = (EmbankStateManager)sm; gameLobbyWaitTimer.Destroy(); gameLobbyBannerTimer.Destroy(); EntitiesTakingDamage -= gsm.eg.PlayerImmortal; }
public new void Exit(IemStateManager.StateManager sm) { EmbankStateManager gsm = (EmbankStateManager)sm; partitionTimer?.Destroy(); updatesTimer?.Destroy(); // remove hook on damage for immortality EntitiesTakingDamage -= gsm.eg.PlayerImmortal; }
public new void Enter(IemStateManager.StateManager sm) { EmbankStateManager gsm = (EmbankStateManager)sm; foreach (var partition in gsm.partitions) { partition?.Remove(); } me.Unsubscribe(nameof(OnRunPlayerMetabolism)); }
public override bool StartGame() { IemUtils.GLog("calling StartGame in IemGameEmbankmentGame"); if (gsm == null) { base.StartGame(); gsm = new EmbankStateManager(EmbankStateManager.Created.Instance, this); gsm.ChangeState(EmbankStateManager.GameLobby.Instance); } return(true); }
public new void Exit(IemStateManager.StateManager sm) { EmbankStateManager gsm = (EmbankStateManager)sm; updatesTimer?.Destroy(); gameTimer?.Destroy(); // don't set the player status PlayerDying -= gsm.eg.PlayerDied; // don't log the score PlayerDying -= gsm.eg.ScorePlayerKill; }
public new void Enter(IemStateManager.StateManager sm) { EmbankStateManager gsm = (EmbankStateManager)sm; resultsTimer = IemUI.ShowResultsUiFor( gsm.eg.Players.Select(d => d.Value).ToList(), gsm.eg, 8); gsm.eg.EndGame(); completeTimer = me.timer.Once(10f, () => { gsm.ChangeState(EmbankStateManager.CleanUp.Instance); }); }
public new void Exit(IemStateManager.StateManager sm) { EmbankStateManager gsm = (EmbankStateManager)sm; IemUI.UpdateGameStatusBanner("", gsm.eg); IemUI.UpdateGameBanner("", gsm.eg); // set the player status PlayerDying -= gsm.eg.PlayerDied; // log the score PlayerDying -= gsm.eg.ScorePlayerKill; // any damage is fatal EntitiesTakingDamage -= gsm.eg.SuddenDeath; // player can't be wounded in sudden death EntitiesBeingWounded -= gsm.eg.SuddenDeathWounded; suddenDeathTimer?.Destroy(); updatesTimer?.Destroy(); }
//private DateTime startTime = DateTime.UtcNow; //TimeSpan breakDuration = TimeSpan.FromSeconds(15); public new void Enter(IemStateManager.StateManager sm) { EmbankStateManager gsm = (EmbankStateManager)sm; // change the player status PlayerDying += gsm.eg.PlayerDied; //log the score PlayerDying += gsm.eg.ScorePlayerKill; // any damage is fatal EntitiesTakingDamage += gsm.eg.SuddenDeath; // player can't be wounded in sudden death EntitiesBeingWounded += gsm.eg.SuddenDeathWounded; foreach (IemGameBase.IemTeam iemTeam in gsm.eg.Teams.Values) { foreach (IemGameBase.IemPlayer iemPlayer in iemTeam.Players.Values) { BasePlayer player = IemUtils.FindPlayerByID(iemPlayer.PlayerId); IemUI.ShowGameTimer(player, gsm.eg.PartitionWait, "Sudden Death: "); } } suddenDeathTimer = me.timer.Once( gsm.eg.SuddenDeathPhaseWait, () => { gsm.ChangeState(EmbankStateManager.GameComplete.Instance); }); //} IemUI.UpdateGameBanner("Sudden Death - all hits are fatal!!!", gsm.eg); countdown = gsm.eg.SuddenDeathPhaseWait; updatesTimer = me.timer.Every(1f, () => { gsm.Update(); }); }
public new void Enter(IemStateManager.StateManager sm) { EmbankStateManager gsm = (EmbankStateManager)sm; gsm.eg.teamLobby.Destroy(); foreach (IemGameBase.IemTeam iemTeam in gsm.eg.Teams.Values) { foreach (IemGameBase.IemPlayer iemPlayer in iemTeam.Players.Values) { BasePlayer player = IemUtils.FindPlayerByID(iemPlayer.PlayerId); me.IemUtils?.RestoreInventory(player, gsm.eg.GetGuid()); } } foreach (var partition in gsm.partitions) { partition?.Remove(); } me.Unsubscribe(nameof(OnRunPlayerMetabolism)); }
//private DateTime startTime = DateTime.UtcNow; //TimeSpan breakDuration = TimeSpan.FromSeconds(15); public new void Enter(IemStateManager.StateManager sm) { EmbankStateManager gsm = (EmbankStateManager)sm; me.Subscribe(nameof(OnRunPlayerMetabolism)); // nullify any damage EntitiesTakingDamage += gsm.eg.PlayerImmortal; foreach (IemGameBase.IemTeam iemTeam in gsm.eg.Teams.Values) { foreach (IemGameBase.IemPlayer iemPlayer in iemTeam.Players.Values) { BasePlayer player = IemUtils.FindPlayerByID(iemPlayer.PlayerId); //player.EndSleeping(); me.Kits?.Call("GiveKit", player, "embank_v1"); player.inventory.SendSnapshot(); IemUtils.PlaySound(player); IemUI.CreateGameBanner(player, "Zone is Partitioned!"); IemUI.ShowGameTimer(player, gsm.eg.PartitionWait, "partion removed in: "); } } updatesTimer = me.timer.Every(1f, () => { gsm.Update(); }); countdown = gsm.eg.PartitionWait; partitionTimer = me.timer.Once( gsm.eg.PartitionWait, () => { gsm.ChangeState(MainPhase.Instance); }); }
public new void Enter(IemStateManager.StateManager sm) { EmbankStateManager gsm = (EmbankStateManager)sm; foreach (var partition in gsm.partitions) { partition?.Remove(); } foreach (IemGameBase.IemTeam iemTeam in gsm.eg.Teams.Values) { foreach (IemGameBase.IemPlayer iemPlayer in iemTeam.Players.Values) { BasePlayer player = IemUtils.FindPlayerByID(iemPlayer.PlayerId); IemUI.CreateGameBanner(player, "Main Phase, partition is removed!"); IemUI.ShowGameTimer(player, gsm.eg.PartitionWait, "Main Phase: "); } } // change the player status PlayerDying += gsm.eg.PlayerDied; // log the score PlayerDying += gsm.eg.ScorePlayerKill; gameTimer = me.timer.Once(gsm.eg.MainPhaseWait, () => { gsm.ChangeState(SuddenDeath.Instance); }); countdown = gsm.eg.MainPhaseWait; updatesTimer = me.timer.Every(1f, () => { gsm.Update(); }); }
public new void Enter(IemStateManager.StateManager sm) { EmbankStateManager gsm = (EmbankStateManager)sm; EntitiesTakingDamage += gsm.eg.PlayerImmortal; me.rust.RunServerCommand("env.time", "12"); for (int i = 0; i <= gsm.blockshigh; i++) { gsm.partitions.Add(new IemObjectPlacement.CopyPastePlacement( "base_partition_wall", new Vector3(-500, gsm.startheight + (gsm.wallheight * i), 10))); } // gsm.CreateGameBanner("GAME LOBBY"); gameLobbyWaitTimer = me.timer.Once(gsm.eg.GameLobbyWait, () => { gsm.ChangeState(PartitionedPeriod.Instance); }); // gsm.CreateGameBanner("GAME LOBBY"); gameLobbyBannerTimer = me.timer.Once(gsm.eg.GameLobbyWait - 3, () => { foreach (IemGameBase.IemTeam iemTeam in gsm.eg.Teams.Values) { foreach (IemGameBase.IemPlayer iemPlayer in iemTeam.Players.Values) { BasePlayer player = IemUtils.FindPlayerByID(iemPlayer.PlayerId); CuiHelper.DestroyUi(player, "ShowIntroOverlay"); } } }); foreach (IemGameBase.IemTeam iemTeam in gsm.eg.Teams.Values) { foreach (IemGameBase.IemPlayer iemPlayer in iemTeam.Players.Values) { BasePlayer player = IemUtils.FindPlayerByID(iemPlayer.PlayerId); IemUI.ShowGameTimer(player, gsm.eg.GameLobbyWait - 3, "starting in: "); if (player.IsConnected()) { if (player.IsDead()) { IemUtils.GLog("player is dead"); player.Respawn(); } } player.EndSleeping(); gsm.eg.MovePlayerToTeamLocation(player, iemTeam.Location); IemUtils.SetMetabolismValues(player); IemUtils.ClearInventory(player); IemUI.CreateGameBanner(player, "GAME LOBBY"); IemUI.ShowIntroOverlay(player, $"The Game is Embankment\n" + $"it is in 3 phases.\n" + $"1) <color=green>The paritioned period</color> ({gsm.eg.PartitionWait}) a time for crafting and building\n" + $"a wall separates the teams. Players are invulnerable\n" + $"Once the first phase is finished, the wall comes down\n" + $"2) <color=blue>The main phase.</color> Players have 1 life. Attack and defend.\n" + $"after {gsm.eg.MainPhaseWait} the games enters....\n" + $"3) <color=red>Sudden Death</color>. All melle, weapon and explosion damage\n" + $"is fatal. This period lasts for {gsm.eg.SuddenDeathPhaseWait}\n" + $"if players remain after sudden death. The Winning team is the one\n" + $"with the most total health points remaining.\n"); IemUtils.PlaySound(player); } } }