maple-v206/scripts/portal/blackHeaven_boss.py

54 lines
2.2 KiB
Python

from net.swordie.ms.constants import BossConstants
from net.swordie.ms.enums import EventType
# Mode, Required Level, Map ID, Death Count, Event Type, Cooldown
destinations = [
["Normal", 230, 350060700, 5, EventType.Lotus, 216000000],
["Chaos", 240, 350060400, 5, EventType.CLotus, 216000000],
]
runsPerDay = 1
if sm.getFieldID() == 350060300:
def is_party_eligible(reqlevel, party):
for member in party.getMembers():
if member.getLevel() < reqlevel:
return False
return True
sm.setSpeakerID(9075005)
dialog = "Do you want to head to the '#bBlack Heaven Core#k' to fight \r\n#bLotus#k?\r\n"
for i in range(len(destinations)):
dialog += "#L%d##bGo to the Black Heaven Core (%s Mode) #r(Lv. %d+)#b#l\r\n" % (i, destinations[i][0], destinations[i][1])
dialog += "#L99#Never mind."
response = sm.sendSay(dialog)
if sm.getParty() is None:
sm.sendSayOkay("Please create a party before going in.")
sm.dispose()
elif not sm.isPartyLeader():
sm.sendSayOkay("Please have your party leader talk to me if you wish to face #bLotus#k.")
sm.dispose()
elif response != 99 and sm.partyHasCoolDown(destinations[response][4], runsPerDay):
timeUntilReset = sm.getTimeUntilEventReset(destinations[response][4])
sm.sendNext("You or one of your party member has already attempted facing \r\n#bLotus#k within the past 60 Hours.\r\n You have " + timeUntilReset + " left on your cooldown.")
sm.dispose()
elif sm.checkParty() and response != 99:
if is_party_eligible(destinations[response][1], sm.getParty()):
sm.setPartyDeathCount(destinations[response][3])
sm.warpInstanceIn(destinations[response][2], True)
sm.setInstanceTime(BossConstants.LOTUS_TIME)
sm.addCooldownTimeForParty(destinations[response][4], destinations[response][5])
else:
sm.sendSayOkay("One or more party members are lacking the prerequisite entry quests, or are below level #b%d#k." % destinations[response][1])
else:
if sm.sendAskYesNo("Are you sure you want to leave the battlefield?"):
sm.WarpInstanceOut(807300100)