public static void create() { var sorcerer = library.Get <BlueprintCharacterClass>("b3a505fb61437dc4097f43c3f8f9a4cf"); createPrimalBloodlines(); archetype = Helpers.Create <BlueprintArchetype>(a => { a.name = "PrimalSorcererArchetype"; a.LocalizedName = Helpers.CreateString($"{a.name}.Name", "Primal Sorcerer"); a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "Your powers are attuned to the concentrated core of the elemental plane."); }); Helpers.SetField(archetype, "m_ParentClass", sorcerer); library.AddAsset(archetype, ""); archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, library.Get <BlueprintFeatureSelection>("24bef8d1bee12274686f6da6ccbc8914")), //original bloodline }; archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, primal_bloodline_selection) }; sorcerer.Archetypes = sorcerer.Archetypes.AddToArray(archetype); //fix dragon disciple var dragon_disciple = library.Get <BlueprintCharacterClass>("72051275b1dbb2d42ba9118237794f7c"); dragon_disciple.AddComponent(Common.prerequisiteNoArchetype(sorcerer, archetype)); archetype.AddComponent(Helpers.Create <PrerequisiteMechanics.PrerequisiteNoClassLevelVisible>(p => p.CharacterClass = dragon_disciple)); }
static void fixDragonDisciple() { var dragon_disciple = library.Get <BlueprintCharacterClass>("72051275b1dbb2d42ba9118237794f7c"); dragon_disciple.AddComponent(Common.prerequisiteNoArchetype(archetype.GetParentClass(), archetype)); archetype.AddComponent(Helpers.Create <PrerequisiteMechanics.PrerequisiteNoClassLevelVisible>(p => p.CharacterClass = dragon_disciple)); }
internal static void create() { var bard_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("772c83a25e2268e448e841dcd548235f"); createSpellbook(); createPreciseMinstrel(); createArrowSongStrike(); createArcaneArchery(); createWeaponProficiency(); archetype = Helpers.Create <BlueprintArchetype>(a => { a.name = "ArrowsongMinstrelArchetype"; a.LocalizedName = Helpers.CreateString($"{a.name}.Name", "Arrowsong Minstrel"); a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "Arrowsong minstrels combine the elven traditions of archery, song, and spellcasting into a seamless harmony of dazzling magical effects."); }); Helpers.SetField(archetype, "m_ParentClass", bard_class); library.AddAsset(archetype, ""); archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, library.Get <BlueprintFeature>("fa3d3b2211a51994785d85e753f612d3")), //bard proficiencies Helpers.LevelEntry(2, bard_class.Progression.LevelEntries[1].Features), //well versed and versatile Helpers.LevelEntry(3, bard_class.Progression.LevelEntries[2].Features), //inspire competence Helpers.LevelEntry(6, library.Get <BlueprintFeature>("ddaec3a5845bc7d4191792529b687d65")), //fascinate Helpers.LevelEntry(7, library.Get <BlueprintFeature>("6d3fcfab6d935754c918eb0e004b5ef7")), //inspire competence Helpers.LevelEntry(8, library.Get <BlueprintFeature>("1d48ab2bded57a74dad8af3da07d313a")), //dirge of doom Helpers.LevelEntry(11, library.Get <BlueprintFeature>("6d3fcfab6d935754c918eb0e004b5ef7")), //inspire competence Helpers.LevelEntry(12, library.Get <BlueprintFeature>("546698146e02d1e4ea00581a3ea7fe58")), //soothing performance Helpers.LevelEntry(14, library.Get <BlueprintFeature>("cfd8940869a304f4aa9077415f93febe")), //frightening tune Helpers.LevelEntry(15, library.Get <BlueprintFeature>("6d3fcfab6d935754c918eb0e004b5ef7")), //inspire competence Helpers.LevelEntry(19, library.Get <BlueprintFeature>("6d3fcfab6d935754c918eb0e004b5ef7")), //inspire competence }; archetype.ReplaceSpellbook = spellbook; archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, weapon_proficiency), Helpers.LevelEntry(1, arcane_achery), Helpers.LevelEntry(2, precise_minstrel), Helpers.LevelEntry(6, arrowsong_strike), Helpers.LevelEntry(18, ray_spell_combat) }; bard_class.Progression.UIDeterminatorsGroup = bard_class.Progression.UIDeterminatorsGroup.AddToArray(weapon_proficiency); bard_class.Progression.UIGroups = bard_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(arcane_achery, precise_minstrel, arrowsong_strike, ray_spell_combat)); bard_class.Archetypes = bard_class.Archetypes.AddToArray(archetype); archetype.ReplaceStartingEquipment = true; var starting_items = library.Get <BlueprintArchetype>("44388c01eb4a29d4d90a25cc0574320d").StartingItems; //from eldritch archer //replace scroll of snowball with cure light wounds archetype.StartingItems = starting_items.RemoveFromArray(library.Get <BlueprintItemEquipmentUsable>("66fc961f9c39ae94fb87a79adc87212e")).AddToArray(library.Get <BlueprintItemEquipmentUsable>("cd635d5720937b044a354dba17abad8d")); addToPrestigeClasses(); var magus = library.Get <BlueprintCharacterClass>("45a4607686d96a1498891b3286121780"); magus.AddComponent(Common.prerequisiteNoArchetype(bard_class, archetype)); archetype.AddComponent(Helpers.Create <PrerequisiteMechanics.PrerequisiteNoClassLevelVisible>(p => p.CharacterClass = magus)); }
internal static void create() { var inquisitor_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("f1a70d9e1b0b41e49874e1fa9052a1ce"); archetype = Helpers.Create <BlueprintArchetype>(a => { a.name = "RavenerHunterArchetype"; a.LocalizedName = Helpers.CreateString($"{a.name}.Name", "Demon Hunter"); a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "The natural enemies of demoniacs and other cultists of fiendish forces, demon hunters are inquisitors who dedicate their lives to eradicating demonkind."); }); Helpers.SetField(archetype, "m_ParentClass", inquisitor_class); library.AddAsset(archetype, ""); var deity = library.Get <BlueprintFeatureSelection>("59e7a76987fe3b547b9cce045f4db3e4"); var domain = library.Get <BlueprintFeatureSelection>("48525e5da45c9c243a343fc6545dbdb9"); var teamwork_feat = library.Get <BlueprintFeature>("d87e2f6a9278ac04caeb0f93eff95fcb"); var solo_tactics = library.Get <BlueprintFeature>("5602845cd22683840a6f28ec46331051"); var solo_tactics_ravener = library.CopyAndAdd(solo_tactics, "SoloTacticsRavenerHunter", ""); solo_tactics_ravener.SetDescription("A demon hunter gains solo tactics at 6th level instead of 3rd level."); createHolyMagic(); createDemonHunter(); createChargedByNatureAndRevelations(); archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, domain), Helpers.LevelEntry(3, teamwork_feat, solo_tactics), }; archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, holy_magic, charged_by_nature, revelation_selection), Helpers.LevelEntry(3, demon_hunter), Helpers.LevelEntry(6, solo_tactics_ravener), Helpers.LevelEntry(8, revelation_selection), }; archetype.ReplaceSpellbook = spellbook; archetype.AddComponent(Common.createPrerequisiteAlignment((~Kingmaker.UnitLogic.Alignments.AlignmentMaskType.Evil) & Kingmaker.UnitLogic.Alignments.AlignmentMaskType.Any)); inquisitor_class.Progression.UIGroups = inquisitor_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(revelation_selection, demon_hunter, solo_tactics_ravener)); inquisitor_class.Progression.UIDeterminatorsGroup = inquisitor_class.Progression.UIDeterminatorsGroup.AddToArray(holy_magic, charged_by_nature); inquisitor_class.Archetypes = inquisitor_class.Archetypes.AddToArray(archetype); var mt_progression = library.Get <BlueprintProgression>("d21a104c204ed7348a51405e68387013"); mt_progression.AddComponent(Common.prerequisiteNoArchetype(archetype)); Common.addMTDivineSpellbookProgression(archetype.GetParentClass(), spellbook, "MysticTheurgeRavenerHunterProgression", Common.createPrerequisiteArchetypeLevel(archetype, 1), Common.createPrerequisiteClassSpellLevel(inquisitor_class, 2) ); }
internal static void create() { var slayer_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("c75e0971973957d4dbad24bc7957e4fb"); archetype = Helpers.Create <BlueprintArchetype>(a => { a.name = "ExecutionerArchetype"; a.LocalizedName = Helpers.CreateString($"{a.name}.Name", "Executioner"); a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "These professional killers are trained and used almost exclusively by the various crime families. Streetwise and ruthless, they operate independently, often making their talents available to the highest bidder. Though a few unscrupulous executioners exploit this arrangement and force families to pay higher rates for their services, most of these assassins follow a strict personal code and maintain absolute transparency with their employers."); }); Helpers.SetField(archetype, "m_ParentClass", slayer_class); library.AddAsset(archetype, ""); var slayer_talent4 = library.Get <BlueprintFeatureSelection>("04430ad24988baa4daa0bcd4f1c7d118"); var slayer_talent10 = library.Get <BlueprintFeatureSelection>("913b9cf25c9536949b43a2651b7ffb66"); var quarry = library.Get <BlueprintFeature>("385260ca07d5f1b4e907ba22a02944fc"); var improved_quarry = library.Get <BlueprintFeature>("25e009b7e53f86141adee3a1213af5af"); archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(4, slayer_talent4), Helpers.LevelEntry(10, slayer_talent10), Helpers.LevelEntry(14, quarry), Helpers.LevelEntry(19, improved_quarry), }; createBloodstainedHands(); createFocusedKiller(); createPainStrike(); assasinate = Helpers.CreateFeature("ExecutionerAssasinateFeature", RogueTalents.assasinate.Name, "At 10th level, an executioner must select the assassinate advanced slayer talent.", "", RogueTalents.assasinate.Icon, FeatureGroup.None, Helpers.CreateAddFact(RogueTalents.assasinate) ); archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, focused_killer /*, bloodstained_hands*/), Helpers.LevelEntry(4, pain_strike), Helpers.LevelEntry(10, assasinate), Helpers.LevelEntry(14, RogueTalents.swift_death), }; archetype.AddComponent(Common.createPrerequisiteAlignment(AlignmentMaskType.Evil)); //slayer_class.Progression.UIDeterminatorsGroup = slayer_class.Progression.UIDeterminatorsGroup.AddToArray(bloodstained_hands); slayer_class.Progression.UIGroups = slayer_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(focused_killer, pain_strike, assasinate, RogueTalents.swift_death)); slayer_class.Archetypes = slayer_class.Archetypes.AddToArray(archetype); }
internal static void create() { var inquisitor_class = ResourcesLibrary.TryGetBlueprint <BlueprintCharacterClass>("f1a70d9e1b0b41e49874e1fa9052a1ce"); archetype = Helpers.Create <BlueprintArchetype>(a => { a.name = "RelicHunterArchetype"; a.LocalizedName = Helpers.CreateString($"{a.name}.Name", "Relic Hunter"); a.LocalizedDescription = Helpers.CreateString($"{a.name}.Description", "Some inquisitors specialize in the use and recovery of long-lost relics of their faiths, drawing forth divine might from the recovered items in order to restore their sanctity and wield these artifacts against the enemies of their gods."); }); Helpers.SetField(archetype, "m_ParentClass", inquisitor_class); library.AddAsset(archetype, ""); spellbook = library.CopyAndAdd(inquisitor_class.Spellbook, "RelicHunterSpellBook", ""); spellbook.SpellsKnown = Occultist.occultist_class.Spellbook.SpellsKnown; spellbook.AddComponent(Helpers.Create <SpellbookMechanics.OccultistSpellbook>()); archetype.ReplaceSpellbook = spellbook; createDeificFocus(); createImplements(); createFocusPowers(); var judgment = library.Get <BlueprintFeature>("981def910b98200499c0c8f85a78bde8"); var judgment_extra_use = library.Get <BlueprintFeature>("ee50875819478774b8968701893b52f5"); var bane = library.Get <BlueprintFeature>("7ddf7fbeecbe78342b83171d888028cf"); var bane_greater = library.Get <BlueprintFeature>("6e694114b2f9e0e40a6da5d13736ff33"); var judgment2 = library.Get <BlueprintFeature>("33bf0404b70d65f42acac989ec5295b2"); var judgment3 = library.Get <BlueprintFeature>("490c7e92b22cc8a4bb4885a027b355db"); var judgment_true = library.Get <BlueprintFeature>("f069b6557a2013544ac3636219186632"); var domains = library.Get <BlueprintFeatureSelection>("48525e5da45c9c243a343fc6545dbdb9"); archetype.RemoveFeatures = new LevelEntry[] { Helpers.LevelEntry(1, judgment, domains), Helpers.LevelEntry(4, judgment_extra_use), Helpers.LevelEntry(5, bane), Helpers.LevelEntry(7, judgment_extra_use), Helpers.LevelEntry(8, judgment2), Helpers.LevelEntry(10, judgment_extra_use), Helpers.LevelEntry(12, bane_greater), Helpers.LevelEntry(13, judgment_extra_use), Helpers.LevelEntry(16, judgment_extra_use, judgment3), Helpers.LevelEntry(19, judgment_extra_use), Helpers.LevelEntry(20, judgment_true), }; archetype.ReplaceSpellbook = spellbook; archetype.AddFeatures = new LevelEntry[] { Helpers.LevelEntry(1, deific_focus, first_implement_selection, implement_selection, focus_power_selection), Helpers.LevelEntry(4, implement_selection, focus_power_selection), Helpers.LevelEntry(7, implement_selection), Helpers.LevelEntry(8, focus_power_selection), Helpers.LevelEntry(10, implement_selection), Helpers.LevelEntry(12, focus_power_selection), Helpers.LevelEntry(13, implement_selection), Helpers.LevelEntry(16, implement_selection, focus_power_selection), Helpers.LevelEntry(19, implement_selection), Helpers.LevelEntry(20, focus_power_selection), }; inquisitor_class.Progression.UIDeterminatorsGroup = inquisitor_class.Progression.UIDeterminatorsGroup.AddToArray(deific_focus); inquisitor_class.Progression.UIGroups = inquisitor_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(first_implement_selection, implement_selection)); inquisitor_class.Progression.UIGroups = inquisitor_class.Progression.UIGroups.AddToArray(Helpers.CreateUIGroup(focus_power_selection)); inquisitor_class.Archetypes = inquisitor_class.Archetypes.AddToArray(archetype); addToPrestigeClasses(); Occultist.occultist_class.AddComponent(Common.prerequisiteNoArchetype(inquisitor_class, archetype)); archetype.AddComponent(Helpers.Create <PrerequisiteMechanics.PrerequisiteNoClassLevelVisible>(p => p.CharacterClass = Occultist.occultist_class)); }