Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions Decks/AI_FamiliarPossessed.ydk
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,18 @@
41999284
41999284
!side
14558127
23434538
12580477
14532163
14532163
14532163
8267140
8267140
24224830
24224830
65681983
65681983
10045474
10045474
10045474
78 changes: 78 additions & 0 deletions Decks/Lose/AI_FamiliarPossessed.ydk
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#created by ...
#main
71197066
15397015
15397015
15397015
4376659
4376659
31764354
31887906
40542826
40542826
68881650
68881650
14558127
14558127
36584821
36584821
18144506
35261759
35261759
49238328
49238328
24224830
24224830
73915051
73915051
62256492
62256492
25704359
25704359
30241314
30241314
36975314
36975314
59305593
59305593
61740673
82732705
82732705
40605147
40605147
41420027
41420027
84749824
84749824
#extra
12014404
31833038
85289965
65330383
38342335
2857636
9839945
30674956
48815792
73309655
97661969
75452921
98978921
41999284
41999284
!side
14558127
23434538
23434538
23434538
12580477
14532163
14532163
14532163
8267140
8267140
65681983
65681983
10045474
10045474
10045474
78 changes: 78 additions & 0 deletions Decks/Win/AI_FamiliarPossessed.ydk
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#created by ...
#main
71197066
15397015
15397015
4376659
4376659
31764354
31887906
40542826
40542826
68881650
68881650
14558127
14558127
14558127
36584821
36584821
23434538
23434538
23434538
14532163
14532163
14532163
18144506
35261759
35261759
49238328
49238328
73915051
73915051
62256492
62256492
10045474
10045474
10045474
25704359
25704359
36975314
36975314
61740673
82732705
82732705
40605147
41420027
41420027
#extra
12014404
31833038
85289965
65330383
38342335
2857636
9839945
30674956
48815792
73309655
97661969
75452921
98978921
41999284
41999284
!side
15397015
12580477
8267140
8267140
24224830
24224830
65681983
65681983
30241314
30241314
59305593
59305593
40605147
84749824
84749824
16 changes: 14 additions & 2 deletions Game/AI/Decks/FamiliarPossessedExecutor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,13 @@ public class CardId
public const int WynnP = 30674956;
public const int HiitaP = 48815792;
public const int LynaP = 9839945;

// side
public const int Raigeki = 12580477;
public const int lightningStorm = 14532163;
public const int CosmicCyclone = 8267140;
public const int CalledByTheGrave = 24224830;
public const int CrossoutDesignator = 65681983;
public const int InfiniteImpermanence = 10045474;
}

public FamiliarPossessedExecutor(GameAI ai, Duel duel)
Expand All @@ -74,6 +80,9 @@ public FamiliarPossessedExecutor(GameAI ai, Duel duel)
//Sticker
AddExecutor(ExecutorType.Activate, CardId.MacroCosmos, MacroCosmoseff);
//counter
AddExecutor(ExecutorType.Activate, CardId.CalledByTheGrave, DefaultCalledByTheGrave);
// AddExecutor(ExecutorType.Activate, CardId.CrossoutDesignator, DefaultCalledByTheGrave);
AddExecutor(ExecutorType.Activate, CardId.InfiniteImpermanence, DefaultInfiniteImpermanence);
AddExecutor(ExecutorType.Activate, CardId.AshBlossomAndJoyousSpring, DefaultAshBlossomAndJoyousSpring);
AddExecutor(ExecutorType.Activate, CardId.MaxxC, DefaultMaxxC);
AddExecutor(ExecutorType.Activate, CardId.SolemnWarning, DefaultSolemnWarning);
Expand All @@ -86,7 +95,10 @@ public FamiliarPossessedExecutor(GameAI ai, Duel duel)
AddExecutor(ExecutorType.Activate, CardId.Awakening);
AddExecutor(ExecutorType.Activate, CardId.Unpossessed, UnpossessedEffect);
//first do
AddExecutor(ExecutorType.Activate, CardId.lightningStorm, DefaultLightingStorm);
AddExecutor(ExecutorType.Activate, CardId.HarpieFeatherDuster, DefaultHarpiesFeatherDusterFirst);
AddExecutor(ExecutorType.Activate, CardId.CosmicCyclone, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, CardId.PotOfDesires, PotOfDesireseff);
//sp
AddExecutor(ExecutorType.Activate, CardId.Linkuriboh, Linkuriboheff);
Expand Down Expand Up @@ -626,4 +638,4 @@ public override bool OnSelectHand()
return true;
}
}
}
}
17 changes: 17 additions & 0 deletions Game/AI/DefaultExecutor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ protected class _CardId
public const int RoyalDecreel = 51452091;
public const int NaturiaBeast = 33198837;
public const int AntiSpellFragrance = 58921041;

public const int lightningStorm = 14532163;
}

protected DefaultExecutor(GameAI ai, Duel duel)
Expand Down Expand Up @@ -1167,5 +1169,20 @@ protected bool DefaultHonestEffect()

return Util.IsTurn1OrMain2();
}

protected bool DefaultLightingStorm()
{
if ((Enemy.MonsterZone.ToList().Count > Enemy.SpellZone.ToList().Count ) && Enemy.MonsterZone.ToList().Count>3)
{
AI.SelectPlace(Zones.MonsterZones);
return true;
}
else
{
AI.SelectPlace(Zones.SpellZones);
return true;
}

}
}
}
65 changes: 43 additions & 22 deletions Game/GameBehavior.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ public class GameBehavior
public GameClient Game { get; private set; }
public YGOClient Connection { get; private set; }
public Deck Deck { get; private set; }
public Deck DeckForWin { get; private set; }
public Deck DeckForLose { get; private set; }

private GameAI _ai;

Expand All @@ -28,6 +30,7 @@ public class GameBehavior
private bool _debug;
private int _select_hint;
private GameMessage _lastMessage;
private int lastDuelResult;

public GameBehavior(GameClient game)
{
Expand All @@ -44,9 +47,12 @@ public GameBehavior(GameClient game)

_ai = new GameAI(Game, _duel);
_ai.Executor = DecksManager.Instantiate(_ai, _duel);
Deck = Deck.Load(Game.DeckFile ?? _ai.Executor.Deck);

string deckName = Game.DeckFile ?? _ai.Executor.Deck;
Deck = Deck.Load(deckName);
DeckForWin = Deck.Load("Win/" + deckName);
DeckForLose = Deck.Load("Lose/" + deckName);
_select_hint = 0;
lastDuelResult = 2;
}

public int GetLocalPlayer(int player)
Expand Down Expand Up @@ -144,6 +150,21 @@ private void RegisterPackets()
_messages.Add(GameMessage.FlipSummoned, OnSummoned);
}

private BinaryWriter buildUpdateDeck(Deck targetDeck) {
BinaryWriter deck = GamePacketFactory.Create(CtosMessage.UpdateDeck);
deck.Write(targetDeck.Cards.Count + targetDeck.ExtraCards.Count);
//Logger.WriteLine("Main + Extra: " + targetDeck.Cards.Count + targetDeck.ExtraCards.Count);
deck.Write(targetDeck.SideCards.Count);
//Logger.WriteLine("Side: " + targetDeck.SideCards.Count);
foreach (NamedCard card in targetDeck.Cards)
deck.Write(card.Id);
foreach (NamedCard card in targetDeck.ExtraCards)
deck.Write(card.Id);
foreach (NamedCard card in targetDeck.SideCards)
deck.Write(card.Id);
return deck;
}

private void OnJoinGame(BinaryReader packet)
{
/*int lflist = (int)*/ packet.ReadUInt32();
Expand All @@ -152,30 +173,27 @@ private void OnJoinGame(BinaryReader packet)
int duel_rule = packet.ReadByte();
_ai.Duel.IsNewRule = (duel_rule >= 4);
_ai.Duel.IsNewRule2020 = (duel_rule >= 5);
BinaryWriter deck = GamePacketFactory.Create(CtosMessage.UpdateDeck);
deck.Write(Deck.Cards.Count + Deck.ExtraCards.Count);
deck.Write(Deck.SideCards.Count);
foreach (NamedCard card in Deck.Cards)
deck.Write(card.Id);
foreach (NamedCard card in Deck.ExtraCards)
deck.Write(card.Id);
foreach (NamedCard card in Deck.SideCards)
deck.Write(card.Id);
BinaryWriter deck = buildUpdateDeck(pickDeckOnResult());
Connection.Send(deck);
_ai.OnJoinGame();
}

private Deck pickDeckOnResult() {
if(lastDuelResult == 0 && DeckForWin != null) {
//Logger.WriteLine("Using deck for win: " + DeckForWin.SideCards[2].Name);
return DeckForWin;
}
if(lastDuelResult == 1 && DeckForLose != null) {
//Logger.WriteLine("Using deck for lose: " + DeckForLose.SideCards[2].Name);
return DeckForLose;
}
//Logger.WriteLine("Using default deck.");
return Deck;
}

private void OnChangeSide(BinaryReader packet)
{
BinaryWriter deck = GamePacketFactory.Create(CtosMessage.UpdateDeck);
deck.Write(Deck.Cards.Count + Deck.ExtraCards.Count);
deck.Write(Deck.SideCards.Count);
foreach (NamedCard card in Deck.Cards)
deck.Write(card.Id);
foreach (NamedCard card in Deck.ExtraCards)
deck.Write(card.Id);
foreach (NamedCard card in Deck.SideCards)
deck.Write(card.Id);
BinaryWriter deck = buildUpdateDeck(pickDeckOnResult());
Connection.Send(deck);
_ai.OnJoinGame();
}
Expand Down Expand Up @@ -293,6 +311,7 @@ private void OnChat(BinaryReader packet)
private void OnErrorMsg(BinaryReader packet)
{
int msg = packet.ReadByte();
Logger.WriteLine("Got error: " + msg);
// align
packet.ReadByte();
packet.ReadByte();
Expand Down Expand Up @@ -359,17 +378,19 @@ private void OnStart(BinaryReader packet)
extra = packet.ReadInt16();
_duel.Fields[GetLocalPlayer(1)].Init(deck, extra);

Logger.DebugWriteLine("Duel started: " + _room.Names[0] + " versus " + _room.Names[1]);
Logger.WriteLine("Duel started: " + _room.Names[0] + " versus " + _room.Names[1]);
_ai.OnStart();
}

private void OnWin(BinaryReader packet)
{
int result = GetLocalPlayer(packet.ReadByte());

lastDuelResult = result;

string otherName = _room.Position == 0 ? _room.Names[1] : _room.Names[0];
string textResult = (result == 2 ? "Draw" : result == 0 ? "Win" : "Lose");
Logger.DebugWriteLine("Duel finished against " + otherName + ", result: " + textResult);
Logger.WriteLine("Duel finished against " + otherName + ", result: " + textResult);
}

private void OnDraw(BinaryReader packet)
Expand Down
8 changes: 7 additions & 1 deletion WindBot.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,12 @@
<None Include="Decks\*.ydk">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Decks\Win\*.ydk">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Decks\Lose\*.ydk">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Dialogs\*.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
Expand All @@ -172,4 +178,4 @@
<Target Name="AfterBuild">
</Target>
-->
</Project>
</Project>