public SpellInSlot[] GetSpellsSlots(int spellLevel, Guid classId) { var nrOfSlots = GetNumberOfSpellSlotsForClass(spellLevel, classId); var slotsList = new SpellInSlot[nrOfSlots]; if (SpellSlots == null) { return(slotsList); } var spellSlotsForClass = SpellSlots.Where(x => x.SpellChosenForClass.ID == classId).ToList(); var spellForCurrentLevel = spellSlotsForClass.Where(x => x.Spell.CasterRequirements.Any(y => y.CasterClass.ID == classId && y.CasterLevel == spellLevel)).ToList(); for (int i = 0; i < spellForCurrentLevel.Count; ++i) { slotsList[i] = new SpellInSlot { Components = spellForCurrentLevel[i].Spell.GetComponentsString(), Duration = "TODO", Id = spellForCurrentLevel[i].ID, Name = spellForCurrentLevel[i].Spell.Name, Range = spellForCurrentLevel[i].Spell.GetRangeString(), SR = spellForCurrentLevel[i].Spell.GetSpellResistanceString(), Save = spellForCurrentLevel[i].Spell.GetSave(), School = spellForCurrentLevel[i].Spell.School.Name, TargetEffectArea = spellForCurrentLevel[i].Spell.GetTarget(), Time = spellForCurrentLevel[i].Spell.CastingTime.ToString(), SlotSpend = spellForCurrentLevel[i].Used, CurrentlyUsable = !spellForCurrentLevel[i].Used && spellForCurrentLevel[i].IsUsableInCurrentRound(Round.GetPossibleActions(_bonusDto)) }; } return(slotsList); }
} = true; //The value of this should be pulled from the spellcasting class //Public Methods public static void AddSpellcasterLevel(SpellcasterClass spellcaster) { switch (spellcaster) { case SpellcasterClass.PRIMARY: _spellcasterLevel++; break; case SpellcasterClass.SECONDARY: _spellcasterLevel += 0.5; break; case SpellcasterClass.TERTIARY: _spellcasterLevel += (1.0 / 3.0); break; case SpellcasterClass.NONE: break; } switch (SpellcasterLevel) { case 1: SpellSlots.Add(new SpellSlot() { SpellLevel = 1, TotalSlots = 2 }); break; case 2: SpellSlots.Where(l => l.SpellLevel == 1).FirstOrDefault().TotalSlots++; break; case 3: SpellSlots.Where(l => l.SpellLevel == 1).FirstOrDefault().TotalSlots++; SpellSlots.Add(new SpellSlot() { SpellLevel = 2, TotalSlots = 2 }); break; case 4: SpellSlots.Where(l => l.SpellLevel == 2).FirstOrDefault().TotalSlots++; break; case 5: SpellSlots.Add(new SpellSlot() { SpellLevel = 3, TotalSlots = 2 }); break; case 6: SpellSlots.Where(l => l.SpellLevel == 3).FirstOrDefault().TotalSlots++; break; case 7: SpellSlots.Add(new SpellSlot() { SpellLevel = 4, TotalSlots = 1 }); break; case 8: SpellSlots.Where(l => l.SpellLevel == 4).FirstOrDefault().TotalSlots++; break; case 9: SpellSlots.Add(new SpellSlot() { SpellLevel = 5, TotalSlots = 1 }); break; case 10: SpellSlots.Where(l => l.SpellLevel == 5).FirstOrDefault().TotalSlots++; break; case 11: SpellSlots.Add(new SpellSlot() { SpellLevel = 6, TotalSlots = 1 }); break; case 13: SpellSlots.Add(new SpellSlot() { SpellLevel = 7, TotalSlots = 1 }); break; case 15: SpellSlots.Add(new SpellSlot() { SpellLevel = 8, TotalSlots = 1 }); break; case 17: SpellSlots.Add(new SpellSlot() { SpellLevel = 9, TotalSlots = 1 }); break; case 18: SpellSlots.Where(l => l.SpellLevel == 5).FirstOrDefault().TotalSlots++; break; case 19: SpellSlots.Where(l => l.SpellLevel == 6).FirstOrDefault().TotalSlots++; break; case 20: SpellSlots.Where(l => l.SpellLevel == 7).FirstOrDefault().TotalSlots++; break; default: break; } }