66 lines
2.5 KiB
C#
66 lines
2.5 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Invector;
|
|
using Invector.vMelee;
|
|
using Sirenix.OdinInspector;
|
|
using UnityEngine;
|
|
|
|
namespace Beyond
|
|
{
|
|
public class bMeleeManager : vMeleeManager
|
|
{
|
|
/// <summary>
|
|
/// Listener of Damage Event
|
|
/// </summary>
|
|
/// <param name="hitInfo"></param>
|
|
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<vMeleeManager>();
|
|
foreach (var m in managers)
|
|
{
|
|
if (m != this)
|
|
{
|
|
Members = new List<vBodyMember>();
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |