// TMW2 Script.
// Authors:
// Jesusalva
// Description:
// Util functions
// 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 (12 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) >= 10)
.@nr=.@nr+1;
// Tycoon Quest (+1 rep)
if (getq(MineQuest_Tycoon) >= 15)
.@nr=.@nr+1;
// Neko Quest (+1 rep)
if (getq(TulimsharQuest_Neko) >= 2)
.@nr=.@nr+1;
// Hurnscald Quests (5 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;
// Farmers Quest (+1 rep)
if (getq(HurnscaldQuest_Farmers) >= 5)
.@nr=.@nr+1;
// Helena Quest (+1 rep)
if (getq(HurnscaldQuest_Bandits) >= 8)
.@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 24000;
}
// From Hurnscald
if (LOCATION$ == "Hurns") {
if (getarg(0) == "Candor")
return 22000;
if (getarg(0) == "Tulim")
return 24000;
}
// 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;
}
// Determines if party exp sharing is enabled
// ( Party ID )
function script party_expon {
.@nb = query_sql("SELECT exp FROM `party` WHERE party_id="+escape_sql(getarg(0))+" LIMIT 2", .@value);
return .@value[0];
}
// Gets how many subclasses were actually filled
// total_subclass( )
function script total_subclass {
.@i=0;
if (MAGIC_SUBCLASS & CL_PALADIN)
.@i+=1;
if (MAGIC_SUBCLASS & CL_TANKER)
.@i+=1;
if (MAGIC_SUBCLASS & CL_BERSEKER)
.@i+=1;
if (MAGIC_SUBCLASS & CL_RANGER)
.@i+=1;
if (MAGIC_SUBCLASS & CL_SNIPER)
.@i+=1;
if (MAGIC_SUBCLASS & CL_WIZARD)
.@i+=1;
if (MAGIC_SUBCLASS & CL_SAGE)
.@i+=1;
if (MAGIC_SUBCLASS & CL_PRIEST)
.@i+=1;
return .@i;
}