private void FFRKProxy_OnBattleEngaged(EventBattleInitiated battle) => this.BeginInvoke((Action)(() =>
 {
     this.BeginPopulateAllDropsListView(battle);
     this.PopulateEnemyInfoListView(battle);
     this.PopulateDropInfoListView(battle);
     this.PopulateAbilityJsonTextBox(battle);
 }));
 private void PopulateEnemyInfoListView(EventBattleInitiated battle)
 {
     this.listViewEnemyInfo.Items.Clear();
     if (battle == null)
     {
         return;
     }
     this.listViewEnemyInfo.View = View.Details;
     if (battle.Battle.Enemies.ToList <BasicEnemyInfo>().Count == 0)
     {
         return;
     }
     lock (FFRKProxy.Instance.Cache.SyncRoot)
     {
         foreach (BasicEnemyInfo enemy in battle.Battle.Enemies)
         {
             List <string> list = new List <string>()
             {
                 "Poison",
                 "Silence",
                 "Paralyze",
                 "Confuse",
                 "Slow",
                 "Stop",
                 "Blind",
                 "Sleep",
                 "Petrify",
                 "Doom",
                 "Instant_KO",
                 "Beserk",
                 "Stun"
             }.Except <string>((IEnumerable <string>)enemy.EnemyStatusImmunity).ToList <string>();
             this.listViewEnemyInfo.Items.Add(new ListViewItem(new string[18]
             {
                 enemy.EnemyName,
                 enemy.EnemyMaxHp.ToString("N0"),
                 enemy.EnemyAtk.ToString("N0"),
                 enemy.EnemyDef.ToString("N0"),
                 enemy.EnemyMag.ToString("N0"),
                 enemy.EnemyRes.ToString("N0"),
                 enemy.EnemyMnd.ToString("N0"),
                 enemy.EnemySpd.ToString("N0"),
                 enemy.EnemyFireDef,
                 enemy.EnemyIceDef,
                 enemy.EnemyLitDef,
                 enemy.EnemyEarthDef,
                 enemy.EnemyWindDef,
                 enemy.EnemyWaterDef,
                 enemy.EnemyHolyDef,
                 enemy.EnemyDarkDef,
                 enemy.EnemyBioDef,
                 string.Join(", ", list.ToArray())
             }));
         }
     }
     foreach (ColumnHeader column in this.listViewEnemyInfo.Columns)
     {
         column.Width = -2;
     }
 }
        public override void Handle(Session Session)
        {
            EventBattleInitiated battle = JsonConvert.DeserializeObject <EventBattleInitiated>(Session.GetResponseBodyAsString());

            FFRKProxy.Instance.GameState.ActiveBattle = battle;
            FFRKProxy.Instance.RaiseBattleInitiated(battle);
        }
        public override void Handle(Session Session)
        {
            GameState gameState = FFRKProxy.Instance.GameState;

            if (gameState.ActiveBattle == null)
            {
                return;
            }
            EventBattleInitiated activeBattle = gameState.ActiveBattle;

            gameState.ActiveBattle = (EventBattleInitiated)null;
            lock (FFRKProxy.Instance.Cache.SyncRoot)
            {
                Key key = new Key()
                {
                    BattleId = activeBattle.Battle.BattleId
                };
                Data data = (Data)null;
                if (FFRKProxy.Instance.Cache.Battles.TryGetValue(key, out data))
                {
                    ++data.Samples;
                    ++data.HistoSamples;
                }
            }
            FFRKProxy.Instance.RaiseBattleComplete(activeBattle);
        }
Пример #5
0
 void FFRKProxy_OnCompleteBattle(EventBattleInitiated battle)
 {
     this.BeginInvoke((Action)(() =>
     {
         PopulateActiveBattleListView(null);
         UpdateAllDropsForLastBattle(battle);
     }));
 }
Пример #6
0
 internal void RaiseBattleComplete(EventBattleInitiated original_battle)
 {
     if (this.OnCompleteBattle == null)
     {
         return;
     }
     this.OnCompleteBattle(original_battle);
 }
Пример #7
0
 internal void RaiseBattleInitiated(EventBattleInitiated battle)
 {
     if (this.OnBattleEngaged == null)
     {
         return;
     }
     this.OnBattleEngaged(battle);
 }
Пример #8
0
        public override void Handle(Session Session)
        {
            string ResponseJson = Session.GetResponseBodyAsString();

            EventBattleInitiated result = JsonConvert.DeserializeObject <EventBattleInitiated>(ResponseJson);

            FFRKProxy.Instance.GameState.ActiveBattle = result;
            FFRKProxy.Instance.RaiseBattleInitiated(result);
        }
Пример #9
0
        private void PopulateEnemyInfoListView(EventBattleInitiated battle)
        {
            listViewEnemyInfo.Items.Clear();
            if (battle == null)
            {
                return;
            }
            else
            {
                listViewEnemyInfo.View = View.Details;

                List <BasicEnemyInfo> enemies = battle.Battle.Enemies.ToList();
                if (enemies.Count == 0)
                {
                    return;
                }
                else
                {
                    lock (FFRKProxy.Instance.Cache.SyncRoot)
                    {
                        foreach (BasicEnemyInfo enemy in battle.Battle.Enemies)
                        {
                            //The below is the "full" list of status effects, however I removed Haste, Shell, Protect, Reflect, and a few other
                            //positive buffs, and also the status effects not yet implemented such as Zombie, Toad, Mini.
                            List <string> AllStatusEffects = new List <String>()
                            {
                                "Poison", "Silence", "Paralyze", "Confuse", "Slow", "Stop",
                                "Blind", "Sleep", "Petrify", "Doom", "Instant_KO", "Beserk",
                                "Sap", "Stun"
                                //,"Haste","Shell","Protect","Regen","Reflect"
                            };
                            //Calculate difference between above set of status effects and the status immunities of enemy.
                            List <string> EnemyStatusWeakness = AllStatusEffects.Except(enemy.EnemyStatusImmunity).ToList();
                            string[]      row =
                            {
                                enemy.EnemyName,
                                enemy.EnemyMaxHp.ToString("N0"),
                                //string.Join(", ",enemy.EnemyElemWeakness.ToArray()),
                                //"test2",
                                //"test3"
                                string.Join(", ",               EnemyStatusWeakness.ToArray()),
                                string.Join(", ",               enemy.EnemyElemWeakness.ToArray()),
                                string.Join(", ",               enemy.EnemyElemResist.ToArray()),
                                string.Join(", ",               enemy.EnemyElemNull.ToArray()),
                                string.Join(", ",               enemy.EnemyElemAbsorb.ToArray())
                            };
                            listViewEnemyInfo.Items.Add(new ListViewItem(row));
                        }
                    }
                    foreach (ColumnHeader column in listViewEnemyInfo.Columns)
                    {
                        column.Width = -2;
                    }
                }
            }
        }
Пример #10
0
 void FFRKProxy_OnBattleEngaged(EventBattleInitiated battle)
 {
     this.BeginInvoke((Action)(() =>
     {
         //PopulateActiveBattleListView(battle);
         BeginPopulateAllDropsListView(battle);
         PopulateEnemyInfoListView(battle);
         PopulateDropInfoListView(battle);
     }));
 }
Пример #11
0
 void FFRKProxy_OnCompleteBattle(EventBattleInitiated battle)
 {
     this.BeginInvoke((Action)(() =>
     {
         PopulateEnemyInfoListView(null);
         PopulateDropInfoListView(null);
         BeginPopulateAllDropsListView(null);
         //PopulateDropInfoListView(null);
         //UpdateAllDropsForLastBattle(battle);
     }));
 }
 private void BeginPopulateAllDropsListView(EventBattleInitiated battle)
 {
     if (battle != null)
     {
     }
     else
     {
         this.listViewPrevDrops.VirtualListSize = 0;
         this.mAllPrevItems.Clear();
         this.mFilteredPrevItems.Collection.Clear();
     }
 }
Пример #13
0
 void BeginPopulateAllDropsListView(EventBattleInitiated battle)
 {
     if (battle != null)
     {
         DbOpFilterDrops op = new DbOpFilterDrops(FFRKProxy.Instance.Database);
         op.Battles.AddValue(battle.Battle.BattleId);
         op.OnRequestComplete += RequestBattleDrops_OnRequestComplete;
         FFRKProxy.Instance.Database.BeginExecuteRequest(op);
     }
     else
     {
         listViewPrevDrops.VirtualListSize = 0;
         mAllPrevItems.Clear();
         mFilteredPrevItems.Collection.Clear();
     }
 }
 private void UpdateAllDropsForLastBattle(EventBattleInitiated battle)
 {
     if (battle == null)
     {
         this.listViewAllDrops.VirtualListSize = 0;
         this.mAllItems.Clear();
         this.mFilteredItems.Collection.Clear();
     }
     else
     {
         foreach (BasicItemDropStats basicItemDropStats in this.mAllItems.Where <BasicItemDropStats>((Func <BasicItemDropStats, bool>)(x => (int)x.BattleId == (int)battle.Battle.BattleId)))
         {
             ++basicItemDropStats.TimesRun;
             ++basicItemDropStats.TimesRunWithHistogram;
         }
         lock (FFRKProxy.Instance.Cache.SyncRoot)
         {
             foreach (DropEvent drop1 in battle.Battle.Drops)
             {
                 DropEvent drop = drop1;
                 if (drop.ItemType != DataEnemyDropItem.DropItemType.Gold && drop.ItemType != DataEnemyDropItem.DropItemType.Materia && drop.ItemType != DataEnemyDropItem.DropItemType.Potion)
                 {
                     BasicItemDropStats basicItemDropStats = this.mAllItems.Find((Predicate <BasicItemDropStats>)(x => (int)x.BattleId == (int)battle.Battle.BattleId && (int)x.ItemId == (int)drop.ItemId));
                     if (basicItemDropStats != null)
                     {
                         ++basicItemDropStats.TotalDrops;
                     }
                     else
                     {
                         EventListBattles activeDungeon = FFRKProxy.Instance.GameState.ActiveDungeon;
                         if (activeDungeon != null)
                         {
                             DataBattle dataBattle = activeDungeon.Battles.Find(x => (int)x.Id == (int)battle.Battle.BattleId);
                             if (dataBattle != null)
                             {
                                 uint   num1 = 1;
                                 uint   num2 = 1;
                                 string name = drop.ItemId.ToString();
                                 FFRKInspector.DataCache.Items.Data data1;
                                 if (FFRKProxy.Instance.Cache.Items.TryGetValue(new FFRKInspector.DataCache.Items.Key()
                                 {
                                     ItemId = drop.ItemId
                                 }, out data1))
                                 {
                                     name = data1.Name;
                                 }
                                 FFRKInspector.DataCache.Battles.Data data2;
                                 if (FFRKProxy.Instance.Cache.Battles.TryGetValue(new FFRKInspector.DataCache.Battles.Key()
                                 {
                                     BattleId = battle.Battle.BattleId
                                 }, out data2))
                                 {
                                     num1 = data2.Samples;
                                     num2 = data2.HistoSamples;
                                 }
                                 this.mAllItems.Add(new BasicItemDropStats()
                                 {
                                     BattleId      = battle.Battle.BattleId,
                                     BattleName    = dataBattle.Name,
                                     BattleStamina = dataBattle.Stamina,
                                     ItemId        = drop.ItemId,
                                     ItemName      = name,
                                     TimesRun      = num1,
                                     TotalDrops    = 1U
                                 });
                             }
                         }
                     }
                 }
             }
         }
         this.RebuildFilteredDropListAndInvalidate();
     }
 }
 private void FFRKProxy_OnCompleteBattle(EventBattleInitiated battle) => this.BeginInvoke((Action)(() =>
 {
     this.PopulateEnemyInfoListView((EventBattleInitiated)null);
     this.PopulateDropInfoListView((EventBattleInitiated)null);
     this.BeginPopulateAllDropsListView((EventBattleInitiated)null);
 }));
        private void PopulateAbilityJsonTextBox(EventBattleInitiated battle)
        {
            this.abilityJsonText.Clear();
            if (battle == null)
            {
                return;
            }
            List <DataBuddyInformation> list = battle.Battle.Buddies.ToList <DataBuddyInformation>();

            list.AddRange((IEnumerable <DataBuddyInformation>)battle.Battle.Supporters.ToList <DataBuddyInformation>());
            if (list.Count == 0)
            {
                return;
            }
            lock (FFRKProxy.Instance.Cache.SyncRoot)
            {
                List <string> stringList = new List <string>();
                foreach (DataBuddyInformation buddyInformation in list)
                {
                    List <DataAbility> abilities = buddyInformation.Abilities;
                    abilities.AddRange((IEnumerable <DataAbility>)buddyInformation.SoulStrikes);
                    foreach (DataAbility dataAbility in abilities)
                    {
                        if (dataAbility.Options.OptionAbilityName != "Attack")
                        {
                            string[] strArray = new string[50];
                            strArray[0]  = (dataAbility.Options.OptionAbilityName += "\t");
                            strArray[1]  = dataAbility.AbilityId.ToString();
                            strArray[2]  = "\t";
                            strArray[3]  = dataAbility.ActionId.ToString();
                            strArray[4]  = "\t";
                            strArray[5]  = dataAbility.CategoryId.ToString();
                            strArray[6]  = "\t";
                            strArray[7]  = dataAbility.ExerciseType.ToString();
                            strArray[8]  = "\t";
                            strArray[9]  = dataAbility.Options.AnimId.ToString();
                            strArray[10] = "\t";
                            strArray[11] = dataAbility.Options.ActiveTargetMethod.ToString();
                            strArray[12] = "\t";
                            strArray[13] = dataAbility.Options.AliasName.ToString();
                            strArray[14] = "\t";
                            strArray[15] = dataAbility.Options.Arg1.ToString();
                            strArray[16] = "\t";
                            strArray[17] = dataAbility.Options.Arg2.ToString();
                            strArray[18] = "\t";
                            strArray[19] = dataAbility.Options.Arg3.ToString();
                            strArray[20] = "\t";
                            strArray[21] = dataAbility.Options.Arg4.ToString();
                            strArray[22] = "\t";
                            strArray[23] = dataAbility.Options.Arg5.ToString();
                            strArray[24] = "\t";
                            strArray[25] = dataAbility.Options.Arg6.ToString();
                            strArray[26] = "\t";
                            strArray[27] = dataAbility.Options.Arg7.ToString();
                            strArray[28] = "\t";
                            strArray[29] = dataAbility.Options.Arg8.ToString();
                            strArray[30] = "\t";
                            strArray[31] = dataAbility.Options.Arg9.ToString();
                            strArray[32] = "\t";
                            strArray[33] = dataAbility.Options.Arg10.ToString();
                            strArray[34] = "\t";
                            strArray[35] = dataAbility.Options.CastTime.ToString();
                            strArray[36] = "\t";
                            strArray[37] = dataAbility.Options.CounterEnable.ToString();
                            strArray[38] = "\t";
                            strArray[39] = dataAbility.Options.StatusFactor.ToString();
                            strArray[40] = "\t";
                            strArray[41] = dataAbility.Options.StatusId.ToString();
                            strArray[42] = "\t";
                            strArray[43] = dataAbility.Options.TargetDeath.ToString();
                            strArray[44] = "\t";
                            strArray[45] = dataAbility.Options.TargetMethod.ToString();
                            strArray[46] = "\t";
                            strArray[47] = dataAbility.Options.TargetRange.ToString();
                            strArray[48] = "\t";
                            strArray[49] = dataAbility.Options.TargetSegment.ToString();
                            string str = string.Concat(strArray);
                            stringList.Add(str);
                        }
                    }
                }
                this.abilityJsonText.Lines = stringList.ToArray();
            }
        }
        private void PopulateDropInfoListView(EventBattleInitiated battle)
        {
            this.listViewDropInfo.Items.Clear();
            if (battle == null)
            {
                return;
            }
            this.listViewDropInfo.View = View.Details;
            if (battle.Battle.Drops.ToList <DropEvent>().Count == 0)
            {
                return;
            }
            lock (FFRKProxy.Instance.Cache.SyncRoot)
            {
                foreach (DropEvent drop in battle.Battle.Drops)
                {
                    Key key = new Key()
                    {
                        ItemId = drop.ItemId
                    };
                    Data   data = (Data)null;
                    string str1 = drop.ItemType != DataEnemyDropItem.DropItemType.Gold ? (drop.ItemType != DataEnemyDropItem.DropItemType.Materia ? (drop.ItemType != DataEnemyDropItem.DropItemType.Potion ? (!FFRKProxy.Instance.Cache.Items.TryGetValue(key, out data) ? drop.ItemId.ToString() : data.Name) : drop.PotionName) : drop.MateriaName) : string.Format("{0} gold", (object)drop.GoldAmount);
                    if (drop.ItemId > 40000000U && drop.ItemId <= 40000065U)
                    {
                        string str2 = "";
                        switch (drop.ItemId % 5U)
                        {
                        case 0:
                            str2 += "Major ";
                            break;

                        case 1:
                            str2 += "Minor ";
                            break;

                        case 2:
                            str2 += "Lesser ";
                            break;

                        case 4:
                            str2 += "Greater ";
                            break;
                        }
                        str1 = str2 + Enum.GetName(typeof(SchemaConstants.ItemID), (object)(uint)((int)((drop.ItemId - 1U) / 5U) * 5 + 5));
                    }
                    else if (drop.ItemId >= 40000066U && drop.ItemId <= 40000078U)
                    {
                        str1 = Enum.GetName(typeof(SchemaConstants.ItemID), (object)drop.ItemId);
                    }
                    else if (drop.ItemId >= 161000001U && drop.ItemId <= 161000104U)
                    {
                        try
                        {
                            str1 = Enum.GetName(typeof(SchemaConstants.MagiciteID), (object)drop.ItemId);
                        }
                        catch (Exception ex)
                        {
                            FiddlerApplication.Log.LogString(ex.ToString());
                        }
                    }
                    else if (drop.ItemId == 95001014U)
                    {
                        str1 = "Gysahl Greens";
                    }
                    else if (drop.ItemId == 70000001U)
                    {
                        str1 = "Minor Growth Egg";
                    }
                    else if (drop.ItemId == 70000002U)
                    {
                        str1 = "Lesser Growth Egg";
                    }
                    else if (drop.ItemId == 70000003U)
                    {
                        str1 = "Growth Egg";
                    }
                    else if (drop.ItemId == 70000004U)
                    {
                        str1 = "Greater Growth Egg";
                    }
                    else if (drop.ItemId == 70000005U)
                    {
                        str1 = "Major Growth Egg";
                    }
                    string str3 = str1.Replace('_', ' ');
                    if (drop.NumberOfItems > 1U)
                    {
                        str3 += string.Format(" x{0}", (object)drop.NumberOfItems);
                    }
                    this.listViewDropInfo.Items.Add(new ListViewItem(new string[4]
                    {
                        str3,
                        drop.ItemId < 161000057U || drop.ItemId > 161000080U ? drop.Rarity.ToString() : "4",
                        drop.Round.ToString(),
                        drop.EnemyName
                    }));
                }
            }
            foreach (ColumnHeader column in this.listViewDropInfo.Columns)
            {
                column.Width = -2;
            }
        }
        public string GetAbilitySummary(BasicEnemyInfo enemy, BasicEnemyParentInfo myEnemyParent,
                                        EventBattleInitiated battle, ComboBox comboBoxEnemySelection, CheckBox checkBoxCastTimes, CheckBox checkBoxEnumerate,
                                        CheckBox checkBoxRatesAsFractions, CheckBox checkBoxTranslate)
        {
            if (enemy == null || myEnemyParent == null || battle == null)
            {
                return("");
            }
            var single = myEnemyParent.Appearances[0] == 1U && comboBoxEnemySelection.Items.Count == 1;

            uint totalWeight = 0;

            foreach (var enemyAbility in enemy.EnemyAbilities)
            {
                totalWeight += enemyAbility.Weight;
            }
            var  source                   = new List <string>();
            var  enemyAbilityParser       = new EnemyAbilityParser(totalWeight, battle, single);
            var  checkCastTimesCheckState = checkBoxCastTimes.CheckState;
            bool hasVariableCastTime;

            if (checkCastTimesCheckState.Equals(CheckState.Indeterminate))
            {
                hasVariableCastTime = enemy.EnemyCastTime.Equals("Variable");
            }
            else
            {
                checkCastTimesCheckState = checkBoxCastTimes.CheckState;
                hasVariableCastTime      = checkCastTimesCheckState.Equals(CheckState.Checked);
            }

            var  checkBoxEnumerateCheckState = checkBoxEnumerate.CheckState;
            bool enumerateForcedActions;

            if (checkBoxEnumerateCheckState.Equals(CheckState.Indeterminate))
            {
                var num = 0;
                foreach (var constraint in myEnemyParent.Constraints)
                {
                    if (constraint.ConstraintType == 1001U && (int)constraint.EnemyStatusId == (int)enemy.EnemyId)
                    {
                        ++num;
                    }
                }
                enumerateForcedActions = num >= 10;
            }
            else
            {
                checkBoxEnumerateCheckState = checkBoxEnumerate.CheckState;
                enumerateForcedActions      = checkBoxEnumerateCheckState.Equals(CheckState.Checked);
            }

            var parseOpt = new EnemyAbilityParserOptions
            {
                displayFractions      = checkBoxRatesAsFractions.Checked,
                displayCastTimes      = hasVariableCastTime,
                translateAbilityNames = checkBoxTranslate.Checked
            };

            var orderedEnumerable = enemy.getAbilities(myEnemyParent.Constraints).OrderBy(x =>
            {
                var val2 = int.MaxValue;
                foreach (var constraint in myEnemyParent.Constraints)
                {
                    if (constraint.ConstraintType == 1001U && constraint.AbilityTag.Equals(x.Tag))
                    {
                        var val1 = int.Parse(constraint.ConstraintValue);
                        if (constraint.EnemyStatusId == 0U)
                        {
                            val1 -= 10000;
                        }
                        else if ((int)constraint.EnemyStatusId != (int)enemy.EnemyId)
                        {
                            continue;
                        }
                        val2 = Math.Min(val1, val2);
                    }
                }

                return(val2);
            }).OrderBy(x => x.Weight).OrderBy(x => x.Weight != 0U ? x.UnlockTurn : 0U);

            if (enumerateForcedActions)
            {
                var val1 = 0;
                foreach (var constraint in myEnemyParent.Constraints)
                {
                    if (constraint.ConstraintType == 1001U && (int)constraint.EnemyStatusId == (int)enemy.EnemyId)
                    {
                        val1 = Math.Max(val1, int.Parse(constraint.ConstraintValue));
                    }
                }

                for (var enumeratedTurn = 1; enumeratedTurn <= val1; ++enumeratedTurn)
                {
                    foreach (var constraint1 in myEnemyParent.Constraints)
                    {
                        if (constraint1.ConstraintType == 1001U &&
                            (int)constraint1.EnemyStatusId == (int)enemy.EnemyId &&
                            int.Parse(constraint1.ConstraintValue) == enumeratedTurn)
                        {
                            foreach (var paramAbility in orderedEnumerable)
                            {
                                if (constraint1.AbilityTag.Equals(paramAbility.Tag))
                                {
                                    var num   = 0;
                                    var flag3 = true;
                                    if (paramAbility.Weight > 0U)
                                    {
                                        flag3 = false;
                                    }
                                    foreach (var constraint2 in myEnemyParent.Constraints)
                                    {
                                        if (flag3 && constraint2.ConstraintType == 1001U &&
                                            constraint2.AbilityTag.Equals(paramAbility.Tag) &&
                                            (int)constraint2.EnemyStatusId == (int)enemy.EnemyId &&
                                            int.Parse(constraint2.ConstraintValue) > enumeratedTurn)
                                        {
                                            flag3 = false;
                                        }
                                        if (flag3 && constraint2.ConstraintType >= 1003U &&
                                            constraint2.ConstraintType <= 1005U &&
                                            constraint2.AbilityTag.Equals(paramAbility.Tag) &&
                                            (int)constraint1.EnemyStatusId == (int)enemy.EnemyId)
                                        {
                                            flag3 = false;
                                        }
                                        if (flag3 && constraint2.ConstraintType == 1002U &&
                                            constraint2.AbilityTag.Equals(paramAbility.Tag) &&
                                            (int)constraint2.EnemyStatusId == (int)enemy.EnemyId)
                                        {
                                            num = num == 0
                                                ? int.Parse(constraint2.ConstraintValue)
                                                : Math.Min(int.Parse(constraint2.ConstraintValue), num);
                                        }
                                    }

                                    if ((num > 0) & flag3)
                                    {
                                        source.Add(enemyAbilityParser.parseAbility(paramAbility,
                                                                                   myEnemyParent.Constraints, enemy, parseOpt, false, enumeratedTurn, num));
                                    }
                                    else
                                    {
                                        source.Add(enemyAbilityParser.parseAbility(paramAbility,
                                                                                   myEnemyParent.Constraints, enemy, parseOpt, false, enumeratedTurn));
                                    }
                                }
                            }
                        }
                    }
                }

                foreach (var paramAbility in orderedEnumerable)
                {
                    if (paramAbility.Weight > 0U)
                    {
                        source.Add(enemyAbilityParser.parseAbility(paramAbility, myEnemyParent.Constraints, enemy, parseOpt, false, 0));
                    }
                    else
                    {
                        var flag3 = false;
                        var flag4 = false;
                        foreach (var constraint in myEnemyParent.Constraints)
                        {
                            if (constraint.AbilityTag.Equals(paramAbility.Tag))
                            {
                                if ((int)constraint.EnemyStatusId == (int)enemy.EnemyId &&
                                    constraint.ConstraintType == 1001U)
                                {
                                    flag3 = true;
                                }
                                if (constraint.EnemyStatusId == 0U ||
                                    (int)constraint.EnemyStatusId == (int)enemy.EnemyId &&
                                    constraint.ConstraintType != 1001U && constraint.ConstraintType != 1002U)
                                {
                                    flag4 = true;
                                }
                            }
                        }

                        if (!flag3 | flag4)
                        {
                            source.Add(enemyAbilityParser.parseAbility(paramAbility, myEnemyParent.Constraints, enemy,
                                                                       parseOpt, false, 0));
                        }
                    }
                }
            }
            else
            {
                foreach (var paramAbility in orderedEnumerable)
                {
                    source.Add(enemyAbilityParser.parseAbility(paramAbility, myEnemyParent.Constraints, enemy, parseOpt));
                }
            }

            var list = source.OrderBy(x => x[0] != 'T').ThenBy(x => x[0] != 'S').ToList();

            foreach (var counter in enemy.EnemyCounters.OrderBy(x => x.Rate))
            {
                list.Add(enemyAbilityParser.parseCounter(counter, parseOpt));
            }
            return(string.Join("  \n", list));
        }
 private void FFRKProxy_OnCompleteBattle(EventBattleInitiated battle) => this.BeginInvoke((Action)(() => this.UpdateAllDropsForLastBattle(battle)));
Пример #20
0
        void UpdateAllDropsForLastBattle(EventBattleInitiated battle)
        {
            if (battle == null)
            {
                listViewAllDrops.VirtualListSize = 0;
                mAllItems.Clear();
                mFilteredItems.Collection.Clear();
                return;
            }

            foreach (BasicItemDropStats stats in mAllItems.Where(x => x.BattleId == battle.Battle.BattleId))
            {
                // Update the times_run field of every item that matches the last battle.  If we don't do
                // this here in a separate loop, it will only happen for items that actually dropped in
                // the following loop.
                stats.TimesRun++;
                stats.TimesRunWithHistogram++;
            }

            lock (FFRKProxy.Instance.Cache.SyncRoot)
            {
                foreach (DropEvent drop in battle.Battle.Drops)
                {
                    if (drop.ItemType == DataEnemyDropItem.DropItemType.Gold)
                    {
                        continue;
                    }

                    if (drop.ItemType == DataEnemyDropItem.DropItemType.Materia)
                    {
                        continue;
                    }

                    if (drop.ItemType == DataEnemyDropItem.DropItemType.Potion)
                    {
                        continue;
                    }

                    BasicItemDropStats match = mAllItems.Find(x => (x.BattleId == battle.Battle.BattleId) &&
                                                              (x.ItemId == drop.ItemId));
                    if (match != null)
                    {
                        ++match.TotalDrops;
                        continue;
                    }

                    EventListBattles this_battle_list = FFRKProxy.Instance.GameState.ActiveDungeon;
                    if (this_battle_list == null)
                    {
                        continue;
                    }

                    DataBattle this_battle = this_battle_list.Battles.Find(x => x.Id == battle.Battle.BattleId);
                    if (this_battle == null)
                    {
                        continue;
                    }

                    uint   times_run       = 1;
                    uint   histo_times_run = 1;
                    string item_name       = drop.ItemId.ToString();
                    DataCache.Items.Data   item_data;
                    DataCache.Battles.Data battle_data;

                    if (FFRKProxy.Instance.Cache.Items.TryGetValue(new DataCache.Items.Key {
                        ItemId = drop.ItemId
                    }, out item_data))
                    {
                        item_name = item_data.Name;
                    }
                    if (FFRKProxy.Instance.Cache.Battles.TryGetValue(new DataCache.Battles.Key {
                        BattleId = battle.Battle.BattleId
                    }, out battle_data))
                    {
                        // Get the times_run from the cache, and add 1 to it.
                        times_run       = battle_data.Samples;
                        histo_times_run = battle_data.HistoSamples;
                    }

                    mAllItems.Add(
                        new BasicItemDropStats
                    {
                        BattleId      = battle.Battle.BattleId,
                        BattleName    = this_battle.Name,
                        BattleStamina = this_battle.Stamina,
                        ItemId        = drop.ItemId,
                        ItemName      = item_name,
                        TimesRun      = times_run,
                        TotalDrops    = 1,
                    });
                }
            }
            RebuildFilteredDropListAndInvalidate();
        }
 private void FFRKProxy_OnBattleEngaged(EventBattleInitiated battle)
 {
 }
Пример #22
0
 void FFRKProxy_OnBattleEngaged(EventBattleInitiated battle)
 {
     this.BeginInvoke((Action)(() => { PopulateActiveBattleListView(battle); }));
 }
Пример #23
0
 public DbOpRecordBattleEncounter(EventBattleInitiated encounter) => this.mEncounter = encounter;
Пример #24
0
        private void PopulateActiveBattleListView(EventBattleInitiated battle)
        {
            listViewActiveBattle.Items.Clear();
            if (battle == null)
            {
                labelActiveBattleNotice.Visible = true;
                labelNoDrops.Visible            = false;
                return;
            }

            listViewActiveBattle.View = View.Details;
            List <DropEvent> drops = battle.Battle.Drops.ToList();

            labelActiveBattleNotice.Visible = false;
            if (drops.Count == 0)
            {
                labelNoDrops.Visible = true;
                return;
            }

            lock (FFRKProxy.Instance.Cache.SyncRoot)
            {
                foreach (DropEvent drop in battle.Battle.Drops)
                {
                    string Item;
                    DataCache.Items.Key ItemKey = new DataCache.Items.Key {
                        ItemId = drop.ItemId
                    };
                    DataCache.Items.Data ItemData = null;
                    if (drop.ItemType == DataEnemyDropItem.DropItemType.Gold)
                    {
                        Item = String.Format("{0} gold", drop.GoldAmount);
                    }
                    else if (drop.ItemType == DataEnemyDropItem.DropItemType.Materia)
                    {
                        Item = drop.MateriaName;
                    }
                    else if (drop.ItemType == DataEnemyDropItem.DropItemType.Potion)
                    {
                        Item = drop.PotionName;
                    }
                    else if (FFRKProxy.Instance.Cache.Items.TryGetValue(ItemKey, out ItemData))
                    {
                        Item = ItemData.Name;
                    }
                    else
                    {
                        Item = drop.ItemId.ToString();
                    }

                    if (drop.NumberOfItems > 1)
                    {
                        Item += String.Format(" x{0}", drop.NumberOfItems);
                    }
                    string[] row =
                    {
                        Item,
                        drop.Rarity.ToString(),
                        drop.Round.ToString(),
                        drop.EnemyName,
                        "",
                        ""
                    };
                    listViewActiveBattle.Items.Add(new ListViewItem(row));
                }
            }
        }