本文整理汇总了C#中HREngine.Bots.Playfield.doAction方法的典型用法代码示例。如果您正苦于以下问题:C# Playfield.doAction方法的具体用法?C# Playfield.doAction怎么用?C# Playfield.doAction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HREngine.Bots.Playfield
的用法示例。
在下文中一共展示了Playfield.doAction方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: simmulateWholeTurn
public void simmulateWholeTurn()
{
help.ErrorLog("########################################################################################################");
help.ErrorLog("simulate best board");
help.ErrorLog("########################################################################################################");
//this.bestboard.printActions();
Playfield tempbestboard = new Playfield();
tempbestboard.printBoard();
if (bestmove != null && bestmove.actionType != actionEnum.endturn) // save the guessed move, so we doesnt need to recalc!
{
bestmove.print();
tempbestboard.doAction(bestmove);
}
else
{
tempbestboard.mana = -100;
}
help.logg("-------------");
tempbestboard.printBoard();
foreach (Action bestmovee in this.bestActions)
{
help.logg("stepp");
if (bestmovee != null && bestmovee.actionType != actionEnum.endturn) // save the guessed move, so we doesnt need to recalc!
{
bestmovee.print();
tempbestboard.doAction(bestmovee);
}
else
{
tempbestboard.mana = -100;
}
help.logg("-------------");
tempbestboard.printBoard();
}
//help.logg("AFTER ENEMY TURN:" );
tempbestboard.sEnemTurn = true;
tempbestboard.endTurn(false, this.playaround, false, Settings.Instance.playaroundprob, Settings.Instance.playaroundprob2);
help.logg("ENEMY TURN:-----------------------------");
tempbestboard.value = int.MinValue;
tempbestboard.prepareNextTurn(tempbestboard.isOwnTurn);
Ai.Instance.enemyTurnSim[0].simulateEnemysTurn(tempbestboard, true, playaround, true, Settings.Instance.playaroundprob, Settings.Instance.playaroundprob2);
}
示例2: simmulateWholeTurnandPrint
public void simmulateWholeTurnandPrint()
{
help.ErrorLog("###################################");
help.ErrorLog("what would silverfish do?---------");
help.ErrorLog("###################################");
if (this.bestmoveValue >= 10000) help.ErrorLog("DETECTED LETHAL ###################################");
//this.bestboard.printActions();
Playfield tempbestboard = new Playfield();
if (bestmove != null && bestmove.actionType != actionEnum.endturn) // save the guessed move, so we doesnt need to recalc!
{
tempbestboard.doAction(bestmove);
tempbestboard.printActionforDummies(tempbestboard.playactions[tempbestboard.playactions.Count - 1]);
if (this.bestActions.Count == 0)
{
help.ErrorLog("end turn");
}
}
else
{
tempbestboard.mana = -100;
help.ErrorLog("end turn");
}
foreach (Action bestmovee in this.bestActions)
{
if (bestmovee != null && bestmove.actionType != actionEnum.endturn) // save the guessed move, so we doesnt need to recalc!
{
//bestmovee.print();
tempbestboard.doAction(bestmovee);
tempbestboard.printActionforDummies(tempbestboard.playactions[tempbestboard.playactions.Count - 1]);
}
else
{
tempbestboard.mana = -100;
help.ErrorLog("end turn");
}
}
}
示例3: simmulateWholeTurn
public void simmulateWholeTurn()
{
help.ErrorLog("####################################################");
help.logg("simulate best board");
help.ErrorLog("####################################################");
//this.bestboard.printActions();
Playfield tempbestboard = new Playfield();
if (bestmove != null) // save the guessed move, so we doesnt need to recalc!
{
bestmove.print();
tempbestboard.doAction(bestmove);
}
else
{
tempbestboard.mana = -100;
}
help.logg("-------------");
tempbestboard.printBoard();
foreach (Action bestmovee in bestboard.playactions)
{
help.logg("stepp");
if (bestmovee != null) // save the guessed move, so we doesnt need to recalc!
{
bestmovee.print();
tempbestboard.doAction(bestmovee);
}
else
{
tempbestboard.mana = -100;
}
help.logg("-------------");
tempbestboard.printBoard();
}
help.logg("AFTER ENEMY TURN:");
tempbestboard.sEnemTurn = this.simulateEnemyTurn;
tempbestboard.endTurn(this.secondturnsim, this.playaround, true);
}
示例4: simmulateWholeTurnandPrint
public void simmulateWholeTurnandPrint()
{
help.ErrorLog("####################################################");
help.ErrorLog("what would silverfish do?---------");
help.ErrorLog("####################################################");
//this.bestboard.printActions();
Playfield tempbestboard = new Playfield();
if (bestmove != null) // save the guessed move, so we doesnt need to recalc!
{
tempbestboard.printActionforDummies(bestmove);
tempbestboard.doAction(bestmove);
}
else
{
tempbestboard.mana = -100;
help.ErrorLog("end turn");
}
foreach (Action bestmovee in bestboard.playactions)
{
tempbestboard.printActionforDummies(bestmovee);
if (bestmovee != null) // save the guessed move, so we doesnt need to recalc!
{
bestmovee.print();
tempbestboard.doAction(bestmovee);
}
else
{
tempbestboard.mana = -100;
help.ErrorLog("end turn");
}
}
}
示例5: doallmoves
public float doallmoves(Playfield playf, bool isLethalCheck, bool print = false)
{
//todo only one time!
this.doEnemySecondTurn = sf.Settings.simEnemySecondTurn;
int totalboards = sf.Settings.nextTurnTotalBoards;
int maxwide = sf.Settings.nextTurnMaxWide;
int maxdeep = sf.Settings.nextTurnDeep;
bool playaround = sf.Settings.playarround;
int playaroundprob = sf.Settings.playaroundprob;
int playaroundprob2 = sf.Settings.playaroundprob2;
//Helpfunctions.Instance.logg("NXTTRN" + playf.mana);
if (botBase == null) botBase = sf.Ai.botBase;
bool test = false;
this.posmoves.Clear();
this.addToPosmoves(playf, totalboards);
bool havedonesomething = true;
List<Playfield> temp = new List<Playfield>();
int deep = 0;
//Helpfunctions.Instance.logg("NXTTRN" + playf.mana + " " + posmoves.Count);
this.calculated = 0;
while (havedonesomething)
{
//if (this.printNormalstuff) Helpfunctions.Instance.logg("ailoop");
//GC.Collect();
temp.Clear();
temp.AddRange(this.posmoves);
havedonesomething = false;
Playfield bestold = null;
float bestoldval = -20000000;
foreach (Playfield p in temp)
{
if (p.complete || p.ownHero.Hp <= 0)
{
continue;
}
List<Action> actions = sf.Movegenerator.getMoveList(p, isLethalCheck, usePenalityManager, useCutingTargets);
foreach (Action a in actions)
{
havedonesomething = true;
Playfield pf = new Playfield(p);
pf.doAction(a);
addToPosmoves(pf, totalboards);
}
if (isLethalCheck)
{
p.complete = true;
}
else
{
p.sEnemTurn = this.doEnemySecondTurn;
p.endTurn(this.simulateSecondTurn, playaround, false, playaroundprob, playaroundprob2);
this.startEnemyTurnSim(p, this.simulateSecondTurn, false, playaround, playaroundprob, playaroundprob2);
}
//sort stupid stuff ouf
if (botBase.getPlayfieldValue(p) > bestoldval)
{
bestoldval = botBase.getPlayfieldValue(p);
bestold = p;
}
if (!test)
{
posmoves.Remove(p);
}
if (this.calculated > totalboards) break;
}
if (!test && bestoldval >= -10000 && bestold != null)
{
this.posmoves.Add(bestold);
}
//Helpfunctions.Instance.loggonoff(true);
/*if (this.printNormalstuff)
{
int donec = 0;
foreach (Playfield p in posmoves)
{
if (p.complete) donec++;
}
Helpfunctions.Instance.logg("deep " + deep + " len " + this.posmoves.Count + " dones " + donec);
}*/
if (!test)
{
cuttingposibilities(maxwide);
}
//if (this.printNormalstuff) Helpfunctions.Instance.logg("cut to len " + this.posmoves.Count);
//Helpfunctions.Instance.loggonoff(false);
deep++;
//.........这里部分代码省略.........
示例6: simulateEnemysTurn
public void simulateEnemysTurn(Playfield rootfield, bool simulateTwoTurns, bool playaround, bool print, int pprob, int pprob2)
{
bool havedonesomething = true;
posmoves.Clear();
if (print)
{
Helpfunctions.Instance.ErrorLog("board at enemyturn start-----------------------------");
rootfield.printBoard();
}
posmoves.Add(new Playfield(rootfield));
//posmoves[0].prepareNextTurn(false);
List<Playfield> temp = new List<Playfield>();
int deep = 0;
int enemMana = rootfield.enemyMaxMana;
if (print)
{ Console.WriteLine("enemMana "+ enemMana); }
//playing aoe-effects if activated (and we didnt play loatheb)
if (playaround && rootfield.ownloatheb == 0)
{
float oldval = Ai.Instance.botBase.getPlayfieldValue(posmoves[0]);
posmoves[0].value = int.MinValue;
enemMana = posmoves[0].EnemyCardPlaying(rootfield.enemyHeroName, enemMana, rootfield.enemyAnzCards, pprob, pprob2);
float newval = Ai.Instance.botBase.getPlayfieldValue(posmoves[0]);
posmoves[0].value = int.MinValue;
posmoves[0].enemyAnzCards--;
posmoves[0].triggerCardsChanged(false);
posmoves[0].mana = enemMana;
if (oldval < newval)
{
posmoves.Clear();
posmoves.Add(new Playfield(rootfield));
}
}
//play ability!
if (posmoves[0].enemyAbilityReady && enemMana >= 2 && posmoves[0].enemyHeroAblility.card.canplayCard(posmoves[0], 0) && rootfield.ownSaboteur == 0)//loatheb doesnt do anything to heropower
{
int abilityPenality = 0;
havedonesomething = true;
// if we have mage or priest or hunter, we have to target something####################################################
if (penmanager.TargetAbilitysDatabase.ContainsKey(posmoves[0].enemyHeroAblility.card.cardIDenum))
{
List<Minion> trgts = posmoves[0].enemyHeroAblility.card.getTargetsForCardEnemy(posmoves[0]);
foreach (Minion trgt in trgts)
{
if (trgt.isHero) continue;
Action a = new Action(actionEnum.useHeroPower, posmoves[0].enemyHeroAblility, null, 0, trgt, abilityPenality, 0);
Playfield pf = new Playfield(posmoves[0]);
pf.doAction(a);
posmoves.Add(pf);
}
}
else
{
bool hasinspire = false;
foreach (Minion minie in rootfield.enemyMinions)
{
if (minie.handcard.card.hasInspire) hasinspire = true;
}
// the other classes dont have to target####################################################
if ((rootfield.enemyHeroName == HeroEnum.thief && rootfield.enemyWeaponDurability == 0) || rootfield.enemyHeroName != HeroEnum.thief || hasinspire)
{
Action a = new Action(actionEnum.useHeroPower, posmoves[0].enemyHeroAblility, null, 0, null, abilityPenality, 0);
Playfield pf = new Playfield(posmoves[0]);
pf.doAction(a);
posmoves.Add(pf);
}
}
}
//kill to strong minions with low hp
/*if (enemMana >= 4)
{
foreach (Playfield pf in posmoves)
{
Minion lowest = null;
foreach (Minion m in pf.ownMinions)
{
if (m.Angr >= 4 && m.Hp <= 2 && m.Hp>=1)
{
pf.minionGetDamageOrHeal(m, 100);
if (lowest == null || lowest.Angr <= m.Angr)
{
// lowest = m;
}
}
}
pf.doDmgTriggers();
if (lowest != null)
//.........这里部分代码省略.........
示例7: doallmoves
public float doallmoves(Playfield playf, bool isLethalCheck)
{
//Helpfunctions.Instance.logg("NXTTRN" + playf.mana);
if (botBase == null) botBase = Ai.Instance.botBase;
bool test = false;
this.posmoves.Clear();
this.twoturnfields.Clear();
this.addToPosmoves(playf);
bool havedonesomething = true;
List<Playfield> temp = new List<Playfield>();
int deep = 0;
//Helpfunctions.Instance.logg("NXTTRN" + playf.mana + " " + posmoves.Count);
this.calculated = 0;
while (havedonesomething)
{
if (this.printNormalstuff) Helpfunctions.Instance.logg("ailoop");
GC.Collect();
temp.Clear();
temp.AddRange(this.posmoves);
havedonesomething = false;
Playfield bestold = null;
float bestoldval = -20000000;
foreach (Playfield p in temp)
{
if (p.complete || p.ownHero.Hp <= 0)
{
continue;
}
//gernerate actions and play them!
List<Action> actions = movegen.getMoveList(p, isLethalCheck, usePenalityManager, useCutingTargets);
foreach (Action a in actions)
{
//if (deep == 0 && a.actionType == actionEnum.playcard) Helpfunctions.Instance.ErrorLog("play " + a.card.card.name);
havedonesomething = true;
Playfield pf = new Playfield(p);
pf.doAction(a);
addToPosmoves(pf);
}
// end the turn of the current board (only if its not a lethalcheck)
if (isLethalCheck)
{
p.complete = true;
}
else
{
p.endTurn(this.simulateSecondTurn, this.playaround, false, this.playaroundprob, this.playaroundprob2);
}
//sort stupid stuff ouf
if (botBase.getPlayfieldValue(p) > bestoldval)
{
bestoldval = botBase.getPlayfieldValue(p);
bestold = p;
}
if (!test)
{
posmoves.Remove(p);
}
if (this.calculated > this.totalboards) break;
}
if (!test && bestoldval >= -10000 && bestold != null)
{
this.posmoves.Add(bestold);
}
//Helpfunctions.Instance.loggonoff(true);
if (this.printNormalstuff)
{
int donec = 0;
foreach (Playfield p in posmoves)
{
if (p.complete) donec++;
}
Helpfunctions.Instance.logg("deep " + deep + " len " + this.posmoves.Count + " dones " + donec);
}
if (!test)
{
cuttingposibilities();
}
if (this.printNormalstuff)
{
Helpfunctions.Instance.logg("cut to len " + this.posmoves.Count);
}
//Helpfunctions.Instance.loggonoff(false);
deep++;
if (this.calculated > this.totalboards) break;
if (deep >= this.maxdeep) break;//remove this?
}
foreach (Playfield p in posmoves)//temp
{
//.........这里部分代码省略.........
示例8: simulateEnemysTurn
public void simulateEnemysTurn(Playfield rootfield, bool simulateTwoTurns, bool playaround, bool print, int pprob, int pprob2)
{
bool havedonesomething = true;
posmoves.Clear();
posmoves.Add(new Playfield(rootfield));
//posmoves[0].prepareNextTurn(false);
List<Playfield> temp = new List<Playfield>();
int deep = 0;
int enemMana = Math.Min(rootfield.enemyMaxMana + 1, 10);
if (playaround && !rootfield.loatheb)
{
float oldval = Ai.Instance.botBase.getPlayfieldValue(posmoves[0]);
posmoves[0].value = int.MinValue;
enemMana = posmoves[0].EnemyCardPlaying(rootfield.enemyHeroName, enemMana, rootfield.enemyAnzCards, pprob, pprob2);
float newval = Ai.Instance.botBase.getPlayfieldValue(posmoves[0]);
posmoves[0].value = int.MinValue;
if (oldval < newval)
{
posmoves.Clear();
posmoves.Add(new Playfield(rootfield));
}
}
//play ability!
if (posmoves[0].enemyAbilityReady && enemMana >= 2 && posmoves[0].enemyHeroAblility.card.canplayCard(posmoves[0], 0) && !rootfield.loatheb)
{
int abilityPenality = 0;
havedonesomething = true;
// if we have mage or priest, we have to target something####################################################
if (posmoves[0].enemyHeroName == HeroEnum.mage || posmoves[0].enemyHeroName == HeroEnum.priest)
{
List<Minion> trgts = posmoves[0].enemyHeroAblility.card.getTargetsForCardEnemy(posmoves[0]);
foreach (Minion trgt in trgts)
{
if (trgt.isHero) continue;
Action a = new Action(actionEnum.useHeroPower, posmoves[0].enemyHeroAblility, null, 0, trgt, abilityPenality, 0);
Playfield pf = new Playfield(posmoves[0]);
pf.doAction(a);
posmoves.Add(pf);
}
}
else
{
// the other classes dont have to target####################################################
Action a = new Action(actionEnum.useHeroPower, posmoves[0].enemyHeroAblility, null, 0, null, abilityPenality, 0);
Playfield pf = new Playfield(posmoves[0]);
pf.doAction(a);
posmoves.Add(pf);
}
}
foreach (Minion m in posmoves[0].enemyMinions)
{
if (m.Angr == 0) continue;
m.numAttacksThisTurn = 0;
m.playedThisTurn = false;
m.updateReadyness();
}
doSomeBasicEnemyAi(posmoves[0]);
int count = 0;
//movegen...
while (havedonesomething)
{
temp.Clear();
temp.AddRange(posmoves);
havedonesomething = false;
Playfield bestold = null;
float bestoldval = 20000000;
foreach (Playfield p in temp)
{
if (p.complete)
{
continue;
}
List<Action> actions = movegen.getEnemyMoveList(p, false, true, true, 1);// 1 for not using ability moves
foreach (Action a in actions)
{
havedonesomething = true;
Playfield pf = new Playfield(p);
pf.doAction(a);
posmoves.Add(pf);
count++;
}
//p.endCurrentPlayersTurnAndStartTheNextOne(1, false);
p.endEnemyTurn();
//.........这里部分代码省略.........
示例9: simulateEnemysTurn
public void simulateEnemysTurn(Playfield rootfield, bool simulateTwoTurns, bool playaround, bool print, int pprob, int pprob2)
{
bool havedonesomething = true;
posmoves.Clear();
if (print)
{
sf.Helpfunctions.ErrorLog("board at enemyturn start-----------------------------");
rootfield.printBoard();
}
posmoves.Add(new Playfield(rootfield));
//posmoves[0].prepareNextTurn(false);
List<Playfield> temp = new List<Playfield>();
int deep = 0;
int enemMana = Math.Min(rootfield.enemyMaxMana + 1, 10);
if (playaround && !rootfield.loatheb)
{
float oldval = sf.Ai.botBase.getPlayfieldValue(posmoves[0]);
posmoves[0].value = int.MinValue;
enemMana = posmoves[0].EnemyCardPlaying(rootfield.enemyHeroStartClass, enemMana, rootfield.enemyAnzCards, pprob, pprob2);
float newval = sf.Ai.botBase.getPlayfieldValue(posmoves[0]);
posmoves[0].value = int.MinValue;
posmoves[0].enemyAnzCards--;
posmoves[0].triggerCardsChanged(false);
if (oldval < newval)
{
posmoves.Clear();
posmoves.Add(new Playfield(rootfield));
}
}
//play ability!
if (posmoves[0].enemyAbilityReady && enemMana >= 2 && posmoves[0].enemyHeroAblility.card.canplayCard(posmoves[0], 0) && !rootfield.loatheb)
{
int abilityPenality = 0;
havedonesomething = true;
// if we have mage/priest/hunter, we have to target something####################################################
if (posmoves[0].enemyHeroName == HeroEnum.mage || posmoves[0].enemyHeroName == HeroEnum.priest || posmoves[0].enemyHeroName == HeroEnum.hunter)
{
List<Minion> trgts = posmoves[0].enemyHeroAblility.card.getTargetsForCardEnemy(posmoves[0]);
foreach (Minion trgt in trgts)
{
if (trgt.isHero) continue;
Action a = new Action(actionEnum.useHeroPower, posmoves[0].enemyHeroAblility, null, 0, trgt, abilityPenality, 0);
Playfield pf = new Playfield(posmoves[0]);
pf.doAction(a);
posmoves.Add(pf);
}
}
else
{
// the other classes dont have to target####################################################
Action a = new Action(actionEnum.useHeroPower, posmoves[0].enemyHeroAblility, null, 0, null, abilityPenality, 0);
Playfield pf = new Playfield(posmoves[0]);
pf.doAction(a);
posmoves.Add(pf);
}
}
foreach (Minion m in posmoves[0].enemyMinions)
{
if (m.Angr == 0) continue;
m.numAttacksThisTurn = 0;
m.playedThisTurn = false;
m.updateReadyness();
}
doSomeBasicEnemyAi(posmoves[0]);
int boardcount = 0;
//sf.Movegenerator...
int i = 0;
int count = 0;
Playfield p = null;
while (havedonesomething)
{
temp.Clear();
temp.AddRange(posmoves);
havedonesomething = false;
Playfield bestold = null;
float bestoldval = 20000000;
//foreach (Playfield p in temp)
count = temp.Count;
for (i = 0; i < count; i++)
{
p = temp[i];
if (p.complete)
{
continue;
//.........这里部分代码省略.........
示例10: doallmoves
//.........这里部分代码省略.........
aList = aList + " oname:---";
}
}
if (a.place != null)
{
try
{
aList = aList + " place:" + a.place.ToString();
}
catch
{
aList = aList + " place:---";
}
}
if (a.penalty != null)
{
try
{
aList = aList + " penalty:" + a.penalty.ToString();
}
catch
{
aList = aList + " penalty:---";
}
}
sf.helpfunctions.ErrorLog(aList);*/
//if (deep == 0 && a.actionType == actionEnum.attackWithMinion) sf.helpfunctions.ErrorLog("play " + a.own.entitiyID + " -> " + a.target.entitiyID);
havedonesomething = true;
Playfield pf = new Playfield(p);
pf.doAction(a);
addToPosmoves(pf);
//HRSim.Helpfunctions.Instance.logTime("action itr");
}
//sf.helpfunctions.ErrorLog("deep " + deep + " len " + this.posmoves.Count);
// end the turn of the current board (only if its not a lethalcheck)
if (isLethalCheck)
{
p.complete = true;
}
else
{
//end turn of enemy
p.endTurn(this.simulateSecondTurn, this.playaround, false, this.playaroundprob, this.playaroundprob2);
//simulate the enemys response
this.startEnemyTurnSim(p, this.simulateSecondTurn, false);
}
//sort stupid stuff ouf
if (botBase.getPlayfieldValue(p) > bestoldval)
{
bestoldval = botBase.getPlayfieldValue(p);
bestold = p;
}
if (!test)
{
posmoves.Remove(p);
}
//HRSim.Helpfunctions.Instance.logTime("tempp itr");
示例11: reorderingActions
private void reorderingActions()
{
if (bestplay.enemySecretCount > 0) return;
if (bestplay.playactions.Count < 2) return;
if (Ai.Instance.botBase.getPlayfieldValue(bestplay) < 10000) return;
Playfield tmpPf = new Playfield();
if (tmpPf.anzEnemyTaunt > 0) return;
List<Action> reorderedActions = new List<Action>();
Dictionary<Action, int> actDmgDict = new Dictionary<Action, int>();
tmpPf.enemyHero.Hp = 30;
try
{
int useability = 0;
foreach (Action a in bestplay.playactions)
{
if (a.actionType == actionEnum.useHeroPower) useability = 1;
if (a.actionType == actionEnum.attackWithHero) useability++;
int actDmd = tmpPf.enemyHero.Hp + tmpPf.enemyHero.armor;
tmpPf.doAction(a);
actDmd -= (tmpPf.enemyHero.Hp + tmpPf.enemyHero.armor);
actDmgDict.Add(a, actDmd);
}
if (useability > 1) return;
}
catch { return; }
foreach (var pair in actDmgDict.OrderByDescending(pair => pair.Value))
{
reorderedActions.Add(pair.Key);
}
tmpPf = new Playfield();
foreach (Action a in reorderedActions)
{
bool found = false;
switch (a.actionType)
{
case actionEnum.playcard:
foreach (Handmanager.Handcard hc in tmpPf.owncards)
{
if (hc.entity == a.card.entity)
{
if (tmpPf.mana >= hc.card.getManaCost(tmpPf, hc.manacost)) found = true;
break;
}
}
break;
case actionEnum.attackWithMinion:
foreach (Minion m in tmpPf.ownMinions)
{
if (m.entityID == a.own.entityID)
{
if (!a.own.Ready) return;
found = true;
break;
}
}
break;
case actionEnum.attackWithHero:
if (tmpPf.ownHero.Ready) found = true;
break;
case actionEnum.useHeroPower:
if (tmpPf.ownAbilityReady && tmpPf.mana >= tmpPf.ownHeroAblility.card.getManaCost(tmpPf, tmpPf.ownHeroAblility.manacost)) found = true;
break;
}
if (!found) return;
tmpPf.doAction(a);
}
if (Ai.Instance.botBase.getPlayfieldValue(tmpPf) >= 10000)
{
bestplay.playactions.Clear();
bestActions.Clear();
bestplay.playactions.AddRange(reorderedActions);
Helpfunctions.Instance.logg("Reordered actions:");
foreach (Action a in bestplay.playactions)
{
this.bestActions.Add(new Action(a));
a.print();
}
}
}