public override void ModifyTooltips(Item item, List <TooltipLine> tooltips) { if (item.IsValid() && item.Enchantable()) { TooltipHack.FixTooltips(item, tooltips); try { VitriBuff data = GetData(item).buff; if (data != null) { int name = tooltips.FindIndex(a => a.mod == "Terraria" && a.Name == "ItemName"); if (name != -1) { tooltips.Insert(++name, new TooltipLine(Vitrium.Instance, "V:I:Bufftip", data.Name) { overrideColor = Terraria.ID.Colors.RarityPurple }); } } } catch (Exception e) { Main.NewTextMultiline(e.ToString()); } } }
public static void AddBuff(this Player player, string buffname, int duration = 2) { buffname = buffname.ToLower(); int id = VPlayer.GetData(player).GlobalID; if (AllPlayerBuffers.TryGetValue(id, out Dictionary <string, int> map)) { if (!map.ContainsKey(buffname)) { int vanilla = TranslateVanilla(buffname); VitriBuff vitri = TranslateVitri(buffname); if ((vanilla != -1 && !player.buffImmune[vanilla]) || (vitri != null && !player.buffImmune[vitri.Type])) { map.Add(buffname, duration); } } return; } throw new KeyNotFoundException($"Error in BuffCache.AddBuff: '{player.name}' was not given a buff cache!"); }
private static void LoadVitriBuffs() { Type[] types = Mod.Code.GetTypes(); foreach (Type type in types) { if (!type.IsAbstract && type.IsSubclassOf(typeof(VitriBuff))) { VitriBuff buff = TranslateVitri(type.Name); string name = type.Name.ToLower(); if (!VitriumBuffs.ContainsKey(name)) { Vitrium.Logger.Debug(name); VitriumBuffs.Add(name, buff.Type); } } } Vitrium.Logger.Debug(""); foreach (string name in VitriumBuffs.Keys) { Vitrium.Logger.Debug(TranslateVitri(name).Name); } }
public override void PostUpdate() { if (Main.mouseItem != mouse) { mouse = Main.mouseItem; // cache mouse item } if (player.selectedItem != selected) { selected = player.selectedItem; // cache selected item } if (mouse != null && mouse.IsValid() && mouse.Enchantable() && (mouse.IsWeapon() || mouse.IsTool())) { VitriBuff data = VItem.GetData(mouse).buff; if (data != null) { player.AddBuff(data.GetType().Name); } } else if (player.inventory[selected] != null && player.inventory[selected].IsValid() && player.inventory[selected].Enchantable() && (player.inventory[selected].IsWeapon() || player.inventory[selected].IsTool())) { VitriBuff data = VItem.GetData(player.inventory[selected]).buff; if (data != null) { player.AddBuff(data.GetType().Name); } } if (equips.Length < 8 + player.extraAccessorySlots) { Array.Resize(ref equips, 8 + player.extraAccessorySlots); // account for dark heart and similar items } for (int i = 0; i < 8 + player.extraAccessorySlots; i++) { if (equips[i] != player.armor[i]) { equips[i] = player.armor[i]; // cache player armor and accessories that aren't vanity or dyes //Main.NewText($"Equipped {equips[i]?.Name}"); } if (equips[i] != null && equips[i].IsValid() && equips[i].Enchantable()) { VitriBuff data = VItem.GetData(equips[i]).buff; if (data != null) { player.AddBuff(data.GetType().Name); } } } }
public override void UpdateInventory(Item item, Player player) { if (!item.IsValid() || (item.IsValid() && !item.Enchantable())) { Hash = null; buff = null; return; } }
public override bool PreAI(Projectile projectile) { if (projectile.minion && buff == null) { buff = VItem.GetData(Main.player[projectile.owner].inventory[Main.player[projectile.owner].selectedItem]).buff; } return(base.PreAI(projectile)); }
public override void NetReceive(Item item, BinaryReader reader) { Hash = reader.ReadString(); if (Hash == "NULL") { Hash = null; } string buffname = reader.ReadString(); buff = buffname == "NULL" ? null : (VitriBuff)Vitrium.Instance.GetBuff(buffname); buff?.NetReceive(item, reader); }
public static void BuildWeightedBuffsFor(Item item) { WeightedBuffs.Clear(); foreach (string name in VitriumBuffs.Keys) { VitriBuff buff = TranslateVitri(name); if (buff.IApplicableTo(item)) { WeightedBuffs.Add(buff, buff.Weight); WeightedBuffs.Add(null, buff.Weight * 0.25d); } } }
public VitriBuff[] NewBuffs(Item item) { VitriBuff[] ret = new VitriBuff[3]; int i = 0; int j = 0; while (j < 3) { ret[i] = BuffCache.GetRandomBuff(item); if (ret[i] != null) { i++; } j++; } return(ret); }
public static VitriBuff TranslateVitri(string name) { name = name.ToLower(); VitriBuff ret = null; if (VitriumBuffs.TryGetValue(name, out int id)) { ret = (VitriBuff)ModContent.GetModBuff(id); } if (ret == null) { ret = (VitriBuff)Mod.GetBuff(name); } return(ret); }
public override void Load(Item item, TagCompound tag) { Hash = tag.GetString("ItemHash"); buff = (VitriBuff)Vitrium.Instance.GetBuff(tag.GetString("ItemBuff")); buff?.Load(item, tag); }
public void Clone(VItem item) { Hash = item.Hash; buff = item.buff; }