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); }
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); } }
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); }
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); }
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); }