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] Daat99 OWLTR Update for 2.0 w/caveat

Lokai

Knight
Daat99 OWLTR Update for RunUO 2.0 (Supports FSAT Gen2!)

Daat99's Custom OWLTR for RunUO 2.0 RC1.
by Lokai

Now updated and organized for use with FS Animal Taming Gen2.
Scripts folder contains all files needed to add/replace for this system.
NOTE: Implies that you already have FS Animal Taming Gen2. If not, this may not work for you.

Installation:

1. BACKUP your existing RunUO Folder (not just the Scripts!)
2. Copy this Scripts folder to your RunUO installation folder. When prompted choose "Yes" or "Yes to All" to overwrite existing files.
3. Restart the server.

Uninstall:

1. Restore your original RunUO Folder.
2. Restart the server.

Updates:

5/20/2008
Re-uploaded all files.
Main Zip file includes ALL OTHER PATCHES, so you only need that one file, unless you are just looking for one of the others specifically.

11/17/2006
Added Patch for ML Resources randomly dropping when harvesting.

10/19/2006
corbingene01 updated docs.cs to work with this system. THANKS! I have posted the script here.

9/16/2006
Updated SmallBOD.cs to include check for BaseWeapon in EndCombine(). Thanks, merin.
8/3/2006
Updated ChampionSpawn.cs to include spawns for Sleeping Dragon. Thanks, DebbieDoo, for stumbling on this one. ;)
Oops. Fixed last update. I had not incremented [7] to [8]. Done now.
7/11/2006
OWLTR gump now includes new options for the Trash for Tokens system. Lady Luck carries the variables.
1. TrashGoldOK - Bool - If set to False, prevents bag from being used to carry Gold.
2. TrashTokensOK - Bool - If set to False, prevents players from trashing Tokens, TokenChecks, the TokenLedger, and LootTokenChecks.
3. SafeBagMinutes - Int - Sets the amount of time before Trash is emptied.
4. SafeBagWeightPercent - Int - Sets the Percentage of Weight reduced by the bag. 0 = normal bag, 100 = items in bag weigh nothing.
When these variables are set, the change is Global, and no restart is required.

7/15/2006
Updated files for FS Animal Taming Gen2 (BaseCreature)

I announced this update on the Forums about a week before posting, so hopefully I am not stepping on any toes with this. Here is the link:
[2.0] Daat99 OWLTR update...sort of... - RunUO - Ultima Online Emulation
 

Attachments

  • Daat99s OWLTR RunUO 2.0 RC1.zip
    371.6 KB · Views: 1,102
  • SmallBOD.cs
    13.1 KB · Views: 311
  • ChampionSpawn.cs
    25.2 KB · Views: 377
  • Stealth.cs
    2.9 KB · Views: 289
  • ML Resources Patch.zip
    18 KB · Views: 480
  • Docs.cs
    93.3 KB · Views: 332

Warmonkey

Wanderer
doesnt work. 2 problems. first, using Server. Scripts. Commands in Crafting recipe is error, i just took out the scripts and that bypassed it, dunno if that affects anything. Secondly, your own basecreature doesnt include the new powermoves for the gen2 taming system, so cant compile
 

Lokai

Knight
Warmonkey said:
doesnt work. 2 problems. first, using Server. Scripts. Commands in Crafting recipe is error, i just took out the scripts and that bypassed it, dunno if that affects anything.

Strange, I do not get an error about this one.


Warmonkey said:
Secondly, your own basecreature doesnt include the new powermoves for the gen2 taming system, so cant compile

Unfortunately, I did not get gen2 prior to all the work I did, so you will need to merge those changes in.

If anyone can use this, and add the gen2 updates, I would appreciate it. I will try to help with any errors.
 

Carlosos

Wanderer
I get the same error about the Server.Scripts.Commands
This was used by RunUO 1.0 but now has to be changed to:
Code:
using Server.Commands;
on line 18 in Crafting Recipe.cs instead of
Code:
using Server.Scripts.Commands;
 

Warmonkey

Wanderer
theres too merging to do. too many files need to be edited to get gen2 to work, at least for me anywayz cuz im not scripter etc etc. if you do a version with gen2 aswell that would be class :)
 

Lokai

Knight
Warmonkey said:
theres too merging to do. too many files need to be edited to get gen2 to work, at least for me anywayz cuz im not scripter etc etc. if you do a version with gen2 aswell that would be class :)

I will see what I can do. :eek: I was afraid this would happen for many people, which was why I tried to get feedback prior to releasing it.

I know at least one shard that installed this prior to the release of Gen2, and had no problems. If I get the time, I will work toward updating it for Gen2.

Of course, by then Gen3 will be out, and I will be in the same boat.... :rolleyes:
 

Lokai

Knight
I think I got it!

I successfully updated the scripts for FSAT Gen2.

See the first Post for updated download.

:D
 

Carlosos

Wanderer
I think you might be missing something in the basecreature.cs to get the "FS Animal Taming Gen2" system to work with the OWLTR script except if you were able to put it into another file which I didn't check :)
Below:
Code:
if ( version >= 14 )
			{
				m_RemoveIfUntamed = reader.ReadBool();
				m_RemoveStep = reader.ReadInt();
			}
you should still have
Code:
	if( version <= 14 && m_Paragon && Hue == 0x31 )
			{
				Hue = Paragon.Hue; //Paragon hue fixed, should now be 0x501.
			}

			CheckStatTimers();

			ChangeAIType(m_CurrentAI);

			AddFollowers();

			if ( IsAnimatedDead )
				Spells.Necromancy.AnimateDeadSpell.Register( m_SummonMaster, this );

and below:
Code:
public virtual bool DeleteOnRelease{ get{ return m_bSummoned; } }
you are missing
Code:
//Advanced Pet System
		public void DoDeathCheck()
		{
			Mobile cm = this.ControlMaster;

			if ( cm != null && this.Controlled == true && Tamable == true )
			{
				if ( this.IsBonded == true )
				{
					if ( this.AbilityPoints >= 0 && Utility.Random( 100 ) < 25 )
					{
						this.AbilityPoints = this.AbilityPoints / 2;
						cm.SendMessage( 38, "Your pet has lost half of thier ability points due to its untimely death." );
					}
					else if ( this.Exp >= 0 && Utility.Random( 100 ) < 25 )
					{
						this.Exp = this.Exp / 2;
						cm.SendMessage( 38, "Your pet has lost half of thier exp due to its untimely death." );
					}
					else if ( Utility.Random( 100 ) < 25 )
					{
						int strloss = this.Str / 20;
						int dexloss = this.Dex / 20;
						int intloss = this.Int / 20;
						int hitsloss = this.Hits / 20;
						int stamloss = this.Stam / 20;
						int manaloss = this.Mana / 20;
						int physloss = this.PhysicalResistance / 20;
						int fireloss = this.FireResistance / 20;
						int coldloss = this.ColdResistance / 20;
						int energyloss = this.EnergyResistance / 20;
						int poisonloss = this.PoisonResistance / 20;
						int dminloss = this.DamageMin / 20;
						int dmaxloss = this.DamageMax / 20;

						this.Str -= strloss;
						this.Dex -= dexloss;
						this.Int -= intloss;
						
						if ( this.HitsMaxSeed >= 0 )
							this.HitsMaxSeed -= hitsloss;
						if ( this.StamMaxSeed >= 0 )
							this.StamMaxSeed -= stamloss;
						if ( this.ManaMaxSeed >= 0 )
							this.ManaMaxSeed -= manaloss;

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

						this.DamageMin -= dminloss;
						this.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 void DoBioDeath()
		{
			Mobile cm = this.ControlMaster;

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

						this.Str -= strloss;
						this.Dex -= dexloss;
						this.Int -= intloss;
						
						if ( this.HitsMaxSeed >= 0 )
							this.HitsMaxSeed -= hitsloss;
						if ( this.StamMaxSeed >= 0 )
							this.StamMaxSeed -= stamloss;
						if ( this.ManaMaxSeed >= 0 )
							this.ManaMaxSeed -= manaloss;

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

						this.DamageMin -= dminloss;
						this.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 void CheckLevel( Mobile defender )
		{
			int expgainmin, expgainmax;

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

					expgainmin = 5 + ( bc.HitsMax ) / 10;
					expgainmax = 5 + ( bc.HitsMax ) / 5;

					if ( m_Level <= m_MaxLevel - 1 )
						m_Exp += Utility.RandomList( expgainmin, expgainmax );
			
					int nextLevel = m_NextLevel * m_Level;

					if ( m_Exp >= nextLevel && m_Level <= m_MaxLevel - 1 )
					{
						Mobile cm = this.ControlMaster;
						m_Level += 1;
						m_Exp = 0;
						this.FixedParticles( 0x373A, 10, 15, 5012, EffectLayer.Waist );
						this.PlaySound( 503 );
						cm.SendMessage( 38, "Your pets level has increased to {0}.", m_Level );

						int gain = Utility.RandomList( 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6 );

						int random = Utility.Random( 100 );

						if ( random < 2 )
							gain = gain * 10;
						else if ( random < 4 )
							gain = gain * 5;
						else if ( random < 6 )
							gain = gain * 4;
						else if ( random < 8 )
							gain = gain * 3;
						else if ( random < 10 )
							gain = gain * 2;
						//else
							//gain = gain;

						this.AbilityPoints += gain;

						if ( this.ControlMaster != null )
						{
							this.ControlMaster.SendMessage( 38, "Your pet {0} has gained some ability points, Goto your pets 'NPC Info' and click the red diamond to apply these points." );
							//this.ControlMaster.CloseGump( typeof( LevelGump ) );
							//this.ControlMaster.CloseGump( typeof( PetLevelGump ) );
							//this.ControlMaster.SendGump( new LevelGump( this ) );
						}

						if ( m_Level == 9 )
						{
							m_AllowMating = true;
							cm.SendMessage( 1161, "Your pet is now at the level to mate." );
						}
						if ( m_Evolves == true )
						{
							if ( UsesForm1 == true && F0 == true )
							{
								this.BodyValue = m_Form1;
								this.BaseSoundID = m_Sound1;
								m_F1 = true;
								m_F2 = false;
								m_F3 = false;
								m_F4 = false;
								m_F5 = false;
								m_F6 = false;
								m_F7 = false;
								m_F8 = false;
								m_F9 = false;
								UsesForm1 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm2 == true && F1 == true )
							{
								this.BodyValue = m_Form2;
								this.BaseSoundID = m_Sound2;
								m_F1 = false;
								m_F2 = true;
								m_F3 = false;
								m_F4 = false;
								m_F5 = false;
								m_F6 = false;
								m_F7 = false;
								m_F8 = false;
								m_F9 = false;
								UsesForm2 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm3 == true && F2 == true )
							{
								this.BodyValue = m_Form3;
								this.BaseSoundID = m_Sound3;
								m_F1 = false;
								m_F2 = false;
								m_F3 = true;
								m_F4 = false;
								m_F5 = false;
								m_F6 = false;
								m_F7 = false;
								m_F8 = false;
								m_F9 = false;
								UsesForm3 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm4 == true && F3 == true )
							{
								this.BodyValue = m_Form4;
								this.BaseSoundID = m_Sound4;
								m_F1 = false;
								m_F2 = false;
								m_F3 = false;
								m_F4 = true;
								m_F5 = false;
								m_F6 = false;
								m_F7 = false;
								m_F8 = false;
								m_F9 = false;
								UsesForm4 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm5 == true && F4 == true )
							{
								this.BodyValue = m_Form5;
								this.BaseSoundID = m_Sound5;
								m_F1 = false;
								m_F2 = false;
								m_F3 = false;
								m_F4 = false;
								m_F5 = true;
								m_F6 = false;
								m_F7 = false;
								m_F8 = false;
								m_F9 = false;
								UsesForm5 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm6 == true && F5 == true )
							{
								this.BodyValue = m_Form6;
								this.BaseSoundID = m_Sound6;
								m_F1 = false;
								m_F2 = false;
								m_F3 = false;
								m_F4 = false;
								m_F5 = false;
								m_F6 = true;
								m_F7 = false;
								m_F8 = false;
								m_F9 = false;
								UsesForm6 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm7 == true && F6 == true )
							{
								this.BodyValue = m_Form7;
								this.BaseSoundID = m_Sound7;
								m_F1 = false;
								m_F2 = false;
								m_F3 = false;
								m_F4 = false;
								m_F5 = false;
								m_F6 = false;
								m_F7 = true;
								m_F8 = false;
								m_F9 = false;
								UsesForm7 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm8 == true && F7 == true )
							{
								this.BodyValue = m_Form8;
								this.BaseSoundID = m_Sound8;
								m_F1 = false;
								m_F2 = false;
								m_F3 = false;
								m_F4 = false;
								m_F5 = false;
								m_F6 = false;
								m_F7 = false;
								m_F8 = true;
								m_F9 = false;
								UsesForm8 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm9 == true && F8 == true )
							{
								this.BodyValue = m_Form9;
								this.BaseSoundID = m_Sound9;
								m_F1 = false;
								m_F2 = false;
								m_F3 = false;
								m_F4 = false;
								m_F5 = false;
								m_F6 = false;
								m_F7 = false;
								m_F8 = false;
								m_F9 = true;
								UsesForm9 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}	
						}
					}
				}
			}
		}
		//End Advanced Pet System
and below:
Code:
if( AutoDispel && defender is BaseCreature && ((BaseCreature)defender).IsDispellable && AutoDispelChance > Utility.RandomDouble() )
				Dispel( defender );
this is missing:
Code:
	if ( FSATS.EnablePetLeveling == true )
			{
				bool nolevel = false;
				Type typ = this.GetType();
				string nam = typ.Name;

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

				if ( nolevel != true )
					CheckLevel( defender );
			}
I also attached my BaseCreature.cs which I merged after installing OWLTR and the Animal system.

By the way, thank you for your hard work Lokai to get this working under RunUO2.0RC1
 

Attachments

  • BaseCreature.cs
    142.4 KB · Views: 195

Warmonkey

Wanderer
i have problems with the mule.cs line 84 on.before.tame. wont compile. argh ive only got neruns and gen2 installed aswell, but having so many problems :(
 

Lokai

Knight
Carlosos said:
I think you might be missing something in the basecreature.cs to get the "FS Animal Taming Gen2" system to work with the OWLTR script except if you were able to put it into another file which I didn't check :)
Below:
Code:
if ( version >= 14 )
			{
				m_RemoveIfUntamed = reader.ReadBool();
				m_RemoveStep = reader.ReadInt();
			}
you should still have
Code:
	if( version <= 14 && m_Paragon && Hue == 0x31 )
			{
				Hue = Paragon.Hue; //Paragon hue fixed, should now be 0x501.
			}

			CheckStatTimers();

			ChangeAIType(m_CurrentAI);

			AddFollowers();

			if ( IsAnimatedDead )
				Spells.Necromancy.AnimateDeadSpell.Register( m_SummonMaster, this );

and below:
Code:
public virtual bool DeleteOnRelease{ get{ return m_bSummoned; } }
you are missing
Code:
//Advanced Pet System
		public void DoDeathCheck()
		{
			Mobile cm = this.ControlMaster;

			if ( cm != null && this.Controlled == true && Tamable == true )
			{
				if ( this.IsBonded == true )
				{
					if ( this.AbilityPoints >= 0 && Utility.Random( 100 ) < 25 )
					{
						this.AbilityPoints = this.AbilityPoints / 2;
						cm.SendMessage( 38, "Your pet has lost half of thier ability points due to its untimely death." );
					}
					else if ( this.Exp >= 0 && Utility.Random( 100 ) < 25 )
					{
						this.Exp = this.Exp / 2;
						cm.SendMessage( 38, "Your pet has lost half of thier exp due to its untimely death." );
					}
					else if ( Utility.Random( 100 ) < 25 )
					{
						int strloss = this.Str / 20;
						int dexloss = this.Dex / 20;
						int intloss = this.Int / 20;
						int hitsloss = this.Hits / 20;
						int stamloss = this.Stam / 20;
						int manaloss = this.Mana / 20;
						int physloss = this.PhysicalResistance / 20;
						int fireloss = this.FireResistance / 20;
						int coldloss = this.ColdResistance / 20;
						int energyloss = this.EnergyResistance / 20;
						int poisonloss = this.PoisonResistance / 20;
						int dminloss = this.DamageMin / 20;
						int dmaxloss = this.DamageMax / 20;

						this.Str -= strloss;
						this.Dex -= dexloss;
						this.Int -= intloss;
						
						if ( this.HitsMaxSeed >= 0 )
							this.HitsMaxSeed -= hitsloss;
						if ( this.StamMaxSeed >= 0 )
							this.StamMaxSeed -= stamloss;
						if ( this.ManaMaxSeed >= 0 )
							this.ManaMaxSeed -= manaloss;

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

						this.DamageMin -= dminloss;
						this.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 void DoBioDeath()
		{
			Mobile cm = this.ControlMaster;

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

						this.Str -= strloss;
						this.Dex -= dexloss;
						this.Int -= intloss;
						
						if ( this.HitsMaxSeed >= 0 )
							this.HitsMaxSeed -= hitsloss;
						if ( this.StamMaxSeed >= 0 )
							this.StamMaxSeed -= stamloss;
						if ( this.ManaMaxSeed >= 0 )
							this.ManaMaxSeed -= manaloss;

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

						this.DamageMin -= dminloss;
						this.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 void CheckLevel( Mobile defender )
		{
			int expgainmin, expgainmax;

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

					expgainmin = 5 + ( bc.HitsMax ) / 10;
					expgainmax = 5 + ( bc.HitsMax ) / 5;

					if ( m_Level <= m_MaxLevel - 1 )
						m_Exp += Utility.RandomList( expgainmin, expgainmax );
			
					int nextLevel = m_NextLevel * m_Level;

					if ( m_Exp >= nextLevel && m_Level <= m_MaxLevel - 1 )
					{
						Mobile cm = this.ControlMaster;
						m_Level += 1;
						m_Exp = 0;
						this.FixedParticles( 0x373A, 10, 15, 5012, EffectLayer.Waist );
						this.PlaySound( 503 );
						cm.SendMessage( 38, "Your pets level has increased to {0}.", m_Level );

						int gain = Utility.RandomList( 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6 );

						int random = Utility.Random( 100 );

						if ( random < 2 )
							gain = gain * 10;
						else if ( random < 4 )
							gain = gain * 5;
						else if ( random < 6 )
							gain = gain * 4;
						else if ( random < 8 )
							gain = gain * 3;
						else if ( random < 10 )
							gain = gain * 2;
						//else
							//gain = gain;

						this.AbilityPoints += gain;

						if ( this.ControlMaster != null )
						{
							this.ControlMaster.SendMessage( 38, "Your pet {0} has gained some ability points, Goto your pets 'NPC Info' and click the red diamond to apply these points." );
							//this.ControlMaster.CloseGump( typeof( LevelGump ) );
							//this.ControlMaster.CloseGump( typeof( PetLevelGump ) );
							//this.ControlMaster.SendGump( new LevelGump( this ) );
						}

						if ( m_Level == 9 )
						{
							m_AllowMating = true;
							cm.SendMessage( 1161, "Your pet is now at the level to mate." );
						}
						if ( m_Evolves == true )
						{
							if ( UsesForm1 == true && F0 == true )
							{
								this.BodyValue = m_Form1;
								this.BaseSoundID = m_Sound1;
								m_F1 = true;
								m_F2 = false;
								m_F3 = false;
								m_F4 = false;
								m_F5 = false;
								m_F6 = false;
								m_F7 = false;
								m_F8 = false;
								m_F9 = false;
								UsesForm1 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm2 == true && F1 == true )
							{
								this.BodyValue = m_Form2;
								this.BaseSoundID = m_Sound2;
								m_F1 = false;
								m_F2 = true;
								m_F3 = false;
								m_F4 = false;
								m_F5 = false;
								m_F6 = false;
								m_F7 = false;
								m_F8 = false;
								m_F9 = false;
								UsesForm2 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm3 == true && F2 == true )
							{
								this.BodyValue = m_Form3;
								this.BaseSoundID = m_Sound3;
								m_F1 = false;
								m_F2 = false;
								m_F3 = true;
								m_F4 = false;
								m_F5 = false;
								m_F6 = false;
								m_F7 = false;
								m_F8 = false;
								m_F9 = false;
								UsesForm3 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm4 == true && F3 == true )
							{
								this.BodyValue = m_Form4;
								this.BaseSoundID = m_Sound4;
								m_F1 = false;
								m_F2 = false;
								m_F3 = false;
								m_F4 = true;
								m_F5 = false;
								m_F6 = false;
								m_F7 = false;
								m_F8 = false;
								m_F9 = false;
								UsesForm4 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm5 == true && F4 == true )
							{
								this.BodyValue = m_Form5;
								this.BaseSoundID = m_Sound5;
								m_F1 = false;
								m_F2 = false;
								m_F3 = false;
								m_F4 = false;
								m_F5 = true;
								m_F6 = false;
								m_F7 = false;
								m_F8 = false;
								m_F9 = false;
								UsesForm5 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm6 == true && F5 == true )
							{
								this.BodyValue = m_Form6;
								this.BaseSoundID = m_Sound6;
								m_F1 = false;
								m_F2 = false;
								m_F3 = false;
								m_F4 = false;
								m_F5 = false;
								m_F6 = true;
								m_F7 = false;
								m_F8 = false;
								m_F9 = false;
								UsesForm6 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm7 == true && F6 == true )
							{
								this.BodyValue = m_Form7;
								this.BaseSoundID = m_Sound7;
								m_F1 = false;
								m_F2 = false;
								m_F3 = false;
								m_F4 = false;
								m_F5 = false;
								m_F6 = false;
								m_F7 = true;
								m_F8 = false;
								m_F9 = false;
								UsesForm7 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm8 == true && F7 == true )
							{
								this.BodyValue = m_Form8;
								this.BaseSoundID = m_Sound8;
								m_F1 = false;
								m_F2 = false;
								m_F3 = false;
								m_F4 = false;
								m_F5 = false;
								m_F6 = false;
								m_F7 = false;
								m_F8 = true;
								m_F9 = false;
								UsesForm8 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}
							else if ( UsesForm9 == true && F8 == true )
							{
								this.BodyValue = m_Form9;
								this.BaseSoundID = m_Sound9;
								m_F1 = false;
								m_F2 = false;
								m_F3 = false;
								m_F4 = false;
								m_F5 = false;
								m_F6 = false;
								m_F7 = false;
								m_F8 = false;
								m_F9 = true;
								UsesForm9 = false;
								cm.SendMessage( 64, "Your pet has evoloved." );
							}	
						}
					}
				}
			}
		}
		//End Advanced Pet System
and below:
Code:
if( AutoDispel && defender is BaseCreature && ((BaseCreature)defender).IsDispellable && AutoDispelChance > Utility.RandomDouble() )
				Dispel( defender );
this is missing:
Code:
	if ( FSATS.EnablePetLeveling == true )
			{
				bool nolevel = false;
				Type typ = this.GetType();
				string nam = typ.Name;

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

				if ( nolevel != true )
					CheckLevel( defender );
			}
I also attached my BaseCreature.cs which I merged after installing OWLTR and the Animal system.

By the way, thank you for your hard work Lokai to get this working under RunUO2.0RC1


OK. This is strange. I downloaded FS Gen2, and the BaseCreature.cs file I have is UNCHANGED except for the sections I added for Daat99's OWLTR (which are all clearly marked.) Were there changes needed that were not included in his DISTROS folder?
 

Lokai

Knight
Warmonkey said:
i have problems with the mule.cs line 84 on.before.tame. wont compile. argh ive only got neruns and gen2 installed aswell, but having so many problems :(

Did you use the BaseCreature.cs included? It has these sections:

PHP:
		public virtual void OnBeforeTame()
		{
			//Daat99 OnBeforeTame Method
		}
		
		public virtual void OnBeforeReTame()
		{
			//Daat99 OnBeforeReTame Method
		}
 

Carlosos

Wanderer
Lokai said:
OK. This is strange. I downloaded FS Gen2, and the BaseCreature.cs file I have is UNCHANGED except for the sections I added for Daat99's OWLTR (which are all clearly marked.) Were there changes needed that were not included in his DISTROS folder?
To tell you the truth, I have no clue right now why I have these parts. I think I did the same as you did but I still have those sections. The "extra" parts that I came up with have to do with the stats/skills/attribute loss that happens when the animal dies.

I'm right now confused myself about this but I must have gotten the changes from somewhere and I know that it was already included when I installed an old version of the script on a RunUO 1.0 server a few months ago.
 

Lokai

Knight
Carlosos said:
To tell you the truth, I have no clue right now why I have these parts. I think I did the same as you did but I still have those sections. The "extra" parts that I came up with have to do with the stats/skills/attribute loss that happens when the animal dies.

I'm right now confused myself about this but I must have gotten the changes from somewhere and I know that it was already included when I installed an old version of the script on a RunUO 1.0 server a few months ago.

OK. The way this system works is this:

On NEW Install of RunUO 2.0 Server:
  1. Add Nerun's Distro (optional, but recommended.)
  2. Add FS Animal Taming Gen2 (replace stock scripts with files in FSAT's DISTROS folder.
  3. Add this release, overwriting all files automatically.
If you have a CUSTOMIZED RunUO 2.0 Server, make sure you install FSAT Gen 2, and remove all older versions, especially BaseCreature.cs.
 

Carlosos

Wanderer
I think I now know what I did to get those extra sections. I compared the wrong basecreature.cs
I used on from the FSAnimalTaming2.0-Beta.rar script (I don't know who released this) to compare with the original one and than compared the basecreature from this script and than the FSAT version that you released.

Maybe you want to add those extra sections that I have to your version because it is a feature that was included in the old FSAT script and isn't included in your modified version anymore.
 

Warmonkey

Wanderer
righto i created a fresh runuo2 and followed that order lokai and now it works. very strange!! not sure why it wasnt working before, had loads of errors. nevermind, i can start from here :) thanking you kindly
 

Rosey1

Wanderer
Lokai said:
OK. The way this system works is this:

On NEW Install of RunUO 2.0 Server:
  1. Add Nerun's Distro (optional, but recommended.)
  2. Add FS Animal Taming Gen2 (replace stock scripts with files in FSAT's DISTROS folder.
  3. Add this release, overwriting all files automatically.
If you have a CUSTOMIZED RunUO 2.0 Server, make sure you install FSAT Gen 2, and remove all older versions, especially BaseCreature.cs.

so i have to install the fsat gen 2 first and then the owltr to get no errors?
 

Lokai

Knight
Rosey1 said:
so i have to install the fsat gen 2 first and then the owltr to get no errors?

That is what I recommend, since my edits are based on the FSAT Gen2 system. In particular, the BaseCreature.cs file I include here is only compatible with the FSAT Gen2 system.
 

Lokai

Knight
dragonlady said:
u might want to look into this too, i got a crash and it was b/c of daat's system, :)
other than that, this system rock's, tks Lokai for all ur hard work ur putting into this sytem :)
http://www.runuo.com/forums/showthread.php?t=71536
still got to fix mine :rolleyes: lol

You may be right. I have not tried Stealthing in Ethereal Armor yet, but lets not take a chance, eh?

I am attaching a new Stealth.cs file to the top post.
 
Top