Browse Source

corrections for quests 623 624 and 628

Kerberos 17 years ago
parent
commit
0a0e49296d

+ 17 - 10
datapack_development/data/scripts/quests/623_TheFinestFood/__init__.py

@@ -1,6 +1,7 @@
 # The Finest Food - v0.1 by disKret & DrLecter
 import sys
 from net.sf.l2j import Config
+from net.sf.l2j.util import Rnd
 from net.sf.l2j.gameserver.model.quest import State
 from net.sf.l2j.gameserver.model.quest import QuestState
 from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
@@ -80,20 +81,26 @@ class Quest (JQuest) :
    return htmltext
 
  def onKill(self,npc,player,isPet):
-   # todo: with the current code, a player who has State.COMPLETED up to 2 out of 3
-   # item collections may consume the party drop (i.e. become the selected
-   # player in the random, but get nothing because it was the wrong mob)
-   # this ought to be corrected later...
-   partyMember = self.getRandomPartyMember(player,"1")
-   if not partyMember: return
-   st = partyMember.getQuestState(qn)
-   if st :
+   partyMember1 = self.getRandomPartyMember(player,"1")
+   partyMember2 = self.getRandomPartyMemberState(player, State.COMPLETED)
+   if not partyMember1 and not partyMember2 : return
+   partyMember = partyMember1
+   item,chance = DROPLIST[npc.getNpcId()]
+   dropchance = Rnd.get(100)
+   if dropchance  < chance:
+    # player who has State.COMPLETED up to 2 out of 3 item collections may consume the party drop
+    if partyMember2 :
+      if Rnd.get(100) <= 66:
+         return
+      else :
+         partyMember = partyMember1
+    st = partyMember.getQuestState(qn)
+    if st :
       if st.getState() == State.STARTED :
-         item,chance = DROPLIST[npc.getNpcId()]
          count = st.getQuestItemsCount(item)
          if st.getInt("cond") == 1 and count < 100 :
             numItems, chance = divmod(chance*Config.RATE_DROP_QUEST,100)
-            if st.getRandom(100) < chance :
+            if dropchance  < chance:
                numItems += 1
             if count + numItems >= 100 :
               numItems = 100 - count

+ 16 - 9
datapack_development/data/scripts/quests/624_TheFinestIngredientsPart1/__init__.py

@@ -1,6 +1,7 @@
 # by disKret
 import sys
-from net.sf.l2j import Config 
+from net.sf.l2j import Config
+from net.sf.l2j.util import Rnd
 from net.sf.l2j.gameserver.model.quest import State
 from net.sf.l2j.gameserver.model.quest import QuestState
 from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
@@ -74,19 +75,25 @@ class Quest (JQuest) :
    return htmltext
 
  def onKill(self,npc,player,isPet):
-   # todo: with the current code, a player who has State.COMPLETED up to 2 out of 3
-   # item collections may consume the party drop (i.e. become the selected
-   # player in the random, but get nothing because it was the wrong mob)
-   # this ought to be corrected later...
-   partyMember = self.getRandomPartyMember(player,"1")
-   if not partyMember: return
+   partyMember1 = self.getRandomPartyMember(player,"1")
+   partyMember2 = self.getRandomPartyMemberState(player, State.COMPLETED)
+   if not partyMember1 and not partyMember2 : return
+   partyMember = partyMember1
+   numItems,chance = divmod(100*Config.RATE_DROP_QUEST,100)
+   dropchance = Rnd.get(100)
+   if dropchance  < chance:
+    # player who has State.COMPLETED up to 2 out of 3 item collections may consume the party drop
+    if partyMember2 :
+      if Rnd.get(100) <= 66:
+         return
+      else :
+         partyMember = partyMember1
    st = partyMember.getQuestState(qn)
    if st :
         if st.getState() == State.STARTED :
             npcId = npc.getNpcId()
             if st.getInt("cond") == 1:
-             numItems,chance = divmod(100*Config.RATE_DROP_QUEST,100)
-             if st.getRandom(100) <chance :
+             if dropchance < chance :
                numItems = numItems + 1
              numItems = int(numItems)
              item = ITEMS[npcId]

+ 3 - 2
datapack_development/data/scripts/quests/628_HuntGoldenRam/__init__.py

@@ -135,9 +135,10 @@ class Quest (JQuest) :
                  htmltext = "31556-1.htm" #Buffer: buffs list
    return htmltext
 
- #todo: Currently this quest is solo, it needs to be party
  def onKill(self,npc,player,isPet):
-   st = player.getQuestState(qn)
+   partyMember = self.getRandomPartyMemberState(player, State.STARTED)
+   if not partyMember : return
+   st = partyMember.getQuestState(qn)
    if st :
         if st.getState() == State.STARTED :
             npcId = npc.getNpcId()