What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal
RebornBuddy Forums

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!

[Bot] Prosto_Pets: Battle Pets 4 in 1, and more

Hi there, maybe I'm being dumb here but I don't seem to be getting any drop-down options for Min Level, Max Level, Min Pet Health, Min H Ringer etc on General tab? Only, Capture Not Owned: (Rare). Maybe I'm missing something..

Here is Min Level marked as (1):
MinLevel_n_Team-M.png
 
Minfernal has a server spawn at 4am server time till 4.30am or 5am. similar to the scourged whelpling, in sindragosas rest, near the argent tournament grounds in icecrown, but they don't die before the morning hits, IIRC, takes about an hour after the daily reset for them to spawn, and there's only about 10 that spawn at most for both the whelpling and the minfernal. Spawn locations are available on wowhead, they appear around the fel pools in the area where the critters do.

I've got both of them on some RPPVP server (at the time they were not multi-realmed yet). These things were just walking freely. Had to raise DK to be able to survive travel though.
These days there are no Minfernals freely roaming recorded and let me check Whelplings... Hm, here they are:
\Honorbuddy\Bots\Prosto_Pets\PetZones\22-23 NOR Icecrown (25 Hs,38 Pets) by Prostak.xml (15 hits)
Line 37: <!--Seen Name="Scourged Whelpling"-->
Line 38: <!--Seen Name="Scourged Whelpling"-->
There are 15 of them! (but some may have been recorded twice if the bot left the zone).

A profile won't help for either pet, because you want to be there at a specific event time. you could grind for 23 hours and get nothing at all. Baby Ape / Silithid are easy in comparison, a standard grind will get those 2 pets, and any weather pet, like the snowy owl (appears now) and the qiraji guardlings just don't show up until July.

White lists will help not to be distracted by fighting different pets. But the behavior will be suspicious if there are other people farming. Low-pop server (low pop cross-realm, to be precise) seems a better idea.
 
Ok, here's my first attempt at a battle tactic :)

Bronze Whelpling

Code:
elseif (petName == "Bronze Whelpling" )
                dragonkin_abilities = new List<AandC>()
		{
			new AandC( "Arcane Slash",      ()=> hpEnemy < 0.2 			),	// Slot 1
			new AandC( "Arcane Storm")      () => buffLeft("Arcane Storm") < 9                         	),	// Slot 3
			new AandC( "Early Advantage",   () => hpEnemy < hp			),	// Slot 2
			new AandC( "Tail Sweep",	    							),	// Slot 1
			new AandC( "Arcane Slash" 			                      	                ),	// Slot 1
			new AandC( "Crystal Prison" 		                                                ),	// Slot 2


Prolly borked it totally though :)

The only thing immediately suspicious seems this one:
"Arcane Storm") () => buffLeft("Arcane Storm") < 9
That will try to fire next round after application, basically making this unconditional, striking when a CD is off (which is not a bad thing by itself if the attack is strong - but you may just omit the condition in this case). If the intention was to keep Arcane Storm always on, you may check buffLeft("Arcane Storm") < 2.
 
Sorry i'm pretty noob to the pet things, can i use this to collect all the pets in every zone starting from scratch ?

Yep. Except the pets made intentionally hard to get. You will need to plan a catching campaign for these ones.
 
@Prostak

Curious about some of the profiles for Pandaria that I really do like. Why do they fly so high all the time? Often it'll battle then mount fly up very high then right back down to a pet 50 yards away. Actually wastes a lot of time and seems to look very funny to any observer (although I understand that extremely extremely unlikely lol)

I've used some Explore achiev profiles. They were flying pretty high. And I've made an error when recording, using a toon's position instead of a pet's one.
Current version uses the pet's position. I've re-collected info for EK and Kalimdor, and can probably re-record other continents too.
Or you can record them yourself, using a profile referenced in Credits and a procedure described somwhere below the top post. It takes rather long time though: hours, not minutes.
 
I have under general "ringer x2" in mode, under Team Selection Min lvl 20, max lvl 24, min pet health 90, min h ringer 90, no check in wild pets, fav only pets, or fav only ringers, bules only is cheked... in ringers x2 mode screen I have Pet2 to differ 25 (grey cant change), pet3 to differ 25, selectZone 5, battle swap 100, 0, 0... and it generated a group w/ a lvl 1, 25, and 25. I have 22 pets lvl 20-24. I'm not sure what I'm doing wrong.

>Min lvl 20
> it generated a group w/ a lvl 1, 25, and 25

It should rather stop then go below Min Level. I would like to the log, if possible.
 
To Prostak ;
I think if you can add a User Interface for enter tactic logics and save them to ur logic files will be good for all users. Else most of users cant set up logics for pet or corrupt existing files (like i did) while trying to creat logics. Not much details at the begining Just me and enemy health and buff conditions for setup. Simply read pet from my team pet1 and its default skills chosen and add parameters when will use, click and save for this pet. First pet in my team example not all them. After i create tactic for this pet, i change pet at slot1 and repeat. Read my pet enter conditions and save. Is it possible to add such an interface ?

Well, everything is possible, question is in priorities. I was thinking of using profiles to store external tactics (see item 4 in my roadmap). But it will be easier indeed to fill tactics when looking at the particular pet (which is how I do them, anyway). GUI can definitely help... But I try to think of it in background while working on the nearest things.
 
ok didnt understand that whitelisting how can i tell te bot only attack unborn Valkyr or sth. else. My wish is that the bot fly around and only attack the unborn......
 
Here is Min Level marked as (1):
MinLevel_n_Team-M.png
Yeah I saw that, but for me there is no drop-down menu for me to select a level. It's fine because I am just using the Favourite feature to level a selected bunch of pets but would like to know why these options aren't showing up too :)
 
Is anyone ells having trouble with the svn link ? i keep getting Github page not found or the svn client askes for user name and password
 
The only thing immediately suspicious seems this one:
"Arcane Storm") () => buffLeft("Arcane Storm") < 9
That will try to fire next round after application, basically making this unconditional, striking when a CD is off (which is not a bad thing by itself if the attack is strong - but you may just omit the condition in this case). If the intention was to keep Arcane Storm always on, you may check buffLeft("Arcane Storm") < 2.

Ok, this one compiles (I placed it in custom.cs) but it doesnt seem to be using the abilities, it just uses arcane slash (i.e. Button 1) But if I understande the tactics correctly it SHOULD only use that when enemy hp is low. It SHOULD cast arcane storm if that isn't active, and it should use Early advantage if enemys hp is lower than the whelplings own. And otherwise, just use tail swipe

Or am I missing something?

Edit: Actually, it does use Early advantage (Starts with that, since I am curretly fighting wild pets that is always lower in level than the whelpling, thus lower hp) and then it doesnt use anything but Arcane Slash

Code:
			else if (petName == "Bronze Whelpling" )
                custom_abilities = new List<AandC>()
		{
		new AandC( "Arcane Slash",      () => hpEnemy < 0.2 				),	// Slot 1
		new AandC( "Arcane Storm",      () => buffLeft("Arcane Storm") < 2	),	// Slot 3
		new AandC( "Early Advantage",   () => hpEnemy < hp					),	// Slot 2
		new AandC( "Tail Sweep"	    										),	// Slot 1
		new AandC( "Arcane Slash" 			                      			),	// Slot 1
		new AandC( "Crystal Prison" 		                        		),	// Slot 2
		};
 
Last edited:
I have under general "ringer x2" in mode, under Team Selection Min lvl 20, max lvl 24, min pet health 90, min h ringer 90, no check in wild pets, fav only pets, or fav only ringers, bules only is cheked... in ringers x2 mode screen I have Pet2 to differ 25 (grey cant change), pet3 to differ 25, selectZone 5, battle swap 100, 0, 0... and it generated a group w/ a lvl 1, 25, and 25. I have 22 pets lvl 20-24. I'm not sure what I'm doing wrong.

Why uncheck wild pets if you have use favorite pets checked? Leave that alone if your giving conditions. Not sure what pets you use but try that.
 
I decided to help out a bit by creating a few tactics for missing pets. I will publish them after testing, but a few questions came up:

1. Could we get a buffCount and debuffCount for our tactic design? The spell "High Fiber" of the pet "Pierre" for example removes all auras from your team and it would be ridiculous to form a huge OR statement to check for all possible auras. Should be very easy to implement since the Lua for buffs/debuffs already uses the aura count in a variable. It would just be a matter of returning that value in a new function.

2. This one is a bit more work just because someone would have to create the list: I would love to see a dictionary of positive and negative auras and then have a way to check for the count of those. If you look at my "High Fiber" example in #1 it would be great to do
Code:
new AandC("High Fiber",  () => negativeBuffCount() > 0 && !buff("Heat Up"))

And I agree with your assessment: It would probably have been better to move away from the buff/debuff naming convention. I guess something like petAuras/teamAuras/enemyAuras/enemyTeamAuras would have been better and made room for distinguishing buffs and debuffs in the correct way. I am not complaining and I would myself shy away from refactoring that... Still would be nice to have. :-)

3. I might have found a possible Bug in MyPets.cs:227ff
Code:
        public static bool shouldIHide()
        {
            if (debuff("Underwater") || debuff("[COLOR="#FF0000"]Undeground[/COLOR]") || debuff("Chew") || debuff("Flying"))
                return true;
            // TODO: check "Flying" debuff by id? since all flying pets have diff debuff with the same "Flying" name (id 239, speed boost while healthy) vs. Flying id 341 as a result of Lift-Off
            // currently we are blocking 239 inside Lua code. Probably it's ok. 
            return false;
        }

"Undeground" should probably be "Underground", right?

4. How about adding a condition to check for the number of living enemy pets? Could be very useful for a lot of multi-target spells.

Edit:

Here are the first two tactics for the Mechanical.cs:
Code:
            if (petName == "Pierre")
            {
                // High Fiber should only be cast if a negative aura is on our team and Heat Up is not active
                // Should be changed, if required condition check becomes available
                custom_abilities = new List<AandC>() 
                {
                    
                    new AandC("Stench",     () => !debuff("Stench")), // Slot 2
                    new AandC("Food Coma",  () => !debuff("Asleep")), // Slot 3
                    new AandC("Heat Up"), // Slot 2
                    new AandC("High Fiber", () => !buff("Heat Up")), // Slot 3 
                    new AandC("Chop"), // Slot 1
                    new AandC("Frying Pan") // Slot 1
                };
            }

            if (petName == "Ancient Nest Guardian")
            {
                // Feathered Frenzy is a fallback spell for elemental or aquatic enemies
                // Entangling Roots is a fallback spell for elemental or mechanical enemies
                custom_abilities = new List<AandC>() 
                {
                    new AandC("Feathered Frenzy", () => weak("Metal Fist") || strong("Feathered Frenzy")), // Slot 3
                    new AandC("Extra Plating", () => !buff("Extra Plating")), // Slot 2
                    new AandC("Entangling Roots", () => weak("Metal Fist") || strong("Entangling Roots")), // Slot 2
                    new AandC("Wind-Up", () => hpEnemy > 0.5), // Slot 3
                    new AandC("Metal Fist"), // Slot 1
                    new AandC("Batter"), // Slot 1
                };
            }
 
Last edited:
I have taken a look into the whole "custom name vs name" issue and the fix looks incredibly easy.

MyPets.cs:89

Change
Code:
l = Lua.GetReturnValues("
local speciesID = C_PetBattles.GetPetSpeciesID(1, " + (i + 1) + ") 
local level = C_PetBattles.GetLevel(1, " + (i + 1) + ") 
local xp, maxXP = C_PetBattles.GetXP(1, " + (i + 1) + ") 
local displayID = C_PetBattles.GetDisplayID(1, " + (i + 1) + ") 
[COLOR="#FF0000"]local name = C_PetBattles.GetName(1, " + (i + 1) + ")[/COLOR] 
local icon = C_PetBattles.GetIcon(1, " + (i + 1) + ") 
local petType = C_PetBattles.GetPetType(1, " + (i + 1) + ") 
local health = C_PetBattles.GetHealth(1, " + (i + 1) + ") 
local maxHealth = C_PetBattles.GetMaxHealth(1, " + (i + 1) + ") 
local power = C_PetBattles.GetPower(1, " + (i + 1) + ") 
local speed = C_PetBattles.GetSpeed(1, " + (i + 1) + ")
local rarity = C_PetBattles.GetBreedQuality(1, " + (i + 1) + ") 
local petID = C_PetJournal.GetPetLoadOutInfo(" + (i + 1) + ") 
return speciesID, level, xp, maxXP, displayID, name, icon, petType, health, maxHealth, power, speed, rarity, petID");

into
Code:
l = Lua.GetReturnValues("
local speciesID = C_PetBattles.GetPetSpeciesID(1, " + (i + 1) + ") 
local level = C_PetBattles.GetLevel(1, " + (i + 1) + ") 
local xp, maxXP = C_PetBattles.GetXP(1, " + (i + 1) + ") 
local displayID = C_PetBattles.GetDisplayID(1, " + (i + 1) + ") 
[COLOR="#FF0000"]local customName, name = C_PetBattles.GetName(1, " + (i + 1) + ")[/COLOR] 
local icon = C_PetBattles.GetIcon(1, " + (i + 1) + ") 
local petType = C_PetBattles.GetPetType(1, " + (i + 1) + ") 
local health = C_PetBattles.GetHealth(1, " + (i + 1) + ") 
local maxHealth = C_PetBattles.GetMaxHealth(1, " + (i + 1) + ") 
local power = C_PetBattles.GetPower(1, " + (i + 1) + ") 
local speed = C_PetBattles.GetSpeed(1, " + (i + 1) + ")
local rarity = C_PetBattles.GetBreedQuality(1, " + (i + 1) + ") 
local petID = C_PetJournal.GetPetLoadOutInfo(" + (i + 1) + ") 
return speciesID, level, xp, maxXP, displayID, name, icon, petType, health, maxHealth, power, speed, rarity, petID");

The second return value of C_PetBattles.GetName() is always the real pet name. If no custom name is set, both values return the same string so it should be fine.
 
@Prostak

any chance you could add some sort of logic, so that if the boosted pet dies - it forfiets?
 
@Prostak

any chance you could add some sort of logic, so that if the boosted pet dies - it forfiets?

this is a really good idea. Would allow starting at level 3 instead of 7 and possibly even level 1 depending on where your doing your ringer profile...
 
Back
Top