using System.Linq;
using Wizard.Battle.View.Vfx;

public class NetworkSkill_power_down : Skill_power_down
{
	public NetworkSkill_power_down(SkillParameter skillPrm, string option)
		: base(skillPrm, option)
	{
	}

	public override VfxWithLoading Start(CallParameter parameter)
	{
		base.SkillPrm.ownerCard.SelfBattlePlayer.CallOnPowerDownStart();
		VfxWithLoading result = base.Start(parameter);
		if (_gainOffense > 0 || _gainLife > 0 || _gainMaxLife > 0)
		{
			base.SkillPrm.ownerCard.SelfBattlePlayer.CallOnPowerDown(base.SkillPrm.ownerCard, parameter.targetCards.ToList(), _gainOffense * -1, _gainLife * -1, _gainMaxLife * -1, isSet: false);
			return result;
		}
		if (_setOffense != Skill_power_down.SETPRM_NONE || _setLife != Skill_power_down.SETPRM_NONE || _setMaxLife != Skill_power_down.SETPRM_NONE)
		{
			base.SkillPrm.ownerCard.SelfBattlePlayer.CallOnPowerDown(base.SkillPrm.ownerCard, parameter.targetCards.ToList(), _setOffense, _setLife, _setMaxLife, isSet: true);
			return result;
		}
		base.SkillPrm.ownerCard.SelfBattlePlayer.CallOnRemoveLatestOperationJsonData(NetworkBattleReceiver.ReplayOperationType.GainPowerDown);
		return result;
	}

	public override VfxWithLoading Stop(SkillProcessor skillProcessor)
	{
		base.SkillPrm.ownerCard.SelfBattlePlayer.CallOnDeprivePowerDown(buffInfoContainer);
		return base.Stop(skillProcessor);
	}
}
