TradingTravelEvent.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using UnityEngine;
  2. /// <summary>
  3. /// Trading encounter events - merchants, traders, caravans
  4. /// More likely on roads and near settlements
  5. /// </summary>
  6. [CreateAssetMenu(fileName = "New Trading Event", menuName = "RPG/Travel Events/Trading Event")]
  7. public class TradingTravelEvent : TravelEvent
  8. {
  9. [Header("Trading Event Settings")]
  10. public string[] merchantTypes = { "Traveling Merchant", "Caravan Trader", "Wandering Peddler" };
  11. public bool canHaveRareItems = true;
  12. [Range(0f, 1f)]
  13. public float rareItemChance = 0.3f;
  14. [Range(0.5f, 1.5f)]
  15. public float priceModifier = 1f;
  16. [Header("Trading Event Descriptions")]
  17. [TextArea(2, 4)]
  18. public string[] encounterDescriptions = {
  19. "You encounter a {merchantType} on the road.",
  20. "A {merchantType} approaches your party with goods to sell.",
  21. "You come across a {merchantType} resting by the roadside."
  22. };
  23. public override EventResult ExecuteEvent(TravelEventContext context)
  24. {
  25. string merchantType = merchantTypes[Random.Range(0, merchantTypes.Length)];
  26. string description = encounterDescriptions[Random.Range(0, encounterDescriptions.Length)];
  27. description = description.Replace("{merchantType}", merchantType);
  28. var result = EventResult.SimpleTrading(description, merchantType);
  29. result.tradingData.hasRareItems = canHaveRareItems && Random.value < rareItemChance;
  30. result.tradingData.priceModifier = priceModifier;
  31. return result;
  32. }
  33. void OnEnable()
  34. {
  35. // Set default values for trading events
  36. eventType = EventType.Trading;
  37. rarity = EventRarity.Common;
  38. // Trading events are more likely on roads and near settlements
  39. roadChance = 0.9f;
  40. townChance = 0.7f;
  41. villageChance = 0.8f;
  42. bridgeChance = 0.6f; // Common crossing points
  43. ferryChance = 0.5f;
  44. // Less likely in wilderness
  45. forestChance = 0.3f;
  46. mountainChance = 0.2f;
  47. plainsChance = 0.5f;
  48. }
  49. }