コード例 #1
0
ファイル: __init__.py プロジェクト: gryphonjp/L2jBrasil-1
 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
  clan = player.getClan()
  npcId = npc.getNpcId()
  if player.getClan() == None or player.isClanLeader() == 0 :
     st.exitQuest(1)
     htmltext = "31331-0a.htm"
  elif player.getClan().getLevel() < 6 :
     st.exitQuest(1)
     htmltext =  "31331-0b.htm"
  else :
     cond = st.getInt("cond")
     raid = st.getInt("raid")
     id = st.getState()
     if id == CREATED and cond == 0 :
        htmltext =  "31331-0c.htm"
     elif id == STARTED and cond == 1 and raid in REWARDS_LIST.keys() :
        npc,item,min,max=REWARDS_LIST[raid]
        count = st.getQuestItemsCount(item)
        CLAN_POINTS_REWARD = Rnd.get(min, max)
        if not count :
           htmltext = "31331-"+str(raid)+"a.htm"
        elif count == 1 :
           htmltext = "31331-"+str(raid)+"b.htm"
           st.takeItems(item,1)
           clan.setReputationScore(clan.getReputationScore()+CLAN_POINTS_REWARD,True)
           player.sendPacket(SystemMessage(1777).addNumber(CLAN_POINTS_REWARD))
           clan.broadcastToOnlineMembers(PledgeShowInfoUpdate(clan))
  return htmltext
コード例 #2
0
ファイル: __init__.py プロジェクト: gryphonjp/L2jBrasil-1
    def onKill(self, npc, player, isPet):
        # get 1 party member among those with cond between 1 and 4
        partyMember = 0
        j = 0
        for i in range(1, 5):  # i between 1 and 4 inclusive
            partyMember = self.getRandomPartyMember(player, str(i))
            if partyMember:
                j = i
                break
        if not partyMember: return

        # if at least 1 cond exists with a party member, check if there also exist in a different cond as well
        for i in range(j + 1, 5):
            partyMember2 = self.getRandomPartyMember(player, str(i))
            # if a party member is found in another cond, randomly choose between
            # the new one and the previous one
            if partyMember2:
                if Rnd.get(2): partyMember = partyMember2

        st = partyMember.getQuestState(qn)
        if not st: return
        if st.getState() != STARTED: return

        count = st.getQuestItemsCount(SPINNERET)
        if count < 10:
            st.giveItems(SPINNERET, 1)
            if count == 9:
                st.playSound("ItemSound.quest_middle")
                st.set("cond", "5")
            else:
                st.playSound("ItemSound.quest_itemget")
        return
コード例 #3
0
	def onKill (self,npc,player,isPet):
		found = False
		for effect in player.getAllEffects():
			if effect.getSkill().getId() in KISS_OF_EVA:
				found = True
		if found:
			dropid = Rnd.get(len(REWARDS))
			dropItem(npc,REWARDS[dropid],1,player)
		return
コード例 #4
0
 def onAttack(self, npc, player, damage, isPet):
     npdId = npc.getNpcId()
     if (npc.getMaxHp() / 2) > npc.getStatus().getCurrentHp():
         if Rnd.get(100) < 4:
             if self.ImpGraveKepperStat == 1:
                 for j in range(2):
                     for k in range(2):
                         self.addSpawn(27180,
                                       npc.getX() + 70 * pow(-1, j % 2),
                                       npc.getY() + 70 * pow(-1, k % 2),
                                       npc.getZ(), 0, False, 0)
                 self.ImpGraveKepperStat = 2
             else:
                 players = npc.getKnownList().getKnownPlayers().values(
                 ).toArray()
                 if len(players):
                     playerToTP = players[Rnd.get(int(len(players)))]
                     playerToTP.setXYZ(185462, 20342, -3250)
     return
コード例 #5
0
 def onKill(self, npc, player, isPet):
     npcId = npc.getNpcId()
     if npcId == BUMPALUMP:
         respawnMinDelay = 43200000 * int(
             Config.RAID_MIN_RESPAWN_MULTIPLIER)
         respawnMaxDelay = 129600000 * int(
             Config.RAID_MAX_RESPAWN_MULTIPLIER)
         respawn_delay = Rnd.get(respawnMinDelay, respawnMaxDelay)
         self.saveGlobalQuestVar(
             "625_respawn", str(System.currentTimeMillis() + respawn_delay))
         self.startQuestTimer("spawn_npc", respawn_delay, None, None)
         self.cancelQuestTimer("Icicle Emperor Bumbalump has despawned",
                               npc, None)
         party = player.getParty()
         if party:
             PartyQuestMembers = []
             for player1 in party.getPartyMembers().toArray():
                 st1 = player1.getQuestState(qn)
                 if st1:
                     if st1.getState() == STARTED and (
                             st1.getInt("cond") == 1
                             or st1.getInt("cond") == 2):
                         PartyQuestMembers.append(st1)
             if len(PartyQuestMembers) == 0: return
             st = PartyQuestMembers[Rnd.get(len(PartyQuestMembers))]
             if st.getQuestItemsCount(FOOD) > 0:
                 st.takeItems(FOOD, 1)
             st.giveItems(MEAT, 1)
             st.set("cond", "3")
             st.playSound("ItemSound.quest_middle")
         else:
             st = player.getQuestState(qn)
             if not st: return
             if st.getState() == STARTED and (st.getInt("cond") == 1
                                              or st.getInt("cond") == 2):
                 if st.getQuestItemsCount(FOOD) > 0:
                     st.takeItems(FOOD, 1)
                 st.giveItems(MEAT, 1)
                 st.set("cond", "3")
                 st.playSound("ItemSound.quest_middle")
     return
コード例 #6
0
    def onKill(self, npc, player, isPet):
        partyMember1 = self.getRandomPartyMember(player, "1")
        partyMember2 = self.getRandomPartyMember(player, "2")
        partyMember = partyMember1  # initialize
        if not partyMember1 and not partyMember2: return
        elif not partyMember2: partyMember = partyMember1
        elif not partyMember1: partyMember = partyMember2
        else:
            if Rnd.get(2): partyMember = partyMember2

        if not partyMember: return
        st = partyMember.getQuestState(qn)
        if not st: return
        if st.getState() != STARTED: return
        count = st.getQuestItemsCount(ROUGH_JEWEL)
        if count < 10:
            st.giveItems(ROUGH_JEWEL, 1)
            if count == 9:
                st.playSound("ItemSound.quest_middle")
                st.set("cond", "3")
            else:
                st.playSound("ItemSound.quest_itemget")
        return
コード例 #7
0
 def onKill(self, npc, player, isPet):
     st = player.getQuestState(qn)
     if not st: return
     npcId = npc.getNpcId()
     cond = st.getInt("cond")
     rand = Rnd.get(100)
     instructions_1 = st.getQuestItemsCount(Test_Instructions_1)
     instructions_2 = st.getQuestItemsCount(Test_Instructions_2)
     if cond == 1 and instructions_1:
         if npcId in Level_1.keys():
             item, amount, chance = Level_1[npcId]
             if rand < chance and st.getQuestItemsCount(item) < amount:
                 st.giveItems(item, 1)
                 if st.getQuestItemsCount(item) >= amount:
                     st.playSound("ItemSound.quest_middle")
                 else:
                     st.playSound("ItemSound.quest_itemget")
         elif npcId == Breka_Orc_Warrior and rand < 10:
             if st.getQuestItemsCount(3711) == 0:
                 st.addSpawn(27140, 300000)
             elif st.getQuestItemsCount(3712) == 0:
                 st.addSpawn(27141, 300000)
             elif st.getQuestItemsCount(3713) == 0:
                 st.addSpawn(27142, 300000)
         elif npcId == Windsus and not st.getQuestItemsCount(
                 3714) and rand < 10:
             st.addSpawn(27143, 300000)
     elif cond == 2:
         if instructions_2:
             if npcId in Level_2.keys():
                 item, amount, chance = Level_2[npcId]
                 if rand < chance and st.getQuestItemsCount(item) < amount:
                     st.giveItems(item, 1)
                     if st.getQuestItemsCount(item) >= amount:
                         st.playSound("ItemSound.quest_middle")
                     else:
                         st.playSound("ItemSound.quest_itemget")
             elif npcId == Tarlk_Bugbear_Warrior and rand < 10:
                 if st.getQuestItemsCount(3722) == 0:
                     st.addSpawn(27144, 300000)
                 elif st.getQuestItemsCount(3723) == 0:
                     st.addSpawn(27145, 300000)
                 elif st.getQuestItemsCount(3724) == 0:
                     st.addSpawn(27146, 300000)
                 elif st.getQuestItemsCount(3725) == 0:
                     st.addSpawn(27147, 300000)
                 elif st.getQuestItemsCount(3726) == 0:
                     st.addSpawn(27148, 300000)
         elif npcId in Tor_requests_1.keys():
             req, give, giveAmount, amount, chance = Tor_requests_1[npcId]
             if rand < chance and st.getQuestItemsCount(
                     req) and st.getQuestItemsCount(give) < amount:
                 st.giveItems(give, eval(giveAmount))
                 if st.getQuestItemsCount(give) >= amount:
                     st.playSound("ItemSound.quest_middle")
                 else:
                     st.playSound("ItemSound.quest_itemget")
                 if npcId in [27160, 27164] and Rnd.get(2):
                     st.addSpawn(27150, 300000)
                     st.addSpawn(27150, 300000)
                     AutoChat(
                         npc,
                         "We will destroy the legacy of the ancient empire!"
                     )
     elif cond == 3:
         if npcId in Tor_requests_2.keys():
             req, give, amount, chance = Tor_requests_2[npcId]
             if st.getQuestItemsCount(
                     req) and st.getQuestItemsCount(give) < amount:
                 if rand < chance:
                     st.giveItems(give, 1)
                     if st.getQuestItemsCount(give) >= amount:
                         st.playSound("ItemSound.quest_middle")
                     else:
                         st.playSound("ItemSound.quest_itemget")
                     if npcId == 27162 and Rnd.get(2):
                         st.addSpawn(27150, 300000)
                         st.addSpawn(27150, 300000)
                         AutoChat(
                             npc,
                             "We will destroy the legacy of the ancient empire!"
                         )
                 if npcId in [20661, 20662, 20589, 20590, 20639
                              ] and not Rnd.get(20):
                     st.addSpawn(Gremlin_Filcher, 300000)
                     AutoChat(npc, "Get out! The jewels are mine!")
         elif npcId == Gremlin_Filcher:
             req = 0
             for item in Filcher.keys():
                 if st.getQuestItemsCount(item):
                     req = item
                     break
             if req:
                 item, amount, bonus = Filcher[req]
                 if st.getQuestItemsCount(item) < amount:
                     st.giveItems(item, bonus)
                     if st.getQuestItemsCount(item) >= amount:
                         st.playSound("ItemSound.quest_middle")
                     else:
                         st.playSound("ItemSound.quest_itemget")
                     AutoChat(npc, "What!")
     if npcId in Tor_requests_tospawn.keys() and rand < 10:
         it1, it2, id = Tor_requests_tospawn[npcId]
         if st.getQuestItemsCount(it1) and not st.getQuestItemsCount(it2):
             st.addSpawn(id, 300000)
     if npcId in Lizardmen and player.getActiveWeaponItem(
     ) and player.getActiveWeaponItem().getItemId(
     ) == Cyb_Dagger and st.getQuestItemsCount(
             Cyb_Req) and not st.getQuestItemsCount(3708):
         if Rnd.get(2):
             if cond == 2 or cond == 3:
                 for item in range(3698, 3707):
                     if st.getQuestItemsCount(item):
                         st.giveItems(item + 1, 1)
                         st.takeItems(item, -1)
                         if item >= 3703:
                             st.playSound("ItemSound.quest_jackpot")
                         break
         else:
             for item in range(3698, 3707):
                 st.takeItems(item, -1)
             st.giveItems(3708, 1)
     return
コード例 #8
0
 def onAdvEvent(self, event, npc, player):
     st = player.getQuestState(qn)
     if not st: return
     htmltext = event
     if event == "30744-03.htm":
         st.setState(STARTED)
         st.playSound("ItemSound.quest_accept")
         st.giveItems(Test_Instructions_1, 1)
         st.set("cond", "1")
         #set Memo = 0
     elif event == "30744-32.htm":
         st.playSound("ItemSound.quest_finish")
         if st.getQuestItemsCount(Leaf_Pin) >= 20:
             htmltext = "30744-33.htm"
             st.giveItems(57, 20000)
         st.exitQuest(1)
     elif event == "30744-19.htm":
         if not HasItems(st, 1):
             st.giveItems(Test_Instructions_2, 1)
             htmltext = "30744-18.htm"
     elif event == "30745-03.htm":
         if st.getQuestItemsCount(Test_Instructions_2):
             htmltext = "30745-04.htm"
     elif event == "Tor_list_1":
         if not st.getInt("hasTask"):
             htmltext = "<html><body>Guild Member Tor:<br>"
             pins = st.getQuestItemsCount(Leaf_Pin)
             reply_0 = Rnd.get(12)
             reply_1 = Rnd.get(12)
             reply_2 = Rnd.get(12)
             reply_3 = Rnd.get(12)
             reply_4 = Rnd.get(12)
             if Rnd.get(100) < 20:
                 if pins < 4 and pins:
                     reply_0 = Rnd.get(6) + 12
                     reply_2 = Rnd.get(6)
                     reply_3 = Rnd.get(6) + 6
                 elif pins >= 4:
                     reply_0 = Rnd.get(6) + 6
                     if not Rnd.get(20):
                         reply_1 = Rnd.get(2) + 18
                     reply_2 = Rnd.get(6)
                     reply_3 = Rnd.get(6) + 6
             elif pins >= 4:
                 if not Rnd.get(20):
                     reply_1 = Rnd.get(2) + 18
                 reply_2 = Rnd.get(6)
                 reply_3 = Rnd.get(6) + 6
             htmltext += Tor_menu[reply_0] + Tor_menu[reply_1] + Tor_menu[
                 reply_2] + Tor_menu[reply_3] + Tor_menu[reply_4]
             htmltext += "</body></html>"
     elif event == "Tor_list_2":
         if not st.getInt("hasTask"):
             htmltext = "<html><body>Guild Member Tor:<br>"
             pins = st.getQuestItemsCount(Leaf_Pin)
             reply_0 = Rnd.get(10)
             reply_1 = Rnd.get(10)
             reply_2 = Rnd.get(5)
             reply_3 = Rnd.get(5) + 5
             reply_4 = Rnd.get(10)
             if Rnd.get(100) < 20:
                 if pins < 4 and pins:
                     reply_0 = Rnd.get(6) + 10
                 elif pins >= 4:
                     reply_0 = Rnd.get(6) + 10
                     if not Rnd.get(20):
                         reply_1 = Rnd.get(3) + 16
             elif pins >= 4:
                 if not Rnd.get(20):
                     reply_1 = Rnd.get(3) + 16
             htmltext += Tor_menu[reply_0 + 20] + Tor_menu[
                 reply_1 + 20] + Tor_menu[reply_2 + 20] + Tor_menu[
                     reply_3 + 20] + Tor_menu[reply_4 + 20]
             htmltext += "</body></html>"
     elif event == "30745-10.htm":
         st.takeItems(Leaf_Pin, 1)
         for item in range(3727, 3811):
             st.takeItems(item, -1)
         st.set("hasTask", "0")
     elif event == "30746-03.htm":
         if not st.getQuestItemsCount(Cyb_Req):
             st.giveItems(Cyb_Req, 1)
         if not st.getQuestItemsCount(3471):
             st.giveItems(3471, 1)
         if not st.getQuestItemsCount(3698):
             st.giveItems(3698, 1)
         st.takeItems(6708, -1)
     elif event == "30746-08.htm":
         for item in Cyb_Rewards.keys():
             if st.getQuestItemsCount(item):
                 st.takeItems(item, -1)
                 st.giveItems(57, Cyb_Rewards[item])
                 break
     elif event == "30746-12.htm":
         st.takeItems(3698, -1)
         st.takeItems(3697, -1)
         st.takeItems(3471, -1)
     elif event.isdigit():
         event = int(event)
         st.giveItems(event, 1)
         st.set("hasTask", "1")
         event = event - 3712
         htmltext = "30745-" + str(event) + ".htm"
     return htmltext
コード例 #9
0
 def onKill(self,npc,player,isPet):
    npcId = npc.getNpcId()
    st = player.getQuestState(self.qn)
    if npcId in Archon_Minions :
        party = player.getParty()
        if party :
            PartyQuestMembers = []
            for player1 in party.getPartyMembers().toArray() :
                for q in Quests.keys() :
                    st1 = player1.getQuestState(Quests[q])
                    if st1 :
                        if player1.getClassId().getId() == QuestClass[int(q)-70]:
                            if st1.getInt("cond") == 15 :
                                PartyQuestMembers.append(st1)
                                break
            if len(PartyQuestMembers) > 0 :
                st2 = PartyQuestMembers[Rnd.get(len(PartyQuestMembers))]
                st2.getQuest().giveHallishaMark(st2)
        else :
            for q in Quests.keys() :
                st1 = player.getQuestState(Quests[q])
                if st1 :
                    if player.getClassId().getId() == QuestClass[int(q)-70]:
                        if st1.getInt("cond") == 15 :
                            st1.getQuest().giveHallishaMark(st1)
                            break
    elif npcId in Archon_Hellisha_Norm :
        for q in Quests.keys() :
            st1 = player.getQuestState(Quests[q])
            if st1 :
                if player.getClassId().getId() == QuestClass[int(q)-70]:
                    if st1.getInt("cond") == 15 :
                        #This is just a guess....not really sure what it actually says, if anything
                        self.AutoChat(npc,st1.getQuest().Text[4].replace('PLAYERNAME',st1.getPlayer().getName()))
                        st1.giveItems(st1.getQuest().Items[8],1)
                        st1.takeItems(st1.getQuest().Items[3],-1)
                        st1.set("cond","16")
                        st1.playSound("ItemSound.quest_middle")
                        break
    elif npcId in Guardian_Angels :
        for q in Quests.keys() :
            st1 = player.getQuestState(Quests[q])
            if st1 :
                if player.getClassId().getId() == QuestClass[int(q)-70]:
                    if st1.getInt("cond") == 6 :
                        if st1.getInt("kills") < 9 :
                            st1.set("kills",str(st1.getInt("kills")+1))
                        else :
                            st1.playSound("ItemSound.quest_middle")
                            st1.giveItems(st1.getQuest().Items[5],1)
                            st1.set("cond","7")
                        break
    elif st :
        cond = st.getInt("cond")
        if npcId == self.Mob[0] and cond == 8 :
            st2 = self.findRightState(player,npc)
            if st2 :
                if not player.isInParty():
                    if st == st2 :
                        self.AutoChat(npc,self.Text[12].replace('PLAYERNAME',player.getName()))
                        st.giveItems(self.Items[6],1)
                        st.set("cond","9")
                        st.playSound("ItemSound.quest_middle")
                st2.getQuestTimer("Mob_1 has despawned").cancel()
                self.DeleteSpawn(st2,st2.getInt("Mob_1"))
                st2.set("spawned","0")
        elif npcId == self.Mob[1] :
            if cond == 15 :
                st2 = self.findRightState(player,npc)
                if st2 :
                    if not player.isInParty():
                        if st == st2 :
                            self.AutoChat(npc,self.Text[4].replace('PLAYERNAME',player.getName()))
                            st.giveItems(self.Items[8],1)
                            st.takeItems(self.Items[3],-1)
                            st.set("cond","16")
                            st.playSound("ItemSound.quest_middle")
                        else :
                            self.AutoChat(npc,self.Text[5].replace('PLAYERNAME',player.getName()))
                    st2.getQuestTimer("Archon Hellisha has despawned").cancel()
                    self.DeleteSpawn(st2,st2.getInt("Archon"))
                    st2.set("spawned","0")
    else :
        if npcId == self.Mob[0] :
            st = self.findRightState(player,npc)
            if st:
                st.getQuestTimer("Mob_1 has despawned").cancel()
                self.DeleteSpawn(st,st.getInt("Mob_1"))
                st.set("spawned","0")
        elif npcId == self.Mob[1] :
            st = self.findRightState(player,npc)
            if st:
                st.getQuestTimer("Archon Hellisha has despawned").cancel()
                self.DeleteSpawn(st,st.getInt("Archon"))
                st.set("spawned","0")
    return