// TMW2 Script.
// Evol functions.
// Authors:
// Reid
// Jesusalva
// Description:
// Util functions
// season_direction({day, month})
// returns the direction that represents our current season (approximation)
// DOWN: Winter, 21/12
// DOWNLEFT: Spring, 20/03
// LEFT: Summer, 21/06
// UPLEFT: Autumn, 22/09
function script season_direction {
.@current_month = getarg(0, gettime(GETTIME_MONTH));
if (.@current_month % 3 == 0)
{
.@current_day = getarg(1, 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;
}
// Returns Nard reputation for discounts
// Currently ranges from 0 to 12.
function script nard_reputation {
.@nr=0; // Base reputation
// Valon Quest (+1 rep)
if (getq(CandorQuest_Trainer) >= 14)
.@nr=.@nr+1;
// Zegas Quest (+1 rep)
if (getq(CandorQuest_Barrel) >= 4)
.@nr=.@nr+1;
// Hide And Seek Quest (+1 rep)
if (getq(CandorQuest_HAS) >= 4)
.@nr=.@nr+1;
// Sailors Quest (+1 rep)
if (getq(CandorQuest_Sailors) >= 3)
.@nr=.@nr+1;
// Sailors Quest, part 2 (+1 rep)
if (getq(CandorQuest_SailorCure) >= 3)
.@nr=.@nr+1;
// Vincent Quest (+1 rep)
if (getq(CandorQuest_Vincent) >= 2)
.@nr=.@nr+1;
// Tolchi Quest (+1 rep)
if (getq(CandorQuest_Tolchi) >= 4)
.@nr=.@nr+1;
// Maya Quest (+1 rep)
if (getq(CandorQuest_Maya) >= 4)
.@nr=.@nr+1;
// Dan Quest (+1 rep)
if (getq(ShipQuests_Dan) >= 3)
.@nr=.@nr+1;
// Chef Gado Quest (+1 rep)
if (getq(ShipQuests_ChefGado) >= 2)
.@nr=.@nr+1;
// Peter Quest (+1 rep)
if (getq(ShipQuests_Peter) == 3 || getq(ShipQuests_Peter) == 5)
.@nr=.@nr+1;
// Swezanne Quest (+1 rep)
if (getq(TulimsharQuest_Swezanne) >= 1)
.@nr=.@nr+1;
//debugmes "Reputation: "+str(.@nr);
return .@nr;
}
// Returns time for ship travel.
// Can be modified by a factor.
function script nard_time {
// Estimates time to move by ship from LOCATION$ to getarg(0)
// Candor
if (LOCATION$ == "Candor") {
if (getarg(0) == "Tulim")
return 22000;
}
// Candor
if (LOCATION$ == "Tulim") {
if (getarg(0) == "Candor")
return 22000;
}
// Error
debugmes "ERROR, INVALID LOCATION AND DESTINATION";
debugmes l("@@ -> @@", LOCATION$, getarg(0));
dispbottom l("An error on your travel time happened. Please report.");
return INT_MAX;
}
// Determines if player is still in range.
// eg.
// if (reachable(.x, .y, .distance)) {
function script reachable {
.@x=getarg(0);
.@y=getarg(1);
.@z=getarg(2);
getmapxy(.@mp$, .@xp, .@yp, 0);
if (distance(.@x, .@y, .@xp, .@yp) <= .@z)
return 1;
else
return 0;
}