// 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 15. 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; // Tulimshar Quests // Swezanne Quest (+1 rep) if (getq(TulimsharQuest_Swezanne) >= 1) .@nr=.@nr+1; // Sailors Quest (+1 rep) if (getq(TulimsharQuest_Sailors) >= 2) .@nr=.@nr+1; // Hasan Quest (+1 rep) if (getq(TulimsharQuest_Hasan) >= 5) .@nr=.@nr+1; // Dausen Quest (+1 rep) if (getq(TulimsharQuest_WaterForGuard) >= 3) .@nr=.@nr+1; //debugmes "Reputation: "+str(.@nr); return .@nr; } /* // Calcs maximum reputation for each destination function script marine_maxre { if (getarg(0) == "Tulim") return 10; if (getarg(0) == "Hurns") return 3; dispbottom l("Error, marine_maxre invalid @@", getarg(0, "-NO ARGS SUPPLIED-")); return -1; } */ // Returns reputation with the La Marine for discounts // Takes one argument (PC_DEST$). Grep for "getarg". // Before updating this, update marine_maxre too! function script marine_reputation { .@nr=0; // Base reputation // Tulimshar Quests (10 points) if (getarg(0) == "Tulim") { // Swezanne Quest (+1 rep) if (getq(TulimsharQuest_Swezanne) >= 1) .@nr=.@nr+1; // Sailors Quest (+1 rep) if (getq(TulimsharQuest_Sailors) >= 2) .@nr=.@nr+1; // Hasan Quest (+1 rep) if (getq(TulimsharQuest_Hasan) >= 5) .@nr=.@nr+1; // Dausen Quest (+1 rep) if (getq(TulimsharQuest_WaterForGuard) >= 3) .@nr=.@nr+1; // Eugene Quest (+1 rep) if (getq(TulimsharQuests_Fishman) >= 2) .@nr=.@nr+1; // Sarah Quest (+1 rep) if (getq(TulimsharQuest_Sarah) >= 1) .@nr=.@nr+1; // Silvia Quest (+1 rep) if (getq(TulimsharQuest_Lifestone) >= 2) .@nr=.@nr+1; /* // Eisten Quest (+1 rep) if (getq(TulimsharQuest_Eistein) >= 6) .@nr=.@nr+1; */ // Devoir Quest (+1 rep) if (getq(TulimsharQuest_Devoir) >= 1) .@nr=.@nr+1; // Zarkor Quest (+1 rep) if (getq(TulimsharQuest_DarkInvocator) >= 7) .@nr=.@nr+1; /* // Anwar Quest (+1 rep) if (getq(TulimsharQuest_AnwarField) >= 99) .@nr=.@nr+1; */ // Tycoon Quest (+1 rep) if (getq(MineQuest_Tycoon) >= 15) .@nr=.@nr+1; // Hurnscald Quests (3 points) } else if (getarg(0) == "Hurns") { // Alan Quest (+1 rep) if (getq(HurscaldQuest_ForestBow) >= 2) .@nr=.@nr+1; // Gwendolyn Quest (+1 rep) if (getq(HurnscaldQuest_HarkEye) >= 6) .@nr=.@nr+1; // Celestia Quest (+1 rep) if (getq(HurnscaldQuest_TeaParty) >= 2) .@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) // From Candor if (LOCATION$ == "Candor") { if (getarg(0) == "Tulim") return 22000; } // From Tulimshar if (LOCATION$ == "Tulim") { if (getarg(0) == "Candor") return 22000; if (getarg(0) == "Hurns") return 19000; } // 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; }