Files
dsrc/sku.0/sys.server/compiled/game/script/quest/township/ig88_scanner.java
T

113 lines
4.1 KiB
Java

package script.quest.township;
import script.*;
import script.base_class.*;
import script.combat_engine.*;
import java.util.Arrays;
import java.util.Hashtable;
import java.util.Vector;
import script.base_script;
import script.library.groundquests;
import script.library.group;
import script.library.instance;
import script.library.stealth;
import script.library.sui;
public class ig88_scanner extends script.base_script
{
public ig88_scanner()
{
}
public static final int COUNTDOWN_TIME = 5;
public static final String QUEST_NAME = "found_ig88_encounter";
public static final String QUEST_TASK_NAME = "ig88_enter_compound";
public static final String QUEST_SIGNAL = "ig88_compound_enter_signal";
public static final String INSTANCE_NAME = "heroic_ig88";
public static final string_id SCANNER_TEXT = new string_id("spam", "ig88_use_scanner");
public int OnObjectMenuRequest(obj_id self, obj_id player, menu_info menuInfo) throws InterruptedException
{
if (isDead(player) || isIncapacitated(player))
{
return SCRIPT_CONTINUE;
}
int menu = menu = menuInfo.addRootMenu(menu_info_types.ITEM_USE, SCANNER_TEXT);
menu_info_data menuInfoData = menuInfo.getMenuItemById(menu);
if (menuInfoData != null)
{
menuInfoData.setServerNotify(true);
}
return SCRIPT_CONTINUE;
}
public int OnObjectMenuSelect(obj_id self, obj_id player, int item) throws InterruptedException
{
if (isDead(player) || isIncapacitated(player))
{
return SCRIPT_CONTINUE;
}
if (item == menu_info_types.ITEM_USE && (groundquests.isQuestActiveOrComplete(player, QUEST_NAME) || instance.isFlaggedForInstance(player, "heroic_ig88")))
{
string_id menuStringId = new string_id("spam", "ig88_use_scanner");
String handler = "handleCountdownTimer";
int startTime = 0;
int range = 3;
int flags = 0;
flags |= sui.CD_EVENT_INCAPACITATE;
flags |= sui.CD_EVENT_DAMAGED;
stealth.testInvisNonCombatAction(player, self);
int countdownSui = sui.smartCountdownTimerSUI(self, player, "quest_countdown_timer", menuStringId, startTime, COUNTDOWN_TIME, handler, range, flags);
}
else
{
sendSystemMessage(player, new string_id("nexus", "retina_not_recognized"));
}
return SCRIPT_CONTINUE;
}
public int handleCountdownTimer(obj_id self, dictionary params) throws InterruptedException
{
int pid = params.getInt("id");
obj_id player = params.getObjId("player");
if (!isIdValid(player))
{
return SCRIPT_CONTINUE;
}
int bp = sui.getIntButtonPressed(params);
if (bp == sui.BP_CANCEL)
{
detachScript(player, sui.COUNTDOWNTIMER_PLAYER_SCRIPT);
return SCRIPT_CONTINUE;
}
else if (bp == sui.BP_REVERT)
{
int event = params.getInt("event");
if (event == sui.CD_EVENT_LOCOMOTION)
{
sendSystemMessage(player, new string_id("quest/groundquests", "countdown_interrupted_locomotion"));
}
else if (event == sui.CD_EVENT_INCAPACITATE)
{
sendSystemMessage(player, new string_id("quest/groundquests", "countdown_interrupted_incapacitated"));
}
else if (event == sui.CD_EVENT_DAMAGED)
{
sendSystemMessage(player, new string_id("quest/groundquests", "countdown_interrupted_damaged"));
}
return SCRIPT_CONTINUE;
}
if (!hasObjVar(player, sui.COUNTDOWNTIMER_SUI_VAR))
{
return SCRIPT_CONTINUE;
}
int test_pid = getIntObjVar(player, sui.COUNTDOWNTIMER_SUI_VAR);
if (pid != test_pid)
{
return SCRIPT_CONTINUE;
}
forceCloseSUIPage(pid);
detachScript(player, sui.COUNTDOWNTIMER_PLAYER_SCRIPT);
groundquests.sendSignal(player, QUEST_SIGNAL);
instance.requestInstanceMovement(player, INSTANCE_NAME);
return SCRIPT_CONTINUE;
}
}