Commit 2ce621d4 authored by wind2009's avatar wind2009

Merge remote-tracking branch 'upstream/master' into master

parents d5784eaf 6ce35045
Pipeline #26618 passed with stages
in 1 minute and 25 seconds
......@@ -15,12 +15,12 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v1
uses: microsoft/setup-msbuild@v2
- name: Build!
run: msbuild $env:Solution_Name /t:Build /p:Configuration=Release
......@@ -36,7 +36,7 @@ jobs:
cd ..
- name: Upload build artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
path: dist\WindBot.7z
......@@ -46,7 +46,7 @@ jobs:
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: "latest"
prerelease: true
prerelease: false
title: "Development Build"
files: |
dist/WindBot.7z
......@@ -2916,5 +2916,15 @@ namespace WindBot.Game.AI.Decks
}
return base.OnSelectPlace(cardId, player, location, available);
}
protected override bool DefaultSetForDiabellze()
{
if (base.DefaultSetForDiabellze())
{
AI.SelectPlace(SelectSTPlace(Card, true));
return true;
}
return false;
}
}
}
\ No newline at end of file
......@@ -2888,5 +2888,15 @@ namespace WindBot.Game.AI.Decks
return false;
}
protected override bool DefaultSetForDiabellze()
{
if (base.DefaultSetForDiabellze())
{
SelectSTPlace(null, true);
return true;
}
return false;
}
}
}
\ No newline at end of file
......@@ -2976,5 +2976,15 @@ namespace WindBot.Game.AI.Decks
return false;
}
protected override bool DefaultSetForDiabellze()
{
if (base.DefaultSetForDiabellze())
{
SelectSTPlace(null, true);
return true;
}
return false;
}
}
}
\ No newline at end of file
......@@ -1007,7 +1007,7 @@ namespace WindBot.Game.AI.Decks
materials.Add(Bot.MonsterZone[6]);
linkchk = true;
}
else if (Bot.MonsterZone[5] != null && Bot.MonsterZone[5].Controller == 0 && Bot.MonsterZone[5].Id != CardId.Scarecrow && !FinalCards(Bot.MonsterZone[6].Id))
else if (Bot.MonsterZone[5] != null && Bot.MonsterZone[5].Controller == 0 && Bot.MonsterZone[5].Id != CardId.Scarecrow && !FinalCards(Bot.MonsterZone[5].Id))
{
materials.Add(Bot.MonsterZone[5]);
linkchk = true;
......
......@@ -3105,5 +3105,14 @@ namespace WindBot.Game.AI.Decks
return false;
}
protected override bool DefaultSetForDiabellze()
{
if (base.DefaultSetForDiabellze())
{
SelectSTPlace(null, true);
return true;
}
return false;
}
}
}
\ No newline at end of file
......@@ -1823,5 +1823,15 @@ namespace WindBot.Game.AI.Decks
}
return base.OnPreBattleBetween(attacker, defender);
}
protected override bool DefaultSetForDiabellze()
{
if (base.DefaultSetForDiabellze())
{
AI.SelectPlace(SelectSTPlace(Card, true));
return true;
}
return false;
}
}
}
......@@ -2899,5 +2899,15 @@ namespace WindBot.Game.AI.Decks
}
return false;
}
protected override bool DefaultSetForDiabellze()
{
if (base.DefaultSetForDiabellze())
{
SelectSTPlace(null, true);
return true;
}
return false;
}
}
}
\ No newline at end of file
......@@ -192,6 +192,9 @@ namespace WindBot.Game.AI
public const int NovoxTheSilenforcerDisciple = 25801745;
public const int SilenforcingBarrier = 98477480;
public const int DiabellzeOfTheOriginalSin = 53765052;
public const int PotOfExtravagance = 49238328;
}
protected class _Setcode
......@@ -224,6 +227,7 @@ namespace WindBot.Game.AI
AddExecutor(ExecutorType.Activate, _CardId.VaylantzWorld_ShinraBansho, DefaultVaylantzWorld_ShinraBansho);
AddExecutor(ExecutorType.Activate, _CardId.VaylantzWorld_KonigWissen, DefaultVaylantzWorld_KonigWissen);
AddExecutor(ExecutorType.Activate, _CardId.SantaClaws);
AddExecutor(ExecutorType.SpellSet, DefaultSetForDiabellze);
}
protected int lightningStormOption = -1;
......@@ -343,7 +347,7 @@ namespace WindBot.Game.AI
if (defender.IsMonsterDangerous())
{
bool canIgnoreIt = !attacker.IsDisabled() && (
attacker.IsCode(_CardId.UltimateConductorTytanno) && defender.IsDefense() ||
attacker.IsCode(_CardId.UltimateConductorTytanno) && defender.IsDefense() ||
attacker.IsCode(_CardId.ElShaddollConstruct) && defender.IsSpecialSummoned ||
attacker.IsCode(_CardId.AllyOfJusticeCatastor) && !defender.HasAttribute(CardAttribute.Dark));
if (!canIgnoreIt)
......@@ -385,7 +389,7 @@ namespace WindBot.Game.AI
if (attacker.IsMonsterInvincible())
attacker.RealPower = 9999;
if (attacker.EquipCards.Any(equip => equip.IsCode(_CardId.MoonMirrorShield) && !equip.IsDisabled()))
attacker.RealPower = defender.RealPower + 100;
}
......@@ -419,13 +423,13 @@ namespace WindBot.Game.AI
if (defender.OwnTargets.Any(card => card.IsCode(_CardId.PhantomKnightsFogBlade) && !card.IsDisabled()))
return false;
if (defender.HasSetcode(_Setcode.EarthboundImmortal) && !defender.IsDisabled())
return false;
bool attackHighestMonster =
Enemy.HasInMonstersZone(_CardId.RockOfTheVanquisher, true) && Enemy.GetMonsters().Any(card => card.HasSetcode(_Setcode.VanquishSoul)) ||
Enemy.HasInMonstersZone(_CardId.GladiatorBeastDomitianus, true) || Enemy.HasInMonstersZone(_CardId.PatricianOfDarkness) ||
Enemy.HasInMonstersZone(_CardId.RockOfTheVanquisher, true) && Enemy.GetMonsters().Any(card => card.HasSetcode(_Setcode.VanquishSoul)) ||
Enemy.HasInMonstersZone(_CardId.GladiatorBeastDomitianus, true) || Enemy.HasInMonstersZone(_CardId.PatricianOfDarkness) ||
Enemy.HasInMonstersZone(_CardId.DictatorOfD, true) && Enemy.GetMonsters().Any(card => card.HasSetcode(_Setcode.BlueEyes));
if (attackHighestMonster)
{
......@@ -437,16 +441,16 @@ namespace WindBot.Game.AI
if (Enemy.HasInSpellZone(_CardId.SpiralDischarge, true) && Enemy.HasInMonstersZone(_CardId.GaiaTheDragonChampion) && !defender.IsCode(_CardId.GaiaTheDragonChampion))
return false;
if (Enemy.HasInSpellZone(_CardId.CrusadiaVanguard, true) && Enemy.GetMonsters().Any(card => card.HasSetcode(_Setcode.Crusadia) && card.HasType(CardType.Link)) && !defender.HasType(CardType.Link))
return false;
if (defender.IsCode(_CardId.RescueACEHydrant) && !defender.IsDisabled() && Enemy.GetMonsters().Any(monster => monster.HasSetcode(_Setcode.RescueACE) && !monster.IsCode(_CardId.RescueACEHydrant)))
return false;
if (Enemy.HasInSpellZone(_CardId.SilenforcingBarrier, true) && Enemy.HasInMonstersZone(_CardId.NovoxTheSilenforcerDisciple, faceUp: true) && !defender.HasType(CardType.Ritual))
return false;
return true;
}
......@@ -540,7 +544,7 @@ namespace WindBot.Game.AI
extraDeck[shuffleCount] = extraDeck[index];
extraDeck[index] = tempCard;
}
return Util.CheckSelectCount(extraDeck, cards, min, max);
}
......@@ -1580,5 +1584,30 @@ namespace WindBot.Game.AI
return crossoutDesignatorIdList.Contains(cardId)
|| (calledbytheGraveIdCountMap.ContainsKey(cardId) && calledbytheGraveIdCountMap[cardId] > 0);
}
protected virtual bool DefaultSetForDiabellze()
{
if (Card == null) return false;
if (Card.Id == _CardId.PotOfExtravagance) return false;
if (Enemy.HasInMonstersZone(_CardId.DiabellzeOfTheOriginalSin, true, faceUp: true) && Card.HasType(CardType.Spell) && !Card.HasType(CardType.QuickPlay))
{
if (Bot.SpellZone.Any(c => c != null && Duel.MainPhase.ActivableCards.Contains(c) && c.HasType(CardType.Spell) && !Card.HasType(CardType.QuickPlay) && c.IsFacedown()))
{
return false;
}
foreach (CardExecutor exec in Executors)
{
if (exec.Type == ExecutorType.Activate && exec.CardId == Card.Id)
{
if (exec.Func == null || exec.Func())
{
return true;
}
}
}
}
return false;
}
}
}
......@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading;
using WindBot.Game.AI;
using YGOSharp.Network;
using YGOSharp.Network.Enums;
......@@ -284,6 +285,7 @@ namespace WindBot.Game
private void OnDuelEnd(BinaryReader packet)
{
Thread.Sleep(500);
Connection.Close();
}
......
No preview for this file type
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