Пример #1
0
 def onKill(self, npc, player, isPet):
     st = player.getQuestState(qn)
     if not st: return
     if st.getState() != State.STARTED: return
     npcId = npc.getId()
     cond = st.getInt("cond")
     if npcId == Angel and cond == 12:
         st.set("angel", "1")
         self.isAngelSpawned = 0
         npc.broadcastPacket(
             NpcSay(npc.getObjectId(), 0, npc.getId(),
                    "Grr. I've been hit..."))
         if self.isKatenarSpawned == 0:
             katenar = st.addSpawn(32242, 36110, 191921, -3712, 60000)
             katenar.broadcastPacket(
                 NpcSay(katenar.getObjectId(), 0, katenar.getId(),
                        "I am late!"))
             self.isKatenarSpawned == 1
             self.startQuestTimer("katenar_cleanup", 60000, katenar, player)
     if npcId == Wyrm and st.getQuestItemsCount(
             Heart) < 10 and cond == 15 and self.getRandom(100) <= 25:
         if st.getQuestItemsCount(Heart) == 9:
             st.giveItems(Heart, 1)
             st.set("cond", "16")
             st.playSound("ItemSound.quest_middle")
         else:
             st.giveItems(Heart, 1)
             st.playSound("ItemSound.quest_itemget")
     return
Пример #2
0
	def onKill(self, npc, player, isPet) :
		st = player.getQuestState(qn)
		if not st : return
		if npc.getNpcId() == SHILENSEVIL and st.getInt("cond") == 4 :
			npc.broadcastPacket(NpcSay(npc.getObjectId(),0,npc.getNpcId(),"「" + player.getName() + "」!現在我就讓你一步..不過,我一定會抓到你的。"))
			npc.broadcastPacket(NpcSay(32569,0,32569,"很好,「" + player.getName() + "」。很高興能幫得上你。"))
			st.giveItems(SCULPTURE, 1)
			st.set("cond", "5")
			st.playSound("ItemSound.quest_middle")
		return
Пример #3
0
 def onAttack(self, npc, player, damage, isPet, skill):
     objId = npc.getObjectId()
     if self.FirstAttacked:
         if Rnd.get(4): return
         npc.broadcastPacket(
             NpcSay(objId, 0, npc.getNpcId(), "幾乎無人防守的後方是你的!"))
     else:
         self.FirstAttacked = True
         if Rnd.get(4): return
         npc.broadcastPacket(NpcSay(objId, 0, npc.getNpcId(), "我一定會回來!"))
     return
Пример #4
0
	def onAdvEvent (self, event, npc, player) :
		if event == "CheckTrustP":
			if self.trustp >= 500000:
				HellboundManager.getInstance().changeLevel(11)
				self.trustp = 0
				self.saveGlobalQuestVar("trust10p", str(self.trustp))
				self.cancelQuestTimers("CheckTrustP")
		elif event == "keySpawn1" or event == "keySpawn2":
			self.startQuestTimer("keySpawn2", 300000, None, None)
			loc = LOCS[Rnd.get(len(LOCS))]
			self.keymaster.teleToLocation(loc[0],loc[1],loc[2])
			if event == "keySpawn1":
				self.startQuestTimer("keySpawn2", 300000, None, None)
			else:
				self.startQuestTimer("keySpawn1", 300000, None, None)
		elif event == "decayNpc":
			npc.decayMe()
		elif event == "NATIVESay":
			world = self.worlds[npc.getInstanceId()]
			npc.broadcastPacket(NpcSay(22450, 0, 22450, "我會...將...全部...打死...!"))
			npc.broadcastPacket(NpcSay(22450, 0, 22450, "我會...將...全部...打死...!"))
			npc.broadcastPacket(NpcSay(22450, 0, 22450, "我會...將...全部...打死...!"))
		elif event == "freeprisoner":
			world = self.worlds[npc.getInstanceId()]
			sayNpc = npc.getObjectId()
			npc.broadcastPacket(NpcSay(sayNpc, 0, npc.getNpcId(), "多謝幫助!看守者馬上就要來了快躲起來..."))
			self.startQuestTimer("decayNpc", 15000, npc, None)
			chance = Rnd.get(100)
			if chance <= 30:
				if not world.guardsSpawned:
					callGuards(self,npc,player,world)
					world.guardsSpawned = True
					npc.broadcastPacket(NpcSay(22359, 0, 22359, "發.現.入.侵.者...!"))
					hellboundLevel = HellboundManager.getInstance().getLevel()
					if hellboundLevel == 10:
						HellboundManager.getInstance().increaseTrust(50)
						self.trustp += 50
						self.saveGlobalQuestVar("trust10p", str(self.trustp))
		elif event == "key":
			world = self.worlds[npc.getInstanceId()]
			if not world.instanceFinished:
				key = player.getInventory().getItemByItemId(KEY);
				if key != None:
					world.instanceFinished = True
					player.destroyItemByItemId("Moonlight Stone", KEY, 1, player, True);
					instance = InstanceManager.getInstance().getInstance(npc.getInstanceId())
					if instance != None:
						instance.setDuration(30000)
						instance.setReturnTeleport(ReturnPort[dataIndex][0],ReturnPort[dataIndex][1],ReturnPort[dataIndex][2])
				else :
					return "32343-2.htm"
			else :
				return "32343-1.htm"
		return
Пример #5
0
    def onAdvEvent(self, event, npc, player):
        htmltext = event
        st = player.getQuestState(qn)
        if not st: return

        if event == "30191-02.htm":
            st.set("cond", "1")
            st.setState(State.STARTED)
            st.giveItems(JACOB_NECK, 1)
            st.playSound("ItemSound.quest_accept")
        elif event == "32569-05.htm":
            st.set("cond", "2")
            st.takeItems(JACOB_NECK, 1)
            st.playSound("ItemSound.quest_middle")
        elif event == "32570-02.htm":
            st.set("cond", "3")
            st.giveItems(DEADMANS_HERB, 1)
            st.playSound("ItemSound.quest_middle")
        elif event.isdigit():
            if int(event) == 9:
                st.takeItems(DEADMANS_HERB, 1)
                st.set("cond", "4")
                st.playSound("ItemSound.quest_middle")
                player.showQuestMovie(int(event))
                return ""
        elif event == "32569-09.htm":
            npc.broadcastPacket(
                NpcSay(npc.getObjectId(), 0, npc.getNpcId(),
                       player.getName() + "! That stranger must be defeated!"))
            monster = self.addSpawn(SHILENSEVIL, 82624, 47422, -3220, 0, False,
                                    60000, True)
            monster.broadcastPacket(
                NpcSay(monster.getObjectId(), 0, monster.getNpcId(),
                       "You are not the owner of that item!"))
            monster.setRunning()
            monster.addDamageHate(player, 0, 999)
            monster.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK,
                                         st.getPlayer())
        elif event == "32569-13.htm":
            st.set("cond", "6")
            st.takeItems(SCULPTURE, 1)
            st.playSound("ItemSound.quest_middle")
        elif event == "30760-02.htm":
            st.addExpAndSp(52518015, 5817677)
            st.unset("cond")
            st.setState(State.COMPLETED)
            st.exitQuest(False)
            st.playSound("ItemSound.quest_finish")
        return htmltext
Пример #6
0
	def onAdvEvent(self, event, npc, player) :
		htmltext = event
		st = player.getQuestState(qn)
		if not st : return

		if event == "32593-02.htm" :
			st.set("cond","1")
			st.setState(State.STARTED)
			st.playSound("ItemSound.quest_accept")
		elif event == "32597-10.htm" :
			st.set("cond","3")
			st.takeItems(SCULPTURE, 1)
			st.playSound("ItemSound.quest_middle")
		elif event == "32597-05.htm" :
			monster = self.addSpawn(SHILENSEVIL1, -23801, -9004, -5385, 0, False, 0, False, npc.getInstanceId())
			monster.broadcastPacket(NpcSay(monster.getObjectId(),0,monster.getNpcId(),"You are not the owner of that item!"))
			monster.setRunning()
			monster.addDamageHate(player,0,999)
			monster.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, st.getPlayer())
			monster1 = self.addSpawn(SHILENSEVIL2, -23801, -9004, -5385, 0, False, 0, False, npc.getInstanceId())
			monster1.setRunning()
			monster1.addDamageHate(player,0,999)
			monster1.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, st.getPlayer())
			monster2 = self.addSpawn(SHILENSEVIL2, -23801, -9004, -5385, 0, False, 0, False, npc.getInstanceId())
			monster2.setRunning()
			monster2.addDamageHate(player,0,999)
			monster2.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, st.getPlayer())
		return htmltext
Пример #7
0
 def onTalk(self, npc, player):
     st = player.getQuestState(qn)
     npcId = npc.getNpcId()
     if not st: return
     ###################
     # Start Locations #
     ###################
     if TELEPORTERS.has_key(npcId):
         random_id = st.getRandom(len(ISLE_LOCS))
         x, y, z = ISLE_LOCS[random_id][0], ISLE_LOCS[random_id][
             1], ISLE_LOCS[random_id][2]
         st.getPlayer().teleToLocation(x, y, z)
         st.setState(State.STARTED)
         st.set("id", str(TELEPORTERS[npcId]))
     ################
     # Fantasy Isle #
     ################
     elif npcId == PADDIES:
         if st.getState() == State.STARTED and st.getInt("id"):
             # back to start location
             return_id = st.getInt("id") - 1
             st.getPlayer().teleToLocation(RETURN_LOCS[return_id][0],
                                           RETURN_LOCS[return_id][1],
                                           RETURN_LOCS[return_id][2])
             st.unset("id")
         else:
             # no base location founded (player swimmed)
             player.sendPacket(
                 NpcSay(
                     npc.getObjectId(), 0, npc.getNpcId(),
                     "You've arrived here from a different way. I'll send you to Rune Township which is the nearest town."
                 ))
             st.getPlayer().teleToLocation(43835, -47749, -792)
         st.exitQuest(1)
     return
 def onTalk(self, npc, player):
     st = player.getQuestState(qn)
     npcId = npc.getNpcId()
     if not st: return
     ###################
     # Start Locations #
     ###################
     if TELEPORTERS.has_key(npcId):
         st.getPlayer().teleToLocation(12661, 181687, -3560)
         st.setState(State.STARTED)
         st.set("id", str(TELEPORTERS[npcId]))
     ############################
     # Monster Derby Race Track #
     ############################
     elif npcId == RACE_MANAGER:
         if st.getState() == State.STARTED and st.getInt("id"):
             # back to start location
             return_id = st.getInt("id") - 1
             if return_id < 13:
                 st.getPlayer().teleToLocation(RETURN_LOCS[return_id][0],
                                               RETURN_LOCS[return_id][1],
                                               RETURN_LOCS[return_id][2])
                 st.unset("id")
         else:
             # no base location
             player.sendPacket(
                 NpcSay(
                     npc.getObjectId(), 0, npc.getNpcId(),
                     "You've arrived here from a different way. I'll send you to Dion Castle Town which is the nearest town."
                 ))
             st.getPlayer().teleToLocation(15670, 142983, -2700)
         st.exitQuest(1)
     return
Пример #9
0
 def onKill(self,npc,player,isPet) :
     leaderst = leader(player)
     if not leaderst : return
     if not leaderst.getState() == State.STARTED :
         if DEBUG :
             print "onKill says leader needs to start quest"
             return "Need to start quest!"
         return
     part = leaderst.getInt("part")
     npcId = npc.getNpcId()
     if npcId in CHESTS and part == 4 :
         wins = leaderst.getInt("chest_wins")
         if (self.chests - wins) == 12 or (wins < 4 and not leaderst.getRandom(4)) :
             wins += 1
             leaderst.set("chest_wins",str(wins))
             npc.broadcastPacket(NpcSay(npc.getObjectId(),0,npc.getNpcId(),"###### BINGO! ######"))
         self.chests += 1
     elif npcId in MOBS.keys() :
         st = player.getQuestState(qn)
         if not st : st = self.newQuestState(player)
         if st == leaderst : return
         if part >=3 and part < 6 :
             if not st.getRandom(10) :
                 st.giveItems(MOBS[npcId],1)
                 st.playSound("ItemSound.quest_itemget")
         elif DEBUG :
             print "onKill says leader is not correct state"+str(part)
             return "leader is not correct state"
     return
Пример #10
0
	def onAttack(self, npc, player, damage, isPet, skill):
		st = player.getQuestState(qn)
		npcId = npc.getNpcId()
		objId = npc.getObjectId()
		maxHp = npc.getMaxHp()
		nowHp = npc.getStatus().getCurrentHp()
		if npcId == AMASKARI:
			if (nowHp < maxHp * 0.1):
				if self.Lock == 0:
					npc.broadcastPacket(CreatureSay(objId, 0, npc.getName(), "我將讓大家和我一樣的痛苦!"))
					self.Lock = 1
		elif npcId == KEYMASTER :
			if not self.keymasterattacked:
				self.keymasterattacked = True
				self.amaskari.teleToLocation(player.getX(),player.getY(),player.getZ())
				self.amaskari.setTarget(player)
				objId = self.amaskari.getObjectId()
				self.amaskari.broadcastPacket(NpcSay(objId, 0, self.amaskari.getNpcId(), AMASKARI_TEXT[Rnd.get(len(AMASKARI_TEXT))]))
				self.startQuestTimer("NATIVESay", 5000, npc, None)
		elif npcId == NATIVE :
			if self.NATIVELock == 0:
				npc.broadcastPacket(CreatureSay(objId, 0, npc.getName(), "嘿...好痛...好痛...啊!"))
				self.NATIVELock = 1
		if self.worlds.has_key(npc.getInstanceId()):
			world = self.worlds[npc.getInstanceId()]
		return
Пример #11
0
 def onTalk(self, npc, player):
     st = player.getQuestState(qn)
     npcId = npc.getNpcId()
     if not st: return
     ###################
     # Start Locations #
     ###################
     if TELEPORTERS.has_key(npcId):
         st.getPlayer().teleToLocation(12661, 181687, -3560)
         st.setState(State.STARTED)
         st.set("id", str(TELEPORTERS[npcId]))
     ############################
     # Monster Derby Race Track #
     ############################
     elif npcId == RACE_MANAGER:
         if st.getState() == State.STARTED and st.getInt("id"):
             # back to start location
             return_id = st.getInt("id") - 1
             if return_id < 13:
                 st.getPlayer().teleToLocation(RETURN_LOCS[return_id][0],
                                               RETURN_LOCS[return_id][1],
                                               RETURN_LOCS[return_id][2])
                 st.unset("id")
         else:
             # no base location
             player.sendPacket(
                 NpcSay(npc.getObjectId(), 0, npc.getNpcId(),
                        "你是用其它的方法來到這裡,因此將傳送到最近的魯因城鎮。"))
             st.getPlayer().teleToLocation(15670, 142983, -2700)
         st.exitQuest(1)
     return
Пример #12
0
 def onTalk(self, npc, player):
     st = player.getQuestState(qn)
     npcId = npc.getNpcId()
     if not st: return
     ###################
     # Start Locations #
     ###################
     if TELEPORTERS.has_key(npcId):
         random_id = st.getRandom(len(ISLE_LOCS))
         x, y, z = ISLE_LOCS[random_id][0], ISLE_LOCS[random_id][
             1], ISLE_LOCS[random_id][2]
         st.getPlayer().teleToLocation(x, y, z)
         st.setState(State.STARTED)
         st.set("id", str(TELEPORTERS[npcId]))
     ################
     # Fantasy Isle #
     ################
     elif npcId == PADDIES:
         if st.getState() == State.STARTED and st.getInt("id"):
             # back to start location
             return_id = st.getInt("id") - 1
             st.getPlayer().teleToLocation(RETURN_LOCS[return_id][0],
                                           RETURN_LOCS[return_id][1],
                                           RETURN_LOCS[return_id][2])
             st.unset("id")
         else:
             # no base location founded (player swimmed)
             player.sendPacket(
                 NpcSay(npc.getObjectId(), 0, npc.getNpcId(),
                        "你是用其它的方法來到這裡,因此將傳送到最近的魯因城鎮。"))
             st.getPlayer().teleToLocation(43835, -47749, -792)
         st.exitQuest(1)
     return
Пример #13
0
	def onKill(self, npc, player, isPet):
		npcId = npc.getNpcId()
		objId = npc.getObjectId()
		if npcId == KEYMASTER:
			HellboundManager.getInstance().increaseTrust(250)
			self.trustp += 250
			self.saveGlobalQuestVar("trust10p", str(self.trustp))
			chance = Rnd.get(100)
			if chance <= 75:
				npc.broadcastPacket(NpcSay(objId, 0, npc.getNpcId(), "我的天呀!我.的..鑰...匙......."))
				dropItem(player,npc,9714,1)
			else:
				npc.broadcastPacket(NpcSay(objId, 0, npc.getNpcId(), "你永遠都不能得到我的..鑰匙!"))
		if npcId == AMASKARI:
			if HellboundManager.getInstance().getLevel() <= 11:
				HellboundManager.getInstance().increaseTrust(500)
				self.trustp += 500
				self.saveGlobalQuestVar("trust10p", str(self.trustp))
			try:
				if self.Slaves[objId][0] != "noSlaves":
					for i in self.Slaves[objId]:
						try:
							i.setIsInvul(1)
							i.broadcastPacket(CreatureSay(i.getObjectId(), 0, i.getName(), "謝謝你救我!"))
							i.decayMe()
						except:
							pass
					self.Slaves[objId] = []
			except:
				pass
		if npcId == NATIVE:
			HellboundManager.getInstance().increaseTrust(-10)
			self.trustp -= 10
			self.saveGlobalQuestVar("trust10p", str(self.trustp))
			self.Lock = 0
		if npcId == PRISONER:
			HellboundManager.getInstance().increaseTrust(-10)
			self.trustp -= 10
			self.saveGlobalQuestVar("trust10p", str(self.trustp))
		if npcId in LIST:
			HellboundManager.getInstance().increaseTrust(20)
			self.trustp += 20
			self.saveGlobalQuestVar("trust10p", str(self.trustp))
		if self.worlds.has_key(npc.getInstanceId()):
			world = self.worlds[npc.getInstanceId()]
		return
	def onKill(self, npc, player, isPet) :
		st = player.getQuestState(qn)
		if not st : return
		if npc.getNpcId() == SHILENSEVIL and st.getInt("cond") == 4 :
			npc.broadcastPacket(NpcSay(npc.getObjectId(),0,npc.getNpcId(),player.getName() + "... You may have won this time... But next time, I will surely capture you!"))
			st.giveItems(SCULPTURE, 1)
			st.set("cond", "5")
		return
Пример #15
0
 def myAddSpawn(self, npc, player, damage):  # npc 用作召喚位置, player 被仇恨的玩家
     n = self.addSpawn(self.NPCs[Rnd.get(len(self.NPCs))], npc, False)
     n.addDamageHate(player, 0, damage * 1000 / (player.getLevel() + 7))
     n.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player)
     npc.broadcastPacket(
         NpcSay(
             n.getObjectId(), 0, n.getNpcId(), self.npc_spawn_say[Rnd.get(
                 len(self.npc_spawn_say))].replace('%player_name%',
                                                   player.getName())))
Пример #16
0
 def onKill(self,npc,player,isPet):
   st = player.getQuestState(qn)
   if not st: return 
   npcId = npc.getNpcId()
   if st.getState() == State.STARTED and st.getInt("cond") == 10:
      if npcId == Guardian :
         npc.broadcastPacket(NpcSay(npc.getObjectId(), 0, npcId, NpcStringId.THIS_ENEMY_IS_FAR_TOO_POWERFUL_FOR_ME_TO_FIGHT_I_MUST_WITHDRAW))
         st.set("cond","11")
         st.playSound("ItemSound.quest_middle")
Пример #17
0
 def onAttack(self, npc, player, damage, isPet, skill):
     objId = npc.getObjectId()
     if self.FirstAttacked:
         if Rnd.get(50): return
         npc.broadcastPacket(
             NpcSay(
                 objId, 0, npc.getNpcId(), "Brother " + player.getName() +
                 ", move your weapon away!!"))
     else:
         self.FirstAttacked = True
     return
Пример #18
0
	def onAdvEvent (self,event,npc,pc) :
		if event == "timer_check" :
			sayNpc = self.addSpawn(self.SHADAI,9041,253010,-1938,49909,False,2410000)
			autochat(sayNpc,"誰會成為今晚的幸運兒呢?哈哈!真是好奇,真是好奇!")
			self.startQuestTimer("REPORT1",600000, sayNpc, None)
		elif event in REPORTS.keys() :
			check,report,nextEvent=REPORTS[event]
			self.isCheck = check
			npc.broadcastPacket(NpcSay(npc.getObjectId(),1,npc.getNpcId(),report))
			self.startQuestTimer(nextEvent,600000, npc, None)
		return
Пример #19
0
 def onKill(self,npc,player,isPet):
     st = player.getQuestState(qn)
     if not st : return
     if st.getState() != State.STARTED : return
     if st.getInt("cond") == 7:
         st.playSound("ItemSound.quest_itemget")
         st.set("cond","8")
         npc.broadcastPacket(NpcSay(npc.getObjectId(), 0, npc.getId(), "You've ended my immortal life! You've protected by the feudal lord, aren't you?"))
         st.giveItems(TotemDoll,1)
         st.set("step","2")
     return
Пример #20
0
 def onKill(self, npc, player, isPet):
     st = player.getQuestState(qn)
     if not st: return
     npcId = npc.getNpcId()
     if st.getState() == State.STARTED and st.getInt("cond") == 10:
         if npcId == Guardian:
             npc.broadcastPacket(
                 NpcSay(npc.getObjectId(), 0, npcId,
                        "敵人比想像中更加強悍,無法戰鬥,還是先退下了。"))
             st.set("cond", "11")
             st.playSound("ItemSound.quest_middle")
 def onKill(self, npc, player, isPet):
     st = player.getQuestState(qn)
     if not st: return
     npcId = npc.getNpcId()
     if st.getState() == State.STARTED and st.getInt("cond") == 10:
         if npcId == Guardian:
             npc.broadcastPacket(
                 NpcSay(
                     npc.getObjectId(), 0, npcId,
                     "This enemy is far too powerful for me to fight. I must withdraw"
                 ))
             st.set("cond", "11")
             st.playSound("ItemSound.quest_middle")
Пример #22
0
 def onAdvEvent(self, event, npc, player):
     htmltext = event
     st = player.getQuestState(qn)
     if not st: return
     if event == "31328-02.htm":  # call 31328-03.htm
         st.giveItems(MapForestofDeadman, 1)
         st.giveItems(SilverKey, 1)
         st.set("cond", "1")
         st.playSound("ItemSound.quest_accept")
         st.setState(State.STARTED)
     elif event == "31328-03.htm":  # call 31328-05.htm and 31328-06.htm
         st.set("cond", "2")
         st.playSound("ItemSound.quest_middle")
     elif event == "31526-05.htm":  # called by 31526-03.htm for hairpin
         if st.getQuestItemsCount(LidiaHairPin) == 0:
             st.giveItems(LidiaHairPin, 1)  # give hairpin
             if st.getQuestItemsCount(
                     LidiaDiary) != 0:  # if has diary cond = 4
                 st.set("cond", "4")
                 st.playSound("ItemSound.quest_middle")
     elif event == "31526-11.htm":  # called by 31526-07 for diary
         if st.getQuestItemsCount(LidiaDiary) == 0:
             st.giveItems(LidiaDiary, 1)
             if st.getQuestItemsCount(
                     LidiaHairPin) != 0:  # if has hairpin cond = 4
                 st.set("cond", "4")
                 st.playSound("ItemSound.quest_middle")
     elif event == "31328-19.htm":  # end of questions loop go to ghost
         st.set("cond", "6")
         st.playSound("ItemSound.quest_middle")
     elif event == "31524-04.htm":  # sends you to the tombstone to dig
         st.set("cond", "7")
         st.playSound("ItemSound.quest_middle")
         st.takeItems(LidiaDiary, -1)
     elif event == "31523-02.htm":
         st.playSound("SkillSound5.horror_02")
         ghost = st.addSpawn(31524, 51432, -54570, -3136, 1800000)
         ghost.broadcastPacket(
             NpcSay(ghost.getObjectId(), 0, ghost.getNpcId(), "是誰叫醒我。"))
     elif event == "31523-05.htm":
         st.startQuestTimer("ghost_timer", 10000)
     elif event == "ghost_timer":
         st.set("cond", "8")
         htmltext = "31523-06.htm"
         st.giveItems(SilverKey, 1)
     elif event == "31530-02.htm":  # box gives spear takes key
         st.set("cond", "10")
         st.playSound("ItemSound.quest_middle")
         st.takeItems(SilverKey, -1)
         st.giveItems(SilverSpear, 1)
     return htmltext
Пример #23
0
    def onAdvEvent(self, event, npc, player):
        htmltext = event
        st = player.getQuestState(qn)
        if not st: return

        if event == "30969-05.htm":
            st.set("cond", "1")
            st.setState(State.STARTED)
            st.playSound("ItemSound.quest_accept")
        elif event == "32598-02.htm":
            st.giveItems(STAFF, 1)
            st.playSound("ItemSound.quest_middle")
        elif event == "30969-11.htm":
            st.set("cond", "6")
            st.playSound("ItemSound.quest_middle")
        elif event == "32584-05.htm":
            st.set("cond", "2")
            st.giveItems(STONE, 1)
            st.playSound("ItemSound.quest_middle")
        elif event == "32586-06.htm":
            st.set("cond", "4")
            st.takeItems(STONE, 1)
            st.giveItems(SWORD, 1)
            st.giveItems(WATER, 1)
            st.playSound("ItemSound.quest_middle")
        elif event == "32586-12.htm":
            st.set("cond", "5")
            st.takeItems(SEAL, 4)
            st.takeItems(SWORD, 1)
            st.takeItems(WATER, 1)
            st.takeItems(STAFF, 1)
            st.playSound("ItemSound.quest_middle")
        elif event == "32593-02.htm":
            st.addExpAndSp(52518015, 5817676)
            st.unset("cond")
            st.setState(State.COMPLETED)
            st.exitQuest(False)
            st.playSound("ItemSound.quest_finish")
        elif event == "30969-06.htm":
            if not self.mammon:
                npc = st.addSpawn(MAMMON, 60000)
                self.mammon = 1
                st.startQuestTimer("Despawn_Mammon", 60000)
                npc.broadcastPacket(
                    NpcSay(npc.getObjectId(), 0, npc.getNpcId(),
                           "Who dares summon the Merchant of Mammon?!"))
        elif event == "Despawn_Mammon":
            self.mammon = 0
            return
        return htmltext
Пример #24
0
 def onKill(self, npc, player, isPet):
     self.cancelQuestTimer("npc_cleanup", npc, None)
     self.isNpcSpawned = 0
     st = player.getQuestState(qn)
     if not st: return
     if st.getState() != State.STARTED: return
     npcId = npc.getNpcId()
     cond = st.getInt("cond")
     if npcId == 27340 and cond == 1:
         string = "沒想到會這麼強,我失算了。"
         npc.broadcastPacket(
             NpcSay(npc.getObjectId(), 0, npc.getNpcId(), string))
         st.giveItems(10867, 1)
         st.set("cond", "2")
         st.playSound("ItemSound.quest_middle")
     return
Пример #25
0
 def onKill(self, npc, player, isPet):
     # all kill events triggered by the leader occur automatically.
     # However, kill events that were triggered by members occur via the leader and
     # only if the leader is online and within a certain distance!
     leader_st = 0
     if player.isClanLeader():
         leader_st = player.getQuestState(qn)
     else:
         clan = player.getClan()
         if clan:
             c_leader = clan.getLeader()
             if c_leader:
                 leader = c_leader.getPlayerInstance()
                 if leader:
                     if player.isInsideRadius(leader, 1600, 1, 0):
                         leader_st = leader.getQuestState(qn)
     if leader_st:
         if leader_st.getState() != State.STARTED: return
         npcId = npc.getId()
         condition, maxcount, chance, itemList = DROPLIST[npcId]
         random = self.getRandom(100)
         cond = leader_st.getInt("cond")
         if cond == condition and random < chance:
             if len(itemList) > 1:
                 stoneRandom = self.getRandom(3)
                 if stoneRandom == 0:
                     if leader_st.getInt("Kurtz") < 4:
                         return
                     else:
                         maxcount *= 4
                 giveItem(itemList[stoneRandom], maxcount, leader_st)
             elif len(itemList):
                 giveItem(itemList[0], maxcount, leader_st)
             else:
                 if npcId == 27181:  # Imperial Gravekeeper
                     spawnedNpc = leader_st.addSpawn(30765, 120000)
                     npc.broadcastPacket(
                         NpcSay(
                             spawnedNpc.getObjectId(), 0,
                             spawnedNpc.getId(),
                             "Curse of the gods on the one that defiles the property of the empire!"
                         ))
                     leader_st.set("ImpGraveKeeper", "3")
                     self.ImpGraveKepperStat = 1
                 else:
                     leader_st.addSpawn(27179)
     return
Пример #26
0
 def onKill(self,npc,player,isPet):
   self.cancelQuestTimer("npc_cleanup", None, None)
   self.isNpcSpawned = 0
   st = self.getQuestState(player, False)
   if not st : return
   if st.getState() != State.STARTED : return
   npcId = npc.getId()
   cond = st.getInt("cond")
   if npcId == 27340 and cond == 1:
     string = "You are strong. This was a mistake."
     if self.getRandom(1):
       string = "You have good luck. I shall return."
     npc.broadcastPacket(NpcSay(npc.getObjectId(),0,npc.getId(),string))
     st.giveItems(10867,1)
     st.set("cond","2")
     st.playSound("ItemSound.quest_middle")
   return
Пример #27
0
 def onAggroRangeEnter(self, npc, player, isPet):
     objId = npc.getObjectId()
     for player in npc.getKnownList().getKnownPlayers().values():
         if player.isInsideRadius(npc, 500, False, False):
             if player.getActiveWeaponItem():
                 npc.broadcastPacket(
                     NpcSay(
                         objId, 0, npc.getNpcId(), "Brother " +
                         player.getName() + ", move your weapon away!!"))
                 npc.addDamageHate(player, 0, 999)
                 npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK,
                                          player)
             else:
                 npc.getAggroList().remove(player)
                 npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE,
                                          None, None)
     return
Пример #28
0
 def onAttack(self, npc, player, damage, isPet, skill) :
   st = player.getQuestState(qn)
   if not st:
     return
   npcId = npc.getNpcId()
   for pc, mobId, in self.killedTrees:
      if pc == player and mobId == npcId:
         return
   if isPet and st.getInt("id") < 16:
      pet = player.getPet()
      if self.getRandom(100) <= 2 and st.getQuestItemsCount(FT_LEAF) >= 0:
         st.takeItems(FT_LEAF,1)
         st.playSound("ItemSound.quest_middle")
         npc.broadcastPacket(NpcSay(npc.getNpcId(),0,npcId,"gives me spirit leaf...!"))
         self.killedTrees.append([player,npcId])
         if st.getQuestItemsCount(FT_LEAF) == 0 :
            st.set("id","15")
            st.set("cond","3")
   return 
Пример #29
0
    def onAdvEvent(self, event, npc, player):
        htmltext = event
        st = player.getQuestState(qn)
        if not st: return

        if event == "32593-04.htm":
            st.set("cond", "1")
            st.setState(State.STARTED)
            st.playSound("ItemSound.quest_accept")
        elif event == "30857-04.htm":
            st.set("cond", "2")
            st.playSound("ItemSound.quest_middle")
        elif event == "32594-03.htm":
            st.set("cond", "3")
            st.playSound("ItemSound.quest_middle")
        elif event == "32595-04.htm":
            monster = self.addSpawn(SHILENSEVIL, 152520, -57685, -3438, 0,
                                    False, 60000, True)
            monster.broadcastPacket(
                NpcSay(monster.getObjectId(), 0, monster.getNpcId(),
                       "You are not the owner of that item!"))
            monster.setRunning()
            monster.addDamageHate(player, 0, 999)
            monster.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK,
                                         st.getPlayer())
        elif event == "32595-08.htm":
            st.set("cond", "5")
            st.playSound("ItemSound.quest_middle")
        elif event == "32596-04.htm":
            st.set("cond", "6")
            st.giveItems(TEXT, 1)
            st.playSound("ItemSound.quest_middle")
        elif event == "32593-08.htm":
            st.addExpAndSp(52518015, 5817676)
            st.unset("cond")
            st.takeItems(TEXT, 1)
            st.takeItems(SCULPTURE, 1)
            st.setState(State.COMPLETED)
            st.exitQuest(False)
            st.playSound("ItemSound.quest_finish")
        return htmltext
Пример #30
0
def autochat(npc, text):
    if npc:
        npc.broadcastPacket(NpcSay(npc.getObjectId(), 0, npc.getNpcId(), text))
    return
Пример #31
0
 def onAdvEvent (self,event,npc, player) :
    htmltext = event
    st = player.getQuestState(qn)
    if not st : return
    if event == "31961-02.htm" :
       st.set("cond","22")
       st.takeItems(Letter,1)
       st.giveItems(Starstone2,1)
       st.playSound("ItemSound.quest_middle")
    if event == "32041-02.htm" :
       st.setState(State.STARTED)
       st.playSound("ItemSound.quest_accept")
       st.set("cond","1")
       st.set("talk","0")
    elif event == "32041-06.htm" :
       st.set("talk","1")
    elif event == "32041-07.htm" :
       st.set("cond","2")
       st.playSound("ItemSound.quest_middle")
       st.set("talk","0")
    elif event == "32041-10.htm" :
       choice = st.getInt("choice")
       if choice == 1 :
          htmltext = "32041-10.htm"
       elif choice == 2 :
          htmltext = "32041-10a.htm"
       elif choice == 3 :
          htmltext = "32041-10b.htm"
    elif event == "32041-11.htm" :
       st.set("talk","1")
    elif event == "32041-18.htm" :
       st.set("talk","2")
    elif event == "32041-20.htm" :
       st.set("cond","6")
       st.playSound("ItemSound.quest_middle")
       st.set("talk","0")
    elif event == "32041-25.htm" :
       st.set("cond","17")
       st.playSound("ItemSound.quest_middle")
       st.giveItems(Detector,1)
    elif event == "32041-28.htm" :
       st.takeItems(Detector2,1)
       st.set("talk","1")
    elif event == "32041-31.htm" :
       choice = st.getInt("choice")
       if choice == 2 :                                # pmq 修改
          htmltext = "32041-37.htm"
    elif event == "32041-32.htm" :
       st.set("cond","21")
       st.giveItems(Letter,1)
       st.playSound("ItemSound.quest_middle")
    elif event == "32041-36.htm" :
       st.set("cond","20")
       st.set("progress","MIDDLE")                     # pmq 修改
       st.playSound("ItemSound.quest_middle")
    elif event == "32046-02.htm" :
       st.set("cond","19")
       st.playSound("ItemSound.quest_middle")
    elif event == "32046-06.htm" :
       st.exitQuest(False)
       st.addExpAndSp(1846611,144270)
       st.playSound("ItemSound.quest_finish")
    elif event == "32047-01.htm" :
       if st.getInt("talk") + st.getInt("talk1") == 2:
          htmltext = "32047-04.htm"
       elif st.getInt("talk") + st.getInt("talk1") + st.getInt("talk2")== 6:
          htmltext = "32047-08.htm"
    elif event == "32047-02.htm" :
       if st.getInt("talk") == 0 :
          st.set("talk","1")
    elif event == "32047-03.htm" :
       if st.getInt("talk1") == 0 :
          st.set("talk1","1")
    elif event == "32047-05.htm" :
       st.set("cond","3")
       st.playSound("ItemSound.quest_middle")
       st.set("talk","0")
       st.set("choice","1")
       st.unset("talk1")
    elif event == "32047-06.htm" :
       st.set("cond","4")
       st.playSound("ItemSound.quest_middle")
       st.set("talk","0")
       st.set("choice","2")
       st.unset("talk1")
    elif event == "32047-07.htm" :
       st.set("cond","5")
       st.playSound("ItemSound.quest_middle")
       st.set("talk","0")
       st.set("choice","3")
       st.unset("talk1")
    elif event == "32047-13b.htm" :                    # pmq 修改
       st.set("cond","7")
       st.playSound("ItemSound.quest_middle")
    elif event == "32047-13a.htm" :
       st.set("cond","10")
       st.playSound("ItemSound.quest_middle")
    elif event == "32047-15.htm" :
       if st.getInt("talk") == 0 :
          st.set("talk","1")
    elif event == "32047-15a.htm" :
       if self.isSpawned == 0 :
          golem = st.addSpawn(Guardian,96977,-110625,-3280,0,False,900000)
          nSay = NpcSay(golem.getObjectId(), 0, golem.getNpcId(), NpcStringId.YOU_S1_YOU_ATTACKED_WENDY_PREPARE_TO_DIE)
          nSay.addStringParameter(player.getName())
          golem.broadcastPacket(nSay)
          golem.setRunning()
          golem.addDamageHate(player,0,999)
          golem.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player)
          self.isSpawned = 1
       else:
          htmltext = "32047-19a.htm"
    elif event == "32047-17a.htm" :
       st.set("cond","12")
       st.playSound("ItemSound.quest_middle")
    elif event == "32047-20.htm" :
          st.set("talk","2")
    elif event == "32047-23.htm" :
       st.set("cond","13")
       st.playSound("ItemSound.quest_middle")
       st.set("talk","0")
    elif event == "32047-25.htm" :
       st.set("cond","15")
       st.playSound("ItemSound.quest_middle")
       st.takeItems(Starstone,1)
    elif event == "32047-30.htm" :
       st.set("talk","2")
    elif event == "32047-33.htm" :
       if st.getInt("cond") == 7:
          st.set("cond","8")
          st.set("talk","0")
          st.playSound("ItemSound.quest_middle")
       elif st.getInt("cond") == 8:
          st.set("cond","9")
          st.playSound("ItemSound.quest_middle")
          htmltext = "32047-34.htm"
    elif event == "32047-34.htm" :
          st.set("cond","9")
          st.playSound("ItemSound.quest_middle")
    elif event == "32047-36a.htm" :                    # pmq 修改
          st.set("cond","23")
          st.playSound("ItemSound.quest_middle")
    elif event == "32047-38.htm" :
       st.giveItems(Starstone2,1)
       st.takeItems(57,3000)
       st.set("cond","26")
       st.playSound("ItemSound.quest_middle")
    elif event == "32047-39" :                         # pmq 修改
         htmltext = "32047-39.htm"
         if st.get("progress") :
            if st.get("progress") == "MIDDLE":
               htmltext = "32047-41.htm"
    elif event == "32050-02.htm" :
       st.playSound("ItemSound.armor_wood_3")
       st.set("talk","1")
    elif event == "32050-04.htm" :
       st.set("cond","14")
       st.giveItems(Starstone,1)
       st.playSound("ItemSound.quest_middle")
       st.set("talk","0")
    elif event == "32050-04a.htm" :                    # pmq 修改
       st.set("cond","24")
       st.giveItems(Starstone2,1)
       st.playSound("ItemSound.quest_middle")
    return htmltext