[12054] Add grayard linking/ unlinking support

This commit is contained in:
stfx 2012-07-16 23:42:01 +02:00 committed by Schmoozerd
parent c9d98e8c96
commit 754634fe42
5 changed files with 61 additions and 42 deletions

View file

@ -4047,7 +4047,7 @@ bool ChatHandler::HandleLinkGraveCommand(char* args)
Team g_team;
if (!teamStr)
g_team = TEAM_NONE;
g_team = TEAM_BOTH_ALLOWED;
else if (strncmp(teamStr, "horde", strlen(teamStr))==0)
g_team = HORDE;
else if (strncmp(teamStr, "alliance", strlen(teamStr))==0)
@ -4055,8 +4055,7 @@ bool ChatHandler::HandleLinkGraveCommand(char* args)
else
return false;
WorldSafeLocsEntry const* graveyard = sWorldSafeLocsStore.LookupEntry(g_id);
WorldSafeLocsEntry const* graveyard = sWorldSafeLocsStore.LookupEntry(g_id);
if (!graveyard )
{
PSendSysMessage(LANG_COMMAND_GRAVEYARDNOEXIST, g_id);
@ -4068,10 +4067,10 @@ bool ChatHandler::HandleLinkGraveCommand(char* args)
uint32 zoneId = player->GetZoneId();
AreaTableEntry const *areaEntry = GetAreaEntryByAreaID(zoneId);
AreaTableEntry const* areaEntry = GetAreaEntryByAreaID(zoneId);
if (!areaEntry || areaEntry->zone !=0)
{
PSendSysMessage(LANG_COMMAND_GRAVEYARDWRONGZONE, g_id,zoneId);
PSendSysMessage(LANG_COMMAND_GRAVEYARDWRONGZONE, g_id, zoneId);
SetSentErrorMessage(true);
return false;
}
@ -4091,7 +4090,7 @@ bool ChatHandler::HandleNearGraveCommand(char* args)
size_t argslen = strlen(args);
if(!*args)
g_team = TEAM_NONE;
g_team = TEAM_BOTH_ALLOWED;
else if (strncmp(args, "horde", argslen) == 0)
g_team = HORDE;
else if (strncmp(args, "alliance", argslen) == 0)
@ -4102,49 +4101,48 @@ bool ChatHandler::HandleNearGraveCommand(char* args)
Player* player = m_session->GetPlayer();
uint32 zone_id = player->GetZoneId();
WorldSafeLocsEntry const* graveyard = sObjectMgr.GetClosestGraveYard(
player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetMapId(), g_team);
WorldSafeLocsEntry const* graveyard = sObjectMgr.GetClosestGraveYard(player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetMapId(), g_team);
if(graveyard)
if (graveyard)
{
uint32 g_id = graveyard->ID;
GraveYardData const* data = sObjectMgr.FindGraveYardData(g_id,zone_id);
GraveYardData const* data = sObjectMgr.FindGraveYardData(g_id, zone_id);
if (!data)
{
PSendSysMessage(LANG_COMMAND_GRAVEYARDERROR,g_id);
PSendSysMessage(LANG_COMMAND_GRAVEYARDERROR, g_id);
SetSentErrorMessage(true);
return false;
}
g_team = data->team;
std::string team_name;
std::string team_name = GetMangosString(LANG_COMMAND_GRAVEYARD_NOTEAM);
if(g_team == 0)
if (data->team == TEAM_BOTH_ALLOWED)
team_name = GetMangosString(LANG_COMMAND_GRAVEYARD_ANY);
else if(g_team == HORDE)
else if (data->team == HORDE)
team_name = GetMangosString(LANG_COMMAND_GRAVEYARD_HORDE);
else if(g_team == ALLIANCE)
else if (data->team == ALLIANCE)
team_name = GetMangosString(LANG_COMMAND_GRAVEYARD_ALLIANCE);
else // Actually, this case cannot happen
team_name = GetMangosString(LANG_COMMAND_GRAVEYARD_NOTEAM);
PSendSysMessage(LANG_COMMAND_GRAVEYARDNEAREST, g_id,team_name.c_str(),zone_id);
PSendSysMessage(LANG_COMMAND_GRAVEYARDNEAREST, g_id, team_name.c_str(), zone_id);
}
else
{
std::string team_name;
if(g_team == 0)
if (g_team == TEAM_BOTH_ALLOWED)
team_name = GetMangosString(LANG_COMMAND_GRAVEYARD_ANY);
else if(g_team == HORDE)
else if (g_team == HORDE)
team_name = GetMangosString(LANG_COMMAND_GRAVEYARD_HORDE);
else if(g_team == ALLIANCE)
else if (g_team == ALLIANCE)
team_name = GetMangosString(LANG_COMMAND_GRAVEYARD_ALLIANCE);
if(g_team == ~uint32(0))
if (g_team == TEAM_BOTH_ALLOWED)
PSendSysMessage(LANG_COMMAND_ZONENOGRAVEYARDS, zone_id);
else
PSendSysMessage(LANG_COMMAND_ZONENOGRAFACTION, zone_id,team_name.c_str());
PSendSysMessage(LANG_COMMAND_ZONENOGRAFACTION, zone_id, team_name.c_str());
}
return true;