using SoulHarvest.Common; using Terraria; using Terraria.ID; using Terraria.ModLoader; namespace SoulHarvest.Items; /// /// 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. /// 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().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 }; } }