コード例 #1
0
 private static void RunLights(ScriptActionsStore dataObj)
 {
     foreach (var lightData in dataObj.lights)
     {
         Map.TurnOffAllLights(lightData.time, lightData.HCZOnly);
     }
 }
コード例 #2
0
 public void Add(ScriptActionsStore data)
 {
     this.teleportIds.AddRange(data.teleportIds);
     this.broadcast.AddRange(data.broadcast);
     this.hint.AddRange(data.hint);
     this.lights.AddRange(data.lights);
 }
コード例 #3
0
 public static ScriptActionsStore GetDelay(int delay)
 {
     if (!delays.ContainsKey(delay))
     {
         delays[delay] = new ScriptActionsStore();
     }
     return(delays[delay]);
 }
コード例 #4
0
 private static void RunHints(ScriptActionsStore dataObj)
 {
     foreach (var hintData in dataObj.hint)
     {
         foreach (var player in hintData.role.GetMembers())
         {
             player.ShowHint(hintData.message, hintData.duration);
         }
     }
 }
コード例 #5
0
 private static void RunBroadcasts(ScriptActionsStore dataObj)
 {
     foreach (var broadcastData in dataObj.broadcast)
     {
         foreach (var player in broadcastData.role.GetMembers())
         {
             player.Broadcast((ushort)broadcastData.duration, broadcastData.message);
         }
     }
 }
コード例 #6
0
        private static void SetRoles(ScriptActionsStore dataObj)
        {
            var players = Player.List.ToList();

            players.Shuffle();

            var playersTemp = players.Clone();

            foreach (var data in dataObj.classIds)
            {
                var num = 0;

                for (var i = 0; i < playersTemp.Count; i++)
                {
                    if (random.Next(0, 101) > data.chance && num > data.min)
                    {
                        continue;
                    }

                    playersTemp[i].SetRole(data.role.GetRole());
                    CustomRoles.ChangeRole(playersTemp[i], data.role.GetCustomRole());
                    players.RemoveAll(player => player.Id == playersTemp[i].Id);
                    num++;
                }

                players.Shuffle();
                playersTemp = players.Clone();
            }

            playersTemp = players.Clone();

            var spawnData = dataObj.classIds.Where(data => data.chance == 100).ToList();

            if (spawnData.Count > 0)
            {
                for (var i = 0; i < playersTemp.Count; i++)
                {
                    playersTemp[i].SetRole(spawnData[0].role.GetRole());
                    CustomRoles.ChangeRole(playersTemp[i], spawnData[0].role.GetCustomRole());
                    players.RemoveAll(player => player.Id == playersTemp[i].Id);
                }
            }

            if (dataObj.finalClass != null && players.Count > 0 && dataObj.finalClass.classId != -1)
            {
                var role       = dataObj.finalClass.GetRole();
                var customRole = dataObj.finalClass.GetCustomRole();

                foreach (var player in players)
                {
                    player.SetRole(role);
                    CustomRoles.ChangeRole(player, customRole);
                }
            }
        }
コード例 #7
0
        private static void RunCassie(ScriptActionsStore dataObj)
        {
            foreach (var cassieData in dataObj.cassie)
            {
                Cassie.Message(cassieData.message, false, false);

                if (cassieData.role.roleID == "all")
                {
                    dataObj.cassie.Remove(cassieData);
                }
            }
        }
コード例 #8
0
        private static void SetSize(ScriptActionsStore dataObj)
        {
            foreach (var data in dataObj.sizeData)
            {
                var list = data.role.GetMembers();

                foreach (var player in list)
                {
                    player.Scale = data.scale;
                }
            }
        }
コード例 #9
0
        private static void SetHP(ScriptActionsStore dataObj)
        {
            foreach (var data in dataObj.hpData)
            {
                var list = data.role.GetMembers();

                foreach (var player in list)
                {
                    player.Health = data.amount;
                }
            }
        }
コード例 #10
0
        private static void GiveItems(ScriptActionsStore dataObj)
        {
            foreach (var itemData in dataObj.giveData)
            {
                var list = itemData.role.GetMembers();

                foreach (var player in list)
                {
                    player.Inventory.AddNewItem(itemData.item);
                }
            }
        }
コード例 #11
0
        private static void ClearItems(ScriptActionsStore dataObj)
        {
            foreach (var clearItemsData in dataObj.clearItems)
            {
                var list = clearItemsData.GetMembers();

                foreach (var player in list)
                {
                    player.ClearInventory();
                }
            }
        }
コード例 #12
0
        private static void Teleport(ScriptActionsStore dataObj)
        {
            foreach (var data in dataObj.teleportIds)
            {
                var players = data.role.GetMembers();

                foreach (var player in players)
                {
                    player.Position = data.pos;
                }
            }
        }
コード例 #13
0
        private static IEnumerator <float> RoundStart(ScriptActionsStore dataObj, bool main)
        {
            yield return(Timing.WaitForSeconds(1f));

            if (dataObj.classIds != null && dataObj.classIds.Count > 0)
            {
                SetRoles(dataObj);
                yield return(Timing.WaitForSeconds(1f));
            }

            try
            {
                Teleport(dataObj);
                ClearItems(dataObj);
                GiveItems(dataObj);
                SetHP(dataObj);
                SetSize(dataObj);
                RunCassie(dataObj);
                RunBroadcasts(dataObj);
                RunHints(dataObj);
                RunLights(dataObj);

                if (dataObj.detonate)
                {
                    AlphaWarheadController.Host.StartDetonation();
                }

                if (main)
                {
                    foreach (var delay in delays.Keys)
                    {
                        Timing.RunCoroutine(DoDelayedAction(delay));
                    }
                }
                else
                {
                    scriptData.Add(dataObj);
                }
            }
            catch (Exception e)
            {
                Log.Error(e);
            }
        }
コード例 #14
0
        public static void Reset()
        {
            foreach (var coroutine in coroutines)
            {
                Timing.KillCoroutines(coroutine);
            }

            CustomRoles.roles = new Dictionary <string, CustomRole>();
            CustomRoles.users = new Dictionary <string, string>();

            CustomRoles.roles.Add("all", new CustomRole("all", 2));

            scriptData = new ScriptActionsStore();
            delays     = new Dictionary <int, ScriptActionsStore>();

            Timing.CallDelayed(10f, () =>
            {
                try
                {
                    AdvancedSubclassing.PopulateCustomRoles();

                    if (EasyEvents.Singleton.Config.Events.Count > 0)
                    {
                        var selected = EasyEvents.Singleton.Config.Events.PickRandom().Trim().ToLower().Replace(" ", "");

                        if (selected == "none")
                        {
                            return;
                        }
                        if (!ScriptStore.Scripts.ContainsKey(selected))
                        {
                            throw new EventNotFoundException("The event \"" + selected + "\" was not found while attempting to automatically run an event.");
                        }
                        ScriptHandler.RunScript(ScriptStore.Scripts[selected]);
                    }
                }
                catch (Exception e)
                {
                    Log.Error(e);
                }
            });
        }
コード例 #15
0
        public static void SetCustomSpawn(List <SpawnData> _classIds, RoleInfo _finalClass, int line, ScriptActionsStore data)
        {
            if (data.classIds != null)
            {
                throw new CommandErrorException("Error running command \"spawn\" at line " + line + ": Custom spawns have already been set. Only run the \"spawn\" command once.");
            }

            data.classIds   = _classIds;
            data.finalClass = _finalClass;
        }