public override GlobalItem Clone(Item item, Item itemClone) { CRGlobalItem myClone = (CRGlobalItem)base.Clone(item, itemClone); myClone.reforges = new List <int>(reforges); myClone.orphanedModPrefixes = new Dictionary <string, List <string> >(orphanedModPrefixes); return(myClone); }
public static void RevertReforge(ref Item item) { revertingReforge = true; CRGlobalItem global = item.GetGlobalItem <CRGlobalItem>(); int revertPrefix = global.RevertPrefix; int oldPrefix = global.reforges.Last(); //Below code mostly copied from how tml handles reforging bool favorited = item.favorited; int stack = item.stack; Item r = new Item(); r.netDefaults(item.netID); //TODO: method only used here, probably a poor implementation - noted by CB r = r.CloneWithModdedDataFrom(item); if (revertPrefix > 0) { r.Prefix(revertPrefix); } item = r.Clone(); //Get new global from item global = item.GetGlobalItem <CRGlobalItem>(); //Required for the ItemText to display properly item.Center = Main.LocalPlayer.Center; item.favorited = favorited; item.stack = stack; ItemText.NewText(item, item.stack, noStack: true); Main.PlaySound(SoundID.Tink); if (global.reforges.Count > 1) { //Move last element to the start global.reforges.RemoveAt(global.reforges.Count - 1); global.reforges.Insert(0, oldPrefix); } }