public void AddArchetype(Archetype archetype)
        {
            if (!Archetypes.Contains(archetype))
            {
                throw new Exception($"{archetype} was not found as an archetype for {Name}"); // This should never happen..
            }
            if (AppliedArchetypes.Contains(archetype))
            {
                throw new Exception($"{archetype.Name} is already applied to {Name}"); // <--
            }
            if (archetype.ArchetypeAbilities.SelectMany(a => a.ReplacedAbilities).Any(ca => !ClassAbilities.Contains(ca)))
            {
                throw new Exception($"{archetype.Name} could not be added, because one or more replaced abilities were already replaced."); // Can apply archetype..
            }
            foreach (var ability in archetype.ArchetypeAbilities)
            {
                foreach (var replacedAbility in ability.ReplacedAbilities)
                {
                    ClassAbilities.Remove(replacedAbility);
                }
                ClassAbilities.Add(ability);
                ability.Add?.Invoke();
            }

            AppliedArchetypes.Add(archetype);
        }
Beispiel #2
0
    public static string CharacterName(Archetypes archetype)
    {
        switch (archetype)
        {
        case Archetypes.One:
            return("beast");

            break;

        case Archetypes.Two:
            return("mage");

            break;

        case Archetypes.Three:
            return("soldier");

            break;

        case Archetypes.EnemyOne:
            return("goon1");

            break;

        case Archetypes.EnemyTwo:
            return("goon2");

            break;
        }
        return("NULL");
    }
Beispiel #3
0
 private IEnumerator Start()
 {
     this.set_Validator(new global::h.N());
     if (SceneManager.GetActiveScene().name != Constants.Px())
     {
         EditDeckProvider provider = DataProvider.Get <EditDeckProvider>();
         if (provider.get_Mode() == DeckEditorModes.Quest || provider.get_Mode() == DeckEditorModes.Conquest || provider.get_Mode() == DeckEditorModes.Chaos)
         {
             Archetypes        archetypes = Finder.FindOrThrow <Archetypes>();
             AdventureProvider adventure  = AdventureProvider.Find();
             while (adventure.SelectedAdventure.get_DeckInfo() == null)
             {
                 yield return(null);
             }
             global::g.a a = new global::g.a(provider, archetypes, adventure.SelectedAdventure);
             this.subscriptionProvider.set_Data(a.get_Composition());
             global::d.M one  = Finder.FindOrThrow <AccountProvider>().get_Account().GetOne <global::d.M>();
             int         num  = (int)((ArenaTiers)9 - ((provider.get_Mode() == DeckEditorModes.Quest) ? one.get_PvERank() : one.get_PvPRank()));
             string      text = "rank=" + num + "\n";
             foreach (ArchetypeID key in adventure.SelectedAdventure.get_Collection().A)
             {
                 if (archetypes.get_All().ContainsKey(key))
                 {
                     text = text + archetypes.get_All()[key].GetOne <NameData>().get_Name() + "\r\n";
                 }
             }
             try
             {
                 File.WriteAllText((provider.get_Mode() == DeckEditorModes.Quest) ? "decks\\arena-solo.txt" : "decks\\arena.txt", text);
             }
             catch
             {
             }
             archetypes = null;
             adventure  = null;
             archetypes = null;
             adventure  = null;
         }
         provider = null;
         provider = null;
     }
     else
     {
         AsyncTournamentsProvider  asyncTournamentsProvider = AsyncTournamentsProvider.Find();
         AsyncTournamentDefinition selectedTournament       = asyncTournamentsProvider.get_SelectedTournament();
         if (selectedTournament != null && !selectedTournament.Run.AllowDeckSwitching)
         {
             Archetypes archetypes2 = Finder.FindOrThrow <Archetypes>();
             AsyncTournamentProgress tournamentProgress = asyncTournamentsProvider.GetTournamentProgress(selectedTournament.ID);
             if (tournamentProgress != null)
             {
                 SerializableDeck deck = tournamentProgress.Deck;
                 global::A.I      i    = new global::A.I(asyncTournamentsProvider, archetypes2, selectedTournament, deck);
                 this.subscriptionProvider.set_Data(i.get_Composition());
             }
         }
     }
     yield break;
     yield break;
 }
Beispiel #4
0
    public void Init(Archetypes archetype)
    {
        switch (archetype)
        {
        case Archetypes.None:
            break;

        case Archetypes.One:
            BeastInit();
            break;

        case Archetypes.Two:
            MageInit();
            break;

        case Archetypes.Three:
            SoldierInit();
            break;

        case Archetypes.EnemyOne:
            GoonInit();
            break;

        case Archetypes.EnemyTwo:
            GoonInit();
            break;
        }
        baseStats.Add(Stats.CurrentLevel, -1);
        baseStats.Add(Stats.LastNode, -1);
    }
Beispiel #5
0
 public Entity()
 {
     componentManager = ComponentManager.Instance();
     components       = new Dictionary <Type, int>();
     archetypes       = Archetypes.Instance();
     id = new Guid();
 }
Beispiel #6
0
 private Query(Type[] components)
 {
     queryComponents  = components;
     componentManager = ComponentManager.Instance();
     useCache         = false;
     archetypes       = Archetypes.Instance();
 }
Beispiel #7
0
 public World()
 {
     entities            = new List <Entity>();
     componentManager    = ComponentManager.Instance();
     services            = new Dictionary <string, List <Service> >();
     archetypes          = Archetypes.Instance();
     services["default"] = new List <Service>();
 }
Beispiel #8
0
 private void loadDeck(DeckComponent deck)
 {
     this.current_deck.Clear();
     if (deck != null)
     {
         Archetypes archetypes = Finder.FindOrThrow <Archetypes>();
         Directory.CreateDirectory("decks");
         foreach (KeyValuePair <DeckID, DeckComponent> keyValuePair in Finder.FindOrThrow <Decks>().get_All())
         {
             Pile pile2;
             if (keyValuePair.Key != null && keyValuePair.Value.get_Piles().TryGetValue(Constants.K(), out pile2))
             {
                 string to_write = "";
                 foreach (KeyValuePair <ArchetypeID, int> keyValuePair2 in pile2)
                 {
                     to_write = string.Concat(new object[]
                     {
                         to_write,
                         archetypes.get_All()[keyValuePair2.Key].GetOne <NameData>().get_Name(),
                         " ",
                         keyValuePair2.Value,
                         "\r\n"
                     });
                 }
                 File.WriteAllText(Path.Combine("decks", keyValuePair.Value.get_Name() + ".txt"), to_write);
             }
         }
         Pile pile3;
         if (deck.get_Piles().TryGetValue(Constants.K(), out pile3))
         {
             foreach (KeyValuePair <ArchetypeID, int> keyValuePair3 in pile3)
             {
                 ArchetypeComponent archetypeComponent;
                 if (this.local_collection_avatars.get_All().TryGetValue(keyValuePair3.Key, out archetypeComponent))
                 {
                     this.tryToMove(keyValuePair3.Key, keyValuePair3.Value);
                 }
                 else
                 {
                     Debug.LogError(Constants.Fx() + keyValuePair3.Key);
                 }
             }
         }
         foreach (global::H.L l in this.current_deck.get_Stacks())
         {
             l.GetOne <global::g.p>().MarkAsRead();
         }
         ArchetypeComponent avatar = deck.GetAvatar(this.local_collection_avatars);
         this.deck_avatars.SetAvatar(avatar);
     }
     if (deck != null)
     {
         this.deck_name.SetName(deck.GetOne <DeckNameData>().get_Name(), deck.GetOne <global::E.y>().get_HasAutoName());
     }
     this.deck_editor_saver.set_UnsavedChanges(false);
 }
Beispiel #9
0
    static void Initialize()
    {
        var entityManager = World.Active.GetOrCreateManager <EntityManager>();

        Archetypes.Initialize(entityManager);
        Archetypes.CreateInputSystem(entityManager);

        Instance = FindObjectOfType <Main>();
        Instance.m_InitData.Initalize();
    }
Beispiel #10
0
    //-----------------------------------------------------------------------------
    public static void CreateGrid(GridSettings grid,
                                  NativeArray <float> heightmap,
                                  NativeArray <float3> colormap,
                                  NativeArray <float3> normalmap,
                                  NativeArray <float3> flowMap,
                                  Func <float2, int2, CellData> func)
    {
        var entityManager = World.Active.GetOrCreateManager <EntityManager>();
        var entities      = new NativeArray <Entity>(grid.cellCount.x * grid.cellCount.y, Allocator.Temp);

        entityManager.CreateEntity(Archetypes.Tile, entities);
        var cells = new CellData[entities.Length];

        for (int ii = 0; ii < entities.Length; ii++)
        {
            var    coord = GridUtilties.Index2Grid(grid, ii);
            float2 per   = new float2(coord) / grid.cellCount;
            cells[ii] = func(per, coord);
        }

        float inv255 = 1f / 255f;

        for (int ii = 0; ii < entities.Length; ii++)
        {
            int2 coord = GridUtilties.Index2Grid(grid, ii);
            var  cd    = cells[ii];
            colormap[ii]  = cd.color;
            heightmap[ii] = cd.height;
            float[] s = new float[8];
            for (int i = 0; i < GridUtilties.Offset.Length; ++i)
            {
                var index = GridUtilties.Grid2Index(grid, coord + GridUtilties.Offset[i]);
                if (index != -1)
                {
                    s[i] = cells[index].height;
                }
                else
                {
                    s[i] = 0.5f;
                }
            }
            var normal = new float3(
                -(s[4] - s[6] + 2 * (s[2] - s[3]) + s[5] - s[7]),
                cd.height,                //.2f,
                -(s[7] - s[6] + 2 * (s[1] - s[0]) + s[5] - s[4]));

            normalmap[ii] = math.normalize(normal);
            normal.y      = 0;
            normal        = math.normalize(normal);
            var flow = normal * cd.cost * inv255;
            flowMap[ii] = flow;
            Archetypes.SetupTile(entityManager, entities[ii], Main.ActiveInitParams.TileDirectionMesh, Main.ActiveInitParams.TileDirectionMaterial, coord, cd.cost, new float3(), grid);
        }
        entities.Dispose();
    }
Beispiel #11
0
        protected override Archetypes <string> GetRandomObj()
        {
            var a = new Archetypes <string>();
            var c = GetRandom.Count();

            for (var i = 0; i < c; i++)
            {
                a.Add(GetRandom.String());
            }
            return(a);
        }
Beispiel #12
0
        protected virtual EmbedBuilder AddAdditionalFields(EmbedBuilder body)
        {
            var hasArchetypes   = Archetypes?.Any() == true;
            var hasSupports     = Supports?.Any() == true;
            var hasAntisupports = AntiSupports?.Any() == true;

            body = hasArchetypes ? body.AddField("Archetypes", Archetypes.Join(", "), true) : body;
            body = hasSupports ? body.AddField("Supports", Supports.Join(", "), true) : body;
            body = hasAntisupports ? body.AddField("Antisupports", AntiSupports.Join(", "), hasArchetypes ^ hasSupports) : body; //xor, when it only has one of either

            return(body);
        }
Beispiel #13
0
        public Archetype Find(string arch)
        {
            var split = arch.Split('/');

            if (split.Length == 1)
            {
                return(Archetypes.FirstOrDefault(a => a.Name == split[0] + ".entitydef"));
            }

            var dir = Directories.FirstOrDefault(a => a.Name == split[0]);

            return(dir == null ? null : dir.Find(string.Join("/", split.Skip(1))));
        }
Beispiel #14
0
    public void SetStats(OCStats stats)
    {
        characterName = stats.characterName;
        archetype     = stats.archetype;
        STR           = stats.STR;
        INT           = stats.INT;
        CHA           = stats.CHA;
        portrait      = stats.portrait;

        image.sprite  = portrait;
        nameText.text = characterName;
        statText.text = "S-" + STR.ToString() + " I-" + INT.ToString() + " C-" + CHA.ToString();
    }
Beispiel #15
0
 public void IsCorrectIndexTest()
 {
     Obj            = new Archetypes <string>();
     Obj.OnChanged += DoOnChanged;
     Assert.IsFalse(Obj.IsCorrectIndex(0));
     TestDoOnChange();
     AddTest();
     ClearDoOnChanged();
     Assert.IsFalse(Obj.IsCorrectIndex(GetRandom.Int32(max: -1)));
     Assert.IsFalse(Obj.IsCorrectIndex(GetRandom.Int32(2)));
     Assert.IsTrue(Obj.IsCorrectIndex(0));
     Assert.IsTrue(Obj.IsCorrectIndex(1));
     TestDoOnChange();
 }
Beispiel #16
0
 public void IsSetTest()
 {
     Obj = new Archetypes <string> {
         IsSet = true
     };
     Obj.Add("A");
     Assert.AreEqual(1, Obj.Count);
     Obj.Add("A");
     Assert.AreEqual(1, Obj.Count);
     Obj.Insert(0, "B");
     Assert.AreEqual(2, Obj.Count);
     Obj.Insert(0, "B");
     Assert.AreEqual(2, Obj.Count);
     Obj.AddRange(new List <string> {
         "C", "D"
     });
     Assert.AreEqual(4, Obj.Count);
     Obj.AddRange(new List <string> {
         "C", "D", "E"
     });
     Assert.AreEqual(5, Obj.Count);
 }
        public EntityIndex Alloc(EntityArchetype entityArchetype)
        {
            var types  = _archetypeManager.GetArchetypeTypeList(entityArchetype);
            int offset = -1;

            for (int i = 0; i < Archetypes.Count; ++i)
            {
                if (Archetypes[i].Equals(types) && !ChunkData[i].Full)
                {
                    offset = ChunkData[i].Alloc();
                    return(new EntityIndex {
                        ChunkIndex = i, ChunkOffset = offset
                    });
                }
            }

            Archetypes.Add(entityArchetype);
            ChunkData.Add(new ArchetypeChunk(types));

            offset = ChunkData.Last().Alloc();
            return(new EntityIndex {
                ChunkIndex = ChunkData.Count - 1, ChunkOffset = offset
            });
        }
        public Arcanist()
        {
            Name            = "Arcanist";
            Alignment       = "Any";
            BaseAttackBonus = BaseAttackBonus.Half;
            FortitudeSave   = SavingThrow.Bad;
            ReflexSave      = SavingThrow.Bad;
            WillSave        = SavingThrow.Good;
            SpellCaster     = true;
            SpellCasting    = new SpellCasting
            {
                CasterLevels = new List <CasterLevel>
                {
                    new CasterLevel(1, null, 2),
                    new CasterLevel(2, null, 3),
                    new CasterLevel(3, null, 4),
                    new CasterLevel(4, null, 4, 2),
                    new CasterLevel(5, null, 4, 3),
                    new CasterLevel(6, null, 4, 4, 2),
                    new CasterLevel(7, null, 4, 4, 3),
                    new CasterLevel(8, null, 4, 4, 4, 2),
                    new CasterLevel(9, null, 4, 4, 4, 3),
                    new CasterLevel(10, null, 4, 4, 4, 4, 2),
                    new CasterLevel(11, null, 4, 4, 4, 4, 3),
                    new CasterLevel(12, null, 4, 4, 4, 4, 4, 2),
                    new CasterLevel(13, null, 4, 4, 4, 4, 4, 3),
                    new CasterLevel(14, null, 4, 4, 4, 4, 4, 4, 2),
                    new CasterLevel(15, null, 4, 4, 4, 4, 4, 4, 3),
                    new CasterLevel(16, null, 4, 4, 4, 4, 4, 4, 4, 2),
                    new CasterLevel(17, null, 4, 4, 4, 4, 4, 4, 4, 3),
                    new CasterLevel(18, null, 4, 4, 4, 4, 4, 4, 4, 4, 2),
                    new CasterLevel(19, null, 4, 4, 4, 4, 4, 4, 4, 4, 3),
                    new CasterLevel(20, null, 4, 4, 4, 4, 4, 4, 4, 4, 4),
                }
            };
            ClassAbilities = new List <ClassAbility>
            {
                ArcaneResevoir,
                ArcanistExploit1,
                ArcanistExploit3,
                ArcanistExploit5,
                ArcanistExploit7,
                ArcanistExploit9,
                ArcanistExploit11,
                ArcanistExploit13,
                ArcanistExploit15,
                ArcanistExploit17,
                ArcanistExploit19,
                Cantrips,
                ConsumeSpells,
                Spells,
                GreaterExploits,
                MagicalSupremacy,
            };

            Archetypes.Add(new Aeromancer(this));
            Archetypes.Add(new ArcaneTinkerer(this));
            Archetypes.Add(new BladeAdept(this));
            Archetypes.Add(new BloodArcanist(this));
            Archetypes.Add(new BrownFurTransmuter(this));
            Archetypes.Add(new EldritchFont(this));
            Archetypes.Add(new ElementalMaster(this));
            Archetypes.Add(new HarrowedSocietyStudent(this));
            Archetypes.Add(new MagaambyanInitiate(this));
            Archetypes.Add(new Archetypes.Arcanist.Occultist(this));
            Archetypes.Add(new SchoolSavant(this));
            Archetypes.Add(new SpellSpecialist(this));
            Archetypes.Add(new TwilightSage(this));
            Archetypes.Add(new UnletteredArcanist(this));
            Archetypes.Add(new WhiteMage(this));
        }
        public Bard(decimal level, string archetype)
        {
            HitDice = "d8";
            Archetypes.Add("College of Lore");
            Archetypes.Add("College of Valor");
            ItemProficiencies.Add("Light Armor");
            ItemProficiencies.Add("Simple Weapon");
            ItemProficiencies.Add("Longsword");
            ItemProficiencies.Add("Rapier");
            ItemProficiencies.Add("Shortsword");
            ItemProficiencies.Add("Hand Crossbow");
            ClassFeatures.Add("Spellcasting");
            ClassFeatures.Add("Bardic Inspiration");
            if (level >= 2)
            {
                ClassFeatures.Add("Jack of all Trades");
            }
            if (level >= 2)
            {
                ClassFeatures.Add("Song of Rest");
            }
            if (level >= 3)
            {
                ClassFeatures.Add("Bard College");
            }
            if (level >= 3)
            {
                ClassFeatures.Add("Expertise");
            }
            if (level >= 5)
            {
                ClassFeatures.Add("Font of Inspiration");
            }
            if (level >= 6)
            {
                ClassFeatures.Add("Countercharm");
            }
            if (level >= 10)
            {
                ClassFeatures.Add("Magical Secrets");
            }
            if (level >= 20)
            {
                ClassFeatures.Add("Superior Inspiration");
            }
            switch (archetype)
            {
            case "":
                break;

            case "College of Lore":
                if (level >= 3)
                {
                    ArchetypeFeats.Add("Bonus Proficiencies");
                }
                if (level >= 3)
                {
                    ArchetypeFeats.Add("Cutting Word");
                }
                if (level >= 6)
                {
                    ArchetypeFeats.Add("Additional Magical Secrets");
                }
                if (level >= 14)
                {
                    ArchetypeFeats.Add("Peerless Skill");
                }
                break;

            case "College of Valor":
                if (level >= 3)
                {
                    ItemProficiencies.Add("Medium Amor");
                }
                if (level >= 3)
                {
                    ItemProficiencies.Add("Shields");
                }
                if (level >= 3)
                {
                    ItemProficiencies.Add("Martial");
                }
                if (level >= 3)
                {
                    ArchetypeFeats.Add("Combat Inspiration");
                }
                if (level >= 6)
                {
                    ArchetypeFeats.Add("Extra Attack");
                }
                if (level >= 14)
                {
                    ArchetypeFeats.Add("Battle Magic");
                }
                break;
            }
        }
        protected override IEnumerator execute()
        {
            DeckEditScene    scene         = Finder.FindOrThrow <DeckEditScene>();
            EditDeckProvider sceneProvider = DataProvider.Get <EditDeckProvider>();
            CommandExecutor  executor      = Finder.FindOrThrow <CommandExecutor>();
            bool             flag          = true;
            LocalizedString  failure       = null;

            if (flag && scene.get_Tutorial() != null)
            {
                global::h.L request = new global::h.L();
                Coroutine   coroutine;
                scene.get_Tutorial().EndorseRequest(request, out coroutine);
                if (coroutine != null)
                {
                    yield return(coroutine);
                }
                flag    = !request.get_Denied();
                request = null;
            }
            if (flag)
            {
                if (scene.get_Validator().IsSaveValid(out failure))
                {
                    SaveDeckToServer save = new SaveDeckToServer(this.deckSave.editor.AsSerializableDeck());
                    yield return(executor.Execute(save));

                    if (save.get_Success())
                    {
                        DeckComponent deckComponent = Finder.FindOrThrow <Decks>().get_All()[save.get_SavedDeck().A];
                        if (!scene.get_Validator().DeckMeetsMinimumCount())
                        {
                            DataComposition dataComposition = global::h.o.Create(global::L.LT(Constants.FN()), global::L.LT(Constants.Fn(), new object[]
                            {
                                scene.get_Validator().DeckCountMinimum()
                            }), false, new string[]
                            {
                                Constants.FO()
                            });
                            dataComposition.Add <global::e.b>(new global::e.b(Constants.Fo()));
                            ShowDialog command = new ShowDialog(this.dialogPrefab, dataComposition);
                            yield return(executor.Execute(command));
                        }
                        this.Success = true;
                        this.deckSave.set_UnsavedChanges(false);
                        Archetypes archetypes = Finder.FindOrThrow <Archetypes>();
                        Pile       pile;
                        if (deckComponent != null && deckComponent.get_Piles().TryGetValue(Constants.K(), out pile))
                        {
                            string text = "";
                            foreach (KeyValuePair <ArchetypeID, int> keyValuePair2 in pile)
                            {
                                text = string.Concat(new object[]
                                {
                                    text,
                                    archetypes.get_All()[keyValuePair2.Key].GetOne <NameData>().get_Name(),
                                    " ",
                                    keyValuePair2.Value,
                                    "\r\n"
                                });
                            }
                            File.WriteAllText(Path.Combine("decks", deckComponent.get_Name() + ".txt"), text);
                        }
                        deckComponent = null;
                        pile          = null;
                        deckComponent = null;
                        pile          = null;
                    }
                    else
                    {
                        DataComposition dataComposition2 = global::h.o.Create(global::L.LT(Constants.FP()), global::L.LT(Constants.Fp()), false, new string[]
                        {
                            global::L.LT(Constants.FO())
                        });
                        dataComposition2.Add <global::e.b>(new global::e.b(Constants.Fo()));
                        ShowDialog command2 = new ShowDialog(this.dialogPrefab, dataComposition2);
                        yield return(executor.Execute(command2));

                        yield return(executor.Execute(new ChangeScene(sceneProvider.get_SceneToExitTo())));
                    }
                    save = null;
                }
            }
            else
            {
                this.Success = false;
                if (failure != null)
                {
                    yield return(executor.Execute(new FailFeedbackCommand(failure)));
                }
            }
            yield break;
            yield break;
        }
Beispiel #21
0
        public P(Archetypes archetypes, Collection collection, global::H.c constraints, global::H.D permissions, global::H.q validator, Decks decks)
        {
            this.local_collection_avatars = archetypes;
            global::E.H h = new global::E.H();
            global::E.K k = new global::E.K(h);
            this.current_deck     = new global::H.r(archetypes, global::H.S.Sources.Deck, false);
            this.collection       = new global::E.j(archetypes, collection, h, k);
            this.GlobalCollection = new global::J.y(archetypes, true, this.collection, this.current_deck);
            global::E.X x = new global::E.X(this.current_deck);
            global::E.D d = new global::E.D(this.current_deck, validator);
            this.deck_colors = new global::h.a(d, x, validator, 1.5f);
            global::b.m m  = new global::b.m(archetypes);
            global::h.B b  = new global::h.B();
            global::h.d d2 = new global::h.d();
            global::h.C c  = new global::h.C(archetypes, Finder.FindOrThrow <CardinalNewArchetypes>());
            global::h.D d3 = new global::h.D();
            global::H.z z  = new global::H.z(global::J.U.E.Get());
            global::E.w w  = new global::E.w(d2, d3);
            global::H.t t  = new global::H.t(x, this.current_deck, validator);
            this.deck = new global::H.O(this.current_deck, t);
            this.deck_editor_saver = new global::H.X(this);
            this.deck_name         = new global::E.f(x, this.deck_editor_saver, permissions == null || permissions.get_AllowRename(), decks);
            SinglesCommerceProvider singlesCommerceProvider = SinglesCommerceProvider.Find();

            this.Collection = new global::H.M(this.GlobalCollection, true, new global::h.b[]
            {
                this.deck_colors,
                b,
                d2,
                c,
                d3,
                z,
                m
            });
            global::E.b b2 = new global::E.b(this.current_deck);
            global::E.B b3 = new global::E.B(this.current_deck);
            global::B.q q  = new global::B.q(this.current_deck);
            global::E.I i  = new global::E.I(archetypes, collection, x);
            this.deck_avatars = new global::E.g(i, this.deck_editor_saver, permissions == null || permissions.get_AllowChangeAvatar());
            global::B.T t2 = new global::B.T(this.Collection, this.deck_colors, x);
            this.Composition = new DataComposition(new DataComponent[]
            {
                this.deck_name,
                this.deck_editor_saver,
                new global::H.u(),
                new global::H.W(DeckEditorModes.Collection),
                new global::H.Y(),
                new global::H.U(this.deck, true),
                new global::H.T(this.Collection, global::H.V.ItemState.Card),
                this.deck_colors,
                b,
                m,
                d2,
                c,
                d3,
                h,
                b2,
                b3,
                q,
                d,
                x,
                i,
                this.deck_avatars,
                t,
                w,
                k,
                new global::J.w(),
                new global::E.F(b2, 5),
                new global::E.d(permissions == null || permissions.get_AllowDelete()),
                new global::A.a(permissions != null && permissions.get_AllowClone()),
                new global::E.C(this.deck_editor_saver),
                new global::B.R(this.collection),
                t2
            });
            if (permissions != null)
            {
                this.Composition.Add <DataComponent>(permissions.Clone());
            }
            this.deckvalidator = validator;
            this.set_DeckReprintCounts(new global::E.G(archetypes, this.current_deck));
        }
        public Wizard(decimal level, string archetype)
        {
            HitDice = "k6";
            Archetypes.Add("School of Abjuration");
            Archetypes.Add("School of Conjuration");
            Archetypes.Add("School of Divination");
            Archetypes.Add("School of Enchantment");
            Archetypes.Add("School of Evocation");
            Archetypes.Add("School of Necromancy");
            Archetypes.Add("School of Transmutation");
            ItemProficiencies.Add("Dagger");
            ItemProficiencies.Add("Dart");
            ItemProficiencies.Add("Sling");
            ItemProficiencies.Add("Quarterstaff");
            ItemProficiencies.Add("Light Crossbow");
            ClassFeatures.Add("Spellcasting");
            ClassFeatures.Add("Arcane Recovery");
            if (level >= 2)
            {
                ClassFeatures.Add("Arcane Tradition");
            }
            if (level >= 6)
            {
                ClassFeatures.Add("Arcane Tradition Feature");
            }
            if (level >= 18)
            {
                ClassFeatures.Add("Spell Mastery");
            }
            if (level >= 20)
            {
                ClassFeatures.Add("Signature Spell");
            }
            switch (archetype)
            {
            case "":
                break;

            case "School of Abjuration":
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Abjuration Savant");
                }
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Arcane Ward");
                }
                if (level >= 6)
                {
                    ArchetypeFeats.Add("Projected Ward");
                }
                if (level >= 10)
                {
                    ArchetypeFeats.Add("Improved Abjuration");
                }
                if (level >= 14)
                {
                    ArchetypeFeats.Add("Spell Resistance");
                }
                break;

            case "School of Conjuration":
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Conjuration Savant");
                }
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Minor Conjuration");
                }
                if (level >= 6)
                {
                    ArchetypeFeats.Add("Benign Transposition");
                }
                if (level >= 10)
                {
                    ArchetypeFeats.Add("Focused Conjuration");
                }
                if (level >= 14)
                {
                    ArchetypeFeats.Add("Durable Summons");
                }
                break;

            case "School of Divination":
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Divination Savant");
                }
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Portent");
                }
                if (level >= 6)
                {
                    ArchetypeFeats.Add("Expert Divination");
                }
                if (level >= 10)
                {
                    ArchetypeFeats.Add("The Third Eye");
                }
                if (level >= 14)
                {
                    ArchetypeFeats.Add("Greater Portent");
                }
                break;

            case "School of Enchantment":
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Enchantment Savant");
                }
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Hypnotic Gaze");
                }
                if (level >= 6)
                {
                    ArchetypeFeats.Add("Instinctive Charm");
                }
                if (level >= 10)
                {
                    ArchetypeFeats.Add("Split Enchantment");
                }
                if (level >= 14)
                {
                    ArchetypeFeats.Add("Alter Memories");
                }
                break;

            case "School of Evocation":
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Evocation Savant");
                }
                if (level >= 6)
                {
                    ArchetypeFeats.Add("Potent Cantrips");
                }
                if (level >= 10)
                {
                    ArchetypeFeats.Add("Empowered Evocations");
                }
                if (level >= 14)
                {
                    ArchetypeFeats.Add("Overchannel");
                }
                break;

            case "School of Necromancy":
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Necromancy Savant");
                }
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Grim Harvest");
                }
                if (level >= 6)
                {
                    ArchetypeFeats.Add("Undead Thralls");
                }
                if (level >= 10)
                {
                    ArchetypeFeats.Add("Inured to Undeath");
                }
                if (level >= 14)
                {
                    ArchetypeFeats.Add("Command Undead");
                }
                break;

            case "School of Transmutation":
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Transmutation Savant");
                }
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Minor Alchemy");
                }
                if (level >= 6)
                {
                    ArchetypeFeats.Add("Transmuter's Stone");
                }
                if (level >= 10)
                {
                    ArchetypeFeats.Add("Shapechanger");
                }
                if (level >= 14)
                {
                    ArchetypeFeats.Add("Master Transmuter");
                }
                break;
            }
        }
Beispiel #23
0
        public Sorcerer(decimal level, string archetype)
        {
            HitDice = "k6";
            Archetypes.Add("Draconic Bloodline");
            Archetypes.Add("Wild Magic");
            ItemProficiencies.Add("Dagger");
            ItemProficiencies.Add("Dart");
            ItemProficiencies.Add("Sling");
            ItemProficiencies.Add("Quarterstaff");
            ItemProficiencies.Add("Light Crossbow");
            ClassFeatures.Add("Spellcasting");
            ClassFeatures.Add("Sorcerous Orgin");
            if (level >= 2)
            {
                ClassFeatures.Add("Font of Magic");
            }
            if (level >= 3)
            {
                ClassFeatures.Add("Metamagic");
            }
            if (level >= 6)
            {
                ClassFeatures.Add("Sorcerous Origin Feature");
            }
            if (level >= 10)
            {
                ClassFeatures.Add("Metamagic");
            }
            if (level >= 14)
            {
                ClassFeatures.Add("Sorcerous Origin Feature");
            }
            if (level >= 17)
            {
                ClassFeatures.Add("Metamagic");
            }
            if (level >= 18)
            {
                ClassFeatures.Add("Sorcerous Origin Feature");
            }
            if (level >= 20)
            {
                ClassFeatures.Add("Sorcerous Restoration");
            }
            switch (archetype)
            {
            case "":
                break;

            case "Draconic Bloodline":
                if (level >= 1)
                {
                    ArchetypeFeats.Add("Draconic Ancestor");
                }
                if (level >= 1)
                {
                    ArchetypeFeats.Add("Draconic Resilience");
                }
                if (level >= 6)
                {
                    ArchetypeFeats.Add("Elemental Affinity");
                }
                if (level >= 14)
                {
                    ArchetypeFeats.Add("Dragon Wings");
                }
                if (level >= 18)
                {
                    ArchetypeFeats.Add("Draconic Presence");
                }
                break;

            case "Wild Magic":
                if (level >= 1)
                {
                    ArchetypeFeats.Add("Wild Magic Surge");
                }
                if (level >= 1)
                {
                    ArchetypeFeats.Add("Tides of Chaos");
                }
                if (level >= 6)
                {
                    ArchetypeFeats.Add("Bend Luck");
                }
                if (level >= 14)
                {
                    ArchetypeFeats.Add("Controlled Chaos");
                }
                if (level >= 18)
                {
                    ArchetypeFeats.Add("Spell Bombardment");
                }
                break;
            }
        }
 //-----------------------------------------------------------------------------
 private void CreateAgent(AgentSpawnData spawnData, float3 _pos)
 {
     Archetypes.CreateAgent(PostUpdateCommands, _pos, spawnData.AgentMesh, spawnData.AgentMaterial, m_AgentData.GridSettings[0]);
 }
        public Druid(decimal level, string archetype)
        {
            HitDice = "d8";
            Archetypes.Add("Circle of the Land");
            Archetypes.Add("Circle of the Moon");
            ItemProficiencies.Add("Light Armor");
            ItemProficiencies.Add("Medium Armor");
            ItemProficiencies.Add("Club");
            ItemProficiencies.Add("Dagger");
            ItemProficiencies.Add("Dart");
            ItemProficiencies.Add("Javelin");
            ItemProficiencies.Add("Mace");
            ItemProficiencies.Add("Quarterstaff");
            ItemProficiencies.Add("Scimitar");
            ItemProficiencies.Add("Sickle");
            ItemProficiencies.Add("Sling");
            ItemProficiencies.Add("Spear");
            ItemProficiencies.Add("Herbalism Kit");
            ClassFeatures.Add("Spellcasting");
            if (level >= 2)
            {
                ClassFeatures.Add("Wild Shape");
            }
            if (level >= 2)
            {
                ClassFeatures.Add("Druidic Circle");
            }
            if (level >= 8)
            {
                ClassFeatures.Add("Timeless Body");
            }
            if (level >= 18)
            {
                ClassFeatures.Add("Beast Spells");
            }
            if (level >= 20)
            {
                ClassFeatures.Add("Archdruid");
            }
            switch (archetype)
            {
            case "":
                break;

            case "Circle of the Land":
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Bonus Contrip");
                }
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Natural Recovery");
                }
                if (level >= 3)
                {
                    ArchetypeFeats.Add("Circle Spells");
                }
                if (level >= 6)
                {
                    ArchetypeFeats.Add("Lands Stride");
                }
                if (level >= 10)
                {
                    ArchetypeFeats.Add("Nature Ward");
                }
                if (level >= 14)
                {
                    ArchetypeFeats.Add("Natures's Sanctuary");
                }
                break;

            case "Circle of the Moon":
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Combat Wild Shape");
                }
                if (level >= 2)
                {
                    ArchetypeFeats.Add("Circle Forms");
                }
                if (level >= 6)
                {
                    ArchetypeFeats.Add("Primal Strike");
                }
                if (level >= 10)
                {
                    ArchetypeFeats.Add("Elemental Wild Shape");
                }
                if (level >= 14)
                {
                    ArchetypeFeats.Add("Thousand Forms");
                }
                break;
            }
        }
Beispiel #26
0
        public Bloodrager()
        {
            Name            = "Bloodrager";
            Alignment       = "Any";
            BaseAttackBonus = BaseAttackBonus.Full;
            FortitudeSave   = SavingThrow.Good;
            ReflexSave      = SavingThrow.Bad;
            WillSave        = SavingThrow.Bad;
            SpellCaster     = true;
            SpellCasting    = new SpellCasting
            {
                CasterLevels = new List <CasterLevel>
                {
                    new CasterLevel(1, null),
                    new CasterLevel(2, null),
                    new CasterLevel(3, null),
                    new CasterLevel(4, null, 1),
                    new CasterLevel(5, null, 1),
                    new CasterLevel(6, null, 1),
                    new CasterLevel(7, null, 1, 1),
                    new CasterLevel(8, null, 1, 1),
                    new CasterLevel(9, null, 2, 1),
                    new CasterLevel(10, null, 2, 1, 1),
                    new CasterLevel(11, null, 2, 1, 1),
                    new CasterLevel(12, null, 2, 2, 1),
                    new CasterLevel(13, null, 3, 2, 1, 1),
                    new CasterLevel(14, null, 3, 2, 1, 1),
                    new CasterLevel(15, null, 3, 2, 2, 1),
                    new CasterLevel(16, null, 3, 3, 2, 1),
                    new CasterLevel(17, null, 4, 3, 2, 1),
                    new CasterLevel(18, null, 4, 3, 2, 2),
                    new CasterLevel(19, null, 4, 3, 3, 2),
                    new CasterLevel(20, null, 4, 4, 3, 2),
                }
            };
            ClassAbilities = new List <ClassAbility>
            {
                Bloodline,
                BloodlinePower1,
                BloodlinePower4,
                BloodlinePower8,
                BloodlinePower12,
                BloodlinePower16,
                BloodlinePower20,
                Bloodrage,
                FastMovement,
                UncannyDodge,
                BloodSanctuary,
                BloodCasting,
                EschewMaterials,
                Spells,
                ImprovedUncannyDodge,
                BloodlineFeat6,
                BloodlineFeat9,
                BloodlineFeat12,
                BloodlineFeat15,
                BloodlineFeat18,
                BloodlineSpell7,
                BloodlineSpell10,
                BloodlineSpell13,
                BloodlineSpell16,
                DamageReduction1,
                DamageReduction2,
                DamageReduction3,
                DamageReduction4,
                DamageReduction5,
                GreaterBloodrage,
                IndomitableWill,
                TirelessBloodrage,
                MightyBloodrage,
            };

            Archetypes.Add(new AncestralHarbinger(this));
            Archetypes.Add(new BloodConduit(this));
            Archetypes.Add(new Bloodrider(this));
            Archetypes.Add(new BloodyKnuckledRowdy(this));
            Archetypes.Add(new CrossbloodedRager(this));
            Archetypes.Add(new EnlightenedBloodrager(this));
            Archetypes.Add(new Greenrager(this));
            Archetypes.Add(new HagRiven(this));
            Archetypes.Add(new IdRager(this));
            Archetypes.Add(new MetamagicRager(this));
            Archetypes.Add(new Primalist(this));
            Archetypes.Add(new ProwlerAtWorldsEnd(this));
            Archetypes.Add(new Rageshaper(this));
            Archetypes.Add(new Spelleater(this));
            Archetypes.Add(new Steelblood(this));
            Archetypes.Add(new SymbolStriker(this));
            Archetypes.Add(new UntouchableRager(this));
            Archetypes.Add(new UrbanBloodrager(this));
        }
Beispiel #27
0
        public Cavalier()
        {
            Name            = "Cavalier";
            Alignment       = "Any";
            BaseAttackBonus = BaseAttackBonus.Full;
            FortitudeSave   = SavingThrow.Good;
            ReflexSave      = SavingThrow.Bad;
            WillSave        = SavingThrow.Bad;
            ClassAbilities  = new List <ClassAbility>
            {
                Challenge1,
                Challenge2,
                Challenge3,
                Challenge4,
                Challenge5,
                Challenge6,
                Challenge7,
                Mount,
                Order,
                Tactician,
                OrderAbility2,
                OrderAbility8,
                OrderAbility15,
                CavaliersCharge,
                ExpertTrainer,
                Banner,
                BonusFeat6,
                BonusFeat12,
                BonusFeat18,
                GreaterTactician,
                MightyCharge,
                DemandingChallenge,
                GreaterBanner,
                MasterTactician,
                SupremeCharge,
            };

            Archetypes.Add(new BeastRider(this));
            Archetypes.Add(new Castellan(this));
            Archetypes.Add(new Charger(this));
            Archetypes.Add(new CircuitJudge(this));
            Archetypes.Add(new Constable(this));
            Archetypes.Add(new CourtlyKnight(this));
            Archetypes.Add(new DaringChampion(this));
            Archetypes.Add(new DaringGeneral(this));
            Archetypes.Add(new DiscipleOfThePike(this));
            Archetypes.Add(new Drakerider(this));
            Archetypes.Add(new Emissary(this));
            Archetypes.Add(new Esquire(this));
            Archetypes.Add(new FellRider(this));
            Archetypes.Add(new FirstMothersFang(this));
            Archetypes.Add(new Gallant(this));
            Archetypes.Add(new Gendarme(this));
            Archetypes.Add(new GhostRider(this));
            Archetypes.Add(new GreenKnight(this));
            Archetypes.Add(new HeraldSquire(this));
            Archetypes.Add(new HonorGuard(this));
            Archetypes.Add(new HoodedKnight(this));
            Archetypes.Add(new Huntmaster(this));
            Archetypes.Add(new Hussar(this));
            Archetypes.Add(new KnightOfArnisant(this));
            Archetypes.Add(new LuringCavalier(this));
            Archetypes.Add(new Musketeer(this));
            Archetypes.Add(new Oceanrider(this));
            Archetypes.Add(new QabaratOutrider(this));
            Archetypes.Add(new QadiranHorselord(this));
            Archetypes.Add(new SaurianChampion(this));
            Archetypes.Add(new SisterInArms(this));
            Archetypes.Add(new SpellscarDrifter(this));
            Archetypes.Add(new StandardBearer(this));
            Archetypes.Add(new Strategist(this));
            Archetypes.Add(new Verdivant(this));
            Archetypes.Add(new VerminTamer(this));
            Archetypes.Add(new WaveRider(this));
        }
Beispiel #28
0
        public Bard()
        {
            Name            = "Bard";
            Alignment       = "Any";
            BaseAttackBonus = BaseAttackBonus.Medium;
            FortitudeSave   = SavingThrow.Bad;
            ReflexSave      = SavingThrow.Good;
            WillSave        = SavingThrow.Good;
            SpellCaster     = true;
            SpellCasting    = new SpellCasting()
            {
                CasterLevels = new List <CasterLevel>
                {
                    new CasterLevel(1, null, 1),
                    new CasterLevel(2, null, 2),
                    new CasterLevel(3, null, 3),
                    new CasterLevel(4, null, 3, 1),
                    new CasterLevel(5, null, 4, 2),
                    new CasterLevel(6, null, 4, 3),
                    new CasterLevel(7, null, 4, 3, 1),
                    new CasterLevel(8, null, 4, 4, 2),
                    new CasterLevel(9, null, 5, 4, 3),
                    new CasterLevel(10, null, 5, 4, 3, 1),
                    new CasterLevel(11, null, 5, 4, 4, 2),
                    new CasterLevel(12, null, 5, 5, 4, 3),
                    new CasterLevel(13, null, 5, 5, 4, 3, 1),
                    new CasterLevel(14, null, 5, 5, 4, 4, 2),
                    new CasterLevel(15, null, 5, 5, 5, 4, 3),
                    new CasterLevel(16, null, 5, 5, 5, 4, 3, 1),
                    new CasterLevel(17, null, 5, 5, 5, 4, 4, 2),
                    new CasterLevel(18, null, 5, 5, 5, 5, 4, 3),
                    new CasterLevel(19, null, 5, 5, 5, 5, 5, 4),
                    new CasterLevel(20, null, 5, 5, 5, 5, 5, 5),
                }
            };

            ClassAbilities = new List <ClassAbility>
            {
                BardicKnowledge,
                BardicPerformance,
                Cantrips,
                Countersong,
                Distraction,
                Fascinate,
                InspireCourage1,
                InspireCourage2,
                InspireCourage3,
                InspireCourage4,
                Spells,
                WellVersed,
                InspireCompetence2,
                InspireCompetence3,
                InspireCompetence4,
                InspireCompetence5,
                InspireCompetence6,
                Suggestion,
                DirgeOfDoom,
                InspireGreatness,
                SoothingPerformance,
                FrighteningTune,
                InspireHeroics,
                MassSuggestion,
                DeadlyPerformance,
                VersatilePerformance2,
                VersatilePerformance6,
                VersatilePerformance10,
                VersatilePerformance14,
                VersatilePerformance18,
                LoreMaster1,
                LoreMaster2,
                LoreMaster3,
                JackOfAllTrades,
            };

            Archetypes.Add(new AnimalSpeaker(this));
            Archetypes.Add(new ArcaneDuelist(this));
            Archetypes.Add(new ArcaneHealer(this));
            Archetypes.Add(new Archaeologist(this));
            Archetypes.Add(new Archivist(this));
            Archetypes.Add(new ArgentVoice(this));
            Archetypes.Add(new ArrowsongMinstrel(this));
            Archetypes.Add(new AverakaArbiter(this));
            Archetypes.Add(new BrazenDeceiver(this));
            Archetypes.Add(new Buccaneer(this));
            Archetypes.Add(new Busker(this));
            Archetypes.Add(new Celebrity(this));
            Archetypes.Add(new ChelishDiva(this));
            Archetypes.Add(new ChroniclerOfWorlds(this));
            Archetypes.Add(new CourtBard(this));
            Archetypes.Add(new CourtFool(this));
            Archetypes.Add(new Cultivator(this));
            Archetypes.Add(new Daredevil(this));
            Archetypes.Add(new DawnflowerDervish(this));
            Archetypes.Add(new Demagogue(this));
            Archetypes.Add(new DervishDancer(this));
            Archetypes.Add(new Detective(this));
            Archetypes.Add(new DirgeBard(this));
            Archetypes.Add(new DiscipleOfTheForkedTongue(this));
            Archetypes.Add(new DragonHerald(this));
            Archetypes.Add(new DragonYapper(this));
            Archetypes.Add(new Duettist(this));
            Archetypes.Add(new DwarvenScholar(this));
            Archetypes.Add(new FaithSinger(this));
            Archetypes.Add(new FeyCourtier(this));
            Archetypes.Add(new FeyPrankster(this));
            Archetypes.Add(new Filidh(this));
            Archetypes.Add(new FirstWorldMinstrel(this));
            Archetypes.Add(new FlameDancer(this));
            Archetypes.Add(new Flamesinger(this));
            Archetypes.Add(new FortuneTeller(this));
            Archetypes.Add(new Geisha(this));
            Archetypes.Add(new HatharatAgent(this));
            Archetypes.Add(new Hoaxer(this));
            Archetypes.Add(new ImperviousMessenger(this));
            Archetypes.Add(new Juggler(this));
            Archetypes.Add(new LotusGeisha(this));
            Archetypes.Add(new LuringPiper(this));
            Archetypes.Add(new Magician(this));
            Archetypes.Add(new MaskedPerformer(this));
            Archetypes.Add(new MuteMusician(this));
            Archetypes.Add(new Negotiator(this));
            Archetypes.Add(new Phrenologist(this));
            Archetypes.Add(new PitaxAcademyOfGrandArts(this));
            Archetypes.Add(new PlantSpeaker(this));
            Archetypes.Add(new Prankster(this));
            Archetypes.Add(new Provocateur(this));
            Archetypes.Add(new RingleaderAG(this));
            Archetypes.Add(new RingleaderUI(this));
            Archetypes.Add(new Sandman(this));
            Archetypes.Add(new SavageSkald(this));
            Archetypes.Add(new SeaSinger(this));
            Archetypes.Add(new ShadowPuppeteer(this));
            Archetypes.Add(new SilverBalladeer(this));
            Archetypes.Add(new Solacer(this));
            Archetypes.Add(new Songhealer(this));
            Archetypes.Add(new Sorrowsoul(this));
            Archetypes.Add(new SoundStriker(this));
            Archetypes.Add(new SpeakerOfThePalatineEye(this));
            Archetypes.Add(new Stonesinger(this));
            Archetypes.Add(new StreetPerformer(this));
            Archetypes.Add(new StudiousLibrarian(this));
            Archetypes.Add(new Thundercaller(this));
            Archetypes.Add(new VoiceOfBrigh(this));
            Archetypes.Add(new VoiceOfTheWild(this));
            Archetypes.Add(new WastelandChronicler(this));
            Archetypes.Add(new Watersinger(this));
            Archetypes.Add(new Wit(this));
        }
Beispiel #29
0
        public Cleric()
        {
            Name            = "Cleric";
            Alignment       = "Within one step of her deity";
            BaseAttackBonus = BaseAttackBonus.Medium;
            FortitudeSave   = SavingThrow.Good;
            ReflexSave      = SavingThrow.Bad;
            WillSave        = SavingThrow.Good;
            SpellCaster     = true;
            SpellCasting    = new SpellCasting
            {
                CasterLevels = new List <CasterLevel>
                {
                    new CasterLevel(1, 3, 1),
                    new CasterLevel(2, 4, 2),
                    new CasterLevel(3, 4, 2, 1),
                    new CasterLevel(4, 4, 3, 2),
                    new CasterLevel(5, 4, 3, 2, 1),
                    new CasterLevel(6, 4, 3, 3, 2),
                    new CasterLevel(7, 4, 4, 3, 2, 1),
                    new CasterLevel(8, 4, 4, 3, 3, 2),
                    new CasterLevel(9, 4, 4, 4, 3, 2, 1),
                    new CasterLevel(10, 4, 4, 4, 3, 3, 2),
                    new CasterLevel(11, 4, 4, 4, 4, 3, 2, 1),
                    new CasterLevel(12, 4, 4, 4, 4, 3, 3, 2),
                    new CasterLevel(13, 4, 4, 4, 4, 4, 3, 2, 1),
                    new CasterLevel(14, 4, 4, 4, 4, 4, 3, 3, 2),
                    new CasterLevel(15, 4, 4, 4, 4, 4, 4, 3, 2, 1),
                    new CasterLevel(16, 4, 4, 4, 4, 4, 4, 3, 3, 2),
                    new CasterLevel(17, 4, 4, 4, 4, 4, 4, 4, 3, 2, 1),
                    new CasterLevel(18, 4, 4, 4, 4, 4, 4, 4, 3, 3, 2),
                    new CasterLevel(19, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3),
                    new CasterLevel(20, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4),
                }
            };
            ClassAbilities = new List <ClassAbility>
            {
                Aura,
                ChannelEnergy1,
                ChannelEnergy2,
                ChannelEnergy3,
                ChannelEnergy4,
                ChannelEnergy5,
                ChannelEnergy6,
                ChannelEnergy7,
                ChannelEnergy8,
                ChannelEnergy9,
                ChannelEnergy10,
                Domains,
                Spells,
                SpontaneousCasting,
                Orisons,
            };

            Archetypes.Add(new AngelfireApostle(this));
            Archetypes.Add(new Appeaser(this));
            Archetypes.Add(new AsmodeanAdvocate(this));
            Archetypes.Add(new BlossomingLight(this));
            Archetypes.Add(new Cardinal(this));
            Archetypes.Add(new ChannelerOfTheUnknown(this));
            Archetypes.Add(new CloisteredCleric(this));
            Archetypes.Add(new CrashingWave(this));
            Archetypes.Add(new Crusader(this));
            Archetypes.Add(new DemonicApostle(this));
            Archetypes.Add(new DivineParagon(this));
            Archetypes.Add(new DivineScourge(this));
            Archetypes.Add(new DivineStrategist(this));
            Archetypes.Add(new Ecclesitheurge(this));
            Archetypes.Add(new ElderMythosCultist(this));
            Archetypes.Add(new Evangelist(this));
        }
Beispiel #30
0
        public Ranger(decimal level, string archetype)
        {
            HitDice = "k10";
            Archetypes.Add("Hunter");
            Archetypes.Add("Beast Master");
            ItemProficiencies.Add("Light armor");
            ItemProficiencies.Add("Medium armor");
            ItemProficiencies.Add("Shield");
            ItemProficiencies.Add("Simple Weapon");
            ItemProficiencies.Add("Martial Weapon");
            ClassFeatures.Add("Favored Enemy");
            ClassFeatures.Add("Natural Explorer");
            if (level >= 2)
            {
                ClassFeatures.Add("Fighting Style");
            }
            if (level >= 2)
            {
                ClassFeatures.Add("Spellcasting");
            }
            if (level >= 3)
            {
                ClassFeatures.Add("Ranger archetype");
            }
            if (level >= 3)
            {
                ClassFeatures.Add("Primeval awarness");
            }
            if (level >= 5)
            {
                ClassFeatures.Add("Extra attack");
            }
            if (level >= 8)
            {
                ClassFeatures.Add("Land's stride");
            }
            if (level >= 10)
            {
                ClassFeatures.Add("Hide in Plain Sight");
            }
            if (level >= 14)
            {
                ClassFeatures.Add("Vanish");
            }
            if (level >= 18)
            {
                ClassFeatures.Add("Feral senses");
            }
            if (level >= 20)
            {
                ClassFeatures.Add("Foe slayer");
            }
            switch (archetype)
            {
            case "":
                break;

            case "Hunter":
                if (level >= 3)
                {
                    ArchetypeFeats.Add("Hunter's Prey");
                }
                if (level >= 7)
                {
                    ArchetypeFeats.Add("Defensive Tactics");
                }
                if (level >= 11)
                {
                    ArchetypeFeats.Add("Multiattack");
                }
                if (level >= 15)
                {
                    ArchetypeFeats.Add("Superior Hunter's Defense");
                }
                break;

            case "Beast Master":
                if (level >= 3)
                {
                    ArchetypeFeats.Add("Ranger's Companion");
                }
                if (level >= 7)
                {
                    ArchetypeFeats.Add("Exceptional Training");
                }
                if (level >= 11)
                {
                    ArchetypeFeats.Add("Bestial Fury");
                }
                if (level >= 15)
                {
                    ArchetypeFeats.Add("Shared Spells");
                }
                break;
            }
        }