コード例 #1
0
ファイル: Character.cs プロジェクト: tvbirch/pen_and_paper
        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);
        }
コード例 #2
0
ファイル: MagicManager.cs プロジェクト: kpd328/FifthCharacter
        } = 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;
            }
        }