using UnityEngine; /// /// A spottable skeleton patrol event that appears as a red marker within perception range /// Players can choose to approach and engage or avoid the patrol /// [CreateAssetMenu(fileName = "SpottableSkeletonPatrol", menuName = "RPG/Travel Events/Spottable/Skeleton Patrol")] public class SpottableSkeletonPatrol : CombatTravelEvent { [Header("Spottable Event Settings")] [TextArea(2, 4)] public string[] spotDescription = { "You spot skeletal figures moving in the distance...", "A patrol of undead warriors can be seen ahead...", "Your keen eyes detect a group of skeleton warriors patrolling the area..." }; void OnEnable() { // Configure as spottable event triggerType = EventTriggerType.Spottable; // Set up the event details eventName = "Skeleton Patrol"; eventDescription = "A patrol of skeleton warriors guards this area. They haven't noticed you yet."; eventType = EventType.Combat; rarity = EventRarity.Common; // Configure combat settings minEnemies = 2; maxEnemies = 4; allowRunningAway = true; runAwaySuccessChance = 0.85f; // Higher chance since you can see them coming runAwayHealthPenalty = 2; // Lower penalty since you're prepared // Set terrain preferences (skeletons prefer ruins, forests, mountains) plainsChance = 0.4f; forestChance = 0.8f; mountainChance = 0.7f; roadChance = 0.3f; // Less likely on roads townChance = 0.1f; // Very unlikely in settlements villageChance = 0.2f; // Configure encounter descriptions encounterDescriptions = new string[] { "The skeleton patrol notices your approach and readies their weapons!", "The undead warriors turn toward you with hollow, glowing eyes!", "The skeleton patrol forms a battle line as you draw near!" }; // Configure escape messages for spotted encounters successfulRunAwayMessages = new string[] { "Having spotted them first, your party easily retreats unnoticed!", "Your party backs away quietly before the patrol spots you!", "You successfully avoid the skeleton patrol by taking a different route!" }; failedRunAwayMessages = new string[] { "The skeletons spot your retreat! You take {damage} damage as they give chase!", "Your withdrawal is noticed! The patrol pursues, dealing {damage} damage!", "The undead patrol catches up to your fleeing party for {damage} damage!" }; } public override EventResult ExecuteEvent(TravelEventContext context) { // Override the base execution to provide special messaging for spottable events Debug.Log($"🔍 Executing spottable skeleton patrol at {context.currentPosition}"); // Show spot description first string description = spotDescription[Random.Range(0, spotDescription.Length)]; Debug.Log($"👁️ Spot description: {description}"); // Then execute as normal combat event return base.ExecuteEvent(context); } /// /// Provides a description of what the team spotted /// public string GetSpotDescription() { return spotDescription[Random.Range(0, spotDescription.Length)]; } }