Make a copy of the Hiryu (if it is to be a mount) or Dragon directory under the EVO directory
and rename it to YourClass

Rename all of the files, replacing EvoHiryu in each file name with YourClass.

Inside the YourClass directory, open each file and replace
all occurreneces of EvoHiryu to YourClass.

In YourClass.cs, YourClassDust.cs and YourClassEgg.cs change the respective
strings "a hiryu corpse", "hiryu dust", and "a hiryu egg" as appropriate.

Open YourClassSpec.cs.

In the constructor of the YourClassSpec class, edit the variable values as you see fit.




Add or remove YourClassStageX class definitions, according to how many stages you plan to have,
by copying and pasting one of the exisiting definitions.

Change the assignment of the m_Stages vairable in the YourClassSpec constructor
according to the number of stages YourClassStageX class definitions you have.

Edit the values of the variables in each of the YourClassStageX as appropriate
for each stage of the creatures evolution. Setting any of the array type variables
to null will cause them to not be changed in that stage of the evolution. Damage amount,
hits, strength, dexterity and intelligence can be applied relatively or absolutely depending
on the value of YourClassSpec.m_AbsoluteStatValues. All of the other variables are applied absolutely.

where is yourclass at?
 

Attachments

  • HellspiderEvo.cs
    1.1 KB · Views: 5
All the files which you need to add/create will be in the xantos package- maybe download this one which I posted- I have a few extra scripts in there added- you could make copies and then just change those for any you don't want. Each Evo has its own folder which will show exactly how this is done. https://www.servuo.com/threads/pet-evolution.2966/
 
Make a copy of the Hiryu (if it is to be a mount) or Dragon directory under the EVO directory
and rename it to YourClass

.
.
.

where is yourclass at?

Your question is answered at the top of your post.

YourClass is what you call your copy of the Hiryu or Dragon, but you don't actually name it "YourClass", you name it whatever name you want. The instructions call it "YourClass" so they can refer to whatever it is you called it.
 
custom/Xanthos/EV0 System/SpiderEvo/SpideEvoSpec.co:
cs1520: Line 145: Method must have a return type
csi519 Line 1ss: Inuelid token in cless. struct
cs1519: Line 1as; Inualid token's' in class, struct, or interface nember
cs1519: Line 185: Invalid token 's' in clase, struct, or interface member
cs1519: Line 1o5: Inualid token 's in class, struct, or interface liouber
cs1022; Line 211: Type or namespace definition, or end-of-file expected
Scripts: One or more scripts failed to compile or no script files were found
 
You can post your code too. Just attach your file so we can see what you tried to do. Thanks.
 
C#:
using System;
using Server;

namespace Xanthos.Evo
{
    public sealed class evospiderSpec : BaseEvoSpec
    {
        // 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_PercentFemaleChance = .04;    // Made small to limit access to eggs.
            m_GuardianEggOrDeedChance = .01;
            m_AlwaysHappy = false;
            m_ProducesYoung = true;
            m_PregnancyTerm = 14.00;
            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.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 evospiderBaseEvoStage[] { new evospiderStageOne(), new evospiderStageTwo(),
                                              new evospiderStageThree(), new evospiderStageFour(),
                                              new evospiderStageFive(), new evospiderStageSix(),
                                              new evospiderStageSeven() };
        }

        // These next 2 lines facilitate the singleton pattern.  In your subclass only change the
        // BaseEvoSpec class name to your subclass of BaseEvoSpec class name and uncomment both lines.
        public static evospiderSpec Instance { get { return Nested.instance; } }
        class Nested { static Nested() { } internal static readonly evospiderSpec instance = new evospiderSpec();}
    }   

    // Define a subclass of BaseEvoStage for each stage in your creature and place them in the
    // array in your subclass of BaseEvoSpec.  See the example classes for how to do this.
    // Your subclass must not be abstract.
    public class evospiderStageOne : BaseEvoStage
    {
        public evospiderStageOne()
        {
            EvolutionMessage = "has evolved";
            NextEpThreshold = 25000; EpMinDivisor = 10; EpMaxDivisor = 5; DustMultiplier = 20;
            BaseSoundID = 456;
            BodyValue = 51; ControlSlots = 2; MinTameSkill = 99.9; VirtualArmor = 30;
            Hue = Evo.Flags.kRandomHueFlag;

            DamagesTypes = new ResistanceType[1] { ResistanceType.Physical };
            MinDamages = new int[1] { 100 };
            MaxDamages = new int[1] { 100 };

            ResistanceTypes = new ResistanceType[1] { ResistanceType.Physical };
            MinResistances = new int[1] { 15 };
            MaxResistances = new int[1] { 15 };

            DamageMin = 11; DamageMax = 17; HitsMin = 200; HitsMax = 250;
            StrMin = 296; StrMax = 325; DexMin = 56; DexMax = 75; IntMin = 76; IntMax = 96;
        }
    }

    public class evospiderStageTwo : BaseEvoStage
    {
        public evospiderStageTwo()
        {
            EvolutionMessage = "has evolved";
            NextEpThreshold = 75000; EpMinDivisor = 20; EpMaxDivisor = 10; DustMultiplier = 20;
            BaseSoundID = 0;
            BodyValue = 205; VirtualArmor = 40;
       
            DamagesTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
                                                    ResistanceType.Poison, ResistanceType.Energy };
            MinDamages = new int[5] { 100, 25, 25, 25, 25 };
            MaxDamages = new int[5] { 100, 25, 25, 25, 25 };

            ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
                                                        ResistanceType.Poison, ResistanceType.Energy };
            MinResistances = new int[5] { 20, 20, 20, 20, 20 };
            MaxResistances = new int[5] { 20, 20, 20, 20, 20 };

            DamageMin = 1; DamageMax = 1; HitsMin= 500; HitsMax = 500;
            StrMin = 200; StrMax = 200; DexMin = 20; DexMax = 20; IntMin = 30; IntMax = 30;
        }
    }

    public class evospiderStageThree : BaseEvoStage
    {
        public evospiderStageThree()
        {
            EvolutionMessage = "has evolved";
            NextEpThreshold = 175000; EpMinDivisor = 30; EpMaxDivisor = 20; DustMultiplier = 20;
            BaseSoundID =904;
            BodyValue = 28; VirtualArmor = 50;
       
            DamagesTypes = null;
            MinDamages = null;
            MaxDamages = null;

            ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
                                                        ResistanceType.Poison, ResistanceType.Energy };
            MinResistances = new int[5] { 40, 40, 40, 40, 40 };
            MaxResistances = new int[5] { 40, 40, 40, 40, 40 };

            DamageMin = 1; DamageMax = 1; HitsMin= 100; HitsMax = 100;
            StrMin = 100; StrMax = 100; DexMin = 10; DexMax = 10; IntMin = 20; IntMax = 20;
        }
    }

    public class evospiderStageFour : BaseEvoStage
    {
        public evospiderStageFour()
        {
            EvolutionMessage = "has evolved";
            NextEpThreshold = 3750000; EpMinDivisor = 50; EpMaxDivisor = 40; DustMultiplier = 20;
            BaseSoundID = 1170;
            BodyValue = 11; ControlSlots = 3; MinTameSkill = 119.9; VirtualArmor = 60;
       
            DamagesTypes = null;
            MinDamages = null;
            MaxDamages = null;

            ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
                                                        ResistanceType.Poison, ResistanceType.Energy };
            MinResistances = new int[5] { 60, 60, 60, 60, 60 };
            MaxResistances = new int[5] { 60, 60, 60, 60, 60 };   

            DamageMin = 1; DamageMax = 1; HitsMin= 100; HitsMax = 100;
            StrMin = 100; StrMax = 100; DexMin = 10; DexMax = 10; IntMin = 120; IntMax = 120;
        }
    }

    public class evospiderstagefive : BaseEvoStage
    {
        public evospiderStageFive()
        {
            EvolutionMessage = "has evolved";
            NextEpThreshold = 7750000; EpMinDivisor = 160; EpMaxDivisor = 40; DustMultiplier = 20;
            BaseSoundID = 594;
            BodyValue = 71; VirtualArmor = 70;
       
            DamagesTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
                                                     ResistanceType.Poison, ResistanceType.Energy };
            MinDamages = new int[5] { 100, 50, 50, 50, 50 };
            MaxDamages = new int[5] { 100, 50, 50, 50, 50 };

            ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
                                                        ResistanceType.Poison, ResistanceType.Energy };
            MinResistances = new int[5] { 80, 80, 80, 80, 80 };
            MaxResistances = new int[5] { 80, 80, 80, 80, 80 };   

            DamageMin = 5; DamageMax = 5; HitsMin= 100; HitsMax = 100;
            StrMin = 100; StrMax = 100; DexMin = 20; DexMax = 20; IntMin = 120; IntMax = 120;
        }
    }

    public class evospiderStageSix : BaseEvoStage
    {
        public evospiderStageSix()
        {
            EvolutionMessage = "has evolved";
            NextEpThreshold = 15000000; EpMinDivisor = 540; EpMaxDivisor = 480; DustMultiplier = 20;
            BodyValue = 152; VirtualArmor = 170;
            BaseSoundID = 589;
            DamagesTypes = null;
            MinDamages = null;
            MaxDamages = null;

            ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
                                                        ResistanceType.Poison, ResistanceType.Energy };
            MinResistances = new int[5] { 98, 98, 98, 98, 98 };
            MaxResistances = new int[5] { 98, 98, 98, 98, 98 };   

            DamageMin = 5; DamageMax = 5; HitsMin= 100; HitsMax = 100;
        }    StrMin = 100; StrMax = 618; DexMin = 20; DexMax = 87; IntMin = 120; IntMax = 145;        }
    }

    public class evospiderStageSeven : BaseEvoStage
    {
        public evospiderStageSeven()
        {
            Title = "Ancient Hellspider";
            EvolutionMessage = "has evolved to its highest form and is now an Ancient Spider";
            NextEpThreshold = 0; EpMinDivisor = 740; EpMaxDivisor = 660; DustMultiplier = 20;
            BaseSoundID = 387;
            BodyValue = 173; ControlSlots = 4; VirtualArmor = 270;
       
            DamagesTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
                                                     ResistanceType.Poison, ResistanceType.Energy };
            MinDamages = new int[5] { 100, 75, 75, 75, 75 };
            MaxDamages = new int[5] { 100, 75, 75, 75, 75 };

            ResistanceTypes = null;
            MinResistances = null;
            MaxResistances = null;   

            DamageMin = 15; DamageMax = 15; HitsMin= 1350; HitsMax = 1400;
            StrMin = 125; StrMax = 907; DexMin = 125; DexMax = 295; IntMin = 125; IntMax = 548;
        }
    }
}
 
Last edited by a moderator:
I added code tags to make it readable.

Line 143, you need to make that the same case as the rest of the file, so it should probably be evospiderStageFive not evospiderstagefive.
 
heres is all the files i did I still keep getting errors
 

Attachments

  • GuardianSpiderEvo.cs
    2.5 KB · Views: 1
  • SpideEvoSpec.cs
    8.4 KB · Views: 1
  • SpiderEvo.cs
    1.1 KB · Views: 0
  • SpiderEvoDust.cs
    800 bytes · Views: 0
  • SpiderEvoEgg.cs
    765 bytes · Views: 0
Here's the errors
Post automatically merged:

using System;
using Server;
using Server.Items;
using Server.Mobiles;
using Xanthos.Interfaces;


namespace Xanthos.Evo
{
[CorpseName( "a guardian EvoSpider corpse" )]
public class Guardian EvoSpider : EvoSpider
{
public override bool AddPointsOnDamage { get { return false; } }
public override bool AddPointsOnMelee { get { return false; } }


[Constructable]
public Guardian EvoSpider() : base( "A Guardian EvoSpider" )
{


Name = "Guardian Evo Dragon";
Body = 173;
Hue = 1278;


SetStr( 260 );
SetDex( 160 );
SetInt( 252 );

SetHits( 1800 );
SetMana( 240 );
SetStam( 100);

SetDamage( 33 );

SetDamageType( ResistanceType.Physical, 50 );
SetDamageType( ResistanceType.Cold, 50 );
SetDamageType( ResistanceType.Energy, 50 );

SetResistance( ResistanceType.Physical, 55 );
SetResistance( ResistanceType.Cold, 81 );
SetResistance( ResistanceType.Fire, 35 );
SetResistance( ResistanceType.Energy, 77 );
SetResistance( ResistanceType.Poison, 44 );

SetSkill( SkillName.Anatomy, 70 );
SetSkill( SkillName.Magery, 70 );
SetSkill( SkillName.Meditation, 90 );
SetSkill( SkillName.MagicResist, 85 );
SetSkill( SkillName.Wrestling, 95 );
SetSkill( SkillName.Tactics, 95 );

VirtualArmor = 30;


{
}

Tamable = false; // Not appropriate as a pet



switch ( Utility.Random( 20 ))
{
case 0: AddItem( new Raelis EvoSpiderEgg() ); break;
}

}

public override void GenerateLoot()
{
PackGold( 100 );
AddLoot( LootPack.Gems, Utility.Random( 1, 5));
}

public Guardian EvoSpider( Serial serial ) : base( serial )
{
}

public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);

writer.Write( (int)0 );
}

public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);

int version = reader.ReadInt();
}
}
 

Attachments

  • IMG_20190723_132220.jpg
    IMG_20190723_132220.jpg
    1.2 MB · Views: 7
  • IMG_20190723_132239.jpg
    IMG_20190723_132239.jpg
    1.3 MB · Views: 7
Last edited:
----------------------------------------------------------------------------
JustUO - [http://www.playuo.org] Version 1.0
Publish 2
Core: .NET Framework Version 4.0.30319
RandomImpl: CSPRandom (Software)
Scripts: Compiling C# scripts...Failed with: 2 errors, 0 warnings
Errors:
+ custom/Xanthos/EVO System/Dragon/GuardianSpiderEvo.cs:
CS1514: Line 11: { expected
CS1519: Line 11: Invalid token ':' in class, struct, or interface member dec
laration
CS1519: Line 12: Invalid token '{' in class, struct, or interface member dec
laration
CS1002: Line 18: ; expected
CS1519: Line 22: Invalid token '=' in class, struct, or interface member dec
laration
CS1519: Line 23: Invalid token '=' in class, struct, or interface member dec
laration
CS1519: Line 24: Invalid token '=' in class, struct, or interface member dec
laration
CS1520: Line 27: Method must have a return type
CS1031: Line 27: Type expected
CS1520: Line 28: Method must have a return type
CS1031: Line 28: Type expected
CS1520: Line 29: Method must have a return type
CS1031: Line 29: Type expected
CS1520: Line 31: Method must have a return type
CS1031: Line 31: Type expected
CS1520: Line 32: Method must have a return type
CS1031: Line 32: Type expected
CS1520: Line 33: Method must have a return type
CS1031: Line 33: Type expected
CS1520: Line 35: Method must have a return type
CS1031: Line 35: Type expected
CS1520: Line 37: Method must have a return type
CS1001: Line 37: Identifier expected
CS1031: Line 37: Type expected
CS1520: Line 38: Method must have a return type
CS1001: Line 38: Identifier expected
CS1031: Line 38: Type expected
CS1520: Line 39: Method must have a return type
CS1001: Line 39: Identifier expected
CS1031: Line 39: Type expected
CS1520: Line 41: Method must have a return type
CS1001: Line 41: Identifier expected
CS1031: Line 41: Type expected
CS1520: Line 42: Method must have a return type
CS1001: Line 42: Identifier expected
CS1031: Line 42: Type expected
CS1520: Line 43: Method must have a return type
CS1001: Line 43: Identifier expected
CS1031: Line 43: Type expected
CS1520: Line 44: Method must have a return type
CS1001: Line 44: Identifier expected
CS1031: Line 44: Type expected
CS1520: Line 45: Method must have a return type
CS1001: Line 45: Identifier expected
CS1031: Line 45: Type expected
CS1520: Line 47: Method must have a return type
CS1001: Line 47: Identifier expected
CS1031: Line 47: Type expected
CS1520: Line 48: Method must have a return type
CS1001: Line 48: Identifier expected
CS1031: Line 48: Type expected
CS1520: Line 49: Method must have a return type
CS1001: Line 49: Identifier expected
CS1031: Line 49: Type expected
CS1520: Line 50: Method must have a return type
CS1001: Line 50: Identifier expected
CS1031: Line 50: Type expected
CS1520: Line 51: Method must have a return type
CS1001: Line 51: Identifier expected
CS1031: Line 51: Type expected
CS1520: Line 52: Method must have a return type
CS1001: Line 52: Identifier expected
CS1031: Line 52: Type expected
CS1519: Line 54: Invalid token '=' in class, struct, or interface member dec
laration
CS1519: Line 60: Invalid token '=' in class, struct, or interface member dec
laration
CS1519: Line 64: Invalid token '(' in class, struct, or interface member dec
laration
CS1520: Line 66: Method must have a return type
CS1031: Line 66: Type expected
CS1002: Line 66: ; expected
CS1518: Line 71: Expected class, delegate, enum, interface, or struct
CS1518: Line 77: Expected class, delegate, enum, interface, or struct
CS1518: Line 81: Expected class, delegate, enum, interface, or struct
CS1518: Line 88: Expected class, delegate, enum, interface, or struct
CS1022: Line 94: Type or namespace definition, or end-of-file expected
+ custom/Xanthos/EVO System/Dragon/SpideEvoSpec.cs:
CS1520: Line 145: Method must have a return type
Scripts: One or more scripts failed to compile or no script files were found.
- Press return to exit, or R to try again.
 
Try this one. You had a space in the name of the class, which is not allowed. Also, you were missing a brace near the end of the file.
 

Attachments

  • GuardianSpiderEvo.cs
    2.4 KB · Views: 4
Scripts: Compiling C# scripts...Failed with: 1 errors, 0 warnings
Errors:
+ custom/Xanthos/EVO System/Dragon/SpideEvoSpec.cs:
CS1520: Line 145: Method must have a return type
Scripts: One or more scripts failed to compile or no script files were found.
- Press return to exit, or R to try again.

thanks the Guardainspiderevo worked
Post automatically merged:

using System;
using Server;

namespace Xanthos.Evo
{
public sealed class evospiderSpec : BaseEvoSpec
{
// 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_PercentFemaleChance = .04; // Made small to limit access to eggs.
m_GuardianEggOrDeedChance = .01;
m_AlwaysHappy = false;
m_ProducesYoung = true;
m_PregnancyTerm = 14.00;
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.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 evospiderBaseEvoStage[] { new evospiderStageOne(), new evospiderStageTwo(),
new evospiderStageThree(), new evospiderStageFour(),
new evospiderStageFive(), new evospiderStageSix(),
new evospiderStageSeven() };
}

// These next 2 lines facilitate the singleton pattern. In your subclass only change the
// BaseEvoSpec class name to your subclass of BaseEvoSpec class name and uncomment both lines.
public static evospiderSpec Instance { get { return Nested.instance; } }
class Nested { static Nested() { } internal static readonly evospiderSpec instance = new evospiderSpec();}
}

// Define a subclass of BaseEvoStage for each stage in your creature and place them in the
// array in your subclass of BaseEvoSpec. See the example classes for how to do this.
// Your subclass must not be abstract.
public class evospiderStageOne : BaseEvoStage
{
public evospiderStageOne()
{
EvolutionMessage = "has evolved";
NextEpThreshold = 25000; EpMinDivisor = 10; EpMaxDivisor = 5; DustMultiplier = 20;
BaseSoundID = 456;
BodyValue = 51; ControlSlots = 2; MinTameSkill = 99.9; VirtualArmor = 30;
Hue = Evo.Flags.kRandomHueFlag;

DamagesTypes = new ResistanceType[1] { ResistanceType.Physical };
MinDamages = new int[1] { 100 };
MaxDamages = new int[1] { 100 };

ResistanceTypes = new ResistanceType[1] { ResistanceType.Physical };
MinResistances = new int[1] { 15 };
MaxResistances = new int[1] { 15 };

DamageMin = 11; DamageMax = 17; HitsMin = 200; HitsMax = 250;
StrMin = 296; StrMax = 325; DexMin = 56; DexMax = 75; IntMin = 76; IntMax = 96;
}
}

public class evospiderStageTwo : BaseEvoStage
{
public evospiderStageTwo()
{
EvolutionMessage = "has evolved";
NextEpThreshold = 75000; EpMinDivisor = 20; EpMaxDivisor = 10; DustMultiplier = 20;
BaseSoundID = 0;
BodyValue = 205; VirtualArmor = 40;

DamagesTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinDamages = new int[5] { 100, 25, 25, 25, 25 };
MaxDamages = new int[5] { 100, 25, 25, 25, 25 };

ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinResistances = new int[5] { 20, 20, 20, 20, 20 };
MaxResistances = new int[5] { 20, 20, 20, 20, 20 };

DamageMin = 1; DamageMax = 1; HitsMin= 500; HitsMax = 500;
StrMin = 200; StrMax = 200; DexMin = 20; DexMax = 20; IntMin = 30; IntMax = 30;
}
}

public class evospiderStageThree : BaseEvoStage
{
public evospiderStageThree()
{
EvolutionMessage = "has evolved";
NextEpThreshold = 175000; EpMinDivisor = 30; EpMaxDivisor = 20; DustMultiplier = 20;
BaseSoundID =904;
BodyValue = 28; VirtualArmor = 50;

DamagesTypes = null;
MinDamages = null;
MaxDamages = null;

ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinResistances = new int[5] { 40, 40, 40, 40, 40 };
MaxResistances = new int[5] { 40, 40, 40, 40, 40 };

DamageMin = 1; DamageMax = 1; HitsMin= 100; HitsMax = 100;
StrMin = 100; StrMax = 100; DexMin = 10; DexMax = 10; IntMin = 20; IntMax = 20;
}
}

public class evospiderStageFour : BaseEvoStage
{
public evospiderStageFour()
{
EvolutionMessage = "has evolved";
NextEpThreshold = 3750000; EpMinDivisor = 50; EpMaxDivisor = 40; DustMultiplier = 20;
BaseSoundID = 1170;
BodyValue = 11; ControlSlots = 3; MinTameSkill = 119.9; VirtualArmor = 60;

DamagesTypes = null;
MinDamages = null;
MaxDamages = null;

ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinResistances = new int[5] { 60, 60, 60, 60, 60 };
MaxResistances = new int[5] { 60, 60, 60, 60, 60 };

DamageMin = 1; DamageMax = 1; HitsMin= 100; HitsMax = 100;
StrMin = 100; StrMax = 100; DexMin = 10; DexMax = 10; IntMin = 120; IntMax = 120;
}
}

public class evospiderstagefive : BaseEvoStage
{
public evospiderStageFive()
{
EvolutionMessage = "has evolved";
NextEpThreshold = 7750000; EpMinDivisor = 160; EpMaxDivisor = 40; DustMultiplier = 20;
BaseSoundID = 594;
BodyValue = 71; VirtualArmor = 70;

DamagesTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinDamages = new int[5] { 100, 50, 50, 50, 50 };
MaxDamages = new int[5] { 100, 50, 50, 50, 50 };

ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinResistances = new int[5] { 80, 80, 80, 80, 80 };
MaxResistances = new int[5] { 80, 80, 80, 80, 80 };

DamageMin = 5; DamageMax = 5; HitsMin= 100; HitsMax = 100;
StrMin = 100; StrMax = 100; DexMin = 20; DexMax = 20; IntMin = 120; IntMax = 120;
}
}

public class evospiderStageSix : BaseEvoStage
{
public evospiderStageSix()
{
EvolutionMessage = "has evolved";
NextEpThreshold = 15000000; EpMinDivisor = 540; EpMaxDivisor = 480; DustMultiplier = 20;
BodyValue = 152; VirtualArmor = 170;
BaseSoundID = 589;
DamagesTypes = null;
MinDamages = null;
MaxDamages = null;

ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinResistances = new int[5] { 98, 98, 98, 98, 98 };
MaxResistances = new int[5] { 98, 98, 98, 98, 98 };

DamageMin = 5; DamageMax = 5; HitsMin= 100; HitsMax = 100;
StrMin = 100; StrMax = 618; DexMin = 20; DexMax = 87; IntMin = 120; IntMax = 145; }
}

public class evospiderStageSeven : BaseEvoStage
{
public evospiderStageSeven()
{
Title = "Ancient Hellspider";
EvolutionMessage = "has evolved to its highest form and is now an Ancient Spider";
NextEpThreshold = 0; EpMinDivisor = 740; EpMaxDivisor = 660; DustMultiplier = 20;
BaseSoundID = 387;
BodyValue = 173; ControlSlots = 4; VirtualArmor = 270;

DamagesTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinDamages = new int[5] { 100, 75, 75, 75, 75 };
MaxDamages = new int[5] { 100, 75, 75, 75, 75 };

ResistanceTypes = null;
MinResistances = null;
MaxResistances = null;

DamageMin = 15; DamageMax = 15; HitsMin= 1350; HitsMax = 1400;
StrMin = 125; StrMax = 907; DexMin = 125; DexMax = 295; IntMin = 125; IntMax = 548;
}
}
}
 
Line 145 you have evospiderstagefive---change to evospiderStageFive
then under it evospiderStageFive
 
Thank you for helping me got it working late last night it was baseEvoSpider it was supposed to be baseevo now I have to change it so it is immune to poison
Post automatically merged:

public override Poison HitPoison{ get{ return Poison. Lethal ; } } is this what i need to add to be immune to poison?
 
Last edited:
using System;
using Server;

namespace Xanthos.Evo
{
public sealed class evospiderSpec : BaseEvoSpec
{
// 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_PercentFemaleChance = .04; // Made small to limit access to eggs.
m_GuardianEggOrDeedChance = .01;
m_AlwaysHappy = false;
m_ProducesYoung = true;
m_PregnancyTerm = 14.00;
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.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 evospiderStageOne(),new evospiderStageTwo(),
new evospiderStageThree(),new evospiderStageFour(),
new evospiderStageFive(), new evospiderStageSix(),
new evospiderStageSeven() };
}

// These next 2 lines facilitate the singleton pattern. In your subclass only change the
// BaseEvoSpec class name to your subclass of BaseEvoSpec class name and uncomment both lines.
public static evospiderSpec Instance { get { return Nested.instance; } }
class Nested { static Nested() { } internal static readonly evospiderSpec instance = new evospiderSpec();}
}

// Define a subclass of BaseEvoStage for each stage in your creature and place them in the
// array in your subclass of BaseEvoSpec. See the example classes for how to do this.
// Your subclass must not be abstract.
public class evospiderStageOne : BaseEvoStage
{
public evospiderStageOne()
{
EvolutionMessage = "has evolved";
NextEpThreshold = 25000; EpMinDivisor = 10; EpMaxDivisor = 5; DustMultiplier = 20;
BaseSoundID = 456;
BodyValue = 51; ControlSlots = 2; MinTameSkill = 99.9; VirtualArmor = 30;
Hue = Evo.Flags.kRandomHueFlag;

DamagesTypes = new ResistanceType[1] { ResistanceType.Physical };
MinDamages = new int[1] { 100 };
MaxDamages = new int[1] { 100 };

ResistanceTypes = new ResistanceType[1] { ResistanceType.Physical };
MinResistances = new int[1] { 15 };
MaxResistances = new int[1] { 15 };

public override Poison PoisonImmune
{
get
{
return Poison.Lethal;
}
}

DamageMin = 11; DamageMax = 17; HitsMin = 200; HitsMax = 250;
StrMin = 296; StrMax = 325; DexMin = 56; DexMax = 75; IntMin = 76; IntMax = 96;
}
}

public class evospiderStageTwo : BaseEvoStage
{
public evospiderStageTwo()
{
EvolutionMessage = "has evolved";
NextEpThreshold = 75000; EpMinDivisor = 20; EpMaxDivisor = 10; DustMultiplier = 20;
BaseSoundID = 0;
BodyValue = 205; VirtualArmor = 40;

DamagesTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinDamages = new int[5] { 100, 25, 25, 25, 25 };
MaxDamages = new int[5] { 100, 25, 25, 25, 25 };

ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinResistances = new int[5] { 20, 20, 20, 20, 20 };
MaxResistances = new int[5] { 20, 20, 20, 20, 20 };

public override Poison PoisonImmune
{
get
{
return Poison.Lethal;
}
}

DamageMin = 1; DamageMax = 1; HitsMin= 500; HitsMax = 500;
StrMin = 200; StrMax = 200; DexMin = 20; DexMax = 20; IntMin = 30; IntMax = 30;
}
}

public class evospiderStageThree : BaseEvoStage
{
public evospiderStageThree()
{
EvolutionMessage = "has evolved";
NextEpThreshold = 175000; EpMinDivisor = 30; EpMaxDivisor = 20; DustMultiplier = 20;
BaseSoundID =904;
BodyValue = 28; VirtualArmor = 50;

DamagesTypes = null;
MinDamages = null;
MaxDamages = null;

ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinResistances = new int[5] { 40, 40, 40, 40, 40 };
MaxResistances = new int[5] { 40, 40, 40, 40, 40 };

public override Poison PoisonImmune
{
get
{
return Poison.Lethal;
}
}

DamageMin = 1; DamageMax = 1; HitsMin= 100; HitsMax = 100;
StrMin = 100; StrMax = 100; DexMin = 10; DexMax = 10; IntMin = 20; IntMax = 20;
}
}

public class evospiderStageFour : BaseEvoStage
{
public evospiderStageFour()
{
EvolutionMessage = "has evolved";
NextEpThreshold = 3750000; EpMinDivisor = 50; EpMaxDivisor = 40; DustMultiplier = 20;
BaseSoundID = 1170;
BodyValue = 11; ControlSlots = 3; MinTameSkill = 119.9; VirtualArmor = 60;

DamagesTypes = null;
MinDamages = null;
MaxDamages = null;

ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinResistances = new int[5] { 60, 60, 60, 60, 60 };
MaxResistances = new int[5] { 60, 60, 60, 60, 60 };

public override Poison PoisonImmune
{
get
{
return Poison.Lethal;
}
}

DamageMin = 1; DamageMax = 1; HitsMin= 100; HitsMax = 100;
StrMin = 100; StrMax = 100; DexMin = 10; DexMax = 10; IntMin = 120; IntMax = 120;
}
}

public class evospiderStageFive : BaseEvoStage
{
public evospiderStageFive()
{
EvolutionMessage = "has evolved";
NextEpThreshold = 7750000; EpMinDivisor = 160; EpMaxDivisor = 40; DustMultiplier = 20;
BaseSoundID = 594;
BodyValue = 71; VirtualArmor = 70;

DamagesTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinDamages = new int[5] { 100, 50, 50, 50, 50 };
MaxDamages = new int[5] { 100, 50, 50, 50, 50 };

ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinResistances = new int[5] { 80, 80, 80, 80, 80 };
MaxResistances = new int[5] { 80, 80, 80, 80, 80 };

public override Poison PoisonImmune
{
get
{
return Poison.Lethal;
}
}

DamageMin = 5; DamageMax = 5; HitsMin= 100; HitsMax = 100;
StrMin = 100; StrMax = 100; DexMin = 20; DexMax = 20; IntMin = 120; IntMax = 120;
}
}

public class evospiderStageSix : BaseEvoStage
{
public evospiderStageSix()
{
EvolutionMessage = "has evolved";
NextEpThreshold = 15000000; EpMinDivisor = 540; EpMaxDivisor = 480; DustMultiplier = 20;
BodyValue = 152; VirtualArmor = 170;
BaseSoundID = 589;
DamagesTypes = null;
MinDamages = null;
MaxDamages = null;

ResistanceTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinResistances = new int[5] { 98, 98, 98, 98, 98 };
MaxResistances = new int[5] { 98, 98, 98, 98, 98 };

public override Poison PoisonImmune
{
get
{
return Poison.Lethal;
}
}

DamageMin = 5; DamageMax = 5; HitsMin= 100; HitsMax = 100;
StrMin = 100; StrMax = 618; DexMin = 20; DexMax = 87; IntMin = 120; IntMax = 145; }
}

public class evospiderStageSeven : BaseEvoStage
{
public evospiderStageSeven()
{
Title = "Ancient evospider";
EvolutionMessage = "has evolved to its highest form and is now an Ancient evoSpider";
NextEpThreshold = 20000000; EpMinDivisor = 740; EpMaxDivisor = 660; DustMultiplier = 20;
BaseSoundID = 387;
BodyValue = 173; ControlSlots = 4; VirtualArmor = 270;

DamagesTypes = new ResistanceType[5] { ResistanceType.Physical, ResistanceType.Fire, ResistanceType.Cold,
ResistanceType.Poison, ResistanceType.Energy };
MinDamages = new int[5] { 100, 75, 75, 75, 75 };
MaxDamages = new int[5] { 100, 75, 75, 75, 75 };

ResistanceTypes = null;
MinResistances = null;
MaxResistances = null;

public override Poison PoisonImmune
{
get
{
return Poison.Lethal;
}
}


DamageMin = 15; DamageMax = 15; HitsMin= 1350; HitsMax = 1400;
StrMin = 125; StrMax = 907; DexMin = 125; DexMax = 295; IntMin = 125; IntMax = 548;


}
}
}

this is how i put in the code but its still getting posioned
 
Back