[7379] Implement some money related achievement criteria.

* ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS:
* ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD:
* ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING:
* ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_AT_BARBER:
* ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL:
* ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY:
This commit is contained in:
VladimirMangos 2009-03-05 02:47:17 +03:00
parent 2d6b8bf068
commit bff0cb8c75
7 changed files with 81 additions and 47 deletions

View file

@ -222,6 +222,7 @@ void WorldSession::HandleLootMoneyOpcode( WorldPacket & /*recv_data*/ )
for (std::vector<Player*>::iterator i = playersNear.begin(); i != playersNear.end(); ++i)
{
(*i)->ModifyMoney( money_per_player );
(*i)->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY, money_per_player);
//Offset surely incorrect, but works
WorldPacket data( SMSG_LOOT_MONEY_NOTIFY, 4 );
data << uint32(money_per_player);
@ -229,7 +230,10 @@ void WorldSession::HandleLootMoneyOpcode( WorldPacket & /*recv_data*/ )
}
}
else
{
player->ModifyMoney( pLoot->gold );
player->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY, pLoot->gold);
}
pLoot->gold = 0;
pLoot->NotifyMoneyRemoved();
}