Refactor skill allocation to upgrade; implement skill requirements and resource checks; remove experience from Pet model; update README for skill tree progress
This commit is contained in:
@@ -51,6 +51,11 @@ namespace PetCompanion.Data
|
||||
.WithMany(s => s.Effects)
|
||||
.HasForeignKey(se => se.SkillId);
|
||||
|
||||
modelBuilder.Entity<SkillRequirement>()
|
||||
.HasOne(se => se.Skill)
|
||||
.WithMany(s => s.SkillRequirements)
|
||||
.HasForeignKey(se => se.SkillId);
|
||||
|
||||
modelBuilder.Entity<EquippedItem>()
|
||||
.HasOne(e => e.Pet)
|
||||
.WithMany(p => p.EquippedItemsList)
|
||||
@@ -61,31 +66,14 @@ namespace PetCompanion.Data
|
||||
.WithMany()
|
||||
.HasForeignKey(e => e.GameItemId);
|
||||
|
||||
// Seed initial skills
|
||||
var skills = SkillsData.GetInitialSkills();
|
||||
var skillWithoutEffects = SkillsData.GetInitialSkills().Select(s => new Skill
|
||||
{
|
||||
Id = s.Id,
|
||||
Name = s.Name,
|
||||
Type = s.Type,
|
||||
Description = s.Description,
|
||||
PointsCost = s.PointsCost,
|
||||
Icon = s.Icon,
|
||||
SkillsIdRequired = s.SkillsIdRequired
|
||||
}).ToList();
|
||||
// Seed initial data
|
||||
var skills = SkillsData.GetInitialSkillsWithoutRelations();
|
||||
var requirements = SkillsData.GetInitialSkillRequirements();
|
||||
var effects = SkillsData.GetInitialSkillEffects();
|
||||
|
||||
foreach (var skill in skillWithoutEffects)
|
||||
{
|
||||
modelBuilder.Entity<Skill>().HasData(skill);
|
||||
}
|
||||
|
||||
foreach (var skill in skills)
|
||||
{
|
||||
foreach (var effect in skill.Effects)
|
||||
{
|
||||
modelBuilder.Entity<SkillEffect>().HasData(effect);
|
||||
}
|
||||
}
|
||||
modelBuilder.Entity<Skill>().HasData(skills);
|
||||
modelBuilder.Entity<SkillRequirement>().HasData(requirements);
|
||||
modelBuilder.Entity<SkillEffect>().HasData(effects);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -4,7 +4,7 @@ namespace PetCompanion.Data
|
||||
{
|
||||
public static class SkillsData
|
||||
{
|
||||
public static IEnumerable<Skill> GetInitialSkills()
|
||||
public static IEnumerable<Skill> GetInitialSkillsWithoutRelations()
|
||||
{
|
||||
return new List<Skill>
|
||||
{
|
||||
@@ -14,36 +14,8 @@ namespace PetCompanion.Data
|
||||
Name = "Vitality Mastery",
|
||||
Description = "Increases maximum health of your pet, making it more resilient.",
|
||||
Type = SkillType.GROUND,
|
||||
PointsCost = 1,
|
||||
Icon = "❤",
|
||||
SkillsIdRequired = null,
|
||||
Effects = new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 1,
|
||||
SkillId = 1,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "MaxHealth",
|
||||
Value = 25
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 2,
|
||||
SkillId = 1,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "MaxHealth",
|
||||
Value = 50
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 3,
|
||||
SkillId = 1,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "MaxHealth",
|
||||
Value = 100
|
||||
}
|
||||
}
|
||||
SkillsIdRequired = null
|
||||
},
|
||||
new Skill
|
||||
{
|
||||
@@ -51,36 +23,8 @@ namespace PetCompanion.Data
|
||||
Name = "Mind Enhancement",
|
||||
Description = "Increases maximum intelligence of your pet, improving its learning capabilities.",
|
||||
Type = SkillType.GROUND,
|
||||
PointsCost = 1,
|
||||
Icon = "🧠",
|
||||
SkillsIdRequired = null,
|
||||
Effects = new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 4,
|
||||
SkillId = 2,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "MaxIntelligence",
|
||||
Value = 5
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 5,
|
||||
SkillId = 2,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "MaxIntelligence",
|
||||
Value = 10
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 6,
|
||||
SkillId = 2,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "MaxIntelligence",
|
||||
Value = 20
|
||||
}
|
||||
}
|
||||
SkillsIdRequired = null
|
||||
},
|
||||
new Skill
|
||||
{
|
||||
@@ -88,36 +32,8 @@ namespace PetCompanion.Data
|
||||
Name = "Strength Training",
|
||||
Description = "Increases maximum strength of your pet, making it more powerful.",
|
||||
Type = SkillType.GROUND,
|
||||
PointsCost = 1,
|
||||
Icon = "💪",
|
||||
SkillsIdRequired = null,
|
||||
Effects = new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 7,
|
||||
SkillId = 3,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "MaxStrength",
|
||||
Value = 5
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 8,
|
||||
SkillId = 3,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "MaxStrength",
|
||||
Value = 10
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 9,
|
||||
SkillId = 3,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "MaxStrength",
|
||||
Value = 20
|
||||
}
|
||||
}
|
||||
SkillsIdRequired = null
|
||||
},
|
||||
new Skill
|
||||
{
|
||||
@@ -125,36 +41,8 @@ namespace PetCompanion.Data
|
||||
Name = "Charisma Boost",
|
||||
Description = "Increases maximum charisma of your pet, making it more charming.",
|
||||
Type = SkillType.GROUND,
|
||||
PointsCost = 1,
|
||||
Icon = "🎭",
|
||||
SkillsIdRequired = null,
|
||||
Effects = new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 10,
|
||||
SkillId = 4,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "MaxCharisma",
|
||||
Value = 5
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 11,
|
||||
SkillId = 4,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "MaxCharisma",
|
||||
Value = 10
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 12,
|
||||
SkillId = 4,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "MaxCharisma",
|
||||
Value = 20
|
||||
}
|
||||
}
|
||||
SkillsIdRequired = null
|
||||
},
|
||||
new Skill
|
||||
{
|
||||
@@ -162,36 +50,8 @@ namespace PetCompanion.Data
|
||||
Name = "Luck of the Draw",
|
||||
Description = "Increases luck of your pet, making it more fortunate to find rare items.",
|
||||
Type = SkillType.GROUND,
|
||||
PointsCost = 1,
|
||||
Icon = "🍀",
|
||||
SkillsIdRequired = new List<int> { 4 },
|
||||
Effects = new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 13,
|
||||
SkillId = 5,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "Luck",
|
||||
Value = 1
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 14,
|
||||
SkillId = 5,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "Luck",
|
||||
Value = 2
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 15,
|
||||
SkillId = 5,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "Luck",
|
||||
Value = 3
|
||||
}
|
||||
}
|
||||
SkillsIdRequired = new List<int> { 4 }
|
||||
},
|
||||
new Skill
|
||||
{
|
||||
@@ -199,36 +59,8 @@ namespace PetCompanion.Data
|
||||
Name = "Agility Training",
|
||||
Description = "Increases agility of your pet, making it faster in combat.",
|
||||
Type = SkillType.GROUND,
|
||||
PointsCost = 1,
|
||||
Icon = "🏃",
|
||||
SkillsIdRequired = new List<int> { 3 },
|
||||
Effects = new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 16,
|
||||
SkillId = 6,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "Agility",
|
||||
Value = 1
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 17,
|
||||
SkillId = 6,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "Agility",
|
||||
Value = 2
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 18,
|
||||
SkillId = 6,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "Agility",
|
||||
Value = 3
|
||||
}
|
||||
}
|
||||
SkillsIdRequired = new List<int> { 3 }
|
||||
},
|
||||
new Skill
|
||||
{
|
||||
@@ -236,36 +68,237 @@ namespace PetCompanion.Data
|
||||
Name = "Perception Boost",
|
||||
Description = "Increases perception of your pet, making it more aware of its surroundings.",
|
||||
Type = SkillType.GROUND,
|
||||
PointsCost = 1,
|
||||
Icon = "👀",
|
||||
SkillsIdRequired = new List<int> { 2 },
|
||||
Effects = new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 19,
|
||||
SkillId = 7,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "Perception",
|
||||
Value = 1
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 20,
|
||||
SkillId = 7,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "Perception",
|
||||
Value = 2
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 21,
|
||||
SkillId = 7,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "Perception",
|
||||
Value = 3
|
||||
}
|
||||
}
|
||||
SkillsIdRequired = new List<int> { 2 }
|
||||
},
|
||||
new Skill
|
||||
{
|
||||
Id = 8,
|
||||
Name = "Resourcefulness",
|
||||
Description = "Increases the amount of resources gathered by your pet.",
|
||||
Type = SkillType.GRAND,
|
||||
Icon = "📦",
|
||||
SkillsIdRequired = new List<int> { 5, 6, 7 }
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static IEnumerable<SkillRequirement> GetInitialSkillRequirements()
|
||||
{
|
||||
return new List<SkillRequirement>
|
||||
{
|
||||
new SkillRequirement { Id = 1, SkillId = 1, Resource = "Wisdom", Cost = 100 },
|
||||
new SkillRequirement { Id = 2, SkillId = 1, Resource = "Food", Cost = 150 },
|
||||
new SkillRequirement { Id = 3, SkillId = 2, Resource = "Wisdom", Cost = 150 },
|
||||
new SkillRequirement { Id = 4, SkillId = 3, Resource = "Gold", Cost = 100 },
|
||||
new SkillRequirement { Id = 5, SkillId = 3, Resource = "Food", Cost = 150 },
|
||||
new SkillRequirement { Id = 6, SkillId = 4, Resource = "Wisdom", Cost = 200 },
|
||||
new SkillRequirement { Id = 7, SkillId = 5, Resource = "Gold", Cost = 200 },
|
||||
new SkillRequirement { Id = 8, SkillId = 6, Resource = "Gold", Cost = 200 },
|
||||
new SkillRequirement { Id = 9, SkillId = 7, Resource = "Gold", Cost = 100 },
|
||||
new SkillRequirement { Id = 10, SkillId = 7, Resource = "Junk", Cost = 100 },
|
||||
new SkillRequirement { Id = 11, SkillId = 8, Resource = "Gold", Cost = 500 },
|
||||
new SkillRequirement { Id = 12, SkillId = 8, Resource = "Junk", Cost = 500 },
|
||||
new SkillRequirement { Id = 13, SkillId = 8, Resource = "Wisdom", Cost = 300 },
|
||||
new SkillRequirement { Id = 14, SkillId = 8, Resource = "Food", Cost = 300 }
|
||||
};
|
||||
}
|
||||
|
||||
public static IEnumerable<SkillEffect> GetInitialSkillEffects()
|
||||
{
|
||||
return new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 1,
|
||||
SkillId = 1,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "MaxHealth",
|
||||
Value = 25
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 2,
|
||||
SkillId = 1,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "MaxHealth",
|
||||
Value = 50
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 3,
|
||||
SkillId = 1,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "MaxHealth",
|
||||
Value = 100
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 4,
|
||||
SkillId = 2,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "MaxIntelligence",
|
||||
Value = 5
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 5,
|
||||
SkillId = 2,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "MaxIntelligence",
|
||||
Value = 10
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 6,
|
||||
SkillId = 2,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "MaxIntelligence",
|
||||
Value = 20
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 7,
|
||||
SkillId = 3,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "MaxStrength",
|
||||
Value = 5
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 8,
|
||||
SkillId = 3,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "MaxStrength",
|
||||
Value = 10
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 9,
|
||||
SkillId = 3,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "MaxStrength",
|
||||
Value = 20
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 10,
|
||||
SkillId = 4,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "MaxCharisma",
|
||||
Value = 5
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 11,
|
||||
SkillId = 4,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "MaxCharisma",
|
||||
Value = 10
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 12,
|
||||
SkillId = 4,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "MaxCharisma",
|
||||
Value = 20
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 13,
|
||||
SkillId = 5,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "Luck",
|
||||
Value = 1
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 14,
|
||||
SkillId = 5,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "Luck",
|
||||
Value = 2
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 15,
|
||||
SkillId = 5,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "Luck",
|
||||
Value = 3
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 16,
|
||||
SkillId = 6,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "Agility",
|
||||
Value = 1
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 17,
|
||||
SkillId = 6,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "Agility",
|
||||
Value = 2
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 18,
|
||||
SkillId = 6,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "Agility",
|
||||
Value = 3
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 19,
|
||||
SkillId = 7,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "Perception",
|
||||
Value = 1
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 20,
|
||||
SkillId = 7,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "Perception",
|
||||
Value = 2
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 21,
|
||||
SkillId = 7,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "Perception",
|
||||
Value = 3
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 22,
|
||||
SkillId = 8,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "Resourcefulness",
|
||||
Value = 1
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 23,
|
||||
SkillId = 8,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "Resourcefulness",
|
||||
Value = 2
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 24,
|
||||
SkillId = 8,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "Resourcefulness",
|
||||
Value = 3
|
||||
}
|
||||
};
|
||||
}
|
||||
|
Reference in New Issue
Block a user