Commit 904b4c57 authored by handsomekiwi's avatar handsomekiwi Committed by mercury233

update LightswornShaddoldinosour and misc (#28)

parent d2925f39
{
"welcome": [
"真難得有人發現這個。",
"真沒想到你能跟我對戰呢!決鬥者。不過也就到此為止了,接下來由我V.F.D(非常友善的決鬥者)來做你的對手。"
],
"deckerror": [
"阿,可能BA又把CBD修壞導致{0}消失了。"
],
"duelstart": [
"這只是AI,打贏不要太高興阿。",
"十分致謝233服讓我們有遊戲可以玩,別忘記去拜訪他們。",
"反主流學院請洽NOVA。",
"Wryyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy."
],
"newturn": [
"到我的回合了,抽牌!",
"我的回合,抽牌!",
"我抽了一張卡。"
],
"endturn": [
"回合结束。",
"我的回合结束了。",
"這樣算是成功的展開嗎......",
"輪到你了。你的下一句是......我要發動灰流麗對吧!"
],
"directattack": [
"{0},直接攻擊!",
"{0},直接攻擊對手!",
"{0},没有防守的地方,攻擊!",
"{0},攻擊對手的生命值!",
"{0},直接攻擊對手的生命值!",
"{0},通過直接攻擊打倒對手!",
"{0},使用直接攻擊打倒對手!",
"{0},直接攻擊釋放你的力量吧!",
"我的{0}將會粉碎你的生命值!",
"向對手展示你的力量吧,{0}!",
"你已經無法阻止我了。{0},攻擊!"
],
"attack": [
"{0},攻擊這體{1}!",
"{0},消滅這體{1}!",
"{0},打倒{1}!",
"{0},衝向那體{1}!",
"{0},把你的力量释放到{1}上吧!"
],
"ondirectattack": [
"可惡......",
"不過是{0}而已!",
"果然我還是太弱了......"
],
"facedownmonstername": "怪獸",
"activate": [
"我發動{0}。",
"我使用{0}的效果。",
"我使用{0}的力量。"
],
"summon": [
"真是HIGH的最高點!出來吧{0}。",
"出來吧,{0}!",
"出現吧,{0}!",
"我召喚了強大的{0}!",
"我呼喚{0}參加戰鬥!",
"我呼喚出{0}。",
"我召喚{0}。"
],
"setmonster": [
"我放置了一體怪獸。",
"我裡側表示放置了一體怪獸。"
],
"chaining": [
"看這裡!發動{0}!",
"我使用{0}的力量。",
"很不錯的戰術...但是我拒絕!{0}!",
"真不愧是納粹,竟然能識破我的蓋牌......你說你只是單純的決鬥者?{0},發動!",
"看樣子你忘了我的{0}!",
"你考慮過我有{0}嗎?"
]
}
......@@ -70,7 +70,6 @@
"看這裡!發動{0}!",
"我使用{0}的力量。",
"很不錯的戰術...但是我拒絕!{0}!",
"真不愧是納粹,竟然能識破我的蓋牌......你說你只是單純的決鬥者?{0},發動!",
"看樣子你忘了我的{0}!",
"你考慮過我有{0}嗎?"
]
......
......@@ -72,18 +72,20 @@ namespace WindBot.Game.AI.Decks
}
bool Pillused = false;
bool CrystalWingSynchroDragoneff_used = false;
bool OvertexCoatlseff_used = false;
public LightswornShaddoldinosour(GameAI ai, Duel duel)
: base(ai, duel)
{
//counter
AddExecutor(ExecutorType.SpSummon, CardId.CrystalWingSynchroDragon, CrystalWingSynchroDragonesp);
AddExecutor(ExecutorType.Activate, CardId.GhostOgre, Hand_act_eff);
AddExecutor(ExecutorType.Activate, CardId.AshBlossom, Hand_act_eff);
AddExecutor(ExecutorType.Activate, CardId.MaxxC,MaxxC);
//first do
AddExecutor(ExecutorType.Activate, CardId.HarpiesFeatherDuster, DefaultHarpiesFeatherDusterFirst);
AddExecutor(ExecutorType.Activate, CardId.infiniteTransience, infiniteTransience);
AddExecutor(ExecutorType.Activate, CardId.infiniteTransience, DefaultBreakthroughSkill);
AddExecutor(ExecutorType.Activate, CardId.ThatGrassLooksgreener);
AddExecutor(ExecutorType.Summon, CardId.SouleatingOviraptor);
AddExecutor(ExecutorType.Activate, CardId.SouleatingOviraptor, SouleatingOviraptoreff);
......@@ -93,7 +95,7 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.ChargeOfTheLightBrigade, ChargeOfTheLightBrigadeEffect);
AddExecutor(ExecutorType.Activate, CardId.FoolishBurial, FoolishBurialEffect);
AddExecutor(ExecutorType.Activate, CardId.InterruptedKaijuSlumber, DefaultInterruptedKaijuSlumber);
AddExecutor(ExecutorType.Activate, CardId.ShaddollFusion, ShaddollFusion);
AddExecutor(ExecutorType.Activate, CardId.ShaddollFusion, ShaddollFusioneff);
//Reborn
AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, RebornEffect);
//Normal Summon
......@@ -113,27 +115,29 @@ namespace WindBot.Game.AI.Decks
//Sp Summon
AddExecutor(ExecutorType.SpSummon, CardId.UltimateConductorTytanno, UltimateConductorTytannosp);
AddExecutor(ExecutorType.Activate, CardId.UltimateConductorTytanno, UltimateConductorTytannoeff);
AddExecutor(ExecutorType.Activate, CardId.DoubleEvolutionPill, DoubleEvolutionPill);
AddExecutor(ExecutorType.Activate, CardId.DoubleEvolutionPill, DoubleEvolutionPilleff);
AddExecutor(ExecutorType.SpSummon, CardId.MinervaTheExalte);
AddExecutor(ExecutorType.Activate, CardId.MinervaTheExalte, MinervaTheExaltedEffect);
AddExecutor(ExecutorType.SpSummon, CardId.GamecieltheSeaTurtleKaiju, DefaultKaijuSpsummon);
//activate
AddExecutor(ExecutorType.Activate , CardId.GlowUpBulb,GlowUpBulb);
AddExecutor(ExecutorType.SpSummon , CardId.GlowUpBulb,GlowUpBulbeff);
//activate chain
AddExecutor(ExecutorType.Activate, CardId.OvertexCoatls);
AddExecutor(ExecutorType.Activate, CardId.OvertexCoatls, OvertexCoatlseff);
AddExecutor(ExecutorType.Activate, CardId.ShaddollBeast);
AddExecutor(ExecutorType.Activate, CardId.ShaddollFalco, ShaddollFalcoeff);
AddExecutor(ExecutorType.Activate, CardId.ShaddollSquamata, ShaddollSquamataeff);
AddExecutor(ExecutorType.Activate, CardId.ShaddollDragon, ShaddollDragoneff);
AddExecutor(ExecutorType.Activate, CardId.ShaddollHedgehog);
AddExecutor(ExecutorType.Activate, CardId.ShaddollHedgehog, ShaddollHedgehogeff);
AddExecutor(ExecutorType.Activate, CardId.GiantRex);
AddExecutor(ExecutorType.Activate, CardId.ElShaddollConstruct);
AddExecutor(ExecutorType.Activate, CardId.ElShaddollGrysra);
AddExecutor(ExecutorType.Activate, CardId.ElShaddollShekhinaga);
AddExecutor(ExecutorType.Activate, CardId.ElShaddollShekhinaga, ElShaddollShekhinagaeff);
AddExecutor(ExecutorType.Activate, CardId.ElShaddollWinda);
AddExecutor(ExecutorType.Activate, CardId.CrystalWingSynchroDragon, CrystalWingSynchroDragoneff);
AddExecutor(ExecutorType.Activate, CardId.TG_WonderMagician);
//spellset
AddExecutor(ExecutorType.SpellSet, CardId.MonsterReborn, spellset);
......@@ -215,12 +219,66 @@ namespace WindBot.Game.AI.Decks
};
}
private bool UltimateConductorTytannoeff()
public override void OnNewTurn()
{
if (Duel.Phase == DuelPhase.Main1 || Duel.Phase == DuelPhase.Main2)
Pillused = false;
OvertexCoatlseff_used = false;
CrystalWingSynchroDragoneff_used = false;
}
public bool CrystalWingSynchroDragonesp()
{
if (CrystalWingSynchroDragoneff_used) return false;
if (Bot.HasInMonstersZone(CardId.FairyTailSnow) ||
Bot.HasInMonstersZone(CardId.Lumina) ||
Bot.HasInMonstersZone(CardId.KeeperOfDragonicMagic)||
Bot.HasInMonstersZone(CardId.SouleatingOviraptor)
)
{
AI.SelectCard(new[]
{
CardId.KeeperOfDragonicMagic,
CardId.Lumina,
CardId.FairyTailSnow,
CardId.SouleatingOviraptor,
});
return true;
}
return false;
}
public bool CrystalWingSynchroDragoneff()
{
if (Duel.Player == 0)
{
CrystalWingSynchroDragoneff_used = true;
AI.SelectCard(new[] { CardId.GhostOgre, CardId.GlowUpBulb, CardId.PlaguespreaderZombie, CardId.ShaddollFalco });
return true;
}
else if (AI.Utils.IsChainTarget(Card) || AI.Utils.GetProblematicEnemySpell() != null) return true;
else if (Duel.Player == 1 && Duel.Phase == DuelPhase.BattleStart && AI.Utils.IsOneEnemyBetterThanValue(1500, true))
{
if (AI.Utils.IsOneEnemyBetterThanValue(1900, true))
{
AI.SelectPosition(CardPosition.FaceUpDefence);
}
else
{
AI.SelectPosition(CardPosition.FaceUpAttack);
}
return true;
}
return false;
}
private bool UltimateConductorTytannoeff()
{
if (Duel.Phase == DuelPhase.Main1 || Duel.Phase == DuelPhase.Main2)
{
IList<int> targets = new[] {
CardId.OvertexCoatls,
CardId.ShaddollBeast,
CardId.ShaddollSquamata,
......@@ -229,13 +287,35 @@ namespace WindBot.Game.AI.Decks
CardId.GlowUpBulb,
CardId.PlaguespreaderZombie,
CardId.FairyTailSnow,
});
CardId.KeeperOfDragonicMagic,
CardId.Raiden,
CardId.Lumina,
CardId.DogorantheMadFlameKaiju,
CardId.GamecieltheSeaTurtleKaiju,
CardId.RadiantheMultidimensionalKaiju,
CardId.GiantRex,
CardId.ShaddollSquamata,
CardId.SouleatingOviraptor,
CardId.Raiden,
CardId.Lumina,
CardId.AshBlossom,
CardId.GhostOgre,
CardId.MaxxC,
};
if (!Bot.HasInHand(targets))
{
if (!Bot.HasInMonstersZone(targets))
{
return false;
}
}
AI.SelectCard(targets);
}
if (Duel.Phase == DuelPhase.Damage)
return true;
AI.SelectYesNo(true);
return true;
}
private bool UltimateConductorTytannosp()
{
Pillused = true;
......@@ -247,6 +327,7 @@ namespace WindBot.Game.AI.Decks
return true;
}
private bool KeeperOfDragonicMagic()
{
if (ActivateDescription == -1)
......@@ -258,17 +339,22 @@ namespace WindBot.Game.AI.Decks
return true;
}
private bool MonsterRepos()
{
if (Card.Id == CardId.ElShaddollConstruct && Card.IsAttack())
return false;
return base.DefaultMonsterRepos();
}
public override void OnNewTurn()
private bool OvertexCoatlseff()
{
Pillused = false;
if (OvertexCoatlseff_used == true)
return false;
return true;
}
private bool DoubleEvolutionPill()
private bool DoubleEvolutionPilleff()
{
if (Pillused == true) return false;
Pillused = true;
......@@ -305,7 +391,37 @@ namespace WindBot.Game.AI.Decks
CardId.UltimateConductorTytanno,
});
}
AI.SelectNextCard(new[] {
IList<int> targets2 = new[] {
CardId.GiantRex,
CardId.DogorantheMadFlameKaiju,
CardId.GamecieltheSeaTurtleKaiju,
CardId.RadiantheMultidimensionalKaiju,
CardId.OvertexCoatls,
CardId.SouleatingOviraptor,
CardId.UltimateConductorTytanno,
};
if (Bot.HasInGraveyard(targets))
{
AI.SelectNextCard(new[] {
CardId.ShaddollBeast,
CardId.ShaddollDragon,
CardId.KeeperOfDragonicMagic,
CardId.ShaddollSquamata,
CardId.SouleatingOviraptor,
CardId.Raiden,
CardId.Lumina,
CardId.ShaddollHedgehog,
CardId.AshBlossom,
CardId.GhostOgre,
CardId.ShaddollFalco,
CardId.MaxxC,
CardId.PlaguespreaderZombie,
CardId.GlowUpBulb,
CardId.FairyTailSnow,
});
}
else
AI.SelectNextCard(new[] {
CardId.ShaddollBeast,
CardId.ShaddollDragon,
CardId.KeeperOfDragonicMagic,
......@@ -345,6 +461,7 @@ namespace WindBot.Game.AI.Decks
}
return true;
}
private bool FairyTailSnow()
{
......@@ -354,132 +471,48 @@ namespace WindBot.Game.AI.Decks
}
return false;
}
private bool SouleatingOviraptoreff()
{
AI.SelectCard(CardId.OvertexCoatls);
AI.SelectYesNo(false);
if (!OvertexCoatlseff_used)
{
AI.SelectCard(CardId.OvertexCoatls);
AI.SelectYesNo(false);
}
else
{
AI.SelectCard(CardId.UltimateConductorTytanno);
AI.SelectYesNo(true);
}
return true;
}
private bool GlowUpBulb()
private bool GlowUpBulbeff()
{
if(Bot.HasInMonstersZone(CardId.Lumina)||
Bot.HasInMonstersZone(CardId.FairyTailSnow)||
Bot.HasInMonstersZone(CardId.KeeperOfDragonicMagic)||
Bot.HasInMonstersZone(CardId.SouleatingOviraptor)
)
AI.SelectPosition(CardPosition.FaceUpDefence);
return true;
}
private bool ShaddollFusion()
private bool ShaddollFusioneff()
{
if (Enemy.GetMonstersExtraZoneCount() != 0)
{
IList<ClientCard> materials0 = Bot.Deck;
IList<ClientCard> materials1 = Bot.Deck;
IList<ClientCard> mats = new List<ClientCard>();
AI.SelectCard(CardId.ElShaddollConstruct);
ClientCard mat = null;
foreach (ClientCard card in materials0)
{
if (card.HasAttribute(CardAttribute.Light))
{
mat = card;
break;
}
}
foreach (ClientCard card in materials1)
{
AI.SelectCard(new[]
{
CardId.ShaddollBeast,
CardId.ShaddollSquamata,
CardId.ShaddollHedgehog,
CardId.ShaddollDragon,
CardId.ShaddollFalco,
});
}
if (mat != null)
{
mats.Add(mat);
AI.SelectMaterials(mats);
AI.SelectPosition(CardPosition.FaceUpAttack);
return true;
}
AI.SelectCard(CardId.ElShaddollShekhinaga);
foreach (ClientCard card in materials0)
{
if (card.HasAttribute(CardAttribute.Earth))
{
mat = card;
break;
}
}
foreach (ClientCard card in materials1)
{
AI.SelectCard(new[]
{
CardId.ShaddollBeast,
CardId.ShaddollSquamata,
CardId.ShaddollHedgehog,
CardId.ShaddollDragon,
CardId.ShaddollFalco,
});
}
if (mat != null)
{
mats.Add(mat);
AI.SelectMaterials(mats);
AI.SelectPosition(CardPosition.FaceUpAttack);
return true;
}
AI.SelectCard(CardId.ElShaddollGrysra);
foreach (ClientCard card in materials0)
{
if (card.HasAttribute(CardAttribute.Fire))
{
mat = card;
break;
}
}
foreach (ClientCard card in materials1)
AI.SelectCard(new[]
{
AI.SelectCard(new[]
{
CardId.ShaddollBeast,
CardId.ShaddollSquamata,
CardId.ShaddollHedgehog,
CardId.ShaddollDragon,
CardId.ShaddollFalco,
CardId.ElShaddollConstruct,
CardId.ElShaddollShekhinaga,
CardId.ElShaddollGrysra,
CardId.ElShaddollWinda
});
}
if (mat != null)
{
mats.Add(mat);
AI.SelectMaterials(mats);
AI.SelectPosition(CardPosition.FaceUpAttack);
return true;
}
AI.SelectCard(CardId.ElShaddollWinda);
foreach (ClientCard card in materials0)
{
if (card.HasAttribute(CardAttribute.Dark))
{
mat = card;
break;
}
}
foreach (ClientCard card in materials1)
{
AI.SelectCard(new[]
AI.SelectNextCard(new[]
{
CardId.ShaddollBeast,
CardId.ShaddollSquamata,
......@@ -488,16 +521,8 @@ namespace WindBot.Game.AI.Decks
CardId.ShaddollFalco,
});
}
if (mat != null)
{
mats.Add(mat);
AI.SelectMaterials(mats);
AI.SelectPosition(CardPosition.FaceUpAttack);
return true;
}
AI.SelectPosition(CardPosition.FaceUpAttack);
return true;
}
else
{
......@@ -510,27 +535,6 @@ namespace WindBot.Game.AI.Decks
}
/* private ClientCard GetAleisterInGrave()
{
foreach (ClientCard card in Enemy.Graveyard)
{
if (card.Id == CardId.AleisterTheInvoker)
{
return card;
}
}
foreach (ClientCard card in Bot.Graveyard)
{
if (card.Id == CardId.AleisterTheInvoker)
{
return card;
}
}
return null;
}*/
private bool ShaddollCore()
{
return Bot.HasInGraveyard(CardId.ShaddollFusion);
......@@ -577,12 +581,10 @@ namespace WindBot.Game.AI.Decks
}
private bool PotofAvarice()
{
return true;
}
private bool infiniteTransience()
{
return Duel.LastChainPlayer == 1;
}
private bool MaxxC()
{
return Duel.Player == 1;
......@@ -610,17 +612,35 @@ namespace WindBot.Game.AI.Decks
}
private bool SinisterShadowGames()
{
if (Card.Location != CardLocation.MonsterZone)
return true;
else
{
AI.SelectCard(new[]
AI.SelectCard(new[]
{
CardId.ShaddollBeast,
}
});
return true;
}
private bool ElShaddollShekhinagaeff()
{
if (Card.Location != CardLocation.MonsterZone)
return true;
else
{
if(Duel.LastChainPlayer==1)
{
AI.SelectCard(new[]
{
CardId.ElShaddollConstruct,
CardId.ElShaddollShekhinaga,
CardId.ElShaddollGrysra,
CardId.ElShaddollWinda,
CardId.ShaddollSquamata,
}
);
}
}
return true;
}
......@@ -644,6 +664,21 @@ namespace WindBot.Game.AI.Decks
}
return true;
}
private bool ShaddollHedgehogeff()
{
if (Card.Location != CardLocation.MonsterZone)
{
AI.SelectCard(new[]
{
CardId.ShaddollSquamata,
});
}
else
{
AI.SelectCard(new[] { CardId.ShaddollFusion, CardId.SinisterShadowGames });
}
return true;
}
private bool ShaddollDragoneff()
{
if (Card.Location == CardLocation.MonsterZone)
......@@ -664,12 +699,10 @@ namespace WindBot.Game.AI.Decks
if (Card.Location != CardLocation.MonsterZone)
{
AI.SelectCard(new[]
{
{
CardId.ShaddollBeast,
});
});
}
else
{
ClientCard target = AI.Utils.GetBestEnemyMonster();
......@@ -677,28 +710,38 @@ namespace WindBot.Game.AI.Decks
}
return true;
}
private bool FoolishBurialEffect()
{
if (Bot.GetRemainingCount(CardId.DoubleEvolutionPill, 3) > 0)
{
if (!OvertexCoatlseff_used)
{
AI.SelectCard(new[]
{
CardId.OvertexCoatls,
});
}
else return false;
}
else
{
AI.SelectCard(new[]
{
CardId.OvertexCoatls,
CardId.ShaddollSquamata,
CardId.ShaddollBeast,
CardId.ShaddollCore,
CardId.ShaddollHedgehog,
CardId.ShaddollFalco,
CardId.ShaddollDragon,
CardId.FairyTailSnow,
});
{
CardId.OvertexCoatls,
CardId.ShaddollSquamata,
CardId.FairyTailSnow,
});
}
return true;
}
private bool GoblindberghSummon()
{
foreach (ClientCard card in Bot.Hand.GetMonsters())
......
......@@ -14,6 +14,7 @@
MetaionTheTimelord = 74530899,
KamionTheTimelord = 91712985,
LazionTheTimelord = 92435533,
EaterOfMillions = 63845230
}
EaterOfMillions = 63845230,
ElShaddollConstruct = 20366274,
}
}
......@@ -70,6 +70,19 @@ namespace WindBot.Game
}
return count;
}
public int GetFieldCount()
{
return GetSpellCount() + GetMonsterCount();
}
public int GetFieldHandCount()
{
return GetSpellCount() + GetMonsterCount() + GetHandCount();
}
public bool IsFieldEmpty()
{
......
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