Pre-release
AdventureJS Docs Downloads Bundler Devlog Score: 0 Moves: 0
// printAreaEvents.js

(function () {
  /* global AdventureJS A */

  var p = AdventureJS.Game.prototype;

  /**
   *
   * @method AdventureJS.Game#printAreaEvents
   * @memberOf AdventureJS.Game
   */
  p.printAreaEvents = function Game_printAreaEvents(e) {
    this.game.log("L1071", "log", "high", "printAreaEvents", "Game");
    if (this.game.getInput().soft_prompt.enabled) return;
    if (this.game.getInput().disambiguate.enabled) return;
    if (this.game.settings.quiet && this.game.settings.respect_quiet) return;
    if (!this.game.settings.enable_area_events) return;

    const room = this.game.getRoom();
    const zone = this.game.getAsset(room.zone);
    let area_events;
    let msg = "";
    let source;

    const has_room_events = room.hasAreaEvents();
    const has_zone_events = zone?.hasAreaEvents ? zone.hasAreaEvents() : false;

    // does room have area events?
    if (has_room_events) {
      source = room.id + ".area_events";
      area_events = room.area_events;
    }

    // or does it have a zone
    else if (has_zone_events) {
      source = room.id + ".zone.area_events";
      area_events = zone.area_events;
    }

    if (!area_events) return;

    // we got some events
    if (area_events.array) {
      let frequency =
        area_events.frequency || this.game.settings.area_event_frequency;
      // if frequency is less than 1, roll for event
      // if we roll over frequency, bail out
      if (1 > frequency) {
        var rand = Math.random(1);
        if (rand > frequency) return;
      }
      // debug
      source += ", randomize " + area_events.randomize;
      source += ", index " + area_events.index;
      source += ", frequency " + area_events.frequency;
    }

    this.game.log(
      "L1072",
      "log",
      "high",
      `[printAreaEvents.js] found area events in ${source}`,
      "Game"
    );
    msg += A.FX.getSAF.call(this.game, area_events);
    if (msg) this.game.print(msg);
    return;
  };
})();