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); }
public virtual void Load(CFGData data) { Name = data.Name; Description = data.Description; ProblemDataParameter.Value = LoadProblemData(data); GrammarBNF.Value = data.Grammar; }
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); }
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); } }
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); }
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); }
/// <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); }
/// <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); }
/// <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 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; }
/// <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; }
/// <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; }
public override void Load(CFGData data) { base.Load(data); SetVariables(); }
/// <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; }