Commit 816d9474 authored by xiaoye's avatar xiaoye

Update AI408AExecutor.cs

parent 6ae010e9
...@@ -39,7 +39,8 @@ namespace WindBot.Game.AI.Decks ...@@ -39,7 +39,8 @@ namespace WindBot.Game.AI.Decks
} }
private bool chk_release_summon = false; private bool chk_release_summon = false;
private int summonInTurn = 0; private int summonInTurn = 0;
private int attacked_85306040 = 0 private int attacked_85306040 = 0;
private int attacked_79575620 = 0;
private int[] changePosInTurn; private int[] changePosInTurn;
private int[] attacked = new int[] { 0, 0, 0, 0, 0 }; private int[] attacked = new int[] { 0, 0, 0, 0, 0 };
...@@ -49,6 +50,7 @@ namespace WindBot.Game.AI.Decks ...@@ -49,6 +50,7 @@ namespace WindBot.Game.AI.Decks
changePosInTurn = new int[0]; changePosInTurn = new int[0];
attacked = new int[] { 0, 0, 0, 0, 0 }; attacked = new int[] { 0, 0, 0, 0, 0 };
if (attacked_85306040 > 0) attacked_85306040--; if (attacked_85306040 > 0) attacked_85306040--;
attacked_79575620 = 0;
} }
public override BattlePhaseAction OnSelectAttackTarget(ClientCard attacker, IList<ClientCard> defenders) public override BattlePhaseAction OnSelectAttackTarget(ClientCard attacker, IList<ClientCard> defenders)
{ {
...@@ -57,7 +59,7 @@ namespace WindBot.Game.AI.Decks ...@@ -57,7 +59,7 @@ namespace WindBot.Game.AI.Decks
attacked[GetSequence(attacker)] = attacker.Id; attacked[GetSequence(attacker)] = attacker.Id;
return AI.Attack(attacker, null); return AI.Attack(attacker, null);
} }
if (attacker.IsCode({ 37043180, 70074904 })) if (attacker.IsCode(new[] { 37043180, 70074904 }))
{ {
if (Bot.GetMonsterCount() > Enemy.GetMonsterCount()) if (Bot.GetMonsterCount() > Enemy.GetMonsterCount())
{ {
...@@ -68,10 +70,9 @@ namespace WindBot.Game.AI.Decks ...@@ -68,10 +70,9 @@ namespace WindBot.Game.AI.Decks
if (!OnPreBattleBetween(attacker, defender)) if (!OnPreBattleBetween(attacker, defender))
continue; continue;
if (attacker.RealPower > defender.RealPower || (attacker.RealPower >= defender.RealPower && attacker.IsLastAttacker && defender.IsAttack())) if (attacker.RealPower < defender.RealPower && ((Bot.HasInMonstersZone(79575620) && attacked_79575620 == 0 && Bot.LifePoints > 2000) ? defender.RealPower - attacker.RealPower < Bot.LifePoints - 2000 : defender.RealPower - attacker.RealPower < Bot.LifePoints))
{ {
attacked[GetSequence(attacker)] = attacker.Id; attacked[GetSequence(attacker)] = attacker.Id;
attacked_85306040 += 2
return AI.Attack(attacker, defender); return AI.Attack(attacker, defender);
} }
} }
...@@ -80,40 +81,41 @@ namespace WindBot.Game.AI.Decks ...@@ -80,40 +81,41 @@ namespace WindBot.Game.AI.Decks
switch (attacker.Id) switch (attacker.Id)
{ {
case 79575620: case 79575620:
{
foreach (ClientCard defender in defenders)
{ {
attacker.RealPower = 3400; foreach (ClientCard defender in defenders)
defender.RealPower = defender.GetDefensePower();
if (!OnPreBattleBetween(attacker, defender))
continue;
if ((attacker.RealPower >= defender.RealPower && defender.IsAttack()) || (attacker.RealPower > defender.RealPower && !GetZoneCards(CardLocation.MonsterZone, Bot).Any(c => c != null && !c.IsCode(79575620) && c.IsAttack() && (c.Attack > defender.RealPower || (c.IsCode({ 37043180, 70074904 }) && defender.RealPower - c.Attack < Bot.LifePoints + 2000)) && attacked[GetSequence(c)] != c.Id) && defender.IsDefense() && defender.IsFaceup()))
{ {
attacked[GetSequence(attacker)] = attacker.Id; attacker.RealPower = 3400;
return AI.Attack(attacker, defender); defender.RealPower = defender.GetDefensePower();
if (!OnPreBattleBetween(attacker, defender))
continue;
if ((attacker.RealPower >= defender.RealPower && defender.IsAttack()) || (attacker.RealPower > defender.RealPower && !GetZoneCards(CardLocation.MonsterZone, Bot).Any(c => c != null && !c.IsCode(79575620) && c.IsAttack() && (c.Attack > defender.RealPower || (c.IsCode(new[] { 37043180, 70074904 }) && defender.RealPower - c.Attack < Bot.LifePoints - 2000)) && attacked[GetSequence(c)] != c.Id) && defender.IsDefense() && defender.IsFaceup()))
{
attacked[GetSequence(attacker)] = attacker.Id;
attacked_79575620++;
return AI.Attack(attacker, defender);
}
} }
return null;
} }
return null;
}
case 85306040: case 85306040:
{
foreach (ClientCard defender in defenders)
{ {
attacker.RealPower = attacker.Attack; foreach (ClientCard defender in defenders)
defender.RealPower = defender.GetDefensePower();
if (!OnPreBattleBetween(attacker, defender))
continue;
if (attacker.RealPower > defender.RealPower || (attacker.RealPower >= defender.RealPower && attacker.IsLastAttacker && defender.IsAttack()))
{ {
attacked[GetSequence(attacker)] = attacker.Id; attacker.RealPower = attacker.Attack;
attacked_85306040 += 2 defender.RealPower = defender.GetDefensePower();
return AI.Attack(attacker, defender); if (!OnPreBattleBetween(attacker, defender))
continue;
if (attacker.RealPower > defender.RealPower || (attacker.RealPower >= defender.RealPower && attacker.IsLastAttacker && defender.IsAttack()))
{
attacked[GetSequence(attacker)] = attacker.Id;
attacked_85306040 += 2;
return AI.Attack(attacker, defender);
}
} }
return null;
} }
return null;
}
} }
foreach (ClientCard defender in defenders) foreach (ClientCard defender in defenders)
...@@ -140,12 +142,23 @@ namespace WindBot.Game.AI.Decks ...@@ -140,12 +142,23 @@ namespace WindBot.Game.AI.Decks
YGOSharp.OCGWrapper.NamedCard cardData = YGOSharp.OCGWrapper.NamedCard.Get(cardId); YGOSharp.OCGWrapper.NamedCard cardData = YGOSharp.OCGWrapper.NamedCard.Get(cardId);
if (cardData != null) if (cardData != null)
{ {
if (cardId == 39168895) return CardPosition.Attack; switch (cardId)
if (cardId == 85306040)
{ {
if (attacked_85306040 > 0) case 39168895:
attacked_85306040 = 0 {
return CardPosition.Attack; return CardPosition.Attack;
}
case 85306040:
{
if (attacked_85306040 > 0)
attacked_85306040 = 0;
return CardPosition.Attack;
}
case 79575620:
{
attacked_79575620 = 0;
return (Bot.LifePoints > 2000 ? CardPosition.Attack : CardPosition.Defence);
}
} }
} }
return base.OnSelectPosition(cardId, positions); return base.OnSelectPosition(cardId, positions);
...@@ -358,12 +371,17 @@ namespace WindBot.Game.AI.Decks ...@@ -358,12 +371,17 @@ namespace WindBot.Game.AI.Decks
} }
case 79575620: case 79575620:
{ {
return Bot.LifePoints > 2000; if (Bot.LifePoints > 2000)
{
attacked_79575620 = 0;
return true;
}
return false;
} }
case 85306040: case 85306040:
{ {
if (attacked_85306040 > 0) if (attacked_85306040 > 0)
attacked_85306040 = 0 attacked_85306040 = 0;
return true; return true;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment