public frmEditPowerset(ref IPowerset iSet)
 {
     base.Load   += this.frmEditPowerset_Load;
     this.Loading = true;
     this.InitializeComponent();
     this.myPS = new Powerset(iSet);
 }
Esempio n. 2
0
 public Powerset(IPowerset template)
 {
     this.nID              = template.nID;
     this.nArchetype       = template.nArchetype;
     this.DisplayName      = template.DisplayName;
     this.SetType          = template.SetType;
     this.ImageName        = template.ImageName;
     this.FullName         = template.FullName;
     this.SetName          = template.SetName;
     this.Description      = template.Description;
     this.SubName          = template.SubName;
     this.ATClass          = template.ATClass;
     this._powersetGroup   = template.GetGroup();
     this.GroupName        = template.GroupName;
     this.UIDTrunkSet      = template.UIDTrunkSet;
     this.nIDTrunkSet      = template.nIDTrunkSet;
     this.nIDLinkSecondary = template.nIDLinkSecondary;
     this.UIDLinkSecondary = template.UIDLinkSecondary;
     this.Powers           = new IPower[template.Powers.Length];
     this.Power            = new int[template.Power.Length];
     Array.Copy((Array)template.Power, (Array)this.Power, this.Power.Length);
     for (int index = 0; index < this.Powers.Length; ++index)
     {
         this.Powers[index] = template.Powers[index];
     }
     this.nIDMutexSets = new int[template.nIDMutexSets.Length];
     this.UIDMutexSets = new string[template.UIDMutexSets.Length];
     Array.Copy((Array)template.nIDMutexSets, (Array)this.nIDMutexSets, this.nIDMutexSets.Length);
     Array.Copy((Array)template.UIDMutexSets, (Array)this.UIDMutexSets, this.UIDMutexSets.Length);
 }
Esempio n. 3
0
 public Powerset(IPowerset template)
 {
     nID              = template.nID;
     nArchetype       = template.nArchetype;
     DisplayName      = template.DisplayName;
     SetType          = template.SetType;
     ImageName        = template.ImageName;
     FullName         = template.FullName;
     SetName          = template.SetName;
     Description      = template.Description;
     SubName          = template.SubName;
     ATClass          = template.ATClass;
     _powersetGroup   = template.GetGroup();
     GroupName        = template.GroupName;
     UIDTrunkSet      = template.UIDTrunkSet;
     nIDTrunkSet      = template.nIDTrunkSet;
     nIDLinkSecondary = template.nIDLinkSecondary;
     UIDLinkSecondary = template.UIDLinkSecondary;
     Powers           = new IPower[template.Powers.Length];
     Power            = new int[template.Power.Length];
     Array.Copy(template.Power, Power, Power.Length);
     for (var index = 0; index < Powers.Length; ++index)
     {
         Powers[index] = template.Powers[index];
     }
     nIDMutexSets = new int[template.nIDMutexSets.Length];
     UIDMutexSets = new string[template.UIDMutexSets.Length];
     Array.Copy(template.nIDMutexSets, nIDMutexSets, nIDMutexSets.Length);
     Array.Copy(template.UIDMutexSets, UIDMutexSets, UIDMutexSets.Length);
 }
Esempio n. 4
0
 public frmEditPowerset(ref IPowerset iSet)
 {
     this.Load   += new EventHandler(this.frmEditPowerset_Load);
     this.Loading = true;
     this.InitializeComponent();
     System.ComponentModel.ComponentResourceManager componentResourceManager = new System.ComponentModel.ComponentResourceManager(typeof(frmEditPowerset));
     this.Icon = (System.Drawing.Icon)componentResourceManager.GetObject("$this.Icon");
     this.Name = nameof(frmEditPowerset);
     this.myPS = (IPowerset) new Powerset(iSet);
 }
Esempio n. 5
0
        public frmEditPowerset(ref IPowerset iSet)
        {
            Load   += frmEditPowerset_Load;
            Loading = true;
            InitializeComponent();
            var componentResourceManager = new ComponentResourceManager(typeof(frmEditPowerset));

            Icon = Resources.reborn;
            Name = nameof(frmEditPowerset);
            myPS = new Powerset(iSet);
        }
Esempio n. 6
0
        public frmEditPowerset(ref IPowerset iSet)
        {
            Load   += frmEditPowerset_Load;
            Loading = true;
            InitializeComponent();
            ComponentResourceManager componentResourceManager = new ComponentResourceManager(typeof(frmEditPowerset));

            Icon = (Icon)componentResourceManager.GetObject("$this.Icon");
            Name = nameof(frmEditPowerset);
            myPS = new Powerset(iSet);
        }
        public static void ChangeSets(clsToonX toon, Character ch, int primaryIndex, int secondaryIndex, int pool0Index, int pool1Index, int pool2Index, int pool3Index, int ancillaryIndex, Func <Archetype, Enums.ePowerSetType, IPowerset[]> getPowerSets, Action enableSecondary)
        {
            var at = ch.Archetype;
            var newPrimaryPowerset = getPowerSets(at, Enums.ePowerSetType.Primary)[primaryIndex];

            IPowerset[] ancPowersets = getPowerSets(at, Enums.ePowerSetType.Ancillary);
            if (toon != null)
            {
                IPowerset powerset1 = ch.Powersets[0];
                if (powerset1.nID != newPrimaryPowerset.nID)
                {
                    toon.SwitchSets(newPrimaryPowerset, powerset1);
                }
                if (ch.Powersets[0].nIDLinkSecondary > -1)
                {
                    IPowerset powerset2 = ch.Powersets[1];
                    IPowerset powerset3 = DatabaseAPI.Database.Powersets[ch.Powersets[0].nIDLinkSecondary];
                    if (powerset2.nID != powerset3.nID)
                    {
                        toon.SwitchSets(powerset3, powerset2);
                    }
                }
                else
                {
                    enableSecondary();
                    IPowerset   powerset2          = ch.Powersets[1];
                    IPowerset[] secondaryPowersets = getPowerSets(at, Enums.ePowerSetType.Secondary);
                    IPowerset   newPowerset2       = secondaryPowersets[secondaryIndex];
                    if (powerset2.nID != newPowerset2.nID)
                    {
                        toon.SwitchSets(newPowerset2, powerset2);
                    }
                }
            }
            else
            {
                IPowerset[] secondaryPowersets = getPowerSets(at, Enums.ePowerSetType.Secondary);
                ch.Powersets[0] = newPrimaryPowerset;
                ch.Powersets[1] = secondaryPowersets[secondaryIndex];
            }
            IPowerset[] poolPowersets = getPowerSets(at, Enums.ePowerSetType.Pool);
            ch.Powersets[3] = poolPowersets[pool0Index];
            ch.Powersets[4] = poolPowersets[pool1Index];
            ch.Powersets[5] = poolPowersets[pool2Index];
            ch.Powersets[6] = poolPowersets[pool3Index];
            if (ancPowersets.Length > 0)
            {
                ch.Powersets[7] = ancPowersets[ancillaryIndex];
            }
            ch.Validate();
        }
        static clsUniversalImport.SetPair FindPower(string iName, int nAT)
        {
            IPowerset[] powersetIndexes2 = new IPowerset[2];
            clsUniversalImport.SetPair setPair3;
            if (MidsContext.Character != null)
            {
                powersetIndexes2[0] = MidsContext.Character.Powersets[0];
                powersetIndexes2[1] = MidsContext.Character.Powersets[1];
                clsUniversalImport.SetPair setPair2 = clsUniversalImport.ScanSetArray(iName, powersetIndexes2);
                if (setPair2.Powerset > -1)
                {
                    setPair3 = setPair2;
                    return(setPair3);
                }
            }
            int powerByName = DatabaseAPI.GetPowerByName(iName, nAT);

            if (powerByName < 0)
            {
                powerByName = DatabaseAPI.GetPowerByName(iName.Replace("'", ""), nAT);
            }
            if (powerByName > -1)
            {
                setPair3 = new clsUniversalImport.SetPair(DatabaseAPI.Database.Power[powerByName].PowerSetID, DatabaseAPI.Database.Power[powerByName].PowerSetIndex);
            }
            else
            {
                powersetIndexes2 = DatabaseAPI.GetPowersetIndexes(nAT, Enums.ePowerSetType.Ancillary);
                clsUniversalImport.SetPair setPair2 = clsUniversalImport.ScanSetArray(iName, powersetIndexes2);
                if (setPair2.Powerset > -1)
                {
                    setPair3 = setPair2;
                }
                else
                {
                    powersetIndexes2 = DatabaseAPI.GetPowersetIndexes(nAT, Enums.ePowerSetType.Pool);
                    setPair2         = clsUniversalImport.ScanSetArray(iName, powersetIndexes2);
                    if (setPair2.Powerset > -1)
                    {
                        setPair3 = setPair2;
                    }
                    else
                    {
                        setPair3 = new clsUniversalImport.SetPair(-1, -1);
                    }
                }
            }
            return(setPair3);
        }
Esempio n. 9
0
    public int CompareTo(object obj)
    {
        IPowerset powerset = obj as IPowerset;

        if (powerset != null)
        {
            int num = string.Compare(this.GroupName, powerset.GroupName, StringComparison.OrdinalIgnoreCase);
            if (num == 0)
            {
                num = string.Compare(this.DisplayName, powerset.DisplayName, StringComparison.OrdinalIgnoreCase);
            }
            return(num);
        }
        throw new ArgumentException("Comparison failed - Passed object was not a Powerset Class!");
    }
 void lvMutexSets_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (!this.Loading && this.cbMutexGroup.SelectedIndex >= 0)
     {
         IPowerset ps = this.myPS;
         ps.UIDMutexSets = new string[this.lvMutexSets.SelectedIndices.Count - 1 + 1];
         ps.nIDMutexSets = new int[this.lvMutexSets.SelectedIndices.Count - 1 + 1];
         int[] numArray = DatabaseAPI.NidSets(this.cbMutexGroup.SelectedText, Conversions.ToString(-1), Enums.ePowerSetType.None);
         int   num      = this.lvMutexSets.SelectedIndices.Count - 1;
         for (int index = 0; index <= num; index++)
         {
             ps.UIDMutexSets[index] = DatabaseAPI.Database.Powersets[numArray[this.lvMutexSets.SelectedIndices[index]]].FullName;
             ps.nIDMutexSets[index] = DatabaseAPI.NidFromUidPowerset(ps.UIDMutexSets[index]);
         }
     }
 }
Esempio n. 11
0
        void DisplayNameData()
        {
            IPowerset ps = this.myPS;

            this.lblNameFull.Text = this.BuildFullName();
            if (ps.GroupName == "" | ps.SetName == "")
            {
                this.lblNameUnique.Text = "This name is invalid.";
            }
            else if (frmEditPowerset.PowersetFullNameIsUnique(Conversions.ToString(ps.nID), -1))
            {
                this.lblNameUnique.Text = "This name is unique.";
            }
            else
            {
                this.lblNameUnique.Text = "This name is NOT unique.";
            }
        }
Esempio n. 12
0
        void DisplayNameData()
        {
            IPowerset ps = myPS;

            lblNameFull.Text = BuildFullName();
            if (ps.GroupName == "" | ps.SetName == "")
            {
                lblNameUnique.Text = "This name is invalid.";
            }
            else if (PowersetFullNameIsUnique(Convert.ToString(ps.nID)))
            {
                lblNameUnique.Text = "This name is unique.";
            }
            else
            {
                lblNameUnique.Text = "This name is NOT unique.";
            }
        }
 static bool PowersetFullNameIsUnique(string iFullName, int skipId = -1)
 {
     if (!string.IsNullOrEmpty(iFullName))
     {
         int num = DatabaseAPI.Database.Powersets.Length - 1;
         for (int index = 0; index <= num; index++)
         {
             if (index != skipId)
             {
                 IPowerset powerset = DatabaseAPI.Database.Powersets[index];
                 if (string.Equals(powerset.FullName, iFullName, StringComparison.OrdinalIgnoreCase))
                 {
                     return(false);
                 }
             }
         }
     }
     return(true);
 }
Esempio n. 14
0
        void lvMutexSets_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (Loading || cbMutexGroup.SelectedIndex < 0)
            {
                return;
            }
            IPowerset ps = myPS;

            ps.UIDMutexSets = new string[lvMutexSets.SelectedIndices.Count - 1 + 1];
            ps.nIDMutexSets = new int[lvMutexSets.SelectedIndices.Count - 1 + 1];
            int[] numArray = DatabaseAPI.NidSets(cbMutexGroup.SelectedText, Convert.ToString(-1), Enums.ePowerSetType.None);
            int   num      = lvMutexSets.SelectedIndices.Count - 1;

            for (int index = 0; index <= num; ++index)
            {
                ps.UIDMutexSets[index] = DatabaseAPI.Database.Powersets[numArray[lvMutexSets.SelectedIndices[index]]].FullName;
                ps.nIDMutexSets[index] = DatabaseAPI.NidFromUidPowerset(ps.UIDMutexSets[index]);
            }
        }
Esempio n. 15
0
        void btnClose_Click(object sender, EventArgs e)
        {
            IPowerset ps = this.myPS;

            this.lblNameFull.Text = ps.GroupName + "." + ps.SetName;
            if (ps.GroupName == "" | ps.SetName == "")
            {
                int num1 = (int)Interaction.MsgBox(("Powerset name '" + ps.FullName + " is invalid."), MsgBoxStyle.Exclamation, "No Can Do");
            }
            else if (!frmEditPowerset.PowersetFullNameIsUnique(Conversions.ToString(ps.nID), -1))
            {
                int num2 = (int)Interaction.MsgBox(("Powerset name '" + ps.FullName + " already exists, please enter a unique name."), MsgBoxStyle.Exclamation, "No Can Do");
            }
            else
            {
                this.myPS.IsModified = true;
                this.DialogResult    = DialogResult.OK;
                this.Hide();
            }
        }
Esempio n. 16
0
        private static SetPair FindPower(string iName, int nAT)
        {
            var sets = new IPowerset[2];

            if (MidsContext.Character != null)
            {
                sets[0] = MidsContext.Character.Powersets[0];
                sets[1] = MidsContext.Character.Powersets[1];
                var setPair = ScanSetArray(iName, sets);
                if (setPair.Powerset > -1)
                {
                    return(setPair);
                }
            }

            var powerByName = DatabaseAPI.GetPowerIndexByDisplayName(iName, nAT);

            if (powerByName < 0)
            {
                powerByName = DatabaseAPI.GetPowerIndexByDisplayName(iName.Replace("'", ""), nAT);
            }
            if (powerByName > -1)
            {
                return(new SetPair(DatabaseAPI.Database.Power[powerByName].PowerSetID,
                                   DatabaseAPI.Database.Power[powerByName].PowerSetIndex));
            }

            var powersetIndexes1 = DatabaseAPI.GetPowersetIndexes(nAT, Enums.ePowerSetType.Ancillary);
            var setPair2         = ScanSetArray(iName, powersetIndexes1);

            if (setPair2.Powerset > -1)
            {
                return(setPair2);
            }

            var powersetIndexes2 = DatabaseAPI.GetPowersetIndexes(nAT, Enums.ePowerSetType.Pool);

            setPair2 = ScanSetArray(iName, powersetIndexes2);
            return(setPair2.Powerset <= -1 ? new SetPair(-1, -1) : setPair2);
        }
        private static bool MxDReadSaveData(ref byte[] buffer, bool silent)
        {
            InherentPowers = new List <PowerEntry>();
            DisplayIndex   = -1;
            if (buffer.Length < 1)
            {
                MessageBox.Show("Unable to read data - Empty Buffer.", "ReadSaveData Failed");
                return(false);
            }

            MemoryStream memoryStream;
            BinaryReader r;

            try
            {
                memoryStream = new MemoryStream(buffer, false);
                r            = new BinaryReader(memoryStream);
                r.BaseStream.Seek(0L, SeekOrigin.Begin);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Unable to read data - " + ex.Message, "ReadSaveData Failed");
                return(false);
            }

            try
            {
                var  streamIndex = 0;
                bool magicFound;
                // try to find magic number, reading 4 bytes at a time, offset by 1 on each failure
                do
                {
                    r.BaseStream.Seek(streamIndex, SeekOrigin.Begin);

                    var numArray = r.ReadBytes(4);
                    if (numArray.Length >= 4)
                    {
                        magicFound = true;
                        for (var index = 0; index < MagicNumber.Length; ++index)
                        {
                            if (MagicNumber[index] != numArray[index])
                            {
                                magicFound = false;
                            }
                        }
                        if (!magicFound)
                        {
                            ++streamIndex;
                        }
                    }
                    else
                    {
                        if (!silent)
                        {
                            MessageBox.Show("Unable to read data - Magic Number not found.", "ReadSaveData Failed");
                        }
                        r.Close();
                        memoryStream.Close();
                        return(false);
                    }
                } while (!magicFound);

                var fVersion = r.ReadSingle();
                if (fVersion > 2.0)
                {
                    MessageBox.Show(
                        "File was saved by a newer version of the application. Please obtain the most recent release in order to open this file.",
                        "Unable to Load");
                    r.Close();
                    memoryStream.Close();
                    return(false);
                }

                var qualifiedNames = r.ReadBoolean();
                var hasSubPower    = r.ReadBoolean();
                var nIDClass       = DatabaseAPI.NidFromUidClass(r.ReadString());
                if (nIDClass < 0)
                {
                    if (!silent)
                    {
                        MessageBox.Show("Unable to read data - Invalid Class UID.", "ReadSaveData Failed");
                    }
                    r.Close();
                    memoryStream.Close();
                    return(false);
                }

                var iOrigin = DatabaseAPI.NidFromUidOrigin(r.ReadString(), nIDClass);
                MidsContext.Character.Reset(DatabaseAPI.Database.Classes[nIDClass], iOrigin);
                if (fVersion > 1.0)
                {
                    var align = r.ReadInt32();
                    MidsContext.Character.Alignment = (Enums.Alignment)align;
                }

                MidsContext.Character.Name = r.ReadString();
                var powerSetCount       = r.ReadInt32();
                var expectedArrayLength = new IPowerset[powerSetCount + 1].Length;
                var names = new List <string>();
                for (var index = 0; index < powerSetCount + 1; ++index)
                {
                    var iName = r.ReadString();
                    names.Add(iName);
                }

                var errors = MidsContext.Character.LoadPowersetsByName(names);
                foreach (var(i, n) in errors)
                {
                    MessageBox.Show($"Failed to load powerset by name:{n} at {i}", "Powerset load failure");
                }
                MidsContext.Character.CurrentBuild.LastPower = r.ReadInt32() - 1;
                var pEntryList = new List <PowerEntry>();
                var powerCount = r.ReadInt32();
                try
                {
                    for (var powerIndex = 0; powerIndex <= powerCount; ++powerIndex)
                    {
                        var nId       = -1;
                        var name1     = string.Empty;
                        var sidPower1 = -1;
                        if (qualifiedNames)
                        {
                            name1 = r.ReadString();
                            if (!string.IsNullOrEmpty(name1))
                            {
                                nId = DatabaseAPI.NidFromUidPower(name1);
                            }
                        }
                        else
                        {
                            sidPower1 = r.ReadInt32();
                            nId       = DatabaseAPI.NidFromStaticIndexPower(sidPower1);
                        }

                        var        flag5 = false;
                        PowerEntry powerEntry1;
                        if (powerIndex < MidsContext.Character.CurrentBuild.Powers.Count)
                        {
                            powerEntry1 = MidsContext.Character.CurrentBuild.Powers[powerIndex];
                        }
                        else
                        {
                            powerEntry1 = new PowerEntry();
                            flag5       = true;
                        }

                        if ((sidPower1 > -1) | !string.IsNullOrEmpty(name1))
                        {
                            powerEntry1.Level         = r.ReadSByte();
                            powerEntry1.StatInclude   = r.ReadBoolean();
                            powerEntry1.VariableValue = r.ReadInt32();
                            if (hasSubPower)
                            {
                                powerEntry1.SubPowers = new PowerSubEntry[r.ReadSByte() + 1];
                                for (var subPowerIndex = 0; subPowerIndex < powerEntry1.SubPowers.Length; ++subPowerIndex)
                                {
                                    var powerSub = new PowerSubEntry();
                                    powerEntry1.SubPowers[subPowerIndex] = powerSub;
                                    if (qualifiedNames)
                                    {
                                        var name2 = r.ReadString();
                                        if (!string.IsNullOrEmpty(name2))
                                        {
                                            powerSub.nIDPower = DatabaseAPI.NidFromUidPower(name2);
                                        }
                                    }
                                    else
                                    {
                                        var sidPower2 = r.ReadInt32();
                                        powerSub.nIDPower = DatabaseAPI.NidFromStaticIndexPower(sidPower2);
                                    }

                                    if (powerSub.nIDPower > -1)
                                    {
                                        powerSub.Powerset = DatabaseAPI.Database.Power[powerSub.nIDPower].PowerSetID;
                                        powerSub.Power    = DatabaseAPI.Database.Power[powerSub.nIDPower].PowerSetIndex;
                                    }

                                    powerSub.StatInclude = r.ReadBoolean();
                                    if (!((powerSub.nIDPower > -1) & powerSub.StatInclude))
                                    {
                                        continue;
                                    }
                                    var powerEntry2 = new PowerEntry(DatabaseAPI.Database.Power[powerSub.nIDPower])
                                    {
                                        StatInclude = true
                                    };
                                    MidsContext.Character.CurrentBuild.Powers.Add(powerEntry2);
                                }
                            }
                        }

                        if (nId < 0 && powerIndex < DatabaseAPI.Database.Levels_MainPowers.Length)
                        {
                            powerEntry1.Level = DatabaseAPI.Database.Levels_MainPowers[powerIndex];
                        }
                        powerEntry1.Slots = new SlotEntry[r.ReadSByte() + 1];
                        for (var index3 = 0; index3 < powerEntry1.Slots.Length; ++index3)
                        {
                            powerEntry1.Slots[index3] = new SlotEntry
                            {
                                Level              = r.ReadSByte(),
                                Enhancement        = new I9Slot(),
                                FlippedEnhancement = new I9Slot()
                            };
                            ReadSlotData(r, ref powerEntry1.Slots[index3].Enhancement, qualifiedNames, fVersion);
                            if (r.ReadBoolean())
                            {
                                ReadSlotData(r, ref powerEntry1.Slots[index3].FlippedEnhancement, qualifiedNames, fVersion);
                            }
                        }

                        if (powerEntry1.SubPowers.Length > 0)
                        {
                            nId = -1;
                        }
                        if (nId <= -1)
                        {
                            continue;
                        }
                        powerEntry1.NIDPower    = nId;
                        powerEntry1.NIDPowerset = DatabaseAPI.Database.Power[nId].PowerSetID;
                        powerEntry1.IDXPower    = DatabaseAPI.Database.Power[nId].PowerSetIndex;
                        if (powerEntry1.Level == 0 && powerEntry1.Power.FullSetName == "Pool.Fitness")
                        {
                            if (powerEntry1.NIDPower == 2553)
                            {
                                powerEntry1.NIDPower = 1521;
                            }
                            if (powerEntry1.NIDPower == 2554)
                            {
                                powerEntry1.NIDPower = 1523;
                            }
                            if (powerEntry1.NIDPower == 2555)
                            {
                                powerEntry1.NIDPower = 1522;
                            }
                            if (powerEntry1.NIDPower == 2556)
                            {
                                powerEntry1.NIDPower = 1524;
                            }
                            powerEntry1.NIDPowerset = DatabaseAPI.Database.Power[nId].PowerSetID;
                            powerEntry1.IDXPower    = DatabaseAPI.Database.Power[nId].PowerSetIndex;
                        }

                        var ps = powerEntry1.Power?.GetPowerSet();
                        if (powerIndex < MidsContext.Character.CurrentBuild.Powers.Count)
                        {
                            if (powerEntry1.Power != null && !(!MidsContext.Character.CurrentBuild.Powers[powerIndex].Chosen & (ps != null && ps.nArchetype > -1 || powerEntry1.Power.GroupName == "Pool")))
                            {
                                flag5 = !MidsContext.Character.CurrentBuild.Powers[powerIndex].Chosen;
                            }
                            else
                            {
                                continue;
                            }
                        }

                        if (flag5)
                        {
                            if (powerEntry1.Power.InherentType != Enums.eGridType.None)
                            {
                                InherentPowers.Add(powerEntry1);
                            }

                            //Console.WriteLine($"{powerEntry1.Power.DisplayName} - {powerEntry1.Power.InherentType}");
                            //MidsContext.Character.CurrentBuild.Powers.Add(powerEntry1);
                        }
                        else if (powerEntry1.Power != null && (ps != null && ps.nArchetype > -1 || powerEntry1.Power.GroupName == "Pool"))
                        {
                            MidsContext.Character.CurrentBuild.Powers[powerIndex] = powerEntry1;
                        }
                    }

                    var newPowerList = new List <PowerEntry>();
                    newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Class));
                    newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Inherent));
                    newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Powerset));
                    newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Power));
                    newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Prestige));
                    newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Incarnate));
                    newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Accolade));
                    newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Pet));
                    newPowerList.AddRange(SortGridPowers(InherentPowers, Enums.eGridType.Temp));
                    foreach (var entry in newPowerList)
                    {
                        MidsContext.Character.CurrentBuild.Powers.Add(entry);
                    }
                }
                catch (Exception ex)
                {
                    if (!silent)
                    {
                        MessageBox.Show($"Error reading some power data, will attempt to build character with known data.\r\n{ex.Message}\r\n\r\n{ex.StackTrace}", "ReadSaveData Failed");
                    }
                    return(false);
                }

                MidsContext.Archetype = MidsContext.Character.Archetype;
                MidsContext.Character.Validate();
                MidsContext.Character.Lock();
                return(true);
            }
            catch (Exception ex)
            {
                if (!silent)
                {
                    MessageBox.Show("Unable to read data - " + ex.Message, "ReadSaveData Failed");
                }
                return(false);
            }
        }