XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

DeathMod

【Terraria】DeathMod (now aka Soul Harvest)

公开
关注 0 Fork 0 Star 0
UTF-8
using SoulHarvest.Common;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;

namespace SoulHarvest.Items;


/// <summary>
/// A visible receipt for a character-owned soul-seal entitlement. The authoritative
/// balance is kept in ReaperProgressionState, so copying or trading this item never
/// grants progression to another character.
/// </summary>
public abstract class ReaperSoulSealItem : ModItem
{
    public abstract ReaperStage SealStage { get; }

    public override string Texture => "SoulHarvest/Items/Soul";

    public override void SetStaticDefaults()
    {
        Item.ResearchUnlockCount = 0;
    }

    public override void SetDefaults()
    {
        Item.width = 20;
        Item.height = 20;
        Item.maxStack = ReaperDefinitions.MaximumSoulSealsPerStage;
        Item.value = 0;
        Item.rare = GetRarity();
        Item.questItem = true;
    }

    public override bool CanResearch() => false;

    public override bool CanPickup(Player player)
    {
        ReaperProgressionState progression = player.GetModPlayer<MyPlayer>().ReaperProgression;
        return progression.GetSoulSealIssued(SealStage) > progression.GetSoulSealSpent(SealStage);
    }

    private int GetRarity()
    {
        return SealStage switch
        {
            ReaperStage.StageI => ItemRarityID.Green,
            ReaperStage.StageII => ItemRarityID.LightRed,
            ReaperStage.StageIII => ItemRarityID.Cyan,
            _ => ItemRarityID.White
        };
    }
}