コード例 #1
0
ファイル: MarketTown.py プロジェクト: taiBsu/l2jfree-ct2.3
 def onKill(self, npc, player, isPet):
     if self.worlds.has_key(npc.getInstanceId()):
         world = self.worlds[npc.getInstanceId()]
         npcId = npc.getNpcId()
         npc.getSpawn().stopRespawn()
         if npcId == KEYMASTER:
             if Rnd.get(100) >= 40:
                 text = "Oh no my key............."
                 dropItem(npc, KEY, 1, player)
                 spawnAmaskari(self, world)
             else:
                 text = "You will never get my key!"
             npc.broadcastPacket(NpcSay(npc.getObjectId(), 0, npcId, text))
         elif npcId == CHARMED_NATIVE:
             HellboundManager.getInstance().decreaseTrustPoints(10)
         elif npcId == AMASKARI:
             for slave in world.AmaskariSlaves.npclist:
                 slave.setRunning()
                 slave.getAI().setIntention(
                     CtrlIntention.AI_INTENTION_MOVE_TO,
                     L2CharPosition(17384, 251788, -2015, 0))
                 self.startQuestTimer("decayNpc", 8000, slave, None)
                 slave.broadcastPacket(
                     NpcSay(slave.getObjectId(), 0, CHARMED_NATIVE,
                            SLAVES_TEXT[Rnd.get(len(SLAVES_TEXT))]))
     return
コード例 #2
0
ファイル: __init__.py プロジェクト: taiBsu/l2jfree-ct2.3
 def onKill(self, npc, player, isPet):
     st = player.getQuestState(qn)
     if not st: return
     if st.getState() != State.STARTED: return
     npcId = npc.getNpcId()
     cond = st.getInt("cond")
     if npcId == Angel and cond == 12:
         st.set("angel", "1")
         self.isAngelSpawned = 0
         npc.broadcastPacket(
             NpcSay(npc.getObjectId(), 0, npc.getNpcId(),
                    "Grr. I've been hit..."))
         if self.isKatenarSpawned == 0:
             katenar = st.addSpawn(32242, 36110, 191921, -3712, 60000)
             katenar.broadcastPacket(
                 NpcSay(katenar.getObjectId(), 0, katenar.getNpcId(),
                        "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 st.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
コード例 #3
0
ファイル: BasicInstance.py プロジェクト: taiBsu/l2jfree-ct2.3
 def npcTalk(self, npc, text, chan=0, broadcaster=npc):
     if isinstance(text, []):
         broadcaster.broadcastPacket(
             NpcSay(npc.getObjId, chan, npc.getNpcId(),
                    text[Rnd.get(len(text))]))
     else:
         broadcaster.broadcastPacket(
             NpcSay(npc.getObjId, chan, npc.getNpcId(), text))
コード例 #4
0
 def onAttack (self, npc, player, damage, isPet, skill) :
     objId = npc.getObjectId()
     if self.FirstAttacked :
        if Rnd.get(40) : return
        npc.broadcastPacket(NpcSay(objId, 0, npc.getNpcId(), "Come on, I'll take you on!"))
     else :
        self.FirstAttacked = True
        npc.broadcastPacket(NpcSay(objId, 0, npc.getNpcId(), "How dare you interrupt a sacred duel! You must be taught a lesson!"))
     return 
コード例 #5
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(),
                    "Your rear is practically unguarded!"))
     else:
         self.FirstAttacked = True
         if Rnd.get(4): return
         npc.broadcastPacket(
             NpcSay(objId, 0, npc.getNpcId(), "Watch your back!"))
     return
コード例 #6
0
 def onAttack(self, npc, player, damage, isPet, skill):
     objId = npc.getObjectId()
     if self.FirstAttacked:
         if Rnd.get(40): return
         npc.broadcastPacket(
             NpcSay(objId, 0, npc.getNpcId(),
                    "Hey! Were having a duel here!"))
     else:
         self.FirstAttacked = True
         npc.broadcastPacket(
             NpcSay(objId, 0, npc.getNpcId(),
                    "How dare you interrupt our fight! Hey guys, help!"))
     return
コード例 #7
0
ファイル: __init__.py プロジェクト: taiBsu/l2jfree-ct2.3
 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
コード例 #8
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
コード例 #9
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(), "Dear ultimate power!!!"))
     else:
         self.FirstAttacked = True
     return
コード例 #10
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(),
                    "Destroy the enemy, my brothers!"))
     else:
         self.FirstAttacked = True
     return
コード例 #11
0
ファイル: __init__.py プロジェクト: taiBsu/l2jfree-ct2.3
 def onAdvEvent(self, event, npc, player):
     st = player.getQuestState(qn)
     htmltext = event
     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(GhostofvonHellmann, 51432, -54570, -3136,
                             1800000)
         ghost.broadcastPacket(
             NpcSay(ghost.getObjectId(), 0, ghost.getNpcId(),
                    "Who awoke me?"))
     elif event == "31523-05.htm":
         st.startQuestTimer("ghost_timer", GHOST_TIMER)
     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
コード例 #12
0
ファイル: MarketTown.py プロジェクト: taiBsu/l2jfree-ct2.3
 def onAttack(self, npc, player, damage, isPet, skill):
     st = player.getQuestState(qn)
     if self.worlds.has_key(npc.getInstanceId()):
         world = self.worlds[npc.getInstanceId()]
         npcId = npc.getNpcId()
         if npcId == AMASKARI:
             if not world.amaskariAttacked:
                 world.amaskariAttacked = True
                 sendSlaves(self, player, world)
                 text = AMASKARI_TEXT[Rnd.get(len(AMASKARI_TEXT))]
                 npc.broadcastPacket(
                     NpcSay(npc.getObjectId(), 0, npcId, text))
     return
コード例 #13
0
ファイル: __init__.py プロジェクト: taiBsu/l2jfree-ct2.3
 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")
コード例 #14
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.getNpcId(),
                 "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
コード例 #15
0
ファイル: __init__.py プロジェクト: taiBsu/l2jfree-ct2.3
 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.getNpcId()
         condition, maxcount, chance, itemList = DROPLIST[npcId]
         random = leader_st.getRandom(100)
         cond = leader_st.getInt("cond")
         if cond == condition and random < chance:
             if len(itemList) > 1:
                 stoneRandom = leader_st.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.getNpcId(),
                             "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
コード例 #16
0
ファイル: __init__.py プロジェクト: taiBsu/l2jfree-ct2.3
 def onKill(self, npc, player, isPet):
     self.cancelQuestTimer("npc_cleanup", None, 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 = "You are strong. This was a mistake."
         if st.getRandom(1):
             string = "You have good luck. I shall return."
         npc.broadcastPacket(
             NpcSay(npc.getObjectId(), 0, npc.getNpcId(), string))
         st.giveItems(10867, 1)
         st.set("cond", "2")
         st.playSound("ItemSound.quest_middle")
     return
コード例 #17
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 st.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
コード例 #18
0
ファイル: __init__.py プロジェクト: taiBsu/l2jfree-ct2.3
def runFifthRoom(self,world,player):
    world.status = 9
    world.foundBeleth = 0
    world.attacked = False
    openDoor(D6,world.instanceId)
    world.FifthRoom = PyObject()
    world.FifthRoom.npclist = []
    a,b,c,d,e,f,g = beleths[Rnd.get(len(beleths))]
    world.FifthRoom.belethOrder = []
    world.FifthRoom.belethOrder.append([a,b,c,d,e,f,g])
    temp = [a,b,c,d,e,f,g]
    idx = 0
    for x in range(148720,149175,65):
        newNpc = self.addSpawn(BS[idx],x,182145,-6117,48810,False,0,False,world.instanceId)
        world.FifthRoom.npclist.append([newNpc,idx,temp[idx]])
        if temp[idx] == 1 and Rnd.get(100) < 50:
            newNpc.broadcastPacket(NpcSay(newNpc.getObjectId(),0,newNpc.getNpcId(),"You will never pass this test!"))
        idx += 1
    if debug: print "DarkCloudMansion: spawned fifth room"
    if debug: print str(world.FifthRoom.npclist)
コード例 #19
0
 def onAdvEvent(self, event, npc, player):
     if event == "CheckIfSafe":
         if npc.isDead():
             cancelTimers(self, npc)
             HellboundManager.getInstance().decreaseTrustPoints(30)
             return
         if (npc.getX() >= -5967 and npc.getX() <= -4163) and (
                 npc.getY() >= 251137
                 and npc.getY() <= 251970) and (npc.getZ() >= -3400
                                                and npc.getZ() <= -3100):
             HellboundManager.getInstance().addTrustPoints(30)
             npc.broadcastPacket(
                 NpcSay(
                     npc.getObjectId(), 0, npc.getNpcId(),
                     "Thank you, you saved me! I'll remember you my whole life!"
                 ))
             npc.decayMe()
             cancelTimers(self, npc)
         else:
             if debug:
                 print "Not on position. Currently: X: " + str(
                     npc.getX()) + " Y: " + str(npc.getY()) + " Z: " + str(
                         npc.getZ())
             self.startQuestTimer("CheckIfSafe", 10000, npc, None)
     elif event == "CallKillers":
         if npc.isDead():
             cancelTimers(self, npc)
             HellboundManager.getInstance().decreaseTrustPoints(30)
             return
         for object in npc.getKnownList().getKnownObjects().values():
             if object != None:
                 if isinstance(object, L2MonsterInstance):
                     objectId = object.getNpcId()
                     if objectId in [22347, 22344, 22346]:
                         object.setTarget(npc)
                         object.addDamageHate(npc, 0, 999)
                         object.setIsRunning(True)
                         object.getAI().setIntention(
                             CtrlIntention.AI_INTENTION_ATTACK)
         self.startQuestTimer("CallKillers", 1000, npc, None)
     return
コード例 #20
0
ファイル: MarketTown.py プロジェクト: taiBsu/l2jfree-ct2.3
 def onTalk(self, npc, player):
     npcId = npc.getNpcId()
     if npcId == KANAF:
         if HellboundManager.getInstance().getCurrentLevel() >= 10:
             instanceId = 0
             tele = PyObject()
             tele.x = 13881
             tele.y = 255491
             tele.z = -2025
             instanceId = enterInstance(self, player, "MarketTown.xml",
                                        tele)
             if instanceId == 0:
                 return
         else:
             htmltext = "You may not yet enter the Market Town..."
             return htmltext
     elif npcId == STELE:
         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(330000)
                     self.startQuestTimer("finishInstance", 300000, npc,
                                          None)
     elif npcId == PRISONER:
         world = self.worlds[npc.getInstanceId()]
         npc.broadcastPacket(
             NpcSay(npc.getObjectId(), 0, npc.getNpcId(),
                    "Thank you, i hope Amaskari wont notice!"))
         self.startQuestTimer("decayNpc", 15000, npc, None)
         HellboundManager.getInstance().addTrustPoints(10)
         if not world.guardsSpawned:
             callGuards(self, npc, player, world)
             world.guardsSpawned = True
     return
コード例 #21
0
 def onAdvEvent(self, event, npc, player):
     st = player.getQuestState(qn)
     if not st: return
     htmltext = event
     if event == "32018-04.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "7")
         st.takeItems(Letter2, 1)
     elif event == "32020-02.htm":
         st.setState(State.STARTED)
         st.playSound("ItemSound.quest_accept")
         st.set("cond", "1")
     elif event == "32020-05.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "3")
         st.takeItems(Letter, 1)
     elif event in ["32020-06.htm", "32020-08a.htm"]:
         st.exitQuest(1)
         st.playSound("ItemSound.quest_finish")
     elif event in ["32020-08.htm", "32020-07a.htm"]:
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "4")
     elif event == "32020-12.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "5")
     elif event == "32020-16.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "10")
         st.takeItems(Report, 1)
     elif event == "32020-18.htm":
         if st.getQuestItemsCount(Tablet) == 0:
             st.playSound("ItemSound.quest_middle")
             st.set("cond", "11")
             htmltext = "32020-19.htm"
         else:
             st.exitQuest(0)
             st.playSound("ItemSound.quest_finish")
             st.rewardItems(57, 115673)
             st.addExpAndSp(493595, 40442)
     elif event == "32020-19.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "11")
     elif event == "32022-02.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "9")
         man = st.addSpawn(Suspicious, 104562, -107598, -3688, 0, False,
                           4000)
         man.broadcastPacket(
             NpcSay(man.getObjectId(), 0, man.getNpcId(), "We meet again."))
         self.startQuestTimer("2", 3700, man, player)
         st.giveItems(Report, 1)
     elif event == "Sculpture-04.htm":
         st.set("talk", "1")
         htmltext = "Sculpture-05.htm"
         st.set(str(npc.getNpcId()), "1")
     elif event == "Sculpture-04a.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "8")
         man = st.addSpawn(Suspicious, 117890, -126478, -2584, 0, False,
                           4000)
         man.broadcastPacket(
             NpcSay(man.getObjectId(), 0, man.getNpcId(),
                    "This looks like the right place..."))
         self.startQuestTimer("1", 3700, man, player)
         htmltext = "Sculpture-04.htm"
         if st.getInt(str(Sculpture1)) == 0 and st.getInt(
                 str(Sculpture2)) == 0:
             st.giveItems(Tablet, 1)
     elif event == "Sculpture-05.htm":
         st.set(str(npc.getNpcId()), "1")
     elif event == "1":
         npc.broadcastPacket(
             NpcSay(npc.getObjectId(), 0, npc.getNpcId(),
                    "I see someone. Is this fate?"))
     elif event == "2":
         npc.broadcastPacket(
             NpcSay(
                 npc.getObjectId(), 0, npc.getNpcId(),
                 "Don't bother trying to find out more about me. Follow your own destiny."
             ))
     return htmltext
コード例 #22
0
ファイル: __init__.py プロジェクト: taiBsu/l2jfree-ct2.3
 def onAdvEvent(self, event, npc, player):
     st = player.getQuestState(qn)
     if not st: return
     htmltext = event
     if event == "30621-01.htm":
         if player.getLevel() < 40:
             htmltext = "30621-00.htm"
     elif event == "30621-04.htm":
         st.playSound("ItemSound.quest_accept")
         st.set("cond", "1")
         st.giveItems(NicolasMap, 1)
     elif event == "30673-03.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "2")
         st.takeItems(NicolasMap, -1)
     elif event == "30673-05.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "3")
     elif event == "30673-09.htm":
         if st.getQuestItemsCount(BrokenMetal):
             htmltext = "30673-10.htm"
         elif st.getQuestItemsCount(Metal):
             st.giveItems(Certificate, 1)
         if player.getLevel() < 50:
             st.addExpAndSp(203717, 14032)
         st.rewardItems(Adena, 72527)
         st.exitQuest(False)
         st.playSound("ItemSound.quest_finish")
     elif event == "32366-02.htm":
         alarm = st.addSpawn(32367, 16491, 113563, -9064)
         st.set("step", "1")
         st.playSound("ItemSound3.sys_siren")
         self.startQuestTimer("1", 60000, alarm, player)
         time.sleep(1)
         player.sendPacket(
             NpcSay(
                 alarm.getObjectId(), 0, alarm.getNpcId(),
                 "Intruder Alert! The alarm will self-destruct in 2 minutes."
             ))
     elif event == "32366-05.htm":
         st.unset("step")
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "5")
         st.giveItems(BrokenMetal, 1)
     elif event == "32366-06.htm":
         st.unset("step")
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "4")
         st.giveItems(Metal, 1)
     elif event == "32367-02.htm":
         st.set("pass", "0")
     elif event[0:7] == "correct":
         st.set("pass", str(st.getInt("pass") + 1))
         htmltext = event[8:]
         if htmltext == "32367-07.htm":
             if st.getInt("pass") == 4:
                 st.set("step", "3")
                 self.cancelQuestTimer("1", npc, player)
                 self.cancelQuestTimer("2", npc, player)
                 self.cancelQuestTimer("3", npc, player)
                 self.cancelQuestTimer("4", npc, player)
                 st.unset("pass")
                 npc.deleteMe()
             else:
                 htmltext == "32367-06.htm"
     elif event == "1":
         player.sendPacket(
             NpcSay(
                 npc.getObjectId(), 0, npc.getNpcId(),
                 "The alarm will self-destruct in 60 seconds. Enter passcode to override."
             ))
         self.startQuestTimer("2", 30000, npc, player)
         return
     elif event == "2":
         player.sendPacket(
             NpcSay(
                 npc.getObjectId(), 0, npc.getNpcId(),
                 "The alarm will self-destruct in 30 seconds. Enter passcode to override."
             ))
         self.startQuestTimer("3", 20000, npc, player)
         return
     elif event == "3":
         player.sendPacket(
             NpcSay(
                 npc.getObjectId(), 0, npc.getNpcId(),
                 "The alarm will self-destruct in 10 seconds. Enter passcode to override."
             ))
         self.startQuestTimer("4", 10000, npc, player)
         return
     elif event == "4":
         player.sendPacket(
             NpcSay(npc.getObjectId(), 0, npc.getNpcId(),
                    "Recorder crushed."))
         npc.deleteMe()
         st.set("step", "2")
         return
     return htmltext
コード例 #23
0
ファイル: __init__.py プロジェクト: taiBsu/l2jfree-ct2.3
def AutoChat(npc, text):
    chars = npc.getKnownList().getKnownPlayers().values().toArray()
    if chars != None:
        for pc in chars:
            sm = NpcSay(npc.getObjectId(), 0, npc.getNpcId(), text)
            pc.sendPacket(sm)
コード例 #24
0
 def onAdvEvent(self, event, npc, player):
     st = player.getQuestState(qn)
     if not st: return
     htmltext = event
     if event == "31349-02.htm":
         st.playSound("ItemSound.quest_accept")
         st.set("cond", "1")
         st.setState(State.STARTED)
     elif event == "31349-03.htm":
         if st.getQuestItemsCount(SuspiciousTotem):
             htmltext = "31349-05.htm"
         else:
             st.playSound("ItemSound.quest_middle")
             st.set("cond", "2")
     elif event == "31349-10.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "4")
     elif event == "31348-02.htm":
         st.takeItems(SuspiciousTotem, -1)
     elif event == "31348-07.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "5")
         st.giveItems(GemstoneKey, 1)
     elif event == "31522-04.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "6")
     elif event == "31535-03.htm":
         if st.getInt("step") == 0:
             st.set("step", "1")
             triol = st.addSpawn(Triol, 59712, -47568, -2712, 0, 0, 300000,
                                 1)
             time.sleep(1)
             triol.broadcastPacket(
                 NpcSay(
                     triol.getObjectId(), 0, triol.getNpcId(),
                     "That box was sealed by my master. Don't touch it!"))
             triol.setRunning()
             triol.addDamageHate(player, 0, 999)
             triol.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK,
                                        player)
             st.playSound("ItemSound.quest_middle")
             st.set("cond", "7")
         elif st.getInt("step") == 2:
             htmltext = "31535-04.htm"
     elif event == "31535-05.htm":
         st.giveItems(Contract, 1)
         st.takeItems(GemstoneKey, -1)
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "9")
     elif event == "31532-02.htm":
         st.takeItems(Contract, -1)
     elif event == "31532-06.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "11")
     elif event == "31531-02.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "12")
         st.addSpawn(Coffin, 60104, -35820, -664, 0, 0, 20000, 1)
     elif event == "31532-18.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "15")
     elif event == "31522-12.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "16")
     elif event == "31348-10.htm":
         st.takeItems(TotemDoll, -1)
     elif event == "31348-15.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "17")
     elif event == "31348-16.htm":
         st.playSound("ItemSound.quest_middle")
         st.set("cond", "18")
     elif event == "31532-20.htm":
         st.giveItems(905, 2)
         st.giveItems(874, 1)
         st.takeItems(7063, -1)
         st.addExpAndSp(572277, 53750)
         st.unset("cond")
         st.exitQuest(False)
         st.playSound("ItemSound.quest_finish")
     elif event == "31522-15.htm":
         st.giveItems(936, 1)
         st.giveItems(874, 1)
         st.takeItems(7063, -1)
         st.addExpAndSp(572277, 53750)
         st.unset("cond")
         st.exitQuest(False)
         st.playSound("ItemSound.quest_finish")
     return htmltext
コード例 #25
0
ファイル: __init__.py プロジェクト: taiBsu/l2jfree-ct2.3
 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 > 1:
             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.playSound("ItemSound.quest_middle")
     elif event == "32046-02.htm":
         st.set("cond", "19")
         st.playSound("ItemSound.quest_middle")
     elif event == "32046-06.htm":
         st.addExpAndSp(410358, 32060)
         st.exitQuest(False)
         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-13.htm":
         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)
             golem.broadcastPacket(
                 NpcSay(
                     golem.getObjectId(), 0, golem.getNpcId(),
                     "You, " + st.getPlayer().getName() +
                     ", you attacked Wendy. Prepare to die!"))
             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-38.htm":
         st.giveItems(Starstone2, 1)
         st.takeItems(57, 3000)
         st.set("cond", "26")
         st.playSound("ItemSound.quest_middle")
     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")
     return htmltext
コード例 #26
0
 def onAdvEvent(self, event, npc, player):
     if event == "Autochat":
         text = TEXTS[Rnd.get(len(TEXTS))]
         npc.broadcastPacket(
             NpcSay(npc.getObjectId(), 0, npc.getNpcId(), str(text)))
         return
     elif event == "SpawnYogi":
         self.yogiSpawnList = []
         yogi = self.addSpawn(YOGI, 82941, 149318, -3473, 39138, False, 0,
                              False, 0)
         self.yogiSpawnList.append(yogi)
         yogi = self.addSpawn(YOGI, 148022, -55481, -2738, 34214, False, 0,
                              False, 0)
         self.yogiSpawnList.append(yogi)
         yogi = self.addSpawn(YOGI, 15776, 142872, -2710, 17423, False, 0,
                              False, 0)
         self.yogiSpawnList.append(yogi)
         yogi = self.addSpawn(YOGI, -14067, 123290, -3121, 18774, False, 0,
                              False, 0)
         self.yogiSpawnList.append(yogi)
         yogi = self.addSpawn(YOGI, 87015, -143229, -1296, 4092, False, 0,
                              False, 0)
         self.yogiSpawnList.append(yogi)
         yogi = self.addSpawn(YOGI, 117104, 77017, -2699, 32767, False, 0,
                              False, 0)
         self.yogiSpawnList.append(yogi)
         yogi = self.addSpawn(YOGI, 146772, 25906, -2017, 57344, False, 0,
                              False, 0)
         self.yogiSpawnList.append(yogi)
         yogi = self.addSpawn(YOGI, 43984, -47713, -801, 47497, False, 0,
                              False, 0)
         self.yogiSpawnList.append(yogi)
         yogi = self.addSpawn(YOGI, 82882, 53098, -1500, 17351, False, 0,
                              False, 0)
         self.yogiSpawnList.append(yogi)
         yogi = self.addSpawn(YOGI, -83127, 150941, -3133, 0, False, 0,
                              False, 0)
         self.yogiSpawnList.append(yogi)
         yogi = self.addSpawn(YOGI, 111333, 219424, -3550, 48247, False, 0,
                              False, 0)
         self.yogiSpawnList.append(yogi)
         if AUTODESPAWN:
             self.startQuestTimer("DespawnYogi", 1800000, None, None)
         return
     elif event == "DespawnYogi":
         DATE = getDate(self)
         if int(DATE) <= int(EVENTENDDATE):
             self.startQuestTimer("DespawnYogi", 1800000, None, None)
         else:
             for yogi in self.yogiSpawnList:
                 yogi.decayMe()
             print "Master of Enchanting event is finished"
         return
     st = player.getQuestState(qn)
     if not st: st = self.newQuestState(player)
     htmltext = event
     npcId = npc.getNpcId()
     if npcId == YOGI:
         if event == "32599.htm":
             htmltext = st.showHtmlFile("32599.htm").replace(
                 "Adena1", str(1000 * RATE))
             htmltext = htmltext.replace("Adena2", str(6000 * RATE))
             htmltext = htmltext.replace("Adena3", str(77777 * RATE))
             htmltext = htmltext.replace("Adena4", str(777770 * RATE))
         elif event == "32599-01.htm":
             if st.getQuestItemsCount(STAFF) >= 1 or st.getQuestItemsCount(
                     ADENA) < 1000 * RATE:
                 htmltext = "32599-02.htm"
             else:
                 st.takeItems(ADENA, 1000 * RATE)
                 st.giveItems(STAFF, 1)
         elif event == "32599-03.htm":
             if st.getQuestItemsCount(ADENA) < 6000 * RATE:
                 htmltext = "32599-02.htm"
             else:
                 lastUsed = check(self, player)
                 if lastUsed == 0:
                     st.takeItems(ADENA, 6000 * RATE)
                     st.giveItems(SCROLL, 24)
                 else:
                     remainingTime = (lastUsed + 21600) - (
                         System.currentTimeMillis() / 1000)
                     player.sendPacket(
                         SystemMessage.sendString("Remaining time: " +
                                                  str(remainingTime) +
                                                  " seconds"))
         elif event == "32599-05.htm":
             if st.getQuestItemsCount(ADENA) < 77777 * RATE:
                 htmltext = "32599-02.htm"
             else:
                 st.takeItems(ADENA, 77777 * RATE)
                 st.giveItems(SCROLL, 1)
         elif event == "32599-06.htm":
             if st.getQuestItemsCount(ADENA) < 777770 * RATE:
                 htmltext = "32599-02.htm"
             else:
                 st.takeItems(ADENA, 777770 * RATE)
                 st.giveItems(SCROLL, 10)
         elif event == "Rewards":
             account = player.getAccountName()
             if account in FORBIDDEN_ACCOUNTS:
                 player.sendPacket(
                     SystemMessage.sendString(
                         "Your account is not allowed to participate in the event. Contact a GameMaster if you need explanations."
                     ))
                 return ""
             weapon = player.getInventory().getPaperdollItem(
                 Inventory.PAPERDOLL_LRHAND)
             if weapon:
                 weaponId = weapon.getItemId()
                 if weaponId == STAFF and weapon.getEnchantLevel() > 3:
                     enchant = weapon.getEnchantLevel()
                     if LOGVALUE > 0 and enchant >= LOGVALUE:
                         print "Master of Enchanting event: Player " + str(
                             player.getName()) + " brought a +" + str(
                                 enchant) + " weapon"
                     rewardPlayer(self, st, enchant)
                     htmltext = "32599-08.htm"
                 else:
                     htmltext = "32599-07.htm"
             else:
                 htmltext = "32599-07.htm"
     return htmltext
コード例 #27
0
 def onAdvEvent(self, event, npc, player):
     if event == "BenomTeleSpawn":
         self.addSpawn(BenomTeleport, 11013, -49629, -547, 13400, False, 0)
     elif event == "BenomRaidRoomSpawn":
         if self.BenomIsSpawned == 0 and checkState() == 0:
             self.addSpawn(Benom, 12047, -49211, -3009, 0, False, 0)
             self.BenomIsSpawned = 1
     elif event == "BenomRaidSiegeSpawn":
         if checkState() == 0:
             if self.BenomIsSpawned == 0:
                 self.addSpawn(Benom, 11025, -49152, -537, 0, False, 0)
                 self.BenomIsSpawned = 1
             elif self.BenomIsSpawned == 1:
                 self.Benom.teleToLocation(11025, -49152, -537)
             self.startQuestTimer("BenomSpawnEffect", 100, npc, None)
             self.startQuestTimer("BenomBossDespawn", 5400000, npc, None)
             self.cancelQuestTimer("BenomSpawn", npc, None)
             unspawnNpc(BenomTeleport)
     elif event == "BenomSpawnEffect":
         npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE)
         npc.broadcastPacket(
             SpecialCamera(npc.getObjectId(), 200, 0, 150, 0, 5000))
         npc.broadcastPacket(SocialAction(npc.getObjectId(), 3))
         self.startQuestTimer("BenomWalk", 5000, npc, None)
         self.BenomWalkRouteStep = 0
     elif event == "Attacking":
         NumPlayers = []
         for player in npc.getKnownList().getKnownPlayers().values():
             NumPlayers.append(player)
         if len(NumPlayers) > 0:
             target = NumPlayers[Rnd.get(len(NumPlayers))]
             npc.addDamageHate(target, 0, 999)
             npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK,
                                      target)
             self.startQuestTimer("Attacking", 2000, npc, player)
         elif len(NumPlayers) == 0:
             self.startQuestTimer("BenomWalkFinish", 2000, npc, None)
     elif event == "BenomWalkFinish":
         if npc.getCastle().getSiege().getIsInProgress():
             self.cancelQuestTimer("Attacking", npc, player)
             X = benomWalkRoutes[self.BenomWalkRouteStep][0]
             Y = benomWalkRoutes[self.BenomWalkRouteStep][1]
             Z = benomWalkRoutes[self.BenomWalkRouteStep][2]
             npc.teleToLocation(X, Y, Z)
             npc.setWalking()
             self.BenomWalkRouteStep = 0
             self.startQuestTimer("BenomWalk", 2200, npc, None)
     elif event == "BenomWalk":
         if self.BenomWalkRouteStep == 33:
             self.BenomWalkRouteStep = 0
             self.startQuestTimer("BenomWalk", 100, npc, None)
         else:
             self.startQuestTimer("Talk", 100, npc, None)
             if self.BenomWalkRouteStep == 14:
                 self.startQuestTimer("DoorOpen", 15000, None, None)
                 self.startQuestTimer("DoorClose", 23000, None, None)
             if self.BenomWalkRouteStep == 32:
                 self.startQuestTimer("DoorOpen", 500, None, None)
                 self.startQuestTimer("DoorClose", 4000, None, None)
             Time = WalkTimes[self.BenomWalkRouteStep]
             npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE)
             X = benomWalkRoutes[self.BenomWalkRouteStep][0]
             Y = benomWalkRoutes[self.BenomWalkRouteStep][1]
             Z = benomWalkRoutes[self.BenomWalkRouteStep][2]
             npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO,
                                      L2CharPosition(X, Y, Z, 0))
             self.BenomWalkRouteStep = int(self.BenomWalkRouteStep) + 1
             self.startQuestTimer("BenomWalk", Time, npc, None)
     elif event == "DoorOpen":
         DoorTable.getInstance().getDoor(20160005).openMe()
     elif event == "DoorClose":
         DoorTable.getInstance().getDoor(20160005).closeMe()
     elif event == "Talk":
         if Rnd.get(100) < 40:
             npc.broadcastPacket(
                 NpcSay(npc.getObjectId(), 0, npc.getNpcId(),
                        BenomSpeak[Rnd.get(4)]))
     elif event == "BenomBossDespawn":
         updateState(0)
         self.BenomIsSpawned = 0
         unspawnNpc(Benom)
     return
コード例 #28
0
ファイル: __init__.py プロジェクト: taiBsu/l2jfree-ct2.3
    def onKill(self, npc, player, isPet):
        st = player.getQuestState(qn)
        if not st: return
        if st.getState() != State.STARTED: return

        npcId = npc.getNpcId()
        if npcId == 20479:
            st.set("id", "0")
            if st.getInt("cond") and st.getQuestItemsCount(
                    FIRE_CHARM
            ) == 1 and st.getQuestItemsCount(KASHA_BEAR_PELT) < 1:
                if st.getQuestItemsCount(
                        KASHA_BEAR_PELT) + st.getQuestItemsCount(
                            KASHA_BSPIDER_HUSK) + st.getQuestItemsCount(
                                FIERY_EGG1) == 2:
                    st.giveItems(KASHA_BEAR_PELT, 1)
                    st.playSound("ItemSound.quest_middle")
                    st.set("cond", "2")
                else:
                    st.giveItems(KASHA_BEAR_PELT, 1)
                    st.playSound("ItemSound.quest_itemget")
        elif npcId == 27319:
            if st.getInt("cond") == 14:
                st.set("cond", "15")
                st.playSound("ItemSound.quest_middle")
                npc.broadcastPacket(
                    NpcSay(
                        npc.getObjectId(), 0, npc.getNpcId(),
                        "My dear friend of " + player.getName() +
                        ", who has gone on ahead of me!"))
            elif st.getInt("cond") == 16:
                st.set("cond", "17")
                st.playSound("ItemSound.quest_middle")
                npc.broadcastPacket(
                    NpcSay(
                        npc.getObjectId(), 0, npc.getNpcId(),
                        "Listen to Tejakar Gandi, young Oroka! The spirit of the slain leopard is calling you, "
                        + player.getName() + "!"))
            elif st.getInt("cond") == 18:
                st.set("cond", "19")
                st.playSound("ItemSound.quest_middle")
        elif npcId == 20478:
            st.set("id", "0")
            if st.getInt("cond") and st.getQuestItemsCount(
                    FIRE_CHARM
            ) == 1 and st.getQuestItemsCount(KASHA_BSPIDER_HUSK) < 1:
                if st.getQuestItemsCount(
                        KASHA_BEAR_PELT) + st.getQuestItemsCount(
                            KASHA_BSPIDER_HUSK) + st.getQuestItemsCount(
                                FIERY_EGG1) == 2:
                    st.giveItems(KASHA_BSPIDER_HUSK, 1)
                    st.playSound("ItemSound.quest_middle")
                    st.set("cond", "2")
                else:
                    st.giveItems(KASHA_BSPIDER_HUSK, 1)
                    st.playSound("ItemSound.quest_itemget")
        elif npcId == 20415:
            st.set("id", "0")
            if st.getInt("cond") and st.getQuestItemsCount(
                    FIRE_CHARM) == 1 and st.getQuestItemsCount(FIERY_EGG1) < 1:
                if st.getQuestItemsCount(
                        KASHA_BEAR_PELT) + st.getQuestItemsCount(
                            KASHA_BSPIDER_HUSK) + st.getQuestItemsCount(
                                FIERY_EGG1) == 2:
                    st.giveItems(FIERY_EGG1, 1)
                    st.playSound("ItemSound.quest_middle")
                    st.set("cond", "2")
                else:
                    st.giveItems(FIERY_EGG1, 1)
                    st.playSound("ItemSound.quest_itemget")
        elif npcId == 20335:
            st.set("id", "0")
            if st.getInt("cond") and st.getQuestItemsCount(
                    FLAME_CHARM
            ) == 1 and st.getQuestItemsCount(GRIZZLY_BLOOD) < 3:
                if st.getQuestItemsCount(GRIZZLY_BLOOD) == 2:
                    st.giveItems(GRIZZLY_BLOOD, 1)
                    st.playSound("ItemSound.quest_middle")
                    st.set("cond", "7")
                else:
                    st.giveItems(GRIZZLY_BLOOD, 1)
                    st.playSound("ItemSound.quest_itemget")
        elif npcId == 20038:
            st.set("id", "0")
            if st.getInt("cond") and st.getQuestItemsCount(
                    SPIRIT_NET) == 1 and st.getQuestItemsCount(
                        BOUND_DURKA_SPIRIT
                    ) == 0 and st.getQuestItemsCount(DURKA_PARASITE) < 8:
                n = st.getRandom(10)
                if st.getQuestItemsCount(DURKA_PARASITE) == 5 and n < 1:
                    st.takeItems(DURKA_PARASITE,
                                 st.getQuestItemsCount(DURKA_PARASITE))
                    st.addSpawn(27056)
                    st.playSound("ItemSound.quest_itemget")
                elif st.getQuestItemsCount(DURKA_PARASITE) == 6 and n < 2:
                    st.takeItems(DURKA_PARASITE,
                                 st.getQuestItemsCount(DURKA_PARASITE))
                    st.playSound("ItemSound.quest_itemget")
                    st.addSpawn(27056)
                elif st.getQuestItemsCount(DURKA_PARASITE) == 7 and n < 2:
                    st.takeItems(DURKA_PARASITE,
                                 st.getQuestItemsCount(DURKA_PARASITE))
                    st.playSound("ItemSound.quest_itemget")
                    st.addSpawn(27056)
                elif st.getQuestItemsCount(DURKA_PARASITE) >= 7:
                    st.addSpawn(27056)
                    st.playSound("ItemSound.quest_itemget")
                    st.takeItems(DURKA_PARASITE,
                                 st.getQuestItemsCount(DURKA_PARASITE))
                else:
                    st.giveItems(DURKA_PARASITE, 1)
                    st.playSound("ItemSound.quest_itemget")
        elif npcId == 20043:
            st.set("id", "0")
            if st.getInt("cond") and st.getQuestItemsCount(
                    SPIRIT_NET) == 1 and st.getQuestItemsCount(
                        BOUND_DURKA_SPIRIT
                    ) == 0 and st.getQuestItemsCount(DURKA_PARASITE) < 8:
                n = st.getRandom(10)
                if st.getQuestItemsCount(DURKA_PARASITE) == 5 and n < 1:
                    st.takeItems(DURKA_PARASITE,
                                 st.getQuestItemsCount(DURKA_PARASITE))
                    st.addSpawn(27056)
                    st.playSound("ItemSound.quest_itemget")
                elif st.getQuestItemsCount(DURKA_PARASITE) == 6 and n < 2:
                    st.takeItems(DURKA_PARASITE,
                                 st.getQuestItemsCount(DURKA_PARASITE))
                    st.playSound("ItemSound.quest_itemget")
                    st.addSpawn(27056)
                elif st.getQuestItemsCount(DURKA_PARASITE) == 7 and n < 2:
                    st.takeItems(DURKA_PARASITE,
                                 st.getQuestItemsCount(DURKA_PARASITE))
                    st.playSound("ItemSound.quest_itemget")
                    st.addSpawn(27056)
                elif st.getQuestItemsCount(DURKA_PARASITE) >= 7:
                    st.addSpawn(27056)
                    st.playSound("ItemSound.quest_itemget")
                    st.takeItems(DURKA_PARASITE,
                                 st.getQuestItemsCount(DURKA_PARASITE))
                else:
                    st.giveItems(DURKA_PARASITE, 1)
                    st.playSound("ItemSound.quest_itemget")
        elif npcId == 27056:
            st.set("id", "0")
            if st.getInt("cond") and st.getQuestItemsCount(
                    SPIRIT_NET) == 1 and st.getQuestItemsCount(
                        BOUND_DURKA_SPIRIT) == 0:
                st.giveItems(BOUND_DURKA_SPIRIT, 1)
                st.takeItems(SPIRIT_NET, 1)
                st.takeItems(DURKA_PARASITE,
                             st.getQuestItemsCount(DURKA_PARASITE))
                st.playSound("ItemSound.quest_middle")
                st.set("cond", "10")
        return
コード例 #29
0
ファイル: __init__.py プロジェクト: taiBsu/l2jfree-ct2.3
 def onTalk(self, npc, player):
     htmltext = "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>"
     st = player.getQuestState(qn)
     if not st: return htmltext
     npcId = npc.getNpcId()
     id = st.getState()
     cond = st.getInt("cond")
     if id == State.COMPLETED:
         htmltext = "<html><body>This quest has already been completed.</body></html>"
     elif npcId == Vitus:
         if player.getClassId().getId() not in [125, 126
                                                ] or player.getLevel() < 39:
             htmltext = "<html><body>Only Troopers or Warders are allowed to take this quest! Go away before I get angry!<br>You must be level 39 or higher to undertake this quest.</body></html>"
             st.exitQuest(1)
         elif id == State.CREATED:
             htmltext = "32213-01.htm"
         elif cond >= 1 and cond <= 3:
             htmltext = "32213-04.htm"
         elif cond >= 4 and cond < 17:
             htmltext = "32213-05.htm"
         elif cond == 17 and st.getQuestItemsCount(Recommend) == 1:
             htmltext = "32213-06.htm"
             player.sendPacket(SocialAction(player.getObjectId(), 3))
             st.takeItems(Recommend, -1)
             st.giveItems(certificate, 1)
             st.exitQuest(False)
             st.playSound("ItemSound.quest_finish")
             st.addExpAndSp(189831, 21526)
     elif npcId == Kekropus:
         if cond == 1:
             htmltext = "32138-00.htm"
         elif cond == 2:
             htmltext = "32138-04.htm"
         elif cond == 14:
             htmltext = "32138-05.htm"
         elif cond == 15:
             htmltext = "32138-07.htm"
         elif cond == 16:
             htmltext = "32138-08.htm"
         elif cond == 17:
             htmltext = "32138-12.htm"
     elif npcId == Casca:
         if cond == 2:
             htmltext = "32139-01.htm"
         elif cond == 3:
             htmltext = "32139-03.htm"
         elif cond == 4:
             htmltext = "32139-05.htm"
         elif cond == 13:
             htmltext = "32139-06.htm"
         elif cond == 14:
             htmltext = "32139-09.htm"
     elif npcId == Holst:
         if cond == 4:
             htmltext = "32199-01.htm"
         elif cond == 5:
             htmltext = "32199-03.htm"
             st.set("cond", "6")
             st.playSound("ItemSound.quest_middle")
         elif cond == 6:
             htmltext = "32199-04.htm"
     elif npcId == Harlan:
         if cond == 6:
             htmltext = "30074-01.htm"
         elif cond == 7:
             htmltext = "30074-02.htm"
     elif npcId == Jacob:
         if cond == 6:
             htmltext = "30073-01.htm"
             st.set("cond", "7")
             st.playSound("ItemSound.quest_middle")
         elif cond == 7:
             htmltext = "30073-02.htm"
     elif npcId == Lucas:
         if cond == 7:
             htmltext = "30071-01.htm"
         elif cond == 8:
             htmltext = "30071-03.htm"
     elif npcId == Xaber:
         if cond == 8:
             htmltext = "30075-01.htm"
         elif cond == 9:
             htmltext = "30075-02.htm"
     elif npcId == Liam:
         if cond == 8:
             htmltext = "30076-01.htm"
             st.set("cond", "9")
             st.playSound("ItemSound.quest_middle")
         elif cond == 9:
             htmltext = "30076-02.htm"
     elif npcId == Zerome:
         if cond == 9:
             htmltext = "30124-01.htm"
         elif cond == 10:
             htmltext = "30124-02.htm"
     elif npcId == Vesa:
         if cond == 9:
             htmltext = "30123-01.htm"
             st.set("cond", "10")
             st.playSound("ItemSound.quest_middle")
         elif cond == 10:
             htmltext = "30123-02.htm"
     elif npcId == Meldina:
         if cond == 10:
             htmltext = "32214-01.htm"
         elif cond == 11:
             htmltext = "32214-03.htm"
     elif npcId == Felton:
         if cond == 11:
             htmltext = "30879-01.htm"
         elif cond == 12:
             htmltext = "30879-04.htm"
     elif npcId == CargoBox:
         if cond == 12:
             htmltext = "32243-01.htm"
             if st.getInt("angel") == 0 and self.isAngelSpawned == 0:
                 angel = st.addSpawn(27332, 36198, 191949, -3728, 180000)
                 angel.broadcastPacket(
                     NpcSay(
                         angel.getObjectId(), 0, angel.getNpcId(),
                         player.getName() +
                         "! Step back from the confounded box! I will take it myself!"
                     ))
                 angel.setRunning()
                 angel.addDamageHate(player, 0, 999)
                 angel.getAI().setIntention(
                     CtrlIntention.AI_INTENTION_ATTACK, player)
                 self.isAngelSpawned = 1
                 self.startQuestTimer("angel_cleanup", 180000, angel,
                                      player)
             elif self.isKatenarSpawned == 0 and st.getInt("angel") == 1:
                 katenar = st.addSpawn(32242, 36110, 191921, -3712, 60000)
                 katenar.broadcastPacket(
                     NpcSay(katenar.getObjectId(), 0, katenar.getNpcId(),
                            "I am late!"))
                 self.isKatenarSpawned == 1
                 self.startQuestTimer("katenar_cleanup", 60000, katenar,
                                      player)
                 htmltext = "32243-02.htm"
         elif cond == 13:
             htmltext = "32243-03.htm"
     return htmltext
コード例 #30
0
ファイル: __init__.py プロジェクト: taiBsu/l2jfree-ct2.3
    def onEvent(self, event, st):
        htmltext = event
        # Events Gustaf
        if event == "30760-08.htm":
            st.giveItems(G_Let_Martien, 1)
            for var in STATS:
                st.set(var, "1")
            st.setState(State.STARTED)
        elif event == "30760-12.htm":
            st.giveItems(G_Let_Balthazar, 1)
            st.set("cond", "4")
        elif event == "30760-16.htm":
            st.giveItems(G_Let_Rodemai, 1)
            st.set("cond", "7")
        elif event == "30760-20.htm":
            exit503(1, st)
        elif event == "30760-22.htm":
            st.set("cond", "13")
        elif event == "30760-23.htm":
            exit503(1, st)
# Events Martien
        elif event == "30645-03.htm":
            st.takeItems(G_Let_Martien, -1)
            st.set("cond", "2")
            suscribe_members(st)
            try:
                members = st.getPlayer().getClan().getOnlineMembers(0)[0]
                for i in members:
                    pst = QuestManager.getInstance().getQuest(
                        qn).newQuestState(
                            st.getPlayer().getClan().getClanMember(
                                int(i)).getPlayerInstance())
                    pst.setState(State.STARTED)
            except:
                return htmltext
# Events Kurtz
        elif event == "30763-03.htm":
            if st.getInt("Kurtz") == 1:
                htmltext = "30763-02.htm"
                st.giveItems(Mi_Drake_Eggs, 6)
                st.giveItems(Brooch, 1)
                st.set("Kurtz", "2")
# Events Lutz
        elif event == "30762-03.htm":
            lutz = st.getInt("Lutz")
            if lutz == 1:
                htmltext = "30762-02.htm"
                st.giveItems(Mi_Drake_Eggs, 4)
                st.giveItems(Bl_Wyrm_Eggs, 3)
                st.set("Lutz", "2")
            st.addSpawn(27178, 112268, 112761, -2770, 120000)
            st.addSpawn(27178, 112234, 112705, -2770, 120000)
# Events Fritz
        elif event == "30761-03.htm":
            fritz = st.getInt("Fritz")
            if fritz == 1:
                htmltext = "30761-02.htm"
                st.giveItems(Bl_Wyrm_Eggs, 3)
                st.set("Fritz", "2")
            st.addSpawn(27178, 103841, 116809, -3025, 120000)
            st.addSpawn(27178, 103848, 116910, -3020, 120000)
# Events Kusto
        elif event == "30512-03.htm":
            st.takeItems(Brooch, -1)
            st.giveItems(Bl_Anvil_Coin, 1)
            st.set("Kurtz", "3")
# Events Balthazar
        elif event == "30764-03.htm":
            st.takeItems(G_Let_Balthazar, -1)
            st.set("cond", "5")
            st.set("Kurtz", "3")
        elif event == "30764-05.htm":
            st.takeItems(G_Let_Balthazar, -1)
            st.set("cond", "5")
        elif event == "30764-06.htm":
            st.takeItems(Bl_Anvil_Coin, -1)
            st.set("Kurtz", "4")
            st.giveItems(Recipe_Power_Stone, 1)
# Events Rodemai
        elif event == "30868-04.htm":
            st.takeItems(G_Let_Rodemai, -1)
            st.set("cond", "8")
        elif event == "30868-06a.htm":
            st.set("cond", "10")
        elif event == "30868-10.htm":
            st.set("cond", "12")


# Events Cleo
        elif event == "30766-04.htm":
            st.set("cond", "9")
            spawnedNpc = st.addSpawn(30766, 160622, 21230, -3710, 90000)
            spawnedNpc.broadcastPacket(
                NpcSay(spawnedNpc.getObjectId(), 0, spawnedNpc.getNpcId(),
                       "Blood and Honour."))
            spawnedNpc = st.addSpawn(30759, 160665, 21209, -3710, 90000)
            spawnedNpc.broadcastPacket(
                NpcSay(spawnedNpc.getObjectId(), 0, spawnedNpc.getNpcId(),
                       "Ambition and Power"))
            spawnedNpc = st.addSpawn(30758, 160665, 21291, -3710, 90000)
            spawnedNpc.broadcastPacket(
                NpcSay(spawnedNpc.getObjectId(), 0, spawnedNpc.getNpcId(),
                       "War and Death"))
        elif event == "30766-08.htm":
            st.takeItems(Scepter_Judgement, -1)
            exit503(0, st)
        return htmltext