Commit fba1ef65 authored by mercury233's avatar mercury233

Merge branch 'master' of https://github.com/IceYGO/windbot

parents 74c969b3 52a444f2
......@@ -194,6 +194,11 @@ Name=玻璃女巫 Deck=Witchcraft Dialog=verre.zh-CN
魔女术卡组。
AI_LV3 SUPPORT_MASTER_RULE_3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!神数不神-刹帝利
Name=神数不神 Deck=Kashtira Dialog=Zefra.zh-CN
俱舍怒威族卡组。
AI_LV3 SUPPORT_MASTER_RULE_2020
![狂野模式]神数不神-雷龙
Name=神数不神 Deck=ThunderDragon Dialog=Zefra.zh-CN
深渊混沌雷龙卡组。(普通模式的人机的卡组会符合其使用的卡池对应的环境的禁限卡表,但在狂野模式中,人机的卡组不符合任何禁限卡表。)
......
#created by ...
#main
27204311
68304193
68304193
68304193
32909498
32909498
32909498
4928565
78534861
78534861
91800273
91800273
72090076
31149212
31149212
31149212
14558127
14558127
14558127
23434538
23434538
31480215
34447918
34447918
34447918
73628505
84211599
84211599
24224830
24224830
65681983
69540484
69540484
69540484
71832012
71832012
71832012
10045474
10045474
33925864
#extra
15291624
27548199
21915012
48626373
48626373
95474755
95474755
95474755
10389142
73542331
73542331
21887175
44097050
22423493
65741786
!side
This diff is collapsed.
......@@ -1150,7 +1150,96 @@ namespace WindBot.Game
private void OnSelectDisfield(BinaryReader packet)
{
OnSelectPlace(packet);
packet.ReadByte(); // player
packet.ReadByte(); // TODO: min
int field = ~packet.ReadInt32();
int player;
CardLocation location;
int filter;
if ((field & 0x7f0000) != 0)
{
player = 1;
location = CardLocation.MonsterZone;
filter = (field >> 16) & Zones.MonsterZones;
}
else if ((field & 0x1f000000) != 0)
{
player = 1;
location = CardLocation.SpellZone;
filter = (field >> 24) & Zones.SpellZones;
}
else if ((field & 0x7f) != 0)
{
player = 0;
location = CardLocation.MonsterZone;
filter = field & Zones.MonsterZones;
}
else if ((field & 0x1f00) != 0)
{
player = 0;
location = CardLocation.SpellZone;
filter = (field >> 8) & Zones.SpellZones;
}
else if ((field & 0x2000) != 0)
{
player = 0;
location = CardLocation.FieldZone;
filter = Zones.FieldZone;
}
else if ((field & 0xc000) != 0)
{
player = 0;
location = CardLocation.PendulumZone;
filter = (field >> 14) & Zones.PendulumZones;
}
else if ((field & 0x20000000) != 0)
{
player = 1;
location = CardLocation.FieldZone;
filter = Zones.FieldZone;
}
else
{
player = 1;
location = CardLocation.PendulumZone;
filter = (field >> 30) & Zones.PendulumZones;
}
int selected = _ai.OnSelectPlace(_select_hint, player, location, filter);
_select_hint = 0;
byte[] resp = new byte[3];
resp[0] = (byte)GetLocalPlayer(player);
if (location != CardLocation.PendulumZone && location != CardLocation.FieldZone)
{
resp[1] = (byte)location;
if ((selected & filter) > 0)
filter &= selected;
if ((filter & Zones.z2) != 0) resp[2] = 2;
else if ((filter & Zones.z1) != 0) resp[2] = 1;
else if ((filter & Zones.z3) != 0) resp[2] = 3;
else if ((filter & Zones.z0) != 0) resp[2] = 0;
else if ((filter & Zones.z4) != 0) resp[2] = 4;
else if ((filter & Zones.z6) != 0) resp[2] = 6;
else if ((filter & Zones.z5) != 0) resp[2] = 5;
}
else
{
resp[1] = (byte)CardLocation.SpellZone;
if ((selected & filter) > 0)
filter &= selected;
if ((filter & Zones.FieldZone) != 0) resp[2] = 5;
if ((filter & Zones.z0) != 0) resp[2] = 6; // left pendulum zone
if ((filter & Zones.z1) != 0) resp[2] = 7; // right pendulum zone
}
BinaryWriter reply = GamePacketFactory.Create(CtosMessage.Response);
reply.Write(resp);
Connection.Send(reply);
}
private void OnSelectEffectYn(BinaryReader packet)
......
......@@ -73,6 +73,7 @@
<Compile Include="Game\AI\Decks\BraveExecutor.cs" />
<Compile Include="Game\AI\Decks\FamiliarPossessedExecutor.cs" />
<Compile Include="Game\AI\Decks\BlackwingExecutor.cs" />
<Compile Include="Game\AI\Decks\KashtiraExecutor.cs" />
<Compile Include="Game\AI\Decks\LuckyExecutor.cs" />
<Compile Include="Game\AI\Decks\MathMechExecutor.cs" />
<Compile Include="Game\AI\Decks\PureWindsExecutor.cs" />
......
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