RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Evolution Creature System

X

Xanthos

Guest
Evolution Creature System 1.15

Evo Creature System 1.15 Notes, 2/25/06

This system comes with the Evolution dragon, hiyru and mercenary and allows fast and easy creation of new creatures by simply filling in the details of a set of table like structures, one for each stage in the creature's evolution and copying a small set of template classes and replacing the class names with a newly chosen name. It also allows almost anyone to quickly and easily tune evos created under this framework. Unlike other evolution creatures found on the boards timers are not used, resulting in less server lag. This system was not copied from the code of the other evo systems (which all share the same poorly written code base) and therefore is well written and rock solid.

Acknowledgements

This framework is my own design. The idea of the evolution creatures and the shrink system and its features are borrowed from the creative minds of the RunUO forum. I do not know the origin of all of these ideas, however there are a few people whose code I used as a guide to model this system. Most notably are: Ronin GT and Asayre8 for their shrink systems, Raelis for the Evolution Dragon and mating gump, GG521 for the Evolution Hiryu, and Sadoul/Grae for their Evolution Mercenary ideas. Thanks also to Protius73 and bzk90 for their contributions in this thread. Special thanks to Princess Monika for her inspiration and to Thundar for his testing and great ideas. Also thanks to Darcana for contributions changes limiting Evo training.

Features
  • Easy creation of new evolution creatures (a.k.a. Evos), as well as the associated eggs and dust
  • A command (EP) that can be used by players to get the experience points of their Evo
  • Easy tuning of deployed Evos, by admins - no programming experience necessary for most changes
  • Evos can be configured to always remain "Wonderfully Happy" or, without feeding, allow loyalty to decay like other pets
  • Integrated shrink system that works with Evos and any other creature derived from BaseCreature (and BaseMount)
  • Shrink system comes with shrink command, pet leash and hitching post items
  • Shrinking tools can be configured to require zero or more points of taming. They may also be configured to use charges
  • Shrunken pets can optionally show stats, be locked or blessed based on configuration variables
  • The shrinking is fast and error free as it uses the same method as the RunUO stable, placing pets on the internal map with IsStabled set to true
  • The Evos in this system implement only one timer; the pregnancy timer, resulting in less server lag than many other evolution creature designs
  • The Evo system comes with three Evo creatures: Dragon, Hiryu, and Mercenary
  • The system is compatible with RunUO 1.0.0 and requires no changes to the RunUO distro files
  • Easy to install and configure.
Installation

This system is not compatible with other shrink systems as the format of shrunken pets my be different what other systems expect. However, this shrink system will coexist with others allowing you to cut users over to the new shrink system after installation.

For installation, simply place the EVO directory into your customs directory. All shrink system configuration variables are maintained in ShrinkConfig.cs. Configuration of the Evo creatures is done in your derived classes.

How To Create A New Evo
  • 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.
Caveats

You may use or modify this system in any way you desire, however I ask that you leave the original headers in the source files if you redistribute the sources in any way.

Changes in 1.15
  • Fixed a bug introduced in 1.12 that resulted in Evos gaining a stage when trained after a server restart. This release does not reset the Evos to the appropiate stage. Go to this thread to learn how to "repair" the Evos.
  • Added a modified BallOfSummoning that works well with shrunken pets. Delete's the statuette when summoning a shrunken pet. Allows a shrunken pet statuette to be targeted as a link target. Each pet must be unshrunk and then re-shrunken one time before the ball will work properly.
  • The stage at which crafted and artifact items are equipable are now configurable in the Mercenary Spec.
  • The Servant and Avenger titles are now configurable in the Mercenary Spec.
  • A handy new command [Findmobs has been added to the utilities allowing staff to easily find mobiles by name or type. Gump buttons allow the mobs to be summoned or visited quickly without all the steps required using the stock admin interface.
Changes in 1.14
  • Mercenary got a code reduction by relying on a utility method to check for artifact item equip attempts.
  • Changed checking of pack animal types to be consistent with other Xanthos systems; based on fully qualified class name rather than short class name as string.
  • ConfigParser no longer halts shard start-up when a bad value is found in the xml file. Instead it displays the error on the console, leaving the default value untouched.
  • Added a ConfigParser option to halt the shard on bad values in the xml config file.
Changes in 1.13 - 1/25/06
  • Re-fixed the dead pet Auction exploit in a way that does not demand you have Xanthos shrink system. Any shrink system that implements the IShrinkItem interface will do. Xanthos shrink system does implement the IShrinkItem interface.
Changes in 1.12 - 1/14/06
  • A new Training Elemental Deed can be used by players to place a Training Elemental Spawner in a player's home.
  • Mountable evos that produce young prompt, on double click, as to whether the user wants to ride.
  • A configuration option allows Evos to stop gaining off of training elementals at a specified stage.
  • The Shrink System provides support to fix an exploit in version 1.9 of the Auction System.
  • A number of ShrinkSystem parameters are available for configuration in the file ShrinkConfig.xml (place this in your RunUO\Data directory). This allows configuration parameters to be modified without code changes.
  • The package now unzips into a Xanthos directory - keeping the package files within the Xanthos directory in your customs directory is recommended.
Changes in 1.11 - 12/18/05
  • Fixed a bug introduced in 1.10 whereby mercs would not feed themselves and therefore not regain loyalty.
Changes in 1.10 - 12/17/05
  • BaseEvoSpec now has a variable to set the chance for Evos to hatch as female. This is to limit egg production
    capability in the case of breedable Evos and thereby control the population.
  • Added Guardian that are stronger than normal Evos and have a chance to drop eggs/deeds on death.
  • Fixed a problem with Evos not always eating and becoming grumpy and unbonded.
  • Added a command to get the Evo system version from a merc.
  • Took out code that never really worked to change the title of mercs who change masters.
Changes in 1.9 - 11/25/05
  • Evo specific props are modifiable only to admins now
  • Evos now have configurable max resists (defaulted to 90)
  • Allgined BaseEvoMount with the recent changes in BaseEvo
  • A config option allows training ells to be set to not move when spawned
  • Mercs cannot use bows - they are melee AI and they were not consuming arrows (will be addressed in a future release).

See the changelog for the entire list of historical changes.
 

Attachments

  • Utilities 1.2.zip
    6.8 KB · Views: 1,459
  • Evo 1.15.zip
    48.2 KB · Views: 1,660
  • Shrink 1.16.zip
    9.1 KB · Views: 1,378

Darkness_PR

Wanderer
cool thanks this way we can expand all the evos we can lol but the humans are kinda tricky lol but i think they allrdy have an version if im not mistaken
 

Wolf-Avatar

Wanderer
Orcs, and Daemons, and Spiders ... Oh my. *snicker* I was gonna do this on my own using original systems but this should make it lots easier. :) Long range plan is to have HEAPS of different EVO creatures actually spawning out there. Any creatures that you attack but don't kill will be stronger when you go back out to try and get them again. Thanks for the help in that direction.
 

Marak

Sorceror
Oh thats a nice idea (them getting stronger in the field) - were *gradually* building a hellish server(eg harder) and me being a sadistic bastard really like that idea :D id like to see them run and come back with a mate now lol *grin's evilishly*
 

bzk90

Lord
it means that even the mods are sick of the evo this evo that, so if you create an evo script with this, keep it to yourself
 

Shadow82

Sorceror
nooo! work why cant people just put everything in there instead of saying mod this mod that say keep the original just in case or... Be aware if you have custom file THEN you have to change this lol...oh well sounds cool though id love 2 see it heh maybe some screenshots
 

Darkness_PR

Wanderer
Shadow82 said:
nooo! work why cant people just put everything in there instead of saying mod this mod that say keep the original just in case or... Be aware if you have custom file THEN you have to change this lol...oh well sounds cool though id love 2 see it heh maybe some screenshots
why scrn shots =/ it the same as any other evo system =/
 

bzk90

Lord
im going to die if i see a zotos generator for this,
insert mobile stage 1
insert mobile stage 2
etc etc
insert stage 1 stats
insert stage 2 statcs
etc etc
 
X

Xanthos

Guest
Better buy your coffin =) Thats what this framework is. Allowing people to create and manage Evo creatures without a lot of programming expertise - Just plug in the values for your stages and you are off and running.

This framework also has some significant advantages over the currently deployed Evo creatures and shrink systems in that it is much more solid and efficient code, also it has less timers and data overhead for each creature (read less lag).
 

Protius73

Sorceror
I love this system Xanthos. Totally rocks.

But i do have a question. Ive been tryin to mod it to make each stage have a min tame skill to control it. With no success.

Ive tried adding it in with

MinTameSkill = 120;

It compiles fine but doesnt actually work

Ive added a mod in the baseEvoEgg script to change the hues to random colors and that worked out just fine.

Any ideas on how to make the mintameskill work?? I dont want non tamers running around with pocket dragons in their packs heheh
 
X

Xanthos

Guest
I am really glad to hear that Protius73! In addition to adding the MinTameSkill into the BaseEvoStage structure or the BaseEvoSpec class, you will need to use the value in the Evolve method in the BaseEvo class.

One issue to consider is that these pets do not have the happiness timer found in other evo systems - this was by design to reduce server lag. However I am wondering whether that is needed or these pets should behave like tameables that require feeding to keep them happy. I can easily put in a happiness refresh with out adding a timer, I am just not sure if that is the right thing to do. I kind of like the idea of careless pet owners having their pet go wild. Any thoughts on that?

I think this is a great idea. I am just testing the Evo Mercenary now and will add the taming requirement in the stage as well. Any other ideas you have please post. I will have a release with these things and a few other features in a day or two.
 

bzk90

Lord
for the pets gone wild thing, make a toggle switch so those who want can change true to false and vice versa
 

Protius73

Sorceror
OK so far i have added the follow snippets

this was added to the base evo


Code:
				if ( null != stage )
				{
					if ( m_FinalStage == m_Stage )
						Title = spec.FullyEvolvedTitle;

					BaseSoundID		= stage.BaseSoundID;	// need other sounds (anger, etc.)
					Body			= stage.BodyValue;
					VirtualArmor	= stage.VirtualArmor;
					ControlSlots	= stage.ControlSlots;
					Fame			= stage.Fame;
					Karma			= stage.Karma;
					[COLOR=DarkRed]MinTameSkill	= stage.MinTameSkill;[/COLOR]
					m_KpMinDivisor	= stage.KpMinDivisor;
					m_KpMaxDivisor	= stage.KpMaxDivisor;
					m_DustMultiplier  = stage.DustMultiplier;
					m_NextKpThreshold = stage.NextKpThreshold;

This i added to the baseevospec

Code:
	public abstract class BaseEvoStage
	{
		public int NextKpThreshold;
		public int KpMinDivisor;
		public int KpMaxDivisor;
		public int DustMultiplier;

		public int BaseSoundID;
		public int BodyValue;
		public int ControlSlots;
		public int VirtualArmor;		
		public int Fame;
		public int Karma;
		[COLOR=DarkRed]public int MinTameSkill;[/COLOR]

and finally this i added to each stage of the evo dragon

Code:
MinTameSkill = 116;

That solved the control issue for each stage .... i set it to varying levels to make it harder to control the higher it gets in stages. 116 is the highest stage of control... which in essnce gives you 115 taming 115 lore as the min control skill level for that stage.

As for the going wild part... i kinda like the idea of my players having to feed them to prevent them from going wild on them. Makes it more realistic.

I love this system Xanthos... its got alot more control then the one i currently have. Which is why im modding yours to fit my shards needs. I hope you dont mind. =)
 
Top