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

108 lines
5.2 KiB
Java
Executable File

package script.quest.task;
import script.library.quests;
import script.library.utils;
import script.obj_id;
public class retrieve_item extends script.base_script
{
public retrieve_item()
{
}
public int OnContainerChildGainItem(obj_id self, obj_id item, obj_id source, obj_id transferer) throws InterruptedException
{
LOG("newquests", "received item(" + item + ", " + getTemplateName(item) + ") source(" + source + ", " + getTemplateName(source) + ") transferer(" + transferer + ", " + getTemplateName(transferer) + ")");
LOG("newquests", "checking active retrieve_item tasks for a match!");
String[] activeTasks = quests.getActiveQuestsWithScript("quest.task.retrieve_item", self);
int i;
for (i = 0; i < activeTasks.length; ++i)
{
LOG("newquests", "checking " + activeTasks[i]);
boolean taskComplete = false;
int count = 0;
if (hasObjVar(self, "quest." + activeTasks[i] + ".current_count"))
{
count = getIntObjVar(self, "quest." + activeTasks[i] + ".current_count");
}
int targetCount = 1;
if (hasObjVar(self, "quest." + activeTasks[i] + ".parameter"))
{
targetCount = getIntObjVar(self, "quest." + activeTasks[i] + ".parameter");
LOG("newquests", "task objvar parameter overriding data table. parameter = " + targetCount);
}
else
{
String countString = quests.getDataEntry(activeTasks[i], "PARAMETER");
if (countString != null && countString.length() > 0)
{
int t = utils.stringToInt(countString);
if (t > -1)
{
targetCount = t;
LOG("newquests", "target count is set in the PARAMETER column to " + t);
}
}
}
if (hasObjVar(self, "quest." + activeTasks[i] + ".target_id"))
{
LOG("newquests", "a target_id is overriding the TARGET column");
obj_id targetId = getObjIdObjVar(self, activeTasks[i] + ".target_id");
if (targetId == item)
{
LOG("newquests", "this item (" + getTemplateName(item) + ") is part of this retrieve_item task");
count++;
}
else
{
LOG("newquests", "this item(" + getTemplateName(item) + ") is not part of the retrieve_item task");
}
}
else if (hasObjVar(self, "quest." + activeTasks[i] + ".target_object_template"))
{
String targetObjectTemplate = getStringObjVar(self, "quest." + activeTasks[i] + ".target_object_template");
String wantItem = getTemplateName(item);
LOG("newquests", "the TARGET column is overidden by target_object_template(" + targetObjectTemplate + ")");
if (wantItem.equals(targetObjectTemplate))
{
LOG("newquests", "this item(" + wantItem + ") is part of this retrieve_item task");
count++;
}
}
else
{
String questItem = quests.getDataEntry(activeTasks[i], "TARGET");
String wantItem = getTemplateName(item);
LOG("newquests", "the data table for " + activeTasks[i] + " specifies an object of type \"" + questItem + "\" to complete this task. The player has received \"" + wantItem + "\"");
if (wantItem.equals(questItem))
{
LOG("newquests", "increasing the item count for this task");
count++;
}
}
LOG("newquests", "checking for objvar quest." + activeTasks[i] + ".quest_item_target");
if (hasObjVar(item, "quest." + activeTasks[i] + ".quest_item_target"))
{
obj_id itemTarget = getObjIdObjVar(item, "quest." + activeTasks[i] + ".quest_item_target");
LOG("newquests", "the item has a quest_item_target objvar, it might be part of this retrieve_item task");
if (itemTarget == self)
{
LOG("newquests", "the item has a quest_item_target objvar identifying this player. It is part of this retrieve_item task");
count++;
}
}
if (count >= targetCount)
{
LOG("newquests", "This retrieve_item task wanted " + targetCount + " items and the player has retrieved " + count + " items. Completing the task");
quests.complete(activeTasks[i], self, true);
break;
}
else
{
LOG("newquests", "This retrieve_item task wanted " + targetCount + " items and the player has retrieved " + count + " items. Continuing the task");
setObjVar(self, "quest." + activeTasks[i] + ".current_count", count);
}
}
return SCRIPT_CONTINUE;
}
}