- function events(x, y) {
- const i = map.tileAt(x,y); let ev, e, n;
- if (map.events[i]) {
- // intramap (teleporters)
- if ( ev = map.events[i].find(e => (e.activate == "on_trigger" && e.intramap)) ){
- ev = ev.intramap;
- hero.place( map.xOf(ev[0], ev[1]), map.yOf(ev[0], ev[1]) );
- map.center( map.xOf(ev[0], ev[1]), map.yOf(ev[0], ev[1]) );
+ function triggers(x, y) {
+ const i = map.tileAt(x,y);
+
+ if ( map.triggers[i] ) events (
+ map.triggers[i].filter( t => (!t.requires_status) ? true : t.requires_status.find(s => qstatus[s])
+ ).filter( t => (!t.requires_not_status) ? true : !t.requires_not_status.find(s => qstatus[s]) )
+ );
+ }
+
+ function loadevents() {
+ if ( map.info.event ) events(
+ map.info.event.filter( ev => ev.activate == "on_load"
+ ).filter( t => (!t.requires_status) ? true : t.requires_status.find(s => qstatus[s])
+ ).filter( t => (!t.requires_not_status) ? true : !t.requires_not_status.find(s => qstatus[s]) )
+ )
+ }
+
+ function events( events ) {
+ var ev, item;
+
+ for ( ev of events ) {
+ // game status modification
+ if ( ev.set_status ) for (item of ev.set_status) {
+ qstatus[item] = true;
+ }
+ if ( ev.unset_status ) for (item of ev.unset_status) {
+ qstatus[item] = false;
+ }
+ if ( item = ev.msg ) {
+ console.log(item);
+ }
+ // intramap (i.e. teleporters)
+ if ( item = ev.intramap ){
+ hero.place( map.xOf(item[0], item[1]), map.yOf(item[0], item[1]) );
+ map.center( map.xOf(item[0], item[1]), map.yOf(item[0], item[1]) );