示例#1
0
        // 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() };
        }
示例#2
0
        // 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() };
        }
示例#3
0
        // 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() };
        }
示例#4
0
        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() };
        }
示例#5
0
        // 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() };
		}
示例#7
0
        // 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() };
        }
示例#8
0
        // 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() };
		}
示例#10
0
        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);
        }
		// 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() };
		}
示例#12
0
        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
        }
示例#13
0
        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;
                }
            }
        }
示例#14
0
        // 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() };
        }
示例#15
0
        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;
                }
            }
        }
示例#16
0
		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;
		}