From 80480ddb5cf7689ab51dd259546752bb92b621fa Mon Sep 17 00:00:00 2001 From: Wind2009-Louse Date: Wed, 4 Dec 2024 23:14:33 +0800 Subject: [PATCH] Fix --- Game/AI/Decks/RyzealExecutor.cs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/Game/AI/Decks/RyzealExecutor.cs b/Game/AI/Decks/RyzealExecutor.cs index 3ab09c5a..6f57f565 100644 --- a/Game/AI/Decks/RyzealExecutor.cs +++ b/Game/AI/Decks/RyzealExecutor.cs @@ -555,11 +555,13 @@ public List GetProblematicEnemyCardList(bool canBeTarget = false, bo return resultList; } - public List GetNormalEnemyTargetList(bool canBeTarget = true, bool ignoreCurrentDestroy = false, CardType selfType = 0) + public List GetNormalEnemyTargetList(bool canBeTarget = true, bool ignoreCurrentDestroy = false, CardType selfType = 0, bool forNegate = false) { List targetList = GetProblematicEnemyCardList(canBeTarget, selfType: selfType); List enemyMonster = Enemy.GetMonsters().Where(card => card.IsFaceup() && !targetList.Contains(card) - && (!ignoreCurrentDestroy || !currentDestroyCardList.Contains(card))).ToList(); + && (!ignoreCurrentDestroy || !currentDestroyCardList.Contains(card)) + && (!forNegate || (!card.IsDisabled() && card.HasType(CardType.Effect))) + ).ToList(); enemyMonster.Sort(CardContainer.CompareCardAttack); enemyMonster.Reverse(); targetList.AddRange(enemyMonster); @@ -567,7 +569,10 @@ public List GetNormalEnemyTargetList(bool canBeTarget = true, bool i (!ignoreCurrentDestroy || !currentDestroyCardList.Contains(card)) && enemyPlaceThisTurn.Contains(card) && card.IsFacedown()).ToList())); targetList.AddRange(ShuffleList(Enemy.GetSpells().Where(card => (!ignoreCurrentDestroy || !currentDestroyCardList.Contains(card)) && !enemyPlaceThisTurn.Contains(card) && card.IsFacedown()).ToList())); - targetList.AddRange(ShuffleList(Enemy.GetMonsters().Where(card => card.IsFacedown() && (!ignoreCurrentDestroy || !currentDestroyCardList.Contains(card))).ToList())); + targetList.AddRange(ShuffleList(Enemy.GetMonsters().Where(card => card.IsFacedown() + && (!ignoreCurrentDestroy || !currentDestroyCardList.Contains(card)) + && (!forNegate || (!card.IsDisabled() && card.HasType(CardType.Effect))) + ).ToList())); return targetList; } @@ -3452,8 +3457,11 @@ public bool DonnerDaggerFurHireSpSummon() public bool MereologicAggregatorActivateFirst() { List> multiNegateFuncList = new List> { - {c => c.IsCode(44665365, 48546368, 54178659) }, - {c => c.IsCode(4280258) && c.Attack >= 800 } + {c => c.IsCode(44665365, 48546368, 54178659) && c.IsMonster() }, + {c => c.IsCode(4280258) && c.Attack >= 800 }, + {c => c.IsCode(47297616) && c.Attack >= 500 && c.Defense >= 500 }, + {c => c.IsCode(19652159) && c.Attack >= 1000 && c.Defense >= 1000 }, + {c => c.IsCode(79600447) && Enemy.MonsterZone.Any(m => m != null && m.IsFaceup() && m.IsCode(23288411) && m.Attack >= 1000) } }; List searchCardList = new List(Enemy.GetMonsters()); searchCardList.AddRange(Enemy.GetSpells()); @@ -3494,7 +3502,7 @@ public bool MereologicAggregatorActivateLater() } } - List targetList = GetNormalEnemyTargetList(true, false, CardType.Monster).Where(c => c.IsFaceup()).ToList(); + List targetList = GetNormalEnemyTargetList(true, false, CardType.Monster, true).Where(c => c.IsFaceup()).ToList(); if (targetList.Count() > 0) { currentNegateCardList.Add(targetList[0]); @@ -3508,7 +3516,7 @@ public bool MereologicAggregatorActivateLater() { foreach (ClientCard card in Bot.GetMonsters()) { - if (card.IsFacedown() || Duel.CurrentChain.Contains(card) || card.IsDisabled()) continue; + if (card.IsFacedown() || Duel.CurrentChain.Contains(card) || card.IsDisabled() || !card.HasType(CardType.Effect)) continue; bool flag = card.IsCode(CardId.IceRyzeal, CardId.ThodeRyzeal); flag |= card.IsCode(CardId.NodeRyzeal) && activatedCardIdList.Contains(CardId.NodeRyzeal); flag |= card.HasType(CardType.Xyz) && !card.HasXyzMaterial() && !card.IsCode(CardId.RyzealDeadnader, CardId.RyzealDuodrive, CardId.FullArmoredUtopicRayLancer);