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
};
}
}
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
};
}
}