Exemple #1
0
        public void Execute(EyeStateEntry entry, CombatLogEntry combatLogEntry)
        {
            var entryGold = combatLogEntry as CombatLogEntryGold;

            var currentTime    = entry.Map.ClockTime;
            var additionalGold = currentTime / 30;
            var predictedGold  = 40 + additionalGold;

            /*|| predictedGold + 2 >= entryGold.Gold &&
             * predictedGold - 2 <= entryGold.Gold*/

            if ((entryGold.Target != "npc_dota_hero_alchemist" ||
                 !(predictedGold * AlchemistBountyRuneMultiplier + 2 >= entryGold.Gold) ||
                 !(predictedGold * AlchemistBountyRuneMultiplier - 2 <= entryGold.Gold)) &&
                (predictedGold + 2 < entryGold.Gold || predictedGold - 2 > entryGold.Gold))
            {
                return;
            }


            /*if (predictedGold + 2 < entryGold.Gold || entryGold.Gold < predictedGold - 2) return;*/

            var member = entry.Members.SearchByHeroName(entryGold.Target);
            var gold   = entryGold.Gold;

            Console.WriteLine($"{member.Hero.Name} got {gold} gold for someone picked up the bounty rune");
            OnPickedUp(new BountyRunePickedupEventAegs {
                Gold = gold, Member = member
            });
        }
Exemple #2
0
        public void Execute(EyeStateEntry entry, CombatLogEntry combatLogEntry)
        {
            foreach (var memberItem in _items)
            {
                var member = memberItem.Key;
                var item   = memberItem.Value;

                switch (item.Name)
                {
                case "item_gem":
                    OnImportantItemRemoved(new ImportantItemRemovedEventArgs {
                        Member = member, IsGemAdded = true
                    });
                    break;

                case "item_rapier":
                    OnImportantItemRemoved(new ImportantItemRemovedEventArgs {
                        Member = member, IsRapierAdded = true
                    });
                    break;

                case "item_aegis":
                    OnImportantItemRemoved(new ImportantItemRemovedEventArgs {
                        Member = member, IsAegisAdded = true
                    });
                    break;
                }
            }
        }
Exemple #3
0
        public CombatLogEntry GetCombatLogEntry(string combatLogEntryName)
        {
            CombatLogEntry dummyCombatLogEntry = new CombatLogEntry();

            dummyCombatLogEntry.Name = "Dummy";

            return(dummyCombatLogEntry);
        }
Exemple #4
0
        public void Execute(EyeStateEntry entry, CombatLogEntry combatLogEntry)
        {
            var gold = combatLogEntry as CombatLogEntryGold;

            OnGold(new KillsGoldEventArgs {
                Member = entry.Members.SearchByHeroName(gold.Target), Gold = gold.Gold
            });
        }
Exemple #5
0
 public void Execute(EyeStateEntry entry, CombatLogEntry combatLogEntry)
 {
     OnModifierAdded(new RuneModifierAddedEventArgs
     {
         Member = entry.Members.SearchByHeroName(_hero),
         Rune   = _rune
     });
 }
Exemple #6
0
 public void Execute(EyeStateEntry entry, CombatLogEntry combatLogEntry)
 {
     if (combatLogEntry == null)
     {
         OnGameStateEventsCountChange(++_gameStateCount);
     }
     else
     {
         OnCombatLogEventsCountChange(++_combatLogCount);
     }
 }
Exemple #7
0
        public List <CombatLogEntry> GetCombatLogEntries(string fittingName)
        {
            List <CombatLogEntry> combatLogEntries = new List <CombatLogEntry>();

            CombatLogEntry dummyCombatLogEntry = new CombatLogEntry();

            dummyCombatLogEntry.Name = "Dummy";
            combatLogEntries.Add(dummyCombatLogEntry);

            return(combatLogEntries);
        }
Exemple #8
0
        public bool EventPredicator(CombatLogEntry entry)
        {
            var gameState = entry as CombatLogEntryGameState;

            if (gameState == null)
            {
                return(false);
            }
            if (gameState.State != (int)Map.GameState.DOTA_GAMERULES_STATE_GAME_IN_PROGRESS)
            {
                return(false);
            }

            return(true);
        }
Exemple #9
0
        public bool EventPredicator(CombatLogEntry entry)
        {
            var entryGold = entry as CombatLogEntryGold;

            if (entryGold == null)
            {
                return(false);
            }
            if (entryGold.GoldReason != GoldReason.Unspecified)
            {
                return(false);
            }

            return(true);
        }
        public void Execute(EyeStateEntry entry, CombatLogEntry combatLogEntry)
        {
            /*var radiant = entry.Members.Where(m => m.Player.TeamName == "radiant");
             * var dire = entry.Members.Where(m => m.Player.TeamName == "dire");
             *
             * var networthRadiant = radiant.Sum(m => (double)m.Player.NetWorth);
             * var networthDire = dire.Sum(m => (double)m.Player.NetWorth);
             *
             * var networthesRadiant = radiant.Select(member => Math.Round(member.Player.NetWorth / networthRadiant * 100, 1));
             * var networthesDire = dire.Select(member => Math.Round(member.Player.NetWorth / networthDire * 100, 1));
             *
             * Percentages = networthesRadiant.Concat(networthesDire);*/

            Networthes = entry.Members.Select(m => m.Player.NetWorth);
        }
Exemple #11
0
        public bool EventPredicator(CombatLogEntry entry)
        {
            if (entry.Type != CombatLogEntryTypes.Gold)
            {
                return(false);
            }

            var gold = entry as CombatLogEntryGold;

            if (gold.GoldReason != GoldReason.HeroKill)
            {
                return(false);
            }

            return(true);
        }
Exemple #12
0
        public bool EventPredicator(CombatLogEntry entry)
        {
            if (entry.Type != CombatLogEntryTypes.Item)
            {
                return(false);
            }

            var item = (CombatLogEntryItem)entry;

            if (item.Inflictor != "item_black_king_bar")
            {
                return(false);
            }

            _hero = item.AttackerName;

            return(true);
        }
Exemple #13
0
        public void Execute(EyeStateEntry entry, CombatLogEntry combatLogEntry)
        {
            var item = (CombatLogEntryItem)combatLogEntry;

            var seconds = 10;

            switch (item.AbilityLevel)
            {
            case 1:
                seconds = 9;
                break;

            case 2:
                seconds = 8;
                break;

            case 3:
                seconds = 7;
                break;

            case 4:
                seconds = 6;
                break;

            case 5:
                seconds = 5;
                break;

            case 6:
                seconds = 5;
                break;

            default:
                break;
            }

            var args = new BkbUsedEventArgs
            {
                Member  = entry.Members.SearchByHeroName(_hero),
                Seconds = seconds
            };

            OnBkbUsed(args);
        }
Exemple #14
0
 public void Add(CombatLogEntry entry)
 {
     _combatLogList.Add(entry);
     if ((entry.SourceId == Assets.Scripts.Manager.NakamaManager.Instance.Session.UserId || entry.DestinationId == Assets.Scripts.Manager.NakamaManager.Instance.Session.UserId) && entry.TypeCase == CombatLogEntry.TypeOneofCase.Damage)
     {
         if (entry.Damage.Critical > 0)
         {
             OnNewDamage?.Invoke(entry.SourceId, new FloatingDamageEvent {
                 Target = entry.DestinationId, Value = entry.Damage.Amount + entry.Damage.Critical, Critical = true
             });
         }
         else
         {
             OnNewDamage?.Invoke(entry.SourceId, new FloatingDamageEvent {
                 Target = entry.DestinationId, Value = entry.Damage.Amount, Critical = false
             });
         }
     }
 }
Exemple #15
0
        public void FullDBHelper()
        {
            IDBHelper db = new DBHelper_InMemory.DBHelper();

            db.Init();

            Fitting firstFitting     = new Fitting();
            string  firstFittingName = "First Fitting Name";

            firstFitting.Name = firstFittingName;

            db.CreateFitting(firstFitting);

            var getFirstFitting = db.GetFitting(firstFittingName);

            Assert.AreEqual(getFirstFitting.Name.ToUpperInvariant(), firstFittingName.ToUpperInvariant());

            var allFittings = db.GetAllFittings();

            getFirstFitting = allFittings[0];
            Assert.AreEqual(getFirstFitting.Name.ToUpperInvariant(), firstFittingName.ToUpperInvariant());

            CombatLogEntry firstCombatLogEntry     = new CombatLogEntry();
            string         firstCombatLogEntryName = "First Combat Log Entry Name";

            firstCombatLogEntry.Name = firstCombatLogEntryName;

            db.CreateCombatLogEntry(firstFittingName, firstCombatLogEntry);

            var getCombatLogEntry = db.GetCombatLogEntry(firstCombatLogEntryName);

            Assert.AreEqual(getCombatLogEntry.Name.ToUpperInvariant(), firstCombatLogEntryName.ToUpperInvariant());

            CombatLogEntry secondCombatLogEntry     = new CombatLogEntry();
            string         secondCombatLogEntryName = "Second Combat Log Entry Name";

            secondCombatLogEntry.Name = secondCombatLogEntryName;

            db.CreateCombatLogEntry(firstFittingName, secondCombatLogEntry);

            getCombatLogEntry = db.GetCombatLogEntry(secondCombatLogEntryName);
            Assert.AreEqual(getCombatLogEntry.Name.ToUpperInvariant(), secondCombatLogEntryName.ToUpperInvariant());
        }
Exemple #16
0
        private static void CombatLogEventReceived(object sender, CombatLogEntry entry)
        {
            var stateEntry = _eyeStateIntegrator.StateEntry;

            if (entry.Type == CombatLogEntryTypes.Damage)
            {
                var entryDamage = entry as CombatLogEntryDamage;

                var attacker = stateEntry.Members.SearchByHeroName(entryDamage.AttackerName);
                if (attacker == null)
                {
                    return;
                }

                var target = stateEntry.Members.SearchByHeroName(entryDamage.Target);
                Console.WriteLine($"{attacker.Player.Name}[{attacker.Hero.Name}] hit {(target != null ? target.Player.Name + $"[{target.Hero.Name}]" : entryDamage.Target)}");
            }

            /*if (entry.Type == CombatLogEntryTypes.ModifierAdd ||
             *  entry.Type == CombatLogEntryTypes.ModifierRemove)
             * {
             *  var entryModifierChanged = entry as CombatLogEntryModifierAdd;
             *
             *  var member = stateEntry.Members.SearchByHeroName(entryModifierChanged.Target);
             *  if(member == null) return;
             *
             *  var name = member.Hero.Name;
             *  var modifiers = string.Join(", ", member.Modifiers.ActiveModifiers.Select(m => m.Name));
             *
             *
             *  Console.SetCursorPosition(0, member.Index);
             *  Console.Write(" ".PadLeft(Console.LargestWindowWidth - 1));
             *  Console.SetCursorPosition(0, member.Index + 1);
             *  Console.Write(" ".PadLeft(Console.LargestWindowWidth - 1));
             *
             *
             *  Console.SetCursorPosition(0, member.Index * 2);
             *  Console.Write(member.Hero.Alive ?
             *      $"{name} have {modifiers}!" :
             *      $"{name} dead!");
             *
             * }*/
        }
Exemple #17
0
        private void CombatLogEventReceived(object sender, CombatLogEntry combatLogEntry)
        {
            AddToken(combatLogEntry.Token);

            if (combatLogEntry.Token != CurrentToken)
            {
                return;
            }

            var combatlogEvents = _events.Where(e => e is IEyeStateComatLogEvent);

            foreach (IEyeStateComatLogEvent combatlogEvent in combatlogEvents)
            {
                if (combatlogEvent.EventPredicator(combatLogEntry))
                {
                    combatlogEvent.Execute(_entry, combatLogEntry);
                }
            }
        }
Exemple #18
0
        private void CombatLogDataReceived(object sender, CombatLogEntry e)
        {
            if (!IsConnected)
            {
                return;
            }

            e.Token = _token;
            var json = JsonConvert.SerializeObject(e);

            var packet = new NetPacket();

            packet.Write(0);
            packet.Write(json);

            Send(packet);

            //Trace.WriteLine("CombatLog sended");
        }
Exemple #19
0
        public bool EventPredicator(CombatLogEntry entry)
        {
            var modifierAdd = entry as CombatLogEntryModifierAdd;

            if (modifierAdd == null)
            {
                return(false);
            }
            if (modifierAdd.Inflictor != "modifier_smoke_of_deceit")
            {
                return(false);
            }
            if (!modifierAdd.Target.StartsWith("npc_dota_hero"))
            {
                return(false);
            }

            _hero = modifierAdd.Target;
            return(true);
        }
Exemple #20
0
        public void DeleteCombatLogEntry(string combatLogEntryName)
        {
            var query = from Fitting fitting in _fittings.Values
                        from CombatLogEntry combatLogEntry in fitting.CombatLogEntries
                        where combatLogEntry.Name == combatLogEntryName
                        select fitting;
            var            fittingContainer = query.First <Fitting>();
            CombatLogEntry toDelete         = null;

            foreach (CombatLogEntry combatLogEntry in fittingContainer.CombatLogEntries)
            {
                if (combatLogEntry.Name == combatLogEntryName)
                {
                    toDelete = combatLogEntry;
                }
            }
            if (!(toDelete == null))
            {
                fittingContainer.CombatLogEntries.Remove(toDelete);
            }
        }
Exemple #21
0
        public bool EventPredicator(CombatLogEntry entry)
        {
            var modifierAdd = entry as CombatLogEntryModifierAdd;

            if (modifierAdd == null)
            {
                return(false);
            }

            if (!modifierAdd.Inflictor.StartsWith("modifier_rune"))
            {
                return(false);
            }
            if (!modifierAdd.Target.StartsWith("npc_dota_hero"))
            {
                return(false);
            }

            _hero = modifierAdd.Target;
            _rune = modifierAdd.Inflictor.Replace("modifier_rune_", "");
            return(true);
        }
    public static void Log(CombatLogMessageType type, string message) // Establishes how a Log should behave in the Combat UI
    {
        var entry = new CombatLogEntry();

        entry.CombatLogMessageType = type;
        entry.LogTime       = DateTime.Now;
        entry.LogTimeString = GetFormatedDate(entry.LogTime);
        entry.LogMessage    = message;

        AddEntry(entry);

        if (UseDebugLog) // In case there is an error with broadcasting messages in the CombatLog
        {
            switch (type)
            {
            case CombatLogMessageType.Error: Debug.LogError(message); break;

            case CombatLogMessageType.Warning: Debug.LogWarning(message); break;

            default: Debug.LogWarning(message); break;
            }
        }

        if (OrderDesc)
        {
            OrderDescending();
        }
        else
        {
            OrderAscending();
        }
        if (LogEntries.Count > MaxLogEntries)
        {
            RemoveEntry(MaxLogEntries);
        }
    }
Exemple #23
0
 public void Execute(EyeStateEntry entry, CombatLogEntry combatLogEntry)
 {
     HeroesDamage = entry.Members.Select(m => m.Player.HeroDamage);
 }
Exemple #24
0
 public bool EventPredicator(CombatLogEntry entry)
 {
     return(true);
 }
Exemple #25
0
 public void Execute(EyeStateEntry entry, CombatLogEntry combatLogEntry)
 {
     OnGameEnded();
 }
 public void Execute(EyeStateEntry entry, CombatLogEntry combatLogEntry)
 {
     OnStateChanged(_state);
 }
Exemple #27
0
 protected virtual void OnCombatLogReceived(CombatLogEntry e)
 {
     CombatLogReceived?.Invoke(this, e);
 }
Exemple #28
0
 private void OnCombatLogReceived(object sender, CombatLogEntry entry)
 {
     OnCombatLogReceived(entry);
 }
Exemple #29
0
        public static CombatLogEntry ParseRow(string RawEvent, DateTime timeStamp)
        {
            CombatLogEntry thisEntry = new CombatLogEntry();
            string[] eventParameters = RawEvent.Split(',');

            thisEntry.TimeStamp = timeStamp;
            thisEntry.EventType = eventParameters[0];
            thisEntry.SrcGuid = eventParameters[1];
            thisEntry.DestGuid = eventParameters[4];

            int baseParam = 7;
            string[] eventTypeSplit = thisEntry.EventType.Split('_');
            int next = 1;

            switch (eventTypeSplit[0])
            {
                case "SWING":
                    break;
                case "ENVIRONMENTAL":
                    baseParam = 8;
                    break;
                case "DAMAGE":
                    if (eventTypeSplit.Length >= 3)
                    {
                        eventTypeSplit[2] = "MISSED";
                        next = 2;
                    }
                    else
                        eventTypeSplit[1] = "DAMAGE";
                    baseParam = 10;
                    thisEntry.SpellName = eventParameters[8].Trim('"');
                    thisEntry.SpellSchool = eventParameters[9];
                    break;
                case "SPELL":
                    if (eventTypeSplit[1] == "PERIODIC" || eventTypeSplit[1] == "BUILDING")
                        next = 2;
                    baseParam = 10;
                    thisEntry.SpellID = eventParameters[7];
                    thisEntry.SpellName = eventParameters[8].Trim('"');
                    thisEntry.SpellSchool = eventParameters[9];
                    break;
                case "RANGE":
                    if (eventTypeSplit[1] == "PERIODIC" || eventTypeSplit[1] == "BUILDING")
                        next = 2;
                    baseParam = 10;
                    thisEntry.SpellID = eventParameters[7];
                    thisEntry.SpellName = eventParameters[8].Trim('"');
                    thisEntry.SpellSchool = eventParameters[9];
                    break;
            }
            switch (eventTypeSplit[next])
            {
                case "DAMAGE":
                    thisEntry.Damage = Convert.ToInt32(eventParameters[baseParam]);
                    thisEntry.Overkill = Convert.ToInt32(eventParameters[baseParam + 1]);
                    thisEntry.DamageSchool = eventParameters[baseParam + 2];
                    thisEntry.Resisted = Convert.ToInt32(eventParameters[baseParam + 3]);
                    thisEntry.Blocked = Convert.ToInt32(eventParameters[baseParam + 4]);
                    thisEntry.Absorbed = Convert.ToInt32(eventParameters[baseParam + 5]);
                    if (eventParameters[baseParam + 6] == "1")
                        thisEntry.Critical = true;
                    else
                        thisEntry.Critical = false;
                    break;
                case "MISSED":
                    thisEntry.MissType = eventParameters[baseParam];
                    if (eventParameters.Length == 9)
                        thisEntry.AmountMissed = Convert.ToInt32(eventParameters[baseParam + 1]);
                    break;
                case "HEAL":
                    thisEntry.Healing = Convert.ToInt32(eventParameters[baseParam]);
                    thisEntry.Overhealing = Convert.ToInt32(eventParameters[baseParam + 1]);
                    if (eventParameters[baseParam + 2] == "1")
                        thisEntry.Critical = true;
                    else
                        thisEntry.Critical = false;
                    break;
                case "ENERGIZE":
                    thisEntry.EnergizeAmount = Convert.ToInt32(eventParameters[baseParam]);
                    thisEntry.PowerType = eventParameters[baseParam + 1];
                    break;
                case "DRAIN":
                    thisEntry.EnergizeAmount = Convert.ToInt32(eventParameters[baseParam]) * -1;
                    thisEntry.PowerType = eventParameters[baseParam + 1];
                    thisEntry.ExtraAmount = Convert.ToInt32(eventParameters[baseParam + 2]);
                    break;
                case "LEECH":
                    thisEntry.EnergizeAmount = Convert.ToInt32(eventParameters[baseParam]) * -1;
                    thisEntry.PowerType = eventParameters[baseParam + 1];
                    thisEntry.ExtraAmount = Convert.ToInt32(eventParameters[baseParam + 2]);
                    break;
                case "INTERRUPT":
                    thisEntry.ExtraSpellName = eventParameters[baseParam + 1];
                    thisEntry.ExtraSpellSchool = eventParameters[baseParam + 2];
                    break;
                case "DISPEL":
                    thisEntry.ExtraSpellName = eventParameters[baseParam + 1];
                    thisEntry.ExtraSpellSchool = eventParameters[baseParam + 2];
                    if (eventTypeSplit.Length < next + 2)
                        thisEntry.AuraType = eventParameters[baseParam + 3];
                    break;
                case "STOLEN":
                    thisEntry.ExtraSpellName = eventParameters[baseParam + 1];
                    thisEntry.ExtraSpellSchool = eventParameters[baseParam + 2];
                    thisEntry.AuraType = eventParameters[baseParam + 3];
                    break;
                case "EXTRA":
                    thisEntry.ExtraAttacks = Convert.ToInt32(eventParameters[baseParam]);
                    break;
                case "AURA":
                    if (eventTypeSplit[next + 1] == "BROKEN" && eventTypeSplit.Length >= next + 3)
                    {
                        thisEntry.ExtraSpellName = eventParameters[baseParam + 1];
                        thisEntry.ExtraSpellSchool = eventParameters[baseParam + 2];
                        thisEntry.AuraType = eventParameters[baseParam + 3];
                    }
                    if (eventTypeSplit[next + 1] == "APPLIED")
                        thisEntry.Applied = 1;
                    if (eventTypeSplit[next + 1] == "REMOVED")
                        thisEntry.Applied = -1;
                    thisEntry.AuraType = eventParameters[baseParam];
                    if (eventTypeSplit.Length >= next + 3 && eventTypeSplit[next + 2] == "DOSE")
                        thisEntry.Doses = Convert.ToInt32(eventParameters[baseParam + 1]);
                    break;
                case "CAST":
                    if (eventTypeSplit[next + 1] == "FAILED")
                        thisEntry.FailedType = eventParameters[baseParam];
                    break;
            }
            return thisEntry;
        }
Exemple #30
0
 public void UpdateCombatLogEntry(string combatLogEntryName, CombatLogEntry combatLogEntry)
 {
     //Todo
 }
Exemple #31
0
 public void CreateCombatLogEntry(string fittingName, CombatLogEntry combatLogEntry)
 {
     //TODO
 }