public static void DumpAffixes() { var ClassName = "Affix"; var writer = new StreamWriter(ClassName + ".cs"); Console.Write("Saving {0}...", ClassName); var l = String.Format("public enum {0} : int", ClassName); writer.WriteLine(l); writer.WriteLine("{"); var item = new Terraria.Item(); for (byte i = 1; i < Terraria_Server.Item.MAX_AFFIXS + 1; i++) { item.prefix = i; var affix = item.AffixName().Trim(); var line = "\t{0} = {1}"; if (i != Terraria_Server.Item.MAX_AFFIXS) line += ','; var toWrite = String.Format(line, affix, i); writer.WriteLine(toWrite); } writer.WriteLine("}"); writer.Flush(); writer.Close(); writer.Dispose(); Console.WriteLine("Ok"); }
public void UseTime_Set() { var terrariaItem = new Terraria.Item(); var item = new OrionItem(terrariaItem); item.UseTime = 100; Assert.Equal(100, terrariaItem.useTime); }
public void Name_Get() { var terrariaItem = new Terraria.Item { _nameOverride = "test" }; var item = new OrionItem(terrariaItem); Assert.Equal("test", item.Name); }
public void SetId() { var terrariaItem = new Terraria.Item(); var item = new OrionItem(terrariaItem); item.SetId(ItemId.Sdmg); Assert.Equal(ItemId.Sdmg, (ItemId)terrariaItem.type); }
public void UseTime_Get() { var terrariaItem = new Terraria.Item { useTime = 100 }; var item = new OrionItem(terrariaItem); Assert.Equal(100, item.UseTime); }
public void Damage_Set() { var terrariaItem = new Terraria.Item(); var item = new OrionItem(terrariaItem); item.Damage = 100; Assert.Equal(100, terrariaItem.damage); }
public void Damage_Get() { var terrariaItem = new Terraria.Item { damage = 100 }; var item = new OrionItem(terrariaItem); Assert.Equal(100, item.Damage); }
public void Name_Set() { var terrariaItem = new Terraria.Item(); var item = new OrionItem(terrariaItem); item.Name = "test"; Assert.Equal("test", terrariaItem.Name); }
// Gets an `IItem` instance corresponding to the given Terraria item, avoiding extra allocations if possible. private IItem GetItem(Terraria.Item terrariaItem) { var itemIndex = terrariaItem.whoAmI; Debug.Assert(itemIndex >= 0 && itemIndex < Count); var isConcrete = ReferenceEquals(terrariaItem, Terraria.Main.item[itemIndex]); return(isConcrete ? this[itemIndex] : new OrionItem(terrariaItem)); }
public static bool SetDefaults_SetItemDefaults(Terraria.Item __instance, int Type) { // The specially named __instance parameter is automatically filled in by Harmony to reference the Item instance that is calling this method. // The type parameter is automatically filled in by Harmony to be the same value as the type parameter that was passed to the original method. if (!PluginLoadedSuccessfully) // If there was a problem loading things for our plugin, we will abort this stub method so we dont crash Terraria. { return(true); // By returning true, we tell Harmony to allow the original method to execute } if (Type == WeaponItemID) // Only apply our weapon's Item defaults if the item that had SetDefaults called on it actually is our weapon. { // We need to do the same things that SetDefaults() does, since we will prevent the original SetDefaults() from running after our prefix here is done. if (Terraria.Main.netMode == 1 || Terraria.Main.netMode == 2) { __instance.playerIndexTheItemIsReservedFor = 255; } else { __instance.playerIndexTheItemIsReservedFor = Terraria.Main.myPlayer; } __instance.ResetStats(Type); __instance.damage = 64; // How much damage projectiles from this weapon will do __instance.mana = 10; // How much mana is required to use this weapon __instance.shoot = 3001; // ID of the Projectile to shoot when used (which is our custom projectile) __instance.shootSpeed = 5f; // Speed of the Projectile that this weapon shoots __instance.knockBack = 1.5f; // Amount of knockback dealt when this weapon's Projectile hits something __instance.value = Terraria.Item.sellPrice(0, 2, 4, 8); // How much this item is worth __instance.magic = true; // Whether or not this item is a magic weapon (and is thus affected by magic dmg/crit/etc stat boosters) __instance.noMelee = true; // Whether or not this item has a melee hitbox and melee effects when used __instance.rare = 9; // Rarity factor, which affects the color of the item's text __instance.autoReuse = true; // Allows continuous use while left mouse is held down __instance.useTime = 13; // How long it takes to use this item one time (in frames) __instance.useAnimation = 13; // How long the item stays on screen for (in frames) when it is used __instance.width = 42; // Width of the weapon __instance.height = 42; // Height of the weapon __instance.useStyle = 5; // How the item is swung/held when used __instance.UseSound = Terraria.ID.SoundID.Item158; // Sound to play when the item is used __instance.RebuildTooltip(); // Generate the item's tooltip text HHelpers.SetFieldValueWithReflection("_nameOverride", __instance, WeaponItemNameText); // Set item's name // Also, in case the async texture loading replaced our weapon's texture with something else, let's make sure the right texture is in our item's slot if (ItemGraphicAsset != null) { Terraria.GameContent.TextureAssets.Item[WeaponItemID] = ItemGraphicAsset; // Reassign the field with the asset we created earlier } return(false); // By returning false, we tell Harmony to skip over the original method } return(true); // Tell Harmony to allow the original method to execute }
private void PlayerOnUpdateArmorSets(Player.orig_UpdateArmorSets orig, Terraria.Player self, int i) { int head = self.head; int body = self.body; int legs = self.legs; Item armor0 = self.armor[0].Clone(); Item armor1 = self.armor[1].Clone(); Item armor2 = self.armor[2].Clone(); int solarCounter = self.solarCounter; bool vortexStealthActive = self.vortexStealthActive; float beetleCounter = self.beetleCounter; orig(self, i); String setBonus = self.setBonus; int solarCounter2 = self.solarCounter; bool vortexStealthActive2 = self.vortexStealthActive; float beetleCounter2 = self.beetleCounter; bool stadustBuff = self.FindBuffIndex(187) != -1; self.head = self.armor[10].headSlot; self.body = self.armor[11].bodySlot; self.legs = self.armor[12].legSlot; self.armor[0] = self.armor[10]; self.armor[1] = self.armor[11]; self.armor[2] = self.armor[12]; self.solarCounter = solarCounter; self.vortexStealthActive = vortexStealthActive; self.beetleCounter = beetleCounter; orig(self, i); self.GetModPlayer <ArmorSocialPlayer>().secondSetBonus = self.setBonus; if (self.head == 101 && self.body == 66 && self.legs == 55 && ArmorSocialConfig.BalanceSpectreHealing && ArmorSocialConfig.ArmorSocialMode == setBonusOnly) { self.magicDamage -= .4f; } self.solarCounter = Math.Max(self.solarCounter, solarCounter2); self.vortexStealthActive = self.vortexStealthActive || vortexStealthActive2; self.beetleCounter = Math.Max(self.beetleCounter, beetleCounter2); if (stadustBuff && self.FindBuffIndex(187) == -1) { self.AddBuff(187, 3600); } self.head = head; self.body = body; self.legs = legs; self.armor[0] = armor0; self.armor[1] = armor1; self.armor[2] = armor2; self.setBonus = setBonus; }
public void StackSize_Set() { var terrariaItem = new Terraria.Item { type = (int)ItemId.DirtBlock }; var item = new OrionItem(terrariaItem); item.StackSize = 123; Assert.Equal(123, terrariaItem.stack); }
public void SetPrefix() { var terrariaItem = new Terraria.Item(); terrariaItem.SetDefaults((int)ItemId.Sdmg); var item = new OrionItem(terrariaItem); item.SetPrefix(ItemPrefix.Unreal); Assert.Equal(ItemPrefix.Unreal, (ItemPrefix)terrariaItem.prefix); }
private OTAPI.HookResult PreUpdateHandler(Terraria.Item terrariaItem, ref int itemIndex) { Debug.Assert(terrariaItem != null); Debug.Assert(itemIndex >= 0 && itemIndex < Count); // Set `whoAmI` since this is never done in the vanilla server, and we depend on this field being set in // `GetItem`. terrariaItem.whoAmI = itemIndex; var item = this[itemIndex]; var evt = new ItemTickEvent(item); _events.Raise(evt, _log); return(evt.IsCanceled ? OTAPI.HookResult.Cancel : OTAPI.HookResult.Continue); }
// ============================================================================================================= // OTAPI hooks // private OTAPI.HookResult PreSetDefaultsByIdHandler( Terraria.Item terrariaItem, ref int itemId, ref bool noMatCheck) { Debug.Assert(terrariaItem != null); var item = GetItem(terrariaItem); var evt = new ItemDefaultsEvent(item) { Id = (ItemId)itemId }; _events.Raise(evt, _log); if (evt.IsCanceled) { return(OTAPI.HookResult.Cancel); } itemId = (int)evt.Id; return(OTAPI.HookResult.Continue); }
public void ItemDefaults_AbstractItem_EventTriggered() { var terrariaItem = new Terraria.Item(); var events = Mock.Of <IEventManager>(); var log = Mock.Of <ILogger>(); using var itemService = new OrionItemService(events, log); Mock.Get(events) .Setup(em => em.Raise( It.Is <ItemDefaultsEvent>( evt => ((OrionItem)evt.Item).Wrapped == terrariaItem && evt.Id == ItemId.Sdmg), log)); terrariaItem.SetDefaults((int)ItemId.Sdmg); Assert.Equal(ItemId.Sdmg, (ItemId)terrariaItem.type); Mock.Get(events).VerifyAll(); }
public static void DumpAffixes() { var ClassName = "Affix"; var writer = new StreamWriter(ClassName + ".cs"); Console.Write("Saving {0}...", ClassName); var l = String.Format("public enum {0} : int", ClassName); writer.WriteLine(l); writer.WriteLine("{"); var item = new Terraria.Item(); for (byte i = 1; i < Terraria_Server.Item.MAX_AFFIXS + 1; i++) { item.prefix = i; var affix = item.AffixName().Trim(); var line = "\t{0} = {1}"; if (i != Terraria_Server.Item.MAX_AFFIXS) { line += ','; } var toWrite = String.Format(line, affix, i); writer.WriteLine(toWrite); } writer.WriteLine("}"); writer.Flush(); writer.Close(); writer.Dispose(); Console.WriteLine("Ok"); }
public override void OnHitNPC(Terraria.Player player, SkillData data, Terraria.Item item, Terraria.NPC target, int damage, float knockback, bool crit) { OnHitNPC(player, data, target, damage); }