public override void Init(BaseSkill baseSkill) { base.Init(baseSkill); var skill = (PassiveSkill)baseSkill; AttackType = skill.AttackType; DefenseType = skill.DefenseType; ActiveOnType = skill.ActiveOnType; }
public override OnDefenseSkillResult OnDefense(Poring attacker, Poring poring, FaceDice faceDice) { if (faceDice == ActiveOnType && CurrentCD <= 0) { // Debug.LogError($"{poring.name} : {this.name}!!"); float damage = 0; switch (DefenseType) { case DefenseTypeResult.None: damage = 0; break; case DefenseTypeResult.Counter: damage = (DamageType == DamageType.PAtk) ? poring.Property.CurrentPAtk : poring.Property.CurrentMAtk; damage *= poring.GetBlessingBuff(); EffectReceiver maximizePower = poring.GetStatus(SkillStatus.MaximizePower); damage *= (maximizePower != null) ? maximizePower.Damage : 1; if (attacker.Node != poring.Node) { DefenseType = DefenseTypeResult.None; damage = 0; } if (poring.CheckHasStatus(SkillStatus.Blind)) { damage = 0; } break; case DefenseTypeResult.Dodge: damage = 0; break; } return(new OnDefenseSkillResult() { Type = DefenseType, DamageType = DamageType, EffectStatusResults = SetEffectOwnerIdAndDamage(poring), DamageResult = damage, EffectOnSelf = EffectOnSelf, EffectOnTarget = EffectOnHit, }); } else { return(new OnDefenseSkillResult() { Type = DefenseTypeResult.None, DamageType = DamageType, EffectStatusResults = new List <EffectReceiver>(), DamageResult = 0 }); } }
public OnDefenseSkillResult(DefenseTypeResult type, DamageType damageType, float damageResult, List <EffectReceiver> statusResult = null, GameObject effectOnSelf = null, GameObject effectOnTarget = null) { if (statusResult == null) { statusResult = new List <EffectReceiver>(); } Type = type; DamageType = damageType; EffectStatusResults = statusResult; DamageResult = damageResult; EffectOnSelf = effectOnSelf; EffectOnTarget = effectOnTarget; }