def onEvent (self,event,st) : htmltext = event name = st.getPlayer().getName() if event == "Klump_AcceptQuest.htm": # quest accepted st.setState(STARTED) st.playSound("ItemSound.quest_accept") st.set("cond","1") elif event == "Klump_ExitQuest.htm": # quest finished st.playSound("ItemSound.quest_finish") st.exitQuest(1) elif event == "Klump_QuestInProgress.htm": # does player have 50 gems or not, different progress dialogs if st.getQuestItemsCount(RED_GEM) >= 50 : htmltext = "Klump_QuestInProgress_Have50Gems.htm" # this dialog allows playing elif event == "Klump_PlayBegin.htm": if st.getQuestItemsCount(RED_GEM) < 50: # Not enough gems!! return "Klump_NoGems.htm" # on play begin remove 50 red gems st.takeItems(RED_GEM,50) # take gems ... self.games[name] = [0,0,0,0,0] elif event == "Klump_PlayField.htm": # get vars card1,card2,card3,card4,card5 = self.games[name] prize = 0 link1 = link2 = link3 = link4 = link5 = prizestr = "" # if all cards are open, game ends and prize is given if card1 and card2 and card3 and card4 and card5 : # Game ends # make array of card indexes and sort it ca = self.games[name] ca.sort() # now in sorted array all equal elements are near each other, for example [5,5, 3,3, 2] or [5, 4,4, 3,2] # this makes much easier conditions checking match = [] for i in range(len(ca)-1) : if ca[i] == ca[i+1] : prize += 1 if not ca[i] in match : match.append(ca[i]) if len(match) == 2 : prize += 3 # prize = 1 : 1 pair (XX). 4 variants [XX---] [-XX--] [--XX-] [---XX] # prize = 2 : 3 cards (XXX). 3 variants [XXX--] [-XXX-] [--XXX] # prize = 3 : 4 cards (XXXX). 2 variants [XXXX-] [-XXXX] # prize = 4 : 5 cards (XXXXX). 1 variant [XXXXX] # prize = 5 : 2 pairs (XXYY). 3 variants [XXYY-] [XX-YY] [-XXYY] # prize = 6 : Fullhouse (XXXYY). 2 variants [XXXYY] [YYXXX] link1 = "<a action=\"bypass -h Quest 662_AGameOfCards Klump_QuestInProgress.htm\">Play again.</a><br>" prizestr = REWARDS_TEXT[prize] else : # game still in progress, display links link1 = "Put the first card face up.<br>" link2 = "Put the second card face up.<br>" link3 = "Put the third card face up.<br>" link4 = "Put the fourth card face up.<br>" link5 = "Put the fifth card face up.<br>" if card1 == 0: link1 = "<a action=\"bypass -h Quest 662_AGameOfCards Klump_openCard1.htm\">Put the first card face up.</a><br>" if card2 == 0: link2 = "<a action=\"bypass -h Quest 662_AGameOfCards Klump_openCard2.htm\">Put the second card face up.</a><br>" if card3 == 0: link3 = "<a action=\"bypass -h Quest 662_AGameOfCards Klump_openCard3.htm\">Put the third card face up.</a><br>" if card4 == 0: link4 = "<a action=\"bypass -h Quest 662_AGameOfCards Klump_openCard4.htm\">Put the fourth card face up.</a><br>" if card5 == 0: link5 = "<a action=\"bypass -h Quest 662_AGameOfCards Klump_openCard5.htm\">Put the fifth card face up.</a><br>" htmltext = HtmCache.getInstance().getHtm("data/scripts/quests/" + qn + "/Klump_PlayField.htm") htmltext = htmltext.replace("CARD1",CARD_VALUES[card1]).replace("CARD2",CARD_VALUES[card2]).replace("CARD3",CARD_VALUES[card3]).replace("CARD4",CARD_VALUES[card4]).replace("CARD5",CARD_VALUES[card5]) htmltext = htmltext.replace("LINK1",link1).replace("LINK2",link2).replace("LINK3",link3).replace("LINK4",link4).replace("LINK5",link5).replace("PRIZE",prizestr) if prize : for item,amt in REWARDS[prize] : st.giveItems(item,amt) elif event.startswith("Klump_openCard") : # 'Open' card num = int(event[14]) self.games[name][num-1] = st.getRandom(14) + 1 # generate index of random card, except index 0, which means 'card is closed' htmltext = self.onEvent("Klump_PlayField.htm",st) return htmltext
def onAdvEvent (self,event,npc,player): st = player.getQuestState(qn) if not st: return htmltext = event npcId = str(npc.getNpcId()) if event == "30182-05.htm" : st.playSound("ItemSound.quest_accept") st.setState(STARTED) st.set("cond","1") elif event == npcId + "-08.htm" : st.playSound("ItemSound.quest_finish") st.exitQuest(1) elif event == npcId + "-11.htm" : if st.getQuestItemsCount(Medal) >= 10 : st.takeItems(Medal,10) self.generateBoard(player,10) else : htmltext = npcId + "-12.htm" elif event == npcId + "-13.htm" : if st.getQuestItemsCount(Medal) >= 100 : st.takeItems(Medal,100) self.generateBoard(player,100) else : htmltext = npcId + "-12.htm" elif event.startswith("select_1-") : #first pick selection = int(event[9]) self.gameStatus[player.getName()][1].append(selection) htmltext = HtmCache.getInstance().getHtm("data/scripts/quests/" + qn + "/" + npcId + "-14.htm") htmltext = self.fillBoard(player,htmltext) elif event.startswith("select_2-") : #pick #2-5 selection = int(event[9]) guess = self.gameStatus[player.getName()][1] num_guesses = len(guess) if selection in guess : #already chose that number! htmltext = HtmCache.getInstance().getHtm("data/scripts/quests/" + qn + "/" + npcId + "-" + str(14+2*num_guesses) + ".htm") else : self.gameStatus[player.getName()][1].append(selection) num_guesses += 1 htmltext = HtmCache.getInstance().getHtm("data/scripts/quests/" + qn + "/" + npcId + "-" + str(11+2*num_guesses) + ".htm") htmltext = self.fillBoard(player,htmltext) elif event.startswith("select_3-") : #pick #6 selection = int(event[9]) guess = self.gameStatus[player.getName()][1] if selection in guess : #already chose that number! htmltext = HtmCache.getInstance().getHtm("data/scripts/quests/" + qn + "/" + npcId + "-26.htm") htmltext = self.fillBoard(player,htmltext) else : self.gameStatus[player.getName()][1].append(selection) wins = self.checkWin(player) bet = self.gameStatus[player.getName()][2] if wins == 3 : item = self.getReward(eval("Rewards_"+str(bet)+"_Win")) st.giveItems(item,1) htmltext = HtmCache.getInstance().getHtm("data/scripts/quests/" + qn + "/" + npcId + "-23.htm") elif wins == 0 : item = self.getReward(eval("Rewards_"+str(bet)+"_Lose")) if item == 2437 : st.giveItems(2463,1) st.giveItems(item,1) htmltext = HtmCache.getInstance().getHtm("data/scripts/quests/" + qn + "/" + npcId + "-25.htm") else : htmltext = HtmCache.getInstance().getHtm("data/scripts/quests/" + qn + "/" + npcId + "-24.htm") guess = self.gameStatus[player.getName()][1] for i in range(9) : num = self.gameStatus[player.getName()][0][i] htmltext = htmltext.replace("<?Cell"+str(i+1)+"?>",str(num)) if num in guess : htmltext = htmltext.replace("<?FontColor"+str(i+1)+"?>","ff0000") else : htmltext = htmltext.replace("<?FontColor"+str(i+1)+"?>","ffffff") return htmltext