Files
dsrc/sku.0/sys.server/compiled/game/script/systems/jedi/jedi_cloak.java
T

179 lines
8.1 KiB
Java
Executable File

package script.systems.jedi;
import script.library.jedi;
import script.library.reverse_engineering;
import script.library.static_item;
import script.library.utils;
import script.*;
public class jedi_cloak extends script.base_script
{
public jedi_cloak()
{
}
public static final string_id SID_USE_HOOD_UP = new string_id("spam", "hood_up");
public static final string_id SID_USE_HOOD_DOWN = new string_id("spam", "hood_down");
public static final string_id SID_NO_TWO_CLOAK = new string_id("spam", "no_two_cloak");
public static final String OBJVAR_BEING_REPLACED = "aboutToBeReplaced";
public int OnInitialize(obj_id self) throws InterruptedException
{
if (hasObjVar(self, OBJVAR_BEING_REPLACED))
{
destroyObject(self);
}
return SCRIPT_CONTINUE;
}
public int OnAboutToBeTransferred(obj_id self, obj_id destContainer, obj_id transferer) throws InterruptedException
{
obj_id player = utils.getContainingPlayer(destContainer);
if (isIdValid(player))
{
if (jedi.hasAnyUltraCloak(player))
{
obj_id existingCloak = utils.getStaticItemInBankOrInventory(player, jedi.JEDI_CLOAK_LIGHT_HOOD_UP);
if (!isIdValid(existingCloak) || existingCloak == self)
{
existingCloak = utils.getStaticItemInBankOrInventory(player, jedi.JEDI_CLOAK_LIGHT_HOOD_DOWN);
}
if (!isIdValid(existingCloak) || existingCloak == self)
{
existingCloak = utils.getStaticItemInBankOrInventory(player, jedi.JEDI_CLOAK_DARK_HOOD_UP);
}
if (!isIdValid(existingCloak) || existingCloak == self)
{
existingCloak = utils.getStaticItemInBankOrInventory(player, jedi.JEDI_CLOAK_DARK_HOOD_DOWN);
}
if (!isIdValid(existingCloak) || existingCloak == self)
{
existingCloak = utils.getStaticItemInAppearanceInventory(player, jedi.JEDI_CLOAK_LIGHT_HOOD_UP);
}
if (!isIdValid(existingCloak) || existingCloak == self)
{
existingCloak = utils.getStaticItemInAppearanceInventory(player, jedi.JEDI_CLOAK_LIGHT_HOOD_DOWN);
}
if (!isIdValid(existingCloak) || existingCloak == self)
{
existingCloak = utils.getStaticItemInAppearanceInventory(player, jedi.JEDI_CLOAK_DARK_HOOD_UP);
}
if (!isIdValid(existingCloak) || existingCloak == self)
{
existingCloak = utils.getStaticItemInAppearanceInventory(player, jedi.JEDI_CLOAK_DARK_HOOD_DOWN);
}
if (exists(existingCloak) && isIdValid(existingCloak) && existingCloak != self)
{
if (!hasObjVar(existingCloak, OBJVAR_BEING_REPLACED) && !hasObjVar(self, OBJVAR_BEING_REPLACED))
{
sendSystemMessage(player, SID_NO_TWO_CLOAK);
return SCRIPT_OVERRIDE;
}
}
}
}
return SCRIPT_CONTINUE;
}
public int OnObjectMenuRequest(obj_id self, obj_id player, menu_info mi) throws InterruptedException
{
if (utils.isEquipped(self))
{
String itemName = getStaticItemName(self);
menu_info_data mid = mi.getMenuItemByType(menu_info_types.ITEM_USE);
if (mid != null)
{
mid.setServerNotify(true);
}
else
{
if (itemName.equals(jedi.JEDI_CLOAK_LIGHT_HOOD_UP) || itemName.equals(jedi.JEDI_CLOAK_DARK_HOOD_UP))
{
mi.addRootMenu(menu_info_types.ITEM_USE, SID_USE_HOOD_DOWN);
}
else if (itemName.equals(jedi.JEDI_CLOAK_LIGHT_HOOD_DOWN) || itemName.equals(jedi.JEDI_CLOAK_DARK_HOOD_DOWN))
{
mi.addRootMenu(menu_info_types.ITEM_USE, SID_USE_HOOD_UP);
}
}
}
return SCRIPT_CONTINUE;
}
public int OnObjectMenuSelect(obj_id self, obj_id player, int item) throws InterruptedException
{
if (!utils.isEquipped(self))
{
return SCRIPT_CONTINUE;
}
if (item == menu_info_types.ITEM_USE)
{
obj_id pInv = utils.getInventoryContainer(player);
String itemName = getStaticItemName(self);
boolean isAppearanceItem = isAPlayerAppearanceInventoryContainer(getContainedBy(self));
setObjVar(self, OBJVAR_BEING_REPLACED, true);
if (itemName.equals(jedi.JEDI_CLOAK_LIGHT_HOOD_UP) || itemName.equals(jedi.JEDI_CLOAK_DARK_HOOD_UP))
{
obj_id newRobe = null;
if (itemName.equals(jedi.JEDI_CLOAK_LIGHT_HOOD_UP))
{
newRobe = static_item.createNewItemFunction(jedi.JEDI_CLOAK_LIGHT_HOOD_DOWN, pInv);
}
if (itemName.equals(jedi.JEDI_CLOAK_DARK_HOOD_UP))
{
newRobe = static_item.createNewItemFunction(jedi.JEDI_CLOAK_DARK_HOOD_DOWN, pInv);
}
if (isIdValid(newRobe))
{
if (reverse_engineering.isPoweredUpItem(self) && !isAppearanceItem)
{
float remainingTime = getFloatObjVar(self, reverse_engineering.ENGINEERING_TIMESTAMP);
reverse_engineering.removePlayerPowerUpMods(player, self);
reverse_engineering.addModsAndScript(player, self, newRobe, remainingTime);
}
utils.setScriptVar(newRobe, static_item.NO_SET_ITEM_EQUIP_SPAM, 1);
putInOverloaded(self, pInv);
equip(newRobe, player);
destroyObject(self);
return SCRIPT_CONTINUE;
}
}
if (itemName.equals(jedi.JEDI_CLOAK_LIGHT_HOOD_DOWN) || itemName.equals(jedi.JEDI_CLOAK_DARK_HOOD_DOWN))
{
obj_id hat = getObjectInSlot(player, "hat");
if (isIdValid(hat) && !isAppearanceItem)
{
putInOverloaded(hat, pInv);
}
if (isAppearanceItem)
{
obj_id appearanceHat = getObjectInSlot(getAppearanceInventory(player), "hat");
if (isIdValid(appearanceHat))
{
putInOverloaded(appearanceHat, pInv);
}
}
obj_id newRobe = null;
if (itemName.equals(jedi.JEDI_CLOAK_LIGHT_HOOD_DOWN))
{
newRobe = static_item.createNewItemFunction(jedi.JEDI_CLOAK_LIGHT_HOOD_UP, pInv);
}
if (itemName.equals(jedi.JEDI_CLOAK_DARK_HOOD_DOWN))
{
newRobe = static_item.createNewItemFunction(jedi.JEDI_CLOAK_DARK_HOOD_UP, pInv);
}
if (isIdValid(newRobe))
{
if (reverse_engineering.isPoweredUpItem(self) && !isAppearanceItem)
{
float remainingTime = getFloatObjVar(self, reverse_engineering.ENGINEERING_TIMESTAMP);
reverse_engineering.removePlayerPowerUpMods(player, self);
reverse_engineering.addModsAndScript(player, self, newRobe, remainingTime);
}
utils.setScriptVar(newRobe, static_item.NO_SET_ITEM_EQUIP_SPAM, 1);
putInOverloaded(self, pInv);
equip(newRobe, player);
destroyObject(self);
return SCRIPT_CONTINUE;
}
}
}
return SCRIPT_CONTINUE;
}
}