maple-v206/scripts/npc/davyJohn_play.py

100 lines
3.4 KiB
Python

# Guon (2094002) | Inside the Lord Pirate Party Quest
from net.swordie.ms.constants import GameConstants
from net.swordie.ms.constants import WzConstants
pqItems = [
4001117, # Old Metal Key
4001120, # Rookie Pirate Mark
4001121, # Rising Pirate Mark
4001122, # Veteran Pirate Mark
]
ROOKIE_PIRATE_MARK = 4001120 # Stage 0
RISING_PIRATE_MARK = 4001121 # Stage 1
VETERAN_PIRATE_MARK = 4001122 # Stage 2
count = 5
stage = int(sm.getQRValue(GameConstants.LORD_PIRATE_QUEST))
if sm.getFieldID() == 925100100: # Hidden Street: Through the Head of the Ship!
item = 0
if stage == 0:
item = ROOKIE_PIRATE_MARK
elif stage == 1:
item = RISING_PIRATE_MARK
elif stage == 2:
item = VETERAN_PIRATE_MARK
nextItem = 0
if stage == 0:
nextItem = RISING_PIRATE_MARK
elif stage == 1:
nextItem = VETERAN_PIRATE_MARK
if sm.isPartyLeader():
if stage == 3:
sm.sendNext("Make your way through the portal on the right")
else:
if sm.hasItem(item, count):
if stage == 2:
sm.sendNext("Great you may now continue to the next stage!")
sm.invokeForParty("showEffectToField", WzConstants.EFFECT_CLEAR)
else:
sm.sendNext("Alright, next up I need "+ str(count) +" #v"+ str(nextItem) +"##b#t"+ str(nextItem) +"##k.")
sm.consumeItem(item, count)
sm.invokeForParty("setQRValue", GameConstants.LORD_PIRATE_QUEST, str(int(sm.getQRValue(GameConstants.LORD_PIRATE_QUEST)) + 1))
else:
sm.sendNext("Please bring me "+ str(count) +" #v"+ str(item) +"##b#t"+ str(item) +"##k.")
else:
sm.sendSayOkay("Please, have your party leader speak to me.")
elif sm.getFieldID() == 925100500: # Hidden Street: The Captain's Dignity
if not sm.hasMobsInField():
if not sm.isPartyLeader():
sm.sendSayOkay("Please have your party leader speak to me.")
else:
sm.sendNext("You have done us a great favour, what ever can we do to repay you?")
sm.warpInstanceIn(925100700, True)
# For all party members
for partyMembers in sm.getParty().getMembers():
# Sets the Stage2 progress back to 0
if partyMembers.getChr() is None:
continue
sm.setQRValue(partyMembers.getChr(), GameConstants.LORD_PIRATE_QUEST, "0")
# Gives all party members Exp
sm.giveExp(sm.getPQExp(partyMembers.getChr()))
# Checks & deletes all items in the array: pqItems
for item in pqItems:
if sm.hasItem(item):
quantity = sm.getQuantityOfItem(item)
sm.consumeItem(item, quantity)
else:
sm.sendSayOkay("Please get rid of the Captain!")
elif sm.getFieldID() == 925100700: #pq exist of completion
sm.giveNX(200000)
sm.giveItem(4310212, 2)
sm.warpInstanceOut(910002000)
sm.setQRValue(GameConstants.LORD_PIRATE_QUEST, "0")
else:
response = sm.sendAskYesNo("Are you sure you want to leave?")
if response:
if not sm.getParty() is None:
sm.warpInstanceOut(910002000)
for partyMembers in sm.getParty().getMembers():
sm.setQRValue(partyMembers.getChr(), GameConstants.LORD_PIRATE_QUEST, "0", True)
else:
sm.warpInstanceOut(910002000, 0)
sm.setQRValue(GameConstants.LORD_PIRATE_QUEST, "0")