/// called when using a banner void BattleGroundAV::EventPlayerClickedOnFlag(Player* source, GameObject* target_obj) { if (GetStatus() != STATUS_IN_PROGRESS) { return; } DEBUG_LOG("BattleGroundAV: using gameobject %i", target_obj->GetEntry()); uint8 event = (sBattleGroundMgr.GetGameObjectEventIndex(target_obj->GetGUIDLow())).event1; if (event >= BG_AV_NODES_MAX) // not a node { return; } BG_AV_Nodes node = BG_AV_Nodes(event); switch ((sBattleGroundMgr.GetGameObjectEventIndex(target_obj->GetGUIDLow())).event2 % BG_AV_MAX_STATES) { case POINT_CONTROLLED: EventPlayerAssaultsPoint(source, node); break; case POINT_ASSAULTED: EventPlayerDefendsPoint(source, node); break; default: break; } }
/// called when using a banner void BattleGroundAV::EventPlayerClickedOnFlag(Player *source, GameObject* target_obj) { if (GetStatus() != STATUS_IN_PROGRESS) return; DEBUG_LOG("BattleGroundAV: using gameobject %i", target_obj->GetEntry()); uint8 event = (sBattleGroundMgr.GetGameObjectEventIndex(target_obj->GetDBTableGUIDLow())).event1; if (event >= BG_AV_NODES_MAX) // not a node return; BG_AV_Nodes node = BG_AV_Nodes(event); switch ((sBattleGroundMgr.GetGameObjectEventIndex(target_obj->GetDBTableGUIDLow())).event2 % BG_AV_MAX_STATES) { case POINT_CONTROLLED: EventPlayerAssaultsPoint(source, node); source->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE,1, IsTower(node) ? 0:1); break; case POINT_ASSAULTED: EventPlayerDefendsPoint(source, node); source->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE,1, IsTower(node) ? 2:3); break; default: break; } }