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

    Discussion in 'Botbases' started by Prostak, Jan 7, 2015.

    1. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      Here is Min Level marked as (1):
      [​IMG]
       
    2. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      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).

      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.
       
    3. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      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.
       
    4. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      Yep. Except the pets made intentionally hard to get. You will need to plan a catching campaign for these ones.
       
    5. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      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.
       
    6. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      >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.
       
    7. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      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.
       
    8. Darkangel12

      Darkangel12 New Member

      Joined:
      Dec 17, 2014
      Messages:
      43
      Likes Received:
      0
      Trophy Points:
      0
      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......
       
    9. Valla

      Valla Member

      Joined:
      Jan 15, 2015
      Messages:
      42
      Likes Received:
      1
      Trophy Points:
      8
      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 :)
       
    10. gareth31080

      gareth31080 New Member

      Joined:
      Jan 22, 2012
      Messages:
      12
      Likes Received:
      0
      Trophy Points:
      1
      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
       
    11. Valpsjuk

      Valpsjuk Member

      Joined:
      Nov 10, 2014
      Messages:
      397
      Likes Received:
      4
      Trophy Points:
      18
      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: Jan 17, 2015
    12. Valpsjuk

      Valpsjuk Member

      Joined:
      Nov 10, 2014
      Messages:
      397
      Likes Received:
      4
      Trophy Points:
      18
      Make sure you use the correct link:

      https://github.com/Prostak/Prosto_Pets/trunk/Prosto_Pets

      Right click on that and select "Copy linkadress", forum tends to truncate long url's
       
      Prostak likes this.
    13. gareth31080

      gareth31080 New Member

      Joined:
      Jan 22, 2012
      Messages:
      12
      Likes Received:
      0
      Trophy Points:
      1

      Thanks that worked. could not right click the link in the 1 post for some reason
       
    14. HBfanboy1980

      HBfanboy1980 Active Member

      Joined:
      Jan 16, 2012
      Messages:
      1,139
      Likes Received:
      11
      Trophy Points:
      38
      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.
       
    15. Studio60

      Studio60 Well-Known Member Buddy Store Developer

      Joined:
      Sep 3, 2014
      Messages:
      3,411
      Likes Received:
      48
      Trophy Points:
      48
      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: Jan 17, 2015
      Prostak and Valpsjuk like this.
    16. andrezoo

      andrezoo New Member

      Joined:
      Nov 30, 2010
      Messages:
      20
      Likes Received:
      0
      Trophy Points:
      0
      Prostak....thank you soooooo much!
       
    17. Studio60

      Studio60 Well-Known Member Buddy Store Developer

      Joined:
      Sep 3, 2014
      Messages:
      3,411
      Likes Received:
      48
      Trophy Points:
      48
      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.
       
    18. Mikra

      Mikra New Member

      Joined:
      Jun 6, 2011
      Messages:
      20
      Likes Received:
      0
      Trophy Points:
      0
      @Prostak

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

      HBfanboy1980 Active Member

      Joined:
      Jan 16, 2012
      Messages:
      1,139
      Likes Received:
      11
      Trophy Points:
      38
      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...
       
    20. Prostak

      Prostak Member

      Joined:
      Mar 17, 2013
      Messages:
      249
      Likes Received:
      16
      Trophy Points:
      18
      That is whitelisting, yes. It is not implemented yet.
       

    Share This Page