| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- using UnityEngine;
- /// <summary>
- /// Hazard events - natural dangers, traps, environmental challenges
- /// </summary>
- [CreateAssetMenu(fileName = "New Hazard Event", menuName = "RPG/Travel Events/Hazard Event")]
- public class HazardTravelEvent : TravelEvent
- {
- [Header("Hazard Settings")]
- public int minHealthLoss = 5;
- public int maxHealthLoss = 20;
- public int goldCost = 0; // Cost to avoid the hazard
- [Header("Hazard Descriptions")]
- [TextArea(2, 4)]
- public string[] hazardDescriptions = {
- "Your party gets caught in a sudden rockslide, losing {damage} health.",
- "Treacherous terrain causes injuries to your party members, resulting in {damage} health loss.",
- "A hidden pit trap catches one of your party members, causing {damage} damage."
- };
- public override EventResult ExecuteEvent(TravelEventContext context)
- {
- int damage = Random.Range(minHealthLoss, maxHealthLoss + 1);
- string description = hazardDescriptions[Random.Range(0, hazardDescriptions.Length)];
- description = description.Replace("{damage}", damage.ToString());
- return new EventResult(description)
- {
- healthChange = -damage,
- goldChange = -goldCost
- };
- }
- void OnEnable()
- {
- eventType = EventType.Hazard;
- rarity = EventRarity.Common;
- // More likely in dangerous terrain
- mountainChance = 0.9f;
- forestChance = 0.6f;
- riverChance = 0.7f;
- oceanChance = 0.8f;
- // Less likely in safe areas
- roadChance = 0.2f;
- townChance = 0.1f;
- villageChance = 0.2f;
- plainsChance = 0.4f;
- }
- }
|