58 lines
1.9 KiB
C#

// ============================================================================
// 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<Taggable>();
if (explosionTarget != null && explosionTarget != user)
{
// Apply explosion damage
var health = explosionTarget.GetComponent<Health>();
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
};
}
}