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