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!

[RunUO 2.0 RC1] FS: Animal Taming Systems Gen2

Lesdat

Sorceror
stopping breading at a age point for pets

Here is the edit I made to pet leveling to stop breeding at high level.
this allows breeding from lvl 25 - 75 only change those numbers to the levels you want.
HTML:
                                               if ( attacker.Level == 25 )
						{
							attacker.AllowMating = true;
							cm.SendMessage( 1161, "Your pet is now at the level to mate." );
						}
						if ( attacker.Level == 75 )
						{
							attacker.AllowMating = false;
							cm.SendMessage( 1161, "Your pet is now to old to mate." );
						}
 

KnitePrince

Sorceror
Aye, this is what i have, with Hawks Help of course :p


if ( attacker.Level == 10 && attacker.Generation <=10 )
{
attacker.AllowMating = true;
cm.SendMessage( 1161, "Your pet is now at the level to mate." );
}

if (attacker.Level >= 46 || (attacker.Generation >= 11))
{
attacker.AllowMating = false;
cm.SendMessage("Your Pet is too Advanced to Mate!");
}

so they can basically mate from level ten to level 45, and once they hit gen 11 or level 46 they cant mate anymore.. However, that does not stop someone from stabling, or shrinking a pet and using it only for mating at lvl 45, without ever fighting it again, in effect, they now have a pet they can now breed infinitely, meaning for the next bazillion years, and for a Bazzillion times.. as long as they dont go over the level or gen cap... One pair of pets, producing a pair of babys every six days will start off slow.. but , doing the math, breeding every six days (You realize the babys can mate as soon as they are leveled, meaning three to four days not 6) say it takes a line of Frenzies two months of breeding to max out the pets stats through backl breeding etc...
Now, billy bob has a pair of fully maxed Frenzied Ostards, when bred, they will produce a pair of babies that are also max, it takes a day or so to level those babies to breeding level, (In this case level 10) and the babys are also bred, then their babys are bred... if that progression is followed, in 60 days, you would have approximately 2048 MAX Frenzied Ostards on your shard.. ALL capable of breeding, and producing more maxed Frenzies.....
There is no longer a need to tame anything, they will be so plentiful, that the prices will drop to nothing, and since the prices are crap, no one is going to worry about breeding more of anything..

thats what i am talking about when i say this system is very unbalanced, and VERY unfinished..
To somewhat slow this down, I want to limit EVERY pet to only a few breeds, once they have been bred the specified times (two, or three) then that pet can never breed again...
what this will do, will be that the pet breeder, will keep the pets capable of breeding, and sell those that can no longer breed to others for use in fighting... pets will die, pets will lose stats, and people will come and go, creating a market for the non breedable pets, while still not stopping anyone from taming and starting their own breeding program...
by limiting the level to 45, and the generation to 10 It forces the breeders to "backbreed" their pets that have reached max gen, or level to fresh tamed pets in order to keep their lines going, and max pets available to other players. It will keep the prices up as well. It also somewhat discourages those with little or no patience, because it does take a couple of months to get a pet to max level, so "everyone" on your shard wont be producing max pets, it will usually only be the ones that have been, or will be staying for the long run.
its still not balanced with the method above, but it comes a lot closer.. hope I explained that well :)
 

Lesdat

Sorceror
limiting breading

Okay this compiles but not fully tested.
in base creature find all places it has Level and add these edits.
this should stop breeding at 5 babies.
HTML:
private int m_Level = 1;
		private int m_MaxLevel;
		private int m_Babies =0;//<---------------------add
HTML:
		[CommandProperty( AccessLevel.GameMaster )]
		public int Level
		{
			get{ return m_Level; }
			set{ m_Level = value; }
		}
		[CommandProperty( AccessLevel.GameMaster )]//<<<<<<<<<<<add this
		public int Babies                                                        //<<<<<<<<<<<add this
		{                                                                                   //<<<<<<<<<<<add this
			get{ return m_Babies; }                                     //<<<<<<<<<<<add this
			set{ m_Babies = value; }                                     //<<<<<<<<<<<add this
		}
HTML:
                       writer.Write( (int) m_Level );
			writer.Write( (int) m_Babies );
			writer.Write( (int) m_MaxLevel );              //<<<<<<<<<<<add this
HTML:
                                m_Level = reader.ReadInt();
				m_Babies = reader.ReadInt();               //<<<<<<<<<<<add this
				m_MaxLevel = reader.ReadInt();
In breedingacceptincgump make this change
HTML:
if ( bc1 != null || bc2 != null )
					{
						bc1.MatingDelay = DateTime.Now + TimeSpan.FromHours( 144.0 );
						bc1.Babies = +1		;		 //<<<<<<<<<<<add this		
						bc2.MatingDelay = DateTime.Now + TimeSpan.FromHours( 144.0 );
						bc2.Babies = +1	;                        //<<<<<<<<<<<add this
					}
				}
and in petleveling make this addition
HTML:
if ( attacker.Level == 25 )
						{
							attacker.AllowMating = true;
							cm.SendMessage( 1161, "Your pet is now at the level to mate." );
						}
						if ( attacker.Level == 75 )
						{
							attacker.AllowMating = false;
							cm.SendMessage( 1161, "Your pet is now to old to mate." );
						}
						if ( attacker.Babies == Utility.RandomMinMax( 7, 13))//<<<<<<<<<<<add this limits number of babies to random 7 -13
						{                                           //<<<<<<<<<<<add this
					attacker.AllowMating = false;  //<<<<<<<<<<<add this
cm.SendMessage( 1161, "Your pet has become Sterile and can not mate." );//<<<<<<<<<<<add this
						}//<<<<<<<<<<<add this
 

KnitePrince

Sorceror
hmm... I tried that now when i try to start the server its asking me to delete type Server.Mobiles.Weaver..


Code:
RunUO - [www.runuo.com] Version 2.0, Build 2357.32527
Core: Running on .NET Framework Version 2.0.50727
Core: Optimizing for 2 processors
Scripts: Compiling C# scripts...done (cached)
Scripts: Compiling VB.NET scripts...no files found.
Scripts: Verifying...done (2601 items, 743 mobiles)
Regions: Loading...done
World: Loading...An error was encountered while loading a saved object
 - Type: Server.Mobiles.Weaver
 - Serial: 0x00000041
Delete the object? (y/n)


ok, ive gone back through this twice, making sure i added everything correctly, and cant find any screwups, so i edited out what I added and the server starts fine.


I am guessing this is trying to make all non player mobiles breedable and the NPC vendors (females probably) are objecting to it.. am i close? lol
 

Lesdat

Sorceror
deleating your weaver

it is wanting to delete it because the sierilization has changed. so all mobiles that need the new settings need to be deleted. now If I remember there was an issue similar with lucids advance archery. and if you loaded the world applied changes to the server. saved and reboot. i think it would not delete the bows but if you just made changes to a server and started it it would delete all bows in existence.

but then again not sure. I just deleate and start over..
 

KnitePrince

Sorceror
I dont mind as long as it stops at the vendors.. have testers in running about atm, will wait till later and make a backup, then give it a go and see what happens.. have been fussing with getting it to show up in the above mentioned list in petleveling, that will keep me busy while i wait :)
 

Lesdat

Sorceror
deleting mobiles on serilization

It should not effect the vendors, but it should delete every levelable mobile on the shard. so every dog cat bird etc. but not the vendors.
 

KnitePrince

Sorceror
Everyone, should spend 2 hours deleting every mobile they have one by one :p

when a pet is propsed.. it shows the babies in the props menu, which i am assuming means the amount they can have, but they all say 0

private int m_Babies =0;

I just created new pets and leveled them, and said 0 babies in props before i started and after they were leveled to over 20... but they bred successfully...
I tied to add the number of breeds to the ShrinkItem list list.Add("This pet can breed {0} times", m-Babies);
also tried
if ( m_Babies >=1)
list.Add("{0} can breed {1} times.", m_PetName, m_Babies);
both came up with the error m_Babies does not exist in the current context, so I am not sure to tell how many breeds they have...
i also set breeds at (1, 3) in the utility random statement....
 

KnitePrince

Sorceror
I am only guessing looking at this, but doesnt there need to be a "gain" somewhere? like at level 10 when allowmating is switched to true
if (allowMating == true)
attacker.Babies == Utility.RandomMinMax (1, 3);

or
if (attacker.Level >= 10 etc..
I know that probably shows my ignorance but was worth a try :p
at level 0 and with the allow mating false statement it shouldnt even allow the mating button to pop up, but as soon as they hit lvl 10 it does pop up.
I will paste in my petleveling.cs so you can see what Ive done;


Code:
using System;
using Server;
using Server.Mobiles;

namespace Server
{
	public class PetLeveling
	{
		public static void DoDeathCheck( BaseCreature from )
		{
			Mobile cm = from.ControlMaster;

			if ( cm != null && from.Controlled == true && from.Tamable == true )
			{
				if ( from.IsBonded == true )
				{
					if ( Utility.Random( 100 ) < 5 )
					{
						int strloss = from.Str / 20;
						int dexloss = from.Dex / 20;
						int intloss = from.Int / 20;
						int hitsloss = from.Hits / 20;
						int stamloss = from.Stam / 20;
						int manaloss = from.Mana / 20;
						int physloss = from.PhysicalResistance / 20;
						int fireloss = from.FireResistance / 20;
						int coldloss = from.ColdResistance / 20;
						int energyloss = from.EnergyResistance / 20;
						int poisonloss = from.PoisonResistance / 20;
						int dminloss = from.DamageMin / 20;
						int dmaxloss = from.DamageMax / 20;

						if ( from.Str > strloss )
							from.Str -= strloss;

						if ( from.Str > dexloss )
							from.Dex -= dexloss;

						if ( from.Str > intloss )
							from.Int -= intloss;
						
						if ( from.HitsMaxSeed > hitsloss )
							from.HitsMaxSeed -= hitsloss;
						if ( from.StamMaxSeed > stamloss )
							from.StamMaxSeed -= stamloss;
						if ( from.ManaMaxSeed > manaloss )
							from.ManaMaxSeed -= manaloss;

						if ( from.PhysicalResistanceSeed > physloss )
							from.PhysicalResistanceSeed -= physloss;
						if ( from.FireResistSeed > fireloss )
							from.FireResistSeed -= fireloss;
						if ( from.ColdResistSeed > coldloss )
							from.ColdResistSeed -= coldloss;
						if ( from.EnergyResistSeed > energyloss )
							from.EnergyResistSeed -= energyloss;
						if ( from.PoisonResistSeed > poisonloss )
							from.PoisonResistSeed -= poisonloss;

						if ( from.DamageMin > dminloss )
							from.DamageMin -= dminloss;

						if ( from.DamageMax > dmaxloss )
							from.DamageMax -= dmaxloss;

						cm.SendMessage( 38, "Your pet has suffered a 5% stat lose due to its untimely death." );
					}

					cm.SendMessage( 64, "Your pet has been killed!" );
				}
				else
				{
					cm.SendMessage( 64, "Your pet has been killed!" );
				}
			}
		}

		public static void DoBioDeath( BaseCreature from )
		{
			Mobile cm = from.ControlMaster;

			if ( cm != null && from.Controlled == true && from.Tamable == true )
			{
				if ( from.IsBonded == true )
				{
					if ( Utility.Random( 1000 ) < 5 )
					{
						int strloss = from.Str / 20;
						int dexloss = from.Dex / 20;
						int intloss = from.Int / 20;
						int hitsloss = from.Hits / 20;
						int stamloss = from.Stam / 20;
						int manaloss = from.Mana / 20;
						int physloss = from.PhysicalResistance / 20;
						int fireloss = from.FireResistance / 20;
						int coldloss = from.ColdResistance / 20;
						int energyloss = from.EnergyResistance / 20;
						int poisonloss = from.PoisonResistance / 20;
						int dminloss = from.DamageMin / 20;
						int dmaxloss = from.DamageMax / 20;

						if ( from.Str > strloss )
							from.Str -= strloss;

						if ( from.Str > dexloss )
							from.Dex -= dexloss;

						if ( from.Str > intloss )
							from.Int -= intloss;
						
						if ( from.HitsMaxSeed > hitsloss )
							from.HitsMaxSeed -= hitsloss;
						if ( from.StamMaxSeed > stamloss )
							from.StamMaxSeed -= stamloss;
						if ( from.ManaMaxSeed > manaloss )
							from.ManaMaxSeed -= manaloss;

						if ( from.PhysicalResistanceSeed > physloss )
							from.PhysicalResistanceSeed -= physloss;
						if ( from.FireResistSeed > fireloss )
							from.FireResistSeed -= fireloss;
						if ( from.ColdResistSeed > coldloss )
							from.ColdResistSeed -= coldloss;
						if ( from.EnergyResistSeed > energyloss )
							from.EnergyResistSeed -= energyloss;
						if ( from.PoisonResistSeed > poisonloss )
							from.PoisonResistSeed -= poisonloss;

						if ( from.DamageMin > dminloss )
							from.DamageMin -= dminloss;

						if ( from.DamageMax > dmaxloss )
							from.DamageMax -= dmaxloss;

						cm.SendMessage( 38, "Your pet has suffered a 5% stat lose due to its untimely death." );
					}

					cm.SendMessage( 64, "Your pet has been killed!" );
				}
				else
				{
					cm.SendMessage( 64, "Your pet has been killed!" );
				}
			}
		}

		public static void DoEvoCheck( BaseCreature attacker )
		{
			if ( attacker.Str >= 20 )
				attacker.Str += attacker.Str / 20;
			else
				attacker.Str += 1;

			if ( attacker.Dex >= 20 )
				attacker.Dex += attacker.Dex / 20;
			else
				attacker.Dex += 1;

			if ( attacker.Int >= 20 )
				attacker.Int += attacker.Int / 20;
			else
				attacker.Int += 1;
		}

		public static void DoLevelBonus( BaseCreature attacker )
		{
			int chance = Utility.Random( 100 );
			
			if ( chance < 35 )
			{
				attacker.Str += Utility.RandomMinMax( 1, 3 );
				attacker.Dex += Utility.RandomMinMax( 1, 3 );
				attacker.Int += Utility.RandomMinMax( 1, 3 );
			}
		}

		public static void CheckLevel( Mobile defender, BaseCreature attacker, int count )
		{
			bool nolevel = false;
			Type typ = attacker.GetType();
			string nam = attacker.Name;

			foreach ( string check in FSATS.NoLevelCreatures )
			{
  				if ( check == nam )
    					nolevel = true;
			}

			if ( nolevel != false )
				return;

			int expgainmin, expgainmax;

			if ( attacker is BaseBioCreature || attacker is BioCreature || attacker is BioMount )
			{
			}
			else if ( defender is BaseCreature )
			{
				if ( attacker.Controlled == true && attacker.ControlMaster != null && attacker.Summoned == false )
				{
					BaseCreature bc = (BaseCreature)defender;

					expgainmin = bc.HitsMax * 200;
					expgainmax = bc.HitsMax * 250;

					int xpgain = Utility.RandomMinMax( expgainmin, expgainmax );
					
					if ( count > 1 )
						xpgain = xpgain / count;

					if ( attacker.Level <= attacker.MaxLevel - 1 )
					{
						attacker.Exp += xpgain;
						attacker.ControlMaster.SendMessage( "Your pet has gained {0} experience points.", xpgain );
					}
			
					int nextLevel = attacker.NextLevel * attacker.Level;

					if ( attacker.Exp >= nextLevel && attacker.Level <= attacker.MaxLevel - 1 )
					{
						DoLevelBonus( attacker );

						Mobile cm = attacker.ControlMaster;
						attacker.Level += 1;
						attacker.Exp = 0;
						attacker.FixedParticles( 0x373A, 10, 15, 5012, EffectLayer.Waist );
						attacker.PlaySound( 503 );
						cm.SendMessage( 38, "Your pets level has increased to {0}.", attacker.Level );

						int gain = Utility.RandomMinMax( 6, 8 );

						attacker.AbilityPoints += gain;

						if ( attacker.ControlMaster != null )
						{
							//attacker.ControlMaster.SendMessage( 38, "Your pet {0} has gained some ability points.", gain );
                            attacker.ControlMaster.SendMessage(38, "Your pet {0} has gained {1} ability points.", attacker.Name, gain);
						}
                                          [COLOR="DarkGreen"]  // added to cap level and Gen for mating
						if ( attacker.Level == 10 && attacker.Generation <=10 )
						{
							attacker.AllowMating = true;
							cm.SendMessage( 1161, "Your pet is now at the level to mate." );
						}
                        
                        if (attacker.Level >= 46 || (attacker.Generation >= 11))
                        {
                            attacker.AllowMating = false;
                            cm.SendMessage("Your Pet is too Advanced to Mate!");[/COLOR]
                        }  
                 [COLOR="Red"]// added to cap the amount of times a pet can breed
                        if (attacker.Babies == Utility.RandomMinMax(1,3))
                        {
                            attacker.AllowMating = false;
                           cm.SendMessage("Your pet {0} Can no longer mate.", attacker.Name);
                        }[/COLOR]
						if ( attacker.Evolves == true )
						{
							if ( attacker.UsesForm1 == true && attacker.F0 == true )
							{
								DoEvoCheck( attacker );

								attacker.BodyValue = attacker.Form1;
								attacker.BaseSoundID = attacker.Sound1;
								attacker.F1 = true;
								attacker.F2 = false;
								attacker.F3 = false;
								attacker.F4 = false;
								attacker.F5 = false;
								attacker.F6 = false;
								attacker.F7 = false;
								attacker.F8 = false;
								attacker.F9 = false;
								attacker.UsesForm1 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( attacker.UsesForm2 == true && attacker.F1 == true )
							{
								DoEvoCheck( attacker );

								attacker.BodyValue = attacker.Form2;
								attacker.BaseSoundID = attacker.Sound2;
								attacker.F1 = false;
								attacker.F2 = true;
								attacker.F3 = false;
								attacker.F4 = false;
								attacker.F5 = false;
								attacker.F6 = false;
								attacker.F7 = false;
								attacker.F8 = false;
								attacker.F9 = false;
								attacker.UsesForm2 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( attacker.UsesForm3 == true && attacker.F2 == true )
							{
								DoEvoCheck( attacker );

								attacker.BodyValue = attacker.Form3;
								attacker.BaseSoundID = attacker.Sound3;
								attacker.F1 = false;
								attacker.F2 = false;
								attacker.F3 = true;
								attacker.F4 = false;
								attacker.F5 = false;
								attacker.F6 = false;
								attacker.F7 = false;
								attacker.F8 = false;
								attacker.F9 = false;
								attacker.UsesForm3 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( attacker.UsesForm4 == true && attacker.F3 == true )
							{
								DoEvoCheck( attacker );

								attacker.BodyValue = attacker.Form4;
								attacker.BaseSoundID = attacker.Sound4;
								attacker.F1 = false;
								attacker.F2 = false;
								attacker.F3 = false;
								attacker.F4 = true;
								attacker.F5 = false;
								attacker.F6 = false;
								attacker.F7 = false;
								attacker.F8 = false;
								attacker.F9 = false;
								attacker.UsesForm4 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( attacker.UsesForm5 == true && attacker.F4 == true )
							{
								DoEvoCheck( attacker );

								attacker.BodyValue = attacker.Form5;
								attacker.BaseSoundID = attacker.Sound5;
								attacker.F1 = false;
								attacker.F2 = false;
								attacker.F3 = false;
								attacker.F4 = false;
								attacker.F5 = true;
								attacker.F6 = false;
								attacker.F7 = false;
								attacker.F8 = false;
								attacker.F9 = false;
								attacker.UsesForm5 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( attacker.UsesForm6 == true && attacker.F5 == true )
							{
								DoEvoCheck( attacker );

								attacker.BodyValue = attacker.Form6;
								attacker.BaseSoundID = attacker.Sound6;
								attacker.F1 = false;
								attacker.F2 = false;
								attacker.F3 = false;
								attacker.F4 = false;
								attacker.F5 = false;
								attacker.F6 = true;
								attacker.F7 = false;
								attacker.F8 = false;
								attacker.F9 = false;
								attacker.UsesForm6 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( attacker.UsesForm7 == true && attacker.F6 == true )
							{
								DoEvoCheck( attacker );

								attacker.BodyValue = attacker.Form7;
								attacker.BaseSoundID = attacker.Sound7;
								attacker.F1 = false;
								attacker.F2 = false;
								attacker.F3 = false;
								attacker.F4 = false;
								attacker.F5 = false;
								attacker.F6 = false;
								attacker.F7 = true;
								attacker.F8 = false;
								attacker.F9 = false;
								attacker.UsesForm7 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( attacker.UsesForm8 == true && attacker.F7 == true )
							{
								DoEvoCheck( attacker );

								attacker.BodyValue = attacker.Form8;
								attacker.BaseSoundID = attacker.Sound8;
								attacker.F1 = false;
								attacker.F2 = false;
								attacker.F3 = false;
								attacker.F4 = false;
								attacker.F5 = false;
								attacker.F6 = false;
								attacker.F7 = false;
								attacker.F8 = true;
								attacker.F9 = false;
								attacker.UsesForm8 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( attacker.UsesForm9 == true && attacker.F8 == true )
							{
								DoEvoCheck( attacker );

								attacker.BodyValue = attacker.Form9;
								attacker.BaseSoundID = attacker.Sound9;
								attacker.F1 = false;
								attacker.F2 = false;
								attacker.F3 = false;
								attacker.F4 = false;
								attacker.F5 = false;
								attacker.F6 = false;
								attacker.F7 = false;
								attacker.F8 = false;
								attacker.F9 = true;
								attacker.UsesForm9 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}	
						}
					}
				}
			}
		}
	}
}
 

Lesdat

Sorceror
okay it looks like you have it up to ..
allow breeding if level 10 - 43 if under gen 10
but you are also saying that if babies random 1-3 set false so they will only be able to have 1-3 babies.

now the reason all the babies is set to 0 at fist is cause no one has a baby. now in the breeding gump where it set the timer for breeding gump to 144 I think.it adds the baby count +1. not sure if that is where it should go but that was the only spot I saw that ref. the bc1 and bc2 and did something to just them.
so according to your set up after they breed if what I have done works. you will breed then check babies and it should reed babies 1 then your random will kick in and maybe let them breed again or it will set to false.
 

KnitePrince

Sorceror
oooooh, so it reads babies that it has HAD.. so, I may be better off setting the amount of babies to a fixed amount, like two, so I can make it show on the list, and when it hits two do an allowmating false to remove the button.. one way or the other I need to let the owners, and possible Purchasers know whats what on a pet, in this case, how many breedings it has (Or hasnt).. so if its set to a static number I can just tell them "IT HAS TWO" and if their list says 1 they know they have 1 left....
Ive got a family thing to go to, will tinker with it tonight :)
 

KnitePrince

Sorceror
I tried adding, list.Add( 1060663, "Mating Delay {0}", totaldays ); as hawk suggested, and it still shows nothing, so I attempted a straight up,
list.Add("Mating Delay {0}", m_MatingDelay);
and
list.Add(1060663,"Mating Delay {0}", m_MatingDelay);

that causes insta crash as soon as i try to log in..

the two things that remain for me to call this finished is adding the mating delay (if there is one), and the "amount" of babies remaining, that a pet can still have to the tooltip list in shrinkItem.cs
When bred, a pet does show that it has 1 babies in the props window, but as far as I can tell there is no way to determine what the utility.Random (1, 3) has assigned the pet...
 

KnitePrince

Sorceror
list.Add( 1061640, (m_PetOwner == null ) ? "nobody" : m_PetOwner.Name ); // Owner: ~1_OWNER~
list.Add(1060659, "Stats\tStr {0}, Dex {1}, Int {2}, Hits {3}, Stam {4}, Mana {5}", m_PetStr, m_PetDex, m_PetInt, m_PetHits, m_PetStam, m_PetMana);
list.Add( 1060660, "Combat Skills\tWrestling {0}, Tactics {1}, Anatomy {2}, Poisoning {3}", m_PetWrestling, m_PetTactics, m_PetAnatomy, m_PetPoisoning );
list.Add( 1060661, "Magic Skills\tMagery {0}, Eval Intel {1}, Magic Resist {2}, Meditation {3}", m_PetMagery, m_PetEvalInt, m_PetResist, m_PetMed );
//if ( m_Babies >= 1)
// list.Add("{0} can breed {1} times.", m_PetName, m_Babies);// returns m-Babies does not exist etc

if ( m_Level != 0 )
list.Add(1060662, "Level\t {0}, Max Level {1} Gen {2} Resists: Phys {3} Cold {4} Fire {5} Poison {6} Energy {7}", m_Level, m_MaxLevel, m_Gen, m_PetPhysicalResist, m_PetColdResist, m_PetFireResist, m_PetPoisonResist, m_PetEnergyResist);
//list.Add("This pet can breed {0} times", m_Babies);// also returns m_Babies does not exist etc
// list.Add("Mating Delay\t {0}", m_Mob.MatingDelay);// insta crash on login, shard starts fine but cannot log in

TimeSpan ts = TimeSpan.Zero;

if (DateTime.Compare(MatingDelay, DateTime.Now) > 0)
ts = DateTime.Now - MatingDelay;

if (ts.TotalDays > 0)
list.Add(1060662, "Mating Delay\t {0}", (int)ts.TotalDays);// have tried numerous things here, but nothing seems to get this to show on the list. I even comented out the original line with the 1060662 number and it still does not show.



Also, Since m_Babies only shows the babies already delivered / bred I would have to guess that it is what it would show in the list as well, I need it to show what the utility statement decided to give the pet, that, or set the number static and just make it known that pets can only have 2 babies each, and when the number on the list reaches 2 they are done... The previous method is prefered, the second will work.
I am talking to a couple of Scripters, so hopefully soon I can harrass them with my lack of knowledge instead of you guys :)

Edit.., I already have pages wanting to know WHY their pets wont breed :( Need to figure this out
 

wlrdwawoolard

Sorceror
Errors:
+ Mobiles/Vendors/NPC/Blacksmith.cs:
CS0115: Line 125: 'Server.Mobiles.Blacksmith.OnSuccessfulBulkOrderReceive(Se
rver.Mobile)': no suitable method found to override
+ Mobiles/Vendors/NPC/Tailor.cs:
CS0115: Line 74: 'Server.Mobiles.Tailor.OnSuccessfulBulkOrderReceive(Server.
Mobile)': no suitable method found to override
+ Mobiles/Vendors/NPC/Weaponsmith.cs:
CS0115: Line 92: 'Server.Mobiles.Weaponsmith.OnSuccessfulBulkOrderReceive(Se
rver.Mobile)': no suitable method found to override
+ Mobiles/Vendors/NPC/Weaver.cs:
CS0115: Line 74: 'Server.Mobiles.Weaver.OnSuccessfulBulkOrderReceive(Server.
Mobile)': no suitable method found to override
+ Mobiles/Vendors/GenericBuy.cs:
CS0535: Line 9: 'Server.Mobiles.GenericBuyInfo' does not implement interface
member 'Server.IBuyItemInfo.GetObject()'
Scripts: One or more scripts failed to compile or no script files were found.
- Press return to exit, or R to try again.


why am i getting this error i just simple add and replace the distros with the files given
 

KnitePrince

Sorceror
Hawkins;795285 said:
You need to find out one of the sub-folders "Taming" within which there are alot of .cfg files. And you need to place this folder under the \Data\Bulk Orders, along with the "BlackSmith" and "Tailoring" folders.

Already answered by hawk about three pages back :D

yes i did the same thing so hush
 

garathzz

Wanderer
im trying this on a fresh Version 2.0 RC2
i extracted the folders to \Scripts\Customs
i MOVED the Taming folder out and into \Data\Bulk Orders
i moved the files in the Distro folder to their respective places, where the file names already exsisted

i get these compile errors:
Code:
ScriptCompiler: CS0115: 'Server.Mobiles.Ridgeback.GetControlChance(Server.Mobile, bool)': no suitable method found to override
ScriptCompiler: CS0115: 'Server.Mobiles.SavageRidgeback.GetControlChance(Server.Mobile, bool)': no suitable method found to override
ScriptCompiler: CS0115: 'Server.Mobiles.ScaledSwampDragon.GetControlChance(Server.Mobile, bool)': no suitable method found to override
ScriptCompiler: CS0115: 'Server.Mobiles.SwampDragon.GetControlChance(Server.Mobile, bool)': no suitable method found to override
ScriptCompiler: CS0115: 'Server.Mobiles.BladeSpirits.GetFightModeRanking(Server.Mobile, Server.Mobiles.FightMode, bool)': no suitable method found to override
ScriptCompiler: CS0115: 'Server.Mobiles.EnergyVortex.GetFightModeRanking(Server.Mobile, Server.Mobiles.FightMode, bool)': no suitable method found to override
ScriptCompiler: CS0115: 'Server.Mobiles.FireBeetle.GetControlChance(Server.Mobile, bool)': no suitable method found to override
ScriptCompiler: CS0115: 'Server.Mobiles.Blacksmith.OnSuccessfulBulkOrderReceive(Server.Mobile)': no suitable method found to override
ScriptCompiler: CS0115: 'Server.Mobiles.Tailor.OnSuccessfulBulkOrderReceive(Server.Mobile)': no suitable method found to override
ScriptCompiler: CS0115: 'Server.Mobiles.Weaponsmith.OnSuccessfulBulkOrderReceive(Server.Mobile)': no suitable method found to override
ScriptCompiler: CS0115: 'Server.Mobiles.Weaver.OnSuccessfulBulkOrderReceive(Server.Mobile)': no suitable method found to override
ScriptCompiler: CS0535: 'Server.Mobiles.GenericBuyInfo' does not implement interface member 'Server.IBuyItemInfo.GetObject()'
done (0 errors, 0 warnings)

what am i doing wrong?
 

Greystar

Wanderer
KnitePrince;800046 said:
Read back to page 18 and 19, same errors, and I think a referance to a much earlier post as well for a possible fix.

Just to let you know mentioning a page # is useless... for instance this post you made is on Page 14 for me.
 

Zero_Ghost

Sorceror
Hi, I'm having some problem too, i did change the Dstros and then i got that:






Those are the same errors (Basically) that almost everyone had. I've read all the post and i didnt find anything to fix it

Edit: I Fixed everything until it get to the BladeSpirits.cs
 

Greystar

Wanderer
This is/was a good system during it's day and CAN still work for RC2 however DO NOT Replace RC2 files with RC1 files, use a utility like WinMerge to merge the Differences Ronin added to the Distro files. Otherwise it will give you a headache.

I used to use this on a production shard and eventually plan on adding it to my private shard for something additional to do.

PS) No my shard will never be public again so don't ask what the IP address is.
 
Top