48 lines
1.8 KiB
C#
48 lines
1.8 KiB
C#
using System.Collections.Generic;
|
|
using Continentis.MainGame.Card;
|
|
using Continentis.MainGame.Character;
|
|
using Continentis.MainGame.Commands;
|
|
using SLSFramework.General;
|
|
using UnityEngine;
|
|
|
|
namespace Continentis.Mods.Basic.Cards
|
|
{
|
|
public class WindBlade : CardLogicBase
|
|
{
|
|
public override void SetUpLogicComponents()
|
|
{
|
|
AddLogicComponent<CardLogicComponent_Attack>();
|
|
}
|
|
|
|
public override List<CommandBase> PlayEffect(List<CharacterBase> targetList)
|
|
{
|
|
base.PlayEffect(targetList);
|
|
CommandGroup mainGroup = TargetListCommandGroup(targetList,
|
|
new Cmd_PlayAnimation(user.characterView, "Attack"),
|
|
new Cmd_ParamFunction<CharacterBase>(0.2f, target => user.Attack(target, GetTargetedFinalDamage(target))));
|
|
|
|
return new List<CommandBase> { mainGroup };
|
|
}
|
|
|
|
public override void ApplyAttributeChangesByCard()
|
|
{
|
|
LogicComponent<CardLogicComponent_Attack>().SetDamage_Arcane();
|
|
}
|
|
|
|
public override int GetTargetedFinalDamage(CharacterBase target, List<string> elementalTags = null)
|
|
{
|
|
float baseDamageFromSuppress = 0;
|
|
|
|
if (target is CombatNPC npc && user.IsOpponent(npc))
|
|
{
|
|
baseDamageFromSuppress = npc.actionCountThisRound == 0 ? 4f : 0f;
|
|
}
|
|
|
|
base.GetFinalDamage(target, elementalTags, out float baseDamageAfterOffset, out float elementalAmplifier, out float magicAmplifier, out float finalAmplifier);
|
|
|
|
float finalDamage = (baseDamageAfterOffset + baseDamageFromSuppress) * elementalAmplifier * magicAmplifier * finalAmplifier;
|
|
|
|
return Mathf.RoundToInt(finalDamage);
|
|
}
|
|
}
|
|
} |