Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/AIVirtualFusionSimulator.cs
gamer147 824309ec44 feat(battle-engine): close the AI-simulation subsystem (verbatim)
Copied the 89 uncopied AI*SimulationUtility/extension files defining the
AIVirtualCard/AIVirtualField extension methods; the compile loop then auto-closed
the revealed type deps (~3049 files total, drift-clean). 10.0k -> 62 errors.
2026-06-05 20:30:59 -04:00

46 lines
1.5 KiB
C#

using System.Collections.Generic;
namespace Wizard;
public static class AIVirtualFusionSimulator
{
public static void Fusion(AIVirtualTargetSelectAction situation, AIVirtualField field)
{
if (situation.ActionType != AIOperationType.FUSION)
{
AIConsoleUtility.LogError("AIVirtualFusionSimulator:Fusion() error!! situation is not [FUSION] ActionType!!!!!");
return;
}
if (!situation.IsTargetExists(AIScriptTokenArgType.TARGET_SELECT))
{
AIConsoleUtility.LogError("AIVirtualFusionSimulator:Fusion() error!! cannot find fusion ingredients!!!!!");
return;
}
FusionMoveCard(situation, field);
AIVirtualCard actor = situation.Actor;
if (actor.TagCollectionContainer.HasTag(AIPlayTagType.FusionMetamorphose))
{
actor.TagCollectionContainer.FusionMetamorphoseTags.ExecuteMetamorphose(actor, field, field.BestPlayPtn, situation);
}
}
private static void FusionMoveCard(AIVirtualTargetSelectAction situation, AIVirtualField field)
{
List<AIVirtualCard> targets = situation.GetSituationTarget(AIScriptTokenArgType.TARGET_SELECT).Targets;
bool isAlly = situation.Actor.IsAlly;
for (int i = 0; i < targets.Count; i++)
{
AIVirtualCard aIVirtualCard = targets[i];
if (isAlly)
{
field.RemoveAllyHandCard(aIVirtualCard);
}
else
{
field.RemoveEnemyHandCard(aIVirtualCard);
}
situation.Actor.FusionIngredients.AddFusionIngredient(aIVirtualCard, field.CurrentTurnCount);
}
}
}