maple-v206/scripts/quest/q16014s.py

204 lines
16 KiB
Python

#
# @author sword fighting bakery
# @npc Dame Appropiation - Legion Manager
# @quest Talk to Dame Appropiation
#
DAME = 9010106
sm.setSpeakerID(DAME)
# Hack to get intro to work for now (16013 isn't showing up :( )
if not sm.hasQuest(16013) and not sm.hasQuestCompleted(16013):
if sm.getUnionLevel() < 500 or sm.getUnionCharacterCount() < 3:
sm.sendSayOkay("You're not ready to join a Legion, warrior. Legions are reserved for battle-hardened warriors with a "
"#b#eCumulative Level#n of at least 500#k, and require #r#ea minimum of 3 characters#n#k.\r\n\r\n#eWhat "
"is Cumulative Level?#n\r\n#bYour Cumulative Level is the combined level of all your characters on a given "
"world #rwho are Lv. 60+ and have completed the 2nd Job Advancement#k. If you have 40 or more characters, "
"the only your 40 highest level characters will be counted. However, #rZero#k is a special case. Only your"
" highest level Zero will be counted.")
else:
sm.setQRValue(18793, "q0=1q1=0pq=0q2=0q1Date=" + sm.getCurrentDateAsString() + "pqDate=" +
sm.getCurrentDateAsString() + "q2Date=" + sm.getCurrentDateAsString()) # Legion quest
rank = chr.getUnion().getUnionRank()
if rank == 0:
rank = 101
sm.setQRValue(18771, "rank=" + str(rank)) # Legion rank
sm.completeQuestNoRewards(16013)
sm.sendNext("Hello #b#h0##k. Good to see you again.")
sm.setPlayerAsSpeaker()
sm.sendSay("Have we met?")
sm.setSpeakerID(DAME)
sm.sendSay("Ta-da! It's me, #b#eMs. Appropriation!#n#k Surprised? Frustrated with the everyday bureaucracy of the "
"workplace, I spent my free time getting totally ripped and hunting down dragons. And now I've been "
"knighted by Empress Cygnus!")
sm.sendSay("For a while now, I've been matching Maplers with all kinds of #bpart-time jobs#k to help them build "
"character and level up.\r\n\r\nIt was an okay start, but the system didn't work out the way\r\nI had "
"hoped. Too much bureaucratic red tape.")
sm.sendSay("#b#eBut now, I'M in charge.#n#k Wahahahaha!\r\nAnd the new system I've developed is a zillion times "
"better, with better rewards! Shall I tell you about it?")
sm.sendSay("Several months ago, I went on my first vacation in years. But our cruise ship ran aground on an "
"#buncharted island#k full of #rterrible dragons#k.\r\nAfter the captain and crew were dragged off "
"into the jungle and devoured, we passengers realized that there was only one way we were getting off "
"the island alive...")
sm.sendSay("We took up whatever arms we could find. Pots and pans, knives, and the odd broadsword from somebody's "
"luggage. When the dragons returned to carry us off, we charged forward together and beat them to death!")
sm.sendSay("We ate well that night. And while we sat around the campfire, thinking of our fallen comrades, I "
"reached an epiphany.\r\n\r\nSome among us were seasoned warriors, but just as many were flabby tourists. "
"The only reason we survived is because we banded together..")
sm.sendSay("I realized what was inherently wrong with the part-time job system.")
sm.sendSay("Nothing is gained by going it alone. But working as a group, the strengths of one compensate for the "
"weaknesses of another.\r\n\r\n#bWhen people work together#k, even a pudgy sightseer can take down a "
"giant dragon.")
sm.sendSay("After a few months on the island, we managed to capture and tame enough dragons to fly the remaining "
"survivors to safety. And when I returned to civilization, I knew exactly what I had to do. \r\n\r\n"
"First, I told my boss to suck an egg, and I quit. And then, I started my #bgrand new project#k.")
sm.sendSay("And that project is, the #b#e<Legion System>!#n#k I'm going to help all those sad, weak, and flabby "
"Maplers reach their true potential by pairing them with other warriors!\r\n\r\nThe end result? "
"Everybody makes mad gains and gets swole like me! Oh and they'll probably level up faster.")
sm.sendSay("#h0#! Don't you want to put together a #bLegion#k of swole bros to punch dragons in the face and "
"unlock stat bonuses?\r\nIf you're interested, or have any questions, just talk to me or my squire"
" and fellow cruise survivor, Pancho Sanza.")
sm.progressMessageFont(3, 20, 20, 0, "You can now manage your Legion from the Menu.")
else:
if sm.getUnionLevel() < 500 or sm.getUnionCharacterCount() < 3 or sm.getUnionRank() == 0:
sm.sendSayOkay("You're not ready to join a Legion, warrior. Legions are reserved for battle-hardened warriors with "
"a #b#eCumulative Level#n of at least 500#k, and require #r#ea minimum of 3 characters#n#k.\r\n\r\n"
"#eWhat is Cumulative Level?#n\r\n#bYour Cumulative Level is the combined level of all your "
"characters on a given world #rwho are Lv. 60+ and have completed the 2nd Job Advancement#k. "
"If you have 40 or more characters, the only your 40 highest level characters will be counted. "
"However, #rZero#k is a special case. Only your highest level Zero will be counted.")
else:
nSel = sm.sendSay("It's a fine day to bludgeon some dragons!\r\nAre you here about your #bLegion#k?\r\n\r\n"
"#L0# #b<About My Legion>#l\r\n"
"#L1# #b<Raise Legion Rank>#l\r\n"
"#L2# #b<About the Legion System>#k#l\r\n"
"#L3# #b<Weekly Coin Rankings>#k#l")
if nSel == 0:
sm.sendSayOkay("Here's how your #eLegion#n stacks up.\r\n\r\n#eLegion Tier: #n#b#e<" + sm.getUnionRankName()
+ ">#n#k\r\n#eLegion Rank: #n#b#e<" + str(sm.getUnionLevel()) + ">#n#k\r\n#eLegion-eligible "
"Characters: #n#b#e<" + str(sm.getUnionCharacterCount()) + ">#n#k\r\n#eLegion Members: #n#b#e<"
+ str(sm.getUnionAssignedCharacterCount()) + " / " + str(sm.getUnionAssignedMaxCharacterCount())
+ ">#n#k")
elif nSel == 1:
if sm.sendAskYesNo("Are you here to advance your Legion #eto the next rank#n?\r\n\r\n#eCurrent Tier & Rank: "
"#n#b#e<" + sm.getUnionRankName() + ">#n#k\r\n#eNext Tier & Rank: #n#b#e<"
+ str(sm.getUnionNextRankName()) + ">#n#k\r\n#eMax Legion Members after Rank-up:#n #b#e<"
+ str(sm.getUnionAssignedMaxCharacterCount()) + " --> "
+ str(sm.getUnionAssignedNextMaxCharacterCount()) + ">#n#k\r\n\r\nYou must meet the following "
"requirements to rank up:\r\n\r\n#e<Legion Rank> #r#e" + str(sm.getUnionLevelReq()) + "#n#k #n"
"\r\n#e<Coins Needed> #b#e#t4310229# x" + str(sm.getUnionCoinReq()) + "#n#k\r\n\r\n Do you want "
"to #eadvance#n your Legion to the next rank?"):
if sm.getQuantityOfItem(4310229) < sm.getUnionCoinReq():
sm.sendSayOkay("You need more #rLegion Coins#k to rank up. \r\n\r\n#eLegion Coins: #n#r" +
str(sm.getQuantityOfItem(4310229)) + "#k\r\n#eRequired Coins: #n#b"
+ str(sm.getUnionCoinReq()) + "#k")
elif sm.getUnionLevel() < sm.getUnionLevelReq():
sm.sendSayOkay("Your #rCumulative Level#k must be higher to rank up.\r\n\r\n#eCumulative Level: #n#r"
+ str(sm.getUnionLevel()) + "#k\r\n#eRequired Level: #n#b" + str(sm.getUnionLevelReq()) + "#k")
else:
if sm.hasItem(4310229, sm.getUnionCoinReq()):
sm.consumeItem(4310229, sm.getUnionCoinReq())
sm.incrementUnionRank()
sm.sendSayOkay("(Claps enthusiastically)\r\n#eYour Legion has ranked up#n! We've approved you for "
"additional member slots.\r\n\r\n#eNew Rank:#n #b#e<" + sm.getUnionNextRankName()
+ ">#n#k\r\n#eMax Legion Members:#n #b#e" + str(sm.getUnionAssignedMaxCharacterCount())
+ "#n#k\r\n\r\nKeep up the hard work!")
else:
sm.sendSayOkay("An error occured, please try again.")
else:
sm.sendSayOkay("Come back and talk to me when you want to take your legion to the next rank.")
elif nSel == 2:
nSel = sm.sendSay("Did you have questions about the #bLegion System#k?\r\nWhat do you want to know?\r\n#L0# "
"#bWhat are Legions?#k#l\r\n#L1# #bCumulative Level#k#l\r\n#L3# #bAssigned Members and Raid "
"Power#k#l\r\n#L4# #bSynergy Grid and Character Blocks#k#l\r\n#L9# #bSynergy Grid presets#k#l"
"\r\n#L5# #bLegion Raids#k#l\r\n#L6# #bWeekly Coin Rankings#k#l\r\n\r\n#L100# #eNevermind.#n#l")
if nSel == 0:
sm.sendNext("#e<What is a Legion?>#n\r\n\r\nA #eLegion#n is a group made up of #ball of your characters "
"on a given world who meet certain requirements#k\r\n.Legion-eligible characters are those "
"#rLv. 60 or higher#k who have\r\n#rcompleted their 2nd Job Advancement#k\r\n.#rIf you have "
"more than 40 characters within a single world,#k only the #btop 40 highest level characters"
"#k will be eligible to join your Legion\r\n\r\n.#bZero#k characters must be #rLv. 130 or "
"higher#k, and only one may be a member of a given Legion.")
sm.sendSayOkay("#e<Character Ranks>#n\r\n\r\n#eEligible Legion Members#n each possess a #bcharacter rank#k "
"that advances with their #rlevel#k\r\n\r\n.#e<Rank Breakdown>#n\r\n#b#eB (60) -> A (100) ->"
" S (140) -> SS (200) -> SSS (250)#n#k\r\n#e<Zero's Rank Breakdown>#n\r\n\r\n#b#eB (130) -> "
"A (160) -> S (180) -> SS (200) -> SSS (250)#n#k")
elif nSel == 1:
sm.sendSayOkay("#e<Cumulative Level>#n\r\n\r\n#eCumulative Level#n is the #rtotal level#k of your "
"#bLegion-eligible#k characters\r\n\r\n.Increasing your Cumulative Level is one of the "
"requirements for\r\n#radvancing#k to a higher #bLegion Rank#k and #bTier#k, and increasing "
"your Legion's power as a consequence\r\n\r\n.You can check out #bLegion Rankings#k on the "
"MapleStory homepage as well.")
elif nSel == 3:
sm.sendNext("#e<Assigned Members and Raid Power>#n\r\n\r\n#bAssigned Members#k are Legion-eligible "
"characters placed on the #bSynergy Grid#k, and thereby assigned to the legion\r\n\r\n.Only "
"#bAssigned Members#k can participate in #rLegion Raids#k, battles against powerful opponents "
"which reward #bLegion Coins#k\r\n\r\n.Characters assigned to the Synergy Grid also activate "
"character-specific #bMember Bonuses#k based on their class, and\r\n#bGrid Bonuses#k based on "
"their occupied tiles. These stat bonuses are applied to #rall your characters within the "
"same world#k.")
sm.sendSayOkay("#e<Assigned Members and Raid Power>#n\r\n\r\n#bLegion Raid Power#k is calculated based on "
"the #rlevels#k and #rStar Force#k values of assigned legion members\r\n\r\n.The higher your "
"total #bRaid Power#k, the greater the damage you inflict to enemies during #rLegion Raids#k, "
"which means collecting Legion Coins more quickly.")
elif nSel == 4:
sm.sendNext("#e<Synergy Grid and Character Blocks>#n\r\n\r\nThe #bSynergy Grid#k is a grid composed of a "
"#etotal of 16 areas#n: #b8 inner#k and #r8 outer#k areas. Each area represents a #bunique "
"stat#k. Characters can be placed on the grid to provide a bonus to the stats corresponding "
"to their positions. The bonus amount is determined by the #rnumber of occupied spaces#k per "
"area\r\n.The #b8 inner areas#k can be #brearranged#k any way you like. But the\r\n#rstats "
"of the 8 areas outside#k are fixed.")
sm.sendNext("#e<Synergy Grid and Character Blocks>#n\r\n\r\nWhen you #edrag and drop#n a character to "
"the #bSynergy Grid#k, the character is displayed as a #bblock#k occupying space on the "
"grid\r\n.The #echaracter block#n's shape is determined by the character's\r\n#blevel#k and "
"#bjob type#k.")
sm.sendSayOkay("#e<Synergy Grid and Character Blocks>#n\r\n\r\nThe first character placed on the #bSynergy "
"Grid#k must occupy #bone of the 4 central areas#k\r\n\r\n.Subsequent blocks must touch a "
"previous block. Blocks may overlap, although you only receive a given square's bonus once. "
"Characters blocks may be #bflipped or rotated#k as you like, or removed by #bright-clicking#k.")
elif nSel == 9:
sm.sendNext("#e<Synergy Grid Presets>#n\r\n\r\nDifferent roles call for different stat focuses. "
"Thankfully, you can save #bmultiple Synergy Grid configurations#k and switch between them "
"as needed! Want to swap from a warrior to a magic user? Bam! New preset, no problem!")
sm.sendNext("#e<Synergy Grid Presets>#n\r\n\r\n#b#i2436884:##t2436884##k items, available for purchase "
"at the #rCoin Shop#k, are used #bactivate#k presets! You can activate #rup to 3 presets at "
"once#k These presets must be re-activated #bevery 30 days#k.")
sm.sendSayOkay("#e<Synergy Grid Presets>#n\r\n\r\nOnce you have activated a preset, #bclick on its number "
"to select it#k. Then press #eEdit Preset#k. Place your character blocks however you like, "
"then press #rSave Preset#k to save your new preset configuration!\r\nTo apply a saved "
"preset, just #bclick the its number while in Edit Mode and hit confirm.#k")
elif nSel == 5:
sm.sendNext("#e<Legion Raids>#n\r\n\r\n#bLegion Raids#k are battles where you fight alongside the "
"members of your Legion\r\n.Press the #e<Start Raid> button#n in the Legion menu to join "
"your assigned legion members in battle.")
sm.sendNext("#e<Legion Raids>#n\r\n\r\n#b2 types of enemies#k appear inside #bLegion Raids#k. Your "
"#eprimary#n opponent is a #bHuge Dragon#k that appears in the middle of the battleground"
"\r\n\r\n.Your #bLegion members#k automatically attack the enemy, and your own character "
"can assist them\r\n\r\n.However, after the #bgreen section#k of the #rHuge Dragon's#k HP "
"gauge is gone, it generates a #bprotective shield#k that is immune to damage from your "
"active character. \r\n\r\nOnly damage by the other #bLegion members#k can defeat it. Your "
"Legion members #bcontinue#k to fight the Huge Dragon and collect\r\n#bLegion Coins#k\r\n"
"\r\n.#bLegion Coins#k are #rcalculated when you exit#k the raid. Check in periodically to "
"claim the coins they collect.")
sm.sendNext("#e<Legion Raids>#n\r\n\r\nThe #esecond#n type of foe you will face is the #bDragon Whelp#k "
"which guards the Huge Dragon. Dragon Whelps can only be injured by #rthe character you are "
"actively playing#k. Defeating them fulfills #bdaily quests#k. Sometimes a rare #bGolden "
"Wyvern#k appears when Dragon Whelps are defeated.")
sm.sendSayOkay("#e<Legion Raid>#n\r\n\r\nYou get 1 #bLegion Coin#k for every #e100 billion#n damage dealt "
"to the #bHuge Dragon#k. The total damage you have dealt #bresets daily#k\r\n\r\n.It's a "
"good idea to collect your coins regularly, as they will stop accumulating when you reach "
"the coin #rlimit#k for each Legion rank.")
elif nSel == 6:
sm.sendNext("#e<Weekly Coin Rankings>#n\r\n\r\nThe #bWeekly Coin Rankings#k are calculated based on the "
"number of #bLegion Coins#k your Legion obtains every week. #bCalculations are performed "
"between Sunday 11:30 PM - Monday 12:30 AM#k.")
sm.sendSayOkay("#e<Weekly Coins Rankings>#n\r\n\r\nYour ranking will appear under the #bname of the "
"character#k you\r\n#blast used to update your coin ranking#k\r\n\r\n.The following week, "
"the #rtop 100 ranked Legions#k will receive a\r\n#bspecial gift#k\r\n\r\n.It's a good idea "
"to update often, as your coins from #bdaily quests#k will also be counted.")
elif nSel == 3:
sm.sendSayOkay("TODO: Ranking")