Пример #1
0
        private string CreateGetFlagString(LocationID locationID)
        {
            string flagString = string.Empty;

            if (locationToItemMap.TryGetValue(locationID, out ItemID newItemID))
            {
                ItemInfo newItemInfo = ItemDB.GetItemInfo(newItemID);

                if (newItemInfo.boxName.Equals("Crystal S"))
                {
                    flagString = "\n[@take,Crystal S,02item,1]";
                }

                L2FlagBoxEnd[] getFLags = CreateGetFlags(newItemID, newItemInfo);
                if (getFLags != null)
                {
                    for (int i = 0; i < getFLags.Length; i++)
                    {
                        L2FlagBoxEnd flag = getFLags[i];
                        if (flag.calcu == CALCU.ADD)
                        {
                            flagString += string.Format("\n[@setf,{0},{1},+,{2}]", flag.seet_no1, flag.flag_no1, flag.data);
                        }
                        else if (flag.calcu == CALCU.EQR)
                        {
                            flagString += string.Format("\n[@setf,{0},{1},=,{2}]", flag.seet_no1, flag.flag_no1, flag.data);
                        }
                    }
                }
            }
            return(flagString);
        }
Пример #2
0
        private string ChangeTalkStringAndFlagCheck(LocationID locationID, string original)
        {
            int id;

            if (locationToItemMap.TryGetValue((int)locationID, out id))
            {
                ItemID   newItemID   = (ItemID)id;
                ItemInfo newItemInfo = ItemFlags.GetItemInfo(newItemID);
                ItemData newItemData = GetNewItemData(newItemInfo);

                int flagValue = 0;

                if (newItemID == ItemID.ChainWhip || newItemID == ItemID.SilverShield || newItemID == ItemID.MobileSuperx3P)
                {
                    flagValue = 1;
                }
                else if (newItemID == ItemID.FlailWhip || newItemID == ItemID.AngelShield)
                {
                    flagValue = 2;
                }

                //TODO:put this is into a method to remove redundancy
                string takeString;
                if (newItemInfo.boxName.Equals("Crystal S") || newItemInfo.boxName.Equals("Sacred Orb") || newItemInfo.boxName.Equals("MSX3p"))
                {
                    takeString = String.Format("[@take,{0},02item,1]\n", newItemInfo.boxName);
                }
                else
                {
                    takeString = String.Format("[@take,{0},02item,1]\n", newItemInfo.shopName);
                }

                //if the item has more than just its set flags add the flags to the mojiscript string
                L2FlagBoxEnd[] getFLags = ItemFlags.GetItemGetFlags(newItemID);
                if (getFLags != null)
                {
                    for (int i = 0; i < getFLags.Length; i++)
                    {
                        L2FlagBoxEnd flag = getFLags[i];
                        if (flag.calcu == CALCU.ADD)
                        {
                            takeString += String.Format("[@setf,{0},{1},+,{2}]\n", flag.seet_no1, flag.flag_no1, flag.data);
                        }
                        else if (flag.calcu == CALCU.EQR)
                        {
                            takeString += String.Format("[@setf,{0},{1},=,{2}]\n", flag.seet_no1, flag.flag_no1, flag.data);
                        }
                    }
                }

                return(String.Format(original, (int)newItemData.getItemName(), flagValue, takeString));
            }

            return(original);
        }
 public void Update()
 {
     if (flags.Count > 0)
     {
         byte[] data  = new byte[3 * flags.Count];
         int    index = 0;
         while (flags.Count > 0)
         {
             L2FlagBoxEnd l2Flag = flags.Dequeue();
             data[index + 0] = (byte)l2Flag.seet_no1;
             data[index + 1] = (byte)l2Flag.flag_no1;
             data[index + 2] = (byte)l2Flag.data;
             index          += 3;
         }
         Send(data);
     }
 }
Пример #4
0
        private string ChangeTalkString(LocationID locationID, string original)
        {
            if (locationToItemMap.TryGetValue((int)locationID, out int id))
            {
                ItemID newItemID = (ItemID)id;

                //get the item data for the new item
                ItemInfo newItemInfo = ItemFlags.GetItemInfo(newItemID);

                //Sacred orbs might require some special work here if setting the orbcount flag doesnt give you the level up
                string take;
                if (newItemInfo.boxName.Equals("Crystal S") || newItemInfo.boxName.Equals("Sacred Orb") || newItemInfo.boxName.Equals("MSX3p"))
                {
                    take = String.Format("[@take,{0},02item,1]\n", newItemInfo.boxName);
                }
                else
                {
                    take = String.Format("[@take,{0},02item,1]\n", newItemInfo.shopName);
                }

                //if the item has more than just its set flags add the flags to the mojiscript string
                L2FlagBoxEnd[] getFLags = ItemFlags.GetItemGetFlags(newItemID);
                if (getFLags != null)
                {
                    for (int i = 0; i < getFLags.Length; i++)
                    {
                        L2FlagBoxEnd flag = getFLags[i];
                        if (flag.calcu == CALCU.ADD)
                        {
                            take += String.Format("[@setf,{0},{1},+,{2}]\n", flag.seet_no1, flag.flag_no1, flag.data);
                        }
                        else if (flag.calcu == CALCU.EQR)
                        {
                            take += String.Format("[@setf,{0},{1},=,{2}]\n", flag.seet_no1, flag.flag_no1, flag.data);
                        }
                    }
                }

                return(String.Format(original, take));
            }
            //should never get to here this will break this characters dialogue
            return(String.Empty);
        }
Пример #5
0
        private string ChangeTalkString(LocationID locationID, string original)
        {
            if (locationToItemMap.TryGetValue(locationID, out ItemID newItemID))
            {
                ItemInfo newItemInfo = ItemDB.GetItemInfo(newItemID);

                string take;
                if (newItemInfo.boxName.Equals("Crystal S") || newItemInfo.boxName.Equals("Sacred Orb") || newItemInfo.boxName.Equals("MSX3p"))
                {
                    take = string.Format("[@take,{0},02item,1]\n", newItemInfo.boxName);
                }
                else
                {
                    take = string.Format("[@take,{0},02item,1]\n", newItemInfo.shopName);
                }

                //if the item has more than just its set flags add the flags to the mojiscript string
                L2FlagBoxEnd[] getFLags = CreateGetFlags(newItemID, newItemInfo);
                if (getFLags != null)
                {
                    for (int i = 0; i < getFLags.Length; i++)
                    {
                        L2FlagBoxEnd flag = getFLags[i];
                        if (flag.calcu == CALCU.ADD)
                        {
                            take += string.Format("[@setf,{0},{1},+,{2}]\n", flag.seet_no1, flag.flag_no1, flag.data);
                        }
                        else if (flag.calcu == CALCU.EQR)
                        {
                            take += string.Format("[@setf,{0},{1},=,{2}]\n", flag.seet_no1, flag.flag_no1, flag.data);
                        }
                    }
                }

                return(string.Format(original, take));
            }
            return(string.Empty);
        }
Пример #6
0
        public L2FlagBoxEnd[] CreateGetFlags(ItemID itemID, ItemInfo itemInfo)
        {
            ItemID[] storyItems = { ItemID.DjedPillar,      ItemID.Mjolnir,      ItemID.AncientBattery, ItemID.LampofTime,  ItemID.PochetteKey,
                                    ItemID.PyramidCrystal,  ItemID.Vessel,       ItemID.EggofCreation,  ItemID.GiantsFlute, ItemID.CogofAntiquity,ItemID.MulanaTalisman,
                                    ItemID.HolyGrail,       ItemID.Gloves,       ItemID.DinosaurFigure, ItemID.GaleFibula,  ItemID.FlameTorc,     ItemID.PowerBand,     ItemID.GrappleClaw,
                                    ItemID.GaneshaTalisman, ItemID.MaatsFeather, ItemID.Feather,        ItemID.FreysShip,   ItemID.Harp,          ItemID.DestinyTablet, ItemID.SecretTreasureofLife,
                                    ItemID.OriginSigil,     ItemID.BirthSigil,   ItemID.LifeSigil,      ItemID.DeathSigil,  ItemID.ClaydollSuit };

            L2FlagBoxEnd[] getFlags = null;
            if (itemID >= ItemID.SacredOrb0 && itemID <= ItemID.SacredOrb9)
            {
                getFlags    = new L2FlagBoxEnd[2];
                getFlags[0] = new L2FlagBoxEnd {
                    calcu = CALCU.EQR, seet_no1 = 2, flag_no1 = itemInfo.itemFlag, data = 1
                };
                getFlags[1] = new L2FlagBoxEnd {
                    calcu = CALCU.ADD, seet_no1 = 0, flag_no1 = 2, data = 1
                };
            }
            else if (itemID >= ItemID.CrystalSkull1 && itemID <= ItemID.CrystalSkull12)
            {
                getFlags    = new L2FlagBoxEnd[3];
                getFlags[0] = new L2FlagBoxEnd {
                    calcu = CALCU.EQR, seet_no1 = 2, flag_no1 = itemInfo.itemFlag, data = 1
                };
                getFlags[1] = new L2FlagBoxEnd {
                    calcu = CALCU.ADD, seet_no1 = 0, flag_no1 = 32, data = 1
                };
                getFlags[2] = new L2FlagBoxEnd {
                    calcu = CALCU.ADD, seet_no1 = 3, flag_no1 = 30, data = 4
                };
            }
            else if ((itemID >= ItemID.AnkhJewel1 && itemID <= ItemID.AnkhJewel9) || Array.IndexOf(storyItems, itemID) > -1)
            {
                getFlags    = new L2FlagBoxEnd[2];
                getFlags[0] = new L2FlagBoxEnd {
                    calcu = CALCU.EQR, seet_no1 = 2, flag_no1 = itemInfo.itemFlag, data = 1
                };
                getFlags[1] = new L2FlagBoxEnd {
                    calcu = CALCU.ADD, seet_no1 = 3, flag_no1 = 30, data = 4
                };
            }
            else
            {
                getFlags = new L2FlagBoxEnd[1];
                short flagValue = 1;
                if (itemID == ItemID.ChainWhip || itemID == ItemID.SilverShield || itemID == ItemID.MobileSuperx3P)
                {
                    flagValue = 2;
                }
                else if (itemID == ItemID.FlailWhip || itemID == ItemID.AngelShield)
                {
                    flagValue = 3;
                }

                getFlags[0] = new L2FlagBoxEnd {
                    calcu = CALCU.EQR, seet_no1 = 2, flag_no1 = itemInfo.itemFlag, data = flagValue
                };
            }

            return(getFlags);
        }