// Evol functions.
// Authors:
// Jesusalva
// Reid
// Description:
// Util functions
// season_direction({day, month})
// returns the direction that represents our current season (approximation)
// Note: You may also use WINTER/SPRING/SUMMER/AUTUMN constants for scripts
// where the direction is not important, but the season is. (Readability)
// DOWN: Winter, 21/12 WINTER
// DOWNLEFT: Spring, 20/03 SPRING
// LEFT: Summer, 21/06 SUMMER
// UPLEFT: Autumn, 22/09 AUTUMN
function script season_direction {
.@current_month = getarg(1, gettime(GETTIME_MONTH));
if (.@current_month % 3 == 0)
{
.@current_day = getarg(0, gettime(GETTIME_DAYOFMONTH));
switch (.@current_month)
{
case MARCH: .@season_day = 20; break;
case JUNE: .@season_day = 21; break;
case SEPTEMBER: .@season_day = 22; break;
case DECEMBER: .@season_day = 21; break;
default: break;
}
.@is_after_season_day = .@current_day >= .@season_day ? 0 : -1;
}
return (.@current_month / 3 + .@is_after_season_day) % 4;
}
// This is part of Jesusalva script toolkit to make his life easier when writing
// quests. Many of these are actually redundant functions.
// Four different flavours of setq() to quickly preserve old values
function script setq1 {
// Quest, val1 , val2 , val3 , time
setq getarg(0), getarg(1), getq2(getarg(0)), getq3(getarg(0)), getqtime(getarg(0));
return;
}
function script setq2 {
// Quest, val1 , val2 , val3 , time
setq getarg(0), getq(getarg(0)), getarg(1), getq3(getarg(0)), getqtime(getarg(0));
return;
}
function script setq3 {
// Quest, val1 , val2 , val3 , time
setq getarg(0), getq(getarg(0)), getq2(getarg(0)), getarg(1), getqtime(getarg(0));
return;
}
function script setqtime {
// Quest, val1 , val2 , val3 , time
setq getarg(0), getq(getarg(0)), getq2(getarg(0)), getq3(getarg(0)), getarg(1);
return;
}
// gettimeparam(GETTIME_X)
// Returns the number of seconds/minutes/hours/days/months/years since 01/01/1970
// This is for truly daily quests, which doesn't imposes a timed wait in hours
function script gettimeparam {
.@p=getarg(0, GETTIME_MINUTE);
// Seconds (same as gettimetick(2) - use that instead)
.@t=gettimetick(2);
if (.@p == GETTIME_SECOND)
return .@t;
// Minutes (default)
.@t=.@t/60;
if (.@p == GETTIME_MINUTE)
return .@t;
// Hours
.@t=.@t/60;
if (.@p == GETTIME_HOUR)
return .@t;
// Days
.@t=.@t/24;
if (.@p == GETTIME_DAYOFMONTH)
return .@t;
// Months (estimative)
.@t=.@t/30;
if (.@p == GETTIME_MONTH)
return .@t;
// Years (estimative, unused, fallback)
.@t=.@t/12;
return .@t;
}