Beispiel #1
0
        public static BlueprintFeatureSelection CreateEmotionDrawbacks()
        {
            //string[]  = new string[] { };
            string[] EmotionGuids = new string[200];
            //EmotionGuids = guids;
            string baseguid = "CB54279F30DA4802833F";
            int    x        = 0;

            for (long i = 542922691494; i < 542922691644; i++)
            {
                EmotionGuids[x] = baseguid + i.ToString();
                x++;
            }
            //int rnd = DateTime.Now.Millisecond%4;

            var noFeature        = Helpers.PrerequisiteNoFeature(null);
            var EmotionDrawbacks = Helpers.CreateFeatureSelection("EmotionDrawback", RES.EmotionDrawbackName_info,
                                                                  RES.EmotionDrawbackDescription_info,
                                                                  EmotionGuids[0], null, FeatureGroup.None, noFeature);

            noFeature.Feature = EmotionDrawbacks;

            var choices = new List <BlueprintFeature>
            {
                Helpers.CreateFeature("AnxiousDrawback", RES.AnxiousDrawbackName_info,
                                      RES.AnxiousDrawbackDescription_info,
                                      EmotionGuids[1],
                                      Helpers.NiceIcons(16), // great fortitude
                                      FeatureGroup.None,
                                      Helpers.CreateAddStatBonus(StatType.SkillPersuasion, -2, ModifierDescriptor.Penalty)),

                //var tieflingHeritageDemodand = library.Get<BlueprintFeature>("a53d760a364cd90429e16aa1e7048d0a");
                Helpers.CreateFeature("AttachedDrawback", RES.AttachedDrawbackName_info,
                                      RES.AttachedDrawbackDescription_info,
                                      EmotionGuids[2],
                                      Helpers.GetIcon("2483a523984f44944a7cf157b21bf79c"), // Elven Immunities
                                      FeatureGroup.None,
                                      Helpers.CreateAddStatBonus(StatType.SaveWill, -1, ModifierDescriptor.Penalty),
                                      Helpers.Create <SavingThrowBonusAgainstDescriptor>(s => { s.SpellDescriptor = SpellDescriptor.Fear; s.Value = -2; s.ModifierDescriptor = ModifierDescriptor.Penalty; })),


                Helpers.CreateFeature("BetrayedDrawback", RES.BetrayedDrawbackName_info,
                                      RES.BetrayedDrawbackDescription_info,
                                      EmotionGuids[3],
                                      Helpers.NiceIcons(2), // Accomplished Sneak Attacker
                                      FeatureGroup.None,
                                      Helpers.CreateAddStatBonus(StatType.CheckDiplomacy, -3, ModifierDescriptor.Penalty)),


                Helpers.CreateFeature("BitterDrawback", RES.BitterDrawbackName_info,
                                      RES.BitterDrawbackDescription_info,
                                      EmotionGuids[4],
                                      Helpers.NiceIcons(5), // great fortitude
                                      FeatureGroup.None,
                                      Helpers.Create <FeyFoundlingLogic>(s => { s.dieModefier = 0; s.flatModefier = -1; })),

                Helpers.CreateFeature("CondescendingDrawback", RES.CondescendingDrawbackName_info,
                                      RES.CondescendingDrawbackDescription_info,
                                      EmotionGuids[5],
                                      Helpers.NiceIcons(10), // enchantment
                                      FeatureGroup.None,
                                      Helpers.CreateAddStatBonus(StatType.CheckDiplomacy, -5, ModifierDescriptor.Penalty),
                                      Helpers.CreateAddStatBonus(StatType.CheckIntimidate, -5, ModifierDescriptor.Penalty)),

                //Effect Your base speed when frightened and fleeing increases by 5 feet, and the penalties you take from having the cowering, frightened, panicked, or shaken conditions increase by 1.If you would normally be immune to fear, you do not take these penalties but instead lose your immunity to fear(regardless of its source).
                Helpers.CreateFeature("CowardlyDrawback", RES.CowardlyDrawbackName_info,
                                      RES.CowardlyDrawbackDescription_info,
                                      EmotionGuids[6],
                                      Helpers.NiceIcons(6), //invisiblilty
                                      FeatureGroup.None,
                                      Helpers.CreateAddStatBonus(StatType.SaveFortitude, -2, ModifierDescriptor.Penalty),
                                      Helpers.CreateAddStatBonus(StatType.Speed, 5, ModifierDescriptor.FearPenalty),
                                      Helpers.Create <SavingThrowBonusAgainstDescriptor>(s => { s.SpellDescriptor = SpellDescriptor.Fear; s.Value = -4; s.ModifierDescriptor = ModifierDescriptor.Penalty; })),

                Helpers.CreateFeature("CrueltyDrawback", RES.CrueltyDrawbackName_info,
                                      RES.CrueltyDrawbackDescription_info,
                                      EmotionGuids[7],
                                      Helpers.NiceIcons(9), // breakbone
                                      FeatureGroup.None,
                                      Helpers.CreateAddStatBonus(StatType.BaseAttackBonus, -2, ModifierDescriptor.Penalty),
                                      DamageBonusAgainstFlankedTarget.Create(4)),

                Helpers.CreateFeature("EmptyMaskDrawback", RES.EmptyMaskDrawbackName_info,
                                      RES.EmptyMaskDrawbackDescription_info,
                                      EmotionGuids[8],
                                      Helpers.NiceIcons(14), // mask
                                      FeatureGroup.None,
                                                             //Helpers.CreateAddStatBonus(StatType.SaveWill, -1, ModifierDescriptor.Penalty),
                                      Helpers.Create <SavingThrowBonusAgainstDescriptor>(s => { s.SpellDescriptor = SpellDescriptor.Compulsion; s.Value = -2; s.ModifierDescriptor = ModifierDescriptor.Penalty; }))
            };

            var debuff = Helpers.CreateBuff("EnvyDeBuff", RES.EnvyDrawbackName_info,
                                            RES.EnvyDebuffDescription_info,
                                            EmotionGuids[9],
                                            Helpers.NiceIcons(1), null,
                                            Helpers.Create <ConcentrationBonus>(a => { a.Value = -2; a.CheckFact = true; }));

            choices.Add(Helpers.CreateFeature("EnvyDrawback", RES.EnvyDrawbackName_info,
                                              RES.EnvyDrawbackDescription_info,
                                              EmotionGuids[10],
                                              Helpers.NiceIcons(1),                //grab
                                              FeatureGroup.None,
                                              CovetousCurseLogic.Create(debuff))); //
            //
            //int rnd = DateTime.Now.Millisecond % 64;
            var Fraud = Helpers.CreateFeatureSelection("GuiltyFraudDrawback", RES.GuiltyFraudDrawbackName_info,
                                                       RES.GuiltyFraudDrawbackDescription_info,
                                                       EmotionGuids[11],
                                                       Helpers.NiceIcons(999), // great fortitude
                                                       FeatureGroup.None,
                                                                               //WeaponCategory.LightRepeatingCrossbow
                                                       Helpers.CreateAddStatBonus(StatType.SkillPersuasion, -2, ModifierDescriptor.Penalty));

            //var weap = WeaponCategory.Dart;
            var hoi = new List <BlueprintFeature>()
            {
            };

            x = 11;//x is just a cheat value we use to ged guids
            //foreach (WeaponCategory weap in (WeaponCategory[])Enum.GetValues(typeof(WeaponCategory)))
            var Onehandedweapons = new Dictionary <WeaponCategory, String> {
                { WeaponCategory.Club, RES.WeaponCategoryClubName_info },
                { WeaponCategory.Dagger, RES.WeaponCategoryDaggerName_info },
                { WeaponCategory.Dart, RES.WeaponCategoryDartName_info },
                { WeaponCategory.DuelingSword, RES.WeaponCategoryDuelingSwordName_info },
                { WeaponCategory.ElvenCurvedBlade, RES.WeaponCategoryElvenCurveBladeName_info },
                { WeaponCategory.Falcata, RES.WeaponCategoryFalcataName_info },
                { WeaponCategory.Flail, RES.WeaponCategoryFlailName_info },
                { WeaponCategory.Handaxe, RES.WeaponCategoryHandaxeName_info },
                { WeaponCategory.HeavyMace, RES.WeaponCategoryHeavyMaceName_info },
                { WeaponCategory.Javelin, RES.WeaponCategoryJavelinName_info },
                { WeaponCategory.LightMace, RES.WeaponCategoryLightMaceName_info },
                { WeaponCategory.Shuriken, RES.WeaponCategoryShurikenName_info },
                { WeaponCategory.Sickle, RES.WeaponCategorySickleName_info },
                { WeaponCategory.Sling, RES.WeaponCategorySlingName_info },
                { WeaponCategory.Kama, RES.WeaponCategoryKamaName_info },
                { WeaponCategory.Kukri, RES.WeaponCategoryKukriName_info },
                { WeaponCategory.Starknife, RES.WeaponCategoryStarknifeName_info },
                { WeaponCategory.ThrowingAxe, RES.WeaponCategoryThrowingAxeName_info },
                { WeaponCategory.LightPick, RES.WeaponCategoryLightPickName_info },
                { WeaponCategory.DwarvenWaraxe, RES.WeaponCategoryDwarvenWaraxeName_info },
                { WeaponCategory.Trident, RES.WeaponCategoryTridentName_info },
                { WeaponCategory.BastardSword, RES.WeaponCategoryBastardSwordName_info },
                { WeaponCategory.Battleaxe, RES.WeaponCategoryBattleaxeName_info },
                { WeaponCategory.Longsword, RES.WeaponCategoryLongswordName_info },
                { WeaponCategory.Nunchaku, RES.WeaponCategoryNunchakuName_info },
                { WeaponCategory.Rapier, RES.WeaponCategoryRapierName_info },
                { WeaponCategory.Estoc, RES.WeaponCategoryEstocName_info },
                { WeaponCategory.Sai, RES.WeaponCategorySaiName_info },
                { WeaponCategory.Scimitar, RES.WeaponCategoryScimitarName_info },
                { WeaponCategory.Shortsword, RES.WeaponCategoryShortswordName_info },
                { WeaponCategory.Warhammer, RES.WeaponCategoryWarhammerName_info },
                { WeaponCategory.LightHammer, RES.WeaponCategoryLightHammerName_info },
                { WeaponCategory.WeaponLightShield, RES.WeaponCategoryLightShieldName_info },
                { WeaponCategory.WeaponHeavyShield, RES.WeaponCategoryHeavyShieldName_info },
            };

            foreach (KeyValuePair <WeaponCategory, String> weap in Onehandedweapons)
            {
                x++;
                hoi.Add(Helpers.CreateFeature(
                            $"Greedy{weap.Key}Drawback",
                            string.Format(RES.GuiltyFraudDrawbackWeaponFeat_info, weap.Value),
                            string.Format(RES.GuiltyFraudDrawbackWeaponDescription_info, weap.Value),
                            EmotionGuids[x],
                            Helpers.NiceIcons(999), FeatureGroup.None,
                            Helpers.Create <AddStartingEquipment>(a =>
                {
                    a.CategoryItems     = new WeaponCategory[] { weap.Key, weap.Key };
                    a.RestrictedByClass = Array.Empty <BlueprintCharacterClass>();
                    a.BasicItems        = Array.Empty <BlueprintItem>();
                })));

                //Log.Write(x.ToString());
            }
            //Log.Write(x.ToString());

            x++;
            choices.Add(Helpers.CreateFeature("HauntedDrawback", RES.HauntedDrawbackName_info,
                                              RES.HauntedDrawbackDescription_info,
                                              EmotionGuids[x],
                                              Helpers.NiceIcons(39), // fatigue
                                              FeatureGroup.None,
                                                                     //Helpers.CreateAddStatBonus(StatType.SaveWill, -1, ModifierDescriptor.Penalty),
                                              Helpers.Create <SavingThrowBonusAgainstDescriptor>(s => { s.SpellDescriptor = SpellDescriptor.Evil; s.Value = -2; s.ModifierDescriptor = ModifierDescriptor.Penalty; })));

            x++;
            choices.Add(Helpers.CreateFeature("HauntedRegretDrawback", RES.HauntedRegretDrawbackName_info,
                                              RES.HauntedRegretDrawbackDescription_info,
                                              EmotionGuids[x],
                                              Helpers.NiceIcons(7),//fatigue//
                                              FeatureGroup.None,
                                              Helpers.Create <ConcentrationBonus>(a => a.Value = -2),
                                              Helpers.Create <SavingThrowBonusAgainstDescriptor>(s => { s.SpellDescriptor = SpellDescriptor.MindAffecting; s.Value = -2; s.ModifierDescriptor = ModifierDescriptor.Penalty; })));

            x++;
            choices.Add(Helpers.CreateFeature("ImpatientDrawback", RES.ImpatientDrawbackName_info,
                                              RES.ImpatientDrawbackDescription_info,
                                              EmotionGuids[x],
                                              Helpers.NiceIcons(33), //rush
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.BaseAttackBonus, -1, ModifierDescriptor.Penalty),
                                              Helpers.CreateAddStatBonus(StatType.Initiative, 1, ModifierDescriptor.Insight),
                                              Helpers.Create <SavingThrowBonusAgainstDescriptor>(s => { s.SpellDescriptor = SpellDescriptor.Evil; s.Value = -2; s.ModifierDescriptor = ModifierDescriptor.Penalty; })));

            x++;
            choices.Add(Helpers.CreateFeature("DaydreamerDrawback", RES.DaydreamerDrawbackName_info,
                                              RES.DaydreamerDrawbackDescription_info,
                                              EmotionGuids[x],
                                              Helpers.NiceIcons(6), //rush
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.Initiative, -1, ModifierDescriptor.Penalty),
                                              Helpers.CreateAddStatBonus(StatType.SkillPerception, -2, ModifierDescriptor.Penalty)));

            x++;
            choices.Add(Helpers.CreateFeature("ShadowDrawback", RES.ShadowDrawbackName_info,
                                              RES.ShadowDrawbackDescription_info,
                                              EmotionGuids[x],
                                              Helpers.NiceIcons(6), //rush
                                              FeatureGroup.None,
                                              Helpers.Create <ShadowSensitivity>()));
            x++;
            var debuff2 = Helpers.CreateBuff("ShadowDeBuff", RES.ShadowDrawbackName_info,
                                             RES.ShadowDeBuffDescription_info,
                                             EmotionGuids[x],
                                             Helpers.NiceIcons(22), null);
            var components = new List <BlueprintComponent> {
            };

            components.AddRange((new SpellSchool[]
            {
                SpellSchool.Abjuration,
                SpellSchool.Conjuration,
                SpellSchool.Divination,
                SpellSchool.Enchantment,
                SpellSchool.Evocation,
                SpellSchool.Illusion,
                SpellSchool.Necromancy,
                SpellSchool.Transmutation,
                SpellSchool.Universalist
            }).Select((school) => Helpers.Create <SavingThrowBonusAgainstSchool>(a =>
            {
                a.School             = school;
                a.Value              = -1;
                a.ModifierDescriptor = ModifierDescriptor.Penalty;
            })));
            debuff2.AddComponents(components);
            ShadowSensitivity.ShadowBuff = debuff2;

            x++;
            choices.Add(Helpers.CreateFeature("SleepyDrawback", RES.SleepyDrawbackName_info,
                                              RES.SleepyDrawbackDescription_info,
                                              EmotionGuids[x],
                                              Helpers.NiceIcons(7),
                                              FeatureGroup.None,
                                              Helpers.Create <SavingThrowBonusAgainstDescriptor>(s => { s.Bonus = -2; s.SpellDescriptor = SpellDescriptor.Sleep; })));

            x++;
            choices.Add(Helpers.CreateFeature("ZealousDrawback", RES.ZealousDrawbackName_info,
                                              RES.ZealousDrawbackDescription_info,
                                              EmotionGuids[x],
                                              Helpers.NiceIcons(48),
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.AdditionalAttackBonus, -5, ModifierDescriptor.Sacred),
                                              Helpers.CreateAddStatBonus(StatType.AdditionalDamage, 2, ModifierDescriptor.Trait)
                                              ));

            Fraud.SetFeatures(hoi);
            choices.Add(Fraud);

            choices.Add(UndoSelection.Feature.Value);
            EmotionDrawbacks.SetFeatures(choices);
            return(EmotionDrawbacks);
        }
        public static BlueprintFeatureSelection CreateCombatTraits()
        {
            var noFeature    = Helpers.PrerequisiteNoFeature(null);
            var combatTraits = Helpers.CreateFeatureSelection("CombatTrait", "Combat Trait",
                                                              "Combat traits focus on martial and physical aspects of your character’s background.",
                                                              "fab4225be98a4b3e9717883f22086c82", null, FeatureGroup.None, noFeature);

            noFeature.Feature = combatTraits;

            var choices = new List <BlueprintFeature>();

            choices.Add(Helpers.CreateFeature("AnatomistTrait", "Anatomist",
                                              "You have studied the workings of anatomy, either as a student at university or as an apprentice mortician or necromancer. You know where to aim your blows to strike vital organs.\nBenefit: You gain a +1 trait bonus on all rolls made to confirm critical hits.",
                                              "69245ef4b4ba44ddac917fc2aa10fbad",
                                              Image2Sprite.Create("Mods/EldritchArcana/sprites/anatomist.png"), // Improved Critical
                                              FeatureGroup.None,
                                              Helpers.Create <CriticalConfirmationBonus>(a => { a.Bonus = 1; a.Value = 0; })));

            choices.Add(Helpers.CreateFeature("ArmorExpertTrait", "Armor Expert",
                                              "You have worn armor as long as you can remember, either as part of your training to become a knight’s squire or simply because you were seeking to emulate a hero. Your childhood armor wasn’t the real thing as far as protection, but it did encumber you as much as real armor would have, and you’ve grown used to moving in such suits with relative grace.\nBenefit: When you wear armor of any sort, reduce that suit’s armor check penalty by 1, to a minimum check penalty of 0.",
                                              "94d526372a964b6db97c64291a3cb846",
                                              Helpers.GetIcon("3bc6e1d2b44b5bb4d92e6ba59577cf62"), // Armor Focus (light)
                                              FeatureGroup.None,
                                              Helpers.Create <ArmorCheckPenaltyIncrease>(a => a.Bonus = 1)));

            var rageResource = Traits.library.Get <BlueprintAbilityResource>("24353fcf8096ea54684a72bf58dedbc9");

            choices.Add(Helpers.CreateFeature("BerserkerOfTheSocietyTrait", "Berserker of the Society",
                                              "Your time spent as a society member has taught you new truths about the origins of the your rage ability.\nBenefit: You may use your rage ability for 3 additional rounds per day.",
                                              "8acfcecfed05442594eed93fe448ab3d",
                                              Helpers.GetIcon("1a54bbbafab728348a015cf9ffcf50a7"), // Extra Rage
                                              FeatureGroup.None,
                                              rageResource.CreateIncreaseResourceAmount(3)));

            choices.Add(Helpers.CreateFeature("BladeOfTheSocietyTrait", "Blade of the Society",
                                              "You have studied and learned the weak spots of many humanoids and monsters." +
                                              "\nBenefit: you are able to sneak attack at level 3 even if your class normaly does not and You gain a +1 trait bonus to damage rolls from sneak attacks.",
                                              "ff8c90626a58436997cc41e4b121be9a",
                                              Helpers.GetIcon("9f0187869dc23744292c0e5bb364464e"), // Accomplished Sneak Attacker
                                              FeatureGroup.None,
                                              Helpers.Create <AdditionalDamageOnSneakAttack>(a => a.Value = 1),
                                              Helpers.CreateAddStatBonusOnLevel(StatType.SneakAttack, 1, ModifierDescriptor.Trait, 3)
                                              ));

            choices.Add(Helpers.CreateFeature("DefenderOfTheSocietyTrait", "Defender of the Society",
                                              "Your time spent fighting and studying the greatest warriors of the society has taught you new defensive skills while wearing armor.\nBenefit: You gain a +1 trait bonus to Armor Class when wearing medium or heavy armor.",
                                              "545bf7e13346473caf48f179083df894",
                                              Helpers.GetIcon("7dc004879037638489b64d5016997d12"), // Armor Focus Medium
                                              FeatureGroup.None,
                                              Helpers.Create <ArmorFocus>(a => a.ArmorCategory = ArmorProficiencyGroup.Medium),
                                              Helpers.Create <ArmorFocus>(a => a.ArmorCategory = ArmorProficiencyGroup.Heavy)));

            choices.Add(Helpers.CreateFeature("DeftDodgerTrait", "Deft Dodger",
                                              "Growing up in a rough neighborhood or a dangerous environment has honed your senses.\nBenefit: You gain a +1 trait bonus on Reflex saves.",
                                              "7b57d86503314d32b753f77909c909bc",
                                              Helpers.GetIcon("15e7da6645a7f3d41bdad7c8c4b9de1e"), // Lightning Reflexes
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.SaveReflex, 1, ModifierDescriptor.Trait)));

            choices.Add(Helpers.CreateFeature("DirtyFighterTrait", "Dirty Fighter",
                                              "You wouldn’t have lived to make it out of childhood without the aid of a sibling, friend, or companion you could always count on to distract your enemies long enough for you to do a little bit more damage than normal. That companion may be another PC or an NPC (who may even be recently departed from your side).\n" +
                                              "Benefit: When you hit a foe you are flanking, you deal 1 additional point of damage (this damage is added to your base damage, and is multiplied on a critical hit). This additional damage is a trait bonus.",
                                              "ac47c14063574a0a9ea6927bf637a02a",
                                              Helpers.GetIcon("5662d1b793db90c4b9ba68037fd2a768"), // precise strike
                                              FeatureGroup.None,
                                              DamageBonusAgainstFlankedTarget.Create(1)));

            var kiPowerResource = Traits.library.Get <BlueprintAbilityResource>("9d9c90a9a1f52d04799294bf91c80a82");

            choices.Add(Helpers.CreateFeature("HonoredFistOfTheSocietyTrait", "Honored First of the Society",
                                              "You have studied dozens of ancient texts on martial arts that only the Society possesses, and are more learned in these arts than most.\nBenefit: You increase your ki pool by 1 point.",
                                              "ee9c230cbbc2484084af61ac97e47e72",
                                              Helpers.GetIcon("7dc004879037638489b64d5016997d12"), // Armor Focus Medium
                                              FeatureGroup.None,
                                              kiPowerResource.CreateIncreaseResourceAmount(1)));

            // TODO: Killer

            choices.Add(Helpers.CreateFeature("ReactionaryTrait", "Reactionary",
                                              "You were bullied often as a child, but never quite developed an offensive response. Instead, you became adept at anticipating sudden attacks and reacting to danger quickly.\nBenefit: You gain a +2 trait bonus on initiative checks.",
                                              "fa2c636580ee431297de8806a046044a",
                                              Helpers.GetIcon("797f25d709f559546b29e7bcb181cc74"), // Improved Initiative
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.Initiative, 2, ModifierDescriptor.Trait)));

            choices.Add(Traits.CreateAddStatBonus("RecklessTrait", "Reckless",
                                                  "You have a tendency for rash behavior, often disregarding your own safety as you move across the battlefield.",
                                                  "edb2f4d0c2c34c7baccad11f2b5bfbd4",
                                                  StatType.SkillMobility));

            choices.Add(Helpers.CreateFeature("ResilientTrait", "Resilient",
                                              "Growing up in a poor neighborhood or in the unforgiving wilds often forced you to subsist on food and water from doubtful sources. You’ve built up your constitution as a result.\nBenefit: You gain a +1 trait bonus on Fortitude saves.",
                                              "789d02217b6542ce8b0302249c86d49d",
                                              Helpers.GetIcon("79042cb55f030614ea29956177977c52"), // Great Fortitude
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.SaveFortitude, 1, ModifierDescriptor.Trait)));

            choices.Add(Traits.CreateAddStatBonus("WittyReparteeTrait", "Witty Repartee",
                                                  "You are quick with your tongue and have always possessed the talent to quickly admonish your enemies.",
                                                  "c6dbc457c5de40dbb4cb9fe4d7706cd9",
                                                  StatType.SkillPersuasion));

            combatTraits.SetFeatures(choices);
            return(combatTraits);
        }
        public static BlueprintFeatureSelection CreateEmotionDrawbacks()
        {
            //string[]  = new string[] { };
            string[] EmotionGuids = new string[200];
            //EmotionGuids = guids;
            string baseguid = "CB54279F30DA4802833F";
            int    x        = 0;

            for (long i = 542922691494; i < 542922691644; i++)
            {
                EmotionGuids[x] = baseguid + i.ToString();
                x++;
            }
            //int rnd = DateTime.Now.Millisecond%4;

            var noFeature        = Helpers.PrerequisiteNoFeature(null);
            var EmotionDrawbacks = Helpers.CreateFeatureSelection("EmotionDrawback", "Emotion Drawback",
                                                                  "Emotion Drawbacks put the focus on mental aspects of your character’s background.",
                                                                  EmotionGuids[0], null, FeatureGroup.None, noFeature);

            noFeature.Feature = EmotionDrawbacks;

            var choices = new List <BlueprintFeature>();

            choices.Add(Helpers.CreateFeature("AnxiousDrawback", "Anxious",
                                              "After suffering terribly for not being tight-lipped enough as a child, such as when you accidentally exposed your family to enemy inquisitors, you developed a habit of being overly cautious with your words." +
                                              "\nDrawback: You take a –2 penalty on Persuasion checks and must speak slowly due to the concentration required. Unless stated otherwise, you are assumed to not be speaking at a volume above a whisper.",
                                              EmotionGuids[1],
                                              Helpers.NiceIcons(16), // great fortitude
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.SkillPersuasion, -2, ModifierDescriptor.Penalty)));

            //var tieflingHeritageDemodand = library.Get<BlueprintFeature>("a53d760a364cd90429e16aa1e7048d0a");
            choices.Add(Helpers.CreateFeature("AttachedDrawback", "Attached",
                                              "You are attached to yourself. Whenever the object of your attachment is either threatened, in danger, or in someone else’s possession, you take a –1 penalty on Will saves and a –2 penalty on saves against fear effects." +
                                              "\nDrawback: You take a –1 penalty on Will saves and a –2 penalty on saves against fear effects.",
                                              EmotionGuids[2],
                                              Helpers.GetIcon("2483a523984f44944a7cf157b21bf79c"), // Elven Immunities
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.SaveWill, -1, ModifierDescriptor.Penalty),
                                              Helpers.Create <SavingThrowBonusAgainstDescriptor>(s => { s.SpellDescriptor = SpellDescriptor.Fear; s.Value = -2; s.ModifierDescriptor = ModifierDescriptor.Penalty; })));


            choices.Add(Helpers.CreateFeature("BetrayedDrawback", "Betrayed",
                                              "You can roll twice and take the lower result on Sense Motive checks to get hunches. You cannot reroll this result, even if you have another ability that would normally allow you to do so." +
                                              "\nDrawback: You take a -3 penalty on Diplomacy checks.",
                                              EmotionGuids[3],
                                              Helpers.NiceIcons(2), // Accomplished Sneak Attacker
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.CheckDiplomacy, -3, ModifierDescriptor.Penalty)));


            choices.Add(Helpers.CreateFeature("BitterDrawback", "Bitter",
                                              "You have been hurt repeatedly by those you trusted, and it has become difficult for you to accept help." +
                                              "\nDrawback: When you receive healing from an ally’s class feature, spell, or spell-like ability, reduce the amount of that healing by 1 hit point.",
                                              EmotionGuids[4],
                                              Helpers.NiceIcons(5), // great fortitude
                                              FeatureGroup.None,
                                              Helpers.Create <FeyFoundlingLogic>(s => { s.dieModefier = 0; s.flatModefier = -1; })));

            choices.Add(Helpers.CreateFeature("CondescendingDrawback", "Condescending",
                                              "Raised with the assurance that only those like you are truly worthy of respect, you have an off-putting way of demonstrating that you look down on those not of your race and ethnicity or nationality." +
                                              "\nDrawback: You take a –5 penalty on Diplomacy and Intimidate checks.",
                                              EmotionGuids[5],
                                              Helpers.NiceIcons(10), // enchantment
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.CheckDiplomacy, -5, ModifierDescriptor.Penalty),
                                              Helpers.CreateAddStatBonus(StatType.CheckIntimidate, -5, ModifierDescriptor.Penalty)));

            //Effect Your base speed when frightened and fleeing increases by 5 feet, and the penalties you take from having the cowering, frightened, panicked, or shaken conditions increase by 1.If you would normally be immune to fear, you do not take these penalties but instead lose your immunity to fear(regardless of its source).
            choices.Add(Helpers.CreateFeature("CowardlyDrawback", "Cowardly",
                                              "You might face dangerous situations with bravado, but you are constantly afraid. And if you see a dead body you might just throw up." +
                                              "\nBenefit: Your movementspeed increases by 5" +
                                              "\nDrawback: You take a –4 penalty on saves against fear effects. And -2 to all Fortitude saves.",
                                              EmotionGuids[6],
                                              Helpers.NiceIcons(6), //invisiblilty
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.SaveFortitude, -2, ModifierDescriptor.Penalty),
                                              Helpers.CreateAddStatBonus(StatType.Speed, 5, ModifierDescriptor.FearPenalty),
                                              Helpers.Create <SavingThrowBonusAgainstDescriptor>(s => { s.SpellDescriptor = SpellDescriptor.Fear; s.Value = -4; s.ModifierDescriptor = ModifierDescriptor.Penalty; })));

            choices.Add(Helpers.CreateFeature("CrueltyDrawback", "Cruelty",
                                              "You were rewarded as a child for flaunting your victory over others as completely as possible, and you discovered you enjoyed the feeling of rubbing your foes’ faces in the dirt." +
                                              "\nBenefit: You have +1 on damage rolls against flanked targets." +
                                              "\nDrawback: You take a –2 penalty on all attack rolls.", // against someone that is not flanked
                                              EmotionGuids[7],
                                              Helpers.NiceIcons(9),                                     // breakbone
                                              FeatureGroup.None,
                                                                                                        //Helpers.CreateAddStatBonus(StatType.BaseAttackBonus, -2, ModifierDescriptor.Penalty),
                                              Helpers.CreateAddStatBonus(StatType.AdditionalAttackBonus, -2, ModifierDescriptor.Trait),
                                              DamageBonusAgainstFlankedTarget.Create(1)));

            choices.Add(Helpers.CreateFeature("EmptyMaskDrawback", "Empty Mask",
                                              "You have spent so long hiding your true identity to escape political enemies that you have lost much of your sense of self." +
                                              "\nDrawback: you take a –1 penalty on Will saves vs compulsion and a –2 vs people that know your identity.",
                                              EmotionGuids[8],
                                              Helpers.NiceIcons(14), // mask
                                              FeatureGroup.None,
                                                                     //Helpers.CreateAddStatBonus(StatType.SaveWill, -1, ModifierDescriptor.Penalty),
                                              Helpers.Create <SavingThrowBonusAgainstDescriptor>(s => { s.SpellDescriptor = SpellDescriptor.Compulsion; s.Value = -2; s.ModifierDescriptor = ModifierDescriptor.Penalty; })));

            var debuff = Helpers.CreateBuff("EnvyDeBuff", "Envy",
                                            "You have 2 less on concentration checks.",
                                            EmotionGuids[9],
                                            Helpers.NiceIcons(1), null,
                                            Helpers.Create <ConcentrationBonus>(a => { a.Value = -2; a.CheckFact = true; }));

            choices.Add(Helpers.CreateFeature("EnvyDrawback", "Envy",
                                              "You grew up in or near an opulent, decadent culture that valued nothing more than showing up the material wealth or accomplishments of others, causing the seed of envy to be planted in your heart." +
                                              "\nDrawback: You have 2 less on concentration checks. if you do not posses at least 100 + 200 per level gold.",
                                              EmotionGuids[10],
                                              Helpers.NiceIcons(1),                //grab
                                              FeatureGroup.None,
                                              CovetousCurseLogic.Create(debuff))); //
            //
            //int rnd = DateTime.Now.Millisecond % 64;
            var Fraud = Helpers.CreateFeatureSelection("GuiltyFraudDrawback", "Guilty Fraud",
                                                       "You received something through trickery that you did not deserve, and your guilt for the misdeed distracts you from dangers around you." +
                                                       "\nBenefit: Start the game dual wielding a one handed weapon." +
                                                       "\nDrawback: You take a –2 penalty on Persuasion checks.",
                                                       EmotionGuids[11],
                                                       Helpers.NiceIcons(999), // great fortitude
                                                       FeatureGroup.None,
                                                                               //WeaponCategory.LightRepeatingCrossbow
                                                       Helpers.CreateAddStatBonus(StatType.SkillPersuasion, -2, ModifierDescriptor.Penalty));

            //var weap = WeaponCategory.Dart;
            var hoi = new List <BlueprintFeature>()
            {
            };

            x = 11;//x is just a cheat value we use to ged guids
            //foreach (WeaponCategory weap in (WeaponCategory[])Enum.GetValues(typeof(WeaponCategory)))
            var Onehandedweapons = new WeaponCategory[] {
                WeaponCategory.Dagger, WeaponCategory.Dart,
                WeaponCategory.DuelingSword, WeaponCategory.ElvenCurvedBlade,
                WeaponCategory.Flail, WeaponCategory.Greataxe,
                WeaponCategory.Javelin, WeaponCategory.LightMace,
                WeaponCategory.Shuriken, WeaponCategory.Sickle,
                WeaponCategory.Sling, WeaponCategory.Kama,
                WeaponCategory.Kukri, WeaponCategory.Starknife,
                WeaponCategory.ThrowingAxe, WeaponCategory.LightPick,
                WeaponCategory.DwarvenWaraxe, WeaponCategory.Trident,
                WeaponCategory.BastardSword, WeaponCategory.Battleaxe,
                WeaponCategory.Longsword, WeaponCategory.Nunchaku,
                WeaponCategory.Rapier, WeaponCategory.Sai,
                WeaponCategory.Scimitar, WeaponCategory.Shortsword,
                WeaponCategory.Club, WeaponCategory.WeaponLightShield,
                WeaponCategory.WeaponHeavyShield, WeaponCategory.HeavyMace,
                WeaponCategory.LightHammer, WeaponCategory.LightPick,
            };

            foreach (WeaponCategory weap in Onehandedweapons)
            {
                x++;
                hoi.Add(Helpers.CreateFeature(
                            $"Greedy{weap}Drawback",
                            $"your scram reward — {weap}",
                            $"{weap}", EmotionGuids[x]
                            ,
                            Helpers.NiceIcons(999), FeatureGroup.None,
                            Helpers.Create <AddStartingEquipment>(a =>
                {
                    a.CategoryItems     = new WeaponCategory[] { weap, weap };
                    a.RestrictedByClass = Array.Empty <BlueprintCharacterClass>();

                    a.BasicItems = Array.Empty <BlueprintItem>();
                })));

                //Log.Write(x.ToString());
            }
            //Log.Write(x.ToString());
            x++;
            choices.Add(Helpers.CreateFeature("HauntedDrawback", "Haunted",
                                              "Something from your past—or a dark secret you presently hold—makes it difficult for you to ever be at peace, and your chronic worry that you might fall to evil influence has become a self-fulfilling prophecy." +
                                              "\nDrawback: You take a –2 penalty on spells with the evil descriptor.",
                                              EmotionGuids[x],
                                              Helpers.NiceIcons(39), // fatigue
                                              FeatureGroup.None,
                                                                     //Helpers.CreateAddStatBonus(StatType.SaveWill, -1, ModifierDescriptor.Penalty),
                                              Helpers.Create <SavingThrowBonusAgainstDescriptor>(s => { s.SpellDescriptor = SpellDescriptor.Evil; s.Value = -2; s.ModifierDescriptor = ModifierDescriptor.Penalty; })));
            x++;
            choices.Add(Helpers.CreateFeature("HauntedRegretDrawback", "Haunting Regret",
                                              "When you were young, a relative with whom you had frequently quarreled passed away where his or her soul could not rest. Now, the unquiet spirit appears around you at inconvenient times, distracting you with regret for being unable to help." +
                                              "\nDrawback: You take a –2 penalty on saving throws against the distraction ability of swarms and mind-affecting effects and on concentration checks.",
                                              EmotionGuids[x],
                                              Helpers.NiceIcons(7),//fatigue//
                                              FeatureGroup.None,
                                              Helpers.Create <ConcentrationBonus>(a => a.Value = -2),
                                              Helpers.Create <SavingThrowBonusAgainstDescriptor>(s => { s.SpellDescriptor = SpellDescriptor.MindAffecting; s.Value = -2; s.ModifierDescriptor = ModifierDescriptor.Penalty; })));
            x++;
            choices.Add(Helpers.CreateFeature("ImpatientDrawback", "Impatient",
                                              "You love leaping into battle at the earliest opportunity, and it frustrates you to wait for others to act." +
                                              "\nBenefit: You take a +1 Insight bonus on Initiative." +
                                              "\nDrawback: You take a -2 penalty on saves against evil spells, and a -1 penalty to all attack rolls.",
                                              EmotionGuids[x],
                                              Helpers.NiceIcons(33), //rush
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.BaseAttackBonus, -1, ModifierDescriptor.Penalty),
                                              Helpers.CreateAddStatBonus(StatType.Initiative, 1, ModifierDescriptor.Insight),
                                              Helpers.Create <SavingThrowBonusAgainstDescriptor>(s => { s.SpellDescriptor = SpellDescriptor.Evil; s.Value = -2; s.ModifierDescriptor = ModifierDescriptor.Penalty; })));
            x++;
            choices.Add(Helpers.CreateFeature("DaydreamerDrawback", "Daydreamer",
                                              "You always have your head in the clouds." +
                                              "\nDrawback: You suffer a -1 penalty to initiative checks and a -2 penalty to Perception checks to avoid being surprised.",
                                              EmotionGuids[x],
                                              Helpers.NiceIcons(6), //rush
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.Initiative, -1, ModifierDescriptor.Penalty),
                                              Helpers.CreateAddStatBonus(StatType.SkillPerception, -2, ModifierDescriptor.Penalty)));

            x++;
            choices.Add(Helpers.CreateFeature("ShadowDrawback", "Shadow-Scarred",
                                              "You were touched by terrible horrors that live in the darkness just outside the human sphere and feel your life-force ebb away ever so slightly whenever you return to the shadows." +
                                              "\nDrawback: Whenever you are in an area of dim light or darkness, you take a –1 penalty on saving throws.",
                                              EmotionGuids[x],
                                              Helpers.NiceIcons(6), //rush
                                              FeatureGroup.None,
                                              Helpers.Create <ShadowSensitivity>()));
            x++;
            var debuff2 = Helpers.CreateBuff("ShadowDeBuff", "Shadow-Scarred",
                                             "You have 1 less on saving throws.",
                                             EmotionGuids[x],
                                             Helpers.NiceIcons(22), null);
            var components = new List <BlueprintComponent> {
            };

            components.AddRange((new SpellSchool[]
            {
                SpellSchool.Abjuration,
                SpellSchool.Conjuration,
                SpellSchool.Divination,
                SpellSchool.Enchantment,
                SpellSchool.Evocation,
                SpellSchool.Illusion,
                SpellSchool.Necromancy,
                SpellSchool.Transmutation,
                SpellSchool.Universalist
            }).Select((school) => Helpers.Create <SavingThrowBonusAgainstSchool>(a =>
            {
                a.School             = school;
                a.Value              = -1;
                a.ModifierDescriptor = ModifierDescriptor.Penalty;
            })));
            debuff2.AddComponents(components);
            ShadowSensitivity.ShadowBuff = debuff2;


            x++;
            choices.Add(Helpers.CreateFeature("SleepyDrawback", "Sleepy",
                                              "You must sleep or rest for at least 8 hours each night to get the benefits of a full night’s rest." +
                                              "\nDrawback: You take a –2 penalty on saving throws against sleep effects.",
                                              EmotionGuids[x],
                                              Helpers.NiceIcons(7),
                                              FeatureGroup.None,
                                              Helpers.Create <SavingThrowBonusAgainstDescriptor>(s => { s.Bonus = -2; s.SpellDescriptor = SpellDescriptor.Sleep; })));

            x++;
            choices.Add(Helpers.CreateFeature("ZealousDrawback", "Zealous",
                                              "You are fanatical in your beliefs, ruled by emotion over reason." +
                                              "\nDrawback: When you attack a creature that you know worships a different religion than you do, you take a –5 penalty on the attack roll and a +2 trait bonus on the damage roll.",
                                              EmotionGuids[x],
                                              Helpers.NiceIcons(48),
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.AdditionalAttackBonus, -5, ModifierDescriptor.Sacred),
                                              Helpers.CreateAddStatBonus(StatType.AdditionalDamage, 2, ModifierDescriptor.Sacred)
                                              ));



            Fraud.SetFeatures(hoi);
            choices.Add(Fraud);

            EmotionDrawbacks.SetFeatures(choices);
            return(EmotionDrawbacks);
        }
Beispiel #4
0
        public static BlueprintFeatureSelection CreateCombatTraits()
        {
            var noFeature    = Helpers.PrerequisiteNoFeature(null);
            var combatTraits = Helpers.CreateFeatureSelection("CombatTrait", RES.CombatTraitName_info,
                                                              RES.CombatTraitDescription_info,
                                                              "fab4225be98a4b3e9717883f22086c82", null, FeatureGroup.None, noFeature);

            noFeature.Feature = combatTraits;

            var choices = new List <BlueprintFeature>();

            choices.Add(Helpers.CreateFeature("AnatomistTrait", RES.AnatomistTraitName_info,
                                              RES.AnatomistTraitDescription_info,
                                              "69245ef4b4ba44ddac917fc2aa10fbad",
                                              Image2Sprite.Create("Mods/EldritchArcana/sprites/anatomist.png"), // Improved Critical
                                              FeatureGroup.None,
                                              Helpers.Create <CriticalConfirmationBonus>(a => { a.Bonus = 1; a.Value = 0; })));

            choices.Add(Helpers.CreateFeature("ArmorExpertTrait", RES.ArmorExpertTraitName_info,
                                              RES.ArmorExpertTraitDescription_info,
                                              "94d526372a964b6db97c64291a3cb846",
                                              Helpers.GetIcon("3bc6e1d2b44b5bb4d92e6ba59577cf62"), // Armor Focus (light)
                                              FeatureGroup.None,
                                              Helpers.Create <ArmorCheckPenaltyIncrease>(a => a.Bonus = -1)));

            var rageResource = Traits.library.Get <BlueprintAbilityResource>("24353fcf8096ea54684a72bf58dedbc9");

            choices.Add(Helpers.CreateFeature("BerserkerOfTheSocietyTrait", RES.BerserkerOfTheSocietyTraitName_info,
                                              RES.BerserkerOfTheSocietyTraitDescription_info,
                                              "8acfcecfed05442594eed93fe448ab3d",
                                              Helpers.GetIcon("1a54bbbafab728348a015cf9ffcf50a7"), // Extra Rage
                                              FeatureGroup.None,
                                              rageResource.CreateIncreaseResourceAmount(3)));

            choices.Add(Helpers.CreateFeature("BladeOfTheSocietyTrait", RES.BladeOfTheSocietyTraitName_info,
                                              RES.BladeOfTheSocietyTraitDescription_info,
                                              "ff8c90626a58436997cc41e4b121be9a",
                                              Helpers.GetIcon("9f0187869dc23744292c0e5bb364464e"), // Accomplished Sneak Attacker
                                              FeatureGroup.None,
                                              Helpers.Create <AdditionalDamageOnSneakAttack>(a => a.Value = 1),
                                              Helpers.CreateAddStatBonusOnLevel(StatType.SneakAttack, 1, ModifierDescriptor.Trait, 3)
                                              ));

            choices.Add(Helpers.CreateFeature("DefenderOfTheSocietyTrait", RES.DefenderOfTheSocietyTraitName_info,
                                              RES.DefenderOfTheSocietyTraitDescription_info,
                                              "545bf7e13346473caf48f179083df894",
                                              Helpers.GetIcon("7dc004879037638489b64d5016997d12"), // Armor Focus Medium
                                              FeatureGroup.None,
                                              Helpers.Create <ArmorFocus>(a => a.ArmorCategory = ArmorProficiencyGroup.Medium),
                                              Helpers.Create <ArmorFocus>(a => a.ArmorCategory = ArmorProficiencyGroup.Heavy)));

            choices.Add(Helpers.CreateFeature("DeftDodgerTrait", RES.DeftDodgerTraitName_info,
                                              RES.DeftDodgerTraitDescription_info,
                                              "7b57d86503314d32b753f77909c909bc",
                                              Helpers.GetIcon("15e7da6645a7f3d41bdad7c8c4b9de1e"), // Lightning Reflexes
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.SaveReflex, 1, ModifierDescriptor.Trait)));

            choices.Add(Helpers.CreateFeature("DirtyFighterTrait", RES.DirtyFighterTraitName_info,
                                              RES.DirtyFighterTraitDescription_info,
                                              "ac47c14063574a0a9ea6927bf637a02a",
                                              Helpers.GetIcon("5662d1b793db90c4b9ba68037fd2a768"), // precise strike
                                              FeatureGroup.None,
                                              DamageBonusAgainstFlankedTarget.Create(1)));

            var kiPowerResource = Traits.library.Get <BlueprintAbilityResource>("9d9c90a9a1f52d04799294bf91c80a82");

            choices.Add(Helpers.CreateFeature("HonoredFistOfTheSocietyTrait", RES.HonoredFistOfTheSocietyTraitName_info,
                                              RES.HonoredFistOfTheSocietyTraitDescription_info,
                                              "ee9c230cbbc2484084af61ac97e47e72",
                                              Helpers.GetIcon("7dc004879037638489b64d5016997d12"), // Armor Focus Medium
                                              FeatureGroup.None,
                                              kiPowerResource.CreateIncreaseResourceAmount(1)));

            // TODO: Killer

            choices.Add(Helpers.CreateFeature("ReactionaryTrait", RES.ReactionaryTraitName_info,
                                              RES.ReactionaryTraitDescription_info,
                                              "fa2c636580ee431297de8806a046044a",
                                              Helpers.GetIcon("797f25d709f559546b29e7bcb181cc74"), // Improved Initiative
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.Initiative, 2, ModifierDescriptor.Trait)));

            choices.Add(Traits.CreateAddStatBonus("RecklessTrait", RES.RecklessTraitName_info,
                                                  RES.RecklessTraitDescription_info,
                                                  "edb2f4d0c2c34c7baccad11f2b5bfbd4",
                                                  StatType.SkillMobility));

            choices.Add(Helpers.CreateFeature("ResilientTrait", RES.ResilientTraitName_info,
                                              RES.ResilientTraitDescription_info,
                                              "789d02217b6542ce8b0302249c86d49d",
                                              Helpers.GetIcon("79042cb55f030614ea29956177977c52"), // Great Fortitude
                                              FeatureGroup.None,
                                              Helpers.CreateAddStatBonus(StatType.SaveFortitude, 1, ModifierDescriptor.Trait)));

            choices.Add(Traits.CreateAddStatBonus("WittyReparteeTrait", RES.WittyReparteeTraitName_info,
                                                  RES.WittyReparteeTraitDescription_info,
                                                  "c6dbc457c5de40dbb4cb9fe4d7706cd9",
                                                  StatType.SkillPersuasion));

            choices.Add(UndoSelection.Feature.Value);
            combatTraits.SetFeatures(choices);
            return(combatTraits);
        }