Skip to content

Commit

Permalink
Refactored how master skill points are added
Browse files Browse the repository at this point in the history
  • Loading branch information
sven-n committed Nov 28, 2017
1 parent e4d1c27 commit b831683
Showing 1 changed file with 11 additions and 14 deletions.
25 changes: 11 additions & 14 deletions src/GameLogic/PlayerActions/Character/AddMasterPointAction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

namespace MUnique.OpenMU.GameLogic.PlayerActions.Character
{
using System.Collections.Generic;
using System.Linq;
using MUnique.OpenMU.DataModel.Configuration;
using MUnique.OpenMU.DataModel.Entities;
Expand Down Expand Up @@ -85,6 +84,8 @@ private void AddMasterPointToLearnedSkill(Player player, SkillEntry learnedSkill
{
learnedSkill.Level++;
player.SelectedCharacter.MasterLevelUpPoints--;

// TODO: Send response, see protocol documentation
}
}

Expand All @@ -93,20 +94,14 @@ private bool CheckRequisitions(Player player, Skill skill)
var masterDefs = skill.MasterDefinitions
.Where(def => def.CharacterClass == player.SelectedCharacter.CharacterClass);

if (!masterDefs.Any())
{
return false;
}

var learnedSkills = player.SelectedCharacter.LearnedSkills.Where(learnedSkill => learnedSkill.Skill.MasterDefinitions != null && learnedSkill.Skill.MasterDefinitions.Any());
foreach (var def in masterDefs)
{
if (!this.CheckRank(def, learnedSkills, player.SelectedCharacter.CharacterClass))
if (!this.CheckRank(def, player.SelectedCharacter))
{
continue;
}

if (this.CheckRequiredSkill(def, learnedSkills))
if (this.CheckRequiredSkill(def, player.SelectedCharacter))
{
return true;
}
Expand All @@ -115,14 +110,16 @@ private bool CheckRequisitions(Player player, Skill skill)
return false;
}

private bool CheckRank(MasterSkillDefinition definition, IEnumerable<SkillEntry> learnedSkills, CharacterClass charClass)
private bool CheckRank(MasterSkillDefinition definition, Character character)
{
var result = true;
if (definition.Rank > 0)
{
var lSkill = learnedSkills.FirstOrDefault(learnedSkill =>
var lSkill = character.LearnedSkills
.Where(learnedSkill => learnedSkill.Skill.MasterDefinitions != null && learnedSkill.Skill.MasterDefinitions.Any())
.FirstOrDefault(learnedSkill =>
{
var mdefs = learnedSkill.Skill.MasterDefinitions.Where(mdef => mdef.CharacterClass == charClass);
var mdefs = learnedSkill.Skill.MasterDefinitions.Where(mdef => mdef.CharacterClass == character.CharacterClass);
mdefs = mdefs.Where(mdef => mdef.Root.Id == definition.Root.Id);
return mdefs.Any(mdef => mdef.Rank == definition.Rank - 1);
});
Expand All @@ -132,12 +129,12 @@ private bool CheckRank(MasterSkillDefinition definition, IEnumerable<SkillEntry>
return result;
}

private bool CheckRequiredSkill(MasterSkillDefinition defintion, IEnumerable<SkillEntry> learnedSkills)
private bool CheckRequiredSkill(MasterSkillDefinition defintion, Character character)
{
var result = true;
if (defintion.RequiredMasterSkills != null && defintion.RequiredMasterSkills.Any())
{
result = defintion.RequiredMasterSkills.Any(s => learnedSkills.Any(l => l.Skill == s && (l.Level >= MinimumSkillLevelOfRequiredSkill || l.Skill.MasterDefinitions == null || !l.Skill.MasterDefinitions.Any())));
result = defintion.RequiredMasterSkills.Any(s => character.LearnedSkills.Any(l => l.Skill == s && (l.Level >= MinimumSkillLevelOfRequiredSkill || l.Skill.MasterDefinitions == null || !l.Skill.MasterDefinitions.Any())));
}

return result;
Expand Down

0 comments on commit b831683

Please sign in to comment.