//Hinzufügen aller Skills die ein Partymember bei einem gegebenen Level haben muss public static void AddSkillsToParty(PartyMember member) { var skillCadreDataSection = ConfigurationManager.GetSection("SkillCadre") as SkillCadreDataSection; var partySkillCadreDataSection = ConfigurationManager.GetSection("PartySkillCadre") as PartySkillCadreDataSection; CharElement character; if (member.GetType() == typeof (Player)) { Player player = member as Player; character = partySkillCadreDataSection.Chars.Cast<CharElement>() .SingleOrDefault( concreteChar => concreteChar.Name.ToLower() == player.HiddenName.ToLower()); player.Skills.RemoveRange(0, player.Skills.Count); } else { character = partySkillCadreDataSection.Chars.Cast<CharElement>() .SingleOrDefault( concreteChar => concreteChar.Name.ToLower() == member.Name.ToLower()); } List<IEffect> skillToAddEffects; foreach ( CharSkillElement charSkill in character.CharSkills) { //Überprufen ob der Charakter das erforderliche Level für den Skills besitzt //und ob der Charakter diesen Skill bereits besitzt var skillToAdd = skillCadreDataSection.Skills.Cast<SkillElement>() .SingleOrDefault( cadreSkill => cadreSkill.Name == charSkill.Name); if (member.Skills.All(Skill => Skill.Name != charSkill.Name) && member.Level >= Convert.ToInt32(skillToAdd.Level)) { skillToAddEffects = new List<IEffect>(); foreach (EffectElement effect in skillToAdd.Effects) { skillToAddEffects.Add(GetEffectFactory.GetEffect(effect.Name)); } member.AddSkill(new Skill(skillToAdd.Name, LoadSkillHelperClass.GetManaCosts(Convert.ToInt32(skillToAdd.Level)), skillToAdd.Target, skillToAdd.AreaOfEffect, skillToAdd.Description, skillToAddEffects)); } } }