// 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;
};
})();