// This class implements a singleton pattern; meaning that no matter how many times the // Instance attribute is used, there will only ever be one of these created in the entire system. // Copy this template and give it a new name. Assign all of the data members of the EvoSpec // base class in the constructor. Your subclass must not be abstract. // Never call new on this class, use the Instance attribute to get the instance instead. UberMercenarySpec() { m_Tamable = true; m_MinTamingToHatch = 0; m_PercentFemaleChance = .20; m_GuardianEggOrDeedChance = .01; m_AlwaysHappy = false; m_ProducesYoung = false; m_AbsoluteStatValues = false; m_PackSpecialItemChance = 0.02; m_MaxEvoResistance = 125; m_MaxTrainingStage = 0; m_CanAttackPlayers = false; m_Skills = new SkillName[11] { SkillName.Swords, SkillName.Macing, SkillName.Fencing, SkillName.Archery, SkillName.Tactics, SkillName.Wrestling, SkillName.Parry, SkillName.Anatomy, SkillName.MagicResist, SkillName.Healing, SkillName.Chivalry }; m_MinSkillValues = new int[11] { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 }; m_MaxSkillValues = new int[11] { 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120 }; m_Stages = new BaseEvoStage[] { new UberMercenaryStageOne(), new UberMercenaryStageTwo(), new UberMercenaryStageThree(), new UberMercenaryStageFour(), new UberMercenaryStageFive(), new UberMercenaryStageSix(), new UberMercenaryStageSeven() }; }
// This class implements a singleton pattern; meaning that no matter how many times the // Instance attribute is used, there will only ever be one of these created in the entire system. // Copy this template and give it a new name. Assign all of the data members of the EvoSpec // base class in the constructor. Your subclass must not be abstract. // Never call new on this class, use the Instance attribute to get the instance instead. HiryuEvoSpec() { m_Tamable = true; m_MinTamingToHatch = 99.9; m_PercentFemaleChance = 0.0; m_GuardianEggOrDeedChance = .08; m_AlwaysHappy = true; m_ProducesYoung = false; m_PregnancyTerm = 0.10; m_AbsoluteStatValues = false; m_MaxEvoResistance = 90; m_MaxTrainingStage = 6; m_MountStage = 4; m_CanAttackPlayers = false; m_Skills = new SkillName[4] { SkillName.MagicResist, SkillName.Tactics, SkillName.Wrestling, SkillName.Anatomy }; m_MinSkillValues = new int[4] { 50, 50, 50, 15, }; m_MaxSkillValues = new int[4] { 100, 110, 120, 110 }; m_Stages = new BaseEvoStage[] { new HiryuStageOne(), new HiryuStageTwo(), new HiryuStageThree(), new HiryuStageFour(), new HiryuStageFive() }; }
// This class implements a singleton pattern; meaning that no matter how many times the // Instance attribute is used, there will only ever be one of these created in the entire system. // Copy this template and give it a new name. Assign all of the data members of the EvoSpec // base class in the constructor. Your subclass must not be abstract. // Never call new on this class, use the Instance attribute to get the instance instead. RaelisDragonSpec() { m_Tamable = true; m_MinTamingToHatch = 99.9; //originaly was 99.9 m_PercentFemaleChance = 0.00; // Made small to limit access to eggs. originaly was 0.02 m_GuardianEggOrDeedChance = .01; m_AlwaysHappy = false; m_ProducesYoung = false; // originaly was true m_PregnancyTerm = 0.0; // originaly was 0.10 m_AbsoluteStatValues = false; m_MaxEvoResistance = 100; m_MaxTrainingStage = 7; // At what stage stop atack training dummy and leveling m_CanAttackPlayers = false; m_RandomHues = new int[] { 1157, 1175, 1172, 1170, 2703, 2473, 2643, 1156, 2704, 2734, 2669, 2621, 2859, 2716, 2791, 2927, 2974, 1161, 2717, 2652, 2821, 2818, 2730, 2670, 2678, 2630, 2641, 2644, 2592, 2543, 2526, 2338, 2339, 1793, 1980, 1983 }; m_Skills = new SkillName[7] { SkillName.Magery, SkillName.EvalInt, SkillName.Meditation, SkillName.MagicResist, SkillName.Tactics, SkillName.Wrestling, SkillName.Anatomy }; m_MinSkillValues = new int[7] { 50, 50, 50, 15, 19, 19, 19 }; m_MaxSkillValues = new int[7] { 120, 120, 110, 110, 100, 100, 100 }; m_Stages = new BaseEvoStage[] { new RaelisDragonStageOne(), new RaelisDragonStageTwo(), new RaelisDragonStageThree(), new RaelisDragonStageFour(), new RaelisDragonStageFive(), new RaelisDragonStageSix(), new RaelisDragonStageSeven() }; }
MercenarySpec() { m_Tamable = true; m_MinTamingToHatch = 0; m_PercentFemaleChance = .70; m_GuardianEggOrDeedChance = .10; m_AlwaysHappy = true; m_ProducesYoung = false; m_AbsoluteStatValues = false; m_PackSpecialItemChance = 0.90; m_MaxEvoResistance = 90; m_MaxTrainingStage = 6; m_ArtifactStage = m_MaxTrainingStage; m_CraftedWeaponStage = m_ArtifactStage - 1; m_CanAttackPlayers = false; m_Skills = new SkillName[10] { SkillName.Swords, SkillName.Macing, SkillName.Chivalry, SkillName.Healing, SkillName.Tactics, SkillName.Meditation, SkillName.Anatomy, SkillName.MagicResist, SkillName.Parry, SkillName.Fencing }; m_MinSkillValues = new int[10] { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 }; m_MaxSkillValues = new int[10] { 120, 120, 120, 120, 120, 120, 120, 120, 120, 120 }; m_Stages = new BaseEvoStage[] { new MercenaryStageZero(), new MercenaryStageOne(), new MercenaryStageTwo(), new MercenaryStageThree(), new MercenaryStageFour(), new MercenaryStageFive(), new MercenaryStageSix() }; }
// This class implements a singleton pattern; meaning that no matter how many times the // Instance attribute is used, there will only ever be one of these created in the entire system. // Copy this template and give it a new name. Assign all of the data members of the EvoSpec // base class in the constructor. Your subclass must not be abstract. // Never call new on this class, use the Instance attribute to get the instance instead. RaelisDaemonSpec() { m_Tamable = true; m_MinTamingToHatch = 99.9; m_PercentFemaleChance = 0.02; // Made small to limit access to eggs. m_GuardianEggOrDeedChance = .01; m_AlwaysHappy = true; m_ProducesYoung = true; m_PregnancyTerm = 0.10; m_AbsoluteStatValues = false; m_MaxEvoResistance = 100; m_MaxTrainingStage = 7; m_CanAttackPlayers = false; m_RandomHues = new int[] { 1157, 1175, 1172, 1170, 319, 130, 573, 285, 133, 432, 149, 622, 204, 29, 55, 745, 987, 514, 42, 17, 61, 80 }; m_Skills = new SkillName[7] { SkillName.Magery, SkillName.EvalInt, SkillName.Meditation, SkillName.MagicResist, SkillName.Tactics, SkillName.Wrestling, SkillName.Anatomy }; m_MinSkillValues = new int[7] { 50, 50, 50, 15, 19, 19, 19 }; m_MaxSkillValues = new int[7] { 120, 120, 110, 110, 100, 100, 100 }; m_Stages = new BaseEvoStage[] { new RaelisDaemonStageOne(), new RaelisDaemonStageTwo(), new RaelisDaemonStageThree(), new RaelisDaemonStageFour(), new RaelisDaemonStageFive(), new RaelisDaemonStageSix(), new RaelisDaemonStageSeven() }; }
// This class implements a singleton pattern; meaning that no matter how many times the // Instance attribute is used, there will only ever be one of these created in the entire system. // Copy this template and give it a new name. Assign all of the data members of the EvoSpec // base class in the constructor. Your subclass must not be abstract. // Never call new on this class, use the Instance attribute to get the instance instead. RaelisDragonSpec() { m_Tamable = true; m_MinTamingToHatch = 99.9; //originaly was 99.9 m_PercentFemaleChance = 0.00; // Made small to limit access to eggs. originaly was 0.02 m_GuardianEggOrDeedChance = .01; m_AlwaysHappy = false; m_ProducesYoung = false; // originaly was true m_PregnancyTerm = 0.0; // originaly was 0.10 m_AbsoluteStatValues = false; m_MaxEvoResistance = 100; m_MaxTrainingStage = 7;// At what stage stop atack training dummy and leveling m_CanAttackPlayers = false; m_RandomHues = new int[] { 1157, 1175, 1172, 1170, 2703, 2473, 2643, 1156, 2704, 2734, 2669, 2621, 2859, 2716, 2791, 2927, 2974, 1161, 2717, 2652, 2821, 2818, 2730, 2670, 2678, 2630, 2641, 2644, 2592, 2543, 2526, 2338, 2339, 1793, 1980, 1983 }; m_Skills = new SkillName[7] { SkillName.Magery, SkillName.EvalInt, SkillName.Meditation, SkillName.MagicResist, SkillName.Tactics, SkillName.Wrestling, SkillName.Anatomy }; m_MinSkillValues = new int[7] { 50, 50, 50, 15, 19, 19, 19 }; m_MaxSkillValues = new int[7] { 120, 120, 110, 110, 100, 100, 100 }; m_Stages = new BaseEvoStage[] { new RaelisDragonStageOne(), new RaelisDragonStageTwo(), new RaelisDragonStageThree(), new RaelisDragonStageFour(), new RaelisDragonStageFive(), new RaelisDragonStageSix(), new RaelisDragonStageSeven() }; }
// This class implements a singleton pattern; meaning that no matter how many times the // Instance attribute is used, there will only ever be one of these created in the entire system. // Copy this template and give it a new name. Assign all of the data members of the EvoSpec // base class in the constructor. Your subclass must not be abstract. // Never call new on this class, use the Instance attribute to get the instance instead. PhoenixSpec() { m_Tamable = true; m_MinTamingToHatch = 100.9; m_PercentFemaleChance = 0.02; // Made small to limit access to eggs. m_GuardianEggOrDeedChance = .01; m_AlwaysHappy = false; m_ProducesYoung = true; m_PregnancyTerm = 0.10; m_AbsoluteStatValues = false; m_MaxEvoResistance = 100; m_MaxTrainingStage = 3; m_CanAttackPlayers = false; m_RandomHues = new int[] { 1157, 1175, 1172, 1170, 2703, 2473, 2643, 1156, 2704, 2734, 2669, 2621, 2859, 2716, 2791, 2927, 2974, 1161, 2717, 2652, 2821, 2818, 2730, 2670, 2678, 2630, 2641, 2644, 2592, 2543, 2526, 2338, 2339, 1793, 1980, 1983 }; m_Skills = new SkillName[7] { SkillName.Veterinary, SkillName.AnimalLore, SkillName.MagicResist, SkillName.Tactics, SkillName.Wrestling, SkillName.Anatomy, SkillName.Healing }; m_MinSkillValues = new int[7] { 50, 50, 15, 19, 19, 19, 50 }; m_MaxSkillValues = new int[7] { 120, 110, 110, 100, 100, 100, 120 }; m_Stages = new BaseEvoStage[] { new PhoenixStageOne(), new PhoenixStageTwo(), new PhoenixStageThree(), new PhoenixStageFour(), new PhoenixStageFive(), new PhoenixStageSix(), new PhoenixStageSeven() }; }
// This class implements a singleton pattern; meaning that no matter how many times the // Instance attribute is used, there will only ever be one of these created in the entire system. // Copy this template and give it a new name. Assign all of the data members of the EvoSpec // base class in the constructor. Your subclass must not be abstract. // Never call new on this class, use the Instance attribute to get the instance instead. RaelisDragonSpec() { m_Tamable = true; m_MinTamingToHatch = 99.9; m_AlwaysHappy = true; m_ProducesYoung = false; m_PregnancyTerm = 0.10; m_AbsoluteStatValues = false; m_Skills = new SkillName[7] { SkillName.Magery, SkillName.EvalInt, SkillName.Meditation, SkillName.MagicResist, SkillName.Tactics, SkillName.Wrestling, SkillName.Anatomy }; m_MinSkillValues = new int[7] { 50, 50, 50, 15, 19, 19, 19 }; m_MaxSkillValues = new int[7] { 100, 100, 100, 100, 120, 120, 100 }; m_Stages = new BaseEvoStage[] { new RaelisDragonStageOne(), new RaelisDragonStageTwo(), new RaelisDragonStageThree(), new RaelisDragonStageFour(), new RaelisDragonStageFive(), new RaelisDragonStageSix(), new RaelisDragonStageSeven() }; }
// This class implements a singleton pattern; meaning that no matter how many times the // Instance attribute is used, there will only ever be one of these created in the entire system. // Copy this template and give it a new name. Assign all of the data members of the EvoSpec // base class in the constructor. Your subclass must not be abstract. // Never call new on this class, use the Instance attribute to get the instance instead. HiryuEvoSpec() { m_Tamable = true; m_MinTamingToHatch = 99.9; m_AlwaysHappy = true; m_ProducesYoung = false; m_PregnancyTerm = 0.10; m_AbsoluteStatValues = false; m_Skills = new SkillName[4] { SkillName.MagicResist, SkillName.Tactics, SkillName.Wrestling, SkillName.Anatomy }; m_MinSkillValues = new int[4] { 50, 50, 50, 15, }; m_MaxSkillValues = new int[4] { 100, 110, 120, 110 }; m_Stages = new BaseEvoStage[] { new HiryuStageOne(), new HiryuStageTwo(), new HiryuStageThree(), new HiryuStageFour(), new HiryuStageFive(), new HiryuStageSix() }; }
private int GetEvoHue(BaseEvoSpec spec, BaseEvoStage stage) { if (stage.Hue == 0) { return(Hue); } if (stage.Hue == Evo.Flags.kRandomHueFlag && spec.RandomHues != null && spec.RandomHues.Length > 0) { return(Utility.RandomList(spec.RandomHues)); } if (stage.Hue == Evo.Flags.kUnHueFlag) { return(0); } return(stage.Hue); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 0: { m_Ep = reader.ReadInt(); m_Stage = reader.ReadInt(); m_Pregnant = reader.ReadBool(); m_HasEgg = reader.ReadBool(); m_DeliveryDate = reader.ReadDateTime(); break; } } BaseEvoSpec spec = GetEvoSpec(); if (null != spec && null != spec.Stages) { BaseEvoStage stage = spec.Stages[m_Stage]; if (null != stage) { m_FinalStage = spec.Stages.Length - 1; m_ProducesYoung = spec.ProducesYoung; m_InitialTerm = TimeSpan.FromDays(spec.PregnancyTerm); m_EpMinDivisor = stage.EpMinDivisor; m_EpMaxDivisor = stage.EpMaxDivisor; m_DustMultiplier = stage.DustMultiplier; m_NextEpThreshold = stage.NextEpThreshold; //m_AlwaysHappy = spec.AlwaysHappy; m_NextHappyTime = DateTime.Now; } } Pregnant = m_Pregnant; // resets the timer if pregnant }
public void LoadSpecValues() { BaseEvoSpec spec = GetEvoSpec(); if (null != spec && null != spec.Stages) { BaseEvoStage stage = spec.Stages[m_Stage]; if (null != stage) { m_FinalStage = spec.Stages.Length - 1; m_ProducesYoung = spec.ProducesYoung; m_InitialTerm = TimeSpan.FromDays(spec.PregnancyTerm); m_EpMinDivisor = stage.EpMinDivisor; m_EpMaxDivisor = stage.EpMaxDivisor; m_DustMultiplier = stage.DustMultiplier; m_NextEpThreshold = stage.NextEpThreshold; m_AlwaysHappy = spec.AlwaysHappy; m_NextHappyTime = DateTime.Now; m_MaxTrainingStage = spec.MaxTrainingStage; m_CanAttackPlayers = spec.CanAttackPlayers; } } }
// This class implements a singleton pattern; meaning that no matter how many times the // Instance attribute is used, there will only ever be one of these created in the entire system. // Copy this template and give it a new name. Assign all of the data members of the EvoSpec // base class in the constructor. Your subclass must not be abstract. // Never call new on this class, use the Instance attribute to get the instance instead. EvoSpiderSpec() { m_Tamable = true; m_MinTamingToHatch = 99.9; m_AlwaysHappy = true; m_ProducesYoung = false; m_PregnancyTerm = 0.10; m_AbsoluteStatValues = false; m_Skills = new SkillName[4] { SkillName.MagicResist, SkillName.Tactics, SkillName.Wrestling, SkillName.Anatomy }; m_MinSkillValues = new int[4] { 50, 50, 50, 15, }; m_MaxSkillValues = new int[4] { 100, 110, 120, 110 }; m_Stages = new BaseEvoStage[] { new EvoSpiderStageOne(), new EvoSpiderStageTwo(), new EvoSpiderStageThree(), new EvoSpiderStageFour(), new EvoSpiderStageFive(), new EvoSpiderStageSix() }; }
protected virtual void Evolve(bool hatching) { BaseEvoSpec spec = GetEvoSpec(); if (null != spec && null != spec.Stages) { BaseEvoStage stage = spec.Stages[++m_Stage]; if (null != stage) { int OldControlSlots = ControlSlots; if (null != stage.Title) { Title = stage.Title; } if (0 != stage.BaseSoundID) { BaseSoundID = stage.BaseSoundID; } if (0 != stage.BodyValue) { Body = stage.BodyValue; } if (0 != stage.VirtualArmor) { VirtualArmor = stage.VirtualArmor; } if (0 != stage.ControlSlots) { ControlSlots = stage.ControlSlots; } if (0 != stage.MinTameSkill) { MinTameSkill = stage.MinTameSkill; } if (0 != stage.EpMinDivisor) { m_EpMinDivisor = stage.EpMinDivisor; } if (0 != stage.EpMaxDivisor) { m_EpMaxDivisor = stage.EpMaxDivisor; } if (0 != stage.DustMultiplier) { m_DustMultiplier = stage.DustMultiplier; } m_NextEpThreshold = stage.NextEpThreshold; if (spec.AbsoluteStatValues) { SetStr(stage.StrMin, stage.StrMax); SetDex(stage.DexMin, stage.DexMin); SetInt(stage.IntMin, stage.IntMax); SetHits(stage.HitsMin, stage.HitsMax); SetDamage(stage.DamageMin, stage.DamageMax); } else { SetStr(RawStr + Utility.RandomMinMax(stage.StrMin, stage.StrMax)); SetDex(RawDex + Utility.RandomMinMax(stage.DexMin, stage.DexMin)); SetInt(RawInt + Utility.RandomMinMax(stage.IntMin, stage.IntMax)); SetHits(HitsMax + Utility.RandomMinMax(stage.HitsMin, stage.HitsMax)); SetDamage(DamageMin + stage.DamageMin, DamageMax + stage.DamageMax); } if (null != stage.DamagesTypes) { for (int i = 0; i < stage.DamagesTypes.Length; i++) { SetDamageType(stage.DamagesTypes[i], Utility.RandomMinMax(stage.MinDamages[i], stage.MaxDamages[i])); } } if (null != stage.ResistanceTypes) { for (int i = 0; i < stage.ResistanceTypes.Length; i++) { SetResistance(stage.ResistanceTypes[i], Utility.RandomMinMax(stage.MinResistances[i], stage.MaxResistances[i])); } } Hue = GetEvoHue(spec, stage); if (null != ControlMaster && stage.ControlSlots > 0 && ControlSlots > 0) { ControlMaster.Followers += stage.ControlSlots - OldControlSlots; } if (!(hatching || this is IEvoGuardian)) { PlaySound(665); Emote("*" + Name + " " + stage.EvolutionMessage + "*"); } Warmode = false; } } }
private int GetEvoHue( BaseEvoSpec spec, BaseEvoStage stage ) { if ( stage.Hue == 0 ) return Hue; if ( stage.Hue == Evo.Flags.kRandomHueFlag && spec.RandomHues != null && spec.RandomHues.Length > 0 ) return Utility.RandomList( spec.RandomHues ); if ( stage.Hue == Evo.Flags.kUnHueFlag ) return 0; return stage.Hue; }