private HREngine.API.Actions.ActionBase HandleBattleMulliganPhase() { if (Settings.Instance.learnmode) { return(new HREngine.API.Actions.MakeNothingAction()); } //Helpfunctions.Instance.ErrorLog("handle mulligan"); if (HRMulligan.IsMulliganActive()) { var list = HRCard.GetCards(HRPlayer.GetLocalPlayer(), HRCardZone.HAND); HRPlayer enemyPlayer = HRPlayer.GetEnemyPlayer(); HRPlayer ownPlayer = HRPlayer.GetLocalPlayer(); string enemName = Hrtprozis.Instance.heroIDtoName(enemyPlayer.GetHeroCard().GetEntity().GetCardId()); string ownName = Hrtprozis.Instance.heroIDtoName(ownPlayer.GetHeroCard().GetEntity().GetCardId()); if (Mulligan.Instance.hasmulliganrules(ownName, enemName)) { List <Mulligan.CardIDEntity> celist = new List <Mulligan.CardIDEntity>(); foreach (var item in list) { if (item.GetEntity().GetCardId() != "GAME_005")// dont mulligan coin { celist.Add(new Mulligan.CardIDEntity(item.GetEntity().GetCardId(), item.GetEntity().GetEntityId())); } } List <int> mullientitys = Mulligan.Instance.whatShouldIMulligan(celist, ownName, enemName); foreach (var item in list) { if (mullientitys.Contains(item.GetEntity().GetEntityId())) { Helpfunctions.Instance.ErrorLog("Rejecting Mulligan Card " + item.GetEntity().GetName() + " because of your rules"); HRMulligan.ToggleCard(item); } } } else { foreach (var item in list) { if (item.GetEntity().GetCost() >= 4) { Helpfunctions.Instance.ErrorLog("Rejecting Mulligan Card " + item.GetEntity().GetName() + " because it cost is >= 4."); HRMulligan.ToggleCard(item); } if (item.GetEntity().GetCardId() == "EX1_308" || item.GetEntity().GetCardId() == "EX1_622" || item.GetEntity().GetCardId() == "EX1_005") { Helpfunctions.Instance.ErrorLog("Rejecting Mulligan Card " + item.GetEntity().GetName() + " because it is soulfire or shadow word: death"); HRMulligan.ToggleCard(item); } } } sf.setnewLoggFile(); //writeSettings(); if (Mulligan.Instance.loserLoserLoser) { if (!autoconcede()) { concedeVSenemy(ownName, enemName); } } return(null); //HRMulligan.EndMulligan(); } return(null); }