Exemplo n.º 1
0
        public void OnAddingInventoryItems(Events.General.AddingInventoryItemsEventArgs ev)
        {
            Log.Debug($"Giving Inventory Items of the subclass {ev.Subteam.Name}, to {ev.Player.Nickname}", this.plugin.Config.Debug);
            if (ev.IsAllowed == false)
            {
                return;
            }

            ev.Player.ClearInventory();

            foreach (string i in ev.Subteam.Inventory)
            {
                if (int.TryParse(i, out int citem))
                {
                    CustomItem.TryGive(ev.Player, citem, plugin.Config.DisplayDescription);
                }
                else if (ItemType.TryParse <ItemType>(i, out ItemType item))
                {
                    ev.Player.AddItem(item);
                }
                else
                {
                    Log.Error($"The config item {i} of the subteam {ev.Subteam.Name} isn't valid");
                }
            }

            foreach (KeyValuePair <AmmoType, uint> a in ev.Subteam.Ammo)
            {
                ev.Player.Ammo[(int)a.Key] = a.Value;
            }
        }
Exemplo n.º 2
0
        public void OnSettingPlayerTeam(Events.General.SettingPlayerTeamEventArgs ev)
        {
            if (!Round.IsStarted)
            {
                ev.IsAllowed = false;
                ev.Player.ShowHint("Couldnt spawn you in before the round started");
            }

            var p        = ev.Player;
            var team     = ev.Team;
            var subteams = ev.Subclass;

            p.SetRole(subteams.ModelRole, true);
            p.Health    = subteams.HP;
            p.MaxHealth = subteams.HP;

            if (team.spawnLocation != Enums.SpawnLocation.Normal)
            {
                var point = MainPlugin.Singleton.EventHandlers.fixedpoints.First(x => x.Type == team.spawnLocation);
                switch (team.spawnLocation)
                {
                case Enums.SpawnLocation.Escape:
                {
                    p.Position  = point.Position;
                    p.Rotations = point.Direction;
                    break;
                }

                case Enums.SpawnLocation.SCP106:
                {
                    if (!Warhead.IsDetonated)
                    {
                        p.Position  = point.Position;
                        p.Rotations = point.Direction;
                    }
                    break;
                }

                case Enums.SpawnLocation.SurfaceNuke:
                {
                    p.Position  = point.Position;
                    p.Rotations = point.Direction;
                    break;
                }

                case Enums.SpawnLocation.SCP012:
                {
                    if (!Map.IsLCZDecontaminated && !Warhead.IsDetonated)
                    {
                        p.Position  = point.Position;
                        p.Rotations = point.Direction;
                    }
                    break;
                }

                case Enums.SpawnLocation.SCP079:
                {
                    if (!Warhead.IsDetonated)
                    {
                        p.Position  = point.Position;
                        p.Rotations = point.Direction;
                    }
                    break;
                }

                case Enums.SpawnLocation.SCP096:
                {
                    if (!Warhead.IsDetonated)
                    {
                        p.Position  = point.Position;
                        p.Rotations = point.Direction;
                    }
                    break;
                }

                case Enums.SpawnLocation.SCP173:
                {
                    if (!Map.IsLCZDecontaminated && !Warhead.IsDetonated)
                    {
                        p.Position  = point.Position;
                        p.Rotations = point.Direction;
                    }
                    break;
                }

                case Enums.SpawnLocation.Shelter:
                {
                    if (!Warhead.IsDetonated)
                    {
                        p.Position  = point.Position;
                        p.Rotations = point.Direction;
                    }
                    break;
                }
                }
            }

            var ihandler = new Events.General.AddingInventoryItemsEventArgs(p, subteams);

            ihandler.StartInvoke();

            if (MainPlugin.Singleton.Config.UseHints)
            {
                p.ShowHint(subteams.RoleMessage, 10);
            }
            else
            {
                p.Broadcast(10, subteams.RoleMessage);
            }

            Timing.CallDelayed(0.2f, () =>
            {
                if (MainPlugin.Singleton.EventHandlers.spawnableTeamType == Respawning.SpawnableTeamType.NineTailedFox)
                {
                    p.ReferenceHub.characterClassManager.NetworkCurUnitName = Respawning.RespawnManager.Singleton.NamingManager.AllUnitNames[MainPlugin.Singleton.EventHandlers.respawns].UnitName;
                }

                p.ReferenceHub.nicknameSync.ShownPlayerInfo &= ~PlayerInfoArea.Role;
                p.CustomInfo = subteams.RoleName;
                MainPlugin.Singleton.EventHandlers.teamedPlayers[p] = ev.Team.Name;
            }
                               );

            Log.Debug("Changing player " + p.Nickname + " to " + ev.Team.Name, MainPlugin.Singleton.Config.Debug);
        }