Exemple #1
0
                //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();
                    });
                }
Exemple #2
0
                //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);
                    });
                }
Exemple #3
0
                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();
                    });
                }
Exemple #4
0
                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);
                        }
                    }
                }