Exemplo n.º 1
0
        /// <summary>
        /// </summary>
        private void ProcessLoot(Event e)
        {
            Match matches;

            switch (Constants.GameLanguage)
            {
            case "French":
                matches = PlayerRegEx.ObtainsFr.Match(e.ChatLogEntry.Line);
                break;

            case "Japanese":
                matches = PlayerRegEx.ObtainsJa.Match(e.ChatLogEntry.Line);
                break;

            case "German":
                matches = PlayerRegEx.ObtainsDe.Match(e.ChatLogEntry.Line);
                break;

            default:
                matches = PlayerRegEx.ObtainsEn.Match(e.ChatLogEntry.Line);
                break;
            }
            if (!matches.Success)
            {
                ParsingLogHelper.Log(Logger, "Loot", e);
                return;
            }
            var thing = StringHelper.TitleCase(matches.Groups["item"].Value);

            AttachDropToPartyMonster(thing, e);
        }
Exemplo n.º 2
0
        /// <summary>
        /// </summary>
        private void ProcessDefeated(Event e)
        {
            Match matches;
            var   you = Constants.CharacterName;

            switch (Constants.GameLanguage)
            {
            case "French":
                matches = PlayerRegEx.DefeatsFr.Match(e.ChatLogItem.Line);
                break;

            case "Japanese":
                matches = PlayerRegEx.DefeatsJa.Match(e.ChatLogItem.Line);
                break;

            case "German":
                matches = PlayerRegEx.DefeatsDe.Match(e.ChatLogItem.Line);
                break;

            case "Chinese":
                matches = PlayerRegEx.DefeatsZh.Match(e.ChatLogItem.Line);
                break;

            default:
                matches = PlayerRegEx.DefeatsEn.Match(e.ChatLogItem.Line);
                break;
            }

            if (!matches.Success)
            {
                this.ParseControl.Timeline.PublishTimelineEvent(TimelineEventType.PartyMonsterKilled, string.Empty);
                ParsingLogHelper.Log(Logger, "Defeat", e);
                return;
            }

            Group target = matches.Groups["target"];
            Group source = matches.Groups["source"];

            if (!target.Success)
            {
                return;
            }

            if (this.ParseControl.Timeline.Party.HasGroup(target.Value) || Regex.IsMatch(target.Value, this.Expressions.You) || target.Value == you)
            {
                return;
            }

            var targetName = target.Value.ToTitleCase();
            var sourceName = (source.Success
                                  ? source.Value
                                  : "Unknown").ToTitleCase();

            this.AddKillToPartyMonster(targetName, sourceName);
        }
Exemplo n.º 3
0
        private static void ProcessDetrimental(Event e, Expressions exp)
        {
            var line = new Line(e.ChatLogEntry)
            {
                EventDirection = e.Direction,
                EventSubject   = e.Subject,
                EventType      = e.Type
            };
            var detrimental = Regex.Match("ph", @"^\.$");

            if (detrimental.Success)
            {
                return;
            }
            ParsingLogHelper.Log(Logger, "Detrimental", e, exp);
        }
Exemplo n.º 4
0
        /// <summary>
        /// </summary>
        /// <param name="thing"> </param>
        /// <param name="e"></param>
        private void AttachDropToPartyMonster(string thing, Event e)
        {
            var monsterName = ParseControl.Timeline.FightingRightNow ? ParseControl.Timeline.LastEngaged : "";

            if (ParseControl.Instance.Timeline.FightingRightNow)
            {
                Fight fight;
                if (ParseControl.Timeline.Fights.TryGet(ParseControl.Timeline.LastEngaged, out fight))
                {
                    monsterName = fight.MonsterName;
                    if (monsterName.Replace(" ", "") != "")
                    {
                        var monsterGroup = ParseControl.Timeline.GetSetMonster(monsterName);
                        monsterGroup.SetDrop(thing);
                    }
                }
            }
            else
            {
                ParsingLogHelper.Log(Logger, "Loot.NoKillInLastThreeSeconds", e);
            }
        }
Exemplo n.º 5
0
        private static void ProcessActions(Event e, Expressions exp)
        {
            var line = new Line(e.ChatLogEntry)
            {
                EventDirection = e.Direction,
                EventSubject   = e.Subject,
                EventType      = e.Type
            };

            LineHelper.SetTimelineTypes(ref line);
            if (LineHelper.IsIgnored(line))
            {
                return;
            }
            var actions = Regex.Match("ph", @"^\.$");

            switch (e.Subject)
            {
            case EventSubject.You:
                switch (e.Direction)
                {
                // casts/uses
                case EventDirection.Self:
                    actions = exp.pActions;
                    if (actions.Success)
                    {
                        line.Source = You;
                        UpdateActions(actions, line, exp, FilterType.You);
                    }
                    break;
                }
                break;

            case EventSubject.Pet:
                switch (e.Direction)
                {
                // casts/uses
                case EventDirection.Self:
                    actions = exp.pActions;
                    if (actions.Success)
                    {
                        UpdateActions(actions, line, exp, FilterType.Pet);
                    }
                    break;
                }
                break;

            case EventSubject.Party:
                switch (e.Direction)
                {
                // casts/uses
                case EventDirection.Self:
                    actions = exp.pActions;
                    if (actions.Success)
                    {
                        UpdateActions(actions, line, exp, FilterType.Party);
                    }
                    break;
                }
                break;

            case EventSubject.PetParty:
                switch (e.Direction)
                {
                // casts/uses
                case EventDirection.Self:
                    actions = exp.pActions;
                    if (actions.Success)
                    {
                        UpdateActions(actions, line, exp, FilterType.PetParty);
                    }
                    break;
                }
                break;

            case EventSubject.Alliance:
                switch (e.Direction)
                {
                // casts/uses
                case EventDirection.Self:
                    actions = exp.pActions;
                    if (actions.Success)
                    {
                        UpdateActions(actions, line, exp, FilterType.Alliance);
                    }
                    break;
                }
                break;

            case EventSubject.PetAlliance:
                switch (e.Direction)
                {
                // casts/uses
                case EventDirection.Self:
                    actions = exp.pActions;
                    if (actions.Success)
                    {
                        UpdateActions(actions, line, exp, FilterType.PetAlliance);
                    }
                    break;
                }
                break;

            case EventSubject.Other:
                switch (e.Direction)
                {
                // casts/uses
                case EventDirection.Self:
                    actions = exp.pActions;
                    if (actions.Success)
                    {
                        UpdateActions(actions, line, exp, FilterType.Other);
                    }
                    break;
                }
                break;

            case EventSubject.PetOther:
                switch (e.Direction)
                {
                // casts/uses
                case EventDirection.Self:
                    actions = exp.pActions;
                    if (actions.Success)
                    {
                        UpdateActions(actions, line, exp, FilterType.PetOther);
                    }
                    break;
                }
                break;

            case EventSubject.Engaged:
            case EventSubject.UnEngaged:
                switch (e.Direction)
                {
                case EventDirection.Self:
                    actions = exp.mActions;
                    if (actions.Success)
                    {
                        _lastNameMonster   = StringHelper.TitleCase(Convert.ToString(actions.Groups["source"].Value));
                        _lastActionMonster = StringHelper.TitleCase(Convert.ToString(actions.Groups["action"].Value));
                        UpdateActionsMonster(actions, line, exp, FilterType.MonsterParty);
                    }
                    break;
                }
                break;
            }
            if (actions.Success)
            {
                return;
            }
            ParsingLogHelper.Log(Logger, "Action", e, exp);
        }
Exemplo n.º 6
0
        private static void ProcessBeneficial(Event e, Expressions exp)
        {
            var line = new Line(e.ChatLogEntry)
            {
                EventDirection = e.Direction,
                EventSubject   = e.Subject,
                EventType      = e.Type
            };

            LineHelper.SetTimelineTypes(ref line);
            if (LineHelper.IsIgnored(line))
            {
                return;
            }
            var beneficial = Regex.Match("ph", @"^\.$");

            switch (e.Subject)
            {
            case EventSubject.You:
                switch (e.Direction)
                {
                case EventDirection.Self:
                    line.Target = You;
                    break;
                }
                beneficial = exp.pBeneficialGain;
                if (beneficial.Success)
                {
                    line.Source = You;
                    UpdateBeneficialGain(beneficial, line, exp, FilterType.You);
                }
                break;

            case EventSubject.Pet:
                beneficial = exp.pBeneficialGain;
                if (beneficial.Success)
                {
                    line.Source = _lastNamePet;
                    UpdateBeneficialGain(beneficial, line, exp, FilterType.Pet);
                }
                break;

            case EventSubject.Party:
                beneficial = exp.pBeneficialGain;
                if (beneficial.Success)
                {
                    line.Source = _lastNamePartyFrom;
                    UpdateBeneficialGain(beneficial, line, exp, FilterType.Party);
                }
                break;

            case EventSubject.PetParty:
                beneficial = exp.pBeneficialGain;
                if (beneficial.Success)
                {
                    line.Source = _lastNamePetPartyFrom;
                    UpdateBeneficialGain(beneficial, line, exp, FilterType.PetParty);
                }
                break;

            case EventSubject.Alliance:
                beneficial = exp.pBeneficialGain;
                if (beneficial.Success)
                {
                    line.Source = _lastNameAllianceFrom;
                    UpdateBeneficialGain(beneficial, line, exp, FilterType.Alliance);
                }
                break;

            case EventSubject.PetAlliance:
                beneficial = exp.pBeneficialGain;
                if (beneficial.Success)
                {
                    line.Source = _lastNamePetAllianceFrom;
                    UpdateBeneficialGain(beneficial, line, exp, FilterType.PetAlliance);
                }
                break;

            case EventSubject.Other:
                beneficial = exp.pBeneficialGain;
                if (beneficial.Success)
                {
                    line.Source = _lastNameOtherFrom;
                    UpdateBeneficialGain(beneficial, line, exp, FilterType.Other);
                }
                break;

            case EventSubject.PetOther:
                beneficial = exp.pBeneficialGain;
                if (beneficial.Success)
                {
                    line.Source = _lastNamePetOtherFrom;
                    UpdateBeneficialGain(beneficial, line, exp, FilterType.PetOther);
                }
                break;
            }
            if (beneficial.Success)
            {
                return;
            }
            ParsingLogHelper.Log(Logger, "Beneficial", e, exp);
        }
Exemplo n.º 7
0
        private static void ProcessItems(Event e, Expressions exp)
        {
            var line = new Line(e.ChatLogItem)
            {
                EventDirection = e.Direction,
                EventSubject   = e.Subject,
                EventType      = e.Type
            };

            LineHelper.SetTimelineTypes(ref line);
            if (LineHelper.IsIgnored(line))
            {
                return;
            }

            Match items = Regex.Match("ph", @"^\.$");

            switch (e.Subject)
            {
            case EventSubject.You:
                switch (e.Direction)
                {
                case EventDirection.Self:
                    items = exp.pItems;
                    if (items.Success)
                    {
                        line.Source    = You;
                        _lastActionYou = Convert.ToString(items.Groups["item"].Value).ToTitleCase();
                        UpdateItems(items, line, exp, FilterType.You);
                    }

                    break;
                }

                break;

            case EventSubject.Pet:
                switch (e.Direction)
                {
                case EventDirection.Self:
                    items = exp.pItems;
                    if (items.Success)
                    {
                        line.Source    = Convert.ToString(items.Groups["source"].Value);
                        _lastNamePet   = line.Source;
                        _lastActionPet = Convert.ToString(items.Groups["item"].Value).ToTitleCase();
                    }

                    break;
                }

                break;

            case EventSubject.Party:
                switch (e.Direction)
                {
                case EventDirection.Self:
                    items = exp.pItems;
                    if (items.Success)
                    {
                        line.Source          = Convert.ToString(items.Groups["source"].Value);
                        _lastNamePartyFrom   = line.Source;
                        _lastActionPartyFrom = Convert.ToString(items.Groups["item"].Value).ToTitleCase();
                        UpdateItems(items, line, exp, FilterType.Party);
                    }

                    break;
                }

                break;

            case EventSubject.PetParty:
                switch (e.Direction)
                {
                case EventDirection.Self:
                    items = exp.pItems;
                    if (items.Success)
                    {
                        line.Source           = Convert.ToString(items.Groups["source"].Value);
                        _lastNamePetPartyFrom = line.Source;
                        _lastActionPet        = Convert.ToString(items.Groups["item"].Value).ToTitleCase();
                    }

                    break;
                }

                break;

            case EventSubject.Alliance:
                switch (e.Direction)
                {
                case EventDirection.Self:
                    items = exp.pItems;
                    if (items.Success)
                    {
                        line.Source             = Convert.ToString(items.Groups["source"].Value);
                        _lastNameAllianceFrom   = line.Source;
                        _lastActionAllianceFrom = Convert.ToString(items.Groups["item"].Value).ToTitleCase();
                        UpdateItems(items, line, exp, FilterType.Alliance);
                    }

                    break;
                }

                break;

            case EventSubject.PetAlliance:
                switch (e.Direction)
                {
                case EventDirection.Self:
                    items = exp.pItems;
                    if (items.Success)
                    {
                        line.Source = Convert.ToString(items.Groups["source"].Value);
                        _lastNamePetAllianceFrom = line.Source;
                        _lastActionPet           = Convert.ToString(items.Groups["item"].Value).ToTitleCase();
                    }

                    break;
                }

                break;

            case EventSubject.Other:
                switch (e.Direction)
                {
                case EventDirection.Self:
                    items = exp.pItems;
                    if (items.Success)
                    {
                        line.Source          = Convert.ToString(items.Groups["source"].Value);
                        _lastNameOtherFrom   = line.Source;
                        _lastActionOtherFrom = Convert.ToString(items.Groups["item"].Value).ToTitleCase();
                        UpdateItems(items, line, exp, FilterType.Other);
                    }

                    break;
                }

                break;

            case EventSubject.PetOther:
                switch (e.Direction)
                {
                case EventDirection.Self:
                    items = exp.pItems;
                    if (items.Success)
                    {
                        line.Source           = Convert.ToString(items.Groups["source"].Value);
                        _lastNamePetOtherFrom = line.Source;
                        _lastActionPet        = Convert.ToString(items.Groups["item"].Value).ToTitleCase();
                    }

                    break;
                }

                break;

            case EventSubject.Engaged:
            case EventSubject.UnEngaged:
                break;
            }

            if (items.Success)
            {
                return;
            }

            ParsingLogHelper.Log(Logger, "Item", e, exp);
        }
Exemplo n.º 8
0
 protected override void HandleUnknownEvent(Event e)
 {
     ParsingLogHelper.Log(Logger, "UnknownEvent", e);
 }
        private static void ProcessDamage(Event e, Expressions exp)
        {
            var line = new Line(e.ChatLogEntry)
            {
                EventDirection = e.Direction,
                EventSubject   = e.Subject,
                EventType      = e.Type
            };

            LineHelper.SetTimelineTypes(ref line);
            if (LineHelper.IsIgnored(line))
            {
                return;
            }
            var damage = Regex.Match("ph", @"^\.$");

            switch (e.Subject)
            {
            case EventSubject.You:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    damage = exp.pDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = You;
                        UpdateDamage(damage, line, exp, FilterType.You);
                        break;

                    case false:
                        damage = exp.pDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionYouIsAttack = true;
                            line.Source            = You;
                            UpdateDamage(damage, line, exp, FilterType.You);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.Pet:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    damage = exp.pDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNamePet;
                        UpdateDamage(damage, line, exp, FilterType.Pet);
                        break;

                    case false:
                        damage = exp.pDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionPetIsAttack = true;
                            UpdateDamage(damage, line, exp, FilterType.Pet);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.Party:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    damage = exp.pDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNamePartyFrom;
                        UpdateDamage(damage, line, exp, FilterType.Party);
                        break;

                    case false:
                        damage = exp.pDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionPartyIsAttack = true;
                            UpdateDamage(damage, line, exp, FilterType.Party);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.PetParty:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    damage = exp.pDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNamePetPartyFrom;
                        UpdateDamage(damage, line, exp, FilterType.PetParty);
                        break;

                    case false:
                        damage = exp.pDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionPetPartyIsAttack = true;
                            UpdateDamage(damage, line, exp, FilterType.PetParty);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.Alliance:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    damage = exp.pDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNameAllianceFrom;
                        UpdateDamage(damage, line, exp, FilterType.Alliance);
                        break;

                    case false:
                        damage = exp.pDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionAllianceIsAttack = true;
                            UpdateDamage(damage, line, exp, FilterType.Alliance);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.PetAlliance:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    damage = exp.pDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNamePetAllianceFrom;
                        UpdateDamage(damage, line, exp, FilterType.PetAlliance);
                        break;

                    case false:
                        damage = exp.pDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionPetAllianceIsAttack = true;
                            UpdateDamage(damage, line, exp, FilterType.PetAlliance);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.Other:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    damage = exp.pDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNameOtherFrom;
                        UpdateDamage(damage, line, exp, FilterType.Other);
                        break;

                    case false:
                        damage = exp.pDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionOtherIsAttack = true;
                            UpdateDamage(damage, line, exp, FilterType.Other);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.PetOther:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    damage = exp.pDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNamePetOtherFrom;
                        UpdateDamage(damage, line, exp, FilterType.PetOther);
                        break;

                    case false:
                        damage = exp.pDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionPetOtherIsAttack = true;
                            UpdateDamage(damage, line, exp, FilterType.PetOther);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.Engaged:
            case EventSubject.UnEngaged:
                switch (e.Direction)
                {
                case EventDirection.You:
                    damage = exp.mDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = You;
                        UpdateDamageMonster(damage, line, exp, FilterType.You);
                        break;

                    case false:
                        damage = exp.mDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionYouIsAttack = true;
                            line.Target            = You;
                            UpdateDamageMonster(damage, line, exp, FilterType.You);
                        }
                        break;
                    }
                    break;

                case EventDirection.Pet:
                    damage = exp.mDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = _lastNamePet;
                        UpdateDamageMonster(damage, line, exp, FilterType.Pet);
                        break;

                    case false:
                        damage = exp.mDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionPetIsAttack = true;
                            UpdateDamageMonster(damage, line, exp, FilterType.Pet);
                        }
                        break;
                    }
                    break;

                case EventDirection.Party:
                    damage = exp.mDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = _lastNamePartyTo;
                        UpdateDamageMonster(damage, line, exp, FilterType.Party);
                        break;

                    case false:
                        damage = exp.mDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionPartyIsAttack = true;
                            UpdateDamageMonster(damage, line, exp, FilterType.Party);
                        }
                        break;
                    }
                    break;

                case EventDirection.PetParty:
                    damage = exp.mDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = _lastNamePetPartyTo;
                        UpdateDamageMonster(damage, line, exp, FilterType.PetParty);
                        break;

                    case false:
                        damage = exp.mDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionPetPartyIsAttack = true;
                            UpdateDamageMonster(damage, line, exp, FilterType.PetParty);
                        }
                        break;
                    }
                    break;

                case EventDirection.Alliance:
                    damage = exp.mDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = _lastNameAllianceTo;
                        UpdateDamageMonster(damage, line, exp, FilterType.Alliance);
                        break;

                    case false:
                        damage = exp.mDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionAllianceIsAttack = true;
                            UpdateDamageMonster(damage, line, exp, FilterType.Alliance);
                        }
                        break;
                    }
                    break;

                case EventDirection.PetAlliance:
                    damage = exp.mDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = _lastNamePetAllianceTo;
                        UpdateDamageMonster(damage, line, exp, FilterType.PetAlliance);
                        break;

                    case false:
                        damage = exp.mDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionPetAllianceIsAttack = true;
                            UpdateDamageMonster(damage, line, exp, FilterType.PetAlliance);
                        }
                        break;
                    }
                    break;

                case EventDirection.Other:
                    damage = exp.mDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = _lastNameOtherTo;
                        UpdateDamageMonster(damage, line, exp, FilterType.Other);
                        break;

                    case false:
                        damage = exp.mDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionOtherIsAttack = true;
                            UpdateDamageMonster(damage, line, exp, FilterType.Other);
                        }
                        break;
                    }
                    break;

                case EventDirection.PetOther:
                    damage = exp.mDamage;
                    switch (damage.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = _lastNamePetOtherTo;
                        UpdateDamageMonster(damage, line, exp, FilterType.PetOther);
                        break;

                    case false:
                        damage = exp.mDamageAuto;
                        if (damage.Success)
                        {
                            _lastActionPetOtherIsAttack = true;
                            UpdateDamageMonster(damage, line, exp, FilterType.PetOther);
                        }
                        break;
                    }
                    break;
                }
                break;
            }
            if (damage.Success)
            {
                return;
            }
            ParsingLogHelper.Log(Logger, "Damage", e, exp);
        }
Exemplo n.º 10
0
        private static void ProcessFailed(Event e, Expressions exp)
        {
            var line = new Line(e.ChatLogEntry)
            {
                EventDirection = e.Direction,
                EventSubject   = e.Subject,
                EventType      = e.Type
            };

            LineHelper.SetTimelineTypes(ref line);
            if (LineHelper.IsIgnored(line))
            {
                return;
            }
            var failed = Regex.Match("ph", @"^\.$");

            switch (e.Subject)
            {
            case EventSubject.You:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    failed = exp.pFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = You;
                        UpdateFailed(failed, line, exp, FilterType.You);
                        break;

                    case false:
                        failed = exp.pFailedAuto;
                        if (failed.Success)
                        {
                            line.Source = You;
                            UpdateFailed(failed, line, exp, FilterType.You);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.Pet:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    failed = exp.pFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNamePet;
                        UpdateFailed(failed, line, exp, FilterType.Pet);
                        break;

                    case false:
                        failed = exp.pFailedAuto;
                        if (failed.Success)
                        {
                            UpdateFailed(failed, line, exp, FilterType.Pet);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.Party:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    failed = exp.pFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNamePartyFrom;
                        UpdateFailed(failed, line, exp, FilterType.Party);
                        break;

                    case false:
                        failed = exp.pFailedAuto;
                        if (failed.Success)
                        {
                            UpdateFailed(failed, line, exp, FilterType.Party);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.PetParty:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    failed = exp.pFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNamePetPartyFrom;
                        UpdateFailed(failed, line, exp, FilterType.PetParty);
                        break;

                    case false:
                        failed = exp.pFailedAuto;
                        if (failed.Success)
                        {
                            UpdateFailed(failed, line, exp, FilterType.PetParty);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.Alliance:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    failed = exp.pFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNameAllianceFrom;
                        UpdateFailed(failed, line, exp, FilterType.Alliance);
                        break;

                    case false:
                        failed = exp.pFailedAuto;
                        if (failed.Success)
                        {
                            UpdateFailed(failed, line, exp, FilterType.Alliance);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.PetAlliance:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    failed = exp.pFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNamePetAllianceFrom;
                        UpdateFailed(failed, line, exp, FilterType.PetAlliance);
                        break;

                    case false:
                        failed = exp.pFailedAuto;
                        if (failed.Success)
                        {
                            UpdateFailed(failed, line, exp, FilterType.PetAlliance);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.Other:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    failed = exp.pFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNameOtherFrom;
                        UpdateFailed(failed, line, exp, FilterType.Other);
                        break;

                    case false:
                        failed = exp.pFailedAuto;
                        if (failed.Success)
                        {
                            UpdateFailed(failed, line, exp, FilterType.Other);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.PetOther:
                switch (e.Direction)
                {
                case EventDirection.Engaged:
                case EventDirection.UnEngaged:
                    failed = exp.pFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNamePetOtherFrom;
                        UpdateFailed(failed, line, exp, FilterType.PetOther);
                        break;

                    case false:
                        failed = exp.pFailedAuto;
                        if (failed.Success)
                        {
                            UpdateFailed(failed, line, exp, FilterType.PetOther);
                        }
                        break;
                    }
                    break;
                }
                break;

            case EventSubject.Engaged:
            case EventSubject.UnEngaged:
                switch (e.Direction)
                {
                case EventDirection.You:
                    failed = exp.mFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = You;
                        UpdateFailedMonster(failed, line, exp, FilterType.You);
                        break;

                    case false:
                        failed = exp.mFailedAuto;
                        if (failed.Success)
                        {
                            line.Target = You;
                            UpdateFailedMonster(failed, line, exp, FilterType.You);
                        }
                        break;
                    }
                    break;

                case EventDirection.Pet:
                    failed = exp.mFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = _lastNamePet;
                        UpdateFailedMonster(failed, line, exp, FilterType.Pet);
                        break;

                    case false:
                        failed = exp.mFailedAuto;
                        if (failed.Success)
                        {
                            UpdateFailedMonster(failed, line, exp, FilterType.Pet);
                        }
                        break;
                    }
                    break;

                case EventDirection.Party:
                    failed = exp.mFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = _lastNamePartyTo;
                        UpdateFailedMonster(failed, line, exp, FilterType.Party);
                        break;

                    case false:
                        failed = exp.mFailedAuto;
                        if (failed.Success)
                        {
                            UpdateFailedMonster(failed, line, exp, FilterType.Party);
                        }
                        break;
                    }
                    break;

                case EventDirection.PetParty:
                    failed = exp.mFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = _lastNamePetPartyTo;
                        UpdateFailedMonster(failed, line, exp, FilterType.PetParty);
                        break;

                    case false:
                        failed = exp.mFailedAuto;
                        if (failed.Success)
                        {
                            UpdateFailedMonster(failed, line, exp, FilterType.PetParty);
                        }
                        break;
                    }
                    break;

                case EventDirection.Alliance:
                    failed = exp.mFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = _lastNameAllianceTo;
                        UpdateFailedMonster(failed, line, exp, FilterType.Alliance);
                        break;

                    case false:
                        failed = exp.mFailedAuto;
                        if (failed.Success)
                        {
                            UpdateFailedMonster(failed, line, exp, FilterType.Alliance);
                        }
                        break;
                    }
                    break;

                case EventDirection.PetAlliance:
                    failed = exp.mFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = _lastNamePetAllianceTo;
                        UpdateFailedMonster(failed, line, exp, FilterType.PetAlliance);
                        break;

                    case false:
                        failed = exp.mFailedAuto;
                        if (failed.Success)
                        {
                            UpdateFailedMonster(failed, line, exp, FilterType.PetAlliance);
                        }
                        break;
                    }
                    break;

                case EventDirection.Other:
                    failed = exp.mFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = _lastNameOtherTo;
                        UpdateFailedMonster(failed, line, exp, FilterType.Other);
                        break;

                    case false:
                        failed = exp.mFailedAuto;
                        if (failed.Success)
                        {
                            UpdateFailedMonster(failed, line, exp, FilterType.Other);
                        }
                        break;
                    }
                    break;

                case EventDirection.PetOther:
                    failed = exp.mFailed;
                    switch (failed.Success)
                    {
                    case true:
                        line.Source = _lastNameMonster;
                        line.Target = _lastNamePetOtherTo;
                        UpdateFailedMonster(failed, line, exp, FilterType.PetOther);
                        break;

                    case false:
                        failed = exp.mFailedAuto;
                        if (failed.Success)
                        {
                            UpdateFailedMonster(failed, line, exp, FilterType.PetOther);
                        }
                        break;
                    }
                    break;
                }
                break;
            }
            if (failed.Success)
            {
                return;
            }
            ParsingLogHelper.Log(Logger, "Failed", e, exp);
        }
Exemplo n.º 11
0
        private static void ProcessCure(Event e, Expressions exp)
        {
            var line = new Line(e.ChatLogEntry)
            {
                EventDirection = e.Direction,
                EventSubject   = e.Subject,
                EventType      = e.Type
            };

            LineHelper.SetTimelineTypes(ref line);
            if (LineHelper.IsIgnored(line))
            {
                return;
            }
            var cure = Regex.Match("ph", @"^\.$");

            switch (e.Subject)
            {
            case EventSubject.You:
                switch (e.Direction)
                {
                case EventDirection.Self:
                    line.Target = You;
                    break;
                }
                cure = exp.pCure;
                if (cure.Success)
                {
                    line.Source = You;
                    UpdateHealing(cure, line, exp, FilterType.You);
                }
                break;

            case EventSubject.Pet:
                cure = exp.pCure;
                if (cure.Success)
                {
                    line.Source = _lastNamePet;
                    UpdateHealing(cure, line, exp, FilterType.Pet);
                }
                break;

            case EventSubject.Party:
                cure = exp.pCure;
                if (cure.Success)
                {
                    line.Source = _lastNamePartyHealingFrom;
                    UpdateHealing(cure, line, exp, FilterType.Party);
                }
                break;

            case EventSubject.PetParty:
                cure = exp.pCure;
                if (cure.Success)
                {
                    line.Source = _lastNamePetPartyHealingFrom;
                    UpdateHealing(cure, line, exp, FilterType.PetParty);
                }
                break;

            case EventSubject.Alliance:
                cure = exp.pCure;
                if (cure.Success)
                {
                    line.Source = _lastNameAllianceHealingFrom;
                    UpdateHealing(cure, line, exp, FilterType.Alliance);
                }
                break;

            case EventSubject.PetAlliance:
                cure = exp.pCure;
                if (cure.Success)
                {
                    line.Source = _lastNamePetAllianceHealingFrom;
                    UpdateHealing(cure, line, exp, FilterType.PetAlliance);
                }
                break;

            case EventSubject.Other:
                cure = exp.pCure;
                if (cure.Success)
                {
                    line.Source = _lastNameOtherHealingFrom;
                    UpdateHealing(cure, line, exp, FilterType.Other);
                }
                break;

            case EventSubject.PetOther:
                cure = exp.pCure;
                if (cure.Success)
                {
                    line.Source = _lastNamePetOtherHealingFrom;
                    UpdateHealing(cure, line, exp, FilterType.PetOther);
                }
                break;
            }
            if (cure.Success)
            {
                return;
            }
            ParsingLogHelper.Log(Logger, "Cure", e, exp);
        }