fix(DB/Conditions): Grub should sell its items only to players who co… (#13803)
...mpleted "Dig Rat Stew" quest.
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
--
|
||||||
|
UPDATE `creature_template` SET `npcflag`=130, `type_flags`=`type_flags`|0x08000000, `flags_extra`=`flags_extra`|0x01000000 WHERE `entry`=3443;
|
||||||
|
|
||||||
|
DELETE FROM `gossip_menu_option` WHERE `MenuId`=10311;
|
||||||
|
INSERT INTO `gossip_menu_option` VALUES
|
||||||
|
(10311,0,1,'I want to browse your goods',3370,3,128,0,0,0,0,'',0,0);
|
||||||
|
|
||||||
|
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=10311;
|
||||||
|
INSERT INTO `conditions` VALUES
|
||||||
|
(15,10311,0,0,0,7,0,185,15,0,0,0,0,'','Show vendor flag if player has cooking'),
|
||||||
|
(15,10311,0,0,0,8,0,862,0,0,0,0,0,'','Show vendor flag if player player has quest Dig Rat Stew rewarded');
|
||||||
|
|
||||||
|
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=23 AND `SourceGroup`=3443;
|
||||||
|
INSERT INTO `conditions` VALUES
|
||||||
|
(23,3443,0,0,0,7,0,185,15,0,0,0,0,'','Show vendor flag if player has cooking'),
|
||||||
|
(23,3443,0,0,0,8,0,862,0,0,0,0,0,'','Show vendor flag if player player has quest Dig Rat Stew rewarded');
|
||||||
|
|
||||||
|
UPDATE `quest_template_addon` SET `RequiredSkillPoints`=15 WHERE `id`=862;
|
||||||
@@ -1761,28 +1761,33 @@ void Player::UpdateForQuestWorldObjects()
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// check if this unit requires quest specific flags
|
// check if this unit requires quest specific flags
|
||||||
if (!obj->HasNpcFlag(UNIT_NPC_FLAG_SPELLCLICK))
|
if (obj->HasNpcFlag(UNIT_NPC_FLAG_SPELLCLICK))
|
||||||
continue;
|
|
||||||
|
|
||||||
SpellClickInfoMapBounds clickPair = sObjectMgr->GetSpellClickInfoMapBounds(obj->GetEntry());
|
|
||||||
for (SpellClickInfoContainer::const_iterator _itr = clickPair.first; _itr != clickPair.second; ++_itr)
|
|
||||||
{
|
{
|
||||||
//! This code doesn't look right, but it was logically converted to condition system to do the exact
|
SpellClickInfoMapBounds clickPair = sObjectMgr->GetSpellClickInfoMapBounds(obj->GetEntry());
|
||||||
//! same thing it did before. It definitely needs to be overlooked for intended functionality.
|
for (SpellClickInfoContainer::const_iterator _itr = clickPair.first; _itr != clickPair.second; ++_itr)
|
||||||
ConditionList conds = sConditionMgr->GetConditionsForSpellClickEvent(obj->GetEntry(), _itr->second.spellId);
|
|
||||||
bool buildUpdateBlock = false;
|
|
||||||
for (ConditionList::const_iterator jtr = conds.begin(); jtr != conds.end() && !buildUpdateBlock; ++jtr)
|
|
||||||
if ((*jtr)->ConditionType == CONDITION_QUESTREWARDED || (*jtr)->ConditionType == CONDITION_QUESTTAKEN)
|
|
||||||
buildUpdateBlock = true;
|
|
||||||
|
|
||||||
if (buildUpdateBlock)
|
|
||||||
{
|
{
|
||||||
obj->BuildValuesUpdateBlockForPlayer(&udata, this);
|
//! This code doesn't look right, but it was logically converted to condition system to do the exact
|
||||||
break;
|
//! same thing it did before. It definitely needs to be overlooked for intended functionality.
|
||||||
|
ConditionList conds = sConditionMgr->GetConditionsForSpellClickEvent(obj->GetEntry(), _itr->second.spellId);
|
||||||
|
bool buildUpdateBlock = false;
|
||||||
|
for (ConditionList::const_iterator jtr = conds.begin(); jtr != conds.end() && !buildUpdateBlock; ++jtr)
|
||||||
|
if ((*jtr)->ConditionType == CONDITION_QUESTREWARDED || (*jtr)->ConditionType == CONDITION_QUESTTAKEN)
|
||||||
|
buildUpdateBlock = true;
|
||||||
|
|
||||||
|
if (buildUpdateBlock)
|
||||||
|
{
|
||||||
|
obj->BuildValuesUpdateBlockForPlayer(&udata, this);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (obj->HasNpcFlag(UNIT_NPC_FLAG_VENDOR_MASK | UNIT_NPC_FLAG_TRAINER))
|
||||||
|
{
|
||||||
|
obj->BuildValuesUpdateBlockForPlayer(&udata, this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
udata.BuildPacket(&packet);
|
udata.BuildPacket(&packet);
|
||||||
GetSession()->SendPacket(&packet);
|
GetSession()->SendPacket(&packet);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user