本文整理汇总了C#中HREngine.Bots.Playfield.ENEMYattackWithMinion方法的典型用法代码示例。如果您正苦于以下问题:C# Playfield.ENEMYattackWithMinion方法的具体用法?C# Playfield.ENEMYattackWithMinion怎么用?C# Playfield.ENEMYattackWithMinion使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HREngine.Bots.Playfield
的用法示例。
在下文中一共展示了Playfield.ENEMYattackWithMinion方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: simulateEnemysTurn
public void simulateEnemysTurn(bool simulateTwoTurns)
{
int maxwide = 20;
this.enemyAbilityReady = true;
this.enemyHeroNumAttackThisTurn = 0;
this.enemyHeroWindfury = false;
if (this.enemyWeaponName == "doomhammer") this.enemyHeroWindfury = true;
this.enemyheroImmuneWhileAttacking = false;
if (this.enemyWeaponName == "gladiatorslongbow") this.enemyheroImmuneWhileAttacking = true;
if (!this.enemyHeroFrozen && this.enemyWeaponDurability > 0) this.enemyHeroReady = true;
this.enemyheroAngr = this.enemyWeaponAttack;
bool havedonesomething = true;
List<Playfield> posmoves = new List<Playfield>();
posmoves.Add(new Playfield(this));
List<Playfield> temp = new List<Playfield>();
int deep = 0;
while (havedonesomething)
{
temp.Clear();
temp.AddRange(posmoves);
havedonesomething = false;
Playfield bestold = null;
int bestoldval = 20000000;
foreach (Playfield p in temp)
{
if (p.complete)
{
continue;
}
List<Minion> playedMinions = new List<Minion>(8);
foreach (Minion m in p.enemyMinions)
{
if (m.Ready && m.Angr >= 1 && !m.frozen)
{
//BEGIN:cut (double/similar) attacking minions out#####################################
// DONT LET SIMMILAR MINIONS ATTACK IN ONE TURN (example 3 unlesh the hounds-hounds doesnt need to simulated hole)
List<Minion> tempoo = new List<Minion>(playedMinions);
bool dontattacked = true;
bool isSpecial = PenalityManager.Instance.specialMinions.ContainsKey(m.name);
foreach (Minion mnn in tempoo)
{
// special minions are allowed to attack in silended and unsilenced state!
//help.logg(mnn.silenced + " " + m.silenced + " " + mnn.name + " " + m.name + " " + penman.specialMinions.ContainsKey(m.name));
bool otherisSpecial = PenalityManager.Instance.specialMinions.ContainsKey(mnn.name);
if ((!isSpecial || (isSpecial && m.silenced)) && (!otherisSpecial || (otherisSpecial && mnn.silenced))) // both are not special, if they are the same, dont add
{
if (mnn.Angr == m.Angr && mnn.Hp == m.Hp && mnn.divineshild == m.divineshild && mnn.taunt == m.taunt && mnn.poisonous == m.poisonous) dontattacked = false;
continue;
}
if (isSpecial == otherisSpecial && !m.silenced && !mnn.silenced) // same are special
{
if (m.name != mnn.name) // different name -> take it
{
continue;
}
// same name -> test whether they are equal
if (mnn.Angr == m.Angr && mnn.Hp == m.Hp && mnn.divineshild == m.divineshild && mnn.taunt == m.taunt && mnn.poisonous == m.poisonous) dontattacked = false;
continue;
}
}
if (dontattacked)
{
playedMinions.Add(m);
}
else
{
//help.logg(m.name + " doesnt need to attack!");
continue;
}
//END: cut (double/similar) attacking minions out#####################################
//help.logg(m.name + " is going to attack!");
List<targett> trgts = p.getAttackTargets(false);
if (true)//(this.useCutingTargets)
{
trgts = Ai.Instance.cutAttackTargets(trgts, p, false);
}
foreach (targett trgt in trgts)
{
Playfield pf = new Playfield(p);
havedonesomething = true;
pf.ENEMYattackWithMinion(m, trgt.target, trgt.targetEntity);
posmoves.Add(pf);
}
if (trgts.Count == 1 && trgts[0].target == 100)//only enemy hero is available als attack
//.........这里部分代码省略.........