本文整理汇总了C#中HREngine.Bots.Playfield.guessHeroDamage方法的典型用法代码示例。如果您正苦于以下问题:C# Playfield.guessHeroDamage方法的具体用法?C# Playfield.guessHeroDamage怎么用?C# Playfield.guessHeroDamage使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HREngine.Bots.Playfield
的用法示例。
在下文中一共展示了Playfield.guessHeroDamage方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: getPlayfieldValue
//.........这里部分代码省略.........
bool hasPingedMinion = false;
foreach (Minion m in p.enemyMinions)
{
int currMinionValue = this.getEnemyMinionValue(m, p);
// Give a bonus for 1 hp minions as a mage, since we can remove it easier in the future with ping.
// But we make sure we only give this bonus once among all enemies. We also give another +1 bonus once if the atk >= 4.
if (canPingMinions && !hasPingedMinion && currMinionValue > 2 && m.Hp == 1)
{
currMinionValue -= 1;
canPingMinions = false; // only 1 per turn (-1 bonus regardless of atk)
hasPingedMinion = true;
}
if (hasPingedMinion && currMinionValue > 2 && m.Hp == 1 && m.Angr >= 4)
{
currMinionValue -= 1;
hasPingedMinion = false; // only 1 per turn (-1 bonus additional for atk >= 4)
}
retval -= currMinionValue;
}
retval -= p.enemySecretCount;
retval -= p.numEnemySecretsTurnEnd * 50;
retval -= p.lostDamage;//damage which was to high (like killing a 2/1 with an 3/3 -> => lostdamage =2
retval -= p.lostWeaponDamage;
if (p.ownMinions.Count == 0) retval -= 20;
if (p.enemyMinions.Count >= 4) retval -= 20;
if (p.enemyHero.Hp <= 0)
{
if (p.turnCounter <= 1)
{
retval = 10000;
}
else
{
retval += 50;//10000
if (p.numPlayerMinionsAtTurnStart == 0) retval += 50; // if we can kill the enemy even after a board clear, bigger bonus
if (p.loathebLastTurn > 0) retval += 50; // give a bonus to turn 2 sims where we played loatheb in turn 1 to protect our lethal board
}
}
else if (p.ownHero.Hp > 0)
{
// if our damage on board is lethal, give a strong bonus so enemy AI avoids this outcome in its turn (i.e. AI will clear our minions if it can instead of ignoring them)
if (p.turnCounter == 1 && p.guessHeroDamage(true) >= p.enemyHero.Hp + p.enemyHero.armor) retval += 100;
}
//soulfire etc
int deletecardsAtLast = 0;
foreach (Action a in p.playactions)
{
if (a.actionType != actionEnum.playcard) continue;
if (a.card.card.name == CardDB.cardName.soulfire || a.card.card.name == CardDB.cardName.doomguard || a.card.card.name == CardDB.cardName.succubus) deletecardsAtLast = 1;
if (deletecardsAtLast == 1 && !(a.card.card.name == CardDB.cardName.soulfire || a.card.card.name == CardDB.cardName.doomguard || a.card.card.name == CardDB.cardName.succubus)) retval -= 20;
}
if (p.enemyHero.Hp >= 1 && p.ownHero.Hp <= 0)
{
//Helpfunctions.Instance.ErrorLog("turncounter " + p.turnCounter);
if (p.turnCounter == 0) // own turn
{
//worst case: we die on own turn
retval += p.owncarddraw * 500;
retval = -10000;
}
else
{
if (p.turnCounter == 1) // enemys first turn
{
retval += p.owncarddraw * 500;
retval -= 1000;
}
if (p.turnCounter >= 2)
{
//carddraw next turn doesnt count this turn :D
retval -= 100;
}
}
}
/*
if (p.enemyHero.Hp >= 1 && p.ownHero.Hp <= 0)
{
if (p.turnCounter < 2) retval += p.owncarddraw * 500;
retval -= 1000;
}
if (p.ownHero.Hp <= 0) retval = -10000;*/
// give a bonus for making the enemy spend more mana dealing with our board, so boards where the enemy makes different plays
// aren't considered as equal value (i.e. attacking the enemy and making him spend mana to heal vs not attacking at all)
if (p.turnCounter == 1 || p.turnCounter == 3) retval += p.enemyMaxMana - p.mana;
p.value = retval;
return retval;
}
示例2: getPlayfieldValue
//.........这里部分代码省略.........
}
}
//bool hasTank = false;
/*foreach (SecretItem si in p.enemySecretList)
{
if (readycount >= 1 && !hasTank && si.canbeTriggeredWithAttackingHero)
{
retval -= 100;
}
if (readycount >= 1 && p.enemyMinions.Count >= 1 && si.canbeTriggeredWithAttackingMinion)
{
retval -= 100;
}
if (si.canbeTriggeredWithPlayingMinion && mobsInHand >= 1)
{
retval -= 25;
}
}*/
retval -= p.enemySecretCount;
retval -= p.numEnemySecretsTurnEnd * 50;
//Helpfunctions.Instance.ErrorLog("sc:" + p.enemySecretCount+ " " + p.numEnemySecretsTurnEnd);
//testing eval without lostdmg
//retval -= p.lostDamage;//damage which was to high (like killing a 2/1 with an 3/3 -> => lostdamage =2
retval -= p.lostWeaponDamage;
//if (p.ownMinions.Count == 0) retval -= 20;
//if (p.enemyMinions.Count == 0) retval += 20;
if (p.enemyHero.Hp <= 0)
{
if (p.turnCounter <= 1)
{
retval = 10000;
}
else
{
retval += 50;//10000
if (p.numPlayerMinionsAtTurnStart == 0) retval += 50; // if we can kill the enemy even after a board clear, bigger bonus
if (p.loathebLastTurn > 0) retval += 50; // give a bonus to turn 2 sims where we played loatheb in turn 1 to protect our lethal board
}
}
else if (p.ownHero.Hp > 0)
{
// if our damage on board is lethal, give a strong bonus so enemy AI avoids this outcome in its turn (i.e. AI will clear our minions if it can instead of ignoring them)
if (p.turnCounter == 1 && p.guessHeroDamage(true) >= p.enemyHero.Hp + p.enemyHero.armor) retval += 100;
}
//soulfire etc
int deletecardsAtLast = 0;
foreach (Action a in p.playactions)
{
if (a.actionType != actionEnum.playcard) continue;
if (a.card.card.name == CardDB.cardName.soulfire || a.card.card.name == CardDB.cardName.doomguard || a.card.card.name == CardDB.cardName.succubus) deletecardsAtLast = 1;
if (deletecardsAtLast == 1 && !(a.card.card.name == CardDB.cardName.soulfire || a.card.card.name == CardDB.cardName.doomguard || a.card.card.name == CardDB.cardName.succubus)) retval -= 20;
}
if (p.enemyHero.Hp >= 1 && p.ownHero.Hp <= 0)
{
//Helpfunctions.Instance.ErrorLog("turncounter " + p.turnCounter + " " + retval);
if (p.turnCounter == 0) // own turn
{
//worst case: we die on own turn
retval += p.owncarddraw * 100;
retval = -10000;
}
else
{
if (p.turnCounter == 1) // enemys first turn
{
retval += p.owncarddraw * 100;
retval -= 1000;
}
if (p.turnCounter >= 2)
{
//carddraw next turn doesnt count this turn :D
retval -= 100;
}
}
}
//if (p.ownHero.Hp <= 0 && p.turnCounter < 2) retval = -10000;
// give a bonus for making the enemy spend more mana dealing with our board, so boards where the enemy makes different plays
// aren't considered as equal value (i.e. attacking the enemy and making him spend mana to heal vs not attacking at all)
if (p.turnCounter == 1 || p.turnCounter == 3) retval += p.enemyMaxMana - p.mana;
p.value = retval;
return retval;
}