Commit 2620fec9 authored by 聖園ミカ's avatar 聖園ミカ 🐟

1+1=3

parents 95507385 f7366b40
#created by ...
#main
32731036
25451383
60242223
62962630
62962630
62962630
68468459
68468459
45484331
45883110
95515789
19096726
14558127
14558127
14558127
23434538
23434538
23434538
36577931
1984618
1984618
6498706
6498706
34995106
44362883
75500286
81439173
24224830
24224830
29948294
36637374
65681983
82738008
18973184
10045474
10045474
10045474
19271881
32756828
17751597
#extra
11321089
38811586
44146295
44146295
92892239
70534340
3410461
24915933
72272462
1906812
41373230
51409648
87746184
87746184
53971455
!side
56787189
55273561
68468460
72554664
95515790
\ No newline at end of file
{ {
"welcome": [ "welcome": [
"这里就是大灵峰吗?", "这里就是大灵峰吗?",
"这里是教导龙国。" "这里是教导龙国。",
"这里是开放的大地。"
], ],
"deckerror": [ "deckerror": [
"{0}被冰水咒缚了!" "{0}被冰水咒缚了!"
......
...@@ -55,28 +55,32 @@ namespace WindBot.Game.AI ...@@ -55,28 +55,32 @@ namespace WindBot.Game.AI
{ {
return cards return cards
.Where(card => card?.Data != null && card.HasType(CardType.Monster) && card.IsFaceup() && !(canBeTarget && card.IsShouldNotBeTarget())) .Where(card => card?.Data != null && card.HasType(CardType.Monster) && card.IsFaceup() && !(canBeTarget && card.IsShouldNotBeTarget()))
.OrderBy(card => card.Attack).FirstOrDefault(); .OrderByDescending(card => card.Attack)
.FirstOrDefault();
} }
public static ClientCard GetHighestDefenseMonster(this IEnumerable<ClientCard> cards, bool canBeTarget = false) public static ClientCard GetHighestDefenseMonster(this IEnumerable<ClientCard> cards, bool canBeTarget = false)
{ {
return cards return cards
.Where(card => card?.Data != null && card.HasType(CardType.Monster) && card.IsFaceup() && !(canBeTarget && card.IsShouldNotBeTarget())) .Where(card => card?.Data != null && card.HasType(CardType.Monster) && card.IsFaceup() && !(canBeTarget && card.IsShouldNotBeTarget()))
.OrderBy(card => card.Defense).FirstOrDefault(); .OrderByDescending(card => card.Defense)
.FirstOrDefault();
} }
public static ClientCard GetLowestAttackMonster(this IEnumerable<ClientCard> cards, bool canBeTarget = false) public static ClientCard GetLowestAttackMonster(this IEnumerable<ClientCard> cards, bool canBeTarget = false)
{ {
return cards return cards
.Where(card => card?.Data != null && card.HasType(CardType.Monster) && card.IsFaceup() && !(canBeTarget && card.IsShouldNotBeTarget())) .Where(card => card?.Data != null && card.HasType(CardType.Monster) && card.IsFaceup() && !(canBeTarget && card.IsShouldNotBeTarget()))
.OrderByDescending(card => card.Attack).FirstOrDefault(); .OrderBy(card => card.Attack)
.FirstOrDefault();
} }
public static ClientCard GetLowestDefenseMonster(this IEnumerable<ClientCard> cards, bool canBeTarget = false) public static ClientCard GetLowestDefenseMonster(this IEnumerable<ClientCard> cards, bool canBeTarget = false)
{ {
return cards return cards
.Where(card => card?.Data != null && card.HasType(CardType.Monster) && card.IsFaceup() && !(canBeTarget && card.IsShouldNotBeTarget())) .Where(card => card?.Data != null && card.HasType(CardType.Monster) && card.IsFaceup() && !(canBeTarget && card.IsShouldNotBeTarget()))
.OrderByDescending(card => card.Defense).FirstOrDefault(); .OrderBy(card => card.Defense)
.FirstOrDefault();
} }
public static bool ContainsMonsterWithLevel(this IEnumerable<ClientCard> cards, int level) public static bool ContainsMonsterWithLevel(this IEnumerable<ClientCard> cards, int level)
......
This diff is collapsed.
...@@ -80,7 +80,8 @@ namespace WindBot.Game.AI.Decks ...@@ -80,7 +80,8 @@ namespace WindBot.Game.AI.Decks
public SuperheavySamuraiExecutor(GameAI ai, Duel duel) public SuperheavySamuraiExecutor(GameAI ai, Duel duel)
: base(ai, duel) : base(ai, duel)
{ {
AddExecutor(ExecutorType.Activate, CardId.PSYFramelordOmega); AddExecutor(ExecutorType.Repos, MonsterRepos);
AddExecutor(ExecutorType.Activate, CardId.PSYFramelordOmega,PSYFunction);
AddExecutor(ExecutorType.Activate, CardId.IP,IPFunction); AddExecutor(ExecutorType.Activate, CardId.IP,IPFunction);
AddExecutor(ExecutorType.Activate, CardId.Sarutobi,SarutobiFunction); AddExecutor(ExecutorType.Activate, CardId.Sarutobi,SarutobiFunction);
AddExecutor(ExecutorType.Activate, CardId.Unicorn,UnicornFunction); AddExecutor(ExecutorType.Activate, CardId.Unicorn,UnicornFunction);
...@@ -102,8 +103,7 @@ namespace WindBot.Game.AI.Decks ...@@ -102,8 +103,7 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.Scales,ScalesFunction); AddExecutor(ExecutorType.Activate, CardId.Scales,ScalesFunction);
//Synchron //Synchron
AddExecutor(ExecutorType.SpSummon, CardId.ASStardustDragon,ASStardustDragonSynchronFunction2); AddExecutor(ExecutorType.SpSummon, CardId.PSYFramelordOmega,PSYFramelordOmegaSynchronFunction);
AddExecutor(ExecutorType.SpSummon, CardId.Fleur,FleurSynchronFunction2);
//Pendulum //Pendulum
AddExecutor(ExecutorType.Activate, CardId.Wakaushi,WakaushiFunction); AddExecutor(ExecutorType.Activate, CardId.Wakaushi,WakaushiFunction);
...@@ -183,7 +183,6 @@ namespace WindBot.Game.AI.Decks ...@@ -183,7 +183,6 @@ namespace WindBot.Game.AI.Decks
//Synchron //Synchron
AddExecutor(ExecutorType.SpSummon, CardId.Masurawo,MasurawoSynchronFunction); AddExecutor(ExecutorType.SpSummon, CardId.Masurawo,MasurawoSynchronFunction);
AddExecutor(ExecutorType.SpSummon, CardId.Sarutobi,DeSynchronFunction); AddExecutor(ExecutorType.SpSummon, CardId.Sarutobi,DeSynchronFunction);
AddExecutor(ExecutorType.SpSummon, CardId.PSYFramelordOmega);
//equip Soulhorns //equip Soulhorns
AddExecutor(ExecutorType.Activate, CardId.Soulhorns,SoulhornsEquipFunction); AddExecutor(ExecutorType.Activate, CardId.Soulhorns,SoulhornsEquipFunction);
...@@ -219,6 +218,24 @@ namespace WindBot.Game.AI.Decks ...@@ -219,6 +218,24 @@ namespace WindBot.Game.AI.Decks
{ {
return true; return true;
} }
private bool MonsterRepos()
{
if (Card.IsFacedown())
return true;
if (Card.IsFaceup() && Card.IsAttack() && (Card.Id == CardId.Masurawo || Card.Id == CardId.Sarutobi))
return true;
return false;
}
public override CardPosition OnSelectPosition(int cardId, IList<CardPosition> positions)
{
YGOSharp.OCGWrapper.NamedCard cardData = YGOSharp.OCGWrapper.NamedCard.Get(cardId);
if (cardData != null)
{
if (cardId == CardId.Masurawo || cardId == CardId.Sarutobi)
return CardPosition.FaceUpDefence;
}
return 0;
}
public override int OnSelectPlace(int cardId, int player, CardLocation location, int available) public override int OnSelectPlace(int cardId, int player, CardLocation location, int available)
{ {
if (player == 0 && location == CardLocation.MonsterZone) if (player == 0 && location == CardLocation.MonsterZone)
...@@ -597,14 +614,6 @@ namespace WindBot.Game.AI.Decks ...@@ -597,14 +614,6 @@ namespace WindBot.Game.AI.Decks
AI.SelectMaterials(materials_lists[0]); AI.SelectMaterials(materials_lists[0]);
return true; return true;
} }
private bool FleurSynchronFunction2()
{
var materials_lists = Util.GetSynchroMaterials(Bot.MonsterZone,10,1,1,false,false,null,
card => { return !FinalCards(card.Id); });
if (materials_lists.Count <= 0) return false;
AI.SelectMaterials(materials_lists[0]);
return true;
}
private bool DeSynchronFunction() private bool DeSynchronFunction()
{ {
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
...@@ -630,17 +639,26 @@ namespace WindBot.Game.AI.Decks ...@@ -630,17 +639,26 @@ namespace WindBot.Game.AI.Decks
{ {
return (Bot.HasInExtra(CardId.Fleur) || Bot.HasInExtra(CardId.Masurawo)); return (Bot.HasInExtra(CardId.Fleur) || Bot.HasInExtra(CardId.Masurawo));
} }
return false; else if (Bot.HasInMonstersZone(CardId.Motorbike))
}
private bool ASStardustDragonSynchronFunction2()
{ {
if (!activate_Scales || !activate_PSY) return false; AI.SelectMaterials(CardId.Motorbike);
if (Bot.HasInGraveyard(CardId.Motorbike) || Bot.HasInGraveyard(CardId.PsyFramegearGamma)) return true;
}
else if (Bot.HasInMonstersZone(CardId.PsyFramegearGamma))
{ {
return (Bot.HasInExtra(CardId.Fleur) || Bot.HasInExtra(CardId.Masurawo)); AI.SelectMaterials(CardId.PsyFramegearGamma);
return true;
} }
return false; return false;
} }
private bool PSYFramelordOmegaSynchronFunction()
{
if (Bot.HasInMonstersZone(CardId.Motorbike))
AI.SelectMaterials(CardId.Motorbike);
else if (Bot.HasInMonstersZone(CardId.PsyFramegearGamma))
AI.SelectMaterials(CardId.PsyFramegearGamma);
return activate_PSY || activate_Scales;
}
private bool SavageDragonFunction() private bool SavageDragonFunction()
{ {
if (Duel.LastChainPlayer == 1) if (Duel.LastChainPlayer == 1)
...@@ -1156,6 +1174,11 @@ namespace WindBot.Game.AI.Decks ...@@ -1156,6 +1174,11 @@ namespace WindBot.Game.AI.Decks
AI.SelectMaterials(materials); AI.SelectMaterials(materials);
return true; return true;
} }
private bool PSYFunction()
{
activate_PSY = true;
return true;
}
private bool IPFunction() private bool IPFunction()
{ {
if (Duel.LastChainPlayer == 0) return false; if (Duel.LastChainPlayer == 0) return false;
......
...@@ -183,6 +183,7 @@ namespace WindBot.Game.AI ...@@ -183,6 +183,7 @@ namespace WindBot.Game.AI
public const int DuelDragonToken = 60025884; public const int DuelDragonToken = 60025884;
public const int SeleneQueenOfTheMasterMagicians = 45819647; public const int SeleneQueenOfTheMasterMagicians = 45819647;
public const int TheWingedDragonofRaSphereMode = 10000080; public const int TheWingedDragonofRaSphereMode = 10000080;
public const int SelettriceVaalmonica = 23093373;
public const int RockOfTheVanquisher = 28168628; public const int RockOfTheVanquisher = 28168628;
public const int SpiralDischarge = 29477860; public const int SpiralDischarge = 29477860;
...@@ -304,7 +305,8 @@ namespace WindBot.Game.AI ...@@ -304,7 +305,8 @@ namespace WindBot.Game.AI
{_CardId.DuelLinkDragonTheDuelDragon, (defender, list) => list.Any(monster => monster.IsCode(_CardId.DuelDragonToken))}, {_CardId.DuelLinkDragonTheDuelDragon, (defender, list) => list.Any(monster => monster.IsCode(_CardId.DuelDragonToken))},
{_CardId.SeleneQueenOfTheMasterMagicians, (defender, list) => list.Any(monster => monster.HasSetcode(_Setcode.Endymion))}, {_CardId.SeleneQueenOfTheMasterMagicians, (defender, list) => list.Any(monster => monster.HasSetcode(_Setcode.Endymion))},
{_CardId.TheWingedDragonofRaSphereMode, (defender, list) => true} {_CardId.TheWingedDragonofRaSphereMode, (defender, list) => true},
{_CardId.SelettriceVaalmonica, (defender, list) => list.Any(monster => !monster.IsCode(_CardId.SelettriceVaalmonica))}
}; };
/// <summary> /// <summary>
...@@ -1129,6 +1131,15 @@ namespace WindBot.Game.AI ...@@ -1129,6 +1131,15 @@ namespace WindBot.Game.AI
_CardId.EvenlyMatched, _CardId.EvenlyMatched,
_CardId.DivineArsenalAAZEUS_SkyThunder _CardId.DivineArsenalAAZEUS_SkyThunder
}; };
int[] destroyAllMonsterList =
{
_CardId.DarkHole,
_CardId.InterruptedKaijuSlumber
};
int[] destroyAllOpponentMonsterList =
{
_CardId.Raigeki
};
int[] destroyAllOpponentSpellList = int[] destroyAllOpponentSpellList =
{ {
_CardId.HarpiesFeatherDuster, _CardId.HarpiesFeatherDuster,
...@@ -1137,6 +1148,8 @@ namespace WindBot.Game.AI ...@@ -1137,6 +1148,8 @@ namespace WindBot.Game.AI
if (Util.ChainContainsCard(destroyAllList)) return true; if (Util.ChainContainsCard(destroyAllList)) return true;
if (Enemy.HasInSpellZone(destroyAllOpponentSpellList, true) && Card.Location == CardLocation.SpellZone) return true; if (Enemy.HasInSpellZone(destroyAllOpponentSpellList, true) && Card.Location == CardLocation.SpellZone) return true;
if (Util.ChainContainsCard(destroyAllMonsterList) && Card.Location == CardLocation.MonsterZone) return true;
if (Duel.CurrentChain.Any(c => c.Controller == 1 && c.IsCode(destroyAllOpponentMonsterList)) && Card.Location == CardLocation.MonsterZone) return true;
if (lightningStormOption == 0 && Card.Location == CardLocation.MonsterZone && Card.IsAttack()) return true; if (lightningStormOption == 0 && Card.Location == CardLocation.MonsterZone && Card.IsAttack()) return true;
if (lightningStormOption == 1 && Card.Location == CardLocation.SpellZone) return true; if (lightningStormOption == 1 && Card.Location == CardLocation.SpellZone) return true;
// TODO: ChainContainsCard(id, player) // TODO: ChainContainsCard(id, player)
...@@ -1593,7 +1606,7 @@ namespace WindBot.Game.AI ...@@ -1593,7 +1606,7 @@ namespace WindBot.Game.AI
if (originId == 0) originId = card.Data.Id; if (originId == 0) originId = card.Data.Id;
return crossoutDesignatorIdList.Contains(originId) return crossoutDesignatorIdList.Contains(originId)
|| (calledbytheGraveIdCountMap.ContainsKey(originId) && calledbytheGraveIdCountMap[originId] > 0) || (calledbytheGraveIdCountMap.ContainsKey(originId) && calledbytheGraveIdCountMap[originId] > 0)
|| card.IsDisabled(); || (card.IsDisabled() && ((int)card.Location & (int)CardLocation.Onfield) > 0);
} }
protected bool DefaultCheckWhetherCardIdIsNegated(int cardId) protected bool DefaultCheckWhetherCardIdIsNegated(int cardId)
......
...@@ -212,6 +212,17 @@ ...@@ -212,6 +212,17 @@
StellarNemesisTPHON_DoomsdayStar = 93039339, StellarNemesisTPHON_DoomsdayStar = 93039339,
SPLittleKnight = 29301450, SPLittleKnight = 29301450,
AngelRing = 40678060, AngelRing = 40678060,
SkullGuardianTheSilenforcingProtector = 10774240 SkullGuardianProtectorOfTheVoicelessVoice = 10774240,
FloweringEtoileTheMelodiousMagnificat = 83793721,
EnlightenmentDragon = 46186135,
GoldPrideEradicator = 45464587,
VarudrasTheFinalBringerOfTheEndTimes = 70636044,
RagnaraikaStagSovereign = 42307760,
DrytronMeteonisAlphaDraconids = 56863746,
TheUnstoppableExodiaIncarnate = 83257450,
LightAndDarknessDragonLord = 19652159,
FiendsmithDiesIrae = 82135803,
MementomictlanTecuhtlicaCombinedConqueror = 14529511,
MadolcheQueenTiaraalaFraise = 49689480
} }
} }
...@@ -86,6 +86,8 @@ ...@@ -86,6 +86,8 @@
FusionReproduction = 43331750, FusionReproduction = 43331750,
ChimeraFusion = 63136489, ChimeraFusion = 63136489,
HarmonicSynchroFusion = 7473735, HarmonicSynchroFusion = 7473735,
SouloftheSupremeCelestialKing = 76840111 SouloftheSupremeCelestialKing = 76840111,
MelodiousConcerto = 31458630,
MementotlanFusion = 66518509
} }
} }
...@@ -114,6 +114,15 @@ ...@@ -114,6 +114,15 @@
DarkGuardian = 26746975, DarkGuardian = 26746975,
EnvoyOfTheWaxState = 87462901, EnvoyOfTheWaxState = 87462901,
Fluffyfluff = 85401123, Fluffyfluff = 85401123,
YubelDasEwigLiebeWachter = 47172959 YubelDasEwigLiebeWachter = 47172959,
TenpaiDragonFadra = 65326118,
GolgoilTheSteelSeismicSmasher = 59369430,
TalonsOfShurilane = 74150658,
NightmareApprentice = 58143852,
MillenniumoonMaiden = 37552929,
MillenniumFiendReflection = 63947968,
HereticalPhoboscobos = 76078185,
TopHatHareTheSilhouetteMagician = 1528054,
Silhouhatte = 24440742
} }
} }
...@@ -11,10 +11,6 @@ ...@@ -11,10 +11,6 @@
SamuraiDestroyer = 40509732, SamuraiDestroyer = 40509732,
ArmadesKeeperOfBoundaries = 88033975, ArmadesKeeperOfBoundaries = 88033975,
NumberS39UtopiaTheLightning = 56832966, NumberS39UtopiaTheLightning = 56832966,
DualAvatarEmpoweredKonGyo = 33026283, DualAvatarEmpoweredKonGyo = 33026283
GGolemRockHammer = 98875863,
WishDragon = 64583600,
ChaosWitch = 30327674,
FissioningMotherSpider = 34034150
} }
} }
...@@ -63,6 +63,10 @@ ...@@ -63,6 +63,10 @@
ThreeEyedGhost = 31464658, ThreeEyedGhost = 31464658,
UrsarcticPolarStar = 62714453, UrsarcticPolarStar = 62714453,
BattlinBoxerPromoter = 83315222, BattlinBoxerPromoter = 83315222,
TGRocketSalamander = 77392987 TGRocketSalamander = 77392987,
GGolemRockHammer = 98875863,
WishDragon = 64583600,
ChaosWitch = 30327674,
FissioningMotherSpider = 34034150
} }
} }
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
BorreloadDragon = 31833038, BorreloadDragon = 31833038,
BorrelendDragon = 98630720, BorrelendDragon = 98630720,
DrytronMeteonisDraconids = 69815951, DrytronMeteonisDraconids = 69815951,
MyutantBeast = 34695290 MyutantBeast = 34695290,
VeidosTheDragonOfEndlessDarkness = 8540986
} }
} }
...@@ -82,7 +82,6 @@ namespace WindBot.Game ...@@ -82,7 +82,6 @@ namespace WindBot.Game
if (Data != null) if (Data != null)
{ {
Name = Data.Name; Name = Data.Name;
if (Data.Alias != 0)
Alias = Data.Alias; Alias = Data.Alias;
} else { } else {
Name = null; Name = null;
......
...@@ -1162,6 +1162,7 @@ namespace WindBot.Game ...@@ -1162,6 +1162,7 @@ namespace WindBot.Game
private bool ShouldExecute(CardExecutor exec, ClientCard card, ExecutorType type, int desc = -1, int timing = -1) private bool ShouldExecute(CardExecutor exec, ClientCard card, ExecutorType type, int desc = -1, int timing = -1)
{ {
Executor.SetCard(type, card, desc, timing);
if (card.Id != 0 && type == ExecutorType.Activate) if (card.Id != 0 && type == ExecutorType.Activate)
{ {
if (_activatedCards.ContainsKey(card.Id) && _activatedCards[card.Id] >= 9) if (_activatedCards.ContainsKey(card.Id) && _activatedCards[card.Id] >= 9)
...@@ -1169,7 +1170,6 @@ namespace WindBot.Game ...@@ -1169,7 +1170,6 @@ namespace WindBot.Game
if (!Executor.OnPreActivate(card)) if (!Executor.OnPreActivate(card))
return false; return false;
} }
Executor.SetCard(type, card, desc, timing);
bool result = card != null && exec.Type == type && bool result = card != null && exec.Type == type &&
(exec.CardId == -1 || exec.CardId == card.Id) && (exec.CardId == -1 || exec.CardId == card.Id) &&
(exec.Func == null || exec.Func()); (exec.Func == null || exec.Func());
......
...@@ -1073,7 +1073,7 @@ namespace WindBot.Game ...@@ -1073,7 +1073,7 @@ namespace WindBot.Game
card.Controller = player; card.Controller = player;
} }
if (card == null) continue; if (card == null) continue;
if (card.Id == 0) if (card.Id == 0 || card.Location == CardLocation.Deck)
card.SetId(id); card.SetId(id);
cards.Add(card); cards.Add(card);
} }
...@@ -1139,7 +1139,7 @@ namespace WindBot.Game ...@@ -1139,7 +1139,7 @@ namespace WindBot.Game
else else
card = _duel.GetCard(player, loc, seq); card = _duel.GetCard(player, loc, seq);
if (card == null) continue; if (card == null) continue;
if (card.Id == 0) if (card.Id == 0 || card.Location == CardLocation.Deck)
card.SetId(id); card.SetId(id);
cards.Add(card); cards.Add(card);
} }
...@@ -1151,6 +1151,14 @@ namespace WindBot.Game ...@@ -1151,6 +1151,14 @@ namespace WindBot.Game
CardLocation loc = (CardLocation)packet.ReadByte(); CardLocation loc = (CardLocation)packet.ReadByte();
int seq = packet.ReadByte(); int seq = packet.ReadByte();
packet.ReadByte(); // pos packet.ReadByte(); // pos
ClientCard card;
if (((int)loc & (int)CardLocation.Overlay) != 0)
card = new ClientCard(id, CardLocation.Overlay, -1);
else
card = _duel.GetCard(player, loc, seq);
if (card == null) continue;
if (card.Id == 0 || card.Location == CardLocation.Deck)
card.SetId(id);
} }
if (count2 == 0) cancelable = false; if (count2 == 0) cancelable = false;
......
...@@ -60,6 +60,7 @@ ...@@ -60,6 +60,7 @@
<Compile Include="Game\AI\CardSelector.cs" /> <Compile Include="Game\AI\CardSelector.cs" />
<Compile Include="Game\AI\DeckAttribute.cs" /> <Compile Include="Game\AI\DeckAttribute.cs" />
<Compile Include="Game\AI\DecksManager.cs" /> <Compile Include="Game\AI\DecksManager.cs" />
<Compile Include="Game\AI\Decks\AlbazExecutor.cs" />
<Compile Include="Game\AI\Decks\AltergeistExecutor.cs" /> <Compile Include="Game\AI\Decks\AltergeistExecutor.cs" />
<Compile Include="Game\AI\Decks\BraveExecutor.cs" /> <Compile Include="Game\AI\Decks\BraveExecutor.cs" />
<Compile Include="Game\AI\Decks\FamiliarPossessedExecutor.cs" /> <Compile Include="Game\AI\Decks\FamiliarPossessedExecutor.cs" />
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
Thunder = 0x1000, Thunder = 0x1000,
Dragon = 0x2000, Dragon = 0x2000,
Beast = 0x4000, Beast = 0x4000,
BestWarrior = 0x8000, BeastWarrior = 0x8000,
Dinosaur = 0x10000, Dinosaur = 0x10000,
Fish = 0x20000, Fish = 0x20000,
SeaSerpent = 0x40000, SeaSerpent = 0x40000,
......
...@@ -241,9 +241,9 @@ ...@@ -241,9 +241,9 @@
"dialog": "wof-Samisui-Koyuki" "dialog": "wof-Samisui-Koyuki"
}, },
{ {
"name": "有栖川蓝子", "name": "鹫见花火",
"deck": "MokeyMokeyKing", "deck": "Albaz",
"dialog": "wof-Arisugawa-Aiko" "dialog": "wof-Sumi-Hanabi"
}, },
{ {
"name": "宫水静香", "name": "宫水静香",
......
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