Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Отвергнутые патчи (http://mangos.ytdb.ru/forumdisplay.php?f=50)
-   -   [patch][ReqSourceId]Дроп вспомогательных итемов (http://mangos.ytdb.ru/showthread.php?t=3269)

virusav 21.12.2010 21:11

[patch][ReqSourceId]Дроп вспомогательных итемов
 
На текущий момент при комплите квеста вспомогательные итемы, указанные в ReqSourceId, перестают выпадать, а должны.
Пример: http://ru.wowhead.com/quest=12068 (также в других квестах цепочки). У квеста стоит требование принести основной итем, но при этом надо собрать 5 вспомогательных итемов, чтобы игрок мог наложить на себя ауру, увидеть квестгивера и сдать квест.
Сейчас при взятии квестового итема нельзя выбить вспомогательные и сдать квест.

Патч:
Код:

diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 8cf5741..bcaad71 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -14765,36 +14765,37 @@ void Player::ReputationChanged(FactionEntry const* factionEntry )
 
 bool Player::HasQuestForItem( uint32 itemid ) const
 {
-    for( int i = 0; i < MAX_QUEST_LOG_SIZE; ++i )
+    for (int i = 0; i < MAX_QUEST_LOG_SIZE; ++i)
    {
        uint32 questid = GetQuestSlotQuestId(i);
-        if ( questid == 0 )
+        if (questid == 0)
            continue;
 
        QuestStatusMap::const_iterator qs_itr = mQuestStatus.find(questid);
-        if(qs_itr == mQuestStatus.end())
+        if (qs_itr == mQuestStatus.end())
            continue;
 
        QuestStatusData const& q_status = qs_itr->second;
 
-        if (q_status.m_status == QUEST_STATUS_INCOMPLETE)
+        if (q_status.m_status == QUEST_STATUS_INCOMPLETE || q_status.m_status == QUEST_STATUS_COMPLETE)
        {
            Quest const* qinfo = sObjectMgr.GetQuestTemplate(questid);
-            if(!qinfo)
-                continue;
-
-            // hide quest if player is in raid-group and quest is no raid quest
-            if (GetGroup() && GetGroup()->isRaidGroup() && !qinfo->IsAllowedInRaid() && !InBattleGround())
+            if (!qinfo)
                continue;
 
-            // There should be no mixed ReqItem/ReqSource drop
-            // This part for ReqItem drop
-            for (int j = 0; j < QUEST_ITEM_OBJECTIVES_COUNT; ++j)
+            if (q_status.m_status == QUEST_STATUS_INCOMPLETE)
            {
-                if(itemid == qinfo->ReqItemId[j] && q_status.m_itemcount[j] < qinfo->ReqItemCount[j] )
-                    return true;
+                // hide quest if player is in raid-group and quest is no raid quest
+                if (GetGroup() && GetGroup()->isRaidGroup() && !qinfo->IsAllowedInRaid() && !InBattleGround())
+                    continue;
+
+                // There should be no mixed ReqItem drop
+                for (int j = 0; j < QUEST_ITEM_OBJECTIVES_COUNT; ++j)
+                {
+                    if (itemid == qinfo->ReqItemId[j] && q_status.m_itemcount[j] < qinfo->ReqItemCount[j])
+                        return true;
+                }
            }
-            // This part - for ReqSource
            for (int j = 0; j < QUEST_SOURCE_ITEM_IDS_COUNT; ++j)
            {
                // examined item is a source item


Vladimir 22.12.2010 13:32

Насколько следует из комментриев дроп этой вещи вообще не связанна должна быть с квестом - да она используется при создании квестового итема, но и только.

Фикс базы (для UDB) от NoFantasy:
Цитата:

UPDATE creature_loot_template SET ChanceOrQuestChance=33 WHERE entry IN (26795,26797) and item=36758;

virusav 22.12.2010 14:01

В кеше квеста ReqSourceId итемы указаны.
Итемы выпадают при наличии квеста, поэтому шанс квестовый.

Если шанс неквестовый, как в удб, то зачем в кеше указывается ReqSourdeCount?
Получается, что при наличии квеста можно собрать намного меньше итемов, чем без него.
Зачем тогда вообще поля ReqSourceId?

Или речь идет о condition_value1 и condition_value2 в `creature_loot_template`?

В таком случае на каждое сочетание итем-нпц надо создавать по 2 строки:
8 CONDITION_QUESTREWARDED Player must have completed a quest first
9 CONDITION_QUESTTAKEN Players must have the quest in the quest log and not completed yet
?

Vladimir 22.12.2010 17:28

Цитата:

В кеше квеста ReqSourceId итемы указаны.
Это совершенно не значит что итемы должны выпадать только при квесте.
Он требуется для квеста, но выпадает когда попало.
Не ставте ему квестовый шанс как предлагает NoFantasy и все...

KiriX 22.12.2010 18:42

Цитата:

Сообщение от Vladimir (Сообщение 17509)
Это совершенно не значит что итемы должны выпадать только при квесте.
Он требуется для квеста, но выпадает когда попало.
Не ставте ему квестовый шанс как предлагает NoFantasy и все...

А доказано, что данный итем падает и без квеста???
Скоро точно скажу, падает ли без квеста ;)

Vladimir 22.12.2010 20:30

ну в коментах английских к нему это написано.


Текущее время: 07:08. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS