public int AddEquipTexture(EquipTexture equipTexture, ModItem item, EquipType type, string name, string texture, string armTexture = "", string femaleTexture = "") { int slot = EquipLoader.ReserveEquipID(type); equipTexture.Texture = texture; equipTexture.mod = this; equipTexture.Name = name; equipTexture.Type = type; equipTexture.Slot = slot; equipTexture.item = item; EquipLoader.equipTextures[type][slot] = equipTexture; ModLoader.GetTexture(texture); if (type == EquipType.Body) { EquipLoader.armTextures[slot] = armTexture; EquipLoader.femaleTextures[slot] = femaleTexture.Length > 0 ? femaleTexture : texture; ModLoader.GetTexture(armTexture); ModLoader.GetTexture(femaleTexture); } if (item != null && (type == EquipType.Head || type == EquipType.Body || type == EquipType.Legs)) { EquipLoader.slotToId[type][slot] = item.item.type; } return(slot); }
private void AutoloadItem(Type type) { ModItem item = (ModItem)Activator.CreateInstance(type); item.mod = this; string name = type.Name; string texture = (type.Namespace + "." + type.Name).Replace('.', '/'); IList <EquipType> equips = new List <EquipType>(); if (item.Autoload(ref name, ref texture, equips)) { AddItem(name, item, texture); if (equips.Count > 0) { EquipLoader.idToSlot[item.item.type] = new Dictionary <EquipType, int>(); foreach (EquipType equip in equips) { string equipTexture = texture + "_" + equip.ToString(); string armTexture = texture + "_Arms"; string femaleTexture = texture + "_FemaleBody"; item.AutoloadEquip(equip, ref equipTexture, ref armTexture, ref femaleTexture); int slot = AddEquipTexture(item, equip, equipTexture, armTexture, femaleTexture); EquipLoader.idToSlot[item.item.type][equip] = slot; } } } }
//change Terraria.Item.Clone // Item newItem = (Item)base.MemberwiseClone(); // if (newItem.type >= ItemID.Count) // { // ItemLoader.GetItem(newItem.type).SetupModItem(newItem); // } // return newItem; internal void SetupModItem(Item item) { ModItem newItem = Clone(item); newItem.item = item; item.modItem = newItem; newItem.mod = mod; }
//change Terraria.Item.Clone // Item newItem = (Item)base.MemberwiseClone(); // if (newItem.type >= ItemID.Count) // { // ItemLoader.GetItem(newItem.type).SetupModItem(newItem); // } // return newItem; internal void SetupModItem(Item item) { ModItem newItem = (ModItem)Activator.CreateInstance(GetType()); newItem.item = item; item.modItem = newItem; newItem.mod = mod; }
public void AddItem(string name, ModItem item, string texture) { int id = ItemLoader.ReserveItemID(); item.item.name = name; item.item.ResetStats(id); items[name] = item; ItemLoader.items[id] = item; item.texture = texture; item.mod = this; }
public int ItemType(string name) { ModItem item = GetItem(name); if (item == null) { return(0); } return(item.item.type); }
internal void SetupClone(Item clone) { ModItem newItem = Clone(); newItem.item = clone; newItem.mod = mod; newItem.texture = texture; newItem.flameTexture = flameTexture; newItem.projOnSwing = projOnSwing; newItem.bossBagNPC = bossBagNPC; clone.modItem = newItem; }
internal void SetupClone(Item clone) { ModItem newItem = CloneNewInstances ? Clone(clone) : (ModItem)Activator.CreateInstance(GetType()); newItem.item = clone; newItem.mod = mod; newItem.texture = texture; newItem.flameTexture = flameTexture; newItem.projOnSwing = projOnSwing; newItem.bossBagNPC = bossBagNPC; clone.modItem = newItem; }
internal static void AnglerChat(bool turningInFish, bool anglerQuestFinished, int type, ref string chat, ref string catchLocation) { ModItem modItem = GetItem(type); if (modItem != null && !Main.anglerQuestFinished && !turningInFish) { modItem.AnglerQuestChat(ref chat, ref catchLocation); } foreach (GlobalItem globalItem in globalItems) { globalItem.AnglerChat(turningInFish, anglerQuestFinished, type, ref chat, ref catchLocation); } }
internal static void SetMatch(int type, ref int equipSlot, ref bool robes) { ModItem modItem = GetItem(type); if (modItem != null) { modItem.SetMatch(ref equipSlot, ref robes); } foreach (GlobalItem globalItem in globalItems) { globalItem.SetMatch(type, ref equipSlot, ref robes); } }
internal static void IsAnglerQuestAvailable(int itemID, ref bool notAvailable) { ModItem modItem = GetItem(itemID); if (modItem != null) { notAvailable = !modItem.IsAnglerQuestAvailable(); } foreach (GlobalItem globalItem in globalItems) { notAvailable = !globalItem.IsAnglerQuestAvailable(itemID); } }
internal static void ExtractinatorUse(ref int resultType, ref int resultStack, int extractType) { ModItem modItem = GetItem(extractType); if (modItem != null) { modItem.ExtractinatorUse(ref resultType, ref resultStack); } foreach (GlobalItem globalItem in globalItems) { globalItem.ExtractinatorUse(extractType, ref resultType, ref resultStack); } }
public void AddItem(string name, ModItem item, string texture) { int id = ItemLoader.ReserveItemID(); item.item.name = name; item.item.ResetStats(id); items[name] = item; ItemLoader.items[id] = item; item.texture = texture; item.mod = this; if (item.IsQuestFish()) { ItemLoader.questFish.Add(id); } }
/// <summary> /// Adds an equipment texture of the specified type, internal name, and associated item to your mod. /// This method is different from the other AddEquipTexture in that you can specify the class of the equipment texture, thus allowing you to override EquipmentTexture's hooks. /// All other parameters are the same as the other AddEquipTexture. /// </summary> /// <param name="equipTexture">The equip texture.</param> /// <param name="item">The item.</param> /// <param name="type">The type.</param> /// <param name="name">The name.</param> /// <param name="texture">The texture.</param> /// <param name="armTexture">The arm texture (for body slots).</param> /// <param name="femaleTexture">The female texture (for body slots), if missing the regular body texture is used.</param> /// <returns></returns> public int AddEquipTexture(EquipTexture equipTexture, ModItem item, EquipType type, string texture) { if (!loading) { throw new Exception("AddEquipTexture can only be called from Mod.Load or Mod.Autoload"); } ModContent.GetTexture(texture); //ensure texture exists equipTexture.Texture = texture; equipTexture.Mod = this; equipTexture.Name = item.Name; equipTexture.Type = type; equipTexture.Item = item; int slot = equipTexture.Slot = EquipLoader.ReserveEquipID(type); EquipLoader.equipTextures[type][slot] = equipTexture; equipTextures[Tuple.Create(item.Name, type)] = equipTexture; if (type == EquipType.Body) { if (!ModContent.TextureExists(item.FemaleTexture)) { EquipLoader.femaleTextures[slot] = texture; } else { EquipLoader.femaleTextures[slot] = item.FemaleTexture; } ModContent.GetTexture(item.ArmTexture); //ensure texture exists EquipLoader.armTextures[slot] = item.ArmTexture; } if (!EquipLoader.idToSlot.TryGetValue(item.Type, out IDictionary <EquipType, int> slots)) { EquipLoader.idToSlot[item.Type] = slots = new Dictionary <EquipType, int>(); } slots[type] = slot; if (type == EquipType.Head || type == EquipType.Body || type == EquipType.Legs) { EquipLoader.slotToId[type][slot] = item.Type; } return(slot); }
internal void SetupClone(Item clone) { ModItem newItem = Clone(); newItem.item = clone; newItem.mod = mod; newItem.texture = texture; newItem.flameTexture = flameTexture; newItem.projOnSwing = projOnSwing; newItem.bossBagNPC = bossBagNPC; clone.modItem = newItem; clone.itemInfo.Clear(); foreach (ItemInfo info in item.itemInfo) { clone.itemInfo.Add(info.Clone()); } }
public int AddEquipTexture(ModItem item, EquipType type, string texture, string armTexture = "", string femaleTexture = "") { int slot = EquipLoader.ReserveEquipID(type); EquipLoader.equips[type][texture] = slot; ModLoader.GetTexture(texture); if (type == EquipType.Body) { EquipLoader.armTextures[slot] = armTexture; EquipLoader.femaleTextures[slot] = femaleTexture.Length > 0 ? femaleTexture : texture; ModLoader.GetTexture(armTexture); ModLoader.GetTexture(femaleTexture); } if (type == EquipType.Head || type == EquipType.Body || type == EquipType.Legs) { EquipLoader.slotToId[type][slot] = item.item.type; } return(slot); }
public void AddItem(string name, ModItem item, string texture) { Type type = item.GetType(); if (type.GetMethod("UpdateAccessory", new Type[] { typeof(Player) }) != null) { throw new Exception("Item " + name + " uses an old UpdateAccessory hook"); } int id = ItemLoader.ReserveItemID(); item.item.name = name; item.item.ResetStats(id); items[name] = item; ItemLoader.items[id] = item; item.texture = texture; item.mod = this; if (item.IsQuestFish()) { ItemLoader.questFish.Add(id); } }
private void AutoloadItem(Type type) { ModItem item = (ModItem)Activator.CreateInstance(type); item.mod = this; string name = type.Name; if (item.Autoload(ref name)) { AddItem(name, item); var autoloadEquip = type.GetAttribute <AutoloadEquip>(); if (autoloadEquip != null) { foreach (var equip in autoloadEquip.equipTypes) { AddEquipTexture(item, equip, item.Name, item.Texture + '_' + equip, item.Texture + "_Arms", item.Texture + "_FemaleBody"); } } } }
internal static void HoldoutOffset(float gravDir, int type, ref Vector2 offset) { ModItem modItem = GetItem(type); if (modItem != null) { Vector2?modOffset = modItem.HoldoutOffset(); if (modOffset.HasValue) { offset.X = modOffset.Value.X; offset.Y += gravDir * modOffset.Value.Y; } } foreach (GlobalItem globalItem in globalItems) { Vector2?modOffset = globalItem.HoldoutOffset(type); if (modOffset.HasValue) { offset.X = modOffset.Value.X; offset.Y = Main.itemTexture[type].Height / 2f + gravDir * modOffset.Value.Y; } } }
public int AddEquipTexture(ModItem item, EquipType type, string name, string texture, string armTexture = "", string femaleTexture = "") { return(AddEquipTexture(new EquipTexture(), item, type, name, texture, armTexture, femaleTexture)); }
/// <summary> /// Adds an ingredient to this recipe of the given type of item and stack size. /// </summary> /// <param name="item">The item.</param> /// <param name="stack">The stack.</param> public ModRecipe AddIngredient(ModItem item, int stack = 1) => AddIngredient(item.item.type, stack);
/// <summary> /// Adds an equipment texture of the specified type, internal name, and associated item to your mod. /// (The item parameter may be null if you don't want to associate an item with the texture.) /// You can then get the ID for your texture by calling EquipLoader.GetEquipTexture, and using the EquipTexture's Slot property. /// If the EquipType is EquipType.Body, make sure that you also provide an armTexture and a femaleTexture. /// Returns the ID / slot that is assigned to the equipment texture. /// </summary> /// <param name="item">The item.</param> /// <param name="type">The type.</param> /// <param name="name">The name.</param> /// <param name="texture">The texture.</param> /// <param name="armTexture">The arm texture (for body slots).</param> /// <param name="femaleTexture">The female texture (for body slots), if missing the regular body texture is used.</param> /// <returns></returns> public int AddEquipTexture(ModItem item, EquipType type, string texture) { return(AddEquipTexture(new EquipTexture(), item, type, texture)); }
public void AddIngredient(ModItem item, int stack = 1) { this.AddIngredient(item.item.type, stack); }
public int AddEquipTexture(EquipTexture equipTexture, ModItem item, EquipType type, string name, string texture, string armTexture = "", string femaleTexture = "") { int slot = EquipLoader.ReserveEquipID(type); equipTexture.Texture = texture; equipTexture.mod = this; equipTexture.Name = name; equipTexture.Type = type; equipTexture.Slot = slot; equipTexture.item = item; EquipLoader.equipTextures[type][slot] = equipTexture; ModLoader.GetTexture(texture); if (type == EquipType.Body) { EquipLoader.armTextures[slot] = armTexture; EquipLoader.femaleTextures[slot] = femaleTexture.Length > 0 ? femaleTexture : texture; ModLoader.GetTexture(armTexture); ModLoader.GetTexture(femaleTexture); } if (item != null && (type == EquipType.Head || type == EquipType.Body || type == EquipType.Legs)) { EquipLoader.slotToId[type][slot] = item.item.type; } return slot; }
/// <summary> /// Sets the result of this recipe to the given type of item and stack size. Useful in ModItem.AddRecipes. /// </summary> /// <param name="item">The item.</param> /// <param name="stack">The stack.</param> public ModRecipe SetResult(ModItem item, int stack = 1) { this.SetResult(item.item.type, stack); return(this); }
/// <summary> /// Sets the result of this recipe to the given type of item and stack size. Useful in ModItem.AddRecipes. /// </summary> /// <param name="item">The item.</param> /// <param name="stack">The stack.</param> public ModRecipe SetResult(ModItem item, int stack = 1) => SetResult(item.item.type, stack);
public void AddItem(string name, ModItem item, string texture) { Type colorClass = typeof(Microsoft.Xna.Framework.Color); Type floatClass = typeof(float); Type floatRefClass = floatClass.MakeByRefType(); if (item.GetType().GetMethod("PreDrawInWorld", new Type[] { typeof(SpriteBatch), colorClass, colorClass, floatRefClass, floatRefClass, }) != null) { throw new OldHookException("ModItem.PreDrawInWorld"); } if (item.GetType().GetMethod("PostDrawInWorld", new Type[] { typeof(SpriteBatch), colorClass, colorClass, floatClass, floatClass }) != null) { throw new OldHookException("ModItem.PostDrawInWorld"); } int id = ItemLoader.ReserveItemID(); item.item.name = name; item.item.ResetStats(id); item.item.modItem = item; items[name] = item; ItemLoader.items.Add(item); item.texture = texture; item.mod = this; if (item.IsQuestFish()) { ItemLoader.questFish.Add(id); } }
/// <summary> /// Adds an ingredient to this recipe of the given type of item and stack size. /// </summary> /// <param name="item">The item.</param> /// <param name="stack">The stack.</param> public void AddIngredient(ModItem item, int stack = 1) { this.AddIngredient(item.item.type, stack); }
public void AddFlameTexture(ModItem item, string texture) { ModLoader.GetTexture(texture); item.flameTexture = texture; }
/// <summary> /// Adds an ingredient to this recipe of the given type of item and stack size. /// </summary> /// <param name="item">The item.</param> /// <param name="stack">The stack.</param> public ModRecipe AddIngredient(ModItem item, int stack = 1) { this.AddIngredient(item.item.type, stack); return(this); }
public void SetResult(ModItem item, int stack = 1) { this.SetResult(item.item.type, stack); }
public int AddEquipTexture(ModItem item, EquipType type, string texture, string armTexture = "", string femaleTexture = "") { int slot = EquipLoader.ReserveEquipID(type); EquipLoader.equips[type][texture] = slot; ModLoader.GetTexture(texture); if (type == EquipType.Body) { EquipLoader.armTextures[slot] = armTexture; EquipLoader.femaleTextures[slot] = femaleTexture.Length > 0 ? femaleTexture : texture; ModLoader.GetTexture(armTexture); ModLoader.GetTexture(femaleTexture); } if (type == EquipType.Head || type == EquipType.Body || type == EquipType.Legs) { EquipLoader.slotToId[type][slot] = item.item.type; } return slot; }
public int AddEquipTexture(ModItem item, EquipType type, string name, string texture, string armTexture = "", string femaleTexture = "") { return AddEquipTexture(new EquipTexture(), item, type, name, texture, armTexture, femaleTexture); }
/// <summary> /// Sets the result of this recipe to the given type of item and stack size. Useful in ModItem.AddRecipes. /// </summary> /// <param name="item">The item.</param> /// <param name="stack">The stack.</param> public void SetResult(ModItem item, int stack = 1) { this.SetResult(item.item.type, stack); }
/// <summary> /// Adds an ingredient to this recipe of the given type of item and stack size. /// </summary> /// <param name="item">The item.</param> /// <param name="stack">The stack.</param> public NewRecipeFinder AddIngredient(ModItem item, int stack = 0) => AddIngredient(item.Type, stack);