diff --git a/sku.0/sys.server/compiled/game/script/npc/static_quest/quest_convo.java b/sku.0/sys.server/compiled/game/script/npc/static_quest/quest_convo.java index 316474d77..59c15ffdd 100755 --- a/sku.0/sys.server/compiled/game/script/npc/static_quest/quest_convo.java +++ b/sku.0/sys.server/compiled/game/script/npc/static_quest/quest_convo.java @@ -6,497 +6,458 @@ import script.location; import script.obj_id; import script.string_id; -public class quest_convo extends script.base_script -{ - public quest_convo() - { +public class quest_convo extends script.base_script { + public quest_convo() { } + public static final String FACETO_VOLUME_NAME = "faceToTriggerVolume"; - public static final String[] NPC_DEACTIVATE_LIST = - { - "tato_valarian_kavas_urdano", - "tato_valarian_ind", - "hedon_istee", - "igbi_freemo" - }; - public int OnAttach(obj_id self) throws InterruptedException - { + + public static final String[] NPC_DEACTIVATE_LIST = + { + "tato_valarian_kavas_urdano", + "tato_valarian_ind", + "hedon_istee", + "igbi_freemo" + }; + + public int OnAttach(obj_id self) throws InterruptedException { String exclusion = getStringObjVar(self, "quest_table"); - if (exclusion == null) - { + + // IF THIS IS AN NPC WHO'S BEING UPDATED, WE'RE REMOVING THE QUEST CONVO + // SCRIPT AND NOT MAKING HIM INTERESTING. + if (exclusion == null) { exclusion = ""; } - if (NPC_DEACTIVATE_LIST != null && NPC_DEACTIVATE_LIST.length > 0) - { - for (String s : NPC_DEACTIVATE_LIST) { - if (exclusion.equals(s)) { - detachScript(self, "npc.static_quest.quest_convo"); - return SCRIPT_CONTINUE; - } + for (String s : NPC_DEACTIVATE_LIST) { + if (exclusion.equals(s)) { + detachScript(self, "npc.static_quest.quest_convo"); + return SCRIPT_CONTINUE; } } + messageTo(self, "handleStaticQuestNpcAttach", null, 2, false); return SCRIPT_CONTINUE; } - public int handleStaticQuestNpcAttach(obj_id self, dictionary params) throws InterruptedException - { + + public int handleStaticQuestNpcAttach(obj_id self, dictionary params) throws InterruptedException { String creatureName = getCreatureName(self); - if (creatureName == null || creatureName.length() <= 0) - { + if (creatureName == null || creatureName.length() <= 0) { return SCRIPT_CONTINUE; } - if (creatureName.startsWith("vana_sage") || creatureName.startsWith("tekil_barje") || creatureName.startsWith("ikka_gesul")) - { + + if (creatureName.startsWith("vana_sage") || creatureName.startsWith("tekil_barje") || creatureName.startsWith("ikka_gesul")) { detachScript(self, "npc.static_quest.quest_convo"); return SCRIPT_CONTINUE; } - if (hasScript(self, "conversation.faction_recruiter_imperial") || hasScript(self, "conversation.faction_recruiter_rebel")) - { + + if (hasScript(self, "conversation.faction_recruiter_imperial") || hasScript(self, "conversation.faction_recruiter_rebel")) { detachScript(self, "npc.static_quest.quest_convo"); return SCRIPT_CONTINUE; } + attachScript(self, "npc.converse.npc_converse_menu"); ai_lib.setDefaultCalmBehavior(self, ai_lib.BEHAVIOR_SENTINEL); setInvulnerable(self, true); + createTriggerVolume(FACETO_VOLUME_NAME, 8.0f, true); return SCRIPT_CONTINUE; } - public int OnStartNpcConversation(obj_id self, obj_id speaker) throws InterruptedException - { + + public int OnStartNpcConversation(obj_id self, obj_id speaker) throws InterruptedException { + //Gets the datatable from his objvars. String datatable = getStringObjVar(self, "quest_table"); String exclusion = datatable; datatable = "datatables/spawning/static_npc/" + datatable + ".iff"; + + //The gating string tells us if he's ever done work for this NPC before, and if so, what mission he's on. String gatingString = dataTableGetString(datatable, 1, "overall_objvar"); int gating = getIntObjVar(speaker, gatingString); - if (gating == 0) - { + if (gating == 0) { boolean noMatch = true; - if (NPC_DEACTIVATE_LIST != null && NPC_DEACTIVATE_LIST.length > 0) - { - for (String s : NPC_DEACTIVATE_LIST) { - if (exclusion.equals(s)) { - noMatch = false; - } + for (String s : NPC_DEACTIVATE_LIST) { + if (exclusion.equals(s)) { + noMatch = false; + break; } } - if (noMatch) - { + + if (noMatch) { + //He's never worked for this NPC so he's on mission 1 setObjVar(speaker, gatingString, 1); gating = 1; } } - int maxGating = dataTableGetNumRows(datatable); - maxGating = maxGating - 1; + + //the number of rows in the datatable is the total # of missions this NPC can give out. + int maxGating = dataTableGetNumRows(datatable) - 1; int questNum = gating; + + //All from the datatable String CONVO = dataTableGetString(datatable, questNum, "convo"); String ALT_CONVO = "static_npc/default_dialog"; String questID = dataTableGetString(datatable, questNum, "temp_objvar"); String convoType = dataTableGetString(datatable, questNum, "quest_giver_convo"); String questType = dataTableGetString(datatable, questNum, "quest_type"); - if (questNum == 0) - { + + // This means that the starting of this quest has been deactivated + if (questNum == 0) { string_id deactivated = new string_id(ALT_CONVO, "deactivated"); - chat.chat(self, speaker, deactivated); + chat.chat(self, deactivated); return SCRIPT_CONTINUE; } - if (dataTableHasColumn(datatable, "opposing_objvar")) - { + + //This is to prevent a player from doing both a "light" and a "dark" side quest. + if (dataTableHasColumn(datatable, "opposing_objvar")) { String opposing = dataTableGetString(datatable, questNum, "opposing_objvar"); - if (hasObjVar(speaker, opposing)) - { - int value = getIntObjVar(speaker, opposing); - if (value > 1) - { - string_id leave = new string_id(CONVO, "go_away"); - chat.chat(self, speaker, leave); + if (hasObjVar(speaker, opposing)) { + if (getIntObjVar(speaker, opposing) > 1) { + chat.chat(self, new string_id(CONVO, "go_away")); npcEndConversation(speaker); return SCRIPT_CONTINUE; } } } - if (gating > maxGating) - { + + if (gating > maxGating) { CONVO = dataTableGetString(datatable, 1, "convo"); - string_id next = new string_id(CONVO, "next"); - chat.chat(self, speaker, next); + chat.chat(self, new string_id(CONVO, "next")); return SCRIPT_OVERRIDE; } - if (dataTableHasColumn(datatable, "gating_faction")) - { + + // Is this NPC Rebel Only, or Imperial Only? We'll find out below. + if (dataTableHasColumn(datatable, "gating_faction")) { String gatingFaction = dataTableGetString(datatable, questNum, "gating_faction"); - if (gatingFaction == null) - { + if (gatingFaction == null) { gatingFaction = "none"; } - String faction = factions.getFaction(speaker); - if (gatingFaction.equals("Rebel") || gatingFaction.equals("Imperial")) - { - if (gatingFaction.equals("Imperial") && !factions.isImperial(speaker)) - { - string_id notyet = new string_id(CONVO, "notyet"); - chat.chat(self, speaker, notyet); + + if (gatingFaction.equals("Rebel") || gatingFaction.equals("Imperial")) { + if (gatingFaction.equals("Imperial") && !factions.isImperial(speaker)) { + chat.chat(self, new string_id(CONVO, "notyet")); + return SCRIPT_OVERRIDE; + } else if (gatingFaction.equals("Rebel") && !factions.isRebel(speaker)) { + chat.chat(self, new string_id(CONVO, "notyet")); + return SCRIPT_OVERRIDE; + } else if (factions.isOnLeave(speaker)) { + chat.chat(self, new string_id(CONVO, "notyet")); return SCRIPT_OVERRIDE; } - else if (gatingFaction.equals("Rebel") && !factions.isRebel(speaker)) - { - string_id notyet = new string_id(CONVO, "notyet"); - chat.chat(self, speaker, notyet); - return SCRIPT_OVERRIDE; - } - else - { - if (factions.isOnLeave(speaker)) - { - string_id notyet = new string_id(CONVO, "notyet"); - chat.chat(self, speaker, notyet); - return SCRIPT_OVERRIDE; - } - } - } - else - { - if (!gatingFaction.equals("none")) - { + } else { + if (!gatingFaction.equals("none")) { float playerFaction = getFloatObjVar(speaker, "faction." + gatingFaction); int neededFaction = dataTableGetInt(datatable, questNum, "gating_faction_amt"); - if (playerFaction < neededFaction) - { - string_id notyet = new string_id(CONVO, "notyet"); - chat.chat(self, speaker, notyet); + if (playerFaction < neededFaction) { + chat.chat(self, new string_id(CONVO, "notyet")); return SCRIPT_OVERRIDE; } } } } - if (dataTableHasColumn(datatable, "gating_jedi")) - { + + // Is this Quest not for Jedi's? + if (dataTableHasColumn(datatable, "gating_jedi")) { String gatingJedi = dataTableGetString(datatable, questNum, "gating_jedi"); - if (gatingJedi == null) - { + if (gatingJedi == null) { gatingJedi = "none"; } - if (gatingJedi.equals("yes")) - { - if (isJedi(speaker)) - { - string_id jedi = new string_id(CONVO, "jedi"); - chat.chat(self, speaker, jedi); + if (gatingJedi.equals("yes")) { + if (isJedi(speaker)) { + chat.chat(self, new string_id(CONVO, "jedi")); return SCRIPT_OVERRIDE; } } } - if (dataTableHasColumn(datatable, "gating_object")) - { + + if (dataTableHasColumn(datatable, "gating_object")) { String gatingObject = dataTableGetString(datatable, questNum, "gating_object"); - if (gatingObject == null) - { + if (gatingObject == null) { gatingObject = "none"; } - if (!gatingObject.equals("none")) - { + if (!gatingObject.equals("none")) { obj_id playerInv = utils.getInventoryContainer(speaker); - if (checkForGatingItem(playerInv, speaker, questNum, datatable) != true) - { - string_id rewardMessage = new string_id(CONVO, "notyet"); - chat.chat(self, speaker, rewardMessage); + if (!checkForGatingItem(playerInv, speaker, questNum, datatable)) { + chat.chat(self, new string_id(CONVO, "notyet")); return SCRIPT_OVERRIDE; } } } + String gatingObjVar = dataTableGetString(datatable, 1, "gating_objvar"); - if (gatingObjVar != null) - { - if (!gatingObjVar.equals("") && !gatingObjVar.equals("none")) - { - if (!hasObjVar(speaker, gatingObjVar)) - { - string_id notyet = new string_id(CONVO, "notyet"); - chat.chat(self, speaker, notyet); + + if (gatingObjVar != null) { + if (!gatingObjVar.equals("") && !gatingObjVar.equals("none")) { + if (!hasObjVar(speaker, gatingObjVar)) { + chat.chat(self, new string_id(CONVO, "notyet")); return SCRIPT_OVERRIDE; - } - else - { + } else { int gatingAmt = dataTableGetInt(datatable, questNum, "gating_objvar_amt"); int playerGate = getIntObjVar(speaker, gatingObjVar); - if (playerGate < gatingAmt) - { - string_id notyet = new string_id(CONVO, "notyet"); - chat.chat(self, speaker, notyet); + if (playerGate < gatingAmt) { + chat.chat(self, new string_id(CONVO, "notyet")); return SCRIPT_OVERRIDE; } } } } - if (convoType == null) - { + + //If the convotype is null then something is wrong with the datatable and we'll exit gracefully from this script. + if (convoType == null) { debugSpeakMsg(self, "For some reason I'm stuck with nothing to say."); return SCRIPT_OVERRIDE; } + + // If the NPC is busy fighting, or the player for that matter, well then they shouldn't be talking about quests if (ai_lib.isInCombat(self) || ai_lib.isInCombat(speaker)) - { + return SCRIPT_OVERRIDE; + // If you've done all this guys missions he uses the "next" line to tell you. + else if (questNum >= maxGating) { + System.out.println("hitting max gating: " + maxGating); + chat.chat(self, new string_id(CONVO, "next")); return SCRIPT_OVERRIDE; } - else if (questNum > maxGating) - { - string_id next = new string_id(CONVO, "next"); - chat.chat(self, speaker, next); - return SCRIPT_OVERRIDE; - } - else if (hasObjVar(speaker, questID + ".failed")) - { + // Now we're getting into it. This means you've failed his mission and you've come back for punishment. + else if (hasObjVar(speaker, questID + ".failed")) { string_id failMessage = new string_id(CONVO, "npc_failure_" + questNum); + String failSafe = getString(failMessage); - if (failSafe == null || failSafe.equals("")) - { + + if (failSafe == null || failSafe.equals("")) { failMessage = new string_id(CONVO, "npc_failure"); } - chat.chat(self, speaker, failMessage); + + chat.chat(self, failMessage); missionFailure(self, speaker, questNum); return SCRIPT_OVERRIDE; } - else if (hasObjVar(speaker, questID + ".noloc")) - { - string_id noLocMessage = new string_id(CONVO, "npc_noloc_" + questNum); - chat.chat(self, speaker, noLocMessage); + // This is where the NPC can't find a good location to spawn an NPC or an NPC wasn't able to spawn because + // of a typo or some other problem. This is the graceful conclusion of such a problem. + else if (hasObjVar(speaker, questID + ".noloc")) { + chat.chat(self, new string_id(CONVO, "npc_noloc_" + questNum)); resetPlayer(self, speaker, questNum); return SCRIPT_OVERRIDE; } - else if (hasObjVar(speaker, questID + ".done")) - { - if (questType.equals("fetch") || questType.equals("retrieve")) - { + // You've finished this guys mission and you're back for your reward(s). + else if (hasObjVar(speaker, questID + ".done")) { + if (questType.equals("fetch") || questType.equals("retrieve")) { obj_id playerInv = utils.getInventoryContainer(speaker); - if (checkForItem(playerInv, speaker, questNum) == true) - { - string_id rewardMessage = new string_id(CONVO, "npc_reward_" + questNum); - chat.chat(self, speaker, rewardMessage); - obj_id retrieveObject = getObjIdObjVar(speaker, questID + ".deliver"); - destroyObject(retrieveObject); + if (checkForItem(playerInv, speaker, questNum)) { + chat.chat(self, new string_id(CONVO, "npc_reward_" + questNum)); + destroyObject(getObjIdObjVar(speaker, questID + ".deliver")); giveReward(self, speaker, questNum); return SCRIPT_OVERRIDE; - } - else - { + } else { String notit = "notit_" + questNum; String response1 = "player_reset_" + questNum; String response2 = "player_sorry_" + questNum; + string_id greeting = new string_id(CONVO, notit); - string_id response[] = new string_id[2]; + + string_id[] response = new string_id[2]; response[0] = new string_id(CONVO, response1); + String answer = getString(response[0]); - if (answer == null || answer.equals("")) - { + + if (answer == null || answer.equals("")) { response1 = "player_reset"; response[0] = new string_id(CONVO, response1); } + response[1] = new string_id(CONVO, response2); - String answer2 = getString(response[0]); - if (answer == null || answer.equals("")) - { + + if (answer == null || answer.equals("")) { response2 = "player_sorry"; response[1] = new string_id(CONVO, response2); } + npcStartConversation(speaker, self, "questConvo", greeting, response); + return SCRIPT_CONTINUE; } - } - else if (questType.equals("escort") || questType.equals("arrest") || questType.equals("rescue")) - { - location alaska = getLocation(self); - obj_id[] creatures = getObjectsInRange(alaska, 20); + } else if (questType.equals("escort") || questType.equals("arrest") || questType.equals("rescue")) { + obj_id[] creatures = getObjectsInRange(getLocation(self), 20); obj_id theVip = getObjIdObjVar(speaker, questID + ".vip"); - boolean goodEscort = false; - int numCreature = creatures.length; - int x = 0; - while (x < numCreature) - { - if (creatures[x] != null) - { - obj_id thisOne = creatures[x]; - if (theVip == thisOne) - { - goodEscort = true; - } - x = x + 1; + + for (obj_id creature : creatures) { + if (creature != null && theVip == creature) { + string_id reward = new string_id(CONVO, "npc_reward_" + questNum); + chat.chat(self, reward); + giveReward(self, speaker, questNum); + return SCRIPT_CONTINUE; } } - if (goodEscort = true) - { - string_id reward = new string_id(CONVO, "npc_reward_" + questNum); - chat.chat(self, speaker, reward); - giveReward(self, speaker, questNum); - return SCRIPT_CONTINUE; - } - else - { - string_id didnt = new string_id(CONVO, "npc_failure_" + questNum); - chat.chat(self, speaker, didnt); - return SCRIPT_CONTINUE; - } - } - else - { - string_id reward = new string_id(CONVO, "npc_reward_" + questNum); - chat.chat(self, speaker, reward); + + chat.chat(self, new string_id(CONVO, "npc_failure_" + questNum)); + missionFailure(self, speaker, questNum); + return SCRIPT_CONTINUE; + } else { + chat.chat(self, new string_id(CONVO, "npc_reward_" + questNum)); giveReward(self, speaker, questNum); return SCRIPT_CONTINUE; } } - else if (isOnQuest(speaker)) - { + //Assuming you had none of the above objvars you may be on a quest for someone else. This is where + //we get slick and let you quit out other quests from any quest NPC (just in case). + else if (isOnQuest(speaker)) { + // Whenever an NPC gives a player a quest he puts his datatable on the PC until it's done + // so that other NPC's can see it (like a brand) and say, "Hey you're busy." String player_quest_table = getStringObjVar(speaker, "quest_table"); - if (player_quest_table == null) - { + + // This indicates an issue, but is here for safety valve purposes + if (player_quest_table == null) { player_quest_table = "empty"; } - if (player_quest_table.equals(datatable)) - { + + // If the players table matches the NPC's table, then he's on a mission for this NPC, but doesn't + // have any objvars. This indicates that he's in the middle of a quest and the NPC gives him the + // option to quit out of the quest or continue on. + if (player_quest_table.equals(datatable)) { String npcGreet = "npc_work_" + questNum; String response1 = "player_reset_" + questNum; String response2 = "player_sorry_" + questNum; + string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[2]; + + string_id[] response = new string_id[2]; response[0] = new string_id(CONVO, response1); + String answer = getString(response[0]); - if (answer == null || answer.equals("")) - { + + if (answer == null || answer.equals("")) { response1 = "player_reset"; response[0] = new string_id(CONVO, response1); } response[1] = new string_id(CONVO, response2); - String answer2 = getString(response[0]); - if (answer == null || answer.equals("")) - { + + if (answer == null || answer.equals("")) { response2 = "player_sorry"; response[1] = new string_id(CONVO, response2); } npcStartConversation(speaker, self, "questConvo", greeting, response); } - else - { + // Otherwise the player may want to quit out of somebody else's quests to take this guy's quest + else { String npcGreet = "quit_quest"; String response1 = "player_quit"; String response2 = "player_continue"; + string_id greeting = new string_id("static_npc/default_dialog", npcGreet); - string_id response[] = new string_id[2]; + + string_id[] response = new string_id[2]; response[0] = new string_id("static_npc/default_dialog", response1); response[1] = new string_id("static_npc/default_dialog", response2); + npcStartConversation(speaker, self, "questConvo", greeting, response); } return SCRIPT_CONTINUE; - } - else if (dataTableHasColumn(datatable, "gating_level_amt")) - { + } else if (dataTableHasColumn(datatable, "gating_level_amt")) { int playerLevel = getLevel(speaker); int npcLevel = dataTableGetInt(datatable, questNum, "gating_level_amt"); - if (playerLevel < (npcLevel)) - { + + if (playerLevel < npcLevel) { String tooWeak = "too_weak"; string_id greeting = new string_id(ALT_CONVO, tooWeak); - chat.chat(self, speaker, greeting); - } - else if (playerLevel > (npcLevel + 5)) - { + chat.chat(self, greeting); + } else if (playerLevel > npcLevel + 5) { String tooStrong = "too_strong"; String response1 = "its_ok"; + string_id greeting = new string_id(ALT_CONVO, tooStrong); - string_id response[] = new string_id[1]; + + string_id[] response = new string_id[1]; response[0] = new string_id(ALT_CONVO, response1); + npcStartConversation(speaker, self, "questConvo", greeting, response); - } - else - { + } else { String npcGreet = "npc_1_" + questNum; String response1 = "player_1_" + questNum; String response2 = "player_2_" + questNum; String response3 = "player_3_" + questNum; + string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[3]; + + string_id[] response = new string_id[3]; response[0] = new string_id(CONVO, response1); response[1] = new string_id(CONVO, response2); response[2] = new string_id(CONVO, response3); + npcStartConversation(speaker, self, "questConvo", greeting, response); } - } - else if (convoType.equals("terse")) - { + + } else if (convoType.equals("terse")) { String npcGreet = "npc_1_" + questNum; String response1 = "player_1_" + questNum; String response2 = "player_2_" + questNum; + string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[2]; + + string_id[] response = new string_id[2]; response[0] = new string_id(CONVO, response1); response[1] = new string_id(CONVO, response2); + npcStartConversation(speaker, self, "questConvo", greeting, response); - } - else if (convoType.equals("long")) - { + } else if (convoType.equals("long")) { String npcGreet = "npc_1_" + questNum; String response1 = "player_1_" + questNum; String response2 = "player_2_" + questNum; String response3 = "player_3_" + questNum; String response4 = "player_4_" + questNum; + string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[4]; + + string_id[] response = new string_id[4]; response[0] = new string_id(CONVO, response1); response[1] = new string_id(CONVO, response2); response[2] = new string_id(CONVO, response3); response[3] = new string_id(CONVO, response4); npcStartConversation(speaker, self, "questConvo", greeting, response); - } - else if (convoType.equals("verbose")) - { + } else if (convoType.equals("verbose")) { String npcGreet = "npc_1_" + questNum; String response1 = "player_1_" + questNum; String response2 = "player_2_" + questNum; String response3 = "player_3_" + questNum; String response4 = "player_4_" + questNum; String response5 = "player_5_" + questNum; + string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[5]; + + string_id[] response = new string_id[5]; response[0] = new string_id(CONVO, response1); response[1] = new string_id(CONVO, response2); response[2] = new string_id(CONVO, response3); response[3] = new string_id(CONVO, response4); response[4] = new string_id(CONVO, response5); npcStartConversation(speaker, self, "questConvo", greeting, response); - } - else - { + } else { String npcGreet = "npc_1_" + questNum; String response1 = "player_1_" + questNum; String response2 = "player_2_" + questNum; String response3 = "player_3_" + questNum; + string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[3]; + + string_id[] response = new string_id[3]; response[0] = new string_id(CONVO, response1); response[1] = new string_id(CONVO, response2); response[2] = new string_id(CONVO, response3); + npcStartConversation(speaker, self, "questConvo", greeting, response); } return SCRIPT_CONTINUE; } - public int OnNpcConversationResponse(obj_id self, String convo, obj_id player, string_id response) throws InterruptedException - { + + public int OnNpcConversationResponse(obj_id self, String convo, obj_id player, string_id response) throws InterruptedException { String datatable = getStringObjVar(self, "quest_table"); datatable = "datatables/spawning/static_npc/" + datatable + ".iff"; String gatingString = dataTableGetString(datatable, 1, "overall_objvar"); + int gating = getIntObjVar(player, gatingString); int questNum = gating; String type = dataTableGetString(datatable, questNum, "quest_type"); String CONVO = dataTableGetString(datatable, questNum, "convo"); String ALT_CONVO = "static_npc/default_dialog"; String questID = dataTableGetString(datatable, questNum, "temp_objvar"); - String convoStyle = dataTableGetString(datatable, questNum, "quest_giver_convo"); - location home = new location(); - obj_id npcOrBldg = getTopMostContainer(self); - if (npcOrBldg == self) - { - home = getLocation(self); - } - else - { - home = getLocation(npcOrBldg); - } + + location home = getLocation(getTopMostContainer(self)); + String response1 = "player_1_" + questNum; String response2 = "player_2_" + questNum; String response3 = "player_3_" + questNum; @@ -509,85 +470,72 @@ public class quest_convo extends script.base_script String response10 = "player_sorry"; String response11 = "player_reset"; String response12 = "its_ok"; + String playerScript = dataTableGetString(datatable, questNum, "player_script"); - if ((response.getAsciiId()).equals(response1)) + + if (response.getAsciiId().equals(response1)) // { int xCoord = dataTableGetInt(datatable, questNum, "quest_x_loc"); - if (xCoord != 0) - { + if (xCoord != 0) { int yCoord = dataTableGetInt(datatable, questNum, "quest_y_loc"); int zCoord = dataTableGetInt(datatable, questNum, "quest_z_loc"); String planet = dataTableGetString(datatable, questNum, "quest_planet_loc"); + location questLoc = new location(xCoord, yCoord, zCoord, planet, null); - String npcAnswer1 = "npc_2_" + questNum; - string_id message = new string_id(CONVO, npcAnswer1); + + string_id message = new string_id(CONVO, "npc_2_" + questNum); npcSpeak(player, message); npcEndConversation(player); - if (questID != null && !questID.equals("")) - { + + if (questID != null && !questID.equals("")) { setObjVar(player, questID + ".questLoc", questLoc); setObjVar(player, questID + ".questNum", questNum); setObjVar(player, questID + ".home", home); setObjVar(player, "quest_table", datatable); attachScript(player, playerScript); - } - else - { + } else { debugSpeakMsg(self, "Sorry, I can't give you a job right now..."); return SCRIPT_OVERRIDE; } - if (type.equals("smuggle") || type.equals("deliver")) - { + + if (type.equals("smuggle") || type.equals("deliver")) { obj_id playerInv = utils.getInventoryContainer(player); String itemToDeliver = dataTableGetString(datatable, questNum, "deliver_object"); obj_id cargo = createObjectOverloaded(itemToDeliver, playerInv); - if (!isIdValid(cargo)) - { + if (!isIdValid(cargo)) { destroyObject(cargo); - string_id come_back = new string_id("generic_convo", "inv_full"); - npcSpeak(player, come_back); + npcSpeak(player, new string_id("generic_convo", "inv_full")); npcEndConversation(player); resetPlayer(self, player, questNum); return SCRIPT_OVERRIDE; } } - } - else - { + } else { location target = quests.getThemeParkLocation(self); - if (target == null) - { + if (target == null) { String noLoc = "npc_noloc_" + questNum; - string_id message = new string_id(CONVO, noLoc); - chat.chat(self, player, message); + chat.chat(self, new string_id(CONVO, noLoc)); npcEndConversation(player); return SCRIPT_CONTINUE; - } - else - { - if (questID != null && !questID.equals("")) - { + } else { + if (questID != null && !questID.equals("")) { setObjVar(player, questID + ".questLoc", target); setObjVar(player, questID + ".questNum", questNum); setObjVar(player, questID + ".home", home); setObjVar(player, "quest_table", datatable); attachScript(player, playerScript); - } - else - { + } else { debugSpeakMsg(self, "Sorry, I can't give you a job right now..."); return SCRIPT_OVERRIDE; } - if (type.equals("smuggle") || type.equals("deliver")) - { + + if (type.equals("smuggle") || type.equals("deliver")) { obj_id playerInv = utils.getInventoryContainer(player); String itemToDeliver = dataTableGetString(datatable, questNum, "deliver_object"); obj_id cargo = createObjectOverloaded(itemToDeliver, playerInv); - if (!isIdValid(cargo)) - { + if (!isIdValid(cargo)) { destroyObject(cargo); - string_id come_back = new string_id("generic_convo", "inv_full"); - npcSpeak(player, come_back); + npcSpeak(player, new string_id("generic_convo", "inv_full")); npcEndConversation(player); resetPlayer(self, player, questNum); return SCRIPT_OVERRIDE; @@ -601,445 +549,333 @@ public class quest_convo extends script.base_script } return SCRIPT_CONTINUE; } - if ((response.getAsciiId()).equals(response2)) + + if (response.getAsciiId().equals(response2)) // { String npcAnswer2 = "npc_3_" + questNum; - string_id message = new string_id(CONVO, npcAnswer2); + string_id message = new string_id(CONVO, npcAnswer2);// npcSpeak(player, message); npcEndConversation(player); return SCRIPT_CONTINUE; } - if ((response.getAsciiId()).equals(response3)) - { - npcRemoveConversationResponse(player, new string_id(CONVO, response3)); + if (response.getAsciiId().equals(response3)) { + npcRemoveConversationResponse(player, new string_id(CONVO, response3)); // String npcAnswer3 = "npc_4_" + questNum; - string_id message = new string_id(CONVO, npcAnswer3); + string_id message = new string_id(CONVO, npcAnswer3);// npcSpeak(player, message); return SCRIPT_CONTINUE; } - if ((response.getAsciiId()).equals(response4)) - { - npcRemoveConversationResponse(player, new string_id(CONVO, response4)); + if (response.getAsciiId().equals(response4)) { + npcRemoveConversationResponse(player, new string_id(CONVO, response4)); // String npcAnswer4 = "npc_5_" + questNum; - string_id message = new string_id(CONVO, npcAnswer4); + string_id message = new string_id(CONVO, npcAnswer4);// npcSpeak(player, message); return SCRIPT_CONTINUE; } - if ((response.getAsciiId()).equals(response5)) - { - npcRemoveConversationResponse(player, new string_id(CONVO, response5)); + if (response.getAsciiId().equals(response5)) { + npcRemoveConversationResponse(player, new string_id(CONVO, response5)); // String npcAnswer5 = "npc_6_" + questNum; - string_id message = new string_id(CONVO, npcAnswer5); + string_id message = new string_id(CONVO, npcAnswer5);// npcSpeak(player, message); return SCRIPT_CONTINUE; } - if ((response.getAsciiId()).equals(response6)) + if (response.getAsciiId().equals(response6)) // { String npcAnswer4 = "npc_backtowork_" + questNum; - string_id message = new string_id(CONVO, npcAnswer4); + string_id message = new string_id(CONVO, npcAnswer4);// npcSpeak(player, message); npcEndConversation(player); return SCRIPT_CONTINUE; } - if ((response.getAsciiId()).equals(response7)) + if (response.getAsciiId().equals(response7)) // { String npcAnswer5 = "npc_reset_" + questNum; - string_id message = new string_id(CONVO, npcAnswer5); + string_id message = new string_id(CONVO, npcAnswer5);// npcSpeak(player, message); resetPlayer(self, player, questNum); npcEndConversation(player); return SCRIPT_CONTINUE; } - if ((response.getAsciiId()).equals(response8)) + if (response.getAsciiId().equals(response8)) // { String npcAnswer6 = "npc_quit"; - string_id message = new string_id("static_npc/default_dialog", npcAnswer6); + string_id message = new string_id("static_npc/default_dialog", npcAnswer6);// npcSpeak(player, message); resetOtherQuest(self, player); npcEndConversation(player); return SCRIPT_CONTINUE; } - if ((response.getAsciiId()).equals(response9)) + if (response.getAsciiId().equals(response9)) // { String npcAnswer7 = "npc_continue"; - string_id message = new string_id("static_npc/default_dialog", npcAnswer7); + string_id message = new string_id("static_npc/default_dialog", npcAnswer7);// npcSpeak(player, message); npcEndConversation(player); return SCRIPT_CONTINUE; } - if ((response.getAsciiId()).equals(response10)) + if (response.getAsciiId().equals(response10)) // { String npcAnswer4 = "npc_backtowork_" + questNum; - string_id message = new string_id(CONVO, npcAnswer4); + string_id message = new string_id(CONVO, npcAnswer4);// npcSpeak(player, message); npcEndConversation(player); return SCRIPT_CONTINUE; } - if ((response.getAsciiId()).equals(response11)) + if (response.getAsciiId().equals(response11)) // { String npcAnswer5 = "npc_reset_" + questNum; - string_id message = new string_id(CONVO, npcAnswer5); + string_id message = new string_id(CONVO, npcAnswer5);// + String answer = getString(message); - if (answer == null || answer.equals("")) - { + + if (answer == null || answer.equals("")) { npcAnswer5 = "npc_reset"; message = new string_id(CONVO, npcAnswer5); } + npcSpeak(player, message); resetPlayer(self, player, questNum); npcEndConversation(player); return SCRIPT_CONTINUE; } - if ((response.getAsciiId()).equals(response12)) + if (response.getAsciiId().equals(response12)) // { String convoType = dataTableGetString(datatable, questNum, "quest_giver_convo"); + string_id message = new string_id(CONVO, "npc_1_" + questNum); + npcSpeak(player, message); + npcRemoveConversationResponse(player, new string_id(ALT_CONVO, response12)); + npcAddConversationResponse(player, new string_id(CONVO, "player_1_" + questNum)); + npcAddConversationResponse(player, new string_id(CONVO, "player_2_" + questNum)); + switch (convoType) { - case "terse": { - string_id message = new string_id(CONVO, "npc_1_" + questNum); - npcSpeak(player, message); - npcRemoveConversationResponse(player, new string_id(ALT_CONVO, response12)); - npcAddConversationResponse(player, new string_id(CONVO, "player_1_" + questNum)); - npcAddConversationResponse(player, new string_id(CONVO, "player_2_" + questNum)); + case "terse": return SCRIPT_CONTINUE; - } - case "long": { - string_id message = new string_id(CONVO, "npc_1_" + questNum); - npcSpeak(player, message); - npcRemoveConversationResponse(player, new string_id(ALT_CONVO, response12)); - npcAddConversationResponse(player, new string_id(CONVO, "player_1_" + questNum)); - npcAddConversationResponse(player, new string_id(CONVO, "player_2_" + questNum)); + case "long": npcAddConversationResponse(player, new string_id(CONVO, "player_3_" + questNum)); npcAddConversationResponse(player, new string_id(CONVO, "player_4_" + questNum)); return SCRIPT_CONTINUE; - } - case "verbose": { - string_id message = new string_id(CONVO, "npc_1_" + questNum); - npcSpeak(player, message); - npcRemoveConversationResponse(player, new string_id(ALT_CONVO, response12)); - npcAddConversationResponse(player, new string_id(CONVO, "player_1_" + questNum)); - npcAddConversationResponse(player, new string_id(CONVO, "player_2_" + questNum)); + case "verbose": npcAddConversationResponse(player, new string_id(CONVO, "player_3_" + questNum)); npcAddConversationResponse(player, new string_id(CONVO, "player_4_" + questNum)); npcAddConversationResponse(player, new string_id(CONVO, "player_5_" + questNum)); return SCRIPT_CONTINUE; - } - default: { - string_id message = new string_id(CONVO, "npc_1_" + questNum); - npcSpeak(player, message); - npcRemoveConversationResponse(player, new string_id(ALT_CONVO, response12)); - npcAddConversationResponse(player, new string_id(CONVO, "player_1_" + questNum)); - npcAddConversationResponse(player, new string_id(CONVO, "player_2_" + questNum)); + case "normal": npcAddConversationResponse(player, new string_id(CONVO, "player_3_" + questNum)); return SCRIPT_CONTINUE; - } } } return SCRIPT_CONTINUE; } - public void giveReward(obj_id self, obj_id player, int questNum) throws InterruptedException - { - String datatable = getStringObjVar(self, "quest_table"); - datatable = "datatables/spawning/static_npc/" + datatable + ".iff"; + + public void giveReward(obj_id self, obj_id player, int questNum) throws InterruptedException { + String datatable = "datatables/spawning/static_npc/" + getStringObjVar(self, "quest_table") + ".iff"; String questID = dataTableGetString(datatable, questNum, "temp_objvar"); String gatingString = dataTableGetString(datatable, questNum, "overall_objvar"); String playerScript = dataTableGetString(datatable, questNum, "player_script"); - int gating = getIntObjVar(player, gatingString); - gating = gating + 1; - setObjVar(player, gatingString, gating); + + setObjVar(player, gatingString, getIntObjVar(player, gatingString) + 1); + String type = dataTableGetString(datatable, questNum, "quest_type"); - if (type.equals("arrest") || type.equals("escort") || type.equals("rescue")) - { + if (type.equals("arrest") || type.equals("escort") || type.equals("rescue")) { obj_id vip = getObjIdObjVar(player, questID + ".vip"); messageTo(vip, "stopFollowing", null, 0, true); } + obj_id playerInv = utils.getInventoryContainer(player); - String reward = dataTableGetString(datatable, questNum, "reward"); - String reward2 = dataTableGetString(datatable, questNum, "reward2"); - String reward3 = dataTableGetString(datatable, questNum, "reward3"); - String reward4 = dataTableGetString(datatable, questNum, "reward4"); - if (reward != null && !reward.equals("") && !reward.equals("none")) - { - obj_id rewardObject = null; - if (reward.startsWith("object/weapon/")) - { - rewardObject = weapons.createWeapon(reward, playerInv, rand(0.5f, 0.85f)); + + String reward; + + obj_id rewardObject = null; + String objvar; + int value; + + for(int x = 1; x <= 4; x++) { + reward = dataTableGetString(datatable, questNum, "reward" + (x > 1 ? x : "")); + if(reward != null && !reward.equals("") && !reward.equals("none")) { + if (reward.startsWith("object/weapon/")) { + rewardObject = weapons.createWeapon(reward, playerInv, rand(0.5f, 0.85f)); + } else { + rewardObject = createObjectOverloaded(reward, playerInv); + } } - else - { - rewardObject = createObjectOverloaded(reward, playerInv); - } - sendSystemMessage(player, "A gift has been placed in your inventory for completing this task.", null); - String objvar = dataTableGetString(datatable, questNum, "reward_objvar"); - int value = dataTableGetInt(datatable, questNum, "reward_objvar_value"); - if (objvar != null) - { + + objvar = dataTableGetString(datatable, questNum, "reward_objvar"); + value = dataTableGetInt(datatable, questNum, "reward_objvar_value"); + + if (objvar != null) { setObjVar(rewardObject, objvar, value); } } - if (reward2 != null && !reward2.equals("") && !reward2.equals("none")) - { - obj_id rewardObject2 = null; - if (reward.startsWith("object/weapon/")) - { - rewardObject2 = weapons.createWeapon(reward2, playerInv, rand(0.5f, 0.85f)); - } - else - { - rewardObject2 = createObjectOverloaded(reward2, playerInv); - } + if(rewardObject != null) { sendSystemMessage(player, "A gift has been placed in your inventory for completing this task.", null); - String objvar2 = dataTableGetString(datatable, questNum, "reward2_objvar"); - int value2 = dataTableGetInt(datatable, questNum, "reward2_objvar_value"); - if (objvar2 != null) - { - setObjVar(rewardObject2, objvar2, value2); - } - } - if (reward3 != null && !reward3.equals("") && !reward3.equals("none")) - { - obj_id rewardObject3 = null; - if (reward.startsWith("object/weapon/")) - { - rewardObject3 = weapons.createWeapon(reward3, playerInv, rand(0.5f, 0.85f)); - } - else - { - rewardObject3 = createObjectOverloaded(reward3, playerInv); - } - sendSystemMessage(player, "A gift has been placed in your inventory for completing this task.", null); - String objvar3 = dataTableGetString(datatable, questNum, "reward3_objvar"); - int value3 = dataTableGetInt(datatable, questNum, "reward3_objvar_value"); - if (objvar3 != null) - { - setObjVar(rewardObject3, objvar3, value3); - } - } - if (reward4 != null && !reward4.equals("") && !reward4.equals("none")) - { - obj_id rewardObject4 = null; - if (reward.startsWith("object/weapon/")) - { - rewardObject4 = weapons.createWeapon(reward4, playerInv, rand(0.5f, 0.85f)); - } - else - { - rewardObject4 = createObjectOverloaded(reward4, playerInv); - } - sendSystemMessage(player, "A gift has been placed in your inventory for completing this task.", null); - String objvar4 = dataTableGetString(datatable, questNum, "reward4_objvar"); - int value4 = dataTableGetInt(datatable, questNum, "reward4_objvar_value"); - if (objvar4 != null) - { - setObjVar(rewardObject4, objvar4, value4); - } } + int credits = dataTableGetInt(datatable, questNum, "credits"); - if (credits != 0) - { + if (credits != 0) { money.bankTo(money.ACCT_JABBA, player, credits); sendSystemMessage(player, credits + " credits have been deposited in your bank account.", null); } - String factionReward = dataTableGetString(datatable, questNum, "faction reward"); - String factionReward2 = dataTableGetString(datatable, questNum, "faction_reward2"); - String factionReward3 = dataTableGetString(datatable, questNum, "faction_reward3"); - String factionReward4 = dataTableGetString(datatable, questNum, "faction_reward4"); - if (!factionReward.equals("none")) - { - int factionAmt = dataTableGetInt(datatable, questNum, "faction_reward_amount"); - if (factionAmt != 0) - { - factions.addFactionStanding(player, factionReward, factionAmt); - } - } - if (!factionReward2.equals("none")) - { - int factionAmt2 = dataTableGetInt(datatable, questNum, "faction_reward2_amount"); - if (factionAmt2 != 0) - { - factions.addFactionStanding(player, factionReward2, factionAmt2); - } - } - if (!factionReward3.equals("none")) - { - int factionAmt3 = dataTableGetInt(datatable, questNum, "faction_reward3_amount"); - if (factionAmt3 != 0) - { - factions.addFactionStanding(player, factionReward3, factionAmt3); - } - } - if (!factionReward4.equals("none")) - { - int factionAmt4 = dataTableGetInt(datatable, questNum, "faction_reward4_amount"); - if (factionAmt4 != 0) - { - factions.addFactionStanding(player, factionReward4, factionAmt4); + + String factionReward; + + for(int x = 1; x <= 4; x++) { + factionReward = dataTableGetString(datatable, questNum, "faction reward" + (x > 1 ? x : "")); + if(!factionReward.equals("none")) { + int factionAmt = dataTableGetInt(datatable, questNum, "faction_reward" + (x > 1 ? x : "") + "_amount"); + if (factionAmt != 0) { + factions.addFactionStanding(player, factionReward, factionAmt); + } } } + obj_id waypoint = getObjIdObjVar(player, questID + ".waypointhome"); - if (waypoint != null) - { + if (waypoint != null) { destroyWaypointInDatapad(waypoint, player); } + removeObjVar(player, questID); removeObjVar(player, "quest_table"); removeObjVar(player, "questNum"); - if (hasScript(player, playerScript)) - { + + if (hasScript(player, playerScript)) { detachScript(player, playerScript); } - return; } - public void resetPlayer(obj_id self, obj_id player, int questNum) throws InterruptedException - { - String datatable = getStringObjVar(self, "quest_table"); - datatable = "datatables/spawning/static_npc/" + datatable + ".iff"; + + public void resetPlayer(obj_id self, obj_id player, int questNum) { + String datatable = "datatables/spawning/static_npc/" + getStringObjVar(self, "quest_table") + ".iff"; String questID = dataTableGetString(datatable, questNum, "temp_objvar"); - String gatingString = dataTableGetString(datatable, questNum, "overall_objvar"); String playerScript = dataTableGetString(datatable, questNum, "player_script"); + + //DO SOMETHING WITH GATING HERE, IF IT'S 1 REMOVE IT, OTHER WISE MAKE SURE IT'S RIGHT + obj_id waypoint = getObjIdObjVar(player, questID + ".waypoint"); - if (waypoint != null) - { + if (waypoint != null) { destroyWaypointInDatapad(waypoint, player); } + String type = dataTableGetString(datatable, questNum, "quest_type"); - if (type.equals("escort") || type.equals("arrest")) - { + if (type.equals("escort") || type.equals("arrest")) { obj_id vip = getObjIdObjVar(player, questID + ".vip"); messageTo(vip, "stopFollowing", null, 0, true); } + removeObjVar(player, questID); removeObjVar(player, "quest_table"); removeObjVar(player, "questNum"); - if (hasScript(player, playerScript)) - { + + if (hasScript(player, playerScript)) { detachScript(player, playerScript); } - return; } - public boolean checkForItem(obj_id inv, obj_id player, int questNum) throws InterruptedException - { + + public boolean checkForItem(obj_id inv, obj_id player, int questNum) throws InterruptedException { String datatable = getStringObjVar(player, "quest_table"); String giveMe = dataTableGetString(datatable, questNum, "retrieve_object"); - boolean hadIt = false; - hadIt = utils.playerHasItemByTemplate(player, giveMe); - return hadIt; + + return utils.playerHasItemByTemplate(player, giveMe); } - public boolean checkForGatingItem(obj_id inv, obj_id player, int questNum, String datatable) throws InterruptedException - { - String giveMe = dataTableGetString(datatable, questNum, "gating_object"); - boolean hadIt = false; - hadIt = utils.playerHasItemByTemplate(player, giveMe); - return hadIt; + + public boolean checkForGatingItem(obj_id inv, obj_id player, int questNum, String datatable) throws InterruptedException { + return utils.playerHasItemByTemplate(player, dataTableGetString(datatable, questNum, "gating_object")); } - public void missionFailure(obj_id self, obj_id player, int questNum) throws InterruptedException - { - String datatable = getStringObjVar(self, "quest_table"); - datatable = "datatables/spawning/static_npc/" + datatable + ".iff"; + + public void missionFailure(obj_id self, obj_id player, int questNum) { + String datatable = "datatables/spawning/static_npc/" + getStringObjVar(self, "quest_table") + ".iff"; String questID = dataTableGetString(datatable, questNum, "temp_objvar"); - String gatingString = dataTableGetString(datatable, questNum, "overall_objvar"); String playerScript = dataTableGetString(datatable, questNum, "player_script"); + obj_id waypoint = getObjIdObjVar(player, questID + ".waypointhome"); - if (waypoint != null) - { + if (waypoint != null) { destroyWaypointInDatapad(waypoint, player); } + String type = dataTableGetString(datatable, questNum, "quest_type"); - if (type.equals("escort") || type.equals("arrest")) - { + if (type.equals("escort") || type.equals("arrest")) { obj_id vip = getObjIdObjVar(player, questID + ".vip"); messageTo(vip, "stopFollowing", null, 0, true); } + removeObjVar(player, questID); removeObjVar(player, "quest_table"); removeObjVar(player, "questNum"); - if (hasScript(player, playerScript)) - { + + if (hasScript(player, playerScript)) { detachScript(player, playerScript); } - return; } - public void resetOtherQuest(obj_id self, obj_id player) throws InterruptedException - { + + //const string FACETO_VOLUME_NAME = "faceToTriggerVolume"; + //createTriggerVolume( FACETO_VOLUME_NAME, 8.0f, true ); + public int OnTriggerVolumeEntered(obj_id self, String volumeName, obj_id breacher) { + if (!isPlayer(breacher) || !volumeName.equals(FACETO_VOLUME_NAME) || isInNpcConversation(self)) + return SCRIPT_CONTINUE; + + if (canSee(self, breacher)) + faceTo(self, breacher); + + return SCRIPT_CONTINUE; + } + + public void resetOtherQuest(obj_id self, obj_id player) { String datatable = "datatables/npc/static_quest/all_quest_names.iff"; String[] questIDs = dataTableGetStringColumnNoDefaults(datatable, "quest_ids"); - if (questIDs == null) - { + + if (questIDs == null) { return; } + for (String questID : questIDs) { if (hasObjVar(player, questID + ".waypoint")) { obj_id waypoint = getObjIdObjVar(player, questID + ".waypoint"); + if (waypoint != null) { destroyWaypointInDatapad(waypoint, player); } + obj_id waypointhome = getObjIdObjVar(player, questID + ".waypointhome"); + if (waypointhome != null) { destroyWaypointInDatapad(waypointhome, player); } + } + if (hasObjVar(player, questID + ".escort")) { obj_id vip = getObjIdObjVar(player, questID + ".escort"); messageTo(vip, "stopFollowing", null, 2, true); } + if (hasObjVar(player, questID)) { removeObjVar(player, questID); } } + String[] questScripts = dataTableGetStringColumnNoDefaults(datatable, "quest_scripts"); - if (questScripts == null) - { + + if (questScripts == null) { return; } + for (String questScript : questScripts) { if (hasScript(player, questScript)) { detachScript(player, questScript); } } + removeObjVar(player, "quest_table"); removeObjVar(player, "questNum"); - return; } - public boolean isOnQuest(obj_id player) throws InterruptedException - { - if (hasScript(player, "npc.static_quest.quest_player")) - { - return true; - } - if (hasScript(player, "npc.random_quest.quest_player")) - { - return true; - } - if (hasScript(player, "theme_park.imperial.quest_player")) - { - return true; - } - if (hasScript(player, "theme_park.rebel.quest_player")) - { - return true; - } - if (hasScript(player, "theme_park.jabba.quest_player")) - { - return true; - } - if (hasScript(player, "theme_park.jabba.quest_bldg")) - { - return true; - } - if (hasScript(player, "theme_park.jabba.quest_rantok")) - { - return true; - } - if (hasScript(player, "theme_park.rebel.quest_bldg")) - { - return true; - } - if (hasScript(player, "theme_park.imperial.quest_bldg")) - { - return true; - } - else - { - return false; - } + + public boolean isOnQuest(obj_id player) { + return hasScript(player, "npc.static_quest.quest_player") || + hasScript(player, "npc.random_quest.quest_player") || + hasScript(player, "theme_park.imperial.quest_player") || + hasScript(player, "theme_park.rebel.quest_player") || + hasScript(player, "theme_park.jabba.quest_player") || + hasScript(player, "theme_park.jabba.quest_bldg") || + hasScript(player, "theme_park.jabba.quest_rantok") || + hasScript(player, "theme_park.rebel.quest_bldg") || + hasScript(player, "theme_park.imperial.quest_bldg"); } } diff --git a/sku.0/sys.server/compiled/game/script/npc/static_quest/quest_npc.java b/sku.0/sys.server/compiled/game/script/npc/static_quest/quest_npc.java index 6424c741e..c0368c54b 100755 --- a/sku.0/sys.server/compiled/game/script/npc/static_quest/quest_npc.java +++ b/sku.0/sys.server/compiled/game/script/npc/static_quest/quest_npc.java @@ -20,44 +20,53 @@ public class quest_npc extends script.base_script } public int OnStartNpcConversation(obj_id self, obj_id speaker) throws InterruptedException { - String datatable = getStringObjVar(self, "quest_table"); - int questNum = getIntObjVar(self, "questNum"); - String CONVO = dataTableGetString(datatable, questNum, "convo"); - String questID = dataTableGetString(datatable, questNum, "temp_objvar"); - String type = dataTableGetString(datatable, questNum, "quest_type"); - String convoType = dataTableGetString(datatable, questNum, "quest_npc_convo"); - faceTo(self, speaker); + String datatable = getStringObjVar (self, "quest_table"); + int questNum = getIntObjVar (self, "questNum"); + String CONVO = dataTableGetString (datatable, questNum, "convo"); + String questID = dataTableGetString (datatable, questNum, "temp_objvar"); + String type = dataTableGetString (datatable, questNum, "quest_type"); + String convoType = dataTableGetString (datatable, questNum, "quest_npc_convo"); + convoType = "terse"; //HackityHackHackHack. Until we can fix all the datatables, everybody speaks terse. + + faceTo( self, speaker ); + if (ai_lib.isInCombat(self) || ai_lib.isInCombat(speaker)) - { return SCRIPT_OVERRIDE; - } - if (hasObjVar(speaker, questID + ".vip")) + + if (hasObjVar (speaker, questID + ".vip")) { - obj_id courier = getObjIdObjVar(speaker, questID + ".vip"); + obj_id courier = getObjIdObjVar (speaker, questID + ".vip"); if (courier == self) { + String npcGreet, response1, response2, response3; + string_id greeting; + string_id[] response; + switch (type) { case "escort": case "arrest": case "rescue": { String reward = "npc_takeme_" + questNum; string_id message = new string_id(CONVO, reward); - chat.chat(self, speaker, message); + chat.chat(self, message); dictionary parms = new dictionary(); parms.put("player", speaker); messageTo(self, "followPlayer", parms, 0, true); - if (convoType.equals("terse")) { - if (!hasObjVar(self, "SentFinishMsg")) { - messageTo(speaker, "finishStaticQuest", null, 0, true); - setObjVar(self, "SentFinishMsg", 1); - } - } + switch (convoType) { - case "normal": { - String npcGreet = "npc_takeme_" + questNum; - String response1 = "player_more_1_" + questNum; - string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[1]; + case "terse": + if (!hasObjVar(self, "SentFinishMsg")) { + messageTo(speaker, "finishStaticQuest", null, 0, true); + setObjVar(self, "SentFinishMsg", 1); + } + break; + case "normal": + npcGreet = "npc_takeme_" + questNum; + response1 = "player_more_1_" + questNum; + + greeting = new string_id(CONVO, npcGreet); + + response = new string_id[1]; response[0] = new string_id(CONVO, response1); if (!hasObjVar(self, "SentFinishMsg")) { messageTo(speaker, "finishStaticQuest", null, 0, true); @@ -65,13 +74,14 @@ public class quest_npc extends script.base_script } npcStartConversation(speaker, self, "questConvo", greeting, response); break; - } - case "extended": { - String npcGreet = "npc_takeme_" + questNum; - String response1 = "player_more_1_" + questNum; - String response2 = "player_more_2_" + questNum; - string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[2]; + case "extended": + npcGreet = "npc_takeme_" + questNum; + response1 = "player_more_1_" + questNum; + response2 = "player_more_2_" + questNum; + + greeting = new string_id(CONVO, npcGreet); + + response = new string_id[2]; response[0] = new string_id(CONVO, response1); response[1] = new string_id(CONVO, response2); if (!hasObjVar(self, "SentFinishMsg")) { @@ -80,14 +90,14 @@ public class quest_npc extends script.base_script } npcStartConversation(speaker, self, "questConvo", greeting, response); break; - } - case "verbose": { - String npcGreet = "npc_1_" + questNum; - String response1 = "player_more_1_" + questNum; - String response2 = "player_more_2_" + questNum; - String response3 = "player_more_3_" + questNum; - string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[3]; + case "verbose": + npcGreet = "npc_1_" + questNum; + response1 = "player_more_1_" + questNum; + response2 = "player_more_2_" + questNum; + response3 = "player_more_3_" + questNum; + greeting = new string_id(CONVO, npcGreet); + + response = new string_id[3]; response[0] = new string_id(CONVO, response1); response[1] = new string_id(CONVO, response2); response[2] = new string_id(CONVO, response3); @@ -97,7 +107,6 @@ public class quest_npc extends script.base_script } npcStartConversation(speaker, self, "questConvo", greeting, response); break; - } default: return SCRIPT_OVERRIDE; } @@ -106,68 +115,77 @@ public class quest_npc extends script.base_script case "smuggle": case "deliver": { obj_id playerInv = utils.getInventoryContainer(speaker); - if (checkForItem(playerInv, speaker, questNum) == true || hasObjVar(speaker, questID + ".done")) { + if (checkForItem(playerInv, speaker, questNum) || hasObjVar(speaker, questID + ".done")) { if (!hasObjVar(speaker, questID + ".done")) { messageTo(speaker, "finishStaticQuest", null, 0, true); setObjVar(self, "SentFinishMsg", 1); } - if (convoType.equals("terse")) { - string_id npcGreet = new string_id(CONVO, "npc_smuggle_" + questNum); - chat.chat(self, speaker, npcGreet); - return SCRIPT_CONTINUE; - } + switch (convoType) { - case "normal": { - String npcGreet = "npc_smuggle_" + questNum; - String response1 = "player_more_1_" + questNum; - string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[1]; + case "terse": + greeting = new string_id(CONVO, "npc_smuggle_" + questNum); + chat.chat(self, greeting); + return SCRIPT_CONTINUE; + case "normal": + npcGreet = "npc_smuggle_" + questNum; + response1 = "player_more_1_" + questNum; + + greeting = new string_id(CONVO, npcGreet); + + response = new string_id[1]; response[0] = new string_id(CONVO, response1); + npcStartConversation(speaker, self, "questConvo", greeting, response); break; - } - case "extended": { - String npcGreet = "npc_smuggle_" + questNum; - String response1 = "player_more_1_" + questNum; - String response2 = "player_more_2_" + questNum; - string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[2]; + case "extended": + npcGreet = "npc_smuggle_" + questNum; + response1 = "player_more_1_" + questNum; + response2 = "player_more_2_" + questNum; + + greeting = new string_id(CONVO, npcGreet); + + response = new string_id[2]; response[0] = new string_id(CONVO, response1); response[1] = new string_id(CONVO, response2); + npcStartConversation(speaker, self, "questConvo", greeting, response); break; - } - case "verbose": { - String npcGreet = "npc_smuggle_" + questNum; - String response1 = "player_more_1_" + questNum; - String response2 = "player_more_2_" + questNum; - String response3 = "player_more_3_" + questNum; - string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[3]; + case "verbose": + npcGreet = "npc_smuggle_" + questNum; + response1 = "player_more_1_" + questNum; + response2 = "player_more_2_" + questNum; + response3 = "player_more_3_" + questNum; + greeting = new string_id(CONVO, npcGreet); + + response = new string_id[3]; response[0] = new string_id(CONVO, response1); response[1] = new string_id(CONVO, response2); response[2] = new string_id(CONVO, response3); npcStartConversation(speaker, self, "questConvo", greeting, response); break; - } } } else { string_id work = new string_id(CONVO, "gotowork"); String working = getString(work); + if (working == null || working.equals("")) { work = new string_id(CONVO, "gotowork_" + questNum); } - chat.chat(self, speaker, work); + + chat.chat(self, work); return SCRIPT_CONTINUE; + } break; } case "retrieve": { obj_id playerInv = utils.getInventoryContainer(speaker); + if (!hasObjVar(speaker, questID + ".done")) { messageTo(speaker, "finishStaticQuest", null, 0, true); setObjVar(self, "SentFinishMsg", 1); String pickup = dataTableGetString(datatable, questNum, "retrieve_object"); + if (pickup == null) { pickup = "none"; } @@ -175,74 +193,82 @@ public class quest_npc extends script.base_script obj_id cargo = createObject(pickup, playerInv, ""); setObjVar(speaker, questID + ".deliver", cargo); } - if (convoType.equals("terse")) { - String npcGreet = "npc_smuggle_" + questNum; - string_id greeting = new string_id(CONVO, npcGreet); - chat.chat(self, speaker, greeting); - npcEndConversation(speaker); - } + switch (convoType) { - case "normal": { - String npcGreet = "npc_smuggle_" + questNum; - String response1 = "player_more_1_" + questNum; - string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[1]; + case "terse": + npcGreet = "npc_smuggle_" + questNum; + + greeting = new string_id(CONVO, npcGreet); + chat.chat(self, greeting); + npcEndConversation(speaker); + break; + case "normal": + npcGreet = "npc_smuggle_" + questNum; + response1 = "player_more_1_" + questNum; + + greeting = new string_id(CONVO, npcGreet); + + response = new string_id[1]; response[0] = new string_id(CONVO, response1); + npcStartConversation(speaker, self, "questConvo", greeting, response); break; - } - case "extended": { - String npcGreet = "npc_smuggle_" + questNum; - String response1 = "player_more_1_" + questNum; - String response2 = "player_more_2_" + questNum; - string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[2]; + case "extended": + npcGreet = "npc_smuggle_" + questNum; + response1 = "player_more_1_" + questNum; + response2 = "player_more_2_" + questNum; + + greeting = new string_id(CONVO, npcGreet); + + response = new string_id[2]; response[0] = new string_id(CONVO, response1); response[1] = new string_id(CONVO, response2); + npcStartConversation(speaker, self, "questConvo", greeting, response); break; - } - case "verbose": { - String npcGreet = "npc_smuggle_" + questNum; - String response1 = "player_more_1_" + questNum; - String response2 = "player_more_2_" + questNum; - String response3 = "player_more_3_" + questNum; - string_id greeting = new string_id(CONVO, npcGreet); - string_id response[] = new string_id[3]; + case "verbose": + npcGreet = "npc_smuggle_" + questNum; + response1 = "player_more_1_" + questNum; + response2 = "player_more_2_" + questNum; + response3 = "player_more_3_" + questNum; + greeting = new string_id(CONVO, npcGreet); + + response = new string_id[3]; response[0] = new string_id(CONVO, response1); response[1] = new string_id(CONVO, response2); response[2] = new string_id(CONVO, response3); npcStartConversation(speaker, self, "questConvo", greeting, response); break; - } } } else { string_id work = new string_id(CONVO, "gotowork"); String working = getString(work); + if (working == null || working.equals("")) { work = new string_id(CONVO, "gotowork_" + questNum); } - chat.chat(self, speaker, work); + + chat.chat(self, work); return SCRIPT_CONTINUE; + } break; } } - return SCRIPT_CONTINUE; + } - else + else { string_id work = new string_id(CONVO, "otherescort"); - chat.chat(self, speaker, work); - return SCRIPT_CONTINUE; + chat.chat (self, work); } } - else + else { - string_id blah = new string_id(CONVO, "dontknowyou_" + questNum); - chat.chat(self, speaker, blah); - return SCRIPT_CONTINUE; + string_id blah = new string_id (CONVO, "dontknowyou_" + questNum); + chat.chat (self, blah); } + return SCRIPT_CONTINUE; } public int OnNpcConversationResponse(obj_id self, String convo, obj_id player, string_id response) throws InterruptedException { @@ -307,7 +333,7 @@ public class quest_npc extends script.base_script case "destroy": messageTo(player, "finishStaticQuest", null, 0, true); setObjVar(self, "SentFinishMsg", 1); - return SCRIPT_CONTINUE; + break; case "fetch": String reward = dataTableGetString(datatable, questNum, "retrieve_object"); obj_id playerInv = utils.getInventoryContainer(player); @@ -315,7 +341,7 @@ public class quest_npc extends script.base_script setObjVar(player, questID + ".deliver", cargo); messageTo(player, "finishStaticQuest", null, 0, true); setObjVar(self, "SentFinishMsg", 1); - return SCRIPT_CONTINUE; + break; case "rescue": case "escort": case "arrest": @@ -341,15 +367,21 @@ public class quest_npc extends script.base_script { String datatable = getStringObjVar(self, "quest_table"); datatable = "datatables/spawning/static_npc/" + datatable + ".iff"; + int questNum = getIntObjVar(self, "questNum"); String questID = dataTableGetString(datatable, questNum, "temp_objvar"); String playerScript = dataTableGetString(datatable, questNum, "player_script"); + debugSpeakMsg(self, "So, this is it..."); + obj_id player = params.getObjId("player"); ai_lib.aiStopFollowing(self); + detachScript(player, playerScript); setInvulnerable(self, true); + messageTo(self, "cleanUp", null, 30, true); + if (questID != null && !questID.equals("")) { setObjVar(player, questID + ".done", 1); @@ -377,13 +409,14 @@ public class quest_npc extends script.base_script detachScript(self, "systems.gcw.gcw_vehicle_patrol"); setInvulnerable(self, false); } - else if (!isStaticObject && type.equals("info") + else if (!isStaticObject && ( + type.equals("info") || type.equals("rescue") || type.equals("smuggle") || type.equals("deliver") || type.equals("arrest") || type.equals("escort") - || type.equals("retrieve")) + || type.equals("retrieve"))) { setWantSawAttackTriggers(self, false); attachScript(self, "npc.converse.npc_converse_menu"); @@ -395,26 +428,23 @@ public class quest_npc extends script.base_script } public int saySomething(obj_id self, dictionary params) throws InterruptedException { - String datatable = getStringObjVar(self, "quest_table"); - int questNum = getIntObjVar(self, "questNum"); - String type = dataTableGetString(datatable, questNum, "quest_type"); if(getBooleanObjVar(self, "isStaticObject")){ return SCRIPT_CONTINUE; } + + String datatable = getStringObjVar(self, "quest_table"); + int questNum = getIntObjVar(self, "questNum"); + String type = dataTableGetString(datatable, questNum, "quest_type"); + String CONVO = dataTableGetString(datatable, questNum, "convo"); String something = "npc_breech_" + questNum; string_id message = new string_id(CONVO, something); String check = getString(message); obj_id player = getObjIdObjVar(self, "player"); - if (check != null) + + if (check != null && !check.equals("") && ai_lib.isNpc(self)) { - if (!check.equals("")) - { - if (ai_lib.isNpc(self)) - { - chat.chat(self, player, message); - } - } + chat.chat(self, player, message); } if (type.equals("destroy") || type.equals("fetch")) { @@ -430,15 +460,15 @@ public class quest_npc extends script.base_script String playerScript = dataTableGetString(datatable, questNum, "player_script"); String questID = dataTableGetString(datatable, questNum, "temp_objvar"); String reward = dataTableGetString(datatable, questNum, "reward"); + if (reward.equals("credits")) { money.bankTo(money.ACCT_JABBA, player, 100); - } - else - { + } else { obj_id playerInv = utils.getInventoryContainer(player); createObject(reward, playerInv, ""); } + if (questID != null && !questID.equals("")) { setObjVar(player, questID + ".done", 1); @@ -452,16 +482,14 @@ public class quest_npc extends script.base_script { String datatable = getStringObjVar(player, "quest_table"); String giveMe = dataTableGetString(datatable, questNum, "deliver_object"); - boolean hadIt = false; obj_id[] contents = getContents(inv); - for (obj_id content : contents) { - String itemInInventory = getTemplateName(content); - if (itemInInventory.equals(giveMe)) { - destroyObject(content); - hadIt = true; + for (obj_id item : contents) { + if (getTemplateName(item).equals(giveMe)) { + destroyObject(item); + return true; } } - return hadIt; + return false; } public int spawnExtras(obj_id self, dictionary params) throws InterruptedException { @@ -469,21 +497,23 @@ public class quest_npc extends script.base_script String datatable = getStringObjVar(self, "quest_table"); int questNum = getIntObjVar(self, "questNum"); location here = getLocation(self); + String npcNum = ""; + String spawn, disposition; + obj_id extra; for(int i = 1; i <= 4; i++) { - String npcNum = ""; - if(i > 1) npcNum = npcNum + i; - String spawn = dataTableGetString(datatable, questNum, "extra_npc" + npcNum); + spawn = dataTableGetString(datatable, questNum, "extra_npc" + npcNum); if (!spawn.equals("none")) { here.x = here.x + rand(5, 20); here.z = here.z + rand(5, 20); - obj_id extra = create.object(spawn, here); + extra = create.object(spawn, here); if (isValidId(extra)) { - String disposition = dataTableGetString(datatable, questNum, "extra_npc" + npcNum + "_disposition"); + disposition = dataTableGetString(datatable, questNum, "extra_npc" + npcNum + "_disposition"); if (disposition.equals("aggro")) { startCombat(extra, player); } } } + npcNum = "" + (i + 1); } return SCRIPT_CONTINUE; }