From b31525e40f68045c1bf78feeb69c4cf73d53938a Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Mon, 2 Mar 2020 16:28:57 -0300 Subject: Earlier sketch of FYEVENT triggers --- npc/functions/event.txt | 115 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 81 insertions(+), 34 deletions(-) (limited to 'npc') diff --git a/npc/functions/event.txt b/npc/functions/event.txt index de5df5e3d..7253883f6 100644 --- a/npc/functions/event.txt +++ b/npc/functions/event.txt @@ -224,43 +224,54 @@ function script sThanksgiving { 000-0,0,0,0 script #EventCore NPC_HIDDEN,{ end; +// confEvent(event ID, stday, stmon, endday, endmon) +function confEvent { + setd("."+getarg(0)+"_stday", getarg(1)); + setd("."+getarg(0)+"_stmon", getarg(2)); + setd("."+getarg(0)+"_endday", getarg(3)); + setd("."+getarg(0)+"_endmon", getarg(4)); + // Save the event key? + //.@confname=".conf_"+getarg(2)+"$"; + //setd(.@confname+"["+getarraysize(.@confname)+"]", getarg(0)); + // Save only the day? (And use if statement) + .@confname$=".conf_"+getarg(2); + .@size=getarraysize(getd(.@confname$)); + setd(.@confname$+"["+.@size+"]", getarg(1)); + //debugmes "CONFIGURE EVENT, %s[%d] = %d", .@confname$, .@size, getarg(1); + //debugmes "CNAME: %s", getarg(0); + return; +} + // Event Schedule (all dates are inclusive) // NEVER, ever, include the last day of the month. OnInit: - .valentine_stday=13; - .valentine_stmon=FEBRUARY; - .valentine_endday=16; - .valentine_endmon=FEBRUARY; - - .tmw2day_stday=1; - .tmw2day_stmon=MARCH; - .tmw2day_endday=7; - .tmw2day_endmon=MARCH; - - .patrick_stday=15; - .patrick_stmon=MARCH; - .patrick_endday=19; - .patrick_endmon=MARCH; - - .easter_stday=17; - .easter_stmon=APRIL; - .easter_endday=24; - .easter_endmon=APRIL; - - .worker_stday=27; - .worker_stmon=APRIL; - .worker_endday=3; - .worker_endmon=MAY; - - .thanks_stday=1; - .thanks_stmon=NOVEMBER; - .thanks_endday=29; - .thanks_endmon=NOVEMBER; - - .xmas_stday=19; - .xmas_stmon=DECEMBER; - .xmas_endday=2; - .xmas_endmon=JANUARY; + confEvent("valentine", + 13, FEBRUARY, + 16, FEBRUARY); + + confEvent("tmw2day", + 1, MARCH, + 7, MARCH); + + confEvent("patrick", + 15, MARCH, + 19, MARCH); + + confEvent("easter", + 17, APRIL, + 24, APRIL); + + confEvent("worker", + 27, APRIL, + 3, MAY); + + confEvent("thanks", + 1, NOVEMBER, + 29, NOVEMBER); // NEVER use the last day of the month here + + confEvent("xmas", + 19, DECEMBER, + 2, JANUARY); // Some setup disablenpc "sPatrick"; @@ -269,13 +280,49 @@ OnInit: OnClock0000: .@d=gettime(GETTIME_DAYOFMONTH); .@m=gettime(GETTIME_MONTH); + .@o=gettime(GETTIME_WEEKDAY); // Resets at 0 (sunday) debugmes "A new day begins! Today is %02d/%02d", .@d, .@m; + $@DEBUG_OD=30; if ($@DEBUG_OD) .@d=$@DEBUG_OD; if ($@DEBUG_OM) .@m=$@DEBUG_OM; debugmes "EVENT CORE, the %02d/%02d", .@d, .@m; + // Is there another event this week? + if (.@o == MONDAY) { + .@dofy=true; + .@confname$=".conf_"+.@m; + + for (.@i=0;.@i < getarraysize(getd(.@confname$)); .@i++) { + .@val=getd(.@confname$+"["+.@i+"]"); + //debugmes "Looping, %d = %d", .@i, .@val; + + // Erm. + if (.@val == 0) + continue; + + // This script has a weakness: It cannot predict events starting + // at the start or the end of the month. + // So they might still overlap. + // A possible solution is to, eventually, record start and end date. + // And only inhibit FY event if the MONDAY is within the event...? + debugmes "%d >= %d && %d <= %d", .@val, .@d-6, .@val, .@d+6; + // In this case there's already an event! + // .@d == .@val <= .@d+6 AND + if ( .@val >= .@d-6 && .@val <= .@d+6 ) { + .@dofy=false; + break; + } + // continue... + } + + // TODO: Trigger event framework + if (.@dofy) + debugmes "\033[1mFY event is set to happen..."; + else + debugmes "\033[1mAnother event is scheduled!"; + } // Handle Valentine Day if (.@m >=.valentine_stmon && .@m <= .valentine_endmon) { -- cgit v1.2.3-60-g2f50