Implemented ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE

Added support for "in single battleground" and "without dying" requirement to battleground achievements
Add examples of scripting achievement (School of Hard Knocks, Storm Glory)

--HG--
branch : trunk
This commit is contained in:
Shauren
2010-08-07 18:31:06 +02:00
parent 9794e99d8a
commit b56cfe03d5
20 changed files with 96 additions and 38 deletions
@@ -1002,6 +1002,7 @@ void BattleGround::RemovePlayerAtLeave(uint64 guid, bool Transport, bool SendPac
plr->TeleportToBGEntryPoint();
sLog.outDetail("BATTLEGROUND: Removed player %s from BattleGround.", plr->GetName());
plr->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, ACHIEVEMENT_CRITERIA_CONDITION_MAP, GetMapId(), true);
}
//battleground object will be deleted next BattleGround::Update() call
@@ -1302,6 +1303,7 @@ void BattleGround::UpdatePlayerScore(Player *Source, uint32 type, uint32 value,
break;
case SCORE_DEATHS: // Deaths
itr->second->Deaths += value;
Source->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, ACHIEVEMENT_CRITERIA_CONDITION_NO_DEATH);
break;
case SCORE_HONORABLE_KILLS: // Honorable kills
itr->second->HonorableKills += value;
@@ -81,4 +81,3 @@ bool BattleGroundAA::SetupBattleGround()
{
return true;
}
@@ -50,4 +50,3 @@ class BattleGroundAA : public BattleGround
void HandleKillPlayer(Player* player, Player *killer);
};
#endif
@@ -693,9 +693,11 @@ void BattleGroundAB::UpdatePlayerScore(Player *Source, uint32 type, uint32 value
{
case SCORE_BASES_ASSAULTED:
((BattleGroundABScore*)itr->second)->BasesAssaulted += value;
Source->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AB_OBJECTIVE_ASSAULT_BASE);
break;
case SCORE_BASES_DEFENDED:
((BattleGroundABScore*)itr->second)->BasesDefended += value;
Source->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AB_OBJECTIVE_DEFEND_BASE);
break;
default:
BattleGround::UpdatePlayerScore(Source,type,value, doAddHonor);
@@ -172,6 +172,12 @@ enum BG_AB_Sounds
BG_AB_SOUND_NEAR_VICTORY = 8456
};
enum BG_AB_Objectives
{
AB_OBJECTIVE_ASSAULT_BASE = 122,
AB_OBJECTIVE_DEFEND_BASE = 123
};
#define BG_AB_NotABBGWeekendHonorTicks 330
#define BG_AB_ABBGWeekendHonorTicks 200
#define BG_AB_NotABBGWeekendReputationTicks 200
@@ -541,15 +541,19 @@ void BattleGroundAV::UpdatePlayerScore(Player* Source, uint32 type, uint32 value
{
case SCORE_GRAVEYARDS_ASSAULTED:
((BattleGroundAVScore*)itr->second)->GraveyardsAssaulted += value;
Source->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AV_OBJECTIVE_ASSAULT_GRAVEYARD);
break;
case SCORE_GRAVEYARDS_DEFENDED:
((BattleGroundAVScore*)itr->second)->GraveyardsDefended += value;
Source->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AV_OBJECTIVE_DEFEND_GRAVEYARD);
break;
case SCORE_TOWERS_ASSAULTED:
((BattleGroundAVScore*)itr->second)->TowersAssaulted += value;
Source->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AV_OBJECTIVE_ASSAULT_TOWER);
break;
case SCORE_TOWERS_DEFENDED:
((BattleGroundAVScore*)itr->second)->TowersDefended += value;
Source->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AV_OBJECTIVE_DEFEND_TOWER);
break;
case SCORE_MINES_CAPTURED:
((BattleGroundAVScore*)itr->second)->MinesCaptured += value;
@@ -1499,6 +1499,14 @@ enum BG_AV_QuestIds
AV_QUEST_H_RIDER_TAME = 7001
};
enum BG_AV_Objectives
{
AV_OBJECTIVE_ASSAULT_TOWER = 61,
AV_OBJECTIVE_ASSAULT_GRAVEYARD = 63,
AV_OBJECTIVE_DEFEND_TOWER = 64,
AV_OBJECTIVE_DEFEND_GRAVEYARD = 65
};
struct BG_AV_NodeInfo
{
uint16 TotalOwner;
@@ -817,6 +817,7 @@ void BattleGroundEY::UpdatePlayerScore(Player *Source, uint32 type, uint32 value
{
case SCORE_FLAG_CAPTURES: // flags captured
((BattleGroundEYScore*)itr->second)->FlagCaptures += value;
Source->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, EY_OBJECTIVE_CAPTURE_FLAG);
break;
default:
BattleGround::UpdatePlayerScore(Source, type, value, doAddHonor);
@@ -240,6 +240,11 @@ enum EYBattleGroundPointState
EY_POINT_UNDER_CONTROL = 3
};
enum BG_EY_Objectives
{
EY_OBJECTIVE_CAPTURE_FLAG = 183
};
struct BattleGroundEYPointIconsStruct
{
BattleGroundEYPointIconsStruct(uint32 _WorldStateControlIndex, uint32 _WorldStateAllianceControlledIndex, uint32 _WorldStateHordeControlledIndex)
@@ -27,6 +27,12 @@ enum Buffs
QUARRY = 68720
};
enum BG_IC_Objectives
{
IC_OBJECTIVE_ASSAULT_BASE = 245,
IC_OBJECTIVE_DEFEND_BASE = 246
};
class BattleGroundICScore : public BattleGroundScore
{
public:
@@ -765,9 +765,11 @@ void BattleGroundWS::UpdatePlayerScore(Player *Source, uint32 type, uint32 value
{
case SCORE_FLAG_CAPTURES: // flags captured
((BattleGroundWGScore*)itr->second)->FlagCaptures += value;
Source->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, WS_OBJECTIVE_CAPTURE_FLAG);
break;
case SCORE_FLAG_RETURNS: // flags returned
((BattleGroundWGScore*)itr->second)->FlagReturns += value;
Source->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, WS_OBJECTIVE_RETURN_FLAG);
break;
default:
BattleGround::UpdatePlayerScore(Source, type, value, doAddHonor);
@@ -138,6 +138,12 @@ enum BG_WS_CarrierDebuffs
WS_SPELL_BRUTAL_ASSAULT = 46393
};
enum BG_WS_Objectives
{
WS_OBJECTIVE_CAPTURE_FLAG = 42,
WS_OBJECTIVE_RETURN_FLAG = 44
};
class BattleGroundWGScore : public BattleGroundScore
{
public: