mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-08-01 01:15:59 -04:00
113 lines
4.1 KiB
Java
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;
|
|
}
|
|
}
|