Ejemplo n.º 1
0
        private void ParseItemNano(int rectype, int recnum, byte[] data)
        {
            this.BR = new BufferedReader(rectype, recnum, data, this.Tracing);
            bool flag;
            flag = !Output.ItemNano_Begin(XR.RecordNum, XR.RecordType == 1040005, CS);
            if (flag)
            {
                return;
            }

            br.SkipBytes(16, "Pre-Attr");
            int num = br.ReadCNum("AttrCount");
            Plugin.ItemNanoInfo info = default(Plugin.ItemNanoInfo);
            List<Plugin.ItemNanoKeyVal> list = new List<Plugin.ItemNanoKeyVal>();
            bool flag2 = false;
            int arg_C0_0 = 0;
            short num5;
            short num6;
            checked
            {
                int num2 = num - 1;
                int num3 = arg_C0_0;
                while (true)
                {
                    int arg_1C2_0 = num3;
                    int num4 = num2;
                    if (arg_1C2_0 > num4)
                    {
                        break;
                    }
                    Plugin.ItemNanoKeyVal item = default(Plugin.ItemNanoKeyVal);
                    item.AttrKey = br.ReadInt32("AttrKey" + Conversions.ToString(num3));
                    item.AttrVal = br.ReadInt32("AttrVal" + Conversions.ToString(num3));
                    list.Add(item);
                    int attrKey = item.AttrKey;
                    flag = (attrKey == 54);
                    if (flag)
                    {
                        info.QL = item.AttrVal;
                    }
                    else
                    {
                        flag = (attrKey == 76);
                        if (flag)
                        {
                            info.EquipPage = item.AttrVal;
                        }
                        else
                        {
                            flag = (attrKey == 88);
                            if (flag)
                            {
                                info.DefaultSlot = item.AttrVal;
                            }
                            else
                            {
                                flag = (attrKey == 298);
                                if (flag)
                                {
                                    info.EquipSlots = item.AttrVal;
                                }
                                else
                                {
                                    flag = (attrKey == 388);
                                    if (flag)
                                    {
                                        flag2 = true;
                                    }
                                }
                            }
                        }
                    }
                    num3++;
                }
                br.SkipBytes(8, "Post-Attr");
                num5 = br.ReadInt16("NameLen");
                num6 = br.ReadInt16("DescLen");
            }
            bool arg_222_0;
            if (num5 >= 0 && num6 >= 0)
            {
                if (num5 <= 4095L)
                {
                    if (num6 <= 4095L)
                    {
                        arg_222_0 = false;
                        goto IL_222;
                    }
                }
            }
            arg_222_0 = true;
        IL_222:
            flag = arg_222_0;
            if (flag)
            {
                br.DebugDump("NameLen or DescLen is invalid", ParserReturns.Failed);
            }
            flag = (num5 > 0);
            if (flag)
            {
                info.Name = br.ReadString((int)num5, "Name");
            }
            else
            {
                info.Name = "";
            }
            flag = (num6 > 0);
            if (flag)
            {
                info.Description = br.ReadString((int)num6, "Description");
            }
            else
            {
                info.Description = "";
            }
            BitManipulation bitManipulation = new BitManipulation();
            info.Type = info.EquipPage;
            flag = (Strings.InStr(info.Name, "_", CompareMethod.Binary) != 0
                    || Strings.InStr(Strings.UCase(info.Name), "BOSS", CompareMethod.Binary) != 0);
            if (flag)
            {
                info.Type = 4;
            }
            else
            {
                flag = flag2;
                if (flag)
                {
                    info.Type = 7;
                }
                else
                {
                    flag = (info.EquipPage == 1);
                    if (flag)
                    {
                        bool flag3 = bitManipulation.CheckBit((long)info.EquipSlots, 6)
                                     || bitManipulation.CheckBit((long)info.EquipSlots, 8);
                        if (flag3)
                        {
                            info.Type = 1;
                        }
                        else
                        {
                            info.Type = 6;
                        }
                    }
                }
            }
            try
            {
                Output.ItemNano(info, list.ToArray());
            }
            catch (SQLiteException expr_371)
            {
                ProjectData.SetProjectError(expr_371);
                ReturnCode = ParserReturns.Crashed;
                ProjectData.ClearProjectError();
            }
            catch (Exception expr_387)
            {
                ProjectData.SetProjectError(expr_387);
                Exception ex3 = expr_387;
                CustomException ex4 = new CustomException(ex3.ToString(), "Plugin Error");
                ReturnCode = ParserReturns.Crashed;
                ProjectData.ClearProjectError();
            }
            bool flag4 = true;
            checked
            {
                while (br.Ptr < br.Buffer.Length - 8 && flag4)
                {
                    switch (br.ReadInt32("ParseSetsKeyNum"))
                    {
                        case 2:
                            this.ParseFunctionSet(ref flag4);
                            break;
                        case 3:
                        case 5:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 21:
                            goto IL_4BF;
                        case 4:
                            this.ParseAtkDefSet(ref flag4);
                            break;
                        case 6:
                            {
                                br.SkipBytes(4, "Pre-SkipSet");
                                int count = br.ReadCNum("SkipSet") * 8;
                                br.SkipBytes(count, "Post-SkipSet");
                                break;
                            }
                        case 14:
                            this.ParseAnimSoundSet(1, ref flag4);
                            break;
                        case 20:
                            this.ParseAnimSoundSet(2, ref flag4);
                            break;
                        case 22:
                            this.ParseActionSet(ref flag4);
                            break;
                        case 23:
                            this.ParseShopHash(ref flag4);
                            break;
                        default:
                            goto IL_4BF;
                    }
                    continue;
                IL_4BF:
                    flag4 = this.CritError("Invalid KeyNum");
                }
                try
                {
                    Output.ItemNano_End();
                }
                catch (SQLiteException expr_50A)
                {
                    ProjectData.SetProjectError(expr_50A);
                    ReturnCode = ParserReturns.Crashed;
                    ProjectData.ClearProjectError();
                }
                catch (Exception expr_520)
                {
                    ProjectData.SetProjectError(expr_520);
                    Exception ex5 = expr_520;
                    CustomException ex6 = new CustomException(ex5.ToString(), "Plugin Error");
                    ReturnCode = ParserReturns.Crashed;
                    ProjectData.ClearProjectError();
                }
            }
        }
Ejemplo n.º 2
0
 private void GetCRCs()
 {
     this.lblStat.Text = "Reading Checksums...";
     Parser.GZB = new gzbFile(this.OldDF, FileMode.Open, CompressionMode.Decompress);
     Parser.GZB.ReadHeader();
     while (ReturnCode == ParserReturns.Parsing)
     {
         gzbFile.FileXRDB4Record fileXRDB4Record = Parser.GZB.ReadRecord();
         bool flag = fileXRDB4Record.MarkerTag != -559038242;
         if (flag)
         {
             CustomException ex =
                 new CustomException(
                     string.Format("{0}{1}{0}{2}is corrupt!", '"', Parser.GZB.FileStream.Name, "\r\n"),
                     "Corrupted data file detected");
             ReturnCode = ParserReturns.Failed;
             return;
         }
         flag = (fileXRDB4Record.RecordType == 0);
         if (flag)
         {
             break;
         }
         string key = Conversions.ToString(fileXRDB4Record.RecordType) + ":"
                      + Conversions.ToString(fileXRDB4Record.RecordNum);
         this.Checksums.Add(key, fileXRDB4Record.RecordCRC);
         this.pbProg.Value =
             checked(
                 (int)
                 Math.Round(
                     unchecked(
                     (double)Parser.GZB.FileStream.Position / (double)Parser.GZB.FileStream.Length * 100.0)));
         Main.DoEvents();
     }
     Parser.GZB.Close();
     Parser.GZB = null;
 }
Ejemplo n.º 3
0
 private void DoParse()
 {
     checked
     {
         while (ReturnCode == ParserReturns.Parsing)
         {
             gzbFile.FileXRDB4Record xR = Parser.GZB.ReadRecord();
             bool flag = xR.MarkerTag != -559038242;
             if (flag)
             {
                 CustomException ex =
                     new CustomException(
                         string.Format("{0}{1}{0}{2}is corrupt!", '"', Parser.GZB.FileStream.Name, "\r\n"),
                         "Corrupted data file detected");
                 Abort("Corrupt Datafile");
                 ReturnCode = ParserReturns.Failed;
                 break;
             }
             string key = Conversions.ToString(xR.RecordType) + ":" + Conversions.ToString(xR.RecordNum);
             flag = this.Blacklist.ContainsKey(key);
             if (!flag)
             {
                 Plugin.ChangeStates changeStates = Plugin.ChangeStates.NewRecord;
                 flag = this.Checksums.ContainsKey(key);
                 bool flag2;
                 if (flag)
                 {
                     flag2 = Operators.ConditionalCompareObjectNotEqual(this.Checksums[key], xR.RecordCRC, false);
                     if (flag2)
                     {
                         changeStates = Plugin.ChangeStates.ModifiedRecord;
                     }
                     else
                     {
                         changeStates = Plugin.ChangeStates.NoChange;
                     }
                 }
                 Application.DoEvents();
                 this.AOID = xR.RecordNum;
                 int recordType = xR.RecordType;
                 flag2 = (recordType == 0);
                 if (flag2)
                 {
                     ReturnCode = ParserReturns.Success;
                     break;
                 }
                 flag2 = (recordType == 1000020 || recordType == 1040005);
                 if (flag2)
                 {
                     this.ParseItemNano(xR, changeStates);
                 }
                 else
                 {
                     try
                     {
                         flag2 = !Output.OtherData_Begin(xR.RecordNum, xR.RecordType, changeStates);
                         if (flag2)
                         {
                             continue;
                         }
                         Output.OtherData(xR.RecordData);
                         Output.OtherData_End();
                     }
                     catch (SQLiteException expr_197)
                     {
                         ProjectData.SetProjectError(expr_197);
                         ReturnCode = ParserReturns.Crashed;
                         ProjectData.ClearProjectError();
                     }
                     catch (Exception expr_1AD)
                     {
                         ProjectData.SetProjectError(expr_1AD);
                         Exception ex2 = expr_1AD;
                         CustomException ex3 = new CustomException(ex2.ToString(), "Plugin Error");
                         ReturnCode = ParserReturns.Crashed;
                         ProjectData.ClearProjectError();
                     }
                 }
                 Main.TotalParsed++;
             }
         }
     }
 }
Ejemplo n.º 4
0
 private int CleanReturn()
 {
     try
     {
         bool flag = Parser.GZB != null;
         if (flag)
         {
             Parser.GZB.Close();
         }
         Parser.GZB = null;
     }
     catch (SQLiteException expr_24)
     {
         ProjectData.SetProjectError(expr_24);
         ReturnCode = ParserReturns.Crashed;
         ProjectData.ClearProjectError();
     }
     catch (Exception expr_39)
     {
         ProjectData.SetProjectError(expr_39);
         ProjectData.ClearProjectError();
     }
     return (int)ReturnCode;
 }
Ejemplo n.º 5
0
 public ParserReturns Parse()
 {
     SkipCompare = (Operators.CompareString(this.OldDF, "", false) == 0);
     ReturnCode = ParserReturns.Parsing;
     Main.TotalParsed = 0;
     bool flag = SkipCompare & !Main.JobParse;
     if (flag)
     {
         this.lblStat.Text = "Full Parse?";
         flag =
             (Interaction.MsgBox(
                 string.Format(
                     "You're about to perform a full parse.{0}This operation could take a long time.{0}Are you sure you want to do this?",
                     "\r\n"),
                 MsgBoxStyle.YesNo | MsgBoxStyle.Critical | MsgBoxStyle.Question,
                 null) == MsgBoxResult.No);
         if (flag)
         {
             ParserReturns result = ParserReturns.Aborted;
             return result;
         }
     }
     else
     {
         flag = !SkipCompare;
         if (flag)
         {
             this.GetCRCs();
         }
         flag = (ReturnCode != ParserReturns.Parsing);
         if (flag)
         {
             ParserReturns result = (ParserReturns)this.CleanReturn();
             return result;
         }
     }
     Parser.GZB = new gzbFile(this.NewDF, FileMode.Open, CompressionMode.Decompress);
     Parser.XH = Parser.GZB.ReadHeader();
     this.lblStat.Text = "Initializing Plugin...";
     Main.DoEvents();
     cThread = new Thread(this.PreParse);
     cThread.IsBackground = false;
     cThread.Priority = Pri;
     cThread.Start();
     int pri = (int)Pri;
     checked
     {
         while (cThread.IsAlive)
         {
             flag = (Pri != (ThreadPriority)pri);
             if (flag)
             {
                 pri = (int)Pri;
                 Parser.cmbPrior.SelectedIndex = (ThreadPriority.Highest - Pri);
             }
             Main.DoEvents();
         }
         flag = (ReturnCode != ParserReturns.Parsing);
         ParserReturns result;
         if (flag)
         {
             result = (ParserReturns)this.CleanReturn();
         }
         else
         {
             this.LoadFunctionSets(Parser.XH.FileVer);
             this.lblStat.Text = "Parsing...";
             Main.DoEvents();
             pThread = new Thread(this.DoParse);
             pThread.IsBackground = false;
             pThread.Priority = Pri;
             pThread.Start();
             while (ReturnCode == ParserReturns.Parsing)
             {
                 this.pbProg.Value =
                     (int)
                     Math.Round(
                         unchecked(
                         (double)Parser.GZB.FileStream.Position / (double)Parser.GZB.FileStream.Length * 100.0));
                 this.pbProg.Refresh();
                 flag = (Pri != (ThreadPriority)pri);
                 if (flag)
                 {
                     pri = (int)Pri;
                     Parser.cmbPrior.SelectedIndex = (ThreadPriority.Highest - Pri);
                 }
                 Main.DoEvents();
             }
             int num = this.CleanReturn();
             flag = (ReturnCode != ParserReturns.Success);
             if (flag)
             {
                 result = (ParserReturns)num;
             }
             else
             {
                 this.lblStat.Text = "Finalizing...";
                 cThread = new Thread(this.PostParse);
                 cThread.IsBackground = false;
                 cThread.Priority = Pri;
                 cThread.Start();
                 while (cThread.IsAlive)
                 {
                     flag = (Pri != (ThreadPriority)pri);
                     if (flag)
                     {
                         pri = (int)Pri;
                         Parser.cmbPrior.SelectedIndex = (ThreadPriority.Highest - Pri);
                     }
                     Main.DoEvents();
                 }
                 result = (ParserReturns)this.CleanReturn();
             }
         }
         return result;
     }
 }
Ejemplo n.º 6
0
 private void PreParse()
 {
     try
     {
         Output.Parse_Begin(Main.ParsePath, Main.pvStr(Parser.XH.FileVer, "."), SkipCompare, Main.PCMD);
     }
     catch (SQLiteException expr_32)
     {
         ProjectData.SetProjectError(expr_32);
         ReturnCode = ParserReturns.Crashed;
         ProjectData.ClearProjectError();
     }
     catch (Exception expr_47)
     {
         ProjectData.SetProjectError(expr_47);
         Exception ex = expr_47;
         CustomException ex2 = new CustomException(ex.ToString(), "Plugin Error");
         ReturnCode = ParserReturns.Crashed;
         ProjectData.ClearProjectError();
     }
 }
Ejemplo n.º 7
0
 private void PostParse()
 {
     try
     {
         Output.Parse_End(false);
     }
     catch (SQLiteException expr_10)
     {
         ProjectData.SetProjectError(expr_10);
         ReturnCode = ParserReturns.Crashed;
         ProjectData.ClearProjectError();
     }
     catch (Exception expr_25)
     {
         ProjectData.SetProjectError(expr_25);
         Exception ex = expr_25;
         CustomException ex2 = new CustomException(ex.ToString(), "Plugin Error");
         ReturnCode = ParserReturns.Crashed;
         ProjectData.ClearProjectError();
     }
 }
Ejemplo n.º 8
0
 public void ForceAbort(string Msg)
 {
     myAbortMsg = Msg;
     ReturnCode = ParserReturns.Aborted;
     bool flag = Parser.GZB != null;
     if (flag)
     {
         Parser.GZB.Close();
     }
 }
Ejemplo n.º 9
0
 private static void Abort(string Msg)
 {
     try
     {
         myAbortMsg = Msg;
         Output.Parse_End(true);
     }
     catch (SQLiteException expr_16)
     {
         ProjectData.SetProjectError(expr_16);
         ReturnCode = ParserReturns.Crashed;
         ProjectData.ClearProjectError();
     }
     catch (Exception expr_2B)
     {
         ProjectData.SetProjectError(expr_2B);
         Exception ex = expr_2B;
         CustomException ex2 = new CustomException(ex.ToString(), "Plugin Error");
         ReturnCode = ParserReturns.Crashed;
         ProjectData.ClearProjectError();
     }
     ReturnCode = ParserReturns.Aborted;
     bool flag = pThread != null;
     if (flag)
     {
         pThread.Abort();
     }
 }
Ejemplo n.º 10
0
 private void ParseAtkDefSet(ref bool R)
 {
     List<Plugin.ItemNanoKeyVal> list = new List<Plugin.ItemNanoKeyVal>();
     List<Plugin.ItemNanoKeyVal> list2 = new List<Plugin.ItemNanoKeyVal>();
     br.SkipBytes(4, "AtkDefSkip");
     int num = br.ReadCNum("MaxSet");
     int arg_34_0 = 1;
     int num2 = num;
     int num3 = arg_34_0;
     checked
     {
         while (true)
         {
             int arg_163_0 = num3;
             int num4 = num2;
             if (arg_163_0 > num4)
             {
                 break;
             }
             int value = br.ReadInt32("Key");
             int num5 = br.ReadCNum("Sets");
             int arg_63_0 = 1;
             int num6 = num5;
             int num7 = arg_63_0;
             while (true)
             {
                 int arg_152_0 = num7;
                 num4 = num6;
                 if (arg_152_0 > num4)
                 {
                     break;
                 }
                 Plugin.ItemNanoKeyVal item = default(Plugin.ItemNanoKeyVal);
                 item.AttrKey = br.ReadInt32("AttrKey");
                 item.AttrVal = br.ReadInt32("AttrVal");
                 while (true)
                 {
                     switch (value)
                     {
                         case 3:
                             {
                                 bool flag = Parser.XH.FileVer == 15000100 && this.AOID == 213413;
                                 if (flag)
                                 {
                                     value = 13;
                                     continue;
                                 }
                                 goto IL_10D;
                             }
                         case 12:
                             goto IL_110;
                         case 13:
                             goto IL_11C;
                     }
                     goto Block_1;
                 }
             IL_142:
                 num7++;
                 continue;
             IL_10D:
                 goto IL_142;
             IL_110:
                 list.Add(item);
                 goto IL_142;
             IL_11C:
                 list2.Add(item);
                 goto IL_142;
             IL_128:
                 R = this.CritError("Unhandled AtkDef Set: " + Conversions.ToString(value));
                 goto IL_142;
             Block_1:
                 goto IL_128;
             }
             num3++;
         }
         try
         {
             Output.ItemNanoAttackAndDefense(list.ToArray(), list2.ToArray());
         }
         catch (SQLiteException expr_182)
         {
             ProjectData.SetProjectError(expr_182);
             ReturnCode = ParserReturns.Crashed;
             ProjectData.ClearProjectError();
         }
         catch (Exception expr_198)
         {
             ProjectData.SetProjectError(expr_198);
             Exception ex = expr_198;
             CustomException ex2 = new CustomException(ex.ToString(), "Plugin Error");
             ReturnCode = ParserReturns.Crashed;
             R = false;
             ProjectData.ClearProjectError();
         }
     }
 }
Ejemplo n.º 11
0
 private void ParseFunctionSet(ref bool R)
 {
     int eventNum = br.ReadInt32("EventNum");
     int num = br.ReadCNum("NumFuncs");
     List<Plugin.ItemNanoFunction> list = new List<Plugin.ItemNanoFunction>();
     int arg_2F_0 = 0;
     checked
     {
         int num2 = num - 1;
         int num3 = arg_2F_0;
         while (true)
         {
             int arg_1C3_0 = num3;
             int num4 = num2;
             if (arg_1C3_0 > num4)
             {
                 goto Block_4;
             }
             Plugin.ItemNanoFunction item = default(Plugin.ItemNanoFunction);
             item.FunctionReqs = new Plugin.ItemNanoRequirement[0];
             item.FunctionArgs = new string[0];
             item.FunctionNum = br.ReadInt32("FuncNum");
             br.SkipBytes(8, "FuncHeaderPreSkip");
             int num5 = br.ReadInt32("NumReqs");
             bool flag = num5 > 0;
             if (flag)
             {
                 List<ReqsStruc> list2 = new List<ReqsStruc>();
                 int arg_AE_0 = 0;
                 int num6 = num5 - 1;
                 int num7 = arg_AE_0;
                 while (true)
                 {
                     int arg_118_0 = num7;
                     num4 = num6;
                     if (arg_118_0 > num4)
                     {
                         break;
                     }
                     list2.Add(
                         new ReqsStruc
                             {
                                 AttrNum = br.ReadInt32("RawReqsNum"),
                                 AttrVal = br.ReadInt32("RawReqsVal"),
                                 AttrOp = br.ReadInt32("RawReqsOp")
                             });
                     num7++;
                 }
                 item.FunctionReqs = this.ParseReqs(list2.ToArray());
             }
             item.TickCount = br.ReadInt32("TickCount");
             item.TickInterval = br.ReadInt32("TickInterval");
             item.Target = br.ReadInt32("Target");
             br.SkipBytes(4, "FuncHeaderPostSkip");
             item.FunctionArgs = this.ParseArgs(Conversions.ToString(item.FunctionNum), ref R);
             flag = (R == 0);
             if (flag)
             {
                 break;
             }
             list.Add(item);
             num3++;
         }
         return;
     Block_4:
         try
         {
             Output.ItemNanoEventAndFunctions(eventNum, list.ToArray());
         }
         catch (SQLiteException expr_1DD)
         {
             ProjectData.SetProjectError(expr_1DD);
             ReturnCode = ParserReturns.Crashed;
             ProjectData.ClearProjectError();
         }
         catch (Exception expr_1F3)
         {
             ProjectData.SetProjectError(expr_1F3);
             Exception ex = expr_1F3;
             CustomException ex2 = new CustomException(ex.ToString(), "Plugin Error");
             ReturnCode = ParserReturns.Crashed;
             R = false;
             ProjectData.ClearProjectError();
         }
     }
 }
Ejemplo n.º 12
0
 private void ParseAnimSoundSet(int TypeN, ref bool R)
 {
     int num = br.ReadInt32("SetType");
     int num2 = br.ReadCNum("NumFunc");
     int arg_27_0 = 1;
     int num3 = num2;
     int num4 = arg_27_0;
     checked
     {
         while (true)
         {
             int arg_13B_0 = num4;
             int num5 = num3;
             if (arg_13B_0 > num5)
             {
                 break;
             }
             List<int> list = new List<int>();
             int actionNum = br.ReadInt32("actionNum");
             int num6 = br.ReadCNum("maxSets");
             int arg_5C_0 = 1;
             int num7 = num6;
             int num8 = arg_5C_0;
             while (true)
             {
                 int arg_96_0 = num8;
                 num5 = num7;
                 if (arg_96_0 > num5)
                 {
                     break;
                 }
                 int item = br.ReadInt32("animNum" + Conversions.ToString(num8));
                 list.Add(item);
                 num8++;
             }
             try
             {
                 switch (TypeN)
                 {
                     case 1:
                         Output.ItemNanoAnimSets(actionNum, list.ToArray());
                         break;
                     case 2:
                         Output.ItemNanoSoundSets(actionNum, list.ToArray());
                         break;
                     default:
                         throw new Exception("Xyphos, you're an idiot!");
                 }
             }
             catch (SQLiteException expr_E9)
             {
                 ProjectData.SetProjectError(expr_E9);
                 ReturnCode = ParserReturns.Crashed;
                 ProjectData.ClearProjectError();
             }
             catch (Exception expr_FF)
             {
                 ProjectData.SetProjectError(expr_FF);
                 Exception ex = expr_FF;
                 CustomException ex2 = new CustomException(ex.ToString(), "Plugin Error");
                 ReturnCode = ParserReturns.Crashed;
                 R = false;
                 ProjectData.ClearProjectError();
             }
             num4++;
         }
     }
 }
Ejemplo n.º 13
0
 private void ParseActionSet(ref bool R)
 {
     bool flag = br.ReadInt32("&H24 Check") != 36;
     if (flag)
     {
         throw new Exception("Why am I here?");
     }
     int arg_3D_0 = 1;
     int num = br.ReadCNum("MaxSets");
     int num2 = arg_3D_0;
     checked
     {
         while (true)
         {
             int arg_160_0 = num2;
             int num3 = num;
             if (arg_160_0 > num3)
             {
                 break;
             }
             int actionNum = br.ReadInt32("actionNum");
             int num4 = br.ReadCNum("NumReqs");
             Plugin.ItemNanoRequirement[] requirements = new Plugin.ItemNanoRequirement[0];
             flag = (num4 > 0);
             if (flag)
             {
                 List<ReqsStruc> list = new List<ReqsStruc>();
                 int arg_86_0 = 0;
                 int num5 = num4 - 1;
                 int num6 = arg_86_0;
                 while (true)
                 {
                     int arg_F0_0 = num6;
                     num3 = num5;
                     if (arg_F0_0 > num3)
                     {
                         break;
                     }
                     list.Add(
                         new ReqsStruc
                             {
                                 AttrNum = br.ReadInt32("RawReqsNum"),
                                 AttrVal = br.ReadInt32("RawReqsVal"),
                                 AttrOp = br.ReadInt32("RawReqsOp")
                             });
                     num6++;
                 }
                 requirements = this.ParseReqs(list.ToArray());
             }
             try
             {
                 Output.ItemNanoAction(actionNum, requirements);
             }
             catch (SQLiteException expr_111)
             {
                 ProjectData.SetProjectError(expr_111);
                 ReturnCode = ParserReturns.Crashed;
                 ProjectData.ClearProjectError();
             }
             catch (Exception expr_127)
             {
                 ProjectData.SetProjectError(expr_127);
                 Exception ex = expr_127;
                 CustomException ex2 = new CustomException(ex.ToString(), "Plugin Error");
                 ReturnCode = ParserReturns.Crashed;
                 R = false;
                 ProjectData.ClearProjectError();
             }
             num2++;
         }
     }
 }
Ejemplo n.º 14
0
 private void ParseShopHash(ref bool R)
 {
     List<Plugin.ItemNanoFunction> list = new List<Plugin.ItemNanoFunction>();
     int eventNum = br.ReadInt32("EventNum");
     int num = br.ReadCNum("NumFuncs");
     int arg_2D_0 = 1;
     int num2 = num;
     int num3 = arg_2D_0;
     checked
     {
         while (true)
         {
             int arg_151_0 = num3;
             int num4 = num2;
             if (arg_151_0 > num4)
             {
                 break;
             }
             string text = br.ReadString(4, "StrArg");
             int num5 = (int)br.ReadByte("numA");
             int num6 = (int)br.ReadByte("numB");
             bool flag = num5 == 0 && num6 == 0;
             if (flag)
             {
                 num5 = (int)br.ReadInt16("numA2");
                 num6 = (int)br.ReadInt16("numB2");
             }
             int count = Math.Min(11, br.Buffer.Length - br.Ptr);
             br.SkipBytes(count, "ShopHashSkip");
             list.Add(
                 new Plugin.ItemNanoFunction
                     {
                         FunctionArgs =
                             new[]
                                 {
                                     text, Conversions.ToString(num5),
                                     Conversions.ToString(num6)
                                 },
                         FunctionReqs = new Plugin.ItemNanoRequirement[0],
                         Target = 255,
                         TickCount = 1,
                         TickInterval = 0
                     });
             num3++;
         }
         try
         {
             Output.ItemNanoEventAndFunctions(eventNum, list.ToArray());
         }
         catch (SQLiteException expr_16B)
         {
             ProjectData.SetProjectError(expr_16B);
             ReturnCode = ParserReturns.Crashed;
             ProjectData.ClearProjectError();
         }
         catch (Exception expr_181)
         {
             ProjectData.SetProjectError(expr_181);
             Exception ex = expr_181;
             CustomException ex2 = new CustomException(ex.ToString(), "Plugin Error");
             ReturnCode = ParserReturns.Crashed;
             R = false;
             ProjectData.ClearProjectError();
         }
     }
 }