public override void OnReceiveAttack(vDamage damage, vIMeleeFighter attacker) { //character is blocking if (!damage.ignoreDefense && isBlocking && meleeManager != null && meleeManager.CanBlockAttack(damage.sender.position)) { var damageReduction = meleeManager.GetDefenseRate(); if (damageReduction > 0) { damage.ReduceDamage(damageReduction); } if (attacker != null && meleeManager != null && meleeManager.CanBreakAttack()) { attacker.BreakAttack(meleeManager.GetDefenseRecoilID()); } meleeManager.OnDefense(); cc.currentStaminaRecoveryDelay = damage.staminaRecoveryDelay; cc.currentStamina -= damage.staminaBlockCost; } //apply damage damage.hitReaction = !isBlocking; if (GetComponent <PhotonView>().IsMine == true) { cc.TakeDamage(damage); } else { GetComponent <PhotonView>().RPC("ApplyDamage", RpcTarget.Others, JsonUtility.ToJson(damage)); } }
public void OnReceiveAttack(vDamage damage, vIMeleeFighter attacker) { // character is blocking if (!damage.ignoreDefense && isBlocking && meleeManager != null && meleeManager.CanBlockAttack(damage.sender.position)) { var damageReduction = meleeManager.GetDefenseRate(); if (damageReduction > 0) { damage.ReduceDamage(damageReduction); } if (attacker != null && meleeManager != null && meleeManager.CanBreakAttack()) { attacker.BreakAttack(meleeManager.GetDefenseRecoilID()); } meleeManager.OnDefense(); cc.currentStaminaRecoveryDelay = damage.staminaRecoveryDelay; cc.currentStamina -= damage.staminaBlockCost; } // apply damage damage.hitReaction = !isBlocking; cc.TakeDamage(damage); }