using System.ComponentModel.DataAnnotations; using System.Text.Json.Serialization; namespace PetCompanion.Models { public enum SkillType { GROUND, GRAND } public enum SkillTier { I = 1, II = 2, III = 3 } public class Skill { [Key] public int Id { get; set; } public string Name { get; set; } public string Description { get; set; } public SkillType Type { get; set; } public int PointsCost { get; set; } public string Icon { get; set; } public List? SkillsIdRequired { get; set; } public virtual ICollection Effects { get; set; } [JsonIgnore] public virtual ICollection PetSkills { get; set; } } public class SkillEffect { [Key] public int Id { get; set; } public int SkillId { get; set; } [JsonIgnore] public virtual Skill Skill { get; set; } public SkillTier Tier { get; set; } public string Effect { get; set; } public decimal Value { get; set; } public void PetSkillUpgrade(ref Pet pet) { switch (Effect) { case "MaxHealth": pet.MaxHealth += (int)Value; break; case "MaxIntelligence": pet.Stats.MaxIntelligence += (int)Value; break; case "MaxStrength": pet.Stats.MaxStrength += (int)Value; break; case "MaxCharisma": pet.Stats.MaxCharisma += (int)Value; break; case "Luck": pet.Stats.Luck += (int)Value; break; case "Agility": pet.Stats.Agility += (int)Value; break; case "Perception": pet.Stats.Perception += (int)Value; break; // Add more effects as needed } } } public class PetSkill { [Key] public int Id { get; set; } public string PetId { get; set; } [JsonIgnore] public virtual Pet Pet { get; set; } public int SkillId { get; set; } public virtual Skill Skill { get; set; } public SkillTier CurrentTier { get; set; } } }