mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 01:37:00 +00:00
[11263] Revert "[11262] Revert "[11261] Check gaps in quest RewChoiceItem* data.""
This reverts commit 714d48a99e2ccc9404b34ebcfec50b2d8300fc46. Additiona reserch show that no any know cases when data in RewChoiceItem* have gaps except detected wrong data cases. So check good have in 3.x/2.x for better data intergrity checks.
This commit is contained in:
parent
24545a6162
commit
3c9f268b53
2 changed files with 13 additions and 2 deletions
|
|
@ -4083,7 +4083,8 @@ void ObjectMgr::LoadQuests()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int j = 0; j < QUEST_REWARD_CHOICES_COUNT; ++j )
|
bool choice_found = false;
|
||||||
|
for(int j = QUEST_REWARD_CHOICES_COUNT-1; j >=0; --j )
|
||||||
{
|
{
|
||||||
if (uint32 id = qinfo->RewChoiceItemId[j])
|
if (uint32 id = qinfo->RewChoiceItemId[j])
|
||||||
{
|
{
|
||||||
|
|
@ -4093,6 +4094,8 @@ void ObjectMgr::LoadQuests()
|
||||||
qinfo->GetQuestId(),j+1,id,id);
|
qinfo->GetQuestId(),j+1,id,id);
|
||||||
qinfo->RewChoiceItemId[j] = 0; // no changes, quest will not reward this
|
qinfo->RewChoiceItemId[j] = 0; // no changes, quest will not reward this
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
choice_found = true;
|
||||||
|
|
||||||
if (!qinfo->RewChoiceItemCount[j])
|
if (!qinfo->RewChoiceItemCount[j])
|
||||||
{
|
{
|
||||||
|
|
@ -4101,6 +4104,14 @@ void ObjectMgr::LoadQuests()
|
||||||
// no changes, quest can't be done
|
// no changes, quest can't be done
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (choice_found) // client crash if have gap in item reward choices
|
||||||
|
{
|
||||||
|
sLog.outErrorDb("Quest %u has `RewChoiceItemId%d` = 0 but `RewChoiceItemId%d` = %u, client can crash at like data.",
|
||||||
|
qinfo->GetQuestId(),j+1,j+2,qinfo->RewChoiceItemId[j+1]);
|
||||||
|
// fill gap by clone later filled choice
|
||||||
|
qinfo->RewChoiceItemId[j] = qinfo->RewChoiceItemId[j+1];
|
||||||
|
qinfo->RewChoiceItemCount[j] = qinfo->RewChoiceItemCount[j+1];
|
||||||
|
}
|
||||||
else if (qinfo->RewChoiceItemCount[j]>0)
|
else if (qinfo->RewChoiceItemCount[j]>0)
|
||||||
{
|
{
|
||||||
sLog.outErrorDb("Quest %u has `RewChoiceItemId%d` = 0 but `RewChoiceItemCount%d` = %u.",
|
sLog.outErrorDb("Quest %u has `RewChoiceItemId%d` = 0 but `RewChoiceItemCount%d` = %u.",
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "11262"
|
#define REVISION_NR "11263"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue