Files
dsrc/sku.0/sys.server/compiled/game/script/systems/collections/consume_loot.java
T
TekaohandGitHub 5c2e112349 Java 11.0.2 migration (#32)
* Code compiles - execution NOT tested

* updating gitignore

* Removed intellij settings files

* Removed more intellij files

* Added exclusion for JDK classes.

* Fixed purchasing script for vendors that have listed coin types.

* Updated script to not kick off until the entire preload is complete.

* adds static name entry for Solo movie poster and tcg9 vendor entry

* clean up empty and orphaned object templates

* adds placeholder black market (static) spawns

* corrects entries for the video game table to correctly set it in tcg series 2 and remove series 1 console errors

* Updated gitignore and removed intellij project files

* Fixed appearance reference for thranta payroll and kashyyyk door, added skipLosCheck objvar due to cannit see issue. Requires updated src

* Fixed appearance and template for terminal (#2)

* Fixed appearance and template for terminal (#3)

* Fixed appearance and template for terminal (#4)

* Deleted another faulty/orphaned object template

* Fixed gcw ranks option on frog. Only issue is that it doesn't award the officer commands or badges.

* Fixed some unneeded java 11 changes
2019-04-18 18:31:52 -05:00

288 lines
13 KiB
Java
Executable File

package script.systems.collections;
import script.*;
import script.library.collection;
import script.library.sui;
import script.library.utils;
public class consume_loot extends script.base_script
{
public consume_loot()
{
}
public static final String PID_NAME = "collectionConsume";
public static final String SCRIPTVAR_LIST = "collections.availableCollections";
public static final string_id SID_CONSUME_PROMPT = new string_id("collection", "consume_item_prompt");
public static final string_id SID_CONSUME_TITLE = new string_id("collection", "consume_item_title");
public static final string_id SID_CONSUME_ITEM = new string_id("collection", "consume_item");
public static final string_id SID_REPORT_CONSUME_ITEM_FAIL = new string_id("collection", "report_consume_item_fail");
public static final string_id SID_ALREADY_HAVE_SLOT = new string_id("collection", "already_have_slot");
public static final string_id SID_ALREADY_FINISHED_COLLECTION = new string_id("collection", "already_finished_collection");
public static final string_id STR_COLLECTION_LIST_PROMPT = new string_id("collection", "collection_list_prompt");
public static final string_id STR_COLLECTION_LIST_TITLE = new string_id("collection", "collection_list_title");
public int OnObjectMenuRequest(obj_id self, obj_id player, menu_info mi) throws InterruptedException
{
obj_id collectionItem = self;
if (utils.isNestedWithinAPlayer(collectionItem))
{
mi.addRootMenu(menu_info_types.SERVER_MENU3, SID_CONSUME_ITEM);
}
return SCRIPT_CONTINUE;
}
public int OnObjectMenuSelect(obj_id self, obj_id player, int item) throws InterruptedException
{
sendDirtyObjectMenuNotification(self);
obj_id collectionItem = self;
if (item == menu_info_types.SERVER_MENU3 && utils.isNestedWithinAPlayer(collectionItem))
{
if (sui.hasPid(player, PID_NAME))
{
int pid = sui.getPid(player, PID_NAME);
forceCloseSUIPage(pid);
}
String[] availableCollections = collection.getAllAvailableCollectionsForItem(player, self);
if (availableCollections.length >= 1)
{
boolean success = getUiConsumeMessageBox(self, player);
return SCRIPT_CONTINUE;
}
else
{
sendSystemMessage(player, collection.SID_NEED_TO_ACTIVATE_COLLECTION);
return SCRIPT_CONTINUE;
}
}
return SCRIPT_CONTINUE;
}
public int OnGetAttributes(obj_id self, obj_id player, String[] names, String[] attribs) throws InterruptedException
{
int idx = utils.getValidAttributeIndex(names);
if (idx == -1)
{
return SCRIPT_CONTINUE;
}
if (exists(self) && !hasObjVar(self, "relic.doNotShowAsCollectionItem"))
{
String[] collectionsForItem = collection.getAllCollectionsForItem(self);
String[] slotsForItem = collection.getAllSlotsForItem(self);
if (collectionsForItem != null && collectionsForItem.length > 0)
{
for (int i = 0; i < collectionsForItem.length; ++i)
{
names[idx] = "collection_name";
if (!hasCompletedCollection(player, collectionsForItem[i]))
{
if (!hasCompletedCollectionSlot(player, slotsForItem[i]))
{
attribs[idx] = "@collection_n:" + collectionsForItem[i] + "_unfinished";
}
else
{
attribs[idx] = "@collection_n:" + collectionsForItem[i] + "_finished";
}
}
else
{
attribs[idx] = "@collection_n:" + collectionsForItem[i] + "_finished";
}
idx++;
}
}
}
return SCRIPT_CONTINUE;
}
public int handlerSuiAddToCollection(obj_id self, dictionary params) throws InterruptedException
{
obj_id collectionItem = self;
if (params == null || params.isEmpty())
{
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
if (!isIdValid(player))
{
return SCRIPT_CONTINUE;
}
int bp = sui.getIntButtonPressed(params);
if (bp == sui.BP_CANCEL)
{
sui.removePid(player, PID_NAME);
return SCRIPT_CONTINUE;
}
if (!sui.hasPid(player, PID_NAME))
{
return SCRIPT_CONTINUE;
}
if (!utils.isNestedWithin(self, player))
{
sui.removePid(player, PID_NAME);
CustomerServiceLog("CollectionConsume: ", "collectionItem (" + collectionItem + ")" + " was NOT consumed into a collection, for player " + getFirstName(player) + "(" + player + "). collectionItem(" + collectionItem + "). Player attempted to collect an item that was not in their inventory.");
return SCRIPT_CONTINUE;
}
String[] availableCollections = collection.getAllAvailableCollectionsForItem(player, self);
String[] availableSlots = collection.getAllAvailableSlotsForItem(player, self);
String slotName = "";
String collectionName = "";
if (availableCollections.length < 1)
{
CustomerServiceLog("CollectionConsume: ", "collectionItem (" + collectionItem + ")" + " was NOT consumed into a collection, for player " + getFirstName(player) + "(" + player + "). collectionItem(" + collectionItem + "). Player did not have the collection activated.");
sui.removePid(player, PID_NAME);
sendSystemMessage(player, collection.SID_NEED_TO_ACTIVATE_COLLECTION);
return SCRIPT_CONTINUE;
}
if (availableCollections != null && availableCollections.length > 1)
{
String[] dataStored = (String[])availableCollections.clone();
utils.setScriptVar(player, SCRIPTVAR_LIST, dataStored);
for (int i = 0; i < availableCollections.length; ++i)
{
availableCollections[i] = utils.packStringId(new string_id("collection", availableCollections[i]));
}
int pid = sui.listbox(self, player, "@" + STR_COLLECTION_LIST_PROMPT, sui.OK_CANCEL, "@" + STR_COLLECTION_LIST_TITLE, availableCollections, "onCollectionListResponse", true, false);
sui.setPid(player, pid, PID_NAME);
return SCRIPT_CONTINUE;
}
else if (availableCollections != null && availableCollections.length > 0)
{
slotName = availableSlots[0];
collectionName = availableCollections[0];
}
if (!hasCompletedCollection(player, collectionName))
{
if (!hasCompletedCollectionSlot(player, slotName) && !slotName.equals(""))
{
if (modifyCollectionSlotValue(player, slotName, 1))
{
CustomerServiceLog("CollectionConsume: ", "collectionItem (" + collectionItem + ")" + " was consumed into a collection, for player " + getFirstName(player) + "(" + player + "). collectionItem(" + collectionItem + ") will now be destroyed.");
decrementCount(collectionItem);
}
else
{
CustomerServiceLog("CollectionConsume: ", "collectionItem (" + collectionItem + ")" + " was NOT consumed into a collection, for player " + getFirstName(player) + "(" + player + "). collectionItem(" + collectionItem + ") will NOT be destroyed.");
sendSystemMessage(player, SID_REPORT_CONSUME_ITEM_FAIL);
}
sui.removePid(player, PID_NAME);
return SCRIPT_CONTINUE;
}
else
{
sendSystemMessage(player, SID_ALREADY_HAVE_SLOT);
sui.removePid(player, PID_NAME);
return SCRIPT_CONTINUE;
}
}
else
{
sendSystemMessage(player, SID_ALREADY_FINISHED_COLLECTION);
}
sui.removePid(player, PID_NAME);
return SCRIPT_CONTINUE;
}
public int onCollectionListResponse(obj_id self, dictionary params) throws InterruptedException
{
if (params == null || params.isEmpty())
{
return SCRIPT_CONTINUE;
}
obj_id collectionItem = self;
obj_id player = sui.getPlayerId(params);
if (!isIdValid(player))
{
return SCRIPT_CONTINUE;
}
int bp = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if (bp == sui.BP_CANCEL)
{
sui.removePid(player, PID_NAME);
return SCRIPT_CONTINUE;
}
if (idx < 0)
{
sui.removePid(player, PID_NAME);
return SCRIPT_CONTINUE;
}
if (!sui.hasPid(player, PID_NAME))
{
return SCRIPT_CONTINUE;
}
if (!utils.isNestedWithin(self, player))
{
sui.removePid(player, PID_NAME);
CustomerServiceLog("CollectionConsume: ", "collectionItem (" + collectionItem + ")" + " was NOT consumed into a collection, for player " + getFirstName(player) + "(" + player + "). collectionItem(" + collectionItem + "). Player attempted to collect an item that was not in their inventory.");
return SCRIPT_CONTINUE;
}
String[] availableCollections = utils.getStringArrayScriptVar(player, SCRIPTVAR_LIST);
String[] baseSlotNames = split(getStringObjVar(collectionItem, collection.OBJVAR_SLOT_NAME), '|');
utils.removeScriptVarTree(player, "collections");
String slotName = "";
String collectionName = availableCollections[idx];
for (String baseSlotName : baseSlotNames) {
boolean found = false;
String[] splitSlotNames = split(baseSlotName, ':');
for (int j = 0; j < splitSlotNames.length; j += 2) {
if (collectionName.equals(splitSlotNames[j])) {
if (!hasCompletedCollection(player, collectionName)) {
if (!hasCompletedCollectionSlot(player, splitSlotNames[j + 1])) {
slotName = splitSlotNames[j + 1];
found = true;
break;
}
}
}
}
if (found) {
break;
}
}
if (!hasCompletedCollection(player, collectionName))
{
if (!hasCompletedCollectionSlot(player, slotName) && !slotName.equals(""))
{
if (modifyCollectionSlotValue(player, slotName, 1))
{
CustomerServiceLog("CollectionConsume: ", "collectionItem (" + collectionItem + ")" + " was consumed into a collection, for player " + getFirstName(player) + "(" + player + "). collectionItem(" + collectionItem + ") will now be destroyed.");
decrementCount(collectionItem);
}
else
{
CustomerServiceLog("CollectionConsume: ", "collectionItem (" + collectionItem + ")" + " was NOT consumed into a collection, for player " + getFirstName(player) + "(" + player + "). collectionItem(" + collectionItem + ") will NOT be destroyed.");
sendSystemMessage(player, SID_REPORT_CONSUME_ITEM_FAIL);
}
sui.removePid(player, PID_NAME);
return SCRIPT_CONTINUE;
}
else
{
sendSystemMessage(player, SID_ALREADY_HAVE_SLOT);
sui.removePid(player, PID_NAME);
return SCRIPT_CONTINUE;
}
}
else
{
sendSystemMessage(player, SID_ALREADY_FINISHED_COLLECTION);
}
sui.removePid(player, PID_NAME);
return SCRIPT_CONTINUE;
}
public boolean getUiConsumeMessageBox(obj_id self, obj_id player) throws InterruptedException
{
if (!isValidId(self) || !isValidId(player))
{
return false;
}
String questName = getStringObjVar(self, "collection.questName");
if (questName == null || questName.equals(""))
{
int pid = sui.msgbox(self, player, "@" + SID_CONSUME_PROMPT, sui.YES_NO, "@" + SID_CONSUME_TITLE, "handlerSuiAddToCollection");
sui.setPid(player, pid, PID_NAME);
return true;
}
string_id questCollectionString = new string_id("collection", questName);
int pid = sui.msgbox(self, player, "@" + questCollectionString + "_d", sui.YES_NO, "@" + questCollectionString + "_n", "handlerSuiAddToCollection");
sui.setPid(player, pid, PID_NAME);
return true;
}
}