87 lines
2.4 KiB
C#
87 lines
2.4 KiB
C#
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<int>? SkillsIdRequired { get; set; }
|
|
public virtual ICollection<SkillEffect> Effects { get; set; }
|
|
[JsonIgnore]
|
|
public virtual ICollection<PetSkill> 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; }
|
|
}
|
|
}
|