// ============================================================================ // 4. COMMON RUNTIME BEHAVIORS - Your Legendary Item Effects! // ============================================================================ using UnityEngine; public class ExplodeOnHitBehavior : RuntimeBehavior { public GameObject explosionPrefab; public float explosionRadius = 5f; public float explosionDamage = 30f; public LayerMask targetLayers = -1; public ExplodeOnHitBehavior() { Trigger = BehaviorTrigger.OnHit; BehaviorName = "Explode on Hit"; } public override void Execute(RuntimeAbilityInstance ability, Taggable user, Transform target, Vector3 point) { Vector3 explosionPoint = target != null ? target.position : point; // Spawn explosion visual if prefab exists if (explosionPrefab != null) { Object.Instantiate(explosionPrefab, explosionPoint, Quaternion.identity); } // Find targets in explosion radius var colliders = Physics.OverlapSphere(explosionPoint, explosionRadius, targetLayers); foreach (var collider in colliders) { var explosionTarget = collider.GetComponent(); if (explosionTarget != null && explosionTarget != user) { // Apply explosion damage var health = explosionTarget.GetComponent(); if (health != null) { health.ChangeValue(-explosionDamage); } } } } public override RuntimeBehavior Clone() { return new ExplodeOnHitBehavior { explosionPrefab = this.explosionPrefab, explosionRadius = this.explosionRadius, explosionDamage = this.explosionDamage, targetLayers = this.targetLayers }; } }