示例#1
0
 static public void create()
 {
     createEidolonClass();
     createEidolonUnits();
     Evolutions.initialize();
     fillEidolonProgressions();
     correctText();
 }
        public EvolutionsPatientViewModel()
        {
            source = new List <EvolutionPatientModel>();
            CreatePatientsCollection();

            selectedProfilePatient = Evolutions.Skip(3).FirstOrDefault();
            PatientsSelectionChanged();
        }
示例#3
0
 public override bool Equals(object obj)
 {
     if (obj is Pokemon other)
     {
         return((Id, Name, WeightInKg, HeightInCm, SightingCount, IsFromFirstGeneration, PokeType, FirstSightingLocation)
                .Equals((other.Id, other.Name, other.WeightInKg, other.HeightInCm, other.SightingCount, other.IsFromFirstGeneration, other.PokeType, other.FirstSightingLocation)) &&
                Moves.SequenceEqualSafe(other.Moves) &&
                Evolutions.SequenceEqualSafe(other.Evolutions));
     }
     return(false);
 }
示例#4
0
        static void Main(string[] args)
        {
            var input  = Console.ReadLine();
            var result = new Dictionary <string, Evolutions>();

            while (input != "wubbalubbadubdub")
            {
                var tokens   = input.Split(" ->".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                var pokeName = tokens[0];
                if (tokens.Length > 1)
                {
                    var pokeEvo   = tokens[1];
                    var pokeIndex = int.Parse(tokens[2]);

                    var evoAndIndex = new Evolutions();
                    evoAndIndex.EvoName  = new List <string>();
                    evoAndIndex.EvoIndex = new List <int>();
                    evoAndIndex.EvoName.Add(pokeEvo);
                    evoAndIndex.EvoIndex.Add(pokeIndex);

                    if (!result.ContainsKey(pokeName))
                    {
                        result[pokeName] = evoAndIndex;
                    }
                    else
                    {
                        result[pokeName].EvoIndex.Add(pokeIndex);
                        result[pokeName].EvoName.Add(pokeEvo);
                    }
                }
                else
                {
                    Console.WriteLine($"# {pokeName}");
                    for (int i = 0; i < result[pokeName].EvoIndex.Count; i++)
                    {
                        Console.WriteLine($"{result[pokeName].EvoName[i]} <-> {result[pokeName].EvoIndex[i]}");
                    }
                }


                input = Console.ReadLine();
            }

            foreach (var name in result.OrderByDescending(a => a.Value.EvoIndex))
            {
                Console.WriteLine($"# {name.Key}");
                for (int i = 0; i < name.Value.EvoName.Count; i++)
                {
                    Console.WriteLine($"{name.Value.EvoName[i]} <-> {name.Value.EvoIndex[i]}");
                }
            }
        }
示例#5
0
        static void Main(string[] args)
        {
            var input  = Console.ReadLine();
            var result = new Dictionary <string, List <Evolutions> >();

            while (input != "wubbalubbadubdub")
            {
                var tokens   = input.Split(" ->".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                var pokeName = tokens[0];
                if (tokens.Length > 1)
                {
                    var pokeEvo   = tokens[1];
                    var pokeIndex = int.Parse(tokens[2]);

                    var newEvolution = new Evolutions();
                    newEvolution.EvoName  = pokeEvo;
                    newEvolution.EvoIndex = pokeIndex;

                    if (!result.ContainsKey(pokeName))
                    {
                        result[pokeName] = new List <Evolutions>();
                    }
                    result[pokeName].Add(newEvolution);
                }
                else
                {
                    if (result.ContainsKey(pokeName))
                    {
                        Console.WriteLine($"# {pokeName}");
                        foreach (var evoluton in result[pokeName])
                        {
                            Console.WriteLine($"{evoluton.EvoName} <-> {evoluton.EvoIndex}");
                        }
                    }
                }


                input = Console.ReadLine();
            }

            foreach (var name in result)
            {
                Console.WriteLine($"# {name.Key}");
                foreach (var evoluton in name.Value.OrderByDescending(x => x.EvoIndex))
                {
                    Console.WriteLine($"{evoluton.EvoName} <-> {evoluton.EvoIndex}");
                }
            }
        }
示例#6
0
 public bool Equals(SmogonOob?other)
 {
     if (ReferenceEquals(null, other))
     {
         return(false);
     }
     if (ReferenceEquals(this, other))
     {
         return(true);
     }
     return(DexNumber == other.DexNumber &&
            Evolutions.SetEquals(other.Evolutions) &&
            Alts.SetEquals(other.Alts) &&
            GenFamily.SetEquals(other.GenFamily));
 }
示例#7
0
 public void SetModel(Pokemon model)
 {
     _model = model;
     Evolutions.Clear();
     for (int i = 0; i < _model.Evolutions.Count; i++)
     {
         var newItem = new EvolutionComboBoxItem(_model.Evolutions, i, _evolutionEntryOptions);
         Evolutions.Add(newItem);
     }
     HabitatItems.Clear();
     foreach (KingdomId kingdom in EnumUtil.GetValuesExceptDefaults <KingdomId>())
     {
         HabitatItems.Add(new HabitatItem(model, kingdom, _idToNameService.IdToName <IKingdomService>((int)kingdom)));
     }
     RaiseAllPropertiesChanged();
 }
        void FilterItems(string filter)
        {
            var filteredItems = source.Where(Patient => Patient.Evolution.ToLower().Contains(filter.ToLower())).ToList();

            foreach (var Patient in source)
            {
                if (!filteredItems.Contains(Patient))
                {
                    Evolutions.Remove(Patient);
                }
                else
                {
                    if (!Evolutions.Contains(Patient))
                    {
                        Evolutions.Add(Patient);
                    }
                }
            }
        }
示例#9
0
        private void getList()
        {
            entry = Array.IndexOf(specieslist, CB_Species.Text);
            byte[] input = File.ReadAllBytes(files[entry]);
            if (input.Length != 0x30)
            {
                return;                       // error
            }
            evo = new Evolutions(input);

            for (int i = 0; i < evo.Method.Length; i++)
            {
                if (evo.Method[i] > 34)
                {
                    return;                          // Invalid!
                }
                mb[i].SelectedIndex = evo.Method[i]; // Which will trigger the params cb to reload the valid params list
                pb[i].SelectedIndex = evo.Criteria[i];
                rb[i].SelectedIndex = evo.Species[i];
            }
        }
示例#10
0
        public PokemonModel(PokemonId id)
        {
            PokemonSettings pokeman = GameClient.GetExtraDataForPokemon(id);

            BuildFromSettings(pokeman);

            PokedexEntry pokedexEntry = GameClient.PokedexInventory.FirstOrDefault(x => x.PokemonId == id);

            BuildFromPokedexEntry(pokedexEntry);

            PokemonModel pokemonModel = new PokemonModel(pokeman, pokedexEntry);

            var CurrPokemon = pokemonModel;

            Evolutions.Add(pokemonModel);
            while (CurrPokemon.ParentPokemonId != PokemonId.Missingno)
            {
                var insertme = FromId(CurrPokemon.ParentPokemonId);
                Evolutions.Insert(0, insertme);
                CurrPokemon = FromId(CurrPokemon.ParentPokemonId);
            }
            CurrPokemon = pokemonModel;
            while (CurrPokemon.EvolutionIds.Count > 0)
            {
                foreach (PokemonId ev in CurrPokemon.EvolutionIds)
                {
                    var addme = FromId(ev);
                    Evolutions.Add(addme);
                }
                CurrPokemon = new PokemonModel(CurrPokemon.EvolutionIds.ElementAt(0));
            }

            if (TimesCaptured == 0 && Id == PokemonId.Poliwag)
            {
                Debug.WriteLine(Name);
            }
        }
示例#11
0
        static void fillAzataProgression()
        {
            var base_evolutions = Helpers.CreateFeature("AzataEidolonBaseEvolutionsFeature",
                                                        "",
                                                        "",
                                                        "",
                                                        null,
                                                        FeatureGroup.None,
                                                        Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.resistance[2])
                                                        );

            base_evolutions.HideInCharacterSheetAndLevelUp = true;
            var feature1 = Helpers.CreateFeature("AzataEidolonLevel1Feature",
                                                 "Base Evolutions",
                                                 "At 1st level, azata eidolons gain the resistance (electricity) evolution and the 4-point weapon training evolution (proficiency in martial weapons).",
                                                 "",
                                                 azata_eidolon.Icon,
                                                 FeatureGroup.None,
                                                 Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.weapon_training[0]),
                                                 Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.weapon_training[1]),
                                                 Helpers.CreateAddFeatureOnClassLevel(base_evolutions, 32, Summoner.getSummonerArray(), before: true)
                                                 );

            var feature4 = Helpers.CreateFeature("AzataEidolonLevel4Feature",
                                                 "Resistance",
                                                 "At 4th level, azata eidolons gain cold resistance 10 and fire resistance 10.",
                                                 "",
                                                 Helpers.GetIcon("21ffef7791ce73f468b6fca4d9371e8b"),  //resist energy
                                                 FeatureGroup.None,
                                                 addTransferableFeatToEidolon("AzataEidolonLevel4AddFeature",
                                                                              Common.createEnergyDR(10, DamageEnergyType.Cold),
                                                                              Common.createEnergyDR(10, DamageEnergyType.Fire))
                                                 );

            var feature8 = Helpers.CreateFeature("AzataEidolonLevel8Feature",
                                                 "Wings",
                                                 "At 8th level, azata eidolons grow large, feathery wings, gaining the flight evolution.",
                                                 "",
                                                 Evolutions.flight.Icon,
                                                 FeatureGroup.None,
                                                 Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.flight)
                                                 );

            var feature12 = Helpers.CreateFeature("AzataEidolonLevel12Feature",
                                                  "Damage Reduction",
                                                  "At 12th level, azata eidolons gain DR 5/evil. They also gain immunity to petrification.",
                                                  "",
                                                  Helpers.GetIcon("9e1ad5d6f87d19e4d8883d63a6e35568"), //mage armor
                                                  FeatureGroup.None,
                                                  addTransferableFeatToEidolon("AzataEidolonLevel12AddFeature",
                                                                               Common.createContextAlignmentDR(Helpers.CreateContextValue(AbilityRankType.Default), DamageAlignment.Evil),
                                                                               Helpers.CreateContextRankConfig(baseValueType: ContextRankBaseValueType.FeatureList,
                                                                                                               progression: ContextRankProgression.MultiplyByModifier,
                                                                                                               stepLevel: 10,
                                                                                                               min: 5,
                                                                                                               featureList: new BlueprintFeature[] { Evolutions.damage_reduction }
                                                                                                               ),
                                                                               Common.createSpellImmunityToSpellDescriptor(SpellDescriptor.Petrified),
                                                                               Common.createBuffDescriptorImmunity(SpellDescriptor.Petrified),
                                                                               Helpers.Create <RecalculateOnFactsChange>(r => r.CheckedFacts = new BlueprintUnitFact[] { Evolutions.damage_reduction }))
                                                  );


            var feature16 = Helpers.CreateFeatureSelection("AzataEidolonLevel16Feature",
                                                           "Immunity",
                                                           "At 16th level, azata eidolons lose the resistance (electricity) evolution, and instead gain the immunity (electricity) evolution. They also gain the ability increase evolution, applied to an ability score of the summoner’s choice.",
                                                           "",
                                                           Helpers.GetIcon("d2f116cfe05fcdd4a94e80143b67046f"), //protection from energy,
                                                           FeatureGroup.None,
                                                           Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.immunity[2])
                                                           );

            feature16.AllFeatures = Evolutions.getPermanenetEvolutions(e => Evolutions.ability_increase.Any(ai => ai[0] == e));



            var icon = library.Get <BlueprintAbility>("3e4ab69ada402d145a5e0ad3ad4b8564").Icon; //mirror image

            var invisibility_buff = library.Get <BlueprintBuff>("e6b35473a237a6045969253beb09777c");
            var ghost_fx          = library.Get <BlueprintBuff>("20f79fea035330b479fc899fa201d232");

            var incorporeal = library.Get <BlueprintFeature>("c4a7f98d743bc784c9d4cf2105852c39");

            var buff = Helpers.CreateBuff("AzataFeature20Buff",
                                          "Energy Form",
                                          "At 20th level, an azata eidolon gains the ability to switch between its normal form and an energy form as a standard action. In its energy form, an azata eidolon is incorporeal and doubles its fly speed, but it can’t make natural or manufactured weapon attacks; it can, however, activate any spell-like ability evolutions it possesses.",
                                          "",
                                          icon,
                                          ghost_fx.FxOnStart,
                                          Helpers.CreateAddFacts(incorporeal),
                                          Helpers.Create <BuffMovementSpeed>(b => { b.Descriptor = ModifierDescriptor.UntypedStackable; b.Value = 100; b.MultiplierCap = 2; b.CappedOnMultiplier = true; }),
                                          Helpers.Create <AddCondition>(a => a.Condition = Kingmaker.UnitLogic.UnitCondition.CanNotAttack)
                                          );

            var ability = Helpers.CreateActivatableAbility("AzataFeature20ToggleAbility",
                                                           buff.Name,
                                                           buff.Description,
                                                           "",
                                                           buff.Icon,
                                                           buff,
                                                           AbilityActivationType.Immediately,
                                                           CommandType.Standard,
                                                           null
                                                           );

            var feature20 = Helpers.CreateFeature("AzataEidolonLevel20Feature",
                                                  "Energy Form",
                                                  "At 20th level, an azata eidolon gains the ability to switch between its normal form and an energy form as a standard action. In its energy form, an azata eidolon is incorporeal and doubles its fly speed, but it can’t make natural or manufactured weapon attacks; it can, however, activate any spell-like ability evolutions it possesses.",
                                                  "",
                                                  buff.Icon,
                                                  FeatureGroup.None,
                                                  addTransferableFeatToEidolon("AzataEidolonLevel20AddFeature",
                                                                               Helpers.CreateAddFact(ability))
                                                  );

            azata_eidolon.LevelEntries = new LevelEntry[] { Helpers.LevelEntry(1, feature1),
                                                            Helpers.LevelEntry(4, feature4),
                                                            Helpers.LevelEntry(8, feature8),
                                                            Helpers.LevelEntry(12, feature12),
                                                            Helpers.LevelEntry(16, feature16),
                                                            Helpers.LevelEntry(20, feature20) };
            azata_eidolon.UIGroups = Helpers.CreateUIGroups(feature1, feature4, feature8, feature12, feature16, feature20);
            addLesserEidolon(azata_eidolon);
        }
示例#12
0
        static void fillDemonProgression()
        {
            var base_evolutions = Helpers.CreateFeature("DemonEidolonBaseEvolutionsFeature",
                                                        "",
                                                        "",
                                                        "",
                                                        null,
                                                        FeatureGroup.None,
                                                        Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.resistance[2]),
                                                        Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.resistance[3])
                                                        );

            base_evolutions.HideInCharacterSheetAndLevelUp = true;
            var feature1 = Helpers.CreateFeature("DemonEidolonLevel1Feature",
                                                 "Base Evolutions",
                                                 "Starting at 1st level, demon eidolons gain the claws, resistance (electricity) and resistance (fire) evolutions as well as a +4 bonus on saving throws against poison.",
                                                 "",
                                                 demon_eidolon.Icon,
                                                 FeatureGroup.None,
                                                 addTransferableFeatToEidolon("DemonEidolonLevel1AddFeature",
                                                                              Common.createContextSavingThrowBonusAgainstDescriptor(4, ModifierDescriptor.UntypedStackable, SpellDescriptor.Poison)
                                                                              ),
                                                 Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.claws),
                                                 Helpers.CreateAddFeatureOnClassLevel(base_evolutions, 32, Summoner.getSummonerArray(), before: true)
                                                 );

            var feature4 = Helpers.CreateFeature("DemonEidolonLevel4Feature",
                                                 "Resistance",
                                                 "At 4th level, demon eidolons gain acid resistance 10 and cold resistance 10.",
                                                 "",
                                                 Helpers.GetIcon("21ffef7791ce73f468b6fca4d9371e8b"),  //resist energy
                                                 FeatureGroup.None,
                                                 addTransferableFeatToEidolon("DemonEidolonLevel4AddFeature",
                                                                              Common.createEnergyDR(10, DamageEnergyType.Acid),
                                                                              Common.createEnergyDR(10, DamageEnergyType.Cold)
                                                                              )
                                                 );

            var feature8 = Helpers.CreateFeature("DemonEidolonLevel8Feature",
                                                 "Poison Immunity",
                                                 "At 8th level, demon eidolons lose the +4 bonus on saving throws against poison and gain immunity to poison. They also add 1 point to their evolution pools.",
                                                 "",
                                                 Helpers.GetIcon("b48b4c5ffb4eab0469feba27fc86a023"),  //delay poison
                                                 FeatureGroup.None,
                                                 addTransferableFeatToEidolon("DemonEidolonLevel8AddFeature",
                                                                              Common.createSpellImmunityToSpellDescriptor(SpellDescriptor.Poison),
                                                                              Common.createBuffDescriptorImmunity(SpellDescriptor.Poison)
                                                                              ),
                                                 Helpers.Create <EvolutionMechanics.IncreaseEvolutionPool>(i => i.amount = 1)
                                                 );

            var feature12 = Helpers.CreateFeatureSelection("DemonEidolonLevel12Feature",
                                                           "Damage Reduction",
                                                           "At 12th level, demon eidolons gain DR 5/good. They also gain the ability increase evolution in an ability score of the summoner’s choice.",
                                                           "",
                                                           Helpers.GetIcon("9e1ad5d6f87d19e4d8883d63a6e35568"), //mage armor
                                                           FeatureGroup.None,
                                                           addTransferableFeatToEidolon("DemonEidolonLevel12AddFeature",
                                                                                        Common.createContextAlignmentDR(Helpers.CreateContextValue(AbilityRankType.Default), DamageAlignment.Good),
                                                                                        Helpers.CreateContextRankConfig(baseValueType: ContextRankBaseValueType.FeatureList,
                                                                                                                        progression: ContextRankProgression.MultiplyByModifier,
                                                                                                                        stepLevel: 10,
                                                                                                                        min: 5,
                                                                                                                        featureList: new BlueprintFeature[] { Evolutions.damage_reduction }
                                                                                                                        ),
                                                                                        Helpers.Create <RecalculateOnFactsChange>(r => r.CheckedFacts = new BlueprintUnitFact[] { Evolutions.damage_reduction })
                                                                                        )
                                                           );

            feature12.AllFeatures = Evolutions.getPermanenetEvolutions(e => Evolutions.ability_increase.Any(ai => ai[0] == e));

            var feature16 = Helpers.CreateFeature("DemonEidolonLevel16Feature",
                                                  "Elictricity Immunity",
                                                  "At 16th level, demon eidolons lose the resistance (electricity) evolution, and instead gain the immunity (electricity) evolution.",
                                                  "",
                                                  Helpers.GetIcon("d2f116cfe05fcdd4a94e80143b67046f"), //protection from energy,
                                                  FeatureGroup.None,
                                                  Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.immunity[2])
                                                  );

            var feature20 = Helpers.CreateFeature("DemonEidolonLevel20Feature",
                                                  "Regeneration",
                                                  "At 20th level, demon eidolons gain true seeing as a constant ability.",
                                                  "",
                                                  Helpers.GetIcon("b3da3fbee6a751d4197e446c7e852bcb"), //true seeing
                                                  FeatureGroup.None,
                                                  addTransferableFeatToEidolon("DemonEidolonLevel20AddFeature",
                                                                               Helpers.Create <AddCondition>(a => a.Condition = UnitCondition.TrueSeeing)
                                                                               )
                                                  );

            demon_eidolon.LevelEntries = new LevelEntry[] { Helpers.LevelEntry(1, feature1),
                                                            Helpers.LevelEntry(4, feature4),
                                                            Helpers.LevelEntry(8, feature8),
                                                            Helpers.LevelEntry(12, feature12),
                                                            Helpers.LevelEntry(16, feature16),
                                                            Helpers.LevelEntry(20, feature20) };
            demon_eidolon.UIGroups = Helpers.CreateUIGroups(feature1, feature4, feature8, feature12, feature16, feature20);
            addLesserEidolon(demon_eidolon);
        }
示例#13
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (Level != 0)
            {
                hash ^= Level.GetHashCode();
            }
            if (Experience != 0L)
            {
                hash ^= Experience.GetHashCode();
            }
            if (PrevLevelXp != 0L)
            {
                hash ^= PrevLevelXp.GetHashCode();
            }
            if (NextLevelXp != 0L)
            {
                hash ^= NextLevelXp.GetHashCode();
            }
            if (KmWalked != 0F)
            {
                hash ^= KmWalked.GetHashCode();
            }
            if (PokemonsEncountered != 0)
            {
                hash ^= PokemonsEncountered.GetHashCode();
            }
            if (UniquePokedexEntries != 0)
            {
                hash ^= UniquePokedexEntries.GetHashCode();
            }
            if (PokemonsCaptured != 0)
            {
                hash ^= PokemonsCaptured.GetHashCode();
            }
            if (Evolutions != 0)
            {
                hash ^= Evolutions.GetHashCode();
            }
            if (PokeStopVisits != 0)
            {
                hash ^= PokeStopVisits.GetHashCode();
            }
            if (PokeballsThrown != 0)
            {
                hash ^= PokeballsThrown.GetHashCode();
            }
            if (EggsHatched != 0)
            {
                hash ^= EggsHatched.GetHashCode();
            }
            if (BigMagikarpCaught != 0)
            {
                hash ^= BigMagikarpCaught.GetHashCode();
            }
            if (BattleAttackWon != 0)
            {
                hash ^= BattleAttackWon.GetHashCode();
            }
            if (BattleAttackTotal != 0)
            {
                hash ^= BattleAttackTotal.GetHashCode();
            }
            if (BattleDefendedWon != 0)
            {
                hash ^= BattleDefendedWon.GetHashCode();
            }
            if (BattleTrainingWon != 0)
            {
                hash ^= BattleTrainingWon.GetHashCode();
            }
            if (BattleTrainingTotal != 0)
            {
                hash ^= BattleTrainingTotal.GetHashCode();
            }
            if (PrestigeRaisedTotal != 0)
            {
                hash ^= PrestigeRaisedTotal.GetHashCode();
            }
            if (PrestigeDroppedTotal != 0)
            {
                hash ^= PrestigeDroppedTotal.GetHashCode();
            }
            if (PokemonDeployed != 0)
            {
                hash ^= PokemonDeployed.GetHashCode();
            }
            hash ^= pokemonCaughtByType_.GetHashCode();
            if (SmallRattataCaught != 0)
            {
                hash ^= SmallRattataCaught.GetHashCode();
            }
            return(hash);
        }
示例#14
0
        static void fillTwinnedProgression()
        {
            var feature1 = Helpers.CreateFeature("TwinnedEidolonLevel1Feature",
                                                 "Base Evolutions",
                                                 "A twinned eidolon gains the weapon training evolution. The twinned eidolon also gains the skilled (Stealth) evolution.",
                                                 "",
                                                 twinned_eidolon.Icon,
                                                 FeatureGroup.None,
                                                 Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.weapon_training[0]),
                                                 Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.skilled[8])
                                                 );

            var resource = Helpers.CreateAbilityResource("TwinnedEidolonSpellLikeResource", "", "", "", null);

            resource.SetIncreasedByLevelStartPlusDivStep(1, 9, 1, 5, 1, 0, 0.0f, new BlueprintCharacterClass[] { Eidolon.eidolon_class });
            var feature4 = createTwinnedSpellLikeAbility("Spell-Like Ability",
                                                         "At 4th level, a twinned eidolon can cast a summoner spell once per day as a spell-like ability. The spell must be one known by the eidolon’s summoner and must be at least 1 level lower than the highest-level spell the summoner can cast. The eidolon must have a Charisma score of at least 10 + the spell level. The caster level for this spell-like ability is equal to the eidolon’s Hit Dice. The save DC is 10 + half the eidolon’s HD + the eidolon’s Charisma modifier.\n"
                                                         + "Eidolon can use this ability one more time per day when summoner reaches levels 11 and 18.",
                                                         Helpers.GetIcon("55edf82380a1c8540af6c6037d34f322"),  //elven magic
                                                         1,
                                                         resource,
                                                         false
                                                         );
            var feature4_7 = createTwinnedSpellLikeAbility(feature4.Name,
                                                           feature4.Description,
                                                           feature4.Icon,
                                                           2,
                                                           resource);
            var feature4_10 = createTwinnedSpellLikeAbility(feature4.Name,
                                                            feature4.Description,
                                                            feature4.Icon,
                                                            3,
                                                            resource);
            var feature4_13 = createTwinnedSpellLikeAbility(feature4.Name,
                                                            feature4.Description,
                                                            feature4.Icon,
                                                            4,
                                                            resource);
            var feature4_16 = createTwinnedSpellLikeAbility(feature4.Name,
                                                            feature4.Description,
                                                            feature4.Icon,
                                                            5,
                                                            resource);

            var feature8 = Helpers.CreateFeatureSelection("TwinnedEidolonLevel8FeatureSelection",
                                                          "Shared Slot",
                                                          "At 8th level, a twinned eidolon gains the shared slot evolution.",
                                                          "",
                                                          null,
                                                          FeatureGroup.None
                                                          );

            feature8.AllFeatures = Evolutions.getPermanenetEvolutions(e => Evolutions.shared_slots.Any(ai => ai == e));

            var feature12 = Helpers.CreateFeature("TwinnedEidolonLevel12Feature",
                                                  "Damage Reduction",
                                                  "At 12th level, a twinned eidolon gains DR 5/magic. In addition the eidolon also gains the extra feat when it reaches lvl 10.",
                                                  "",
                                                  Helpers.GetIcon("9e1ad5d6f87d19e4d8883d63a6e35568"), //mage armor
                                                  FeatureGroup.None,
                                                  addTransferableFeatToEidolon("TwinnedEidolonLevel12AddFeature",
                                                                               Common.createMagicDR(Helpers.CreateContextValue(AbilityRankType.Default)),
                                                                               Helpers.CreateContextRankConfig(baseValueType: ContextRankBaseValueType.FeatureList,
                                                                                                               progression: ContextRankProgression.MultiplyByModifier,
                                                                                                               stepLevel: 10,
                                                                                                               min: 5,
                                                                                                               featureList: new BlueprintFeature[] { Evolutions.damage_reduction }
                                                                                                               ),
                                                                               Helpers.Create <RecalculateOnFactsChange>(r => r.CheckedFacts = new BlueprintUnitFact[] { Evolutions.damage_reduction }))
                                                  //extra feat to eidolon
                                                  );


            var feature16_1 = Helpers.CreateFeatureSelection("TwinnedEidolonLevel161Feature",
                                                             "Ability Increase Evolution",
                                                             "At 16th level, a twinned eidolon gains the skilled evolution and the ability increase evolution, applied to a skill and an ability score of the summoner’s choice.",
                                                             "",
                                                             null,
                                                             FeatureGroup.None
                                                             );

            feature16_1.AllFeatures = Evolutions.getPermanenetEvolutions(e => Evolutions.ability_increase.Any(ai => ai[0] == e));

            var feature16_2 = Helpers.CreateFeatureSelection("TwinnedEidolonLevel162Feature",
                                                             "Skilled Evolution",
                                                             "At 16th level, a twinned eidolon gains the skilled evolution and the ability increase evolution, applied to a skill and an ability score of the summoner’s choice.",
                                                             "",
                                                             null,
                                                             FeatureGroup.None
                                                             );

            feature16_2.AllFeatures = Evolutions.getPermanenetEvolutions(e => Evolutions.skilled.Any(ai => ai == e));

            var feature20 = Helpers.CreateFeature("TwinnedEidolonLevel20Feature",
                                                  "Fast Healing",
                                                  "At 20th level, a twinned eidolon gains fast healing V evolution.",
                                                  "",
                                                  Helpers.GetIcon("4093d5a0eb5cae94e909eb1e0e1a6b36"),
                                                  FeatureGroup.None,
                                                  Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.fast_healing[0]),
                                                  Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.fast_healing[1]),
                                                  Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.fast_healing[2]),
                                                  Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.fast_healing[3]),
                                                  Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.fast_healing[4])
                                                  );

            twinned_eidolon.LevelEntries = new LevelEntry[] { Helpers.LevelEntry(1, feature1),
                                                              Helpers.LevelEntry(4, feature4),
                                                              Helpers.LevelEntry(7, feature4_7),
                                                              Helpers.LevelEntry(8, feature8),
                                                              Helpers.LevelEntry(10, feature4_10),
                                                              Helpers.LevelEntry(12, feature12),
                                                              Helpers.LevelEntry(13, feature4_13),
                                                              Helpers.LevelEntry(16, feature16_1, feature16_2, feature4_16),
                                                              Helpers.LevelEntry(20, feature20) };
            twinned_eidolon.UIGroups = Helpers.CreateUIGroups(feature1, feature4, feature8, feature12, feature16_1, feature20);

            twinned_eidolon_small.LevelEntries = twinned_eidolon.LevelEntries;
            twinned_eidolon_small.UIGroups     = twinned_eidolon.UIGroups;
        }
        static void fillFeyProgression()
        {
            var feature1 = Helpers.CreateFeatureSelection("FeyEidolonLevel1Feature",
                                                          "Base Evolutions",
                                                          "Starting at 1st level, fey eidolons gain Mobility, Persuasion, Lore (nature), Trickery, and Use Magic Device as class skills instead of those gained by most eidolons. They also gain the slam evolution and the skilled evolution (selecting one class skill).",
                                                          "",
                                                          fey_eidolon.Icon,
                                                          FeatureGroup.None,
                                                          Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.slam_biped)
                                                          );

            feature1.AllFeatures = Evolutions.getPermanenetEvolutions(e => Evolutions.skilled.Contains(e));

            var woodland_stride = library.Get <BlueprintFeature>("11f4072ea766a5840a46e6660894527d");

            transferable_abilities.Add(woodland_stride);
            var feature4 = Helpers.CreateFeature("FeyEidolonLevel4Feature",
                                                 "Woodland Stride",
                                                 "At 4th level, fey eidolons gain woodland stride.",
                                                 "",
                                                 woodland_stride.Icon,
                                                 FeatureGroup.None,
                                                 Helpers.Create <AddFeatureToCompanion>(a => a.Feature = woodland_stride)
                                                 );

            var fey_magic1 = createFeySpellLikeAbilitiesSpellList(3, library.Get <BlueprintAbility>("0fd00984a2c0e0a429cf1a911b4ec5ca"), //entangle
                                                                  library.Get <BlueprintAbility>("95851f6e85fe87d4190675db0419d112"),    //grease
                                                                  library.Get <BlueprintAbility>("f001c73999fb5a543a199f890108d936"),
                                                                  NewSpells.obscuring_mist);
            var feature8 = Helpers.CreateFeatureSelection("FeyEidolonLevel8Feature",
                                                          "Fey Magic I",
                                                          "At 8th level, fey eidolons gain the ability to use either entangle, grease, obscuring mist, or vanish as a spell-like ability three times per day. At 16th level Fey Eidolon can select another spell-like ability.",
                                                          "",
                                                          Helpers.GetIcon("0fd00984a2c0e0a429cf1a911b4ec5ca"), //entangle
                                                          FeatureGroup.None
                                                          );

            feature8.AllFeatures = fey_magic1;
            var feature82 = library.CopyAndAdd <BlueprintFeatureSelection>(feature8, "FeyEidolon2Level8Feature", "");


            var fey_dr = Helpers.CreateFeature("FeyEidolonDRFeature",
                                               "Resistance and Wings",
                                               "At 12th level, fey eidolons gain DR 5/ cold iron. They also grow wings, gaining the flight evolution.",
                                               "",
                                               Helpers.GetIcon("9e1ad5d6f87d19e4d8883d63a6e35568"), //mage armor
                                               FeatureGroup.None,
                                               Common.createMaterialDR(Helpers.CreateContextValue(AbilityRankType.Default), PhysicalDamageMaterial.ColdIron)
                                               );
            var fey_extra_dr = Helpers.CreateFeature("FeyEidolonExtraDrFeature", "", "", "", null, FeatureGroup.None);

            fey_extra_dr.HideInCharacterSheetAndLevelUp = true;
            fey_dr.AddComponents(Helpers.CreateContextRankConfig(baseValueType: ContextRankBaseValueType.FeatureList,
                                                                 progression: ContextRankProgression.MultiplyByModifier,
                                                                 stepLevel: 5,
                                                                 min: 5,
                                                                 featureList: new BlueprintFeature[] { Evolutions.damage_reduction, fey_dr, fey_extra_dr }
                                                                 ),
                                 Helpers.Create <RecalculateOnFactsChange>(r => r.CheckedFacts = new BlueprintUnitFact[] { Evolutions.damage_reduction, fey_extra_dr })
                                 );
            transferable_abilities.Add(fey_dr);
            var feature12 = Helpers.CreateFeature("FeyEidolonLevel12Feature",
                                                  fey_dr.Name,
                                                  fey_dr.Description,
                                                  "",
                                                  fey_dr.Icon,
                                                  FeatureGroup.None,
                                                  Helpers.Create <AddFeatureToCompanion>(a => a.Feature = fey_dr),
                                                  Helpers.Create <EvolutionMechanics.AddPermanentEvolution>(a => a.Feature = Evolutions.flight)
                                                  );

            var fey_magic2 = createFeySpellLikeAbilitiesSpellList(3, library.Get <BlueprintAbility>("46fd02ad56c35224c9c91c88cd457791"), //blindness
                                                                  library.Get <BlueprintAbility>("ce7dad2b25acf85429b6c9550787b2d9"),    //glitterdust
                                                                  library.Get <BlueprintAbility>("fd4d9fd7f87575d47aafe2a64a6e2d8d"),    //hideous laughter
                                                                  library.Get <BlueprintAbility>("89940cde01689fb46946b2f8cd7b66b7"),    //invisibility
                                                                  library.Get <BlueprintAbility>("3e4ab69ada402d145a5e0ad3ad4b8564")     //mirror image
                                                                  );
            var feature16 = Helpers.CreateFeatureSelection("FeyEidolonLevel16Feature",
                                                           "Fey Magic II",
                                                           "At 16th level, fey eidolons gain the ability to use either blindness, glitterdust, hideous laughter, invisibility, or mirror image as a spell-like ability three times per day.",
                                                           "",
                                                           Helpers.GetIcon("89940cde01689fb46946b2f8cd7b66b7"), //invisibility
                                                           FeatureGroup.None
                                                           );

            feature16.AllFeatures = fey_magic2;

            var fey_magic3 = createFeySpellLikeAbilitiesSpellList(1, library.Get <BlueprintAbility>("7f71a70d822af94458dc1a235507e972"), //claock of dreams
                                                                  library.Get <BlueprintAbility>("1e2d1489781b10a45a3b70192bba9be3"),    //waves of ectasy
                                                                  library.Get <BlueprintAbility>("ecaa0def35b38f949bd1976a6c9539e0"),    //invisibility greater
                                                                  library.Get <BlueprintAbility>("98310a099009bbd4dbdf66bcef58b4cd")     //invisibility mass
                                                                  );

            transferable_abilities.Add(fey_extra_dr);
            var feature20 = Helpers.CreateFeatureSelection("FeyEidolonLevel20Feature",
                                                           "Fey Magic III",
                                                           "At 20th level, fey eidolons increase their DR to DR 10/cold iron. They gain the ability to use either waves of ectasy, invisibility, mass, invisibility greater, or cloak of dreams as a spell-like ability once per day.",
                                                           "",
                                                           Helpers.GetIcon("7f71a70d822af94458dc1a235507e972"), //cloak of dreams
                                                           FeatureGroup.None,
                                                           Helpers.Create <AddFeatureToCompanion>(a => a.Feature = fey_extra_dr)
                                                           );

            feature20.AllFeatures = fey_magic3;

            var feature220 = Helpers.CreateFeatureSelection("FeyEidolon2Level20Feature",
                                                            "Fey Magic I or II",
                                                            "At 20th level, fey eidolons can select another spell-like ability from 8th level list or 16th level list.",
                                                            "",
                                                            Helpers.GetIcon("ce7dad2b25acf85429b6c9550787b2d9"), //glitterdust
                                                            FeatureGroup.None
                                                            );

            feature220.AllFeatures = fey_magic1.AddToArray(fey_magic2);

            fey_eidolon.LevelEntries = new LevelEntry[] { Helpers.LevelEntry(1, feature1),
                                                          Helpers.LevelEntry(4, feature4),
                                                          Helpers.LevelEntry(8, feature8),
                                                          Helpers.LevelEntry(12, feature12),
                                                          Helpers.LevelEntry(16, feature16, feature82),
                                                          Helpers.LevelEntry(20, feature20, feature220) };
            fey_eidolon.UIGroups = new UIGroup[] { Helpers.CreateUIGroup(feature1, feature4, feature8, feature12, feature16, feature20),
                                                   Helpers.CreateUIGroup(feature82, feature220) };
        }
示例#16
0
        public static void SendSaveEvo(int evoNum, Evolutions.Evolution evo, int maxBranches)
        {
            TcpPacket packet = new TcpPacket("saveevo");

            packet.AppendParameters(evoNum.ToString(), evo.Name, evo.Species.ToString(), maxBranches.ToString());

            for (int i = 0; i < maxBranches; i++) {
                if (i >= evo.Branches.Count) {
                    evo.Branches.Add(new Evolutions.EvolutionBranch());
                }
                packet.AppendParameters(evo.Branches[i].Name,
                                        evo.Branches[i].NewSpecies.ToString(),
                                        evo.Branches[i].ReqScript.ToString(),
                                        evo.Branches[i].Data1.ToString(),
                                        evo.Branches[i].Data2.ToString(),
                                        evo.Branches[i].Data3.ToString());
            }

            packet.FinalizePacket();

            SendPacket(packet);
        }