using UnityEngine; /// /// Interaction requirement that allows combining the follower's held item with this pickup if a valid combination rule exists. /// [RequireComponent(typeof(Pickup))] public class CombineWithBehavior : InteractionRequirementBase { /// /// Attempts to combine the follower's held item with this pickup's item. /// /// The follower attempting the interaction. /// True if the combination was successful, false otherwise. public override bool TryInteract(FollowerController follower) { var heldItem = follower.GetHeldPickupObject(); var pickup = GetComponent(); if (heldItem == null) { // DebugUIMessage.Show("You need an item to combine."); OnFailure?.Invoke(); return true; } if (pickup == null || pickup.itemData == null) { DebugUIMessage.Show("Target item is missing or invalid."); OnFailure?.Invoke(); return false; } var combinedItem = InteractionOrchestrator.Instance.CombineItems(heldItem, pickup.gameObject); if (combinedItem != null) { InteractionOrchestrator.Instance.PickupItem(follower, combinedItem); follower.justCombined = true; OnSuccess?.Invoke(); return true; } else { // DebugUIMessage.Show($"Cannot combine {follower.CurrentlyHeldItem?.itemName ?? "an item"} with {pickup.itemData.itemName ?? "target item"}."); OnFailure?.Invoke(); return true; } } }