maple-v206/scripts/npc/Raid_party.py

210 lines
7.9 KiB
Python

# Vote Points & Donation Points NPC
# Format to follow for items
# ItemID, Quantity/Duration, Cost, Time-sensitive (0 : false | 1 : enabled)
# ===========================================
# VP Items
# ===========================================
vp_exp = [
[5360042, 240, 4, 1],
[5360000, 1440, 8, 1],
[2022463, 30, 2, 1],
[2022461, 30, 2, 1],
[5211048, 240, 4, 1],
[5211046, 1440, 8, 1],
[2023380, 30, 4, 1]
]
vp_cosmetics = [
[5062400, 1, 1, 0],
[2430182, 50, 2, 0],
[2210010, 8, 3, 0],
[5072000, 20, 1, 0],
[5072000, 20, 1, 0],
[5073000, 20, 1, 0],
[5076000, 20, 3, 0],
[5077000, 20, 3, 0]
]
vp_game_changers = [
[2435383, 9999999, 24, 0],
[1202236, 240, 2, 1],
[5680729, 1, 8, 0],
[1202089, 10080, 8, 1],
[1202090, 10080, 8, 1],
[1202091, 1080, 8, 1]
]
vp_pet_shop = [
[5190000, 1, 1, 0],
[5190001, 1, 1, 0],
[5190006, 1, 1, 0],
[5190009, 1, 1, 0],
[5190010, 1, 1, 0],
[5190011, 1, 1, 0],
[5190002, 1, 1, 0],
[5190003, 1, 1, 0],
[5190004, 1, 1, 0],
[5190005, 1, 1, 0]
]
# ===========================================
# DP Items
# ===========================================
# Format to follow for items
# ItemID, Quantity/Duration, Cost, Time-sensitive (0 : false | 1 : enabled)
dp_exp = [
[2450015, 30, 250, 0], # 3x Exp 30 Min
[2450016, 60, 400, 0], # 3x Exp 60 Min
[2023722, 30, 250, 0], # 2x Meso Buff 30 min
]
dp_cosmetics = [
[5552000, 1, 200, 0], # Hair Slot
[5553000, 1, 200, 0], # Face Slot
[5155000, 1, 1000, 0], # Carta's Indigo Pearl
[5155004, 1, 1000, 0], # Carta's Teal Pearl
[5155005, 1, 1000, 0], # Carta's Scarlet Pearl
]
# TODO: wz edit pet-vacs string to change names
# and have 2 different pvacs one for 1 day and a 2nd for 7 days.
dp_game_changers = [
[5680047, 1, 100, 1], # Pvac // 1 Day (time-sensitive)
[5680047, 1, 600, 1], # Pvac // 7 Day (time-sensitive)
[1202236, 1, 8000, 0], # Frenzy Totem
[4034803, 1, 1000, 0], # Name Change Coupon
[2435383, 1, 4000, 0], # Pendant Slot Permanent Coupon
[1122303, 1, 1000, 0], # Hellia Necklace
[1132183, 1, 1000, 0], # Avenger Quiver Belt
[1152101, 1, 1000, 0], # Doom Shoulder
[1113171, 1, 1000, 0] # Grin Ring
]
dp_surprise_box = [
[5068300, 1, 250, 0], # Pet Box
[2435163, 1, 300, 0], # Random Damage Skin
[5190013, 1, 1000, 0] # Open Pet Shop Skill
]
# ===============================================
main_menu = sm.options("Trade in Vote Points", "Trade in Donation Points")
# Options for vote point menu
vp_menu = sm.options("Exp / Drop Coupons", "Cosmetics", "Game Changers", "Pet Items")
# Options for donation point menu
dp_menu = sm.options("Exp / Drop Coupons", "Cosmetics", "Game Changers", "Surprise Box")
# for sub-menu item options
option = ""
def showOptions(text, items, duration):
option = text + "\r\n#b"
for x in range (len(items)):
name = items[x][0]
qty = items[x][1]
cost = items[x][2]
if duration:
option += "#L" + str(x) + "##i" + str(name) + "# #z" + str(name) + "# (" + str(qty) + " Min)" + " (" + str(cost) + " Points)" + "#l \r\n"
else:
option += "#L" + str(x) + "##i" + str(name) + "# #z" + str(name) + "# (" + str(qty) + ")" + " (" + str(cost) + " Points)" + "#l \r\n"
return sm.sendNext(option)
def exchange(opt, items, duration, donation):
name = items[opt][0]
qty = items[opt][1]
cost = items[opt][2]
timed = items[opt][3]
currency = sm.getVotePoints()
currencyName = "vote points"
if donation:
currency = sm.getDonationPoints()
currencyName = "donation points"
durOrQty = ""
if duration:
durOrQty = "(#b" + str(qty) + " min#k)"
else:
durOrQty = "(#b" + str(qty) + "#kx)"
timeMsg = ""
if timed == 1:
timeMsg = "\r\n\r\n(#rThis is a time-sensitive item, duration until expire will start as soon as item is in your inventory!!#k)"
if sm.sendAskYesNo("You currently have #b" + str(currency) + " " + currencyName + "#k.\r\nAre you sure you want the following item(s)?:\r\n " + durOrQty + " of #b#z " + str(name) + "##k #i" + str(name) + "# for #r" + str(cost) + "#k " + currencyName + "?" + timeMsg):
if currency >= cost:
if sm.canHold(name):
if duration:
if timed == 1: # is time sensitive
sm.giveItemWithExpireDate(name, 1, False, qty)
else:
sm.giveItem(name, 1)
else:
if timed == 1:
sm.giveItemWithExpireDate(name, 1, False, qty)
else:
sm.giveItem(name, qty)
if donation: # is donation points
sm.deductDonationPoints(cost)
else:
sm.deductVotePoints(cost)
sm.sendSayOkay("You have obtained " + durOrQty + " #b#z" + str(name) + "##k for #r" + str(cost) + "#k " + currencyName + ".")
else:
sm.sendNext("Please make sure you have enough space in your inventory")
else:
sm.sendNext("You don't have enough " + currencyName + ". You need #r" + str(cost) + "#k " + currencyName + ".")
def showAndExchange(msg, items, has_duration, donation):
selection = showOptions(msg, items, has_duration)
exchange(selection, items, has_duration, donation)
# =========================== Vote Points =========================================================
def votePointOptions():
type = False
prompt = "You currently have #b" + str(sm.getVotePoints()) + " vote points#k.\r\nWhat would you like to buy with your vote points?\r\n\r\n(#dYou can obtain vote points by voting for us every 12 hours through our website or discord#k!)\r\n"
selection = sm.sendNext(prompt + "#b" + vp_menu + "#k")
if selection == 0:
showAndExchange("What would you like from the Exp / Drop coupon shop?", vp_exp, True, type) # items have have a duration
elif selection == 1:
showAndExchange("What would you like from the Cosmetics shop?", vp_cosmetics, False, type) # items don't have a duration
elif selection == 2:
showAndExchange("What would you like from the Game Changers shop?", vp_game_changers, True, type)
elif selection == 3:
showAndExchange("What would you like from the Pet shop?", vp_pet_shop, False, type)
# =========================== Donation Points ======================================================
def donationPointOptions():
type = True # is DP
prompt = "You currently have #b" + str(sm.getDonationPoints()) + " donation points#k.\r\nWhat would you like to buy with your donation points?\r\n\r\n(#dYou can obtain donation points by visiting our website and purchasing them by clicking on the store#k.)\r\n"
selection = sm.sendNext(prompt + "#b" + dp_menu + "#k")
if selection == 0:
showAndExchange("What would you like from the Exp / Drop coupon shop?", dp_exp, True, type) # items have have a duration
elif selection == 1:
showAndExchange("What would you like from the Cosmetics shop?", dp_cosmetics, False, type) # items don't have a duration
elif selection == 2:
showAndExchange("What would you like from the Game Changers shop?", dp_game_changers, True, type)
elif selection == 3:
showAndExchange("What would you like from the Surprise Box shop?", dp_surprise_box, False, type)
# ===================================================================================================
selection = sm.sendNext("Hey! What would you have me do?\r\n#b" + main_menu + "#k")
if selection:
donationPointOptions()
else:
votePointOptions()