[7026] Current arena season id and state send and setting in mangosd.conf.

Also classes and DB data for new batlegrounds/arena.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
GriffonHeart 2009-01-05 01:58:06 +03:00 committed by VladimirMangos
parent d65458b0de
commit 5332b4496d
21 changed files with 490 additions and 17 deletions

View file

@ -22,7 +22,7 @@
DROP TABLE IF EXISTS `db_version`;
CREATE TABLE `db_version` (
`version` varchar(120) default NULL,
`required_7024_01_mangos_spell_chain` bit(1) default NULL
`required_7026_01_mangos_battleground_template` bit(1) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
--
@ -160,7 +160,10 @@ INSERT INTO `battleground_template` VALUES
(5,0,2,10,70,939,0,940,3.14159),
(6,0,2,10,70,0,0,0,0),
(7,0,0,0,0,1103,3.40156,1104,0.263892),
(8,0,2,10,70,1258,0,1259,3.14159);
(8,0,2,10,70,1258,0,1259,3.14159),
(9,0,0,0,0,1367,0,1368,0),
(10,5,5,10,80,1362,0,1363,0),
(11,5,5,10,80,1364,0,1365,0);
/*!40000 ALTER TABLE `battleground_template` ENABLE KEYS */;
UNLOCK TABLES;

View file

@ -0,0 +1,7 @@
ALTER TABLE db_version CHANGE COLUMN required_7024_01_mangos_spell_chain required_7026_01_mangos_battleground_template bit;
DELETE FROM battleground_template WHERE id IN (9,10,11);
INSERT INTO battleground_template VALUES
(9,0,0,0,0,1367,0,1368,0),
(10,5,5,10,80,1362,0,1363,0),
(11,5,5,10,80,1364,0,1365,0);

View file

@ -110,6 +110,7 @@ pkgdata_DATA = \
7002_01_mangos_spell_chain.sql \
7015_01_mangos_item_template.sql \
7024_01_mangos_spell_chain.sql \
7026_01_mangos_battleground_template.sql \
README
## Additional files to include when running 'make dist'
@ -200,4 +201,5 @@ EXTRA_DIST = \
7002_01_mangos_spell_chain.sql \
7015_01_mangos_item_template.sql \
7024_01_mangos_spell_chain.sql \
7026_01_mangos_battleground_template.sql \
README

View file

@ -151,9 +151,10 @@ enum BattleGroundQueueTypeId
BATTLEGROUND_QUEUE_WS = 2,
BATTLEGROUND_QUEUE_AB = 3,
BATTLEGROUND_QUEUE_EY = 4,
BATTLEGROUND_QUEUE_2v2 = 5,
BATTLEGROUND_QUEUE_3v3 = 6,
BATTLEGROUND_QUEUE_5v5 = 7,
BATTLEGROUND_QUEUE_SA = 5,
BATTLEGROUND_QUEUE_2v2 = 6,
BATTLEGROUND_QUEUE_3v3 = 7,
BATTLEGROUND_QUEUE_5v5 = 8,
};
enum ScoreType

View file

@ -0,0 +1,63 @@
/*
* Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "Player.h"
#include "BattleGround.h"
#include "BattleGroundDS.h"
BattleGroundDS::BattleGroundDS()
{
}
BattleGroundDS::~BattleGroundDS()
{
}
void BattleGroundDS::Update(time_t diff)
{
BattleGround::Update(diff);
}
void BattleGroundDS::AddPlayer(Player *plr)
{
BattleGround::AddPlayer(plr);
//create score and add it to map, default values are set in constructor
BattleGroundDSScore* sc = new BattleGroundDSScore;
m_PlayerScores[plr->GetGUID()] = sc;
}
void BattleGroundDS::RemovePlayer(Player * /*plr*/, uint64 /*guid*/)
{
}
void BattleGroundDS::HandleKillPlayer(Player* player, Player* killer)
{
BattleGround::HandleKillPlayer(player, killer);
}
void BattleGroundDS::HandleAreaTrigger(Player * /*Source*/, uint32 /*Trigger*/)
{
}
bool BattleGroundDS::SetupBattleGround()
{
return true;
}

47
src/game/BattleGroundDS.h Normal file
View file

@ -0,0 +1,47 @@
/*
* Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __BATTLEGROUNDDS_H
#define __BATTLEGROUNDDS_H
class BattleGround;
class BattleGroundDSScore : public BattleGroundScore
{
public:
BattleGroundDSScore() {};
virtual ~BattleGroundDSScore() {};
//TODO fix me
};
class BattleGroundDS : public BattleGround
{
friend class BattleGroundMgr;
public:
BattleGroundDS();
~BattleGroundDS();
void Update(time_t diff);
/* inherited from BattlegroundClass */
virtual void AddPlayer(Player *plr);
void RemovePlayer(Player *plr, uint64 guid);
void HandleAreaTrigger(Player *Source, uint32 Trigger);
bool SetupBattleGround();
void HandleKillPlayer(Player* player, Player *killer);
};
#endif

View file

@ -27,6 +27,9 @@
#include "BattleGroundBE.h"
#include "BattleGroundAA.h"
#include "BattleGroundRL.h"
#include "BattleGroundSA.h"
#include "BattleGroundDS.h"
#include "BattleGroundRV.h"
#include "SharedDefines.h"
#include "Policies/SingletonImp.h"
#include "MapManager.h"
@ -1193,6 +1196,15 @@ void BattleGroundMgr::BuildBattleGroundStatusPacket(WorldPacket *data, BattleGro
case BATTLEGROUND_RL:
*data << uint8(8);
break;
case BATTLEGROUND_SA:
*data << uint8(9);
break;
case BATTLEGROUND_DS:
*data << uint8(10);
break;
case BATTLEGROUND_RV:
*data << uint8(11);
break;
default: // unknown
*data << uint8(0);
break;
@ -1469,6 +1481,15 @@ BattleGround * BattleGroundMgr::CreateNewBattleGround(uint32 bgTypeId)
case BATTLEGROUND_RL:
bg = new BattleGroundRL(*(BattleGroundRL*)bg_template);
break;
case BATTLEGROUND_SA:
bg = new BattleGroundSA(*(BattleGroundSA*)bg_template);
break;
case BATTLEGROUND_DS:
bg = new BattleGroundDS(*(BattleGroundDS*)bg_template);
break;
case BATTLEGROUND_RV:
bg = new BattleGroundRV(*(BattleGroundRV*)bg_template);
break;
default:
//bg = new BattleGround;
return 0;
@ -1515,6 +1536,9 @@ uint32 BattleGroundMgr::CreateBattleGround(uint32 bgTypeId, uint32 MinPlayersPer
case BATTLEGROUND_AA: bg = new BattleGroundAA; break;
case BATTLEGROUND_EY: bg = new BattleGroundEY; break;
case BATTLEGROUND_RL: bg = new BattleGroundRL; break;
case BATTLEGROUND_SA: bg = new BattleGroundSA; break;
case BATTLEGROUND_DS: bg = new BattleGroundDS; break;
case BATTLEGROUND_RV: bg = new BattleGroundRV; break;
default:bg = new BattleGround; break; // placeholder for non implemented BG
}
@ -1835,10 +1859,14 @@ uint32 BattleGroundMgr::BGQueueTypeId(uint32 bgTypeId, uint8 arenaType) const
return BATTLEGROUND_QUEUE_AV;
case BATTLEGROUND_EY:
return BATTLEGROUND_QUEUE_EY;
case BATTLEGROUND_SA:
return BATTLEGROUND_QUEUE_SA;
case BATTLEGROUND_AA:
case BATTLEGROUND_NA:
case BATTLEGROUND_RL:
case BATTLEGROUND_BE:
case BATTLEGROUND_DS:
case BATTLEGROUND_RV:
switch(arenaType)
{
case ARENA_TYPE_2v2:
@ -1867,6 +1895,8 @@ uint32 BattleGroundMgr::BGTemplateId(uint32 bgQueueTypeId) const
return BATTLEGROUND_AV;
case BATTLEGROUND_QUEUE_EY:
return BATTLEGROUND_EY;
case BATTLEGROUND_QUEUE_SA:
return BATTLEGROUND_SA;
case BATTLEGROUND_QUEUE_2v2:
case BATTLEGROUND_QUEUE_3v3:
case BATTLEGROUND_QUEUE_5v5:

View file

@ -34,7 +34,7 @@ typedef std::deque<BattleGround*> BGFreeSlotQueueType;
#define MAX_BATTLEGROUND_TYPES 12 // each BG type will be in array
#define MAX_BATTLEGROUND_QUEUE_TYPES 8
#define MAX_BATTLEGROUND_QUEUE_TYPES 9
#define BATTLEGROUND_ARENA_POINT_DISTRIBUTION_DAY 86400 // seconds in a day

View file

@ -0,0 +1,63 @@
/*
* Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "Player.h"
#include "BattleGround.h"
#include "BattleGroundRV.h"
BattleGroundRV::BattleGroundRV()
{
}
BattleGroundRV::~BattleGroundRV()
{
}
void BattleGroundRV::Update(time_t diff)
{
BattleGround::Update(diff);
}
void BattleGroundRV::AddPlayer(Player *plr)
{
BattleGround::AddPlayer(plr);
//create score and add it to map, default values are set in constructor
BattleGroundRVScore* sc = new BattleGroundRVScore;
m_PlayerScores[plr->GetGUID()] = sc;
}
void BattleGroundRV::RemovePlayer(Player * /*plr*/, uint64 /*guid*/)
{
}
void BattleGroundRV::HandleKillPlayer(Player* player, Player* killer)
{
BattleGround::HandleKillPlayer(player, killer);
}
void BattleGroundRV::HandleAreaTrigger(Player * /*Source*/, uint32 /*Trigger*/)
{
}
bool BattleGroundRV::SetupBattleGround()
{
return true;
}

47
src/game/BattleGroundRV.h Normal file
View file

@ -0,0 +1,47 @@
/*
* Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __BATTLEGROUNDRV_H
#define __BATTLEGROUNDRV_H
class BattleGround;
class BattleGroundRVScore : public BattleGroundScore
{
public:
BattleGroundRVScore() {};
virtual ~BattleGroundRVScore() {};
//TODO fix me
};
class BattleGroundRV : public BattleGround
{
friend class BattleGroundMgr;
public:
BattleGroundRV();
~BattleGroundRV();
void Update(time_t diff);
/* inherited from BattlegroundClass */
virtual void AddPlayer(Player *plr);
void RemovePlayer(Player *plr, uint64 guid);
void HandleAreaTrigger(Player *Source, uint32 Trigger);
bool SetupBattleGround();
void HandleKillPlayer(Player* player, Player *killer);
};
#endif

View file

@ -0,0 +1,67 @@
/*
* Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "BattleGround.h"
#include "BattleGroundSA.h"
BattleGroundSA::BattleGroundSA()
{
}
BattleGroundSA::~BattleGroundSA()
{
}
void BattleGroundSA::Update(time_t diff)
{
BattleGround::Update(diff);
}
void BattleGroundSA::AddPlayer(Player *plr)
{
BattleGround::AddPlayer(plr);
//create score and add it to map, default values are set in constructor
BattleGroundSAScore* sc = new BattleGroundSAScore;
m_PlayerScores[plr->GetGUID()] = sc;
}
void BattleGroundSA::RemovePlayer(Player* /*plr*/,uint64 /*guid*/)
{
}
void BattleGroundSA::HandleAreaTrigger(Player *Source, uint32 Trigger)
{
// this is wrong way to implement these things. On official it done by gameobject spell cast.
if(GetStatus() != STATUS_IN_PROGRESS)
return;
}
void BattleGroundSA::UpdatePlayerScore(Player* Source, uint32 type, uint32 value)
{
std::map<uint64, BattleGroundScore*>::iterator itr = m_PlayerScores.find(Source->GetGUID());
if(itr == m_PlayerScores.end()) // player not found...
return;
BattleGround::UpdatePlayerScore(Source,type,value);
}

52
src/game/BattleGroundSA.h Normal file
View file

@ -0,0 +1,52 @@
/*
* Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __BATTLEGROUNDSA_H
#define __BATTLEGROUNDSA_H
class BattleGround;
class BattleGroundSAScore : public BattleGroundScore
{
public:
BattleGroundSAScore() {};
virtual ~BattleGroundSAScore() {};
};
class BattleGroundSA : public BattleGround
{
friend class BattleGroundMgr;
public:
BattleGroundSA();
~BattleGroundSA();
void Update(time_t diff);
/* inherited from BattlegroundClass */
virtual void AddPlayer(Player *plr);
void RemovePlayer(Player *plr,uint64 guid);
void HandleAreaTrigger(Player *Source, uint32 Trigger);
//bool SetupBattleGround();
/* Scorekeeping */
void UpdatePlayerScore(Player *Source, uint32 type, uint32 value);
private:
};
#endif

View file

@ -49,18 +49,24 @@ libmangosgame_a_SOURCES = \
BattleGroundAB.cpp \
BattleGroundAV.cpp \
BattleGroundBE.cpp \
BattleGroundDS.cpp \
BattleGroundEY.cpp \
BattleGroundNA.cpp \
BattleGroundRL.cpp \
BattleGroundRV.cpp \
BattleGroundSA.cpp \
BattleGroundWS.cpp \
BattleGround.h \
BattleGroundAA.h \
BattleGroundAB.h \
BattleGroundAV.h \
BattleGroundBE.h \
BattleGroundDS.h \
BattleGroundEY.h \
BattleGroundNA.h \
BattleGroundRL.h \
BattleGroundRV.h \
BattleGroundSA.h \
BattleGroundWS.h \
BattleGroundHandler.cpp \
BattleGroundMgr.cpp \

View file

@ -7513,37 +7513,46 @@ void Player::SendInitWorldStates()
case 1537:
case 2257:
case 2918:
NumberOfFields = 6;
NumberOfFields = 8;
break;
case 139:
NumberOfFields = 41;
break;
case 1377:
NumberOfFields = 15;
break;
case 2597:
NumberOfFields = 81;
NumberOfFields = 83;
break;
case 3277:
NumberOfFields = 14;
NumberOfFields = 16;
break;
case 3358:
case 3820:
NumberOfFields = 38;
NumberOfFields = 40;
break;
case 3483:
NumberOfFields = 22;
NumberOfFields = 27;
break;
case 3518:
NumberOfFields = 39;
break;
case 3519:
NumberOfFields = 36;
NumberOfFields = 38;
break;
case 3521:
NumberOfFields = 35;
NumberOfFields = 37;
break;
case 3698:
case 3702:
case 3968:
NumberOfFields = 9;
NumberOfFields = 11;
break;
case 3703:
NumberOfFields = 9;
NumberOfFields = 11;
break;
default:
NumberOfFields = 10;
NumberOfFields = 12;
break;
}
@ -7558,6 +7567,10 @@ void Player::SendInitWorldStates()
data << uint32(0x8d5) << uint32(0x0); // 4
data << uint32(0x8d4) << uint32(0x0); // 5
data << uint32(0x8d3) << uint32(0x0); // 6
// 7 1 - Arena season in progress, 0 - end of season
data << uint32(0xC77) << uint32(sWorld.getConfig(CONFIG_ARENA_SEASON_IN_PROGRESS));
// 8 Arena season id
data << uint32(0xF3D) << uint32(sWorld.getConfig(CONFIG_ARENA_SEASON_ID));
if(mapid == 530) // Outland
{
data << uint32(0x9bf) << uint32(0x0); // 7

View file

@ -762,6 +762,8 @@ void World::LoadConfigSettings(bool reload)
m_configs[CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE] = sConfig.GetBoolDefault("Battleground.QueueAnnouncer.Enable", false);
m_configs[CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_PLAYERONLY] = sConfig.GetBoolDefault("Battleground.QueueAnnouncer.PlayerOnly", false);
m_configs[CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE] = sConfig.GetBoolDefault("Arena.QueueAnnouncer.Enable", false);
m_configs[CONFIG_ARENA_SEASON_ID] = sConfig.GetIntDefault ("Arena.ArenaSeason.ID", 1);
m_configs[CONFIG_ARENA_SEASON_IN_PROGRESS] = sConfig.GetBoolDefault("Arena.ArenaSeason.InProgress", true);
m_configs[CONFIG_CAST_UNSTUCK] = sConfig.GetBoolDefault("CastUnstuck", true);
m_configs[CONFIG_INSTANCE_RESET_TIME_HOUR] = sConfig.GetIntDefault("Instance.ResetTimeHour", 4);

View file

@ -185,6 +185,8 @@ enum WorldConfigs
CONFIG_ARENA_AUTO_DISTRIBUTE_POINTS,
CONFIG_ARENA_AUTO_DISTRIBUTE_INTERVAL_DAYS,
CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE,
CONFIG_ARENA_SEASON_ID,
CONFIG_ARENA_SEASON_IN_PROGRESS,
CONFIG_BATTLEGROUND_PREMATURE_FINISH_TIMER,
CONFIG_SKILL_MILLING,
CONFIG_VALUE_COUNT

View file

@ -1139,6 +1139,8 @@ Arena.MaxRatingDifference = 0
Arena.RatingDiscardTimer = 60000
Arena.AutoDistributePoints = 0
Arena.AutoDistributeInterval = 7
Arena.ArenaSeason.ID = 1
Arena.ArenaSeason.InProgress = 1
###################################################################################################################
#

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "7025"
#define REVISION_NR "7026"
#endif // __REVISION_NR_H__

View file

@ -185,6 +185,12 @@
<File
RelativePath="..\..\src\game\BattleGroundBE.h">
</File>
<File
RelativePath="..\..\src\game\BattleGroundDS.cpp">
</File>
<File
RelativePath="..\..\src\game\BattleGroundDS.h">
</File>
<File
RelativePath="..\..\src\game\BattleGroundEY.cpp">
</File>
@ -212,6 +218,18 @@
<File
RelativePath="..\..\src\game\BattleGroundRL.h">
</File>
<File
RelativePath="..\..\src\game\BattleGroundRV.cpp">
</File>
<File
RelativePath="..\..\src\game\BattleGroundRV.h">
</File>
<File
RelativePath="..\..\src\game\BattleGroundSA.cpp">
</File>
<File
RelativePath="..\..\src\game\BattleGroundSA.h">
</File>
<File
RelativePath="..\..\src\game\BattleGroundWS.cpp">
</File>

View file

@ -418,6 +418,14 @@
RelativePath="..\..\src\game\BattleGroundBE.h"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundDS.cpp"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundDS.h"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundEY.cpp"
>
@ -454,6 +462,22 @@
RelativePath="..\..\src\game\BattleGroundRL.h"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundRV.cpp"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundRV.h"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundSA.cpp"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundSA.h"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundWS.cpp"
>

View file

@ -420,6 +420,14 @@
RelativePath="..\..\src\game\BattleGroundBE.h"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundDS.cpp"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundDS.h"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundEY.cpp"
>
@ -456,6 +464,22 @@
RelativePath="..\..\src\game\BattleGroundRL.h"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundRV.cpp"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundRV.h"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundSA.cpp"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundSA.h"
>
</File>
<File
RelativePath="..\..\src\game\BattleGroundWS.cpp"
>