首页 > 解决方案 > 让子弹在 TModLoader 中造成减益

问题描述

我正在尝试在 TModLoader 中制造一颗子弹,让敌人击中“冰冷”减益。根据我所做的研究,这段代码应该可以工作。每当我运行它时,它都会给我错误“ IceShot.HitNPC:找不到合适的方法来覆盖。 ”谢谢!

using Terraria;
using Terraria.ID;
using Terraria.ModLoader;

namespace Tweaks.Items
{
    public class IceShot : ModItem
    {
        public override void SetStaticDefaults()
        {
            DisplayName.SetDefault("Ice Shot");
            Tooltip.SetDefault("Inflicts the \"Chilled\" debuff");
        }

        public override void SetDefaults()
        {
            item.damage = 9;
            item.ranged = true;
            item.width = 8;
            item.height = 8;
            item.maxStack = 999;
            item.consumable = true;
            item.knockBack = 1.5f;
            item.value = 10;
            item.rare = ItemRarityID.Green;
            item.shoot = ModContent.ProjectileType<IceShotProjectile>();
            item.shootSpeed = 16f;
            item.ammo = AmmoID.Bullet;
        }

        public override void OnHitNPC(NPC target, int damage, float knockback, bool crit)
        {
            target.AddBuff(46, 180, false);
        }


    }
}

标签: c#

解决方案


我知道我很晚才回答这个问题,但这个修复非常简单。您缺少Player player参数。

而不是这个:

public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) {
    target.AddBuff(46, 180, false);
}

把这个:

public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit) {
    target.AddBuff(BuffID.Chilled, 180, false);
}

我添加了缺少的参数,并且我还将第一个参数target.AddBuff()从 46 更改为BuffID.Chilled,因为它提高了可读性。

如果错误消失但目标没有受到影响Chilled,则将此代码移动到您的IceShotProjectile.cs文件中。


推荐阅读