Exemplo n.º 1
0
        /// <inheritdoc/>
        public void Log(EventPriority priority, string message)
        {
            RealmEvent report = new RealmEvent
            {
                Uid        = Guid.NewGuid().ToString(),
                Priority   = priority,
                Message    = message,
                AppVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(),
                Timestamp  = DateTimeOffset.Now
            };

            Log(report);
        }
Exemplo n.º 2
0
        public void HandleRealmEvent(Enemy enemy, Player killer)
        {
            if (enemy.ObjectDesc != null)
            {
                TauntData?dat = null;

                foreach (var i in criticalEnemies)
                {
                    if ((enemy.ObjectDesc.DisplayId ?? enemy.ObjectDesc.ObjectId) == i.Item1)
                    {
                        dat = i.Item2;
                        break;
                    }
                }

                if (dat == null)
                {
                    return;
                }

                if (dat.Value.killed != null)
                {
                    string[] arr = dat.Value.killed;
                    string   msg = arr[rand.Next(0, arr.Length)];

                    while (killer == null && msg.Contains("{PLAYER}"))
                    {
                        msg = arr[rand.Next(0, arr.Length)];
                    }

                    msg = msg.Replace("{PLAYER}", killer.Name);

                    BroadcastMsg(msg);
                }

                if (rand.NextDouble() < RealmEventProbability)
                {
                    RealmEvent evt = RealmEventCache[rand.Next(0, RealmEventCache.Count)];

                    if (GameServer.Manager.GameData.ObjectDescs[GameServer.Manager.GameData.IdToObjectType[evt.Name]].PerRealmMax == 1)
                    {
                        RealmEventCache.Remove(evt);
                    }

                    SpawnEvent(evt.Name, evt.MapSetPiece);

                    dat = null;

                    foreach (var i in criticalEnemies)
                    {
                        if (evt.Name == i.Item1)
                        {
                            dat = i.Item2;
                            break;
                        }
                    }

                    if (dat == null)
                    {
                        return;
                    }

                    if (dat.Value.spawn != null)
                    {
                        string[] arr = dat.Value.spawn;
                        string   msg = arr[rand.Next(0, arr.Length)];

                        BroadcastMsg(msg);
                    }
                }
            }
        }
Exemplo n.º 3
0
 internal Event([NotNull] RealmEvent log) : base(log.Timestamp.LocalDateTime, Version.Parse(log.AppVersion))
 {
     Priority = log.Priority;
     Message  = log.Message;
 }