mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 13:37:05 +00:00
[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:
parent
2d6b8bf068
commit
bff0cb8c75
7 changed files with 81 additions and 47 deletions
|
|
@ -406,6 +406,26 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
|
// std. case: increment at 1
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST:
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_PLAYER:
|
||||||
|
// AchievementMgr::UpdateAchievementCriteria might also be called on login - skip in this case
|
||||||
|
if(!miscvalue1)
|
||||||
|
continue;
|
||||||
|
SetCriteriaProgress(achievementCriteria, 1, true);
|
||||||
|
break;
|
||||||
|
// std case: increment at miscvalue1
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS:
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD:
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING:
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_AT_BARBER:
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL:
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY:
|
||||||
|
// AchievementMgr::UpdateAchievementCriteria might also be called on login - skip in this case
|
||||||
|
if(!miscvalue1)
|
||||||
|
continue;
|
||||||
|
SetCriteriaProgress(achievementCriteria, miscvalue1, true);
|
||||||
|
break;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL:
|
case ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL:
|
||||||
SetCriteriaProgress(achievementCriteria, GetPlayer()->getLevel());
|
SetCriteriaProgress(achievementCriteria, GetPlayer()->getLevel());
|
||||||
break;
|
break;
|
||||||
|
|
@ -445,12 +465,6 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
|
||||||
SetCriteriaProgress(achievementCriteria, counter);
|
SetCriteriaProgress(achievementCriteria, counter);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST:
|
|
||||||
// AchievementMgr::UpdateAchievementCriteria might also be called on login - skip in this case
|
|
||||||
if(!miscvalue1)
|
|
||||||
continue;
|
|
||||||
SetCriteriaProgress(achievementCriteria, miscvalue1, true);
|
|
||||||
break;
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND:
|
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND:
|
||||||
// AchievementMgr::UpdateAchievementCriteria might also be called on login - skip in this case
|
// AchievementMgr::UpdateAchievementCriteria might also be called on login - skip in this case
|
||||||
if(!miscvalue1)
|
if(!miscvalue1)
|
||||||
|
|
@ -483,12 +497,6 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
|
||||||
continue;
|
continue;
|
||||||
SetCriteriaProgress(achievementCriteria, 1, true);
|
SetCriteriaProgress(achievementCriteria, 1, true);
|
||||||
break;
|
break;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_PLAYER:
|
|
||||||
// AchievementMgr::UpdateAchievementCriteria might also be called on login - skip in this case
|
|
||||||
if(!miscvalue1)
|
|
||||||
continue;
|
|
||||||
SetCriteriaProgress(achievementCriteria, 1, true);
|
|
||||||
break;
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING:
|
case ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING:
|
||||||
{
|
{
|
||||||
// AchievementMgr::UpdateAchievementCriteria might also be called on login - skip in this case
|
// AchievementMgr::UpdateAchievementCriteria might also be called on login - skip in this case
|
||||||
|
|
@ -674,13 +682,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS:
|
case ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM:
|
case ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS:
|
case ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS:
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS:
|
case ACHIEVEMENT_CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD:
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING:
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_AT_BARBER:
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL:
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY:
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT:
|
case ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL:
|
case ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT:
|
case ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT:
|
||||||
|
|
@ -754,6 +756,8 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve
|
||||||
|
|
||||||
switch(achievementCriteria->requiredType)
|
switch(achievementCriteria->requiredType)
|
||||||
{
|
{
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE:
|
||||||
|
return progress->counter >= achievementCriteria->kill_creature.creatureCount;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL:
|
case ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL:
|
||||||
{
|
{
|
||||||
// skip wrong class achievements
|
// skip wrong class achievements
|
||||||
|
|
@ -769,57 +773,62 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve
|
||||||
// appropriate class/race or not class/race specific
|
// appropriate class/race or not class/race specific
|
||||||
return progress->counter >= achievementCriteria->reach_level.level;
|
return progress->counter >= achievementCriteria->reach_level.level;
|
||||||
}
|
}
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT:
|
|
||||||
return progress->counter >= achievementCriteria->buy_bank_slot.numberOfSlots;
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE:
|
|
||||||
return progress->counter >= achievementCriteria->kill_creature.creatureCount;
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT:
|
|
||||||
return progress->counter >= 1;
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_REACH_SKILL_LEVEL:
|
case ACHIEVEMENT_CRITERIA_TYPE_REACH_SKILL_LEVEL:
|
||||||
return progress->counter >= achievementCriteria->reach_skill_level.skillLevel;
|
return progress->counter >= achievementCriteria->reach_skill_level.skillLevel;
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT:
|
||||||
|
return progress->counter >= 1;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST_COUNT:
|
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST_COUNT:
|
||||||
return progress->counter >= achievementCriteria->complete_quest_count.totalQuestCount;
|
return progress->counter >= achievementCriteria->complete_quest_count.totalQuestCount;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE:
|
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE:
|
||||||
return progress->counter >= achievementCriteria->complete_quests_in_zone.questCount;
|
return progress->counter >= achievementCriteria->complete_quests_in_zone.questCount;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST:
|
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST:
|
||||||
return progress->counter >= achievementCriteria->complete_daily_quest.questCount;
|
return progress->counter >= achievementCriteria->complete_daily_quest.questCount;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL:
|
|
||||||
return progress->counter >= 1;
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING:
|
case ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING:
|
||||||
return progress->counter >= achievementCriteria->fall_without_dying.fallHeight;
|
return progress->counter >= achievementCriteria->fall_without_dying.fallHeight;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST:
|
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST:
|
||||||
return progress->counter >= 1;
|
return progress->counter >= 1;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM:
|
|
||||||
return progress->counter >= achievementCriteria->use_item.itemCount;
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM:
|
|
||||||
return progress->counter >= achievementCriteria->own_item.itemCount;
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM:
|
|
||||||
return progress->counter >= achievementCriteria->loot_item.itemCount;
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET:
|
case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2:
|
case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2:
|
||||||
return progress->counter >= achievementCriteria->be_spell_target.spellCount;
|
return progress->counter >= achievementCriteria->be_spell_target.spellCount;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL:
|
case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2:
|
case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2:
|
||||||
return progress->counter >= achievementCriteria->cast_spell.castCount;
|
return progress->counter >= achievementCriteria->cast_spell.castCount;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS:
|
case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL:
|
||||||
return progress->counter >= achievementCriteria->learn_skilline_spell.spellCount;
|
return progress->counter >= 1;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_VISIT_BARBER_SHOP:
|
case ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM:
|
||||||
return progress->counter >= achievementCriteria->visit_barber.numberOfVisits;
|
return progress->counter >= achievementCriteria->own_item.itemCount;
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM:
|
||||||
|
return progress->counter >= achievementCriteria->use_item.itemCount;
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM:
|
||||||
|
return progress->counter >= achievementCriteria->loot_item.itemCount;
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_EXPLORE_AREA:
|
||||||
|
return progress->counter >= 1;
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT:
|
||||||
|
return progress->counter >= achievementCriteria->buy_bank_slot.numberOfSlots;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION:
|
case ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION:
|
||||||
return progress->counter >= achievementCriteria->gain_reputation.reputationAmount;
|
return progress->counter >= achievementCriteria->gain_reputation.reputationAmount;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_GAIN_EXALTED_REPUTATION:
|
case ACHIEVEMENT_CRITERIA_TYPE_GAIN_EXALTED_REPUTATION:
|
||||||
return progress->counter >= achievementCriteria->gain_exalted_reputation.numberOfExaltedFactions;
|
return progress->counter >= achievementCriteria->gain_exalted_reputation.numberOfExaltedFactions;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_EXPLORE_AREA:
|
case ACHIEVEMENT_CRITERIA_TYPE_VISIT_BARBER_SHOP:
|
||||||
return progress->counter >= 1;
|
return progress->counter >= achievementCriteria->visit_barber.numberOfVisits;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT:
|
case ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT:
|
case ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT:
|
||||||
return progress->counter >= achievementCriteria->roll_greed_on_loot.count;
|
return progress->counter >= achievementCriteria->roll_greed_on_loot.count;
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD:
|
||||||
|
return progress->counter >= achievementCriteria->quest_reward_money.goldInCopper;
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY:
|
||||||
|
return progress->counter >= achievementCriteria->loot_money.goldInCopper;
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS:
|
||||||
|
return progress->counter >= achievementCriteria->learn_skilline_spell.spellCount;
|
||||||
|
|
||||||
// handle all statistic-only criteria here
|
// handle all statistic-only criteria here
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND:
|
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP:
|
case ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_CREATURE:
|
case ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_CREATURE:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_PLAYER:
|
case ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_PLAYER:
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS:
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_AT_BARBER:
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -1188,7 +1188,8 @@ void WorldSession::HandleAlterAppearance( WorldPacket & recv_data )
|
||||||
SendPacket(&data);
|
SendPacket(&data);
|
||||||
}
|
}
|
||||||
|
|
||||||
_player->SetMoney(_player->GetMoney() - Cost); // it isn't free
|
_player->ModifyMoney(-int32(Cost)); // it isn't free
|
||||||
|
_player->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_AT_BARBER, Cost);
|
||||||
|
|
||||||
_player->SetByteValue(PLAYER_BYTES, 2, uint8(bs_hair->hair_id));
|
_player->SetByteValue(PLAYER_BYTES, 2, uint8(bs_hair->hair_id));
|
||||||
_player->SetByteValue(PLAYER_BYTES, 3, uint8(Color));
|
_player->SetByteValue(PLAYER_BYTES, 3, uint8(Color));
|
||||||
|
|
|
||||||
|
|
@ -222,6 +222,7 @@ void WorldSession::HandleLootMoneyOpcode( WorldPacket & /*recv_data*/ )
|
||||||
for (std::vector<Player*>::iterator i = playersNear.begin(); i != playersNear.end(); ++i)
|
for (std::vector<Player*>::iterator i = playersNear.begin(); i != playersNear.end(); ++i)
|
||||||
{
|
{
|
||||||
(*i)->ModifyMoney( money_per_player );
|
(*i)->ModifyMoney( money_per_player );
|
||||||
|
(*i)->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY, money_per_player);
|
||||||
//Offset surely incorrect, but works
|
//Offset surely incorrect, but works
|
||||||
WorldPacket data( SMSG_LOOT_MONEY_NOTIFY, 4 );
|
WorldPacket data( SMSG_LOOT_MONEY_NOTIFY, 4 );
|
||||||
data << uint32(money_per_player);
|
data << uint32(money_per_player);
|
||||||
|
|
@ -229,7 +230,10 @@ void WorldSession::HandleLootMoneyOpcode( WorldPacket & /*recv_data*/ )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
player->ModifyMoney( pLoot->gold );
|
player->ModifyMoney( pLoot->gold );
|
||||||
|
player->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY, pLoot->gold);
|
||||||
|
}
|
||||||
pLoot->gold = 0;
|
pLoot->gold = 0;
|
||||||
pLoot->NotifyMoneyRemoved();
|
pLoot->NotifyMoneyRemoved();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -122,9 +122,11 @@ void WorldSession::HandleSendMail(WorldPacket & recv_data )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 reqmoney = money + 30;
|
uint32 cost = money + 30;
|
||||||
if (items_count)
|
if (items_count)
|
||||||
reqmoney = money + (30 * items_count);
|
cost = 30 * items_count;
|
||||||
|
|
||||||
|
uint32 reqmoney = cost + money;
|
||||||
|
|
||||||
if (pl->GetMoney() < reqmoney)
|
if (pl->GetMoney() < reqmoney)
|
||||||
{
|
{
|
||||||
|
|
@ -207,6 +209,7 @@ void WorldSession::HandleSendMail(WorldPacket & recv_data )
|
||||||
}
|
}
|
||||||
|
|
||||||
pl->ModifyMoney( -int32(reqmoney) );
|
pl->ModifyMoney( -int32(reqmoney) );
|
||||||
|
pl->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL, cost);
|
||||||
|
|
||||||
bool needItemDelay = false;
|
bool needItemDelay = false;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3335,6 +3335,7 @@ bool Player::resetTalents(bool no_cost)
|
||||||
if(!no_cost)
|
if(!no_cost)
|
||||||
{
|
{
|
||||||
ModifyMoney(-(int32)cost);
|
ModifyMoney(-(int32)cost);
|
||||||
|
GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS, cost);
|
||||||
|
|
||||||
m_resetTalentsCost = cost;
|
m_resetTalentsCost = cost;
|
||||||
m_resetTalentsTime = time(NULL);
|
m_resetTalentsTime = time(NULL);
|
||||||
|
|
@ -12790,10 +12791,18 @@ void Player::RewardQuest( Quest const *pQuest, uint32 reward, Object* questGiver
|
||||||
if ( getLevel() < sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL) )
|
if ( getLevel() < sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL) )
|
||||||
GiveXP( XP , NULL );
|
GiveXP( XP , NULL );
|
||||||
else
|
else
|
||||||
ModifyMoney( int32(pQuest->GetRewMoneyMaxLevel() * sWorld.getRate(RATE_DROP_MONEY)) );
|
{
|
||||||
|
int32 money = int32(pQuest->GetRewMoneyMaxLevel() * sWorld.getRate(RATE_DROP_MONEY));
|
||||||
|
ModifyMoney( money );
|
||||||
|
GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD, money);
|
||||||
|
}
|
||||||
|
|
||||||
// Give player extra money if GetRewOrReqMoney > 0 and get ReqMoney if negative
|
// Give player extra money if GetRewOrReqMoney > 0 and get ReqMoney if negative
|
||||||
ModifyMoney( pQuest->GetRewOrReqMoney() );
|
if(pQuest->GetRewOrReqMoney())
|
||||||
|
{
|
||||||
|
ModifyMoney( pQuest->GetRewOrReqMoney() );
|
||||||
|
GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD, pQuest->GetRewOrReqMoney());
|
||||||
|
}
|
||||||
|
|
||||||
// honor reward
|
// honor reward
|
||||||
if(pQuest->GetRewHonorableKills())
|
if(pQuest->GetRewHonorableKills())
|
||||||
|
|
@ -17257,6 +17266,7 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, uint32 mount_i
|
||||||
|
|
||||||
//Checks and preparations done, DO FLIGHT
|
//Checks and preparations done, DO FLIGHT
|
||||||
ModifyMoney(-(int32)totalcost);
|
ModifyMoney(-(int32)totalcost);
|
||||||
|
GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING, totalcost);
|
||||||
|
|
||||||
// prevent stealth flight
|
// prevent stealth flight
|
||||||
RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
|
RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
|
||||||
|
|
|
||||||
|
|
@ -369,6 +369,13 @@ struct AchievementCriteriaEntry
|
||||||
uint32 itemID; // 3
|
uint32 itemID; // 3
|
||||||
} equip_item;
|
} equip_item;
|
||||||
|
|
||||||
|
// ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD = 62
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
uint32 unused; // 3
|
||||||
|
uint32 goldInCopper; // 4
|
||||||
|
} quest_reward_money;
|
||||||
|
|
||||||
|
|
||||||
// ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY = 67
|
// ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY = 67
|
||||||
struct
|
struct
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "7378"
|
#define REVISION_NR "7379"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue