Beispiel #1
0
        Tolerance GetTolerance(CFGData cfg, EffectFlags flags)
        {
            Tolerance result;

            if (HasResistance(cfg, flags))
            {
                result = Tolerance.Resistant;
            }
            else if (HasImmunity(cfg, flags))
            {
                result = Tolerance.Immune;
            }
            else if (HasLowTolerance(cfg, flags))
            {
                result = Tolerance.LowTolerance;
            }
            else if (HasCriticalWeakness(cfg, flags))
            {
                result = Tolerance.CriticalWeakness;
            }
            else
            {
                result = Tolerance.Normal;
            }

            return(result);
        }
Beispiel #2
0
 public virtual void Load(CFGData data)
 {
     Name        = data.Name;
     Description = data.Description;
     ProblemDataParameter.Value = LoadProblemData(data);
     GrammarBNF.Value           = data.Grammar;
 }
Beispiel #3
0
        private GeneticAlgorithm CreateCFGGPSample()
        {
            GeneticAlgorithm ga = new GeneticAlgorithm();

            #region Problem Configuration
            CFGPythonProblem cfgPythonProblem = new CFGPythonProblem();
            cfgPythonProblem.Name        = "Smallest Problem";
            cfgPythonProblem.Description = "Smallest (described in: http://dl.acm.org/citation.cfm?id=2754769)";
            var     provider = new BenchmarkSuiteListInstanceProvider();
            var     instance = provider.GetDataDescriptors().Single(x => x.Name.Equals("Smallest"));
            CFGData data     = (CFGData)provider.LoadData(instance);
            data.Input  = File.ReadAllLines(@"Data\Smallest-Input.txt");
            data.Output = File.ReadAllLines(@"Data\Smallest-Output.txt");
            cfgPythonProblem.Load(data);

            // configure remaining problem parameters
            cfgPythonProblem.MaximumSymbolicExpressionTreeLengthParameter.Value.Value = 250;
            cfgPythonProblem.MaximumSymbolicExpressionTreeDepthParameter.Value.Value  = 100;
            #endregion
            #region Algorithm Configuration
            ga.Problem     = cfgPythonProblem;
            ga.Name        = "Genetic Programming - CFG Python";
            ga.Description = "A standard genetic programming algorithm to solve a cfg python problem";
            SamplesUtils.ConfigureGeneticAlgorithmParameters <LexicaseSelector, SubtreeCrossover, MultiSymbolicExpressionTreeManipulator>(
                ga, 100, 1, 10, 0.05, 5);
            var mutator = (MultiSymbolicExpressionTreeManipulator)ga.Mutator;
            mutator.Operators.SetItemCheckedState(mutator.Operators
                                                  .OfType <FullTreeShaker>()
                                                  .Single(), false);
            mutator.Operators.SetItemCheckedState(mutator.Operators
                                                  .OfType <OnePointShaker>()
                                                  .Single(), false);
            #endregion
            return(ga);
        }
Beispiel #4
0
        SpellPointMultipliers GetSpellPointMultiplier(CFGData cfg)
        {
            SpellPointMultipliers result;

            result = (SpellPointMultipliers)((cfg.AbilityFlagsAndSpellPointsBitfield & 0x1C00) >> 8);

            return(result);
        }
 private void FillConfig(CFGData config)
 {
     table_config.Rows.Clear();
     foreach (var item in config.Lines)
     {
         table_config.Rows.Add(item.Command, item.DVAR, item.Value);
     }
 }
Beispiel #6
0
        protected override ICFGPythonProblemData LoadProblemData(CFGData data)
        {
            CFGPythonProblemData problemData = new CFGPythonProblemData(data.Input, data.Output);

            problemData.TrainingPartitionParameter.Value.Start = data.TrainingPartitionStart;
            problemData.TrainingPartitionParameter.Value.End   = data.TrainingPartitionEnd;
            problemData.TestPartitionParameter.Value.Start     = data.TestPartitionStart;
            problemData.TestPartitionParameter.Value.End       = data.TestPartitionEnd;
            problemData.EmbedCode.Value = data.Embed;
            return(problemData as ICFGPythonProblemData);
        }
Beispiel #7
0
        AttackModifier GetAttackModifier(CFGData cfg, EnemyGroups group)
        {
            AttackModifier result = AttackModifier.Normal;

            switch (group)
            {
            case EnemyGroups.Undead:
                if (HasFlags(cfg.AttackModifierFlags, 0x01))
                {
                    result = AttackModifier.Bonus;
                }
                else if (HasFlags(cfg.AttackModifierFlags, 0x10))
                {
                    result = AttackModifier.Phobia;
                }
                break;

            case EnemyGroups.Daedra:
                if (HasFlags(cfg.AttackModifierFlags, 0x02))
                {
                    result = AttackModifier.Bonus;
                }
                else if (HasFlags(cfg.AttackModifierFlags, 0x20))
                {
                    result = AttackModifier.Phobia;
                }
                break;

            case EnemyGroups.Humanoid:
                if (HasFlags(cfg.AttackModifierFlags, 0x04))
                {
                    result = AttackModifier.Bonus;
                }
                else if (HasFlags(cfg.AttackModifierFlags, 0x40))
                {
                    result = AttackModifier.Phobia;
                }
                break;

            case EnemyGroups.Animals:
                if (HasFlags(cfg.AttackModifierFlags, 0x08))
                {
                    result = AttackModifier.Bonus;
                }
                else if (HasFlags(cfg.AttackModifierFlags, 0x80))
                {
                    result = AttackModifier.Phobia;
                }
                break;
            }

            return(result);
        }
 /// <summary>
 /// CFGData constructor.
 /// </summary>
 /// <param name="cfg">CFGData to load into class.</param>
 public DFCareer(CFGData cfg)
 {
     StructureData(cfg);
 }
Beispiel #9
0
 /// <summary>
 /// Determines if class has critical weakness to effects.
 /// </summary>
 /// <param name="flags">EffectFlags to test.</param>
 /// <returns>True if critical weakness.</returns>
 bool HasCriticalWeakness(CFGData cfg, EffectFlags flags)
 {
     return(((cfg.CriticalWeaknessFlags & (byte)flags) == (byte)flags) ? true : false);
 }
Beispiel #10
0
 /// <summary>
 /// Determines if class has special ability.
 /// </summary>
 /// <param name="flags">SpecialAbilityFlags to test.</param>
 /// <returns>True if has special ability.</returns>
 bool HasSpecialAbility(CFGData cfg, SpecialAbilityFlags flags)
 {
     return(((cfg.AbilityFlagsAndSpellPointsBitfield & (byte)flags) == (byte)flags) ? true : false);
 }
Beispiel #11
0
 /// <summary>
 /// Determines if class is immune to effects.
 /// </summary>
 /// <param name="flags">EffectFlags to test.</param>
 /// <returns>True if immune.</returns>
 bool HasImmunity(CFGData cfg, EffectFlags flags)
 {
     return(((cfg.ImmunityFlags & (byte)flags) == (byte)flags) ? true : false);
 }
Beispiel #12
0
 /// <summary>
 /// Determines if class has low tolerance to effects.
 /// </summary>
 /// <param name="flags">EffectFlags to test.</param>
 /// <returns>True if low tolerance.</returns>
 bool HasLowTolerance(CFGData cfg, EffectFlags flags)
 {
     return(((cfg.LowToleranceFlags & (byte)flags) == (byte)flags) ? true : false);
 }
        SpellPointMultipliers GetSpellPointMultiplier(CFGData cfg)
        {
            SpellPointMultipliers result;

            result = (SpellPointMultipliers)((cfg.AbilityFlagsAndSpellPointsBitfield & 0x1C00) >> 8);

            return result;
        }
Beispiel #14
0
 /// <summary>
 /// Determines if class is resistant to effects.
 /// </summary>
 /// <param name="flags">EffectFlags to test.</param>
 /// <returns>True if resistant.</returns>
 bool HasResistance(CFGData cfg, EffectFlags flags)
 {
     return(((cfg.ResistanceFlags & (byte)flags) == (byte)flags) ? true : false);
 }
 /// <summary>
 /// Determines if class has special ability.
 /// </summary>
 /// <param name="flags">SpecialAbilityFlags to test.</param>
 /// <returns>True if has special ability.</returns>
 bool HasSpecialAbility(CFGData cfg, SpecialAbilityFlags flags)
 {
     return ((cfg.AbilityFlagsAndSpellPointsBitfield & (byte)flags) == (byte)flags) ? true : false;
 }
Beispiel #16
0
 /// <summary>
 /// CFGData constructor.
 /// </summary>
 /// <param name="cfg">CFGData to load into class.</param>
 public DFCareer(CFGData cfg)
 {
     StructureData(cfg);
 }
        /// <summary>
        /// Reads RawData into structured data.
        /// </summary>
        public void StructureData(CFGData cfg)
        {
            this.Name = cfg.Name;

            this.Strength = cfg.Attributes[0];
            this.Intelligence = cfg.Attributes[1];
            this.Willpower = cfg.Attributes[2];
            this.Agility = cfg.Attributes[3];
            this.Endurance = cfg.Attributes[4];
            this.Personality = cfg.Attributes[5];
            this.Speed = cfg.Attributes[6];
            this.Luck = cfg.Attributes[7];

            this.PrimarySkill1 = (Skills)cfg.PrimarySkill1;
            this.PrimarySkill2 = (Skills)cfg.PrimarySkill2;
            this.PrimarySkill3 = (Skills)cfg.PrimarySkill3;
            this.MajorSkill1 = (Skills)cfg.MajorSkill1;
            this.MajorSkill2 = (Skills)cfg.MajorSkill2;
            this.MajorSkill3 = (Skills)cfg.MajorSkill3;
            this.MinorSkill1 = (Skills)cfg.MinorSkill1;
            this.MinorSkill2 = (Skills)cfg.MinorSkill2;
            this.MinorSkill3 = (Skills)cfg.MinorSkill3;
            this.MinorSkill4 = (Skills)cfg.MinorSkill4;
            this.MinorSkill5 = (Skills)cfg.MinorSkill5;
            this.MinorSkill6 = (Skills)cfg.MinorSkill6;

            this.HitPointsPerLevelOrMonsterLevel = cfg.HitPointsPerLevelOrMonsterLevel;

            float value = (cfg.AdvancementMultiplier >> 16) + ((cfg.AdvancementMultiplier & 0xffff)) / 65536f;
            try
            {
                this.AdvancementMultiplier = float.Parse(string.Format("{0:0.00}", value), NumberStyles.Float, CultureInfo.InvariantCulture);
            }
            catch
            {
                this.AdvancementMultiplier = value;
            }

            this.Paralysis = GetTolerance(cfg, EffectFlags.Paralysis);
            this.Magic = GetTolerance(cfg, EffectFlags.Magic);
            this.Poison = GetTolerance(cfg, EffectFlags.Poison);
            this.Fire = GetTolerance(cfg, EffectFlags.Fire);
            this.Frost = GetTolerance(cfg, EffectFlags.Frost);
            this.Shock = GetTolerance(cfg, EffectFlags.Shock);
            this.Disease = GetTolerance(cfg, EffectFlags.Disease);

            this.ForbiddenMaterials = (MaterialFlags)cfg.ForbiddenMaterialsFlags;
            this.ForbiddenShields = (ShieldFlags)((cfg.WeaponArmorShieldsBitfield >> 9) & 0x0f);
            this.ForbiddenArmors = (ArmorFlags)((cfg.WeaponArmorShieldsBitfield >> 6) & 0x07);
            this.ForbiddenProficiencies = (ProficiencyFlags)(cfg.WeaponArmorShieldsBitfield & 0x3f);
            this.ExpertProficiencies = (ProficiencyFlags)((cfg.WeaponArmorShieldsBitfield >> 16) & 0x3f);

            this.ShortBlades = GetProficiency(ProficiencyFlags.ShortBlades);
            this.LongBlades = GetProficiency(ProficiencyFlags.LongBlades);
            this.HandToHand = GetProficiency(ProficiencyFlags.HandToHand);
            this.Axes = GetProficiency(ProficiencyFlags.Axes);
            this.BluntWeapons = GetProficiency(ProficiencyFlags.BluntWeapons);
            this.MissileWeapons = GetProficiency(ProficiencyFlags.MissileWeapons);

            this.SpellPointMultiplier = GetSpellPointMultiplier(cfg);
            this.SpellPointMultiplierValue = GetSpellPointMultiplierValue(this.SpellPointMultiplier);

            this.DarknessPoweredMagery = (DarknessMageryFlags)((cfg.AbilityFlagsAndSpellPointsBitfield & 0x300) >> 8);
            this.LightPoweredMagery = (LightMageryFlags)((cfg.AbilityFlagsAndSpellPointsBitfield & 0x00C0) >> 6);

            this.SpellAbsorption = (SpellAbsorptionFlags)cfg.SpellAbsorptionFlags;

            this.NoRegenSpellPoints = HasSpecialAbility(cfg, SpecialAbilityFlags.NoRegenSpellPoints);

            this.AcuteHearing = HasSpecialAbility(cfg, SpecialAbilityFlags.AcuteHearing);
            this.Athleticism = HasSpecialAbility(cfg, SpecialAbilityFlags.Athleticism);
            this.AdrenalineRush = HasSpecialAbility(cfg, SpecialAbilityFlags.AdrenalineRush);

            this.Regeneration = (RegenerationFlags)cfg.Regeneration;
            this.RapidHealing = (RapidHealingFlags)cfg.RapidHealing;

            this.DamageFromSunlight = HasSpecialAbility(cfg, SpecialAbilityFlags.SunDamage);
            this.DamageFromHolyPlaces = HasSpecialAbility(cfg, SpecialAbilityFlags.HolyDamage);

            this.UndeadAttackModifier = GetAttackModifier(cfg, EnemyGroups.Undead);
            this.DaedraAttackModifier = GetAttackModifier(cfg, EnemyGroups.Daedra);
            this.HumanoidAttackModifier = GetAttackModifier(cfg, EnemyGroups.Humanoid);
            this.AnimalsAttackModifier = GetAttackModifier(cfg, EnemyGroups.Animals);
        }
 /// <summary>
 /// Determines if class is resistant to effects.
 /// </summary>
 /// <param name="flags">EffectFlags to test.</param>
 /// <returns>True if resistant.</returns>
 bool HasResistance(CFGData cfg, EffectFlags flags)
 {
     return ((cfg.ResistanceFlags & (byte)flags) == (byte)flags) ? true : false;
 }
 /// <summary>
 /// Determines if class is immune to effects.
 /// </summary>
 /// <param name="flags">EffectFlags to test.</param>
 /// <returns>True if immune.</returns>
 bool HasImmunity(CFGData cfg, EffectFlags flags)
 {
     return ((cfg.ImmunityFlags & (byte)flags) == (byte)flags) ? true : false;
 }
 /// <summary>
 /// Determines if class has critical weakness to effects.
 /// </summary>
 /// <param name="flags">EffectFlags to test.</param>
 /// <returns>True if critical weakness.</returns>
 bool HasCriticalWeakness(CFGData cfg, EffectFlags flags)
 {
     return ((cfg.CriticalWeaknessFlags & (byte)flags) == (byte)flags) ? true : false;
 }
        Tolerance GetTolerance(CFGData cfg, EffectFlags flags)
        {
            Tolerance result;

            if (HasResistance(cfg, flags))
                result = Tolerance.Resistant;
            else if (HasImmunity(cfg, flags))
                result = Tolerance.Immune;
            else if (HasLowTolerance(cfg, flags))
                result = Tolerance.LowTolerance;
            else if (HasCriticalWeakness(cfg, flags))
                result = Tolerance.CriticalWeakness;
            else
                result = Tolerance.Normal;

            return result;
        }
Beispiel #22
0
 public override void Load(CFGData data)
 {
     base.Load(data);
     SetVariables();
 }
Beispiel #23
0
        /// <summary>
        /// Reads RawData into structured data.
        /// </summary>
        public void StructureData(CFGData cfg)
        {
            this.Name = cfg.Name;

            this.Strength     = cfg.Attributes[0];
            this.Intelligence = cfg.Attributes[1];
            this.Willpower    = cfg.Attributes[2];
            this.Agility      = cfg.Attributes[3];
            this.Endurance    = cfg.Attributes[4];
            this.Personality  = cfg.Attributes[5];
            this.Speed        = cfg.Attributes[6];
            this.Luck         = cfg.Attributes[7];

            this.PrimarySkill1 = (Skills)cfg.PrimarySkill1;
            this.PrimarySkill2 = (Skills)cfg.PrimarySkill2;
            this.PrimarySkill3 = (Skills)cfg.PrimarySkill3;
            this.MajorSkill1   = (Skills)cfg.MajorSkill1;
            this.MajorSkill2   = (Skills)cfg.MajorSkill2;
            this.MajorSkill3   = (Skills)cfg.MajorSkill3;
            this.MinorSkill1   = (Skills)cfg.MinorSkill1;
            this.MinorSkill2   = (Skills)cfg.MinorSkill2;
            this.MinorSkill3   = (Skills)cfg.MinorSkill3;
            this.MinorSkill4   = (Skills)cfg.MinorSkill4;
            this.MinorSkill5   = (Skills)cfg.MinorSkill5;
            this.MinorSkill6   = (Skills)cfg.MinorSkill6;

            this.HitPointsPerLevel = cfg.HitPointsPerLevel;

            float value = (cfg.AdvancementMultiplier >> 16) + ((cfg.AdvancementMultiplier & 0xffff)) / 65536f;

            try
            {
                this.AdvancementMultiplier = float.Parse(string.Format("{0:0.00}", value), NumberStyles.Float, CultureInfo.InvariantCulture);
            }
            catch
            {
                this.AdvancementMultiplier = value;
            }

            this.Paralysis = GetTolerance(cfg, EffectFlags.Paralysis);
            this.Magic     = GetTolerance(cfg, EffectFlags.Magic);
            this.Poison    = GetTolerance(cfg, EffectFlags.Poison);
            this.Fire      = GetTolerance(cfg, EffectFlags.Fire);
            this.Frost     = GetTolerance(cfg, EffectFlags.Frost);
            this.Shock     = GetTolerance(cfg, EffectFlags.Shock);
            this.Disease   = GetTolerance(cfg, EffectFlags.Disease);

            this.ForbiddenMaterials     = (MaterialFlags)cfg.ForbiddenMaterialsFlags;
            this.ForbiddenShields       = (ShieldFlags)((cfg.WeaponArmorShieldsBitfield >> 9) & 0x0f);
            this.ForbiddenArmors        = (ArmorFlags)((cfg.WeaponArmorShieldsBitfield >> 6) & 0x07);
            this.ForbiddenProficiencies = (ProficiencyFlags)(cfg.WeaponArmorShieldsBitfield & 0x3f);
            this.ExpertProficiencies    = (ProficiencyFlags)((cfg.WeaponArmorShieldsBitfield >> 16) & 0x3f);

            this.ShortBlades    = GetProficiency(ProficiencyFlags.ShortBlades);
            this.LongBlades     = GetProficiency(ProficiencyFlags.LongBlades);
            this.HandToHand     = GetProficiency(ProficiencyFlags.HandToHand);
            this.Axes           = GetProficiency(ProficiencyFlags.Axes);
            this.BluntWeapons   = GetProficiency(ProficiencyFlags.BluntWeapons);
            this.MissileWeapons = GetProficiency(ProficiencyFlags.MissileWeapons);

            this.SpellPointMultiplier      = GetSpellPointMultiplier(cfg);
            this.SpellPointMultiplierValue = GetSpellPointMultiplierValue(this.SpellPointMultiplier);

            this.DarknessPoweredMagery = (DarknessMageryFlags)((cfg.AbilityFlagsAndSpellPointsBitfield & 0x300) >> 8);
            this.LightPoweredMagery    = (LightMageryFlags)((cfg.AbilityFlagsAndSpellPointsBitfield & 0x00C0) >> 6);

            this.SpellAbsorption = (SpellAbsorptionFlags)cfg.SpellAbsorptionFlags;

            this.NoRegenSpellPoints = HasSpecialAbility(cfg, SpecialAbilityFlags.NoRegenSpellPoints);

            this.AcuteHearing   = HasSpecialAbility(cfg, SpecialAbilityFlags.AcuteHearing);
            this.Athleticism    = HasSpecialAbility(cfg, SpecialAbilityFlags.Athleticism);
            this.AdrenalineRush = HasSpecialAbility(cfg, SpecialAbilityFlags.AdrenalineRush);

            this.Regeneration = (RegenerationFlags)cfg.Regeneration;
            this.RapidHealing = (RapidHealingFlags)cfg.RapidHealing;

            this.DamageFromSunlight   = HasSpecialAbility(cfg, SpecialAbilityFlags.SunDamage);
            this.DamageFromHolyPlaces = HasSpecialAbility(cfg, SpecialAbilityFlags.HolyDamage);

            this.UndeadAttackModifier   = GetAttackModifier(cfg, EnemyGroups.Undead);
            this.DaedraAttackModifier   = GetAttackModifier(cfg, EnemyGroups.Daedra);
            this.HumanoidAttackModifier = GetAttackModifier(cfg, EnemyGroups.Humanoid);
            this.AnimalsAttackModifier  = GetAttackModifier(cfg, EnemyGroups.Animals);
        }
 /// <summary>
 /// Determines if class has low tolerance to effects.
 /// </summary>
 /// <param name="flags">EffectFlags to test.</param>
 /// <returns>True if low tolerance.</returns>
 bool HasLowTolerance(CFGData cfg, EffectFlags flags)
 {
     return ((cfg.LowToleranceFlags & (byte)flags) == (byte)flags) ? true : false;
 }
        AttackModifier GetAttackModifier(CFGData cfg, EnemyGroups group)
        {
            AttackModifier result = AttackModifier.Normal;

            switch (group)
            {
                case EnemyGroups.Undead:
                    if (HasFlags(cfg.AttackModifierFlags, 0x01))
                        result = AttackModifier.Bonus;
                    else if (HasFlags(cfg.AttackModifierFlags, 0x10))
                        result = AttackModifier.Phobia;
                    break;
                case EnemyGroups.Daedra:
                    if (HasFlags(cfg.AttackModifierFlags, 0x02))
                        result = AttackModifier.Bonus;
                    else if (HasFlags(cfg.AttackModifierFlags, 0x20))
                        result = AttackModifier.Phobia;
                    break;
                case EnemyGroups.Humanoid:
                    if (HasFlags(cfg.AttackModifierFlags, 0x04))
                        result = AttackModifier.Bonus;
                    else if (HasFlags(cfg.AttackModifierFlags, 0x40))
                        result = AttackModifier.Phobia;
                    break;
                case EnemyGroups.Animals:
                    if (HasFlags(cfg.AttackModifierFlags, 0x08))
                        result = AttackModifier.Bonus;
                    else if (HasFlags(cfg.AttackModifierFlags, 0x80))
                        result = AttackModifier.Phobia;
                    break;
            }

            return result;
        }