From 5cd90a4cec647c97621d1704f6d090efa7e52ed0 Mon Sep 17 00:00:00 2001 From: Waverunner Date: Wed, 27 Aug 2014 20:24:44 -0400 Subject: [PATCH] Added "Bib's Offer" Quest --- scripts/conversation/quests/tatooine/vourk.py | 153 ++++++++++++++++++ .../mobiles/generic/static/tatooine/vourk.py | 2 +- .../mobile/dressed_tatooine_opening_santos.py | 1 + .../events/signals/tat_eisley_legacy_e2.py | 9 ++ scripts/static_spawns/tatooine/mos_eisley.py | 4 +- .../tatooine/mos_eisley_quest.py | 8 +- 6 files changed, 169 insertions(+), 8 deletions(-) create mode 100644 scripts/conversation/quests/tatooine/vourk.py create mode 100644 scripts/quests/events/signals/tat_eisley_legacy_e2.py diff --git a/scripts/conversation/quests/tatooine/vourk.py b/scripts/conversation/quests/tatooine/vourk.py new file mode 100644 index 00000000..32e8c846 --- /dev/null +++ b/scripts/conversation/quests/tatooine/vourk.py @@ -0,0 +1,153 @@ +from resources.common import ConversationOption +from resources.common import OutOfBand +from resources.common import ProsePackage +from java.util import Vector +import sys + +def startConversation(core, actor, npc): + player = actor.getPlayerObject() + + if player is None: + return + + quest = player.getQuest('tatooine_eisley_legacy') + + if quest is None: + endConversation(core, actor, npc) + return + + # Check if player finished the main talking quest, if they did then handle mayor and trehla return/not yet started options + if quest.isCompleted() == True: + + if player.getQuest('tatooine_eisley_gotoniko') is not None: + core.conversationService.sendStopConversation(actor, npc, '@conversation/c_newbie_secondchance', 's_59') + return + + mayorVourk = player.getQuest('newbie_goto_vourk') + if mayorVourk is not None: + if mayorVourk.isCompleted() == False: + # TODO: Mayor return conv. options + return + else: + endConversation(core, actor, npc) + return + + trehlaVourk = player.getQuest('return_to_vourk') + if trehlaVourk is not None: + if trehlaVourk.isCompleted() == False: + # TODO: Trehla return conv. options + return + else: + endConversation(core, actor, npc) + return + + # Player doesn't have a return quest... Now we will check if they have any active quests for these.. + preTrehla = player.getQuest('tatooine_eisley_gototrehla_v2') + if preTrehla is not None: + if preTrehla.isCompleted() == False: + core.conversationService.sendStopConversation(actor, npc, '@conversation/c_newbie_secondchance', 's_61') + elif hasActiveTrehlaQuest(core, actor, npc, player) == True: # True = has a pre-quest to return quests + core.conversationService.sendStopConversation(actor, npc, '@conversation/c_newbie_secondchance', 's_61') + return + + # Trehla checks failed, has to be on Mayor quests. + endConversation(core, actor, npc) + return + + if quest.getActiveTask() == 2: + options = Vector() + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_118'), 0)) + core.conversationService.sendConversationMessage(actor, npc, OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_116')) + core.conversationService.sendConversationOptions(actor, npc, options, handleOptionsOne) + return + + endConversation(core, actor, npc) + return + +def handleOptionsOne(core, actor, npc, selection): + options = Vector() + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_122'), 0)) + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_170'), 1)) + core.conversationService.sendConversationMessage(actor, npc, OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_120')) + core.conversationService.sendConversationOptions(actor, npc, options, handleOptionsTwo) + return + +def handleOptionsTwo(core, actor, npc, selection): + if (selection == 0): # So what do I do now? + options = Vector() + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_68'), 0)) + core.conversationService.sendConversationMessage(actor, npc, OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_66')) + core.conversationService.sendConversationOptions(actor, npc, options, handleOptionsThree) + return + + elif (selection == 1): # I'm not doing anything you ask + options = Vector() + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_122'), 0)) + core.conversationService.sendConversationMessage(actor, npc, OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_172')) + core.conversationService.sendConversationOptions(actor, npc, options, handleOptionsTwo) + return + return + +def handleOptionsThree(core, actor, npc, selection): + options = Vector() + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_72'), 0)) + core.conversationService.sendConversationMessage(actor, npc, OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_70')) + core.conversationService.sendConversationOptions(actor, npc, options, handleOptionsFour) + return + +def handleOptionsFour(core, actor, npc, selection): + options = Vector() + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_76'), 0)) + core.conversationService.sendConversationMessage(actor, npc, OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_74')) + core.conversationService.sendConversationOptions(actor, npc, options, handleOptionsFive) + return + +def handleOptionsFive(core, actor, npc, selection): + options = Vector() + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_83'), 0)) + core.conversationService.sendConversationMessage(actor, npc, OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_79')) + core.conversationService.sendConversationOptions(actor, npc, options, handleOptionsSix) + return + +def handleOptionsSix(core, actor, npc, selection): + options = Vector() + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_134'), 0)) + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_138'), 1)) + #options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_142'), 2)) + core.conversationService.sendConversationMessage(actor, npc, OutOfBand.ProsePackage('@conversation/c_newbie_secondchance:s_132')) + core.conversationService.sendConversationOptions(actor, npc, options, handleOptionsSeven) + return + +def handleOptionsSeven(core, actor, npc, selection): + print ('selection 7: ' + str(selection)) + if (selection == 0): # Ok, I'll do what he says. + quest = actor.getPlayerObject().getQuest('tatooine_eisley_legacy') + + if (actor.getLevel() >= 10): + core.questService.activateQuest(actor, 'quest/tatooine_eisley_gotoniko') + return + else: + core.questService.activateQuest(actor, 'quest/tatooine_eisley_gotomayor') + return + + core.questService.handleActivateSignal(actor, npc, quest, 2) + core.conversationService.sendStopConversation(actor, npc, '@conversation/c_newbie_secondchance', 's_136') + return + elif (selection == 1): # But I don't know anything about Mos Eisley! + quest = actor.getPlayerObject().getQuest('tatooine_eisley_legacy') + core.questService.handleActivateSignal(actor, npc, quest, 2) + return + #else if (selection == 2): # What if he asks me to fly a ship for him? + #return + return + +def endConversation(core, actor, npc): + core.conversationService.sendStopConversation(actor, npc, '@conversation/c_newbie_secondchance', 's_200') + return + +def hasActiveTrehlaQuest(core, actor, npc, player): + qTrehla = player.getQuest('c_newbie_quest1a') + if qTrehla is not None: + if qTrehla.isCompleted() == False: + return True + return False \ No newline at end of file diff --git a/scripts/mobiles/generic/static/tatooine/vourk.py b/scripts/mobiles/generic/static/tatooine/vourk.py index 0702bed2..6082cc8d 100644 --- a/scripts/mobiles/generic/static/tatooine/vourk.py +++ b/scripts/mobiles/generic/static/tatooine/vourk.py @@ -14,7 +14,7 @@ def addTemplate(core): mobileTemplate.setLevel(1) mobileTemplate.setDifficulty(Difficulty.NORMAL) mobileTemplate.setSocialGroup("township") - mobileTemplate.setOptionsBitmask(Options.INVULNERABLE) + mobileTemplate.setOptionsBitmask(Options.INVULNERABLE | Options.CONVERSABLE) templates = Vector() templates.add('object/mobile/shared_dressed_tatooine_opening_santos.iff') diff --git a/scripts/object/mobile/dressed_tatooine_opening_santos.py b/scripts/object/mobile/dressed_tatooine_opening_santos.py index ccad8904..06551c7e 100644 --- a/scripts/object/mobile/dressed_tatooine_opening_santos.py +++ b/scripts/object/mobile/dressed_tatooine_opening_santos.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('conversationFile', 'quests/tatooine/vourk') return \ No newline at end of file diff --git a/scripts/quests/events/signals/tat_eisley_legacy_e2.py b/scripts/quests/events/signals/tat_eisley_legacy_e2.py new file mode 100644 index 00000000..2c219af1 --- /dev/null +++ b/scripts/quests/events/signals/tat_eisley_legacy_e2.py @@ -0,0 +1,9 @@ +def setup(core): + return + +def wait(core, actor): + return + +def activate(core, actor, quest): + core.questService.completeActiveTask(actor, quest) + return \ No newline at end of file diff --git a/scripts/static_spawns/tatooine/mos_eisley.py b/scripts/static_spawns/tatooine/mos_eisley.py index f6ab63b5..07b04bf6 100644 --- a/scripts/static_spawns/tatooine/mos_eisley.py +++ b/scripts/static_spawns/tatooine/mos_eisley.py @@ -100,9 +100,7 @@ def addPlanetSpawns(core, planet): alduq = stcSvc.spawnObject('alduq', 'tatooine', long(0), float(3512), float(5.0), float(-4814), float(-0.164), float(0.986)) #Eisley Legacy Quest NPCs - - vourk = stcSvc.spawnObject('vourk', 'tatooine', long(0), float(3520.0), float(5.0), float(-4821.0), float(0.42), float(0.91)) - + building = core.objectService.getObject(long(1279956)) mayor = stcSvc.spawnObject('mos_eisley_mayor', 'tatooine', building.getCellByCellNumber(4), float(1.2), float(2.5), float(5.4), float(0), float(0), float(0), float(0)) diff --git a/scripts/static_spawns/tatooine/mos_eisley_quest.py b/scripts/static_spawns/tatooine/mos_eisley_quest.py index d8ca91cb..b6ddbc31 100644 --- a/scripts/static_spawns/tatooine/mos_eisley_quest.py +++ b/scripts/static_spawns/tatooine/mos_eisley_quest.py @@ -2,9 +2,6 @@ import sys # Project SWG: MosEisley Quest: Static Spawns # (C)2014 ProjectSWG -from resources.datatables import Options -from resources.datatables import State - # This script is intended for any quest conversation mobiles, or single attackable npcs for a quest, within Mos Eisley def addPlanetSpawns(core, planet): @@ -12,7 +9,10 @@ def addPlanetSpawns(core, planet): stcSvc = core.staticService objSvc = core.objectService - # Pall - Talk to Pall + # Talk to Pall pall = stcSvc.spawnObject('majolnir', 'tatooine', long(0), float(3526), float(5), float(-4619), float(0), float(0), float(0), float(0), 1) + # Bib's Offer + vourk = stcSvc.spawnObject('vourk', 'tatooine', long(0), float(3521.0), float(5.0), float(-4821.0), float(0.42), float(0.91)) + return \ No newline at end of file