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

KnitePrince

Sorceror
wow, now that i am testing everythign in this system, i am less than impressed. The basic concept behind the system is incredible! however, the lack of refinement to the system is very disheartening.
by gen 3 pets have unspendable points with all allowed abilitys maxed. three more gens pass before you can spend a point on anything other than armor rating. when it hits gen 6/7 you hit lvl 40, and that unlocks the rest of the abilitys.. unfortunately when you click on an attack ability, it closes the window back to the first page, so now, you get to spend 300 points by kliking once, then turning the page/gump, kliking on another point, turning the page back, klicking on a point and turning the page back.... extremely annoying and time consuming in an already time consuming endeavour.
when shrunk, all of the stats are not displayed. nor is it displayed if it is male or female. at gen 8 everything is maxed again, every available ability and stat.. i understand that these extra points can be used to "fix" a pet that has died, but thats a lot of points.
my last problem, is that I do not see.. where it ends? at what level can a pet no longer be bred? can they be bred over and over forever? I also found, that i can breed many many pets at once. by gen ten i am breeding over 20 pairs. once maxed, they dont have to be fought with anymore, so a breeder, basically has a line of maxed animals to breed to infinity? it would take some time, but i can see where eventually, a shard would be purely flooded with pets. granted some will die, or be damaged beyond use. people will quit (hopefully not giving away their breedable stable of pets) and there will be those who just give up on maxing them... removing the shrink system, so people could only own a certain amount of pets would be a partial fix, it would also annoy every player you had, and even a few you didnt..
is it just me, and maybe a faulty install of this system or is this how it was made? if so, i am quite disapointed. I think, it can be made to work 90% better, but it remains that this system feels.... unfinished.
I'd give the Idea, and the amount of work put into it a 20 on a scale of 1 to 10, but it would also get a -5 on that same scale for finish and useability. It needs many things added and changed if you want balance and control... I guess the part that hurts me the worst, is that i am good enough, with a little help, to get it working, but I also realize, i am not good enough to finish it and make it useable. :(
 

Bobly

Wanderer
Maestro7;793357 said:
Ok i fixed the mobiles now all i have for errors is this.


CS0115: Line 125: 'Server.Mobiles.Blacksmith.OnSuccessfulBulkOrderRe ceive(Se
rver.Mobile)': no suitable method found to override
+ Mobiles/Vendors/NPC/Tailor.cs:
CS0115: Line 74: 'Server.Mobiles.Tailor.OnSuccessfulBulkOrderReceiv e(Server.
Mobile)': no suitable method found to override
+ Mobiles/Vendors/NPC/Weaponsmith.cs:
CS0115: Line 92: 'Server.Mobiles.Weaponsmith.OnSuccessfulBulkOrderR eceive(Se
rver.Mobile)': no suitable method found to override
+ Mobiles/Vendors/NPC/Weaver.cs:
CS0115: Line 74: 'Server.Mobiles.Weaver.OnSuccessfulBulkOrderReceiv e(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()'

Any ideas on how to fix?

How did you fix your previous issue? You later say you got it working, what did you do?
It's much nicer when people come back and explain what they fixed rather than just say "Woohoo it's working" :D

Example:
There's a typo in BaseVendor.cs:
Line 69: public virtual void OnSuccessfulBulkOrderRecieve( Mobile from )
Should be:
Line 69: public virtual void OnSuccessfulBulkOrderReceive( Mobile from )

I'm still getting errors on mine so I dunno if this fixes something but it's a common typo so I assume it does :)
 

KnitePrince

Sorceror
I read, every single page, and every single post ON those pages :( Hawk saved me only one page back with the bulk order errors, check to make sure you have done this one, i hadnt...




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.

That fixed the last of my errors...
By reading, I have managed to stop a pets level and sex from showing BEFORE taming, forcing the players to tame it to check, rather than just mousing over it, saying NOPE and killing it to move on to the next one...

Ive set a MAX level, and generation for breeding, so it cant go on into infinity and flood my shard.

Ive adjusted the ability points down to an average of around 200 for a max lvl 30 pet, forcing breeding to max it.. as it came, a pet could gain in the neighborhood of 900 points by lvl 30, which meant, it would be maxed on available skills at gen 2, and then have to wait three or so generations before another point could be added to ANY stat.. and it just seems pretty stupid to me, to have a gen three, four, and five pet with over 800 points each that would NEVER have anything to spend them on until lvl 40 was reached and points could be added to str dex etc..

Ive removed the special attacks that made an already GODLY pet only GODLY not SUPER GODLY...

in order to be complete, this system still needs;


the Level gain set BACK the way it used to be, to "on hit" instead of on kill... I really really dislike the on kill method :( i like it, for the exact reason Ronin said he took it out, because people leveled their pets on trainers... I WANT people to be able to do that.. with a max level, and a max Gen for breeding, it will take two to three months to MAX a breeding line using the on hit method.. I am quite afraid to guess that it would take up to seven or eight months if the on kill method remains...

The Hitpoints, level, and generation need to show on a "shrunken" pet. It allows the shrinken pets to sell on a vendor, and the buyer would know exactly what hes getting. (am only just about to start looking for that one.)

and last but most not least.. i need to figure out a way to set up two different CAP levels.. a pet with PACK instinct should NOT be able to have 1k strength.. 5 strong pack instinct pets are VERY godly when maxed through breeding. having a seperate cap level for them would somewhat balance them out with the non pack instinct pets.. I would hate to see breeding limited to only one animal or to only pack instinct animals, and without a seperate cap on them, everything but pack instinct will be totally ignored for breeding.

i am not a scripter... i have only a slight clue what i am doing, but i will eventually figure it out, when i do, i will share it in the spirit of what these forums USED to be when i first joined.




In Base Creature.cs

Add the /* and */ brackets at the beginnign and end of the red parts to block out the pet showing its level and gender when a player holds the curser on them when untamed.

Code:
foreach ( string check in FSATS.NoLevelCreatures )
				{
  					if ( check == nam )
    						nolevel = true;
				}
                             [COLOR="DarkRed"] /*
				if ( nolevel != true )
				{
					if ( this.Female == true )
						list.Add( 1060658, "Gender\tFemale" );
					else
						list.Add( 1060658, "Gender\tMale" );

					if ( this.Controlled == false )
						list.Add( 1060659, "Max Level\t{0}", this.MaxLevel );
				}*/ // blocked this part so it would not show level or gender[/COLOR]


To set a pets max Level and generation, I added what is in the red area;

Code:
if ( this.MaxLevel == 0 )
				{
					this.MaxLevel = Utility.RandomMinMax( 10, 30 );
				}
			}

           [COLOR="DarkRed"] // to set max gen and level
            if (this.m_Gen <= 10 && m_Level == 10)
                m_AllowMating = true;
        
            if (this.m_Gen == 11 && m_Level == 45)
                m_AllowMating = false;

           
            // end set max gen and level[/COLOR]

I have tried several ways to send a message after the AllowMating = false; and all have failed, but i will figure it out, just need the time to do it... it takes me HOURS, what would take someone that knows what they ae looking at only minutes :(

I am using RC1. I am NOT a scripter, i took what i read, and fussed with it until i got it to work, I cant guarantee what Ive done is right, i only say that it is working for me... at the moment..
 

Bobly

Wanderer
Well I finally got this working on SVN 313 by following the instructions in the text file attached, not word for word, but with a touch of common sense :)

I'm reposting this as it tends to get drowned in other messages but I think it's originally on page 2 or 3.

Knite Prince those changes are really interesting, I think I might implement them on my install :)
 

Attachments

  • AnimalTaming-RoninGT-Install.txt
    34.7 KB · Views: 51

KnitePrince

Sorceror
One more little tidbit. if you want one player to be able to breed two of his own pets, edit out the following in red.
this will not allow him to breed two pets, if he has 5 control slots, and each of the pets takes 3 slots, but it will allow him to mate two pets that take up one or two slots each.


in PetInfoGump.cs find the following and // out the part in red

else if ( bc.MatingDelay >= DateTime.Now )
{
from.SendMessage( "That creature has mating in that last six days, It cannot mate again so soon." );
}
//else if ( bc.ControlMaster == from )
// {
// from.SendMessage( "You cannot breed two of your own pets together, You must find another player who has the same type of pet as your in order to breed." );
// }


ive had people help me, and never saw them again, meaning i lost that baby, and after weeks of breeding, that hurts!!!

Annnnd one more thing.. to remove the special attack from your pets to de uberize them a little, its as simple as removing page two from the level gump. In PetLeveGump.cs find this line and edit it out... now no special attacks.

//AddButton(320, 100, 2117, 2118, 1, GumpButtonType.Page, 2);



Can anyone point me at the file that contains the info window that comes up when you hover your mouse over a shrunken pet? Ive been through the shrink files twice, but that doesnt mean i didnt miss it. Thx!
 

Hawkins

Sorceror
KnitePrince;797156 said:
I have tried several ways to send a message after the AllowMating = false; and all have failed, but i will figure it out, just need the time to do it... it takes me HOURS, what would take someone that knows what they ae looking at only minutes :(

I am using RC1. I am NOT a scripter, i took what i read, and fussed with it until i got it to work, I cant guarantee what Ive done is right, i only say that it is working for me... at the moment..


I think you did a great job, especially when you are not a scripter or programmer of some kind. And I understand very well about your concern about the balancing issue.

I see that you made changes into the OnThink() method which regularly checks the creature's status. As long as your changes don't require a regular attention, you can make those changes into PetLeveling.cs instead. And the problem of sending message will also be solved if the changes are in PetLeveling because you can follow the original code to use 'cm.SendMessage()' to send your messsage.

Even when your changes are in BaseCreature.cs, you can still send messages. To do so, you need to first address who is the master of the pet,

PHP:
if ( Controlled && ControlMaster != null )
{
	Mobile cm = ControlMaster;
	cm.SendMessage( "your message" );
}

Moreover, to secure your code for a regular check such as the OnThink() method, maybe it's better to make your code as follows,

PHP:
if ( m_Gen >= 11 && m_Level >= 45 )
	m_AllowMating = false;

that is, to use 'equal and greater' instead of just 'equal'. :)
 

Hawkins

Sorceror
KnitePrince;797199 said:
Can anyone point me at the file that contains the info window that comes up when you hover your mouse over a shrunken pet? Ive been through the shrink files twice, but that doesnt mean i didnt miss it. Thx!

I think it should be the following method in ShrinkItem.cs

PHP:
public override void AddNameProperties( ObjectPropertyList list )
{
}
 

Hawkins

Sorceror
KnitePrince;797156 said:
Ive removed the special attacks that made an already GODLY pet only GODLY not SUPER GODLY...

in order to be complete, this system still needs;

Although I agree with you that balancing is an issue, I have no intent on altering the system. Not only that I might need Ronin's permission, but also that I am actually writing my own pet leveling and evolution system. It is a totally brand new idea on how pets level and evolve, though I might not have the time to complete the project.

It is an innovative idea never seen before, I don't know if it's fun enough to be attractive thou. :D
 

KnitePrince

Sorceror
ahhh... I hadnt tested greater than, so the way ive done it will not work once beyond the level i have in there?

so, its == equal to; >= Equal and greater; <= Equal and Less ..... so we end up with a better way..;


Code:
if ( this.MaxLevel == 0 )
				{
					this.MaxLevel = Utility.RandomMinMax( 10, 30 );
				}
			}

            // to set max gen and level

           [COLOR="Red"] if (this.m_Gen <= 10 && m_Level >= 10)
                m_AllowMating = true;
        
            if ( m_Gen >= 11 && m_Level >= 45)
                m_AllowMating = false;

            if (Controlled && ControlMaster != null)
            {
                Mobile cm = ControlMaster;
                cm.SendMessage( "Your Pet is too advanced to mate!" );
            }
[/COLOR]
           
            // end set max gen and level


so we end up with;
if this pet is gen ten or less, AND level ten or greater allow mating true;
if this pet is level eleven or greater than AND Level fourtyfive or greater allow mating False.

The First statement works perfectly, but the second statement needs to be OR not AND, if one of those conditions in the second statement is true it should return false, but in this case they both HAVE to be true in order to return false.. correct?
so would it be better to break the second statement down into two if statements? or can the || be used in place of the && to make this an OR statement?
hehe dont laugh im trying, but I am OLD and this is like trying to learning Chinese :)

edit Ugh.. array list :( I will see what i can do about rearranging it to display the needed information when I mouse over a shrunken pet...

Hawk.. I dont know what i would do without you.. you are the only one that has answered (in a helpfull manner) any post i have written in the last few weeks.. i dont want to learn to script, but my desire to bring my Shard back to life has overcome that single drawback. If there was some way in which I could repay you I will, for the moment please accept my sincere thank you!
 

Hawkins

Sorceror
KnitePrince;797243 said:
ahhh... I hadnt tested greater than, so the way ive done it will not work once beyond the level i have in there?

It will work under usual circumstance. but to an extreme, someone may have an extremely powerful pet and he may change the script to make the leap from level 10 to level 11 extremely easy, then the OnThink() check back may have a chance to miss the level 10 count. That is, it occurs so fast from level 9 to level 11 that the regular checking OnThink() may miss what shall be done at level 10. Thou this is quite unlikely, but I think that it's always a good practice not to leave any hole which potentially may backfire. :D


so we end up with;
if this pet is gen ten or less, AND level ten or greater allow mating true;
if this pet is level eleven or greater than AND Level fourtyfive or greater allow mating False.

The First statement works perfectly, but the second statement needs to be OR not AND, if one of those conditions in the second statement is true it should return false, but in this case they both HAVE to be true in order to return false.. correct?

Yes, I think so. If you want all those pets beyond level 45, disregarding their generation, to be unable to breed, it is an OR instead of AND,

PHP:
if ( m_Gen >= 11 || m_Level >= 45)
    m_AllowMating = false;

either generation equals to or greater than 11 ( disregarding pet level ), OR pet level beyond 45 ( disregarding pet generation ) will set the AllowMating to false.

hehe dont laugh im trying, but I am OLD and this is like trying to learning Chinese :)

I myself am learning the C# language, and I do think that you did a great job and are much better than when I was new on scripting. :D


edit Ugh.. array list :( I will see what i can do about rearranging it to display the needed information when I mouse over a shrunken pet...

hehe...i think it can be as simple as,

PHP:
list.Add( "name1" );
list.Add( "name2" );
list.Add( "name3" );

such that names can be displayed on mouse hover.

Hawk.. I dont know what i would do without you.. you are the only one that has answered (in a helpfull manner) any post i have written in the last few weeks.. i dont want to learn to script, but my desire to bring my Shard back to life has overcome that single drawback. If there was some way in which I could repay you I will, for the moment please accept my sincere thank you!

Oh, don't mention it. I am very glad that I can help. And wish you good luck on building your shard.
 

KnitePrince

Sorceror
if (Controlled && ControlMaster != null)
{
Mobile cm = ControlMaster;
cm.SendMessage( "Your Pet is too advanced to mate!" );
}

that sends a loop that spams your screen with the message, ...
I need to connect it to the "Mate this pet with another" button.. but almost 3 am, thats tomorrows project, along with the array list... will also test the max level and make sure that works.
ty so much!

or perhaps an easier way is just to replace the button with the words "this pet is too advanced to mate" ehh, will look at it tomorrow :p
 

Hawkins

Sorceror
KnitePrince;797261 said:
if (Controlled && ControlMaster != null)
{
Mobile cm = ControlMaster;
cm.SendMessage( "Your Pet is too advanced to mate!" );
}

that sends a loop that spams your screen with the message, ...
I need to connect it to the "Mate this pet with another" button.. but almost 3 am, thats tomorrows project, along with the array list... will also test the max level and make sure that works.
ty so much!

or perhaps an easier way is just to replace the button with the words "this pet is too advanced to mate" ehh, will look at it tomorrow :p

Yep, it's because OnThink() keeps calling back regularly to show the same message, you can make your changes as follows,

PHP:
if ( m_Gen <= 10 && m_Level >= 10 )
    m_AllowMating = true;

if ( m_Gen >= 11 && m_Level >= 45 )
{
	if m_AllowMating )
	{
		m_AllowMating = false;
		Mobile cm = ControlMaster;
		cm.SendMessage( "Your Pet is too advanced to mate!" );
	}
}


Alternatively, you may move your codes to PetLeveling.cs.
 

KnitePrince

Sorceror
Alternatively, you may move your codes to PetLeveling.cs.

Aye, that may be the prudent thing to do.. wife is here for the weekend, will give it a go as soon as I get the time.

Edit
Actually, I just realized, that with only the true and false method it removes the breed option from the gump alltogether, so there is actually no need for the message.. but testing this is a PAIN using the on kill method of leveling, so have turned my attention to the leveling method, I have found in the petleveling.cs where the level bonus starts, but do not see where it actually determines when a level is gained, is that the original method at the top where it does death check? If I am reading this right that is only for the stat loss part... will keep looking
 

Hawkins

Sorceror
KnitePrince;797421 said:
Alternatively, you may move your codes to PetLeveling.cs.

Aye, that may be the prudent thing to do.. wife is here for the weekend, will give it a go as soon as I get the time.

Edit
Actually, I just realized, that with only the true and false method it removes the breed option from the gump alltogether, so there is actually no need for the message.. but testing this is a PAIN using the on kill method of leveling, so have turned my attention to the leveling method, I have found in the petleveling.cs where the level bonus starts, but do not see where it actually determines when a level is gained, is that the original method at the top where it does death check? If I am reading this right that is only for the stat loss part... will keep looking

It is located inside the method,

PHP:
public static void CheckLevel( Mobile defender, BaseCreature attacker, int count )
{
}

You can look for,

PHP:
if ( attacker.Level == 9 )
{
	attacker.AllowMating = true;
	cm.SendMessage( 1161, "Your pet is now at the level to mate." );
}

And change to,

PHP:
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 == 45 || ( attacker.Level == 10 && attack.Generation == 11 ) )
{
  m_AllowMating = false;
  cm.SendMessage( "Your Pet is too advanced to mate!" );
}
 

KnitePrince

Sorceror
ok, had to change it slightly, but LOOKS like it will work, this is how I set it up..


Code:
    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!");
                                              }

Have been looking for two hours trying to find the level method, so this will be easier to test.. No Joy so far..

the attacker.Generation could have prob stayed == 11 but if a lvl 45 pet is bred it could deliver a baby with a max level of 46, 47, or 48, and not sure of the == would have covered it if above 46.....
 

Hawkins

Sorceror
KnitePrince;797475 said:
the attacker.Generation could have prob stayed == 11 but if a lvl 45 pet is bred it could deliver a baby with a max level of 46, 47, or 48, and not sure of the == would have covered it if above 46.....

This time the 'greater' shall be avoided or the messages might spam on each leveling up. :p

PHP:
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 >= 45 && attacker.AllowMating ) || ( attacker.Level == 10 && attack.Generation >= 11 ) ) 
{ 
  attacker.AllowMating = false; 
  cm.SendMessage( "Your Pet is too advanced to mate!" ); 
}

Moreover, to test the leveling, you can always use the command "[set exp 1000000" such that the pet will level on each kill, this way it will advance a level even after killing a rat.
 

KnitePrince

Sorceror
aha... ok,Thx Hawk! I will have to check that then.. and yes, I have been more or less doing that in game.. but by the time I get to level 45 for the 5th time im rather annoyed :p I want to change the method permanantly. but am unable to figure it out.. I have even tried looking up an older version of this system without any luck :(

BTW, I have managed to change the Menu that shows on mouseover of a shrunken pet, to show hits, and resists. Ive removed the Exp, since no one really cares how much exp it has, and replaced it with Gen.
this is pretty easy modification for anyone that looks at it in ShrinkItem.cs it should be easy for you to rearrange it to suit your needs; this is how I currently have mine set up. (Yes this is tested with RC1)


Code:
	list.Add( 1060663, "Name\t{0} Breed: {1}", m_PetName, m_MobTypeString );
				}

				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}", m_PetStr, m_PetDex, m_PetInt, m_PetHits);
				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_Level != 0 )
					//list.Add( 1060662, "Exp\t{0}, Level: {1}", m_Exp, m_Level );
                    list.Add(1060662, "Level: {0}, Generation {1}, Resists\t {2}/{3}/{4}/{5}/{6}", m_Level, m_Gen, m_PetPhysicalResist, m_PetColdResist, m_PetFireResist, m_PetPoisonResist, m_PetEnergyResist);
			}

If Anyone can point me at the section I will need to change to make this system level on hit instead of on Kill I would GREATLY appriciate it!!! all of these little things are slowly coming to gether, but they are all pointless and useless unless the level method can be changed... THX!
 

S-OD

Wanderer
The color of my pet's name

In my server, the system is functioning properly.
However, the same blue color of my pet's name.
Remains white.:confused:

Dragon and the cow, I tried to tame a GreaterDragon.
System configuration...
EnableShrinkSystem = true;
EnableTamingCraft = true;
EnableBioEngineer = true;
EnablePetBreeding = false;
EnablePetLeveling = false;
EnableTamingBODs = true;
EnableBioShrink = false;


Good advice please.:p
 

KnitePrince

Sorceror
S-OD;797596 said:
In my server, the system is functioning properly.
However, the same blue color of my pet's name.
Remains white.:confused:

Dragon and the cow, I tried to tame a GreaterDragon.
System configuration...
EnableShrinkSystem = true;
EnableTamingCraft = true;
EnableBioEngineer = true;
EnablePetBreeding = false;
EnablePetLeveling = false;
EnableTamingBODs = true;
EnableBioShrink = false;


Good advice please.:p

What part remains white? as in the health bar is white? as if the pet is a criminal?

Also, Hawk, it appears that even when set up in petleveling...., the message came up when the pet leveled, just once, but the option to breed is gone, so it cant even be attempted. I set the pets max leve to 50, and leveled it up, the message showed each time the pet leveled, and the option to mate never returned, so I am honestly quite happy with it as is. It does not work quite as I had imagined, however I like this better than what I imagined :p

Now, back to trying to figure out how to change this over to on hit... :(
 

S-OD

Wanderer
Thank you for reply.

I tried all the settings to true.
And I have trained Dragon and SnowSteed respectively.
Since they are my pets, AllName command is confirmed, the name is not blue.
I leave the stables and pets, or move to different facets, I have given food, the name will not change to blue.

I use the Callandor2k's new version.
Can I rewrite the script fix?:(
 
Top