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");
        }
Esempio n. 2
0
        public void UseTime_Set()
        {
            var terrariaItem = new Terraria.Item();
            var item         = new OrionItem(terrariaItem);

            item.UseTime = 100;

            Assert.Equal(100, terrariaItem.useTime);
        }
Esempio n. 3
0
        public void Name_Get()
        {
            var terrariaItem = new Terraria.Item {
                _nameOverride = "test"
            };
            var item = new OrionItem(terrariaItem);

            Assert.Equal("test", item.Name);
        }
Esempio n. 4
0
        public void SetId()
        {
            var terrariaItem = new Terraria.Item();
            var item         = new OrionItem(terrariaItem);

            item.SetId(ItemId.Sdmg);

            Assert.Equal(ItemId.Sdmg, (ItemId)terrariaItem.type);
        }
Esempio n. 5
0
        public void UseTime_Get()
        {
            var terrariaItem = new Terraria.Item {
                useTime = 100
            };
            var item = new OrionItem(terrariaItem);

            Assert.Equal(100, item.UseTime);
        }
Esempio n. 6
0
        public void Damage_Set()
        {
            var terrariaItem = new Terraria.Item();
            var item         = new OrionItem(terrariaItem);

            item.Damage = 100;

            Assert.Equal(100, terrariaItem.damage);
        }
Esempio n. 7
0
        public void Damage_Get()
        {
            var terrariaItem = new Terraria.Item {
                damage = 100
            };
            var item = new OrionItem(terrariaItem);

            Assert.Equal(100, item.Damage);
        }
Esempio n. 8
0
        public void Name_Set()
        {
            var terrariaItem = new Terraria.Item();
            var item         = new OrionItem(terrariaItem);

            item.Name = "test";

            Assert.Equal("test", terrariaItem.Name);
        }
Esempio n. 9
0
        // 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
        }
Esempio n. 11
0
        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;
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
        // =============================================================================================================
        // 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();
        }
Esempio n. 17
0
        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");
        }
Esempio n. 18
0
 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);
 }