using System.Collections; using System.Collections.Generic; using Invector; using Invector.vMelee; using Sirenix.OdinInspector; using UnityEngine; namespace Beyond { public class bMeleeManager : vMeleeManager { /// /// Listener of Damage Event /// /// public override void OnDamageHit(ref vHitInfo hitInfo) { //+1 because of Random.Range extrem value exclusion vDamage damage = new vDamage(Random.Range(hitInfo.attackObject.minDamage.damageValue, hitInfo.attackObject.maxDamage.damageValue + 1)); damage.sender = transform; damage.reaction_id = currentReactionID; damage.recoil_id = currentRecoilID; damage.damageType = hitInfo.attackObject.damage.damageType; if (this.activeRagdoll) damage.activeRagdoll = this.activeRagdoll; if (this.attackName != string.Empty) damage.damageType = this.attackName; if (this.ignoreDefense) damage.ignoreDefense = this.ignoreDefense; if (this.senselessTime != 0) damage.senselessTime = this.senselessTime; /// Calc damage with multiplier /// and Call ApplyDamage of attackObject damage.damageValue *= damageMultiplier > 1 ? damageMultiplier : 1; float modifier = GameStateManager.Instance.EnemyDamageModifier; if (modifier != 1f) { damage.damageValue = (int)((float) damage.damageValue * modifier); } hitInfo.targetIsBlocking = !hitInfo.attackObject.ApplyDamage(hitInfo.hitBox, hitInfo.targetCollider, damage); onDamageHit.Invoke(hitInfo); } [Button] public void CopyMembers() { var managers = GetComponents(); foreach (var m in managers) { if (m != this) { Members = new List(); for (int i = 0; i < m.Members.Count; i++) { Members.Add(m.Members[i]); } this.hitProperties = m.hitProperties; this.defaultDamage = m.defaultDamage; this.defaultDefenseRate = m.defaultDefenseRate; this.defaultAttackDistance = m.defaultAttackDistance; this.defaultStaminaCost = m.defaultStaminaCost; } } } } }