using UnityEngine; [RequireComponent(typeof(Pickup))] public class CombineWithBehavior : InteractionRequirementBase { public override bool TryInteract(FollowerController follower) { var heldItem = follower.currentlyHeldItem; var pickup = GetComponent(); if (heldItem == null) { DebugUIMessage.Show("You need an item to combine."); OnFailure?.Invoke(); return false; } if (pickup == null || pickup.itemData == null) { DebugUIMessage.Show("Target item is missing or invalid."); OnFailure?.Invoke(); return false; } var rule = GameManager.Instance.GetCombinationRule(heldItem, pickup.itemData); if (rule != null && rule.result != null) { // Remove both items and add result to follower's inventory follower.SetHeldItem(rule.result); follower.justCombined = true; OnSuccess?.Invoke(); return true; } else { string heldName = heldItem.itemName ?? "an item"; string targetName = pickup.itemData.itemName ?? "target item"; DebugUIMessage.Show($"Cannot combine {heldName} with {targetName}."); OnFailure?.Invoke(); return false; } } }