diff --git a/Assets/Scripts/Game/EnemyAttack.cs b/Assets/Scripts/Game/EnemyAttack.cs index ea0c2d8e4f..c55bc26170 100644 --- a/Assets/Scripts/Game/EnemyAttack.cs +++ b/Assets/Scripts/Game/EnemyAttack.cs @@ -38,6 +38,12 @@ public class EnemyAttack : MonoBehaviour MobileUnit mobile; DaggerfallEntityBehaviour entityBehaviour; int damage = 0; + + public delegate int ApplyDamageToPlayerCallback(Items.DaggerfallUnityItem weapon); + public delegate int ApplyDamageToNonPlayerCallback(Items.DaggerfallUnityItem weapon, Vector3 direction, bool bowAttack = false); + + public ApplyDamageToPlayerCallback ApplyDamageToPlayer { get; set; } + public ApplyDamageToNonPlayerCallback ApplyDamageToNonPlayer { get; set; } void Start() { @@ -46,6 +52,9 @@ void Start() sounds = GetComponent(); mobile = GetComponent().MobileUnit; entityBehaviour = GetComponent(); + + ApplyDamageToPlayer = DefaultApplyDamageToPlayer; + ApplyDamageToNonPlayer = DefaultApplyDamageToNonPlayer; } void FixedUpdate() @@ -242,7 +251,7 @@ private void ShootBow() } } - private int ApplyDamageToPlayer(Items.DaggerfallUnityItem weapon) + private int DefaultApplyDamageToPlayer(Items.DaggerfallUnityItem weapon) { const int doYouSurrenderToGuardsTextID = 15; @@ -300,7 +309,7 @@ private int ApplyDamageToPlayer(Items.DaggerfallUnityItem weapon) return damage; } - private int ApplyDamageToNonPlayer(Items.DaggerfallUnityItem weapon, Vector3 direction, bool bowAttack = false) + private int DefaultApplyDamageToNonPlayer(Items.DaggerfallUnityItem weapon, Vector3 direction, bool bowAttack = false) { if (senses.Target == null) return 0; diff --git a/Assets/Scripts/Game/WeaponManager.cs b/Assets/Scripts/Game/WeaponManager.cs index f26f276ad6..f48431e9bb 100644 --- a/Assets/Scripts/Game/WeaponManager.cs +++ b/Assets/Scripts/Game/WeaponManager.cs @@ -79,6 +79,9 @@ public class WeaponManager : MonoBehaviour public float EquipCountdownRightHand; public float EquipCountdownLeftHand; + + public delegate bool WeaponDamageCallback(DaggerfallUnityItem strikingWeapon, bool arrowHit, bool arrowSummoned, Transform hitTransform, Vector3 impactPosition, Vector3 direction); + public WeaponDamageCallback WeaponDamage { get; set; } #region Properties @@ -200,6 +203,8 @@ void Start() _gesture = new Gesture(); _longestDim = Math.Max(Screen.width, Screen.height); SetMelee(ScreenWeapon); + + WeaponDamage = DefaultWeaponDamage; } void Update() @@ -484,7 +489,7 @@ public bool WeaponEnvDamage(DaggerfallUnityItem strikingWeapon, RaycastHit hit) } // Returns true if hit an enemy entity - public bool WeaponDamage(DaggerfallUnityItem strikingWeapon, bool arrowHit, bool arrowSummoned, Transform hitTransform, Vector3 impactPosition, Vector3 direction) + public bool DefaultWeaponDamage(DaggerfallUnityItem strikingWeapon, bool arrowHit, bool arrowSummoned, Transform hitTransform, Vector3 impactPosition, Vector3 direction) { DaggerfallEntityBehaviour entityBehaviour = hitTransform.GetComponent(); var entityMobileUnit = hitTransform.GetComponentInChildren();