HearthBuddy\Routines\DefaultRoutine\DefaultRoutine .cs (mulligan + calculation tweaks). I have no idea have to do this, but i would really to know how to do. If any of you guys know how, please let me know, Thanks ! This bot's doing so idiot things..perhaps because there is no mulligan + calculation tweaks for me??? Please help me guys.
Hi AnonymusQQ Copy - past - replaces this DefaultRoutine .cs . into yours replace all This routines works good anjoy using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Markup; using Buddy.Coroutines; using HREngine.Bots; using IronPython.Modules; using log4net; using Microsoft.Scripting.Hosting; using Triton.Bot; using Triton.Common; using Triton.Game; using Triton.Game.Data; //!CompilerOption|AddRef|IronPython.dll //!CompilerOption|AddRef|IronPython.Modules.dll //!CompilerOption|AddRef|Microsoft.Scripting.dll //!CompilerOption|AddRef|Microsoft.Dynamic.dll //!CompilerOption|AddRef|Microsoft.Scripting.Metadata.dll using Triton.Game.Mapping; using Logger = Triton.Common.LogUtilities.Logger; namespace HREngine.Bots { public class DefaultRoutine : IRoutine { private static readonly ILog Log = Logger.GetLoggerInstanceForType(); private readonly ScriptManager _scriptManager = new ScriptManager(); private readonly List<Tuple<string, string>> _mulliganRules = new List<Tuple<string, string>>(); private int dirtyTargetSource = -1; private int stopAfterWins = 30; private int concedeLvl = 5; // the rank, till you want to concede private int dirtytarget = -1; private int dirtychoice = -1; private string choiceCardId = ""; DateTime starttime = DateTime.Now; bool enemyConcede = false; public bool learnmode = false; public bool printlearnmode = true; Behavior behave = new BehaviorControl();//change this to new BehaviorRush() for rush mode //Behavior behave = new BehaviorRush(); public DefaultRoutine() { // Global rules. Never keep a 3+ minion, unless it's deathlord (priest). _mulliganRules.Add(new Tuple<string, string>("True", "card.Entity.Cost >= 3 and card.Entity.Id != "FP1_009"")); // Never keep aldorpeacekeeper. _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.PALADIN", "card.Entity.Id == "EX1_382"")); // Never keep Equality. _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.PALADIN", "card.Entity.Id == "EX1_619"")); // Never keep Tracking. _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.HUNTER", "card.Entity.Id == "DS1_184"")); // Example rule for self. //_mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.MAGE", "card.Cost >= 5")); // Example rule for opponents. //_mulliganRules.Add(new Tuple<string, string>("mulliganData.OpponentClass == TAG_CLASS.MAGE", "card.Cost >= 3")); // Never keep repentance. _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.PALADIN", "card.Entity.Id == "EX1_379"")); // Never keep aldorpeacekeeper. _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.PALADIN", "card.Entity.Id == "EX1_382"")); // Never keep redemption. _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.PALADIN", "card.Entity.Id == "EX1_136"")); // Never keep Competitive spirit. _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.PALADIN", "card.Entity.Id == "AT_073"")); // Never keep equality _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.PALADIN", "card.Entity.Id == "EX1_619"")); // Never keep ironbeakowl _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.PALADIN", "card.Entity.Id == "CS2_203"")); // Never keep savageroar _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.DRUID", "card.Entity.Id == "CS2_011"")); // Never keep innervate _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.DRUID", "card.Entity.Id == "EX1_169"")); // Never keep biggamehunter. _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.WARLOCK", "card.Entity.Id == "EX1_005"")); // Never keep innerfire _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.PRIEST", "card.Entity.Id == "CS1_129"")); // Never keep divinespirit _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.PRIEST", "card.Entity.Id == "CS2_236"")); _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.WARRIOR", "card.Entity.Id == "EX1_005"")); _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.ROGUE", "card.Entity.Id == "EX1_005"")); _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.PALADIN", "card.Entity.Id == "EX1_005"")); _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.MAGE", "card.Entity.Id == "EX1_005"")); _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.DRUID", "card.Entity.Id == "EX1_005"")); _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.PRIEST", "card.Entity.Id == "EX1_005"")); _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.SHAMAN", "card.Entity.Id == "EX1_005"")); _mulliganRules.Add(new Tuple<string, string>("mulliganData.UserClass == TAG_CLASS.HUNTER", "card.Entity.Id == "EX1_005"")); // Example rule for matchups. //_mulliganRules.Add(new Tuple<string, string>("mulliganData.userClass == TAG_CLASS.HUNTER && mulliganData.OpponentClass == TAG_CLASS.DRUID", "card.Cost >= 2")); bool concede = false; // play with these settings################################### int enfacehp = 15; // hp of enemy when your hero is allowed to attack the enemy face with his weapon int mxwde = 0; // numer of boards which are taken to the next deep-lvl int twotsamount = 0; // number of boards where the next turn is simulated bool enemySecondTurnSim = true; // if he simulates the next players-turn, he also simulates the enemys respons bool playaround = true; //play around some enemys aoe-spells? //these two probs are >= 0 and <= 100 int playaroundprob = 50; //probability where the enemy plays the aoe-spell, but your minions will not die through it int playaroundprob2 = 80; // probability where the enemy plays the aoe-spell, and your minions can die! int amountBoardsInEnemyTurnSim = 70; int amountBoardsInEnemyTurnSimSecondStepp = 200; int amountBoardsInEnemySecondTurnSim = 70; int nextturnsimDeep = 6; int nextturnsimMaxWidth = 200; int nexttunsimMaxBoards = 400; int ImprovedCalculations = 1; bool secrets = true; // playing arround enemys secrets int alpha = 50; // weight of the second turn in calculation (0<= alpha <= 100) HREngine.Bots.Settings.Instance.simulatePlacement = false; //rudiment!!! set this true, and ai will simulate all placements, whether you have a alpha/flametongue/argus