Files
dsrc/sku.0/sys.server/compiled/game/script/quest/task/survey.script
T

72 lines
2.5 KiB
Plaintext

include library.quests;
include library.utils;
messageHandler surveyComplete()
{
LOG("newquests", "survey - surveyComplete()");
// messageTo the player with the survey result
String resourceType = params.getString("resource_type");
String resourceClass = params.getString("resource_class");
float efficiency = params.getFloat("efficiency");
obj_id resource = params.getObjId("resource_type_object");
// is this survey for one of our active tasks?
String[] activeTasks = quests.getActiveQuestsWithScript("quest.task.survey", self);
LOG("newquests", "checking " + activeTasks.length + " tasks for completion");
if(activeTasks != null && activeTasks.length > 0)
{
int iter = 0;
for(iter = 0; iter < activeTasks.length; ++iter)
{
LOG("newquests", "survey - Checking task " + activeTasks[iter] + " for completion");
float efficiencyParameter = 0.0f;
String objvarname = "quest." + activeTasks[iter] + ".parameter";
if(hasObjVar(self, objvarname))
{
efficiencyParameter = getFloatObjVar(self, objvarname);
}
else
{
String efficiencyParameterString = quests.getDataEntry(activeTasks[iter], "PARAMETER");
if(efficiencyParameterString != null && efficiencyParameterString.length() > 0)
{
efficiencyParameter = utils.stringToFloat(efficiencyParameterString);
}
}
LOG("newquests", "survey - " + activeTasks[iter] + " - efficiency=" + efficiency + " efficienty required=" + efficiencyParameter);
if(efficiency > efficiencyParameter)
{
String resourceTarget = null;
objvarname = "quest." + activeTasks[iter] + ".target";
if(hasObjVar(self, objvarname))
{
resourceTarget = getStringObjVar(self, objvarname);
}
else
{
resourceTarget = quests.getDataEntry(activeTasks[iter], "TARGET");
LOG("newquests", "survey - " + activeTasks[iter] + " efficiency qualifies, validating resource type " + getResourceName(resource) + " against target " + resourceTarget);
}
if(resourceTarget != null && resourceTarget.length() > 0)
{
if(isResourceDerivedFrom(resource, resourceTarget))
{
LOG("newquests", "survey - " + activeTasks[iter] + " qualifies! Completing task!");
objvarname = "quest.survey.efficency";
setObjVar (self, objvarname, efficiency);
quests.complete(activeTasks[iter], self, true);
break;
}
else
{
LOG("newquests", "survey - " + getResourceName(resource) + " does not match target " + resourceTarget);
}
}
}
}
}
return SCRIPT_CONTINUE;
}