Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/AIOtherLeaveDamage.cs
gamer147 957af3d1ec feat(battle-engine): full Unity/VFX/god-object shims + expanded copy closure (2570 files)
Authored Unity primitive/object-model shim, VFX layer (control-flow-preserving, InstantVfx never invokes its action -- headless suppression), god-object stubs (GameMgr/EffectMgr/UIManager with faithfully-extracted nested enums), View/UI/Touch tree, LitJson+BetterList+Tuple copied, third-party stubs. Discovered Roslyn header-error masking: fixing class-header type errors unmasks body references, so the true copy closure is ~2570 files (was 782 under masking). Errors: masked-25720 -> 268; our shim files compile clean. Remaining: ~50 residual shim/external types, 24 NGUI UI-base overrides, static-type fixes, plus likely 1-2 more unmask waves.
2026-06-05 17:22:20 -04:00

65 lines
1.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Collections.Generic;
namespace Wizard;
public class AIOtherLeaveDamage : AITriggerAndTargetFiltersTagBase
{
private AIPolishConvertedExpression _damageAmount;
private AIScriptTokenArgType _selectType;
private const int DAMAGE_AMOUNT_ARG_OFFSET = 1;
private const int SELECT_TYPE_ARG_OFFSET = 2;
protected override int NON_FILTER_FIRST_OFFSET => 2;
public AIOtherLeaveDamage(string text)
: base(text)
{
}
protected override void InitExpressions(string text)
{
base.InitExpressions(text);
_damageAmount = _exprList[_exprList.Count - 1];
_selectType = AIPlayTagInitializingUtility.CreateSingleArgType(_exprList[_exprList.Count - 2], base.LegalSelectTypes);
}
protected override void RunTagMethod(List<AIVirtualCard> targets, AIVirtualField field, AIVirtualCard tagOwner, List<int> playPtn, AISituationInfo situation)
{
int damageAmount = GetDamageAmount(tagOwner, field, playPtn, situation);
switch (_selectType)
{
case AIScriptTokenArgType.ALL_SELECT:
AIDamageSimulationUtility.DamageAll(targets, tagOwner, field, damageAmount, situation);
break;
case AIScriptTokenArgType.RANDOM_SELECT:
AIDamageSimulationUtility.DamageRandom(targets, tagOwner, field, damageAmount, situation);
break;
default:
AIConsoleUtility.LogError($"AIOtherLeaveDamage()SelectType={_selectType} 未対応");
break;
}
}
protected override void CreateLegalSelectTypes()
{
base.LegalSelectTypes = new AIScriptTokenArgType[2]
{
AIScriptTokenArgType.ALL_SELECT,
AIScriptTokenArgType.RANDOM_SELECT
};
}
private int GetDamageAmount(AIVirtualCard tagOwner, AIVirtualField field, List<int> playPtn, AISituationInfo situation)
{
if (_damageAmount == null)
{
AIConsoleUtility.LogError("AIOtherLeaveDamage error!! _damageAmount is null");
return 0;
}
return (int)_damageAmount.EvalArg(tagOwner, playPtn, field, situation);
}
}