Index: /trunk/src/game/SpellEffects.cpp
===================================================================
--- /trunk/src/game/SpellEffects.cpp (revision 279)
+++ /trunk/src/game/SpellEffects.cpp (revision 283)
@@ -2887,5 +2887,5 @@
             {
                 // check if it's correct bg
-                if(bg && bg->GetTypeID() == BATTLEGROUND_AB)
+                if(bg->GetTypeID() == BATTLEGROUND_AB || bg->GetTypeID() == BATTLEGROUND_AV)
                     bg->EventPlayerClickedOnFlag(player, gameObjTarget);
                 return;
@@ -3151,5 +3151,4 @@
         case SUMMON_TYPE_POSESSED:
         case SUMMON_TYPE_POSESSED2:
-        case SUMMON_TYPE_POSESSED3:
             EffectSummonPossessed(i);
             break;
@@ -3176,4 +3175,5 @@
             break;
         case SUMMON_TYPE_UNKNOWN1:
+        case SUMMON_TYPE_UNKNOWN2:
         case SUMMON_TYPE_UNKNOWN3:
         case SUMMON_TYPE_UNKNOWN4:
Index: /trunk/src/game/PetHandler.cpp
===================================================================
--- /trunk/src/game/PetHandler.cpp (revision 277)
+++ /trunk/src/game/PetHandler.cpp (revision 283)
@@ -98,11 +98,4 @@
                 case COMMAND_ATTACK:                        //spellid=1792  //ATTACK
                 {
-                    // Can't attack if owner is pacified
-                    if (_player->HasAuraType(SPELL_AURA_MOD_PACIFY))
-                    {
-                        //pet->SendPetCastFail(spellid, SPELL_FAILED_PACIFIED);
-                        //TODO: Send proper error message to client
-                        return;
-                    }
                     // only place where pet can be player
                     pet->clearUnitState(UNIT_STAT_FOLLOW);
Index: /trunk/src/game/SpellHandler.cpp
===================================================================
--- /trunk/src/game/SpellHandler.cpp (revision 279)
+++ /trunk/src/game/SpellHandler.cpp (revision 283)
@@ -34,5 +34,4 @@
 #include "ScriptCalls.h"
 #include "Totem.h"
-#include "TemporarySummon.h"
 
 void WorldSession::HandleUseItemOpcode(WorldPacket& recvPacket)
@@ -378,12 +377,4 @@
                 return;
             }
-            else if (spellInfo->Effect[i] == SPELL_EFFECT_SUMMON && 
-                (spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED || 
-                 spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED2 || 
-                 spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED3))
-            {
-                // Possession is removed in the UnSummon function
-                ((TemporarySummon*)_player->GetCharm())->UnSummon();
-            }
         }
     }
Index: /trunk/src/game/Unit.h
===================================================================
--- /trunk/src/game/Unit.h (revision 279)
+++ /trunk/src/game/Unit.h (revision 283)
@@ -641,5 +641,5 @@
 typedef std::list<Player*> SharedVisionList;
 
-struct TRINITY_DLL_SPEC CharmInfo
+struct CharmInfo
 {
     public:
@@ -658,5 +658,5 @@
         void InitCharmCreateSpells();
         void InitPetActionBar();
-        void InitEmptyActionBar(bool withAttack = true);
+        void InitEmptyActionBar();
                                                             //return true if successful
         bool AddSpellToAB(uint32 oldid, uint32 newid, ActiveStates newstate = ACT_DECIDE);
@@ -672,5 +672,4 @@
         ReactStates     m_reactState;
         uint32          m_petnumber;
-        bool            m_barInit;
 };
 
Index: /trunk/src/game/BattleGround.cpp
===================================================================
--- /trunk/src/game/BattleGround.cpp (revision 230)
+++ /trunk/src/game/BattleGround.cpp (revision 283)
@@ -362,4 +362,21 @@
     }
 }
+
+void BattleGround::YellToAll(Creature* creature, const char* text, uint32 language)
+{
+    for(std::map<uint64, BattleGroundPlayer>::iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
+    {
+        WorldPacket data(SMSG_MESSAGECHAT, 200);
+        Player *plr = objmgr.GetPlayer(itr->first);
+        if(!plr)
+        {
+            sLog.outError("BattleGround: Player " I64FMTD " not found!", itr->first);
+            continue;
+        }
+        creature->BuildMonsterChat(&data,CHAT_MSG_MONSTER_YELL,text,language,creature->GetName(),itr->first);
+        plr->GetSession()->SendPacket(&data);
+    }
+}
+
 
 void BattleGround::RewardHonorToTeam(uint32 Honor, uint32 TeamID)
@@ -1219,4 +1236,20 @@
 }
 
+GameObject* BattleGround::GetBGObject(uint32 type)
+{
+    GameObject *obj = HashMapHolder<GameObject>::Find(m_BgObjects[type]);
+    if(!obj)
+        sLog.outError("couldn't get gameobject %i",type);
+    return obj;
+}
+
+Creature* BattleGround::GetBGCreature(uint32 type)
+{
+    Creature *creature = HashMapHolder<Creature>::Find(m_BgCreatures[type]);
+    if(!creature)
+        sLog.outError("couldn't get creature %i",type);
+    return creature;
+}
+
 void BattleGround::SpawnBGObject(uint32 type, uint32 respawntime)
 {
@@ -1270,4 +1303,14 @@
     }
 
+    CreatureData &data = objmgr.NewOrExistCreatureData(pCreature->GetDBTableGUIDLow());
+    
+    data.id             = entry;
+//    data.mapid          = GetMapId();
+    data.posX           = x;
+    data.posY           = y;
+    data.posZ           = z;
+    data.orientation    = o;
+    data.spawndist      = 15;
+
     pCreature->AIM_Initialize();
 
@@ -1288,4 +1331,5 @@
         return false;
     }
+    //TODO: only delete creature after not in combat
     cr->CleanupsBeforeDelete();
     cr->AddObjectToRemoveList();
@@ -1475,2 +1519,15 @@
         m_HonorMode = BG_NORMAL;
 }
+
+int32 BattleGround::GetObjectType(uint64 guid)
+{
+    for(uint32 i = 0;i <= m_BgObjects.size(); i++)
+        if(m_BgObjects[i] == guid)
+            return i;
+    sLog.outError("BattleGround: cheating? a player used a gameobject which isnt supposed to be a usable object!");
+    return -1;
+}
+
+void BattleGround::HandleKillUnit(Creature *creature, Player *killer)
+{
+}
Index: /trunk/src/game/BattleGround.h
===================================================================
--- /trunk/src/game/BattleGround.h (revision 279)
+++ /trunk/src/game/BattleGround.h (revision 283)
@@ -355,4 +355,6 @@
         void StartBattleGround();
 
+        GameObject* GetBGObject(uint32 type);
+        Creature* GetBGCreature(uint32 type);
         /* Location */
         void SetMapId(uint32 MapID) { m_MapId = MapID; }
@@ -374,4 +376,5 @@
         void SendPacketToTeam(uint32 TeamID, WorldPacket *packet, Player *sender = NULL, bool self = true);
         void SendPacketToAll(WorldPacket *packet);
+        void YellToAll(Creature* creature, const char* text, uint32 language);
         void PlaySoundToTeam(uint32 SoundID, uint32 TeamID);
         void PlaySoundToAll(uint32 SoundID);
@@ -424,4 +427,5 @@
         // must be implemented in BG subclass if need AND call base class generic code
         virtual void HandleKillPlayer(Player *player, Player *killer);
+        virtual void HandleKillUnit(Creature* /*unit*/, Player* /*killer*/);
 
         /* Battleground events */
@@ -453,4 +457,5 @@
         bool DelObject(uint32 type);
         bool AddSpiritGuide(uint32 type, float x, float y, float z, float o, uint32 team);
+        int32 GetObjectType(uint64 guid);
 
         void DoorOpen(uint32 type);
Index: /trunk/src/game/SpellAuras.cpp
===================================================================
--- /trunk/src/game/SpellAuras.cpp (revision 279)
+++ /trunk/src/game/SpellAuras.cpp (revision 283)
@@ -50,4 +50,5 @@
 #include "GridNotifiersImpl.h"
 #include "CellImpl.h"
+#include "TemporarySummon.h"
 
 #define NULL_AURA_SLOT 0xFF
@@ -2024,4 +2025,11 @@
             return;
         }
+
+        // Eye of Kilrogg, unsummon eye when aura is gone
+        if(GetId() == 126 && caster->GetTypeId() == TYPEID_PLAYER && caster->GetCharm())
+        {
+            ((TemporarySummon*)caster->GetCharm())->UnSummon();
+            return;
+        }
     }
 
Index: /trunk/src/game/QuestHandler.cpp
===================================================================
--- /trunk/src/game/QuestHandler.cpp (revision 207)
+++ /trunk/src/game/QuestHandler.cpp (revision 283)
@@ -32,4 +32,6 @@
 #include "ScriptCalls.h"
 #include "Group.h"
+#include "BattleGround.h"
+#include "BattleGroundAV.h"
 
 void WorldSession::HandleQuestgiverStatusQueryOpcode( WorldPacket & recv_data )
@@ -402,4 +404,10 @@
     if( pQuest )
     {
+        // TODO: need a virtual function
+        if(GetPlayer()->InBattleGround())
+            if(BattleGround* bg = GetPlayer()->GetBattleGround())
+                if(bg->GetTypeID() == BATTLEGROUND_AV)
+                    ((BattleGroundAV*)bg)->HandleQuestComplete(quest, GetPlayer());
+
         if( _player->GetQuestStatus( quest ) != QUEST_STATUS_COMPLETE )
         {
Index: /trunk/src/game/SharedDefines.h
===================================================================
--- /trunk/src/game/SharedDefines.h (revision 279)
+++ /trunk/src/game/SharedDefines.h (revision 283)
@@ -2070,5 +2070,5 @@
     SUMMON_TYPE_CRITTER3    = 307,
     SUMMON_TYPE_UNKNOWN5    = 409,
-    SUMMON_TYPE_POSESSED3   = 427,
+    SUMMON_TYPE_UNKNOWN2    = 427,
     SUMMON_TYPE_POSESSED2   = 428
 };
Index: /trunk/src/game/Creature.cpp
===================================================================
--- /trunk/src/game/Creature.cpp (revision 279)
+++ /trunk/src/game/Creature.cpp (revision 283)
@@ -148,9 +148,5 @@
     i_AI = NULL;
 
-    if (i_AI_possessed)
-    {
-        delete i_AI_possessed;
-        i_AI_possessed = NULL;
-    }
+    DeletePossessedAI();
 }
 
@@ -567,7 +563,10 @@
 }
 
-void Creature::DisablePossessedAI()
+void Creature::DeletePossessedAI()
 {
     if (!i_AI_possessed) return;
+
+    delete i_AI_possessed;
+    i_AI_possessed = NULL;
 
     // Signal the old AI that it's been re-enabled
@@ -579,4 +578,5 @@
     SetMapId(map->GetId());
     SetInstanceId(map->GetInstanceId());
+    m_DBTableGuid = guidlow;
 
     //oX = x;     oY = y;    dX = x;    dY = y;    m_moveTime = 0;    m_startMove = 0;
@@ -605,5 +605,4 @@
         LoadCreaturesAddon();
     }
-
     return bResult;
 }
Index: /trunk/src/game/LootHandler.cpp
===================================================================
--- /trunk/src/game/LootHandler.cpp (revision 102)
+++ /trunk/src/game/LootHandler.cpp (revision 283)
@@ -70,4 +70,14 @@
 
         loot = &pItem->loot;
+    }
+    else if (IS_CORPSE_GUID(lguid))
+    {
+        Corpse *bones = ObjectAccessor::GetCorpse(*player, lguid);
+        if (!bones)
+        {
+            player->SendLootRelease(lguid);
+            return;
+        }
+        loot = &bones->loot;
     }
     else
Index: /trunk/src/game/Language.h
===================================================================
--- /trunk/src/game/Language.h (revision 230)
+++ /trunk/src/game/Language.h (revision 283)
@@ -645,5 +645,43 @@
     LANG_YOUR_BG_LEVEL_REQ_ERROR        = 715,
     LANG_YOUR_ARENA_TEAM_FULL           = 716,
-    // Room for BG/ARENA                  717-799 not used
+
+    LANG_BG_AV_ALLY                     = 717,
+    LANG_BG_AV_HORDE                    = 718,
+    LANG_BG_AV_TOWER_TAKEN              = 719,
+    LANG_BG_AV_TOWER_ASSAULTED          = 720,
+    LANG_BG_AV_TOWER_DEFENDED           = 721,
+    LANG_BG_AV_GRAVE_TAKEN              = 722,
+    LANG_BG_AV_GRAVE_DEFENDED           = 723,
+    LANG_BG_AV_GRAVE_ASSAULTED          = 724,
+
+    LANG_BG_AV_MINE_TAKEN               = 725,
+    LANG_BG_AV_MINE_NORTH               = 726,
+    LANG_BG_AV_MINE_SOUTH               = 727,
+
+    LANG_BG_AV_NODE_GRAVE_STORM_AID     = 728,
+    LANG_BG_AV_NODE_TOWER_DUN_S         = 729,
+    LANG_BG_AV_NODE_TOWER_DUN_N         = 730,
+    LANG_BG_AV_NODE_GRAVE_STORMPIKE     = 731,
+    LANG_BG_AV_NODE_TOWER_ICEWING       = 732,
+    LANG_BG_AV_NODE_GRAVE_STONE         = 733,
+    LANG_BG_AV_NODE_TOWER_STONE         = 734,
+    LANG_BG_AV_NODE_GRAVE_SNOW          = 735,
+    LANG_BG_AV_NODE_TOWER_ICE           = 736,
+    LANG_BG_AV_NODE_GRAVE_ICE           = 737,
+    LANG_BG_AV_NODE_TOWER_POINT         = 738,
+    LANG_BG_AV_NODE_GRAVE_FROST         = 739,
+    LANG_BG_AV_NODE_TOWER_FROST_E       = 740,
+    LANG_BG_AV_NODE_TOWER_FROST_W       = 741,
+    LANG_BG_AV_NODE_GRAVE_FROST_HUT     = 742,
+
+    LANG_BG_AV_ONEMINTOSTART            = 743,
+    LANG_BG_AV_HALFMINTOSTART           = 744,
+    LANG_BG_AV_STARTED                  = 745,
+    LANG_BG_AV_A_NEAR_LOSE              = 746,
+    LANG_BG_AV_H_NEAR_LOSE              = 747,
+    LANG_BG_AV_H_CAPTAIN_DEAD           = 748,
+    LANG_BG_AV_A_CAPTAIN_DEAD           = 749,
+
+    // Room for BG/ARENA                  750-799 not used
 
     LANG_ARENA_YOUR_TEAM_ONLY           = 730,
Index: /trunk/src/game/Creature.h
===================================================================
--- /trunk/src/game/Creature.h (revision 279)
+++ /trunk/src/game/Creature.h (revision 283)
@@ -461,5 +461,5 @@
         bool AIM_Initialize();
         void InitPossessedAI();
-        void DisablePossessedAI();
+        void DeletePossessedAI();
 
         void AI_SendMoveToPacket(float x, float y, float z, uint32 time, uint32 MovementFlags, uint8 type);
@@ -612,5 +612,4 @@
 
         uint32 GetGlobalCooldown() const { return m_GlobalCooldown; }
-
     protected:
         bool CreateFromProto(uint32 guidlow,uint32 Entry,uint32 team, const CreatureData *data = NULL);
@@ -661,4 +660,5 @@
         float CombatStartY;
         float CombatStartZ;
+
     private:
         GridReference<Creature> m_gridRef;
Index: /trunk/src/game/BattleGroundAV.cpp
===================================================================
--- /trunk/src/game/BattleGroundAV.cpp (revision 102)
+++ /trunk/src/game/BattleGroundAV.cpp (revision 283)
@@ -19,20 +19,278 @@
  */
 
-#include "Object.h"
 #include "Player.h"
 #include "BattleGround.h"
 #include "BattleGroundAV.h"
 #include "Creature.h"
+#include "Chat.h"
+#include "Object.h"
+#include "ObjectMgr.h"
+#include "ObjectAccessor.h"
 #include "MapManager.h"
 #include "Language.h"
+#include "SpellAuras.h"
+#include "Formulas.h"
 
 BattleGroundAV::BattleGroundAV()
 {
 
+    m_BgObjects.resize(BG_AV_OBJECT_MAX);
+    m_BgCreatures.resize(AV_CPLACE_MAX+AV_STATICCPLACE_MAX);
 }
 
 BattleGroundAV::~BattleGroundAV()
 {
-
+}
+
+const uint16 BattleGroundAV::GetBonusHonor(uint8 kills) //TODO: move this function to Battleground.cpp (needs to find a way to get m_MaxLevel)
+{
+    return Trinity::Honor::hk_honor_at_level(m_MaxLevel, kills);
+}
+
+void BattleGroundAV::HandleKillPlayer(Player *player, Player *killer)
+{
+    if(GetStatus() != STATUS_IN_PROGRESS)
+        return;
+
+    BattleGround::HandleKillPlayer(player, killer);
+	UpdateScore(player->GetTeam(),-1);
+}
+
+void BattleGroundAV::HandleKillUnit(Creature *unit, Player *killer)
+{
+    sLog.outDebug("bg_av HandleKillUnit %i",unit->GetEntry());
+    if(GetStatus() != STATUS_IN_PROGRESS)
+        return;
+    uint32 entry = unit->GetEntry();
+    if(entry == BG_AV_CreatureInfo[AV_NPC_A_BOSS][0])
+    {
+        CastSpellOnTeam(23658,HORDE); //this is a spell which finishes a quest where a player has to kill the boss
+        RewardReputationToTeam(729,BG_AV_REP_BOSS,HORDE);
+        RewardHonorToTeam(GetBonusHonor(BG_AV_KILL_BOSS),HORDE);
+        EndBattleGround(HORDE);
+    }
+    else if ( entry == BG_AV_CreatureInfo[AV_NPC_H_BOSS][0] )
+    {
+        CastSpellOnTeam(23658,ALLIANCE); //this is a spell which finishes a quest where a player has to kill the boss
+        RewardReputationToTeam(730,BG_AV_REP_BOSS,ALLIANCE);
+        RewardHonorToTeam(GetBonusHonor(BG_AV_KILL_BOSS),ALLIANCE);
+        EndBattleGround(ALLIANCE);
+    }
+    else if(entry == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN][0])
+    {
+        if(!m_CaptainAlive[0])
+        {
+            sLog.outError("Killed a Captain twice, please report this bug, if you haven't done \".respawn\"");
+            return;
+        }
+        m_CaptainAlive[0]=false;
+        RewardReputationToTeam(729,BG_AV_REP_CAPTAIN,HORDE);
+        RewardHonorToTeam(GetBonusHonor(BG_AV_KILL_CAPTAIN),HORDE);
+        UpdateScore(ALLIANCE,(-1)*BG_AV_RES_CAPTAIN);
+        //spawn destroyed aura
+        for(uint8 i=0; i<=9; i++)
+            SpawnBGObject(BG_AV_OBJECT_BURN_BUILDING_ALLIANCE+i,RESPAWN_IMMEDIATELY);
+        Creature* creature = GetBGCreature(AV_CPLACE_HERALD);
+        if(creature)
+            YellToAll(creature,GetTrinityString(LANG_BG_AV_A_CAPTAIN_DEAD),LANG_UNIVERSAL);
+
+    }
+    else if ( entry == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN][0] )
+    {
+        if(!m_CaptainAlive[1])
+        {
+            sLog.outError("Killed a Captain twice, please report this bug, if you haven't done \".respawn\"");
+            return;
+        }
+        m_CaptainAlive[1]=false;
+        RewardReputationToTeam(730,BG_AV_REP_CAPTAIN,ALLIANCE);
+        RewardHonorToTeam(GetBonusHonor(BG_AV_KILL_CAPTAIN),ALLIANCE);
+        UpdateScore(HORDE,(-1)*BG_AV_RES_CAPTAIN);
+        //spawn destroyed aura
+        for(uint8 i=0; i<=9; i++)
+            SpawnBGObject(BG_AV_OBJECT_BURN_BUILDING_HORDE+i,RESPAWN_IMMEDIATELY);
+        Creature* creature = GetBGCreature(AV_CPLACE_HERALD);
+        if(creature)
+            YellToAll(creature,GetTrinityString(LANG_BG_AV_H_CAPTAIN_DEAD),LANG_UNIVERSAL);
+    }
+    else if ( entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_N_4][0] || entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_A_4][0] || entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_H_4][0])
+        ChangeMineOwner(AV_NORTH_MINE,killer->GetTeam());
+    else if ( entry == BG_AV_CreatureInfo[AV_NPC_S_MINE_N_4][0] || entry == BG_AV_CreatureInfo[AV_NPC_S_MINE_A_4][0] || entry == BG_AV_CreatureInfo[AV_NPC_S_MINE_H_4][0])
+        ChangeMineOwner(AV_SOUTH_MINE,killer->GetTeam());
+}
+
+void BattleGroundAV::HandleQuestComplete(uint32 questid, Player *player)
+{
+    if (GetStatus() != STATUS_IN_PROGRESS)
+        return;//maybe we should log this, cause this must be a cheater or a big bug
+    uint8 team = GetTeamIndexByTeamId(player->GetTeam());
+    //TODO add reputation, events (including quest not available anymore, next quest availabe, go/npc de/spawning)and maybe honor
+    sLog.outError("BG_AV Quest %i completed",questid);
+    switch(questid)
+    {
+        case AV_QUEST_A_SCRAPS1:
+        case AV_QUEST_A_SCRAPS2:
+        case AV_QUEST_H_SCRAPS1:
+        case AV_QUEST_H_SCRAPS2:
+            m_Team_QuestStatus[team][0]+=20;
+            if(m_Team_QuestStatus[team][0] == 500 || m_Team_QuestStatus[team][0] == 1000 || m_Team_QuestStatus[team][0] == 1500) //25,50,75 turn ins
+            {
+                sLog.outDebug("BG_AV Quest %i completed starting with unit upgrading..",questid);
+                for (BG_AV_Nodes i = BG_AV_NODES_FIRSTAID_STATION; i <= BG_AV_NODES_FROSTWOLF_HUT; ++i)
+                    if (m_Nodes[i].Owner == player->GetTeam() && m_Nodes[i].State == POINT_CONTROLED)
+                    {
+                        DePopulateNode(i);
+                        PopulateNode(i);
+                            //maybe this is bad, because it will instantly respawn all creatures on every grave..
+                     }
+            }
+            break;
+        case AV_QUEST_A_COMMANDER1:
+        case AV_QUEST_H_COMMANDER1:
+            m_Team_QuestStatus[team][1]++;
+            RewardReputationToTeam(team,1,player->GetTeam());
+            if(m_Team_QuestStatus[team][1] == 30)
+                sLog.outDebug("BG_AV Quest %i completed (need to implement some events here",questid);
+            break;
+        case AV_QUEST_A_COMMANDER2:
+        case AV_QUEST_H_COMMANDER2:
+            m_Team_QuestStatus[team][2]++;
+            RewardReputationToTeam(team,1,player->GetTeam());
+            if(m_Team_QuestStatus[team][2] == 60)
+                sLog.outDebug("BG_AV Quest %i completed (need to implement some events here",questid);
+            break;
+        case AV_QUEST_A_COMMANDER3:
+        case AV_QUEST_H_COMMANDER3:
+            m_Team_QuestStatus[team][3]++;
+            RewardReputationToTeam(team,1,player->GetTeam());
+            if(m_Team_QuestStatus[team][1] == 120)
+                sLog.outDebug("BG_AV Quest %i completed (need to implement some events here",questid);
+            break;
+        case AV_QUEST_A_BOSS1:
+        case AV_QUEST_H_BOSS1:
+            m_Team_QuestStatus[team][4] += 9; //you can turn in 10 or 1 item..
+        case AV_QUEST_A_BOSS2:
+        case AV_QUEST_H_BOSS2:
+            m_Team_QuestStatus[team][4]++;
+            if(m_Team_QuestStatus[team][4] >= 200)
+                sLog.outDebug("BG_AV Quest %i completed (need to implement some events here",questid);
+            break;
+        case AV_QUEST_A_NEAR_MINE:
+        case AV_QUEST_H_NEAR_MINE:
+            m_Team_QuestStatus[team][5]++;
+            if(m_Team_QuestStatus[team][5] == 28)
+            {
+                sLog.outDebug("BG_AV Quest %i completed (need to implement some events here",questid);
+                if(m_Team_QuestStatus[team][6] == 7)
+                    sLog.outDebug("BG_AV Quest %i completed (need to implement some events here - ground assault ready",questid);
+            }
+            break;
+        case AV_QUEST_A_OTHER_MINE:
+        case AV_QUEST_H_OTHER_MINE:
+            m_Team_QuestStatus[team][6]++;
+            if(m_Team_QuestStatus[team][6] == 7)
+            {
+                sLog.outDebug("BG_AV Quest %i completed (need to implement some events here",questid);
+                if(m_Team_QuestStatus[team][5] == 20)
+                    sLog.outDebug("BG_AV Quest %i completed (need to implement some events here - ground assault ready",questid);
+            }
+            break;
+        case AV_QUEST_A_RIDER_HIDE:
+        case AV_QUEST_H_RIDER_HIDE:
+            m_Team_QuestStatus[team][7]++;
+            if(m_Team_QuestStatus[team][7] == 25)
+            {
+                sLog.outDebug("BG_AV Quest %i completed (need to implement some events here",questid);
+                if(m_Team_QuestStatus[team][8] == 25)
+                    sLog.outDebug("BG_AV Quest %i completed (need to implement some events here - rider assault ready",questid);
+            }
+            break;
+        case AV_QUEST_A_RIDER_TAME:
+        case AV_QUEST_H_RIDER_TAME:
+            m_Team_QuestStatus[team][8]++;
+            if(m_Team_QuestStatus[team][8] == 25)
+            {
+                sLog.outDebug("BG_AV Quest %i completed (need to implement some events here",questid);
+                if(m_Team_QuestStatus[team][7] == 25)
+                    sLog.outDebug("BG_AV Quest %i completed (need to implement some events here - rider assault ready",questid);
+            }
+            break;
+        default:
+            sLog.outDebug("BG_AV Quest %i completed but is not interesting at all",questid);
+            return; //was no interesting quest at all
+            break;
+    }
+}
+
+
+void BattleGroundAV::UpdateScore(uint16 team, int16 points )
+{ //note: to remove reinforcementpoints points must be negative, for adding reinforcements points must be positive
+    assert( team == ALLIANCE || team == HORDE);
+    uint8 teamindex = GetTeamIndexByTeamId(team); //0=ally 1=horde
+    m_Team_Scores[teamindex] += points;
+
+    UpdateWorldState(((teamindex==BG_TEAM_HORDE)?AV_Horde_Score:AV_Alliance_Score), m_Team_Scores[teamindex]);
+    if( points < 0)
+    {
+        if( m_Team_Scores[teamindex] < 1)
+        {
+            m_Team_Scores[teamindex]=0;
+            EndBattleGround(((teamindex==BG_TEAM_HORDE)?ALLIANCE:HORDE));
+        }
+        else if(!m_IsInformedNearVictory[teamindex] && m_Team_Scores[teamindex] < SEND_MSG_NEAR_LOSE)
+        {
+            SendMessageToAll(GetTrinityString((teamindex==BG_TEAM_HORDE)?LANG_BG_AV_H_NEAR_LOSE:LANG_BG_AV_A_NEAR_LOSE));
+            PlaySoundToAll(AV_SOUND_NEAR_VICTORY);
+            m_IsInformedNearVictory[teamindex] = true;
+        }
+    }
+}
+
+Creature* BattleGroundAV::AddAVCreature(uint16 cinfoid, uint16 type )
+{
+    uint32 level;
+    bool isStatic=false;
+    Creature* creature = NULL;
+    assert(type <= AV_CPLACE_MAX + AV_STATICCPLACE_MAX);
+    if(type>=AV_CPLACE_MAX) //static
+    {
+        type-=AV_CPLACE_MAX;
+        cinfoid=int(BG_AV_StaticCreaturePos[type][4]);
+        creature = AddCreature(BG_AV_StaticCreatureInfo[cinfoid][0],(type+AV_CPLACE_MAX),BG_AV_StaticCreatureInfo[cinfoid][1],BG_AV_StaticCreaturePos[type][0],BG_AV_StaticCreaturePos[type][1],BG_AV_StaticCreaturePos[type][2],BG_AV_StaticCreaturePos[type][3]);
+        level = ( BG_AV_StaticCreatureInfo[cinfoid][2] == BG_AV_StaticCreatureInfo[cinfoid][3] ) ? BG_AV_StaticCreatureInfo[cinfoid][2] : urand(BG_AV_StaticCreatureInfo[cinfoid][2],BG_AV_StaticCreatureInfo[cinfoid][3]);
+        isStatic=true;
+    }
+    else
+    {
+        creature = AddCreature(BG_AV_CreatureInfo[cinfoid][0],type,BG_AV_CreatureInfo[cinfoid][1],BG_AV_CreaturePos[type][0],BG_AV_CreaturePos[type][1],BG_AV_CreaturePos[type][2],BG_AV_CreaturePos[type][3]);
+        level = ( BG_AV_CreatureInfo[cinfoid][2] == BG_AV_CreatureInfo[cinfoid][3] ) ? BG_AV_CreatureInfo[cinfoid][2] : urand(BG_AV_CreatureInfo[cinfoid][2],BG_AV_CreatureInfo[cinfoid][3]);
+    }
+    if(!creature)
+        return NULL;
+    if(creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN][0] || creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN][0])
+        creature->SetRespawnDelay(RESPAWN_ONE_DAY); // TODO: look if this can be done by database + also add this for the wingcommanders
+
+    if((isStatic && cinfoid>=10 && cinfoid<=14) || (!isStatic && ((cinfoid >= AV_NPC_A_GRAVEDEFENSE0 && cinfoid<=AV_NPC_A_GRAVEDEFENSE3) ||
+        (cinfoid>=AV_NPC_H_GRAVEDEFENSE0 && cinfoid<=AV_NPC_H_GRAVEDEFENSE3))))
+    {
+        if(!isStatic && ((cinfoid>=AV_NPC_A_GRAVEDEFENSE0 && cinfoid<=AV_NPC_A_GRAVEDEFENSE3)
+            || (cinfoid>=AV_NPC_H_GRAVEDEFENSE0 && cinfoid<=AV_NPC_H_GRAVEDEFENSE3)))
+        {
+            CreatureData &data = objmgr.NewOrExistCreatureData(creature->GetDBTableGUIDLow());
+            data.spawndist      = 5;
+        }
+        //else spawndist will be 15, so creatures move maximum=10
+        creature->SetDefaultMovementType(RANDOM_MOTION_TYPE);
+        creature->GetMotionMaster()->Initialize();
+        creature->setDeathState(JUST_DIED);
+        creature->Respawn();
+        //TODO: find a way to add a motionmaster without killing the creature (i
+        //just copied this code from a gm-command
+    }
+
+    if(level != 0)
+        level += m_MaxLevel-60; //maybe we can do this more generic for custom level-range.. actually it's blizzlike
+    creature->SetLevel(level);
+    return creature;
 }
 
@@ -40,4 +298,172 @@
 {
     BattleGround::Update(diff);
+    if (GetStatus() == STATUS_WAIT_JOIN && GetPlayersSize())
+    {
+        ModifyStartDelayTime(diff);
+
+        if (!(m_Events & 0x01))
+        {
+            m_Events |= 0x01;
+
+#ifdef ARENA_PATCH
+            if(!SetupBattleGround())
+            {
+                EndNow();
+                return;
+            }
+#endif
+
+            uint16 i;
+            sLog.outDebug("Alterac Valley: entering state STATUS_WAIT_JOIN ...");
+            // Initial Nodes
+            for(i = 0; i < BG_AV_OBJECT_MAX; i++)
+                SpawnBGObject(i, RESPAWN_ONE_DAY);
+            for(i = BG_AV_OBJECT_FLAG_A_FIRSTAID_STATION; i <= BG_AV_OBJECT_FLAG_A_STONEHEART_GRAVE ; i++){
+                SpawnBGObject(BG_AV_OBJECT_AURA_A_FIRSTAID_STATION+3*i,RESPAWN_IMMEDIATELY);
+                SpawnBGObject(i, RESPAWN_IMMEDIATELY);
+            }
+            for(i = BG_AV_OBJECT_FLAG_A_DUNBALDAR_SOUTH; i <= BG_AV_OBJECT_FLAG_A_STONEHEART_BUNKER ; i++)
+                SpawnBGObject(i, RESPAWN_IMMEDIATELY);
+            for(i = BG_AV_OBJECT_FLAG_H_ICEBLOOD_GRAVE; i <= BG_AV_OBJECT_FLAG_H_FROSTWOLF_WTOWER ; i++){
+                SpawnBGObject(i, RESPAWN_IMMEDIATELY);
+                if(i<=BG_AV_OBJECT_FLAG_H_FROSTWOLF_HUT)
+                    SpawnBGObject(BG_AV_OBJECT_AURA_H_FIRSTAID_STATION+3*GetNodeThroughObject(i),RESPAWN_IMMEDIATELY);
+            }
+            for(i = BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH; i <= BG_AV_OBJECT_TFLAG_A_STONEHEART_BUNKER; i+=2)
+            {
+                SpawnBGObject(i, RESPAWN_IMMEDIATELY); //flag
+                SpawnBGObject(i+16, RESPAWN_IMMEDIATELY); //aura
+            }
+            for(i = BG_AV_OBJECT_TFLAG_H_ICEBLOOD_TOWER; i <= BG_AV_OBJECT_TFLAG_H_FROSTWOLF_WTOWER; i+=2)
+            {
+                SpawnBGObject(i, RESPAWN_IMMEDIATELY); //flag
+                SpawnBGObject(i+16, RESPAWN_IMMEDIATELY); //aura
+            }
+            //snowfall and the doors
+            for(i = BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE; i <= BG_AV_OBJECT_DOOR_A; i++)
+                SpawnBGObject(i, RESPAWN_IMMEDIATELY);
+            SpawnBGObject(BG_AV_OBJECT_AURA_N_SNOWFALL_GRAVE,RESPAWN_IMMEDIATELY);
+
+            //creatures
+            sLog.outDebug("BG_AV start poputlating nodes");
+			for(BG_AV_Nodes i= BG_AV_NODES_FIRSTAID_STATION; i < BG_AV_NODES_MAX; ++i )
+            {
+                if(m_Nodes[i].Owner)
+				PopulateNode(i);
+            }
+            //all creatures which don't get despawned through the script are static
+            sLog.outDebug("BG_AV: start spawning static creatures");
+            for(i=0; i < AV_STATICCPLACE_MAX; i++ )
+                AddAVCreature(0,i+AV_CPLACE_MAX);
+		//mainspiritguides:
+            sLog.outDebug("BG_AV: start spawning spiritguides creatures");
+	        AddSpiritGuide(7, BG_AV_CreaturePos[7][0], BG_AV_CreaturePos[7][1], BG_AV_CreaturePos[7][2], BG_AV_CreaturePos[7][3], ALLIANCE);
+    		AddSpiritGuide(8, BG_AV_CreaturePos[8][0], BG_AV_CreaturePos[8][1], BG_AV_CreaturePos[8][2], BG_AV_CreaturePos[8][3], HORDE);
+            //spawn the marshals (those who get deleted, if a tower gets destroyed)
+            sLog.outDebug("BG_AV: start spawning marshal creatures");
+            for(i=AV_NPC_A_MARSHAL_SOUTH; i<= AV_NPC_H_MARSHAL_WTOWER; i++)
+                AddAVCreature(i,AV_CPLACE_A_MARSHAL_SOUTH+(i-AV_NPC_A_MARSHAL_SOUTH));
+
+            AddAVCreature(AV_NPC_HERALD,AV_CPLACE_HERALD);
+            DoorClose(BG_AV_OBJECT_DOOR_A);
+            DoorClose(BG_AV_OBJECT_DOOR_H);
+
+            SetStartDelayTime(START_DELAY0);
+        }
+        // After 1 minute, warning is signalled
+        else if (GetStartDelayTime() <= START_DELAY1 && !(m_Events & 0x04))
+        {
+            m_Events |= 0x04;
+            SendMessageToAll(GetTrinityString(LANG_BG_AV_ONEMINTOSTART));
+        }
+        // After 1,5 minute, warning is signalled
+        else if (GetStartDelayTime() <= START_DELAY2 && !(m_Events & 0x08))
+        {
+            m_Events |= 0x08;
+            SendMessageToAll(GetTrinityString(LANG_BG_AV_HALFMINTOSTART));
+        }
+        // After 2 minutes, gates OPEN ! x)
+        else if (GetStartDelayTime() <= 0 && !(m_Events & 0x10))
+        {
+            UpdateWorldState(AV_SHOW_H_SCORE, 1);
+            UpdateWorldState(AV_SHOW_A_SCORE, 1);
+            m_Events |= 0x10;
+
+            SendMessageToAll(GetTrinityString(LANG_BG_AV_STARTED));
+            PlaySoundToAll(SOUND_BG_START);
+            SetStatus(STATUS_IN_PROGRESS);
+
+            sLog.outDebug("BG_AV: start spawning mine stuff");
+            for(uint16 i= BG_AV_OBJECT_MINE_SUPPLY_N_MIN; i<=BG_AV_OBJECT_MINE_SUPPLY_N_MAX;i++)
+                SpawnBGObject(i,RESPAWN_IMMEDIATELY);
+            for(uint16 i= BG_AV_OBJECT_MINE_SUPPLY_S_MIN; i<=BG_AV_OBJECT_MINE_SUPPLY_S_MAX;i++)
+                SpawnBGObject(i,RESPAWN_IMMEDIATELY);
+            for(uint8 mine = AV_NORTH_MINE; mine <= AV_SOUTH_MINE; mine++) //mine population
+                ChangeMineOwner(mine, AV_NEUTRAL_TEAM,true);
+            DoorOpen(BG_AV_OBJECT_DOOR_H);
+            DoorOpen(BG_AV_OBJECT_DOOR_A);
+
+
+            for(BattleGroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)
+                if(Player* plr = objmgr.GetPlayer(itr->first))
+                    plr->RemoveAurasDueToSpell(SPELL_PREPARATION);
+        }
+    }
+    else if(GetStatus() == STATUS_IN_PROGRESS)
+    {
+        for(uint8 i=0; i<=1;i++)//0=alliance, 1=horde
+        {
+            if(!m_CaptainAlive[i])
+                continue;
+            if(m_CaptainBuffTimer[i] > diff)
+                m_CaptainBuffTimer[i] -= diff;
+            else
+            {
+                if(i==0)
+                {
+                    CastSpellOnTeam(AV_BUFF_A_CAPTAIN,ALLIANCE);
+                    Creature* creature = GetBGCreature(AV_CPLACE_MAX + 61);
+                    if(creature)
+                        YellToAll(creature,LANG_BG_AV_A_CAPTAIN_BUFF,LANG_COMMON);
+                }
+                else
+                {
+                    CastSpellOnTeam(AV_BUFF_H_CAPTAIN,HORDE);
+                    Creature* creature = GetBGCreature(AV_CPLACE_MAX + 59); //TODO: make the captains a dynamic creature
+                    if(creature)
+                        YellToAll(creature,LANG_BG_AV_H_CAPTAIN_BUFF,LANG_ORCISH);
+                }
+                m_CaptainBuffTimer[i] = 120000 + urand(0,4)* 60000; //as far as i could see, the buff is randomly so i make 2minutes (thats the duration of the buff itself) + 0-4minutes TODO get the right times
+            }
+        }
+        //add points from mine owning, and look if he neutral team wanrts to reclaim the mine
+        m_Mine_Timer -=diff;
+        for(uint8 mine=0; mine <2; mine++)
+        {
+            if(m_Mine_Owner[mine] == ALLIANCE || m_Mine_Owner[mine] == HORDE)
+            {
+                if( m_Mine_Timer <= 0)
+                    UpdateScore(m_Mine_Owner[mine],1);
+
+                if(m_Mine_Reclaim_Timer[mine] > diff)
+                    m_Mine_Reclaim_Timer[mine] -= diff;
+                else{ //we don't need to set this timer to 0 cause this codepart wont get called when this thing is 0
+                    ChangeMineOwner(mine,AV_NEUTRAL_TEAM);
+                }
+            }
+        }
+        if( m_Mine_Timer <= 0)
+            m_Mine_Timer=AV_MINE_TICK_TIMER; //this is at the end, cause we need to update both mines
+
+        //looks for all timers of the nodes and destroy the building (for graveyards the building wont get destroyed, it goes just to the other team
+        for(BG_AV_Nodes i = BG_AV_NODES_FIRSTAID_STATION; i < BG_AV_NODES_MAX; ++i)
+            if(m_Nodes[i].State == POINT_ASSAULTED) //maybe remove this
+            {
+                if(m_Nodes[i].Timer > diff)
+                    m_Nodes[i].Timer -= diff;
+                else
+                     EventPlayerDestroyedPoint( i);
+            }
+    }
 }
 
@@ -47,12 +473,63 @@
     //create score and add it to map, default values are set in constructor
     BattleGroundAVScore* sc = new BattleGroundAVScore;
-
     m_PlayerScores[plr->GetGUID()] = sc;
-}
-
-void BattleGroundAV::RemovePlayer(Player* /*plr*/,uint64 /*guid*/)
-{
-
-}
+    if(m_MaxLevel==0)
+        m_MaxLevel=(plr->getLevel()%10 == 0)? plr->getLevel() : (plr->getLevel()-(plr->getLevel()%10))+10; //TODO: just look at the code \^_^/ --but queue-info should provide this information..
+
+}
+
+void BattleGroundAV::EndBattleGround(uint32 winner)
+{
+    //calculate bonuskills for both teams:
+    //first towers:
+    uint8 kills[2]={0,0}; //0=ally 1=horde
+    uint8 rep[2]={0,0}; //0=ally 1=horde
+    for(BG_AV_Nodes i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_FROSTWOLF_WTOWER; ++i)
+    {
+            if(m_Nodes[i].State == POINT_CONTROLED)
+            {
+                if(m_Nodes[i].Owner == ALLIANCE)
+                {
+                    rep[0]   += BG_AV_REP_SURVIVING_TOWER;
+                    kills[0] += BG_AV_KILL_SURVIVING_TOWER;
+                }
+                else
+                {
+                    rep[0]   += BG_AV_KILL_SURVIVING_TOWER;
+                    kills[1] += BG_AV_KILL_SURVIVING_TOWER;
+                }
+            }
+    }
+
+    for(int i=0; i<=1; i++) //0=ally 1=horde
+    {
+        if(m_CaptainAlive[i])
+        {
+            kills[i] += BG_AV_KILL_SURVIVING_CAPTAIN;
+            rep[i]   += BG_AV_REP_SURVIVING_CAPTAIN;
+        }
+        if(rep[i] != 0)
+            RewardReputationToTeam((i == 0)?730:729,rep[i],(i == 0)?ALLIANCE:HORDE);
+        if(kills[i] != 0)
+            RewardHonorToTeam(GetBonusHonor(kills[i]),(i == 0)?ALLIANCE:HORDE);
+    }
+
+    //TODO add enterevademode for all attacking creatures
+    BattleGround::EndBattleGround(winner);
+}
+
+void BattleGroundAV::RemovePlayer(Player* plr,uint64 /*guid*/)
+{
+   if(!plr)
+    {
+        sLog.outError("bg_AV no player at remove");
+        return;
+    }
+    //TODO search more buffs
+    plr->RemoveAurasDueToSpell(AV_BUFF_ARMOR);
+    plr->RemoveAurasDueToSpell(AV_BUFF_A_CAPTAIN);
+    plr->RemoveAurasDueToSpell(AV_BUFF_H_CAPTAIN);
+}
+
 
 void BattleGroundAV::HandleAreaTrigger(Player *Source, uint32 Trigger)
@@ -66,6 +543,16 @@
     {
         case 95:
+        case 2608:
+			if(Source->GetTeam() != ALLIANCE)
+                Source->GetSession()->SendAreaTriggerMessage("Only The Alliance can use that portal");
+            else
+                Source->LeaveBattleground();
+            break;
         case 2606:
-        case 2608:
+            if(Source->GetTeam() != HORDE)
+                Source->GetSession()->SendAreaTriggerMessage("Only The Horde can use that portal");
+            else
+                Source->LeaveBattleground();
+            break;
         case 3326:
         case 3327:
@@ -74,8 +561,9 @@
         case 3330:
         case 3331:
+			//Source->Unmount();
             break;
         default:
-            sLog.outError("WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger);
-            Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger);
+            sLog.outDebug("WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger);
+//            Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger);
             break;
     }
@@ -121,2 +609,841 @@
     }
 }
+
+
+
+void BattleGroundAV::EventPlayerDestroyedPoint(BG_AV_Nodes node)
+{
+
+    uint32 object = GetObjectThroughNode(node);
+    sLog.outDebug("bg_av: player destroyed point node %i object %i",node,object);
+
+    //despawn banner
+    SpawnBGObject(object, RESPAWN_ONE_DAY);
+    DestroyNode(node);
+    UpdateNodeWorldState(node);
+
+    uint32 owner = m_Nodes[node].Owner;
+    if( IsTower(node) )
+    {
+        uint8 tmp = node-BG_AV_NODES_DUNBALDAR_SOUTH;
+        //despawn marshal
+        if(m_BgCreatures[AV_CPLACE_A_MARSHAL_SOUTH + tmp])
+            DelCreature(AV_CPLACE_A_MARSHAL_SOUTH + tmp);
+        else
+            sLog.outError("BG_AV: playerdestroyedpoint: marshal %i doesn't exist",AV_CPLACE_A_MARSHAL_SOUTH + tmp);
+        //spawn destroyed aura
+        for(uint8 i=0; i<=9; i++)
+            SpawnBGObject(BG_AV_OBJECT_BURN_DUNBALDAR_SOUTH + i + (tmp * 10),RESPAWN_IMMEDIATELY);
+
+        UpdateScore((owner == ALLIANCE) ? HORDE : ALLIANCE, (-1)*BG_AV_RES_TOWER);
+        RewardReputationToTeam((owner == ALLIANCE)?730:729,BG_AV_REP_TOWER,owner);
+        RewardHonorToTeam(GetBonusHonor(BG_AV_KILL_TOWER),owner);
+
+        SpawnBGObject(BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH+GetTeamIndexByTeamId(owner)+(2*tmp),RESPAWN_ONE_DAY);
+        SpawnBGObject(BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH+GetTeamIndexByTeamId(owner)+(2*tmp),RESPAWN_ONE_DAY);
+    }
+    else
+    {
+        if( owner == ALLIANCE )
+            SpawnBGObject(object-11, RESPAWN_IMMEDIATELY);
+        else
+            SpawnBGObject(object+11, RESPAWN_IMMEDIATELY);
+        SpawnBGObject(BG_AV_OBJECT_AURA_N_FIRSTAID_STATION+3*node,RESPAWN_ONE_DAY);
+        SpawnBGObject(BG_AV_OBJECT_AURA_A_FIRSTAID_STATION+GetTeamIndexByTeamId(owner)+3*node,RESPAWN_IMMEDIATELY);
+        PopulateNode(node);
+        if(node == BG_AV_NODES_SNOWFALL_GRAVE) //snowfall eyecandy
+        {
+            for(uint8 i = 0; i < 4; i++)
+            {
+                SpawnBGObject(((owner==ALLIANCE)?BG_AV_OBJECT_SNOW_EYECANDY_PA : BG_AV_OBJECT_SNOW_EYECANDY_PH)+i,RESPAWN_ONE_DAY);
+                SpawnBGObject(((owner==ALLIANCE)?BG_AV_OBJECT_SNOW_EYECANDY_A  : BG_AV_OBJECT_SNOW_EYECANDY_H )+i,RESPAWN_IMMEDIATELY);
+            }
+        }
+    }
+    //send a nice message to all :)
+    char buf[256];
+    if(IsTower(node))
+        sprintf(buf, GetTrinityString(LANG_BG_AV_TOWER_TAKEN) , GetNodeName(node),( owner == ALLIANCE ) ? GetTrinityString(LANG_BG_AV_ALLY) : GetTrinityString(LANG_BG_AV_HORDE)  );
+    else
+        sprintf(buf, GetTrinityString(LANG_BG_AV_GRAVE_TAKEN) , GetNodeName(node),( owner == ALLIANCE ) ? GetTrinityString(LANG_BG_AV_ALLY) :GetTrinityString(LANG_BG_AV_HORDE)  );
+
+    Creature* creature = GetBGCreature(AV_CPLACE_HERALD);
+    if(creature)
+        YellToAll(creature,buf,LANG_UNIVERSAL);
+}
+
+void BattleGroundAV::ChangeMineOwner(uint8 mine, uint32 team, bool initial)
+{ //mine=0 northmine mine=1 southmin
+//changing the owner results in setting respawntim to infinite for current creatures, spawning new mine owners creatures and changing the chest-objects so that the current owning team can use them
+    assert(mine == AV_NORTH_MINE || mine == AV_SOUTH_MINE);
+    if(team != ALLIANCE && team != HORDE)
+        team = AV_NEUTRAL_TEAM;
+    else
+        PlaySoundToAll((team==ALLIANCE)?AV_SOUND_ALLIANCE_GOOD:AV_SOUND_HORDE_GOOD);
+
+    if(m_Mine_Owner[mine] == team && !initial)
+        return;
+    m_Mine_PrevOwner[mine] = m_Mine_Owner[mine];
+    m_Mine_Owner[mine] = team;
+
+    if(!initial)
+    {
+        sLog.outDebug("bg_av depopulating mine %i (0=north,1=south)",mine);
+        if(mine==AV_SOUTH_MINE)
+            for(uint16 i=AV_CPLACE_MINE_S_S_MIN; i <= AV_CPLACE_MINE_S_S_MAX; i++)
+                if( m_BgCreatures[i] )
+                    DelCreature(i); //TODO just set the respawntime to 999999
+        for(uint16 i=((mine==AV_NORTH_MINE)?AV_CPLACE_MINE_N_1_MIN:AV_CPLACE_MINE_S_1_MIN); i <= ((mine==AV_NORTH_MINE)?AV_CPLACE_MINE_N_3:AV_CPLACE_MINE_S_3); i++)
+            if( m_BgCreatures[i] )
+                DelCreature(i); //TODO here also
+    }
+    SendMineWorldStates(mine);
+
+    sLog.outDebug("bg_av populating mine %i (0=north,1=south)",mine);
+    uint16 miner;
+    //also neutral team exists.. after a big time, the neutral team tries to conquer the mine
+    if(mine==AV_NORTH_MINE)
+    {
+        if(team == ALLIANCE)
+            miner = AV_NPC_N_MINE_A_1;
+        else if (team == HORDE)
+            miner = AV_NPC_N_MINE_H_1;
+        else
+            miner = AV_NPC_N_MINE_N_1;
+    }
+    else
+    {
+        uint16 cinfo;
+        if(team == ALLIANCE)
+            miner = AV_NPC_S_MINE_A_1;
+        else if (team == HORDE)
+            miner = AV_NPC_S_MINE_H_1;
+        else
+            miner = AV_NPC_S_MINE_N_1;
+       //vermin
+        sLog.outDebug("spawning vermin");
+        if(team == ALLIANCE)
+            cinfo = AV_NPC_S_MINE_A_3;
+        else if (team == HORDE)
+            cinfo = AV_NPC_S_MINE_H_3;
+        else
+            cinfo = AV_NPC_S_MINE_N_S;
+        for(uint16 i=AV_CPLACE_MINE_S_S_MIN; i <= AV_CPLACE_MINE_S_S_MAX; i++)
+            AddAVCreature(cinfo,i);
+    }
+    for(uint16 i=( (mine==AV_NORTH_MINE)?AV_CPLACE_MINE_N_1_MIN:AV_CPLACE_MINE_S_1_MIN ); i <= ((mine==AV_NORTH_MINE)?AV_CPLACE_MINE_N_1_MAX:AV_CPLACE_MINE_S_1_MAX); i++)
+        AddAVCreature(miner,i);
+    //the next chooses randomly between 2 cretures
+    for(uint16 i=((mine==AV_NORTH_MINE)?AV_CPLACE_MINE_N_2_MIN:AV_CPLACE_MINE_S_2_MIN); i <= ((mine==AV_NORTH_MINE)?AV_CPLACE_MINE_N_2_MAX:AV_CPLACE_MINE_S_2_MAX); i++)
+        AddAVCreature(miner+(urand(1,2)),i);
+    AddAVCreature(miner+3,(mine==AV_NORTH_MINE)?AV_CPLACE_MINE_N_3:AV_CPLACE_MINE_S_3);
+    //because the gameobjects in this mine have changed, update all surrounding players:
+//    for(uint16 i = ((mine==AV_NORTH_MINE)?BG_AV_OBJECT_MINE_SUPPLY_N_MIN:BG_AV_OBJECT_MINE_SUPPLY_N_MIN); i <= ((mine==AV_NORTH_MINE)?BG_AV_OBJECT_MINE_SUPPLY_N_MAX:BG_AV_OBJECT_MINE_SUPPLY_N_MAX); i++)
+//    {
+        //TODO: add gameobject-update code
+//    }
+    if(team == ALLIANCE || team == HORDE)
+    {
+        m_Mine_Reclaim_Timer[mine]=AV_MINE_RECLAIM_TIMER;
+	char buf[256];
+	    sprintf(buf, GetTrinityString(LANG_BG_AV_MINE_TAKEN), GetTrinityString(( mine == AV_NORTH_MINE ) ? LANG_BG_AV_MINE_NORTH : LANG_BG_AV_MINE_SOUTH), ( team == ALLIANCE ) ?  GetTrinityString(LANG_BG_AV_ALLY) : GetTrinityString(LANG_BG_AV_HORDE));
+        Creature* creature = GetBGCreature(AV_CPLACE_HERALD);
+        if(creature)
+            YellToAll(creature,buf,LANG_UNIVERSAL);
+    }
+    else
+    {
+        if(mine==AV_SOUTH_MINE) //i think this gets called all the time
+        {
+            Creature* creature = GetBGCreature(AV_CPLACE_MINE_S_3);
+            YellToAll(creature,LANG_BG_AV_S_MINE_BOSS_CLAIMS,LANG_UNIVERSAL);
+        }
+    }
+    return;
+}
+
+bool BattleGroundAV::PlayerCanDoMineQuest(int32 GOId,uint32 team)
+{
+    if(GOId == BG_AV_OBJECTID_MINE_N)
+         return (m_Mine_Owner[AV_NORTH_MINE]==team);
+    if(GOId == BG_AV_OBJECTID_MINE_S)
+         return (m_Mine_Owner[AV_SOUTH_MINE]==team);
+    return true; //cause it's no mine'object it is ok if this is true
+}
+
+void BattleGroundAV::PopulateNode(BG_AV_Nodes node)
+{
+    uint32 owner = m_Nodes[node].Owner;
+	assert(owner);
+
+    uint32 c_place = AV_CPLACE_DEFENSE_STORM_AID + ( 4 * node );
+    uint32 creatureid;
+    if(IsTower(node))
+        creatureid=(owner==ALLIANCE)?AV_NPC_A_TOWERDEFENSE:AV_NPC_H_TOWERDEFENSE;
+    else
+    {
+        uint8 team2 = GetTeamIndexByTeamId(owner);
+	if (m_Team_QuestStatus[team2][0] < 500 )
+            creatureid = ( owner == ALLIANCE )? AV_NPC_A_GRAVEDEFENSE0 : AV_NPC_H_GRAVEDEFENSE0;
+        else if ( m_Team_QuestStatus[team2][0] < 1000 )
+            creatureid = ( owner == ALLIANCE )? AV_NPC_A_GRAVEDEFENSE1 : AV_NPC_H_GRAVEDEFENSE1;
+        else if ( m_Team_QuestStatus[team2][0] < 1500 )
+            creatureid = ( owner == ALLIANCE )? AV_NPC_A_GRAVEDEFENSE2 : AV_NPC_H_GRAVEDEFENSE2;
+        else
+           creatureid = ( owner == ALLIANCE )? AV_NPC_A_GRAVEDEFENSE3 : AV_NPC_H_GRAVEDEFENSE3;
+        //spiritguide
+        if( m_BgCreatures[node] )
+            DelCreature(node);
+        if( !AddSpiritGuide(node, BG_AV_CreaturePos[node][0], BG_AV_CreaturePos[node][1], BG_AV_CreaturePos[node][2], BG_AV_CreaturePos[node][3], owner))
+            sLog.outError("AV: couldn't spawn spiritguide at node %i",node);
+
+    }
+    for(uint8 i=0; i<4; i++)
+    {
+        Creature* cr = AddAVCreature(creatureid,c_place+i);
+    }
+}
+void BattleGroundAV::DePopulateNode(BG_AV_Nodes node)
+{
+	uint32 c_place = AV_CPLACE_DEFENSE_STORM_AID + ( 4 * node );
+    for(uint8 i=0; i<4; i++)
+        if( m_BgCreatures[c_place+i] )
+            DelCreature(c_place+i);
+    //spiritguide
+    if( !IsTower(node) && m_BgCreatures[node] )
+        DelCreature(node);
+}
+
+
+const BG_AV_Nodes BattleGroundAV::GetNodeThroughObject(uint32 object)
+{
+    sLog.outDebug("bg_AV getnodethroughobject %i",object);
+	if( object <= BG_AV_OBJECT_FLAG_A_STONEHEART_BUNKER )
+		return BG_AV_Nodes(object);
+	if( object <= BG_AV_OBJECT_FLAG_C_A_FROSTWOLF_HUT )
+		return BG_AV_Nodes(object - 11);
+	if( object <= BG_AV_OBJECT_FLAG_C_A_FROSTWOLF_WTOWER )
+		return BG_AV_Nodes(object - 7);
+	if( object <= BG_AV_OBJECT_FLAG_C_H_STONEHEART_BUNKER )
+		return BG_AV_Nodes(object -22);
+	if( object <= BG_AV_OBJECT_FLAG_H_FROSTWOLF_HUT )
+		return BG_AV_Nodes(object - 33);
+	if( object <= BG_AV_OBJECT_FLAG_H_FROSTWOLF_WTOWER )
+		return BG_AV_Nodes(object - 29);
+	if( object == BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE )
+		return BG_AV_NODES_SNOWFALL_GRAVE;
+	sLog.outError("BattleGroundAV: ERROR! GetPlace got a wrong object :(");
+    assert(false);
+    return BG_AV_Nodes(0);
+}
+
+const uint32 BattleGroundAV::GetObjectThroughNode(BG_AV_Nodes node)
+{ //this function is the counterpart to GetNodeThroughObject()
+    sLog.outDebug("bg_AV GetObjectThroughNode %i",node);
+    if( m_Nodes[node].Owner == ALLIANCE )
+    {
+        if( m_Nodes[node].State == POINT_ASSAULTED )
+        {
+            if( node <= BG_AV_NODES_FROSTWOLF_HUT )
+                return node+11;
+            if( node >= BG_AV_NODES_ICEBLOOD_TOWER && node <= BG_AV_NODES_FROSTWOLF_WTOWER)
+                return node+7;
+        }
+        else if ( m_Nodes[node].State == POINT_CONTROLED )
+            if( node <= BG_AV_NODES_STONEHEART_BUNKER )
+                return node;
+    }
+    else if ( m_Nodes[node].Owner == HORDE )
+    {
+        if( m_Nodes[node].State == POINT_ASSAULTED )
+            if( node <= BG_AV_NODES_STONEHEART_BUNKER )
+                return node+22;
+        else if ( m_Nodes[node].State == POINT_CONTROLED )
+        {
+            if( node <= BG_AV_NODES_FROSTWOLF_HUT )
+                return node+33;
+            if( node >= BG_AV_NODES_ICEBLOOD_TOWER && node <= BG_AV_NODES_FROSTWOLF_WTOWER)
+                return node+29;
+        }
+    }
+    else if ( m_Nodes[node].Owner == AV_NEUTRAL_TEAM )
+        return BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE;
+    sLog.outError("BattleGroundAV: Error! GetPlaceNode couldn't resolve node %i",node);
+    assert(false);
+    return 0;
+}
+
+
+//called when using banner
+
+void BattleGroundAV::EventPlayerClickedOnFlag(Player *source, GameObject* target_obj)
+{
+    if(GetStatus() != STATUS_IN_PROGRESS)
+        return;
+    int32 object = GetObjectType(target_obj->GetGUID());
+    sLog.outDebug("BG_AV using gameobject %i with type %i",target_obj->GetEntry(),object);
+    if(object < 0)
+        return;
+    switch(target_obj->GetEntry())
+    {
+        case BG_AV_OBJECTID_BANNER_A:
+        case BG_AV_OBJECTID_BANNER_A_B:
+        case BG_AV_OBJECTID_BANNER_H:
+        case BG_AV_OBJECTID_BANNER_H_B:
+        case BG_AV_OBJECTID_BANNER_SNOWFALL_N:
+            EventPlayerAssaultsPoint(source, object);
+            break;
+        case BG_AV_OBJECTID_BANNER_CONT_A:
+        case BG_AV_OBJECTID_BANNER_CONT_A_B:
+        case BG_AV_OBJECTID_BANNER_CONT_H:
+        case BG_AV_OBJECTID_BANNER_CONT_H_B:
+            EventPlayerDefendsPoint(source, object);
+            break;
+        default:
+            break;
+    }
+}
+
+void BattleGroundAV::EventPlayerDefendsPoint(Player* player, uint32 object)
+{
+    assert(GetStatus() == STATUS_IN_PROGRESS);
+    BG_AV_Nodes node = GetNodeThroughObject(object);
+
+    uint32 owner = m_Nodes[node].Owner; //maybe should name it prevowner
+    uint32 team = player->GetTeam();
+
+    if(owner == player->GetTeam() || m_Nodes[node].State != POINT_ASSAULTED)
+        return;
+    if(m_Nodes[node].TotalOwner == AV_NEUTRAL_TEAM)
+    { //until snowfall doesn't belong to anyone it is better handled in assault-code
+        assert(node == BG_AV_NODES_SNOWFALL_GRAVE); //currently the only neutral grave
+        EventPlayerAssaultsPoint(player,object);
+        return;
+    }
+    sLog.outDebug("player defends point object: %i node: %i",object,node);
+    if(m_Nodes[node].PrevOwner != team)
+    {
+        sLog.outError("BG_AV: player defends point which doesn't belong to his team %i",node);
+        return;
+    }
+
+
+   //spawn new go :)
+    if(m_Nodes[node].Owner == ALLIANCE)
+        SpawnBGObject(object+22, RESPAWN_IMMEDIATELY); //spawn horde banner
+    else
+        SpawnBGObject(object-22, RESPAWN_IMMEDIATELY); //spawn alliance banner
+
+    if(!IsTower(node))
+    {
+        SpawnBGObject(BG_AV_OBJECT_AURA_N_FIRSTAID_STATION+3*node,RESPAWN_ONE_DAY);
+        SpawnBGObject(BG_AV_OBJECT_AURA_A_FIRSTAID_STATION+GetTeamIndexByTeamId(team)+3*node,RESPAWN_IMMEDIATELY);
+    }
+        // despawn old go
+    SpawnBGObject(object, RESPAWN_ONE_DAY);
+
+    DefendNode(node,team);
+	PopulateNode(node);
+    UpdateNodeWorldState(node);
+
+    if(IsTower(node))
+    {
+        //spawn big flag+aura on top of tower
+        SpawnBGObject(BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH+(2*(node-BG_AV_NODES_DUNBALDAR_SOUTH)),(team == ALLIANCE)? RESPAWN_IMMEDIATELY : RESPAWN_ONE_DAY);
+        SpawnBGObject(BG_AV_OBJECT_TAURA_H_DUNBALDAR_SOUTH+(2*(node-BG_AV_NODES_DUNBALDAR_SOUTH)),(team == HORDE)? RESPAWN_IMMEDIATELY : RESPAWN_ONE_DAY);
+        SpawnBGObject(BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH+(2*(node-BG_AV_NODES_DUNBALDAR_SOUTH)),(team == ALLIANCE)? RESPAWN_IMMEDIATELY : RESPAWN_ONE_DAY);
+        SpawnBGObject(BG_AV_OBJECT_TFLAG_H_DUNBALDAR_SOUTH+(2*(node-BG_AV_NODES_DUNBALDAR_SOUTH)),(team == HORDE)? RESPAWN_IMMEDIATELY : RESPAWN_ONE_DAY);
+    }
+    else if(node == BG_AV_NODES_SNOWFALL_GRAVE) //snowfall eyecandy
+    {
+        for(uint8 i = 0; i < 4; i++)
+        {
+            SpawnBGObject(((owner==ALLIANCE)?BG_AV_OBJECT_SNOW_EYECANDY_PA : BG_AV_OBJECT_SNOW_EYECANDY_PH)+i,RESPAWN_ONE_DAY);
+            SpawnBGObject(((team==ALLIANCE)?BG_AV_OBJECT_SNOW_EYECANDY_A : BG_AV_OBJECT_SNOW_EYECANDY_H)+i,RESPAWN_IMMEDIATELY);
+        }
+    }
+	//send a nice message to all :)
+	char buf[256];
+	sprintf(buf, GetTrinityString(( IsTower(node) ) ? LANG_BG_AV_TOWER_DEFENDED : LANG_BG_AV_GRAVE_DEFENDED), GetNodeName(node),( team == ALLIANCE ) ?  GetTrinityString(LANG_BG_AV_ALLY) : GetTrinityString(LANG_BG_AV_HORDE));
+    Creature* creature = GetBGCreature(AV_CPLACE_HERALD);
+    if(creature)
+        YellToAll(creature,buf,LANG_UNIVERSAL);
+	//update the statistic for the defending player
+	UpdatePlayerScore(player, ( IsTower(node) ) ? SCORE_TOWERS_DEFENDED : SCORE_GRAVEYARDS_DEFENDED, 1);
+    if(IsTower(node))
+        PlaySoundToAll(AV_SOUND_BOTH_TOWER_DEFEND);
+    else
+        PlaySoundToAll((team==ALLIANCE)?AV_SOUND_ALLIANCE_GOOD:AV_SOUND_HORDE_GOOD);
+}
+
+void BattleGroundAV::EventPlayerAssaultsPoint(Player* player, uint32 object)
+{
+    assert(GetStatus() == STATUS_IN_PROGRESS);
+
+    BG_AV_Nodes node = GetNodeThroughObject(object);
+    uint32 owner = m_Nodes[node].Owner; //maybe name it prevowner
+    uint32 team  = player->GetTeam();
+    sLog.outDebug("bg_av: player assaults point object %i node %i",object,node);
+    if(owner == team || team == m_Nodes[node].TotalOwner)
+        return; //surely a gm used this object
+
+
+    if(node == BG_AV_NODES_SNOWFALL_GRAVE) //snowfall is a bit special in capping + it gets eyecandy stuff
+    {
+        if(object == BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE) //initial capping
+        {
+            assert(owner == AV_NEUTRAL_TEAM && m_Nodes[node].TotalOwner == AV_NEUTRAL_TEAM);
+            if( team == ALLIANCE )
+                SpawnBGObject(BG_AV_OBJECT_FLAG_C_A_SNOWFALL_GRAVE, RESPAWN_IMMEDIATELY);
+            else
+                SpawnBGObject(BG_AV_OBJECT_FLAG_C_H_SNOWFALL_GRAVE, RESPAWN_IMMEDIATELY);
+            SpawnBGObject(BG_AV_OBJECT_AURA_N_FIRSTAID_STATION+3*node,RESPAWN_IMMEDIATELY); //neutral aura spawn
+        }
+        else if(m_Nodes[node].TotalOwner == AV_NEUTRAL_TEAM) //recapping, when no team owns this node realy
+        {
+            assert(m_Nodes[node].State != POINT_CONTROLED);
+            if(team == ALLIANCE)
+                SpawnBGObject(object-11, RESPAWN_IMMEDIATELY);
+            else
+                SpawnBGObject(object+11, RESPAWN_IMMEDIATELY);
+        }
+        //eyecandy
+        uint32 spawn,despawn;
+        if(team == ALLIANCE)
+        {
+            despawn = ( m_Nodes[node].State == POINT_ASSAULTED )?BG_AV_OBJECT_SNOW_EYECANDY_PH : BG_AV_OBJECT_SNOW_EYECANDY_H;
+            spawn = BG_AV_OBJECT_SNOW_EYECANDY_PA;
+        }
+        else
+        {
+            despawn = ( m_Nodes[node].State == POINT_ASSAULTED )?BG_AV_OBJECT_SNOW_EYECANDY_PA : BG_AV_OBJECT_SNOW_EYECANDY_A;
+            spawn = BG_AV_OBJECT_SNOW_EYECANDY_PH;
+        }
+        for(uint8 i = 0; i < 4; i++)
+        {
+            SpawnBGObject(despawn+i,RESPAWN_ONE_DAY);
+            SpawnBGObject(spawn+i,RESPAWN_IMMEDIATELY);
+        }
+    }
+
+    //if snowfall gots capped it can be handled like all other graveyards
+    if( m_Nodes[node].TotalOwner != AV_NEUTRAL_TEAM)
+    {
+        assert(m_Nodes[node].Owner != AV_NEUTRAL_TEAM);
+        if(team == ALLIANCE)
+            SpawnBGObject(object-22, RESPAWN_IMMEDIATELY);
+        else
+            SpawnBGObject(object+22, RESPAWN_IMMEDIATELY);
+        if(IsTower(node))
+        { //spawning/despawning of bigflag+aura
+            SpawnBGObject(BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH+(2*(node-BG_AV_NODES_DUNBALDAR_SOUTH)),(team==ALLIANCE)? RESPAWN_IMMEDIATELY : RESPAWN_ONE_DAY);
+            SpawnBGObject(BG_AV_OBJECT_TAURA_H_DUNBALDAR_SOUTH+(2*(node-BG_AV_NODES_DUNBALDAR_SOUTH)),(team==HORDE)? RESPAWN_IMMEDIATELY : RESPAWN_ONE_DAY);
+            SpawnBGObject(BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH+(2*(node-BG_AV_NODES_DUNBALDAR_SOUTH)),(team==ALLIANCE)? RESPAWN_IMMEDIATELY : RESPAWN_ONE_DAY);
+            SpawnBGObject(BG_AV_OBJECT_TFLAG_H_DUNBALDAR_SOUTH+(2*(node-BG_AV_NODES_DUNBALDAR_SOUTH)),(team==HORDE)? RESPAWN_IMMEDIATELY : RESPAWN_ONE_DAY);
+        }
+        else
+        {
+            //spawning/despawning of aura
+            SpawnBGObject(BG_AV_OBJECT_AURA_N_FIRSTAID_STATION+3*node,RESPAWN_IMMEDIATELY); //neutral aura spawn
+            SpawnBGObject(BG_AV_OBJECT_AURA_A_FIRSTAID_STATION+GetTeamIndexByTeamId(owner)+3*node,RESPAWN_ONE_DAY); //teeamaura despawn
+            // Those who are waiting to resurrect at this object are taken to the closest own object's graveyard
+            std::vector<uint64> ghost_list = m_ReviveQueue[m_BgCreatures[node]];
+            if( !ghost_list.empty() )
+            {
+                Player *plr;
+                WorldSafeLocsEntry const *ClosestGrave = NULL;
+                for (std::vector<uint64>::iterator itr = ghost_list.begin(); itr != ghost_list.end(); ++itr)
+                {
+                    plr = objmgr.GetPlayer(*ghost_list.begin());
+                    if( !plr )
+                        continue;
+                    if(!ClosestGrave)
+                        ClosestGrave = GetClosestGraveYard(plr->GetPositionX(), plr->GetPositionY(), plr->GetPositionZ(), team);
+                    else
+                        plr->TeleportTo(GetMapId(), ClosestGrave->x, ClosestGrave->y, ClosestGrave->z, plr->GetOrientation());
+                }
+                m_ReviveQueue[m_BgCreatures[node]].clear();
+            }
+        }
+        DePopulateNode(node);
+    }
+
+    SpawnBGObject(object, RESPAWN_ONE_DAY); //delete old banner
+    AssaultNode(node,team);
+    UpdateNodeWorldState(node);
+
+    //send a nice message to all :)
+    char buf[256];
+    sprintf(buf, ( IsTower(node) ) ? GetTrinityString(LANG_BG_AV_TOWER_ASSAULTED) : GetTrinityString(LANG_BG_AV_GRAVE_ASSAULTED), GetNodeName(node),  ( team == ALLIANCE ) ?  GetTrinityString(LANG_BG_AV_ALLY) : GetTrinityString(LANG_BG_AV_HORDE ));
+    Creature* creature = GetBGCreature(AV_CPLACE_HERALD);
+    if(creature)
+        YellToAll(creature,buf,LANG_UNIVERSAL);
+    //update the statistic for the assaulting player
+    UpdatePlayerScore(player, ( IsTower(node) ) ? SCORE_TOWERS_ASSAULTED : SCORE_GRAVEYARDS_ASSAULTED, 1);
+    PlaySoundToAll((team==ALLIANCE)?AV_SOUND_ALLIANCE_ASSAULTS:AV_SOUND_HORDE_ASSAULTS);
+}
+
+void BattleGroundAV::FillInitialWorldStates(WorldPacket& data)
+{
+    bool stateok;
+    //graveyards
+    for (uint8 i = BG_AV_NODES_FIRSTAID_STATION; i <= BG_AV_NODES_FROSTWOLF_HUT; i++)
+    {
+        for (uint8 j =1; j <= 3; j+=2)
+        {//j=1=assaulted j=3=controled
+            stateok = (m_Nodes[i].State == j);
+            data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j,ALLIANCE)]) << uint32((m_Nodes[i].Owner == ALLIANCE && stateok)?1:0);
+            data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j,HORDE)]) << uint32((m_Nodes[i].Owner == HORDE && stateok)?1:0);
+        }
+    }
+
+    //towers
+    for (uint8 i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_MAX; i++)
+        for (uint8 j =1; j <= 3; j+=2)
+        {//j=1=assaulted j=3=controled //i dont have j=2=destroyed cause destroyed is the same like enemy-team controll
+            stateok = (m_Nodes[i].State == j || (m_Nodes[i].State == POINT_DESTROYED && j==3));
+            data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j,ALLIANCE)]) << uint32((m_Nodes[i].Owner == ALLIANCE && stateok)?1:0);
+            data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j,HORDE)]) << uint32((m_Nodes[i].Owner == HORDE && stateok)?1:0);
+        }
+    if(m_Nodes[BG_AV_NODES_SNOWFALL_GRAVE].Owner == AV_NEUTRAL_TEAM) //cause neutral teams aren't handled generic
+        data << uint32(AV_SNOWFALL_N) << uint32(1);
+    data << uint32(AV_Alliance_Score)  << uint32(m_Team_Scores[0]);
+    data << uint32(AV_Horde_Score) << uint32(m_Team_Scores[1]);
+    if(GetStatus() == STATUS_IN_PROGRESS){ //only if game started the teamscores are displayed
+        data << uint32(AV_SHOW_A_SCORE) << uint32(1);
+        data << uint32(AV_SHOW_H_SCORE) << uint32(1);
+    }
+    else
+    {
+        data << uint32(AV_SHOW_A_SCORE) << uint32(0);
+        data << uint32(AV_SHOW_H_SCORE) << uint32(0);
+    }
+    SendMineWorldStates(AV_NORTH_MINE);
+    SendMineWorldStates(AV_SOUTH_MINE);
+}
+
+const uint8 BattleGroundAV::GetWorldStateType(uint8 state, uint16 team) //this is used for node worldstates and returns values which fit good into the worldstatesarray
+{
+    //neutral stuff cant get handled (currently its only snowfall)
+    assert(team != AV_NEUTRAL_TEAM);
+//a_c a_a h_c h_a the positions in worldstate-array
+    if(team == ALLIANCE)
+    {
+        if(state==POINT_CONTROLED || state==POINT_DESTROYED)
+            return 0;
+        if(state==POINT_ASSAULTED)
+            return 1;
+    }
+    if(team == HORDE)
+    {
+        if(state==POINT_DESTROYED || state==POINT_CONTROLED)
+            return 2;
+        if(state==POINT_ASSAULTED)
+            return 3;
+    }
+    sLog.outError("BG_AV: should update a strange worldstate state:%i team:%i",state,team);
+    return 5; //this will crash the game, but i want to know if something is wrong here
+}
+
+void BattleGroundAV::UpdateNodeWorldState(BG_AV_Nodes node)
+{
+    UpdateWorldState(BG_AV_NodeWorldStates[node][GetWorldStateType(m_Nodes[node].State,m_Nodes[node].Owner)],1);
+    if(m_Nodes[node].PrevOwner == AV_NEUTRAL_TEAM) //currently only snowfall is supported as neutral node (i don't want to make an extra row (neutral states) in worldstatesarray just for one node
+        UpdateWorldState(AV_SNOWFALL_N,0);
+    else
+        UpdateWorldState(BG_AV_NodeWorldStates[node][GetWorldStateType(m_Nodes[node].PrevState,m_Nodes[node].PrevOwner)],0);
+}
+
+void BattleGroundAV::SendMineWorldStates(uint32 mine)
+{
+    assert(mine == AV_NORTH_MINE || mine==AV_SOUTH_MINE);
+// currently i'm sure, that this works (:
+//    assert(m_Mine_PrevOwner[mine] == ALLIANCE || m_Mine_PrevOwner[mine] == HORDE || m_Mine_PrevOwner[mine] == AV_NEUTRAL_TEAM);
+//    assert(m_Mine_Owner[mine] == ALLIANCE || m_Mine_Owner[mine] == HORDE || m_Mine_Owner[mine] == AV_NEUTRAL_TEAM);
+
+    uint8 owner,prevowner,mine2; //those variables are needed to access the right worldstate in the BG_AV_MineWorldStates array
+    mine2 = (mine==AV_NORTH_MINE)?0:1;
+    if(m_Mine_PrevOwner[mine] == ALLIANCE)
+        prevowner = 0;
+    else if(m_Mine_PrevOwner[mine] == HORDE)
+        prevowner = 2;
+    else
+        prevowner = 1;
+    if(m_Mine_Owner[mine] == ALLIANCE)
+        owner = 0;
+    else if(m_Mine_Owner[mine] == HORDE)
+        owner = 2;
+    else
+        owner = 1;
+
+    UpdateWorldState(BG_AV_MineWorldStates[mine2][owner],1);
+    if( prevowner != owner)
+        UpdateWorldState(BG_AV_MineWorldStates[mine2][prevowner],0);
+}
+
+
+WorldSafeLocsEntry const* BattleGroundAV::GetClosestGraveYard(float x, float y, float z, uint32 team)
+{
+    WorldSafeLocsEntry const* good_entry = NULL;
+    if( GetStatus() == STATUS_IN_PROGRESS)
+    {
+        // Is there any occupied node for this team?
+        float mindist = 9999999.0f;
+        for (uint8 i = BG_AV_NODES_FIRSTAID_STATION; i <= BG_AV_NODES_FROSTWOLF_HUT; ++i)
+        {
+            if (m_Nodes[i].Owner != team || m_Nodes[i].State != POINT_CONTROLED)
+                continue;
+            WorldSafeLocsEntry const*entry = sWorldSafeLocsStore.LookupEntry( BG_AV_GraveyardIds[i] );
+            if( !entry )
+                continue;
+            float dist = (entry->x - x)*(entry->x - x)+(entry->y - y)*(entry->y - y);
+            if( mindist > dist )
+            {
+                mindist = dist;
+                good_entry = entry;
+            }
+        }
+    }
+    // If not, place ghost on starting location
+    if( !good_entry )
+        good_entry = sWorldSafeLocsStore.LookupEntry( BG_AV_GraveyardIds[GetTeamIndexByTeamId(team)+7] );
+
+    return good_entry;
+}
+
+
+bool BattleGroundAV::SetupBattleGround()
+{
+    // Create starting objects
+    if(
+       // alliance gates
+        !AddObject(BG_AV_OBJECT_DOOR_A, BG_AV_OBJECTID_GATE_A, BG_AV_DoorPositons[0][0],BG_AV_DoorPositons[0][1],BG_AV_DoorPositons[0][2],BG_AV_DoorPositons[0][3],0,0,sin(BG_AV_DoorPositons[0][3]/2),cos(BG_AV_DoorPositons[0][3]/2),RESPAWN_IMMEDIATELY)
+        // horde gates
+        || !AddObject(BG_AV_OBJECT_DOOR_H, BG_AV_OBJECTID_GATE_H, BG_AV_DoorPositons[1][0],BG_AV_DoorPositons[1][1],BG_AV_DoorPositons[1][2],BG_AV_DoorPositons[1][3],0,0,sin(BG_AV_DoorPositons[1][3]/2),cos(BG_AV_DoorPositons[1][3]/2),RESPAWN_IMMEDIATELY))
+    {
+        sLog.outErrorDb("BatteGroundAV: Failed to spawn some object BattleGround not created!1");
+        return false;
+    }
+
+//spawn node-objects
+    for (uint8 i = BG_AV_NODES_FIRSTAID_STATION ; i < BG_AV_NODES_MAX; ++i)
+    {
+        if( i <= BG_AV_NODES_FROSTWOLF_HUT )
+        {
+            if(    !AddObject(i,BG_AV_OBJECTID_BANNER_A_B,BG_AV_ObjectPos[i][0],BG_AV_ObjectPos[i][1],BG_AV_ObjectPos[i][2],BG_AV_ObjectPos[i][3], 0, 0, sin(BG_AV_ObjectPos[i][3]/2), cos(BG_AV_ObjectPos[i][3]/2),RESPAWN_ONE_DAY)
+                || !AddObject(i+11,BG_AV_OBJECTID_BANNER_CONT_A_B,BG_AV_ObjectPos[i][0],BG_AV_ObjectPos[i][1],BG_AV_ObjectPos[i][2],BG_AV_ObjectPos[i][3], 0, 0, sin(BG_AV_ObjectPos[i][3]/2), cos(BG_AV_ObjectPos[i][3]/2),RESPAWN_ONE_DAY)
+                || !AddObject(i+33,BG_AV_OBJECTID_BANNER_H_B,BG_AV_ObjectPos[i][0],BG_AV_ObjectPos[i][1],BG_AV_ObjectPos[i][2],BG_AV_ObjectPos[i][3], 0, 0, sin(BG_AV_ObjectPos[i][3]/2), cos(BG_AV_ObjectPos[i][3]/2),RESPAWN_ONE_DAY)
+                || !AddObject(i+22,BG_AV_OBJECTID_BANNER_CONT_H_B,BG_AV_ObjectPos[i][0],BG_AV_ObjectPos[i][1],BG_AV_ObjectPos[i][2],BG_AV_ObjectPos[i][3], 0, 0, sin(BG_AV_ObjectPos[i][3]/2), cos(BG_AV_ObjectPos[i][3]/2),RESPAWN_ONE_DAY)
+                //aura
+                || !AddObject(BG_AV_OBJECT_AURA_N_FIRSTAID_STATION+i*3,BG_AV_OBJECTID_AURA_N,BG_AV_ObjectPos[i][0],BG_AV_ObjectPos[i][1],BG_AV_ObjectPos[i][2],BG_AV_ObjectPos[i][3], 0, 0, sin(BG_AV_ObjectPos[i][3]/2), cos(BG_AV_ObjectPos[i][3]/2),RESPAWN_ONE_DAY)
+                || !AddObject(BG_AV_OBJECT_AURA_A_FIRSTAID_STATION+i*3,BG_AV_OBJECTID_AURA_A,BG_AV_ObjectPos[i][0],BG_AV_ObjectPos[i][1],BG_AV_ObjectPos[i][2],BG_AV_ObjectPos[i][3], 0, 0, sin(BG_AV_ObjectPos[i][3]/2), cos(BG_AV_ObjectPos[i][3]/2),RESPAWN_ONE_DAY)
+                || !AddObject(BG_AV_OBJECT_AURA_H_FIRSTAID_STATION+i*3,BG_AV_OBJECTID_AURA_H,BG_AV_ObjectPos[i][0],BG_AV_ObjectPos[i][1],BG_AV_ObjectPos[i][2],BG_AV_ObjectPos[i][3], 0, 0, sin(BG_AV_ObjectPos[i][3]/2), cos(BG_AV_ObjectPos[i][3]/2),RESPAWN_ONE_DAY))
+            {
+                sLog.outError("BatteGroundAV: Failed to spawn some object BattleGround not created!2");
+                return false;
+            }
+        }
+        else //towers
+        {
+            if( i <= BG_AV_NODES_STONEHEART_BUNKER ) //alliance towers
+            {
+                if(   !AddObject(i,BG_AV_OBJECTID_BANNER_A,BG_AV_ObjectPos[i][0],BG_AV_ObjectPos[i][1],BG_AV_ObjectPos[i][2],BG_AV_ObjectPos[i][3], 0, 0, sin(BG_AV_ObjectPos[i][3]/2), cos(BG_AV_ObjectPos[i][3]/2),RESPAWN_ONE_DAY)
+                    || !AddObject(i+22,BG_AV_OBJECTID_BANNER_CONT_H,BG_AV_ObjectPos[i][0],BG_AV_ObjectPos[i][1],BG_AV_ObjectPos[i][2],BG_AV_ObjectPos[i][3], 0, 0, sin(BG_AV_ObjectPos[i][3]/2), cos(BG_AV_ObjectPos[i][3]/2),RESPAWN_ONE_DAY)
+                    || !AddObject(BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH+(2*(i-BG_AV_NODES_DUNBALDAR_SOUTH)),BG_AV_OBJECTID_AURA_A,BG_AV_ObjectPos[i+8][0],BG_AV_ObjectPos[i+8][1],BG_AV_ObjectPos[i+8][2],BG_AV_ObjectPos[i+8][3], 0, 0, sin(BG_AV_ObjectPos[i+8][3]/2), cos(BG_AV_ObjectPos[i+8][3]/2),RESPAWN_ONE_DAY)
+                    || !AddObject(BG_AV_OBJECT_TAURA_H_DUNBALDAR_SOUTH+(2*(i-BG_AV_NODES_DUNBALDAR_SOUTH)),BG_AV_OBJECTID_AURA_N,BG_AV_ObjectPos[i+8][0],BG_AV_ObjectPos[i+8][1],BG_AV_ObjectPos[i+8][2],BG_AV_ObjectPos[i+8][3], 0, 0, sin(BG_AV_ObjectPos[i+8][3]/2), cos(BG_AV_ObjectPos[i+8][3]/2),RESPAWN_ONE_DAY)
+                    || !AddObject(BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH+(2*(i-BG_AV_NODES_DUNBALDAR_SOUTH)),BG_AV_OBJECTID_TOWER_BANNER_A,BG_AV_ObjectPos[i+8][0],BG_AV_ObjectPos[i+8][1],BG_AV_ObjectPos[i+8][2],BG_AV_ObjectPos[i+8][3], 0, 0, sin(BG_AV_ObjectPos[i+8][3]/2), cos(BG_AV_ObjectPos[i+8][3]/2),RESPAWN_ONE_DAY)
+                    || !AddObject(BG_AV_OBJECT_TFLAG_H_DUNBALDAR_SOUTH+(2*(i-BG_AV_NODES_DUNBALDAR_SOUTH)),BG_AV_OBJECTID_TOWER_BANNER_PH,BG_AV_ObjectPos[i+8][0],BG_AV_ObjectPos[i+8][1],BG_AV_ObjectPos[i+8][2],BG_AV_ObjectPos[i+8][3], 0, 0, sin(BG_AV_ObjectPos[i+8][3]/2), cos(BG_AV_ObjectPos[i+8][3]/2),RESPAWN_ONE_DAY))
+                {
+                    sLog.outError("BatteGroundAV: Failed to spawn some object BattleGround not created!3");
+                    return false;
+                }
+            }
+            else //horde towers
+            {
+                if(     !AddObject(i+7,BG_AV_OBJECTID_BANNER_CONT_A,BG_AV_ObjectPos[i][0],BG_AV_ObjectPos[i][1],BG_AV_ObjectPos[i][2],BG_AV_ObjectPos[i][3], 0, 0, sin(BG_AV_ObjectPos[i][3]/2), cos(BG_AV_ObjectPos[i][3]/2),RESPAWN_ONE_DAY)
+                    || !AddObject(i+29,BG_AV_OBJECTID_BANNER_H,BG_AV_ObjectPos[i][0],BG_AV_ObjectPos[i][1],BG_AV_ObjectPos[i][2],BG_AV_ObjectPos[i][3], 0, 0, sin(BG_AV_ObjectPos[i][3]/2), cos(BG_AV_ObjectPos[i][3]/2),RESPAWN_ONE_DAY)
+                    || !AddObject(BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH+(2*(i-BG_AV_NODES_DUNBALDAR_SOUTH)),BG_AV_OBJECTID_AURA_N,BG_AV_ObjectPos[i+8][0],BG_AV_ObjectPos[i+8][1],BG_AV_ObjectPos[i+8][2],BG_AV_ObjectPos[i+8][3], 0, 0, sin(BG_AV_ObjectPos[i+8][3]/2), cos(BG_AV_ObjectPos[i+8][3]/2),RESPAWN_ONE_DAY)
+                    || !AddObject(BG_AV_OBJECT_TAURA_H_DUNBALDAR_SOUTH+(2*(i-BG_AV_NODES_DUNBALDAR_SOUTH)),BG_AV_OBJECTID_AURA_H,BG_AV_ObjectPos[i+8][0],BG_AV_ObjectPos[i+8][1],BG_AV_ObjectPos[i+8][2],BG_AV_ObjectPos[i+8][3], 0, 0, sin(BG_AV_ObjectPos[i+8][3]/2), cos(BG_AV_ObjectPos[i+8][3]/2),RESPAWN_ONE_DAY)
+                    || !AddObject(BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH+(2*(i-BG_AV_NODES_DUNBALDAR_SOUTH)),BG_AV_OBJECTID_TOWER_BANNER_PA,BG_AV_ObjectPos[i+8][0],BG_AV_ObjectPos[i+8][1],BG_AV_ObjectPos[i+8][2],BG_AV_ObjectPos[i+8][3], 0, 0, sin(BG_AV_ObjectPos[i+8][3]/2), cos(BG_AV_ObjectPos[i+8][3]/2),RESPAWN_ONE_DAY)
+                    || !AddObject(BG_AV_OBJECT_TFLAG_H_DUNBALDAR_SOUTH+(2*(i-BG_AV_NODES_DUNBALDAR_SOUTH)),BG_AV_OBJECTID_TOWER_BANNER_H,BG_AV_ObjectPos[i+8][0],BG_AV_ObjectPos[i+8][1],BG_AV_ObjectPos[i+8][2],BG_AV_ObjectPos[i+8][3], 0, 0, sin(BG_AV_ObjectPos[i+8][3]/2), cos(BG_AV_ObjectPos[i+8][3]/2),RESPAWN_ONE_DAY))
+                {
+                    sLog.outError("BatteGroundAV: Failed to spawn some object BattleGround not created!4");
+                    return false;
+                }
+            }
+            for(uint8 j=0; j<=9; j++) //burning aura
+            {
+                if(!AddObject(BG_AV_OBJECT_BURN_DUNBALDAR_SOUTH+((i-BG_AV_NODES_DUNBALDAR_SOUTH)*10)+j,BG_AV_OBJECTID_FIRE,BG_AV_ObjectPos[AV_OPLACE_BURN_DUNBALDAR_SOUTH+((i-BG_AV_NODES_DUNBALDAR_SOUTH)*10)+j][0],BG_AV_ObjectPos[AV_OPLACE_BURN_DUNBALDAR_SOUTH+((i-BG_AV_NODES_DUNBALDAR_SOUTH)*10)+j][1],BG_AV_ObjectPos[AV_OPLACE_BURN_DUNBALDAR_SOUTH+((i-BG_AV_NODES_DUNBALDAR_SOUTH)*10)+j][2],BG_AV_ObjectPos[AV_OPLACE_BURN_DUNBALDAR_SOUTH+((i-BG_AV_NODES_DUNBALDAR_SOUTH)*10)+j][3], 0, 0, sin(BG_AV_ObjectPos[AV_OPLACE_BURN_DUNBALDAR_SOUTH+((i-BG_AV_NODES_DUNBALDAR_SOUTH)*10)+j][3]/2), cos(BG_AV_ObjectPos[AV_OPLACE_BURN_DUNBALDAR_SOUTH+((i-BG_AV_NODES_DUNBALDAR_SOUTH)*10)+j][3]/2),RESPAWN_ONE_DAY))
+                {
+                    sLog.outError("BatteGroundAV: Failed to spawn some object BattleGround not created!5.%i",i);
+                    return false;
+                }
+            }
+        }
+    }
+    for(uint8 i=0;i<2;i++) //burning aura for buildings
+    {
+        for(uint8 j=0; j<=9; j++)
+        {
+            if(j<5)
+            {
+                if(!AddObject(BG_AV_OBJECT_BURN_BUILDING_ALLIANCE+(i*10)+j,BG_AV_OBJECTID_SMOKE,BG_AV_ObjectPos[AV_OPLACE_BURN_BUILDING_A+(i*10)+j][0],BG_AV_ObjectPos[AV_OPLACE_BURN_BUILDING_A+(i*10)+j][1],BG_AV_ObjectPos[AV_OPLACE_BURN_BUILDING_A+(i*10)+j][2],BG_AV_ObjectPos[AV_OPLACE_BURN_BUILDING_A+(i*10)+j][3], 0, 0, sin(BG_AV_ObjectPos[AV_OPLACE_BURN_BUILDING_A+(i*10)+j][3]/2), cos(BG_AV_ObjectPos[AV_OPLACE_BURN_BUILDING_A+(i*10)+j][3]/2),RESPAWN_ONE_DAY))
+                {
+                    sLog.outError("BatteGroundAV: Failed to spawn some object BattleGround not created!6.%i",i);
+                    return false;
+                }
+            }
+            else
+            {
+                if(!AddObject(BG_AV_OBJECT_BURN_BUILDING_ALLIANCE+(i*10)+j,BG_AV_OBJECTID_FIRE,BG_AV_ObjectPos[AV_OPLACE_BURN_BUILDING_A+(i*10)+j][0],BG_AV_ObjectPos[AV_OPLACE_BURN_BUILDING_A+(i*10)+j][1],BG_AV_ObjectPos[AV_OPLACE_BURN_BUILDING_A+(i*10)+j][2],BG_AV_ObjectPos[AV_OPLACE_BURN_BUILDING_A+(i*10)+j][3], 0, 0, sin(BG_AV_ObjectPos[AV_OPLACE_BURN_BUILDING_A+(i*10)+j][3]/2), cos(BG_AV_ObjectPos[AV_OPLACE_BURN_BUILDING_A+(i*10)+j][3]/2),RESPAWN_ONE_DAY))
+                {
+                    sLog.outError("BatteGroundAV: Failed to spawn some object BattleGround not created!7.%i",i);
+                    return false;
+                }
+            }
+        }
+    }
+    for(uint16 i= 0; i<=(BG_AV_OBJECT_MINE_SUPPLY_N_MAX-BG_AV_OBJECT_MINE_SUPPLY_N_MIN);i++)
+    {
+        if(!AddObject(BG_AV_OBJECT_MINE_SUPPLY_N_MIN+i,BG_AV_OBJECTID_MINE_N,BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_N_MIN+i][0],BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_N_MIN+i][1],BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_N_MIN+i][2],BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_N_MIN+i][3], 0, 0, sin(BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_N_MIN+i][3]/2), cos(BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_N_MIN+i][3]/2),RESPAWN_ONE_DAY))
+        {
+            sLog.outError("BatteGroundAV: Failed to spawn some mine supplies BattleGround not created!7.5.%i",i);
+            return false;
+        }
+    }
+    for(uint16 i= 0 ; i<=(BG_AV_OBJECT_MINE_SUPPLY_S_MAX-BG_AV_OBJECT_MINE_SUPPLY_S_MIN);i++)
+    {
+        if(!AddObject(BG_AV_OBJECT_MINE_SUPPLY_S_MIN+i,BG_AV_OBJECTID_MINE_S,BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_S_MIN+i][0],BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_S_MIN+i][1],BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_S_MIN+i][2],BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_S_MIN+i][3], 0, 0, sin(BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_S_MIN+i][3]/2), cos(BG_AV_ObjectPos[AV_OPLACE_MINE_SUPPLY_S_MIN+i][3]/2),RESPAWN_ONE_DAY))
+        {
+            sLog.outError("BatteGroundAV: Failed to spawn some mine supplies BattleGround not created!7.6.%i",i);
+            return false;
+        }
+    }
+
+    if(!AddObject(BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE, BG_AV_OBJECTID_BANNER_SNOWFALL_N ,BG_AV_ObjectPos[BG_AV_NODES_SNOWFALL_GRAVE][0],BG_AV_ObjectPos[BG_AV_NODES_SNOWFALL_GRAVE][1],BG_AV_ObjectPos[BG_AV_NODES_SNOWFALL_GRAVE][2],BG_AV_ObjectPos[BG_AV_NODES_SNOWFALL_GRAVE][3],0,0,sin(BG_AV_ObjectPos[BG_AV_NODES_SNOWFALL_GRAVE][3]/2), cos(BG_AV_ObjectPos[BG_AV_NODES_SNOWFALL_GRAVE][3]/2), RESPAWN_ONE_DAY))
+    {
+        sLog.outError("BatteGroundAV: Failed to spawn some object BattleGround not created!8");
+        return false;
+    }
+    for(uint8 i = 0; i < 4; i++)
+    {
+        if(!AddObject(BG_AV_OBJECT_SNOW_EYECANDY_A+i, BG_AV_OBJECTID_SNOWFALL_CANDY_A ,BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][0],BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][1],BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][2],BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][3],0,0,sin(BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][3]/2), cos(BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][3]/2), RESPAWN_ONE_DAY)
+            || !AddObject(BG_AV_OBJECT_SNOW_EYECANDY_PA+i, BG_AV_OBJECTID_SNOWFALL_CANDY_PA ,BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][0],BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][1],BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][2],BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][3],0,0,sin(BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][3]/2), cos(BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][3]/2), RESPAWN_ONE_DAY)
+            || !AddObject(BG_AV_OBJECT_SNOW_EYECANDY_H+i, BG_AV_OBJECTID_SNOWFALL_CANDY_H ,BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][0],BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][1],BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][2],BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][3],0,0,sin(BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][3]/2), cos(BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][3]/2), RESPAWN_ONE_DAY)
+            || !AddObject(BG_AV_OBJECT_SNOW_EYECANDY_PH+i, BG_AV_OBJECTID_SNOWFALL_CANDY_PH ,BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][0],BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][1],BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][2],BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][3],0,0,sin(BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][3]/2), cos(BG_AV_ObjectPos[AV_OPLACE_SNOW_1+i][3]/2), RESPAWN_ONE_DAY))
+        {
+            sLog.outError("BatteGroundAV: Failed to spawn some object BattleGround not created!9.%i",i);
+            return false;
+        }
+    }
+    return true;
+}
+
+const char* BattleGroundAV::GetNodeName(BG_AV_Nodes node)
+{
+    switch (node)
+    {
+        case BG_AV_NODES_FIRSTAID_STATION:  return GetTrinityString(LANG_BG_AV_NODE_GRAVE_STORM_AID);
+        case BG_AV_NODES_DUNBALDAR_SOUTH:   return GetTrinityString(LANG_BG_AV_NODE_TOWER_DUN_S);
+        case BG_AV_NODES_DUNBALDAR_NORTH:   return GetTrinityString(LANG_BG_AV_NODE_TOWER_DUN_N);
+        case BG_AV_NODES_STORMPIKE_GRAVE:   return GetTrinityString(LANG_BG_AV_NODE_GRAVE_STORMPIKE);
+        case BG_AV_NODES_ICEWING_BUNKER:    return GetTrinityString(LANG_BG_AV_NODE_TOWER_ICEWING);
+        case BG_AV_NODES_STONEHEART_GRAVE:  return GetTrinityString(LANG_BG_AV_NODE_GRAVE_STONE);
+        case BG_AV_NODES_STONEHEART_BUNKER: return GetTrinityString(LANG_BG_AV_NODE_TOWER_STONE);
+        case BG_AV_NODES_SNOWFALL_GRAVE:    return GetTrinityString(LANG_BG_AV_NODE_GRAVE_SNOW);
+        case BG_AV_NODES_ICEBLOOD_TOWER:    return GetTrinityString(LANG_BG_AV_NODE_TOWER_ICE);
+        case BG_AV_NODES_ICEBLOOD_GRAVE:    return GetTrinityString(LANG_BG_AV_NODE_GRAVE_ICE);
+        case BG_AV_NODES_TOWER_POINT:       return GetTrinityString(LANG_BG_AV_NODE_TOWER_POINT);
+        case BG_AV_NODES_FROSTWOLF_GRAVE:   return GetTrinityString(LANG_BG_AV_NODE_GRAVE_FROST);
+        case BG_AV_NODES_FROSTWOLF_ETOWER:  return GetTrinityString(LANG_BG_AV_NODE_TOWER_FROST_E);
+        case BG_AV_NODES_FROSTWOLF_WTOWER:  return GetTrinityString(LANG_BG_AV_NODE_TOWER_FROST_W);
+        case BG_AV_NODES_FROSTWOLF_HUT:     return GetTrinityString(LANG_BG_AV_NODE_GRAVE_FROST_HUT);
+        default:
+            {
+            sLog.outError("tried to get name for node %u%",node);
+            return "Unknown";
+            break;
+            }
+    }
+}
+
+void BattleGroundAV::AssaultNode(BG_AV_Nodes node, uint16 team)
+{
+    assert(m_Nodes[node].TotalOwner != team);
+    assert(m_Nodes[node].Owner != team);
+    assert(m_Nodes[node].State != POINT_DESTROYED);
+    assert(m_Nodes[node].State != POINT_ASSAULTED || !m_Nodes[node].TotalOwner ); //only assault an assaulted node if no totalowner exists
+    //the timer gets another time, if the previous owner was 0==Neutral
+    m_Nodes[node].Timer      = (m_Nodes[node].PrevOwner)? BG_AV_CAPTIME : BG_AV_SNOWFALL_FIRSTCAP;
+    m_Nodes[node].PrevOwner  = m_Nodes[node].Owner;
+    m_Nodes[node].Owner      = team;
+    m_Nodes[node].PrevState  = m_Nodes[node].State;
+    m_Nodes[node].State      = POINT_ASSAULTED;
+}
+
+void BattleGroundAV::DestroyNode(BG_AV_Nodes node)
+{
+    assert(m_Nodes[node].State == POINT_ASSAULTED);
+
+    m_Nodes[node].TotalOwner = m_Nodes[node].Owner;
+    m_Nodes[node].PrevOwner  = m_Nodes[node].Owner;
+    m_Nodes[node].PrevState  = m_Nodes[node].State;
+    m_Nodes[node].State      = (m_Nodes[node].Tower)? POINT_DESTROYED : POINT_CONTROLED;
+    m_Nodes[node].Timer      = 0;
+}
+
+void BattleGroundAV::InitNode(BG_AV_Nodes node, uint16 team, bool tower)
+{
+    m_Nodes[node].TotalOwner = team;
+    m_Nodes[node].Owner      = team;
+    m_Nodes[node].PrevOwner  = 0;
+    m_Nodes[node].State      = POINT_CONTROLED;
+    m_Nodes[node].PrevState  = m_Nodes[node].State;
+    m_Nodes[node].State      = POINT_CONTROLED;
+    m_Nodes[node].Timer      = 0;
+    m_Nodes[node].Tower      = tower;
+}
+
+void BattleGroundAV::DefendNode(BG_AV_Nodes node, uint16 team)
+{
+    assert(m_Nodes[node].TotalOwner == team);
+    assert(m_Nodes[node].Owner != team);
+    assert(m_Nodes[node].State != POINT_CONTROLED && m_Nodes[node].State != POINT_DESTROYED);
+    m_Nodes[node].PrevOwner  = m_Nodes[node].Owner;
+    m_Nodes[node].Owner      = team;
+    m_Nodes[node].PrevState  = m_Nodes[node].State;
+    m_Nodes[node].State      = POINT_CONTROLED;
+    m_Nodes[node].Timer      = 0;
+}
+
+void BattleGroundAV::ResetBGSubclass()
+{
+    m_MaxLevel=0;
+    for(uint8 i=0; i<2; i++) //forloop for both teams (it just make 0==alliance and 1==horde also for both mines 0=north 1=south
+    {
+        for(uint8 j=0; j<9; j++)
+            m_Team_QuestStatus[i][j]=0;
+	m_Team_Scores[i]=BG_AV_SCORE_INITIAL_POINTS;
+        m_IsInformedNearVictory[i]=false;
+        m_CaptainAlive[i] = true;
+        m_CaptainBuffTimer[i] = 120000 + urand(0,4)* 60; //as far as i could see, the buff is randomly so i make 2minutes (thats the duration of the buff itself) + 0-4minutes TODO get the right times
+        m_Mine_Owner[i] = AV_NEUTRAL_TEAM;
+        m_Mine_PrevOwner[i] = m_Mine_Owner[i];
+    }
+    for(BG_AV_Nodes i = BG_AV_NODES_FIRSTAID_STATION; i <= BG_AV_NODES_STONEHEART_GRAVE; ++i) //alliance graves
+        InitNode(i,ALLIANCE,false);
+	for(BG_AV_Nodes i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_STONEHEART_BUNKER; ++i) //alliance towers
+        InitNode(i,ALLIANCE,true);
+    for(BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_GRAVE; i <= BG_AV_NODES_FROSTWOLF_HUT; ++i) //horde graves
+        InitNode(i,HORDE,false);
+    for(BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_TOWER; i <= BG_AV_NODES_FROSTWOLF_WTOWER; ++i) //horde towers
+        InitNode(i,HORDE,true);
+    InitNode(BG_AV_NODES_SNOWFALL_GRAVE,AV_NEUTRAL_TEAM,false); //give snowfall neutral owner
+
+    m_Mine_Timer=AV_MINE_TICK_TIMER;
+    for(uint16 i = 0; i < AV_CPLACE_MAX+AV_STATICCPLACE_MAX; i++)
+        if(m_BgCreatures[i])
+            DelCreature(i);
+
+}
+
Index: /trunk/src/game/GameObject.cpp
===================================================================
--- /trunk/src/game/GameObject.cpp (revision 279)
+++ /trunk/src/game/GameObject.cpp (revision 283)
@@ -38,6 +38,7 @@
 #include "InstanceData.h"
 #include "BattleGround.h"
+#include "Util.h"
 #include "OutdoorPvPMgr.h"
-#include "Util.h"
+#include "BattleGroundAV.h"
 
 GameObject::GameObject() : WorldObject()
@@ -755,5 +756,13 @@
         {
             if(LootTemplates_Gameobject.HaveQuestLootForPlayer(GetLootId(), pTarget))
+            {
+                //TODO: fix this hack
+                //look for battlegroundAV for some objects which are only activated after mine gots captured by own team
+                if(GetEntry() == BG_AV_OBJECTID_MINE_N || GetEntry() == BG_AV_OBJECTID_MINE_S)
+                    if(BattleGround *bg = pTarget->GetBattleGround())
+                        if(bg->GetTypeID() == BATTLEGROUND_AV && !(((BattleGroundAV*)bg)->PlayerCanDoMineQuest(GetEntry(),pTarget->GetTeam())))
+                            return false;
                 return true;
+            }
             break;
         }
Index: /trunk/src/game/Unit.cpp
===================================================================
--- /trunk/src/game/Unit.cpp (revision 279)
+++ /trunk/src/game/Unit.cpp (revision 283)
@@ -47,5 +47,4 @@
 #include "CellImpl.h"
 #include "Path.h"
-#include "TemporarySummon.h"
 
 #include <math.h>
@@ -831,20 +830,13 @@
 
         // battleground things (do this at the end, so the death state flag will be properly set to handle in the bg->handlekill)
-        if(pVictim->GetTypeId() == TYPEID_PLAYER && (((Player*)pVictim)->InBattleGround()))
-        {
-            Player *killed = ((Player*)pVictim);
-            Player *killer = NULL;
-            if(GetTypeId() == TYPEID_PLAYER)
-                killer = ((Player*)this);
-            else if(GetTypeId() == TYPEID_UNIT && ((Creature*)this)->isPet())
-            {
-                Unit *owner = GetOwner();
-                if(owner && owner->GetTypeId() == TYPEID_PLAYER)
-                    killer = ((Player*)owner);
-            }
-
-            if(killer)
-                if(BattleGround *bg = killed->GetBattleGround())
-                    bg->HandleKillPlayer(killed, killer);   // drop flags and etc
+        if(player && player->InBattleGround())
+        {
+            if(BattleGround *bg = player->GetBattleGround())
+            {
+                if(pVictim->GetTypeId() == TYPEID_PLAYER)
+                    bg->HandleKillPlayer((Player*)pVictim, player);
+                else
+                    bg->HandleKillUnit((Creature*)pVictim, player);
+            }
         }
     }
@@ -3420,19 +3412,4 @@
     if (m_currentSpells[CURRENT_CHANNELED_SPELL] && (!spell_id || m_currentSpells[CURRENT_CHANNELED_SPELL]->m_spellInfo->Id==spell_id))
     {
-        // Unsummon any summoned as possessed creatures on channel interrupt
-        SpellEntry const *spellInfo = m_currentSpells[CURRENT_CHANNELED_SPELL]->m_spellInfo;
-        for (int i = 0; i < 3; i++)
-        {
-            if (spellInfo->Effect[i] == SPELL_EFFECT_SUMMON && 
-                (spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED || 
-                 spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED2 || 
-                 spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED3))
-            {
-                // Possession is removed in the UnSummon function
-                if (GetCharm())
-                    ((TemporarySummon*)GetCharm())->UnSummon(); 
-            }
-        }
-
         if (m_currentSpells[CURRENT_CHANNELED_SPELL]->getState() != SPELL_STATE_FINISHED)
             m_currentSpells[CURRENT_CHANNELED_SPELL]->cancel();
@@ -9814,5 +9791,5 @@
 
 CharmInfo::CharmInfo(Unit* unit)
-: m_unit(unit), m_CommandState(COMMAND_FOLLOW), m_reactState(REACT_PASSIVE), m_petnumber(0), m_barInit(false)
+: m_unit(unit), m_CommandState(COMMAND_FOLLOW), m_reactState(REACT_PASSIVE), m_petnumber(0)
 {
     for(int i =0; i<4; ++i)
@@ -9825,7 +9802,4 @@
 void CharmInfo::InitPetActionBar()
 {
-    if (m_barInit)
-        return;
-
     // the first 3 SpellOrActions are attack, follow and stay
     for(uint32 i = 0; i < 3; i++)
@@ -9842,23 +9816,15 @@
         PetActionBar[i + 3].SpellOrAction = 0;
     }
-    m_barInit = true;
-}
-
-void CharmInfo::InitEmptyActionBar(bool withAttack)
-{
-    if (m_barInit)
-        return;
-
-    for(uint32 x = 0; x < 10; ++x)
+}
+
+void CharmInfo::InitEmptyActionBar()
+{
+    for(uint32 x = 1; x < 10; ++x)
     {
         PetActionBar[x].Type = ACT_CAST;
         PetActionBar[x].SpellOrAction = 0;
     }
-    if (withAttack)
-    {
-        PetActionBar[0].Type = ACT_COMMAND;
-        PetActionBar[0].SpellOrAction = COMMAND_ATTACK;
-    }
-    m_barInit = true;
+    PetActionBar[0].Type = ACT_COMMAND;
+    PetActionBar[0].SpellOrAction = COMMAND_ATTACK;
 }
 
Index: /trunk/src/game/Player.cpp
===================================================================
--- /trunk/src/game/Player.cpp (revision 279)
+++ /trunk/src/game/Player.cpp (revision 283)
@@ -55,4 +55,5 @@
 #include "Weather.h"
 #include "BattleGround.h"
+#include "BattleGroundAV.h"
 #include "BattleGroundMgr.h"
 #include "OutdoorPvP.h"
@@ -4161,5 +4162,5 @@
     BattleGround *bg = sBattleGroundMgr.GetBattleGround(GetBattleGroundId());
 
-    if(bg && (bg->GetTypeID() == BATTLEGROUND_AB || bg->GetTypeID() == BATTLEGROUND_EY))
+    if(bg && (bg->GetTypeID() == BATTLEGROUND_AB || bg->GetTypeID() == BATTLEGROUND_EY || bg->GetTypeID() == BATTLEGROUND_AV))
         ClosestGrave = bg->GetClosestGraveYard(GetPositionX(), GetPositionY(), GetPositionZ(), GetTeam());
     else
@@ -7216,4 +7217,14 @@
             uint32 lootid =  go->GetLootId();
 
+            //TODO: fix this big hack
+            if((go->GetEntry() == BG_AV_OBJECTID_MINE_N || go->GetEntry() == BG_AV_OBJECTID_MINE_S))
+                if( BattleGround *bg = GetBattleGround())
+                    if(bg->GetTypeID() == BATTLEGROUND_AV)
+                        if(!(((BattleGroundAV*)bg)->PlayerCanDoMineQuest(go->GetEntry(),GetTeam())))
+                        {
+                            SendLootRelease(guid);
+                            return;
+                        }
+
             if(lootid)
             {
@@ -7292,4 +7303,6 @@
             uint32 pLevel = bones->loot.gold;
             bones->loot.clear();
+            if(GetBattleGround()->GetTypeID() == BATTLEGROUND_AV)
+                loot->FillLoot(1, LootTemplates_Creature, this);
             // It may need a better formula
             // Now it works like this: lvl10: ~6copper, lvl70: ~9silver
@@ -7665,79 +7678,84 @@
             break;
         case 2597:                                          // AV
-            data << uint32(0x7ae) << uint32(0x1);           // 7
-            data << uint32(0x532) << uint32(0x1);           // 8
-            data << uint32(0x531) << uint32(0x0);           // 9
-            data << uint32(0x52e) << uint32(0x0);           // 10
-            data << uint32(0x571) << uint32(0x0);           // 11
-            data << uint32(0x570) << uint32(0x0);           // 12
-            data << uint32(0x567) << uint32(0x1);           // 13
-            data << uint32(0x566) << uint32(0x1);           // 14
-            data << uint32(0x550) << uint32(0x1);           // 15
-            data << uint32(0x544) << uint32(0x0);           // 16
-            data << uint32(0x536) << uint32(0x0);           // 17
-            data << uint32(0x535) << uint32(0x1);           // 18
-            data << uint32(0x518) << uint32(0x0);           // 19
-            data << uint32(0x517) << uint32(0x0);           // 20
-            data << uint32(0x574) << uint32(0x0);           // 21
-            data << uint32(0x573) << uint32(0x0);           // 22
-            data << uint32(0x572) << uint32(0x0);           // 23
-            data << uint32(0x56f) << uint32(0x0);           // 24
-            data << uint32(0x56e) << uint32(0x0);           // 25
-            data << uint32(0x56d) << uint32(0x0);           // 26
-            data << uint32(0x56c) << uint32(0x0);           // 27
-            data << uint32(0x56b) << uint32(0x0);           // 28
-            data << uint32(0x56a) << uint32(0x1);           // 29
-            data << uint32(0x569) << uint32(0x1);           // 30
-            data << uint32(0x568) << uint32(0x1);           // 13
-            data << uint32(0x565) << uint32(0x0);           // 32
-            data << uint32(0x564) << uint32(0x0);           // 33
-            data << uint32(0x563) << uint32(0x0);           // 34
-            data << uint32(0x562) << uint32(0x0);           // 35
-            data << uint32(0x561) << uint32(0x0);           // 36
-            data << uint32(0x560) << uint32(0x0);           // 37
-            data << uint32(0x55f) << uint32(0x0);           // 38
-            data << uint32(0x55e) << uint32(0x0);           // 39
-            data << uint32(0x55d) << uint32(0x0);           // 40
-            data << uint32(0x3c6) << uint32(0x4);           // 41
-            data << uint32(0x3c4) << uint32(0x6);           // 42
-            data << uint32(0x3c2) << uint32(0x4);           // 43
-            data << uint32(0x516) << uint32(0x1);           // 44
-            data << uint32(0x515) << uint32(0x0);           // 45
-            data << uint32(0x3b6) << uint32(0x6);           // 46
-            data << uint32(0x55c) << uint32(0x0);           // 47
-            data << uint32(0x55b) << uint32(0x0);           // 48
-            data << uint32(0x55a) << uint32(0x0);           // 49
-            data << uint32(0x559) << uint32(0x0);           // 50
-            data << uint32(0x558) << uint32(0x0);           // 51
-            data << uint32(0x557) << uint32(0x0);           // 52
-            data << uint32(0x556) << uint32(0x0);           // 53
-            data << uint32(0x555) << uint32(0x0);           // 54
-            data << uint32(0x554) << uint32(0x1);           // 55
-            data << uint32(0x553) << uint32(0x1);           // 56
-            data << uint32(0x552) << uint32(0x1);           // 57
-            data << uint32(0x551) << uint32(0x1);           // 58
-            data << uint32(0x54f) << uint32(0x0);           // 59
-            data << uint32(0x54e) << uint32(0x0);           // 60
-            data << uint32(0x54d) << uint32(0x1);           // 61
-            data << uint32(0x54c) << uint32(0x0);           // 62
-            data << uint32(0x54b) << uint32(0x0);           // 63
-            data << uint32(0x545) << uint32(0x0);           // 64
-            data << uint32(0x543) << uint32(0x1);           // 65
-            data << uint32(0x542) << uint32(0x0);           // 66
-            data << uint32(0x540) << uint32(0x0);           // 67
-            data << uint32(0x53f) << uint32(0x0);           // 68
-            data << uint32(0x53e) << uint32(0x0);           // 69
-            data << uint32(0x53d) << uint32(0x0);           // 70
-            data << uint32(0x53c) << uint32(0x0);           // 71
-            data << uint32(0x53b) << uint32(0x0);           // 72
-            data << uint32(0x53a) << uint32(0x1);           // 73
-            data << uint32(0x539) << uint32(0x0);           // 74
-            data << uint32(0x538) << uint32(0x0);           // 75
-            data << uint32(0x537) << uint32(0x0);           // 76
-            data << uint32(0x534) << uint32(0x0);           // 77
-            data << uint32(0x533) << uint32(0x0);           // 78
-            data << uint32(0x530) << uint32(0x0);           // 79
-            data << uint32(0x52f) << uint32(0x0);           // 80
-            data << uint32(0x52d) << uint32(0x1);           // 81
+            if (bg && bg->GetTypeID() == BATTLEGROUND_AV)
+                bg->FillInitialWorldStates(data);
+            else
+            {
+                data << uint32(0x7ae) << uint32(0x1);           // 7 snowfall n
+                data << uint32(0x532) << uint32(0x1);           // 8 frostwolfhut hc
+                data << uint32(0x531) << uint32(0x0);           // 9 frostwolfhut ac
+                data << uint32(0x52e) << uint32(0x0);           // 10 stormpike firstaid a_a
+                data << uint32(0x571) << uint32(0x0);           // 11 east frostwolf tower horde assaulted -unused
+                data << uint32(0x570) << uint32(0x0);           // 12 west frostwolf tower horde assaulted - unused
+                data << uint32(0x567) << uint32(0x1);           // 13 frostwolfe c
+                data << uint32(0x566) << uint32(0x1);           // 14 frostwolfw c
+                data << uint32(0x550) << uint32(0x1);           // 15 irondeep (N) ally
+                data << uint32(0x544) << uint32(0x0);           // 16 ice grave a_a
+                data << uint32(0x536) << uint32(0x0);           // 17 stormpike grave h_c
+                data << uint32(0x535) << uint32(0x1);           // 18 stormpike grave a_c
+                data << uint32(0x518) << uint32(0x0);           // 19 stoneheart grave a_a
+                data << uint32(0x517) << uint32(0x0);           // 20 stoneheart grave h_a
+                data << uint32(0x574) << uint32(0x0);           // 21 1396 unk
+                data << uint32(0x573) << uint32(0x0);           // 22 iceblood tower horde assaulted -unused
+                data << uint32(0x572) << uint32(0x0);           // 23 towerpoint horde assaulted - unused
+                data << uint32(0x56f) << uint32(0x0);           // 24 1391 unk
+                data << uint32(0x56e) << uint32(0x0);           // 25 iceblood a
+                data << uint32(0x56d) << uint32(0x0);           // 26 towerp a
+                data << uint32(0x56c) << uint32(0x0);           // 27 frostwolfe a
+                data << uint32(0x56b) << uint32(0x0);           // 28 froswolfw a
+                data << uint32(0x56a) << uint32(0x1);           // 29 1386 unk
+                data << uint32(0x569) << uint32(0x1);           // 30 iceblood c
+                data << uint32(0x568) << uint32(0x1);           // 31 towerp c
+                data << uint32(0x565) << uint32(0x0);           // 32 stoneh tower a
+                data << uint32(0x564) << uint32(0x0);           // 33 icewing tower a
+                data << uint32(0x563) << uint32(0x0);           // 34 dunn a
+                data << uint32(0x562) << uint32(0x0);           // 35 duns a
+                data << uint32(0x561) << uint32(0x0);           // 36 stoneheart bunker alliance assaulted - unused
+                data << uint32(0x560) << uint32(0x0);           // 37 icewing bunker alliance assaulted - unused
+                data << uint32(0x55f) << uint32(0x0);           // 38 dunbaldar south alliance assaulted - unused
+                data << uint32(0x55e) << uint32(0x0);           // 39 dunbaldar north alliance assaulted - unused
+                data << uint32(0x55d) << uint32(0x0);           // 40 stone tower d
+                data << uint32(0x3c6) << uint32(0x0);           // 41 966 unk
+                data << uint32(0x3c4) << uint32(0x0);           // 42 964 unk
+                data << uint32(0x3c2) << uint32(0x0);           // 43 962 unk
+                data << uint32(0x516) << uint32(0x1);           // 44 stoneheart grave a_c
+                data << uint32(0x515) << uint32(0x0);           // 45 stonheart grave h_c
+                data << uint32(0x3b6) << uint32(0x0);           // 46 950 unk
+                data << uint32(0x55c) << uint32(0x0);           // 47 icewing tower d
+                data << uint32(0x55b) << uint32(0x0);           // 48 dunn d
+                data << uint32(0x55a) << uint32(0x0);           // 49 duns d
+                data << uint32(0x559) << uint32(0x0);           // 50 1369 unk
+                data << uint32(0x558) << uint32(0x0);           // 51 iceblood d
+                data << uint32(0x557) << uint32(0x0);           // 52 towerp d
+                data << uint32(0x556) << uint32(0x0);           // 53 frostwolfe d
+                data << uint32(0x555) << uint32(0x0);           // 54 frostwolfw d
+                data << uint32(0x554) << uint32(0x1);           // 55 stoneh tower c
+                data << uint32(0x553) << uint32(0x1);           // 56 icewing tower c
+                data << uint32(0x552) << uint32(0x1);           // 57 dunn c
+                data << uint32(0x551) << uint32(0x1);           // 58 duns c
+                data << uint32(0x54f) << uint32(0x0);           // 59 irondeep (N) horde
+                data << uint32(0x54e) << uint32(0x0);           // 60 irondeep (N) ally
+                data << uint32(0x54d) << uint32(0x1);           // 61 mine (S) neutral
+                data << uint32(0x54c) << uint32(0x0);           // 62 mine (S) horde
+                data << uint32(0x54b) << uint32(0x0);           // 63 mine (S) ally
+                data << uint32(0x545) << uint32(0x0);           // 64 iceblood h_a
+                data << uint32(0x543) << uint32(0x1);           // 65 iceblod h_c
+                data << uint32(0x542) << uint32(0x0);           // 66 iceblood a_c
+                data << uint32(0x540) << uint32(0x0);           // 67 snowfall h_a
+                data << uint32(0x53f) << uint32(0x0);           // 68 snowfall a_a
+                data << uint32(0x53e) << uint32(0x0);           // 69 snowfall h_c
+                data << uint32(0x53d) << uint32(0x0);           // 70 snowfall a_c
+                data << uint32(0x53c) << uint32(0x0);           // 71 frostwolf g h_a
+                data << uint32(0x53b) << uint32(0x0);           // 72 frostwolf g a_a
+                data << uint32(0x53a) << uint32(0x1);           // 73 frostwolf g h_c
+                data << uint32(0x539) << uint32(0x0);           // 74 frostwolf g a_c
+                data << uint32(0x538) << uint32(0x0);           // 75 stormpike grave h_a
+                data << uint32(0x537) << uint32(0x0);           // 76 stormpike grave a_a
+                data << uint32(0x534) << uint32(0x0);           // 77 frostwolf hut h_a
+                data << uint32(0x533) << uint32(0x0);           // 78 frostwolf hut a_a
+                data << uint32(0x530) << uint32(0x0);           // 79 stormpike first aid h_a
+                data << uint32(0x52f) << uint32(0x0);           // 80 stormpike first aid h_c
+                data << uint32(0x52d) << uint32(0x1);           // 81 stormpike first aid a_c
+            }
             break;
         case 3277:                                          // WS
@@ -13351,5 +13369,6 @@
             // hide quest if player is in raid-group and quest is no raid quest
             if(GetGroup() && GetGroup()->isRaidGroup() && qinfo->GetType() != QUEST_TYPE_RAID)
-                continue;
+                if(!InBattleGround()) //there are two ways.. we can make every bg-quest a raidquest, or add this code here.. i don't know if this can be exploited by other quests, but i think all other quests depend on a specific area.. but keep this in mind, if something strange happens later
+                    continue;
 
             // There should be no mixed ReqItem/ReqSource drop
@@ -18046,4 +18065,5 @@
 }
 
+//TODO make this more generic - current implementation is wrong
 uint32 Player::GetBattleGroundQueueIdFromLevel() const
 {
@@ -18937,6 +18957,6 @@
                 target->AddThreat(this, 1000000.0f);
         }
-        // Disable the assigned possessed AI
-        ((Creature*)target)->DisablePossessedAI();
+        // Delete the assigned possessed AI
+        ((Creature*)target)->DeletePossessedAI();
     }
 }
Index: /trunk/src/game/Spell.cpp
===================================================================
--- /trunk/src/game/Spell.cpp (revision 279)
+++ /trunk/src/game/Spell.cpp (revision 283)
@@ -1534,5 +1534,4 @@
         case TARGET_SCRIPT:
         case TARGET_SCRIPT_COORDINATES:
-        case TARGET_UNIT_AREA_SCRIPT:
         {
             SpellScriptTarget::const_iterator lower = spellmgr.GetBeginSpellScriptTarget(m_spellInfo->Id);
@@ -3867,5 +3866,4 @@
                     case SUMMON_TYPE_POSESSED:
                     case SUMMON_TYPE_POSESSED2:
-                    case SUMMON_TYPE_POSESSED3:
                     case SUMMON_TYPE_DEMON:
                     case SUMMON_TYPE_SUMMON:
Index: /trunk/src/game/PossessedAI.cpp
===================================================================
--- /trunk/src/game/PossessedAI.cpp (revision 277)
+++ /trunk/src/game/PossessedAI.cpp (revision 283)
@@ -25,5 +25,5 @@
 void PossessedAI::AttackStart(Unit *u)
 {
-    if( !u || i_pet.GetCharmer()->HasAuraType(SPELL_AURA_MOD_PACIFY))
+    if( !u )
         return;
 
@@ -96,5 +96,5 @@
             return;
         }
-        else if(i_pet.IsWithinCombatDist(i_pet.getVictim(), ATTACK_DISTANCE) && i_pet.isAttackReady() && !i_pet.GetCharmer()->HasAuraType(SPELL_AURA_MOD_PACIFY))
+        else if(i_pet.IsWithinCombatDist(i_pet.getVictim(), ATTACK_DISTANCE) && i_pet.isAttackReady())
         {
             i_pet.AttackerStateUpdate(i_pet.getVictim());
Index: /trunk/src/game/BattleGroundAV.h
===================================================================
--- /trunk/src/game/BattleGroundAV.h (revision 102)
+++ /trunk/src/game/BattleGroundAV.h (revision 283)
@@ -24,4 +24,1460 @@
 class BattleGround;
 
+#define LANG_BG_AV_A_CAPTAIN_BUFF       "Begone. Uncouth scum! The Alliance shall prevail in Alterac Valley!"
+#define LANG_BG_AV_H_CAPTAIN_BUFF       "Now is the time to attack! For the Horde!"
+#define LANG_BG_AV_S_MINE_BOSS_CLAIMS   "Snivvle is here! Snivvle claims the Coldtooth Mine!"
+
+#define BG_AV_CAPTIME                    240000  //4:00
+#define BG_AV_SNOWFALL_FIRSTCAP          300000  //5:00 but i also have seen 4:05
+
+#define BG_AV_SCORE_INITIAL_POINTS       600
+#define SEND_MSG_NEAR_LOSE               120
+
+#define BG_AV_KILL_BOSS                 4
+#define BG_AV_REP_BOSS                  350
+
+#define BG_AV_KILL_CAPTAIN              3
+#define BG_AV_REP_CAPTAIN               125
+#define BG_AV_RES_CAPTAIN               100
+
+#define BG_AV_KILL_TOWER                3
+#define BG_AV_REP_TOWER                 12
+#define BG_AV_RES_TOWER                 75
+
+#define BG_AV_GET_COMMANDER            1 //for a safely returned wingcommander
+//bonushonor at the end
+#define BG_AV_KILL_SURVIVING_TOWER      2
+#define BG_AV_REP_SURVIVING_TOWER       12
+
+#define BG_AV_KILL_SURVIVING_CAPTAIN    2
+#define BG_AV_REP_SURVIVING_CAPTAIN     125
+
+enum BG_AV_Sounds
+{ //TODO: get out if there comes a sound when neutral team captures mine
+
+/*
+8212:
+    alliance grave assault
+    alliance tower assault
+    drek "mlanzenabschaum! In meiner Burg?! Toetet sie all" - nicht immer der sound
+8333:
+    galv "sterbt fuer euch ist kein platz hier"
+
+8332:
+    bal "Verschwinde, dreckiger Abschaum! Die Allianz wird im Alteractal "
+8174:
+    horde tower assault
+    horde grave assault
+    van "es Sturmlanzenklans, euer General wird angegriffen! Ich fordere Unterst"
+8173:
+    ally grave capture/defend
+    tower destroy
+    mine capture
+    ally wins
+8192:
+    ally tower destroy(only iceblood - found a bug^^)
+    ally tower  defend
+    horde tower defend
+8213
+horde:
+    grave defend/capture
+    tower destroy
+    mine capture
+    horde wins
+    */
+
+    AV_SOUND_NEAR_VICTORY                   = 8456, //not confirmed yet
+
+    AV_SOUND_ALLIANCE_ASSAULTS              = 8212, //tower,grave + enemy boss if someone tries to attack him
+    AV_SOUND_HORDE_ASSAULTS                 = 8174,
+    AV_SOUND_ALLIANCE_GOOD                  = 8173, //if something good happens for the team:  wins(maybe only through killing the boss), captures mine or grave, destroys tower and defends grave
+    AV_SOUND_HORDE_GOOD                     = 8213,
+    AV_SOUND_BOTH_TOWER_DEFEND              = 8192,
+
+    AV_SOUND_ALLIANCE_CAPTAIN               = 8232, //gets called when someone attacks them and at the beginning after 3min+rand(x)*10sec (maybe buff)
+    AV_SOUND_HORDE_CAPTAIN                  = 8333,
+
+
+};
+
+enum BG_AV_OTHER_VALUES
+{
+    AV_STATICCPLACE_MAX        = 123,
+    AV_NORTH_MINE              = 0,
+    AV_SOUTH_MINE              = 1,
+    AV_MINE_TICK_TIMER         = 45000,
+    AV_MINE_RECLAIM_TIMER      = 1200000, //TODO: get the right value.. this is currently 20 minutes
+    AV_NEUTRAL_TEAM            = 0 //this is the neutral owner of snowfall
+};
+enum BG_AV_ObjectIds
+{
+    //cause the mangos-system is a bit different, we don't use the right go-ids for every node.. if we want to be 100% like another big server, we must take one object for every node
+    //snowfall 4flags as eyecandy 179424 (alliance neutral)
+    //Banners - stolen from battleground_AB.h ;-)
+    BG_AV_OBJECTID_BANNER_A             = 178925, // can only be used by horde
+    BG_AV_OBJECTID_BANNER_H             = 178943, // can only be used by alliance
+    BG_AV_OBJECTID_BANNER_CONT_A        = 178940, // can only be used by horde
+    BG_AV_OBJECTID_BANNER_CONT_H        = 179435, // can only be used by alliance
+
+    BG_AV_OBJECTID_BANNER_A_B           = 178365,
+    BG_AV_OBJECTID_BANNER_H_B           = 178364,
+    BG_AV_OBJECTID_BANNER_CONT_A_B      = 179286,
+    BG_AV_OBJECTID_BANNER_CONT_H_B      = 179287,
+    BG_AV_OBJECTID_BANNER_SNOWFALL_N    = 180418,
+
+    //snowfall eyecandy banner:
+    BG_AV_OBJECTID_SNOWFALL_CANDY_A     = 179044,
+    BG_AV_OBJECTID_SNOWFALL_CANDY_PA    = 179424,
+    BG_AV_OBJECTID_SNOWFALL_CANDY_H     = 179064,
+    BG_AV_OBJECTID_SNOWFALL_CANDY_PH    = 179425,
+
+    //banners on top of towers:
+    BG_AV_OBJECTID_TOWER_BANNER_A  = 178927, //[PH] Alliance A1 Tower Banner BIG
+    BG_AV_OBJECTID_TOWER_BANNER_H  = 178955, //[PH] Horde H1 Tower Banner BIG
+    BG_AV_OBJECTID_TOWER_BANNER_PA = 179446, //[PH] Alliance H1 Tower Pre-Banner BIG
+    BG_AV_OBJECTID_TOWER_BANNER_PH = 179436, //[PH] Horde A1 Tower Pre-Banner BIG
+
+    //Auras
+    BG_AV_OBJECTID_AURA_A               = 180421,
+    BG_AV_OBJECTID_AURA_H               = 180422,
+    BG_AV_OBJECTID_AURA_N               = 180423,
+    BG_AV_OBJECTID_AURA_A_S             = 180100,
+    BG_AV_OBJECTID_AURA_H_S             = 180101,
+    BG_AV_OBJECTID_AURA_N_S             = 180102,
+
+    BG_AV_OBJECTID_GATE_A               = 180424,
+    BG_AV_OBJECTID_GATE_H               = 180424,
+
+    //mine supplies
+    BG_AV_OBJECTID_MINE_N        = 178785,
+    BG_AV_OBJECTID_MINE_S       = 178784,
+
+    BG_AV_OBJECTID_FIRE                 = 179065,
+    BG_AV_OBJECTID_SMOKE                 = 179066
+};
+
+enum BG_AV_Nodes
+{
+    BG_AV_NODES_FIRSTAID_STATION        = 0,
+    BG_AV_NODES_STORMPIKE_GRAVE         = 1,
+    BG_AV_NODES_STONEHEART_GRAVE        = 2,
+    BG_AV_NODES_SNOWFALL_GRAVE          = 3,
+    BG_AV_NODES_ICEBLOOD_GRAVE          = 4,
+    BG_AV_NODES_FROSTWOLF_GRAVE         = 5,
+    BG_AV_NODES_FROSTWOLF_HUT           = 6,
+    BG_AV_NODES_DUNBALDAR_SOUTH         = 7,
+    BG_AV_NODES_DUNBALDAR_NORTH         = 8,
+    BG_AV_NODES_ICEWING_BUNKER          = 9,
+    BG_AV_NODES_STONEHEART_BUNKER       = 10,
+    BG_AV_NODES_ICEBLOOD_TOWER          = 11,
+    BG_AV_NODES_TOWER_POINT             = 12,
+    BG_AV_NODES_FROSTWOLF_ETOWER        = 13,
+    BG_AV_NODES_FROSTWOLF_WTOWER        = 14,
+
+    BG_AV_NODES_MAX                     = 15
+};
+
+enum BG_AV_ObjectTypes
+{
+    BG_AV_OBJECT_FLAG_A_FIRSTAID_STATION    = 0,
+    BG_AV_OBJECT_FLAG_A_STORMPIKE_GRAVE     = 1,
+    BG_AV_OBJECT_FLAG_A_STONEHEART_GRAVE    = 2,
+    BG_AV_OBJECT_FLAG_A_SNOWFALL_GRAVE      = 3,
+    BG_AV_OBJECT_FLAG_A_ICEBLOOD_GRAVE      = 4,
+    BG_AV_OBJECT_FLAG_A_FROSTWOLF_GRAVE     = 5,
+    BG_AV_OBJECT_FLAG_A_FROSTWOLF_HUT       = 6,
+    BG_AV_OBJECT_FLAG_A_DUNBALDAR_SOUTH     = 7,
+    BG_AV_OBJECT_FLAG_A_DUNBALDAR_NORTH     = 8,
+    BG_AV_OBJECT_FLAG_A_ICEWING_BUNKER      = 9,
+    BG_AV_OBJECT_FLAG_A_STONEHEART_BUNKER   = 10,
+
+    BG_AV_OBJECT_FLAG_C_A_FIRSTAID_STATION    = 11,
+    BG_AV_OBJECT_FLAG_C_A_STORMPIKE_GRAVE     = 12,
+    BG_AV_OBJECT_FLAG_C_A_STONEHEART_GRAVE    = 13,
+    BG_AV_OBJECT_FLAG_C_A_SNOWFALL_GRAVE      = 14,
+    BG_AV_OBJECT_FLAG_C_A_ICEBLOOD_GRAVE      = 15,
+    BG_AV_OBJECT_FLAG_C_A_FROSTWOLF_GRAVE     = 16,
+    BG_AV_OBJECT_FLAG_C_A_FROSTWOLF_HUT       = 17,
+    BG_AV_OBJECT_FLAG_C_A_ICEBLOOD_TOWER      = 18,
+    BG_AV_OBJECT_FLAG_C_A_TOWER_POINT         = 19,
+    BG_AV_OBJECT_FLAG_C_A_FROSTWOLF_ETOWER    = 20,
+    BG_AV_OBJECT_FLAG_C_A_FROSTWOLF_WTOWER    = 21,
+
+    BG_AV_OBJECT_FLAG_C_H_FIRSTAID_STATION    = 22,
+    BG_AV_OBJECT_FLAG_C_H_STORMPIKE_GRAVE     = 23,
+    BG_AV_OBJECT_FLAG_C_H_STONEHEART_GRAVE    = 24,
+    BG_AV_OBJECT_FLAG_C_H_SNOWFALL_GRAVE      = 25,
+    BG_AV_OBJECT_FLAG_C_H_ICEBLOOD_GRAVE      = 26,
+    BG_AV_OBJECT_FLAG_C_H_FROSTWOLF_GRAVE     = 27,
+    BG_AV_OBJECT_FLAG_C_H_FROSTWOLF_HUT       = 28,
+    BG_AV_OBJECT_FLAG_C_H_DUNBALDAR_SOUTH     = 29,
+    BG_AV_OBJECT_FLAG_C_H_DUNBALDAR_NORTH     = 30,
+    BG_AV_OBJECT_FLAG_C_H_ICEWING_BUNKER      = 31,
+    BG_AV_OBJECT_FLAG_C_H_STONEHEART_BUNKER   = 32,
+
+    BG_AV_OBJECT_FLAG_H_FIRSTAID_STATION    = 33,
+    BG_AV_OBJECT_FLAG_H_STORMPIKE_GRAVE     = 34,
+    BG_AV_OBJECT_FLAG_H_STONEHEART_GRAVE    = 35,
+    BG_AV_OBJECT_FLAG_H_SNOWFALL_GRAVE      = 36,
+    BG_AV_OBJECT_FLAG_H_ICEBLOOD_GRAVE      = 37,
+    BG_AV_OBJECT_FLAG_H_FROSTWOLF_GRAVE     = 38,
+    BG_AV_OBJECT_FLAG_H_FROSTWOLF_HUT       = 39,
+    BG_AV_OBJECT_FLAG_H_ICEBLOOD_TOWER      = 40,
+    BG_AV_OBJECT_FLAG_H_TOWER_POINT         = 41,
+    BG_AV_OBJECT_FLAG_H_FROSTWOLF_ETOWER    = 42,
+    BG_AV_OBJECT_FLAG_H_FROSTWOLF_WTOWER    = 43,
+
+    BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE      = 44,
+
+    BG_AV_OBJECT_DOOR_H                     = 45,
+    BG_AV_OBJECT_DOOR_A                     = 46,
+//auras for graveyards (3auras per graveyard neutral,alliance,horde)
+    BG_AV_OBJECT_AURA_N_FIRSTAID_STATION    = 47,
+    BG_AV_OBJECT_AURA_A_FIRSTAID_STATION    = 48,
+    BG_AV_OBJECT_AURA_H_FIRSTAID_STATION    = 49,
+    BG_AV_OBJECT_AURA_N_STORMPIKE_GRAVE     = 50,
+    BG_AV_OBJECT_AURA_A_STORMPIKE_GRAVE     = 51,
+    BG_AV_OBJECT_AURA_H_STORMPIKE_GRAVE     = 52,
+    BG_AV_OBJECT_AURA_N_STONEHEART_GRAVE    = 53,
+    BG_AV_OBJECT_AURA_A_STONEHEART_GRAVE    = 54,
+    BG_AV_OBJECT_AURA_H_STONEHEART_GRAVE    = 55,
+    BG_AV_OBJECT_AURA_N_SNOWFALL_GRAVE      = 56,
+    BG_AV_OBJECT_AURA_A_SNOWFALL_GRAVE      = 57,
+    BG_AV_OBJECT_AURA_H_SNOWFALL_GRAVE      = 58,
+    BG_AV_OBJECT_AURA_N_ICEBLOOD_GRAVE      = 59,
+    BG_AV_OBJECT_AURA_A_ICEBLOOD_GRAVE      = 60,
+    BG_AV_OBJECT_AURA_H_ICEBLOOD_GRAVE      = 61,
+    BG_AV_OBJECT_AURA_N_FROSTWOLF_GRAVE     = 62,
+    BG_AV_OBJECT_AURA_A_FROSTWOLF_GRAVE     = 63,
+    BG_AV_OBJECT_AURA_H_FROSTWOLF_GRAVE     = 64,
+    BG_AV_OBJECT_AURA_N_FROSTWOLF_HUT       = 65,
+    BG_AV_OBJECT_AURA_A_FROSTWOLF_HUT       = 66,
+    BG_AV_OBJECT_AURA_H_FROSTWOLF_HUT       = 67,
+
+    //big flags on top of towers 2 flags on each (contested,(alliance | horde)) + 2 auras
+    BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH     = 67,
+    BG_AV_OBJECT_TFLAG_H_DUNBALDAR_SOUTH     = 68,
+    BG_AV_OBJECT_TFLAG_A_DUNBALDAR_NORTH     = 69,
+    BG_AV_OBJECT_TFLAG_H_DUNBALDAR_NORTH     = 70,
+    BG_AV_OBJECT_TFLAG_A_ICEWING_BUNKER      = 71,
+    BG_AV_OBJECT_TFLAG_H_ICEWING_BUNKER      = 72,
+    BG_AV_OBJECT_TFLAG_A_STONEHEART_BUNKER   = 73,
+    BG_AV_OBJECT_TFLAG_H_STONEHEART_BUNKER   = 74,
+    BG_AV_OBJECT_TFLAG_A_ICEBLOOD_TOWER      = 75,
+    BG_AV_OBJECT_TFLAG_H_ICEBLOOD_TOWER      = 76,
+    BG_AV_OBJECT_TFLAG_A_TOWER_POINT         = 77,
+    BG_AV_OBJECT_TFLAG_H_TOWER_POINT         = 78,
+    BG_AV_OBJECT_TFLAG_A_FROSTWOLF_ETOWER    = 79,
+    BG_AV_OBJECT_TFLAG_H_FROSTWOLF_ETOWER    = 80,
+    BG_AV_OBJECT_TFLAG_A_FROSTWOLF_WTOWER    = 81,
+    BG_AV_OBJECT_TFLAG_H_FROSTWOLF_WTOWER    = 82,
+    BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH     = 83,
+    BG_AV_OBJECT_TAURA_H_DUNBALDAR_SOUTH     = 84,
+    BG_AV_OBJECT_TAURA_A_DUNBALDAR_NORTH     = 85,
+    BG_AV_OBJECT_TAURA_H_DUNBALDAR_NORTH     = 86,
+    BG_AV_OBJECT_TAURA_A_ICEWING_BUNKER      = 87,
+    BG_AV_OBJECT_TAURA_H_ICEWING_BUNKER      = 88,
+    BG_AV_OBJECT_TAURA_A_STONEHEART_BUNKER   = 89,
+    BG_AV_OBJECT_TAURA_H_STONEHEART_BUNKER   = 90,
+    BG_AV_OBJECT_TAURA_A_ICEBLOOD_TOWER      = 91,
+    BG_AV_OBJECT_TAURA_H_ICEBLOOD_TOWER      = 92,
+    BG_AV_OBJECT_TAURA_A_TOWER_POINT         = 93,
+    BG_AV_OBJECT_TAURA_H_TOWER_POINT         = 94,
+    BG_AV_OBJECT_TAURA_A_FROSTWOLF_ETOWER    = 95,
+    BG_AV_OBJECT_TAURA_H_FROSTWOLF_ETOWER    = 96,
+    BG_AV_OBJECT_TAURA_A_FROSTWOLF_WTOWER    = 97,
+    BG_AV_OBJECT_TAURA_H_FROSTWOLF_WTOWER    = 98,
+
+    BG_AV_OBJECT_BURN_DUNBALDAR_SOUTH        = 99,
+    BG_AV_OBJECT_BURN_DUNBALDAR_NORTH        = 109,
+    BG_AV_OBJECT_BURN_ICEWING_BUNKER         = 119,
+    BG_AV_OBJECT_BURN_STONEHEART_BUNKER      = 129,
+    BG_AV_OBJECT_BURN_ICEBLOOD_TOWER         = 139,
+    BG_AV_OBJECT_BURN_TOWER_POINT            = 149,
+    BG_AV_OBJECT_BURN_FROSTWOLF_ETWOER       = 159,
+    BG_AV_OBJECT_BURN_FROSTWOLF_WTOWER       = 169,
+    BG_AV_OBJECT_BURN_BUILDING_ALLIANCE      = 179,
+    BG_AV_OBJECT_BURN_BUILDING_HORDE         = 189,
+    BG_AV_OBJECT_SNOW_EYECANDY_A             = 199,
+    BG_AV_OBJECT_SNOW_EYECANDY_PA            = 203,
+    BG_AV_OBJECT_SNOW_EYECANDY_H             = 207,
+    BG_AV_OBJECT_SNOW_EYECANDY_PH            = 211,
+    BG_AV_OBJECT_MINE_SUPPLY_N_MIN           = 215,
+    BG_AV_OBJECT_MINE_SUPPLY_N_MAX           = 224,
+    BG_AV_OBJECT_MINE_SUPPLY_S_MIN           = 225,
+    BG_AV_OBJECT_MINE_SUPPLY_S_MAX           = 236,
+
+    BG_AV_OBJECT_MAX                          = 237
+};
+
+
+
+enum BG_AV_OBJECTS
+{
+    AV_OPLACE_FIRSTAID_STATION          = 0,
+    AV_OPLACE_STORMPIKE_GRAVE         = 1,
+    AV_OPLACE_STONEHEART_GRAVE        = 2,
+    AV_OPLACE_SNOWFALL_GRAVE          = 3,
+    AV_OPLACE_ICEBLOOD_GRAVE          = 4,
+    AV_OPLACE_FROSTWOLF_GRAVE         = 5,
+    AV_OPLACE_FROSTWOLF_HUT           = 6,
+    AV_OPLACE_DUNBALDAR_SOUTH         = 7,
+    AV_OPLACE_DUNBALDAR_NORTH         = 8,
+    AV_OPLACE_ICEWING_BUNKER          = 9,
+    AV_OPLACE_STONEHEART_BUNKER       = 10,
+    AV_OPLACE_ICEBLOOD_TOWER          = 11,
+    AV_OPLACE_TOWER_POINT             = 12,
+    AV_OPLACE_FROSTWOLF_ETOWER        = 13,
+    AV_OPLACE_FROSTWOLF_WTOWER        = 14,
+    AV_OPLACE_BIGBANNER_DUNBALDAR_SOUTH         = 15,
+    AV_OPLACE_BIGBANNER_DUNBALDAR_NORTH         = 16,
+    AV_OPLACE_BIGBANNER_ICEWING_BUNKER          = 17,
+    AV_OPLACE_BIGBANNER_STONEHEART_BUNKER       = 18,
+    AV_OPLACE_BIGBANNER_ICEBLOOD_TOWER          = 19,
+    AV_OPLACE_BIGBANNER_TOWER_POINT             = 20,
+    AV_OPLACE_BIGBANNER_FROSTWOLF_ETOWER        = 21,
+    AV_OPLACE_BIGBANNER_FROSTWOLF_WTOWER        = 22,
+
+    AV_OPLACE_BURN_DUNBALDAR_SOUTH         = 23,
+    AV_OPLACE_BURN_DUNBALDAR_NORTH         = 33,
+    AV_OPLACE_BURN_ICEWING_BUNKER          = 43,
+    AV_OPLACE_BURN_STONEHEART_BUNKER       = 53,
+    AV_OPLACE_BURN_ICEBLOOD_TOWER          = 63,
+    AV_OPLACE_BURN_TOWER_POINT             = 73,
+    AV_OPLACE_BURN_FROSTWOLF_ETOWER        = 83,
+    AV_OPLACE_BURN_FROSTWOLF_WTOWER        = 93,
+    AV_OPLACE_BURN_BUILDING_A        = 103,
+    AV_OPLACE_BURN_BUILDING_H        = 113,
+    AV_OPLACE_SNOW_1                      = 123,
+    AV_OPLACE_SNOW_2                      = 124,
+    AV_OPLACE_SNOW_3                      = 125,
+    AV_OPLACE_SNOW_4                      = 126,
+    AV_OPLACE_MINE_SUPPLY_N_MIN           = 127,
+    AV_OPLACE_MINE_SUPPLY_N_MAX           = 136,
+    AV_OPLACE_MINE_SUPPLY_S_MIN           = 137,
+    AV_OPLACE_MINE_SUPPLY_S_MAX           = 148,
+
+    AV_OPLACE_MAX                         = 149
+};
+const float BG_AV_ObjectPos[AV_OPLACE_MAX][4] = {
+    {638.592f,-32.422f,46.0608f,-1.62316f },//firstaid station
+    {669.007f,-294.078f,30.2909f,2.77507f },//stormpike
+    {77.8013f,-404.7f,46.7549f,-0.872665f },//stone grave
+    {-202.581f,-112.73f,78.4876f,-0.715585f },//snowfall
+    {-611.962f,-396.17f,60.8351f,2.53682f},  //iceblood grave
+    {-1082.45f,-346.823f,54.9219f,-1.53589f },//frostwolf grave
+    {-1402.21f,-307.431f,89.4424f,0.191986f },//frostwolf hut
+    {553.779f,-78.6566f,51.9378f,-1.22173f }, //dunnbaldar south
+    {674.001f,-143.125f,63.6615f,0.994838f }, //dunbaldar north
+    {203.281f,-360.366f,56.3869f,-0.925024f }, //icew
+    {-152.437f,-441.758f,40.3982f,-1.95477f }, //stone
+    {-571.88f,-262.777f,75.0087f,-0.802851f }, //ice tower
+    {-768.907f,-363.71f,90.8949f,1.07991f},  //tower point
+    {-1302.9f,-316.981f,113.867f,2.00713f }, //frostwolf etower
+    {-1297.5f,-266.767f,114.15f,3.31044f},   //frostwolf wtower
+    //bigbanner:
+    {555.848f,-84.4151f,64.4397f,3.12414f }, //duns
+    {679.339f,-136.468f,73.9626f,-2.16421f }, //dunn
+    {208.973f,-365.971f,66.7409f,-0.244346f }, //icew
+    {-155.832f,-449.401f,52.7306f,0.610865f }, //stone
+    {-572.329f,-262.476f,88.6496f,-0.575959f }, //icetower
+    {-768.199f,-363.105f,104.537f,0.10472f }, //towerp
+    {-1302.84f,-316.582f,127.516f,0.122173f }, //etower
+    {-1297.87f,-266.762f,127.796f,0.0698132f }, //wtower
+    //burning auras towers have 9*179065 captain-buildings have 5*179066+5*179065
+    //dunns
+    {562.632f,-88.1815f,61.993f,0.383972f },
+    {562.523f,-74.5028f,37.9474f,-0.0523599f },
+    {558.097f,-70.9842f,52.4876f,0.820305f },
+    {578.167f,-71.8191f,38.1514f,2.72271f },
+    {556.028f,-94.9242f,44.8191f,3.05433f },
+    {572.451f,-94.3655f,37.9443f,-1.72788f },
+    {549.263f,-79.3645f,44.8191f,0.436332f },
+    {543.513f,-94.4006f,52.4819f,0.0349066f },
+    {572.149f,-93.7862f,52.5726f,0.541052f },
+    {582.162f,-81.2375f,37.9216f,0.0872665f },
+    //dunn
+    {664.797f,-143.65f,64.1784f,-0.453786f},
+    {664.505f,-139.452f,49.6696f,-0.0349067f},
+    {676.067f,-124.319f,49.6726f,-1.01229f},
+    {693.004f,-144.025f,64.1755f,2.44346f},
+    {661.175f,-117.691f,49.645f,1.91986f},
+    {684.423f,-146.582f,63.6662f,0.994838f},
+    {682.791f,-127.769f,62.4155f,1.09956f},
+    {674.576f,-147.101f,56.5425f,-1.6057f},
+    {655.719f,-126.673f,49.8138f,2.80998f},
+    {0,0,0,0},
+    //icew
+    {231.503f,-356.688f,42.3704f,0.296706f},
+    {224.989f,-348.175f,42.5607f,1.50098f},
+    {205.782f,-351.335f,56.8998f,1.01229f},
+    {196.605f,-369.187f,56.3914f,2.46091f},
+    {210.619f,-376.938f,49.2677f,2.86234f},
+    {209.647f,-352.632f,42.3959f,-0.698132f},
+    {220.65f,-368.132f,42.3978f,-0.2618f},
+    {224.682f,-374.031f,57.0679f,0.541052f},
+    {200.26f,-359.968f,49.2677f,-2.89725f},
+    {196.619f,-378.016f,56.9131f,1.01229f},
+    //stone
+    {-155.488f,-437.356f,33.2796f,2.60054f},
+    {-163.441f,-454.188f,33.2796f,1.93732f},
+    {-143.977f,-445.148f,26.4097f,-1.8675f},
+    {-135.764f,-464.708f,26.3823f,2.25147f},
+    {-154.076f,-466.929f,41.0636f,-1.8675f},
+    {-149.908f,-460.332f,26.4083f,-2.09439f},
+    {-151.638f,-439.521f,40.3797f,0.436332f},
+    {-131.301f,-454.905f,26.5771f,2.93215f},
+    {-171.291f,-444.684f,40.9211f,2.30383f},
+    {-143.591f,-439.75f,40.9275f,-1.72788f},
+    //iceblood
+    {-572.667f,-267.923f,56.8542f,2.35619f},
+    {-561.021f,-262.689f,68.4589f,1.37881f},
+    {-572.538f,-262.649f,88.6197f,1.8326f},
+    {-574.77f,-251.45f,74.9422f,-1.18682f},
+    {-578.625f,-267.571f,68.4696f,0.506145f},
+    {-571.476f,-257.234f,63.3223f,3.10669f},
+    {-566.035f,-273.907f,52.9582f,-0.890118f},
+    {-580.948f,-259.77f,68.4696f,1.46608f},
+    {-568.318f,-267.1f,75.0008f,1.01229f},
+    {-559.621f,-268.597f,52.8986f,0.0523599f},
+    //towerp
+    {-776.072f,-368.046f,84.3558f,2.63545f},
+    {-777.564f,-368.521f,90.6701f,1.72788f},
+    {-765.461f,-357.711f,90.888f,0.314159f},
+    {-768.763f,-362.735f,104.612f,1.81514f},
+    {-760.356f,-358.896f,84.3558f,2.1293f},
+    {-771.967f,-352.838f,84.3484f,1.74533f},
+    {-773.333f,-364.653f,79.2351f,-1.64061f},
+    {-764.109f,-366.069f,70.0934f,0.383972f},
+    {-767.103f,-350.737f,68.7933f,2.80998f},
+    {-760.115f,-353.845f,68.8633f,1.79769f},
+    //froste
+    {-1304.87f,-304.525f,91.8366f,-0.680679f},
+    {-1301.77f,-310.974f,95.8252f,0.907571f},
+    {-1305.58f,-320.625f,102.166f,-0.558505f},
+    {-1294.27f,-323.468f,113.893f,-1.67552f},
+    {-1302.65f,-317.192f,127.487f,2.30383f},
+    {-1293.89f,-313.478f,107.328f,1.6057f},
+    {-1312.41f,-312.999f,107.328f,1.5708f},
+    {-1311.57f,-308.08f,91.7666f,-1.85005f},
+    {-1314.7f,-322.131f,107.36f,0.645772f},
+    {-1304.6f,-310.754f,113.859f,-0.401426f},
+    //frostw
+    {-1308.24f,-273.26f,92.0514f,-0.139626f},
+    {-1302.26f,-262.858f,95.9269f,0.418879f},
+    {-1297.28f,-267.773f,126.756f,2.23402f},
+    {-1299.08f,-256.89f,114.108f,-2.44346f},
+    {-1303.41f,-268.237f,114.151f,-1.23918f},
+    {-1304.43f,-273.682f,107.612f,0.244346f},
+    {-1309.53f,-265.951f,92.1418f,-2.49582f},
+    {-1295.55f,-263.865f,105.033f,0.925024f},
+    {-1294.71f,-281.466f,107.664f,-1.50098f},
+    {-1289.69f,-259.521f,107.612f,-2.19912f},
+
+    //the two buildings of the captains
+    //alliance
+    {-64.4987f,-289.33f,33.4616f,-2.82743f},
+    {-5.98025f,-326.144f,38.8538f,0},
+    {-2.67893f,-306.998f,33.4165f,0},
+    {-60.25f,-309.232f,50.2408f,-1.46608f},
+    {-48.7941f,-266.533f,47.7916f,2.44346f},
+    {-3.40929f,-306.288f,33.34f,0},
+    {-48.619f,-266.917f,47.8168f,0},
+    {-62.9474f,-286.212f,66.7288f,0},
+    {-5.05132f,-325.323f,38.8536f,0},
+    {-64.2677f,-289.412f,33.469f,0},
+//horde
+    {-524.276f,-199.6f,82.8733f,-1.46608f},
+    {-518.196f,-173.085f,102.43f,0},
+    {-500.732f,-145.358f,88.5337f,2.44346f},
+    {-501.084f,-150.784f,80.8506f,0},
+    {-518.309f,-163.963f,102.521f,2.96706f},
+    {-517.053f,-200.429f,80.759f,0},
+    {-514.361f,-163.864f,104.163f,0},
+    {-568.04f,-188.707f,81.55f,0},
+    {-501.775f,-151.581f,81.2027f,0},
+    {-509.975f,-191.652f,83.2978f,0},
+
+//snowfall eyecandy
+    {-191.153f,-129.868f,78.5595f,-1.25664f },
+    {-201.282f,-134.319f,78.6753f,-0.942478f },
+    {-215.981f,-91.4101f,80.8702f,-1.74533f },
+    {-200.465f,-96.418f,79.7587f,1.36136f },
+    //mine supplies
+    //irondeep
+    {870.899f,-388.434f,61.6406f,-1.22173f},
+    {825.214f,-320.174f,63.712f,-2.82743f},
+    {837.117f,-452.556f,47.2331f,-3.12414f},
+    {869.755f,-448.867f,52.5448f,-0.855212f},
+    {949.877f,-458.198f,56.4874f,0.314159f},
+    {900.35f,-479.024f,58.3553f,0.122173f},
+    {854.449f,-442.255f,50.6589f,0.401426f},
+    {886.685f,-442.358f,54.6962f,-1.22173f},
+    {817.509f,-457.331f,48.4666f,2.07694f},
+    {793.411f,-326.281f,63.1117f,-2.79253f},
+    //coldtooth
+    {-934.212f,-57.3517f,80.277f,-0.0174535f},
+    {-916.281f,-36.8579f,77.0227f,0.122173f},
+    {-902.73f,-103.868f,75.4378f,-1.58825f},
+    {-900.514f,-143.527f,75.9686f,1.8675f},
+    {-862.882f,-0.353299f,72.1526f,-2.51327f},
+    {-854.932f,-85.9184f,68.6056f,-2.04204f},
+    {-851.833f,-118.959f,63.8672f,-0.0698131f},
+    {-849.832f,-20.8421f,70.4672f,-1.81514f},
+    {-844.25f,-60.0374f,72.1031f,-2.19912f},
+    {-820.644f,-136.043f,63.1977f,2.40855f},
+    {-947.642f,-208.807f,77.0101f,1.36136f},
+    {-951.394f,-193.695f,67.634f,0.802851f}
+};
+
+const float BG_AV_DoorPositons[2][4] = {
+    {780.487f, -493.024f, 99.9553f, 3.0976f},   //alliance
+    {-1375.193f, -538.981f, 55.2824f, 0.72178f} //horde
+};
+
+
+//creaturestuff starts here
+//is related to BG_AV_CreaturePos
+enum BG_AV_CreaturePlace
+{
+    AV_CPLACE_SPIRIT_STORM_AID      = 0,
+    AV_CPLACE_SPIRIT_STORM_GRAVE    = 1,
+    AV_CPLACE_SPIRIT_STONE_GRAVE    = 2,
+    AV_CPLACE_SPIRIT_SNOWFALL       = 3,
+    AV_CPLACE_SPIRIT_ICE_GRAVE      = 4,
+    AV_CPLACE_SPIRIT_FROSTWOLF      = 5,
+    AV_CPLACE_SPIRIT_FROST_HUT      = 6,
+    AV_CPLACE_SPIRIT_MAIN_ALLIANCE  = 7,
+    AV_CPLACE_SPIRIT_MAIN_HORDE     = 8,
+//i don't will add for all 4 positions a variable.. i think one is enough to compute the rest
+    AV_CPLACE_DEFENSE_STORM_AID      = 9,
+    AV_CPLACE_DEFEMSE_STORM_GRAVE    = 13,
+    AV_CPLACE_DEFENSE_STONE_GRAVE    = 17,
+    AV_CPLACE_DEFENSE_SNOWFALL       = 21,
+    AV_CPLACE_DEFENSE_FROSTWOLF      = 25,
+    AV_CPLACE_DEFENSE_ICE_GRAVE      = 29,
+    AV_CPLACE_DEFENSE_FROST_HUT      = 33,
+
+    AV_CPLACE_DEFENSE_DUN_S          = 37,
+    AV_CPLACE_DEFENSE_DUN_N          = 41,
+    AV_CPLACE_DEFENSE_ICEWING        = 45,
+    AV_CPLACE_DEFENSE_STONE_TOWER    = 49,
+    AV_CPLACE_DEFENSE_ICE_TOWER      = 53,
+    AV_CPLACE_DEFENSE_TOWERPOINT     = 57,
+    AV_CPLACE_DEFENSE_FROST_E        = 61,
+    AV_CPLACE_DEFENSE_FROST_t        = 65,
+
+    AV_CPLACE_A_MARSHAL_SOUTH       = 69,
+    AV_CPLACE_A_MARSHAL_NORTH       = 70,
+    AV_CPLACE_A_MARSHAL_ICE         = 71,
+    AV_CPLACE_A_MARSHAL_STONE       = 72,
+    AV_CPLACE_H_MARSHAL_ICE         = 73,
+    AV_CPLACE_H_MARSHAL_TOWER       = 74,
+    AV_CPLACE_H_MARSHAL_ETOWER      = 75,
+    AV_CPLACE_H_MARSHAL_WTOWER      = 76,
+    //irondeep
+    //miner:
+    AV_CPLACE_MINE_N_1_MIN      = 77,
+    AV_CPLACE_MINE_N_1_MAX      = 136,
+    //special types
+    AV_CPLACE_MINE_N_2_MIN      = 137,
+    AV_CPLACE_MINE_N_2_MAX      = 192,
+    //boss
+    AV_CPLACE_MINE_N_3          = 193,
+    //coldtooth
+    //miner:
+    AV_CPLACE_MINE_S_1_MIN      = 194,
+    AV_CPLACE_MINE_S_1_MAX      = 250,
+    //special types
+    AV_CPLACE_MINE_S_2_MIN      = 251,
+    AV_CPLACE_MINE_S_2_MAX      = 289,
+    //vermin
+    AV_CPLACE_MINE_S_S_MIN      = 290,
+    AV_CPLACE_MINE_S_S_MAX      = 299,
+    //boss
+    AV_CPLACE_MINE_S_3          = 300,
+
+    //herald
+    AV_CPLACE_HERALD          = 301,
+
+    AV_CPLACE_MAX = 302
+};
+
+//x, y, z, o
+const float BG_AV_CreaturePos[AV_CPLACE_MAX][4] = {
+    //spiritguides
+    {643.000000f,44.000000f,69.740196f,-0.001854f},
+    {676.000000f,-374.000000f,30.000000f,-0.001854f},
+    {73.417755f,-496.433105f,48.731918f,-0.001854f},
+    {-157.409195f,31.206272f,77.050598f,-0.001854f},
+    {-531.217834f,-405.231384f,49.551376f,-0.001854f},
+    {-1090.476807f,-253.308670f,57.672371f,-0.001854f},
+    {-1496.065063f,-333.338409f,101.134804f,-0.001854f},
+    {873.001770f,-491.283630f,96.541931f,-0.001854f},
+    {-1437.670044f,-610.088989f,51.161900f,-0.001854f},
+ //grave
+ //firstaid
+    {635.17f,-29.5594f,46.5056f,4.81711f},
+    {642.488f,-32.9437f,46.365f,4.67748f},
+    {642.326f,-27.9442f,46.9211f,4.59022f},
+    {635.945f,-33.6171f,45.7164f,4.97419f},
+   //stormpike
+    {669.272f,-297.304f,30.291f,4.66604f},
+    {674.08f,-292.328f,30.4817f,0.0918785f},
+    {667.01f,-288.532f,29.8809f,1.81583f},
+    {664.153f,-294.042f,30.2851f,3.28531f},
+  //stone
+    {81.7027f,-406.135f,47.7843f,0.598464f},
+    {78.1431f,-409.215f,48.0401f,5.05953f},
+    {73.4135f,-407.035f,46.7527f,3.34736f},
+    {78.2258f,-401.859f,46.4202f,2.05852f},
+  //snowfall
+    {-207.412f,-110.616f,78.7959f,2.43251f},
+    {-197.95f,-112.205f,78.5686f,6.22441f},
+    {-202.709f,-116.829f,78.4358f,5.13742f},
+    {-202.059f,-108.314f,78.5783f,5.91968f},
+  //ice
+    {-615.501f,-393.802f,60.4299f,3.06147f},
+    {-608.513f,-392.717f,62.5724f,2.06323f},
+    {-609.769f,-400.072f,60.7174f,5.22367f},
+    {-616.093f,-398.293f,60.5628f,3.73613f},
+  //frost
+    {-1077.7f,-340.21f,55.4682f,6.25569f},
+    {-1082.74f,-333.821f,54.7962f,2.05459f},
+    {-1090.66f,-341.267f,54.6768f,3.27746f},
+    {-1081.58f,-344.63f,55.256f,4.75636f},
+  //frost hut
+    {-1408.95f,-311.69f,89.2536f,4.49954f},
+    {-1407.15f,-305.323f,89.1993f,2.86827f},
+    {-1400.64f,-304.3f,89.7008f,1.0595f},
+    {-1400.4f,-311.35f,89.3028f,4.99434f},
+  //towers
+  //dun south - OK
+    {569.395f,-101.064f,52.8296f,2.34974f},
+    {574.85f,-92.9842f,52.5869f,3.09325f},
+    {575.411f,-83.597f,52.3626f,6.26573f},
+    {571.352f,-75.6582f,52.479f,0.523599f},
+    //dun north - OK
+    {668.60f,-122.53f,64.12f,2.34f}, //not 100% ok
+    {662.253f,-129.105f,64.1794f,2.77507f},
+    {661.209f,-138.877f,64.2251f,3.38594f},
+    {665.481f,-146.857f,64.1271f,3.75246f},
+    //icewing - OK
+    {225.228f,-368.909f,56.9983f,6.23806f},
+    {191.36f,-369.899f,57.1524f,3.24631f},
+    {215.518f,-384.019f,56.9889f,5.09636f},
+    {199.625f,-382.177f,56.8691f,4.08407f},
+    //stone
+    {-172.851f,-452.366f,40.8725f,3.31829f},
+    {-147.147f,-435.053f,40.8022f,0.599238f},
+    {-169.456f,-440.325f,40.985f,2.59101f},
+    {-163.494f,-434.904f,41.0725f,1.84174f},
+    //ice - OK
+    {-573.522f,-271.854f,75.0078f,3.9619f},
+    {-565.616f,-269.051f,74.9952f,5.02655f},
+    {-562.825f,-261.087f,74.9898f,5.95157f},
+    {-569.176f,-254.446f,74.8771f,0.820305f},
+    //towerpoint
+    {-763.04f,-371.032f,90.7933f,5.25979f},
+    {-759.764f,-358.264f,90.8681f,0.289795f},
+    {-768.808f,-353.056f,90.8811f,1.52601f},
+    {-775.944f,-362.639f,90.8949f,2.59573f},
+    //frost etower
+    {-1294.13f,-313.045f,107.328f,0.270162f},
+    {-1306.5f,-308.105f,113.767f,1.78755f},
+    {-1294.78f,-319.966f,113.79f,5.94545f},
+    {-1294.83f,-312.241f,113.799f,0.295293f},
+    //frost wtower
+    {-1300.96f,-275.111f,114.058f,4.12804f},
+    {-1302.41f,-259.256f,114.065f,1.67602f},
+    {-1287.97f,-262.087f,114.165f,6.18264f},
+    {-1291.59f,-271.166f,114.151f,5.28257f},
+
+    //alliance marshall
+    {721.104f,-7.64155f,50.7046f,3.45575f},// south
+    {723.058f,-14.1548f,50.7046f,3.40339f},// north
+    {715.691f,-4.72233f,50.2187f,3.47321f},// icewing
+    {720.046f,-19.9413f,50.2187f,3.36849f},// stone
+//horde  (coords not 100% ok)
+    {-1363.99f,-221.99f,98.4053f,4.93012f},
+    {-1370.96f,-223.532f,98.4266f,4.93012f},
+    {-1378.37f,-228.614f,99.3546f,5.38565f},
+    {-1358.02f,-228.998f,98.868f,3.87768f},
+
+ //irondeep mine
+ //Irondeep Trogg
+    {971.671f,-442.657f,57.6951f,3.1765f},
+    {969.979f,-457.148f,58.1119f,4.5204f},
+    {958.692f,-333.477f,63.2276f,5.77704f},
+    {957.113f,-325.92f,61.7589f,1.13446f},
+    {948.25f,-448.268f,56.9009f,5.60251f},
+    {934.727f,-385.802f,63.0344f,3.75246f},
+    {931.751f,-403.458f,59.6737f,5.63741f},
+    {931.146f,-359.666f,66.0294f,3.9619f},
+    {929.702f,-412.401f,56.8776f,5.89921f},
+    {926.849f,-379.074f,63.5286f,2.0944f},
+    {921.972f,-358.597f,66.4313f,2.93215f},
+    {921.449f,-341.981f,67.1264f,3.4383f},
+    {921.1f,-395.812f,60.4615f,2.71695f},
+    {919.274f,-394.986f,60.3478f,2.71696f},
+    {916.852f,-393.891f,60.1726f,2.71695f},
+    {914.568f,-326.21f,66.1733f,2.25147f},
+    {913.064f,-395.773f,60.1364f,4.41568f},
+    {909.246f,-474.576f,58.2067f,0.226893f},
+    {909.246f,-474.576f,58.2901f,0.226893f},
+    {907.209f,-428.267f,59.8065f,1.8675f},
+    {905.973f,-459.528f,58.7594f,1.37189f},
+    {905.067f,-396.074f,60.2085f,5.07891f},
+    {901.809f,-457.709f,59.0116f,3.52557f},
+    {900.962f,-427.44f,59.0842f,1.50098f},
+    {897.929f,-471.742f,59.7729f,2.54818f},
+    {893.376f,-343.171f,68.1499f,5.35816f},
+    {890.584f,-406.049f,61.1925f,5.67232f},
+    {888.208f,-332.564f,68.148f,1.93732f},
+    {887.647f,-391.537f,61.8734f,1.37881f},
+    {885.109f,-343.338f,67.0867f,3.78979f},
+    {881.618f,-419.948f,53.5228f,0.593412f},
+    {878.675f,-345.36f,66.1052f,3.45651f},
+    {877.127f,-351.8f,66.5296f,5.74213f},
+    {876.778f,-345.97f,65.7724f,3.45262f},
+    {874.577f,-414.786f,52.7817f,1.67552f},
+    {868.247f,-343.136f,64.9894f,1.6057f},
+    {859.03f,-367.231f,47.4655f,0.0174533f},
+    {857.513f,-351.817f,65.1867f,4.39823f},
+    {852.632f,-372.416f,48.1657f,3.66519f},
+    {849.86f,-340.944f,66.2447f,0.401426f},
+    {847.99f,-386.287f,60.9277f,2.32374f},
+    {847.601f,-423.072f,50.0852f,4.57276f},
+    {847.135f,-411.307f,50.2106f,1.5708f},
+    {835.077f,-379.418f,48.2755f,5.93412f},
+    {834.87f,-453.304f,47.9075f,0.226893f},
+    {834.634f,-365.981f,62.8801f,1.32645f},
+    {834.354f,-355.526f,48.1491f,6.07375f},
+    {833.702f,-327.506f,65.0439f,0.331613f},
+    {833.151f,-374.228f,63.0938f,3.66519f},
+    {831.711f,-346.785f,47.2975f,0.226893f},
+    {827.874f,-413.624f,48.5818f,1.49241f},
+    {827.728f,-415.483f,48.5593f,1.49238f},
+    {827.016f,-424.543f,48.2856f,1.49236f},
+    {823.222f,-334.283f,65.6306f,4.88692f},
+    {821.892f,-464.723f,48.9451f,4.66003f},
+    {821.006f,-387.635f,49.0728f,3.15905f},
+    {817.26f,-447.432f,49.4308f,2.18166f},
+    {805.399f,-320.146f,52.7712f,0.296706f},
+    {801.405f,-328.055f,53.0195f,4.31096f},
+    //irondeep skullthumber irondeep shaman
+    {955.812f,-440.302f,55.3411f,3.19395f},
+    {937.378f,-377.816f,65.3919f,3.56047f},
+    {925.059f,-331.347f,65.7564f,3.66519f},
+    {922.918f,-396.634f,60.3942f,2.71695f},
+    {909.99f,-462.154f,59.0811f,3.7001f},
+    {907.893f,-388.787f,61.7923f,5.74213f},
+    {898.801f,-437.105f,58.5266f,0.959931f},
+    {884.237f,-407.597f,61.566f,0.820305f},
+    {880.744f,-344.683f,66.4086f,3.4644f},
+    {876.047f,-341.857f,65.8743f,4.45059f},
+    {874.674f,-402.077f,61.7573f,0.26341f},
+    {871.914f,-404.209f,62.1269f,6.06163f},
+    {871.606f,-403.665f,62.0795f,0.765774f},
+    {871.561f,-404.114f,62.1297f,0.00981727f},
+    {871.528f,-404.248f,62.1455f,0.498032f},
+    {871.493f,-404.122f,62.1331f,5.65727f},
+    {871.282f,-403.843f,62.1108f,0.788382f},
+    {868.294f,-392.395f,61.4772f,4.38685f},
+    {868.256f,-392.363f,61.4803f,0.732738f},
+    {867.804f,-392.51f,61.5089f,2.30167f},
+    {867.612f,-392.371f,61.524f,2.86149f},
+    {858.593f,-439.614f,50.2184f,0.872665f},
+    {851.471f,-362.52f,47.314f,4.06662f},
+    {846.939f,-347.279f,66.2876f,0.942478f},
+    {842.08f,-421.775f,48.2659f,1.0821f},
+    {838.358f,-371.212f,63.3299f,4.04916f},
+    {827.57f,-417.483f,48.4538f,1.49237f},
+    {827.012f,-457.397f,48.9331f,2.35619f},
+    {825.535f,-322.373f,63.9357f,4.76475f},
+    {867.635f,-443.605f,51.3347f,1.38626f},
+    {957.293f,-455.039f,56.7395f,5.79449f},
+    {950.077f,-326.672f,61.6552f,5.48033f},
+    {936.692f,-356.78f,65.9835f,2.75762f},
+    {926.475f,-419.345f,56.1833f,2.0944f},
+    {924.729f,-397.453f,60.213f,2.71695f},
+    {902.195f,-475.891f,58.312f,1.39626f},
+    {897.464f,-338.758f,68.1715f,2.94961f},
+    {884.237f,-407.597f,61.566f,0.820305f},
+    {882.517f,-344.111f,66.7887f,3.46962f},
+    {881.437f,-400.254f,61.2028f,0.263427f},
+    {880.156f,-400.678f,61.3113f,3.41373f},
+    {877.989f,-418.051f,52.9753f,4.46804f},
+    {871.212f,-404.12f,62.1433f,3.6554f},
+    {871.036f,-404.119f,62.2237f,4.50295f},
+    {857.396f,-395.766f,61.263f,4.78684f},
+    {857.276f,-395.395f,61.2418f,0.0845553f},
+    {857.231f,-394.577f,61.2174f,1.96817f},
+    {857.108f,-395.682f,61.2317f,4.87022f},
+    {856.709f,-395.28f,61.1814f,2.54913f},
+    {850.922f,-390.399f,60.8771f,2.85405f},
+    {847.556f,-388.228f,60.9438f,2.56872f},
+    {842.031f,-384.663f,61.6028f,2.56871f},
+    {832.035f,-389.301f,47.5567f,2.11185f},
+    {827.415f,-419.468f,48.3322f,1.49232f},
+    {826.402f,-349.454f,47.2722f,1.51844f},
+    {817.83f,-455.715f,48.4207f,0.925025f},
+    {808.953f,-325.964f,52.4043f,3.01942f},
+    // Morloch
+    {865.554f,-438.735f,50.7333f,2.12431f},
+    //coldtooth mine
+    //miner/digger
+    {-917.648f,-46.8922f,77.0872f,5.27089f},
+    {-912.689f,-45.4494f,76.2277f,4.60767f},
+    {-905.455f,-84.5179f,75.3642f,3.29867f},
+    {-904.332f,-111.509f,75.5925f,2.47837f},
+    {-904.27f,-160.419f,61.9876f,3.61192f},
+    {-904.023f,-90.4558f,75.3706f,3.40339f},
+    {-978.678f,-37.3136f,75.8364f,2.84489f},
+    {-973.076f,-36.5013f,77.5047f,1.0821f},
+    {-963.951f,-87.734f,81.5555f,0.575959f},
+    {-961.941f,-90.7252f,81.6629f,0.820305f},
+    {-957.623f,-186.582f,66.6021f,1.95477f},
+    {-952.476f,-179.778f,78.6771f,4.5204f},
+    {-950.427f,-115.007f,79.6127f,3.68264f},
+    {-950.25f,-151.95f,79.4598f,-1.81423f},
+    {-950.169f,-188.099f,66.6184f,5.55015f},
+    {-949.944f,-142.977f,80.5382f,2.70526f},
+    {-947.854f,-170.5f,79.7618f,0.942478f},
+    {-946.738f,-139.567f,80.0904f,2.3911f},
+    {-945.503f,-65.0654f,79.7907f,5.02655f},
+    {-943.678f,-110.986f,80.2557f,0.959931f},
+    {-942.993f,-56.9881f,79.8915f,5.65487f},
+    {-938.197f,-155.838f,61.3111f,1.65806f},
+    {-930.488f,-214.524f,72.1431f,2.1236f},
+    {-929.947f,-154.449f,61.5084f,1.67552f},
+    {-927.412f,-135.313f,61.1987f,3.29867f},
+    {-920.677f,-156.859f,62.8033f,3.15306f},
+    {-916.75f,-136.094f,62.2357f,0.0698132f},
+    {-915.319f,-132.718f,62.562f,1.16984f},
+    {-913.589f,-146.794f,76.9366f,1.8675f},
+    {-907.572f,-148.937f,76.6898f,4.76475f},
+    {-902.02f,-64.6174f,73.9707f,1.19169f},
+    {-899.489f,-61.7252f,73.2498f,5.09636f},
+    {-894.792f,-127.141f,75.3834f,6.14356f},
+    {-892.408f,-162.525f,64.1212f,2.69884f},
+    {-892.326f,-123.158f,76.0318f,5.5676f},
+    {-888.468f,-148.462f,61.8012f,1.65806f},
+    {-883.268f,-159.738f,63.5311f,5.20108f},
+    {-877.76f,-118.07f,65.215f,2.94961f},
+    {-876.792f,-128.646f,64.1045f,3.40339f},
+    {-874.901f,-36.6579f,69.4246f,2.00713f},
+    {-874.856f,-151.351f,62.7537f,3.57875f},
+    {-872.135f,-150.08f,62.7513f,3.57201f},
+    {-870.288f,-149.217f,62.5413f,3.56624f},
+    {-870.03f,-6.27443f,70.3867f,2.3911f},
+    {-869.023f,-82.2118f,69.5848f,3.22886f},
+    {-866.354f,-40.2455f,70.842f,0.0698132f},
+    {-865.305f,-152.302f,63.5044f,4.86947f},
+    {-861.926f,-79.0519f,71.4178f,0.20944f},
+    {-857.292f,-152.277f,63.2114f,4.18879f},
+    {-853.357f,-0.696194f,72.0655f,0.994838f},
+    {-850.685f,-14.2596f,70.2298f,0.20944f},
+    {-839.987f,-67.7695f,72.7916f,4.93928f},
+    {-839.199f,-57.0558f,73.4891f,1.67552f},
+    {-836.963f,-153.224f,63.3821f,4.46804f},
+    {-832.721f,-67.7555f,72.9062f,4.99164f},
+    {-821.496f,-143.095f,63.1292f,0.541052f},
+    {-818.829f,-153.004f,62.1757f,6.12611f},
+    //special
+    {-954.622f,-110.958f,80.7911f,6.24828f},
+    {-951.477f,-53.9647f,80.0235f,5.32325f},
+    {-946.812f,-126.04f,78.8601f,5.15265f},
+    {-940.689f,-140.707f,79.9225f,2.79253f},
+    {-933.954f,-159.632f,60.778f,2.56563f},
+    {-922.537f,-130.291f,61.3756f,4.95674f},
+    {-915.862f,-151.74f,76.9427f,0.942478f},
+    {-888.321f,-159.831f,62.5303f,1.20428f},
+    {-874.361f,-42.4751f,69.4316f,0.785398f},
+    {-873.19f,-50.4899f,70.0568f,-2.41288f},
+    {-868.511f,-148.386f,62.3547f,3.57875f},
+    {-868.44f,-121.649f,64.5056f,3.33358f},
+    {-868.324f,-77.7196f,71.4768f,5.41052f},
+    {-859.846f,-19.6549f,70.7304f,1.97222f},
+    {-828.05f,-150.508f,62.2019f,2.14675f},
+    {-826.254f,-58.6911f,72.0041f,3.68264f},
+    {-976.086f,-44.1775f,76.029f,1.46608f},
+    {-971.864f,-87.4223f,81.4954f,5.8294f},
+    {-966.551f,-74.1111f,80.0243f,4.2129f},
+    {-958.509f,-173.652f,77.9013f,6.24828f},
+    {-951.511f,-181.242f,65.529f,4.39823f},
+    {-940.967f,-186.243f,77.698f,1.28164f},
+    {-930.004f,-65.0898f,79.077f,0.0581657f},
+    {-920.864f,-40.2009f,78.256f,5.16617f},
+    {-919.089f,-148.021f,62.0317f,2.59327f},
+    {-901.516f,-116.329f,75.6876f,0.471239f},
+    {-897.864f,-84.4348f,74.083f,3.00197f},
+    {-897.617f,-52.0457f,71.9503f,4.36332f},
+    {-894.891f,-153.951f,61.6827f,3.23569f},
+    {-893.933f,-111.625f,75.6591f,4.22536f},
+    {-883.265f,-152.854f,61.8384f,0.0941087f},
+    {-868.293f,-147.243f,62.1097f,3.2056f},
+    {-867.501f,-11.8709f,70.018f,6.14356f},
+    {-866.699f,-147.54f,62.1646f,3.57878f},
+    {-866.566f,-91.1916f,67.4414f,4.56707f},
+    {-857.272f,-141.142f,61.7356f,4.17134f},
+    {-847.446f,-98.0061f,68.5131f,3.24631f},
+    {-837.026f,-140.729f,62.5141f,5.51524f},
+    {-824.204f,-65.053f,72.3381f,3.01942f},
+    //vermin (s.th special for this mine)
+    {-951.955f,-197.5f,77.212f,5.63741f},
+    {-944.837f,-199.608f,77.0737f,4.97419f},
+    {-933.494f,-209.063f,73.7803f,5.88176f},
+    {-929.666f,-201.308f,73.7032f,5.02655f},
+    {-978.997f,-249.356f,65.4345f,5.05464f},
+    {-974.565f,-224.828f,69.5858f,4.88846f},
+    {-946.514f,-259.239f,66.0874f,3.78132f},
+    {-918.402f,-250.439f,69.5271f,2.21352f},
+    {-910.14f,-229.959f,72.9279f,0.27677f},
+    {-851.563f,-88.6527f,68.5983f,3.61896f},
+    //boss
+    {-848.902f,-92.931f,68.6325f,3.33350},
+    //herald
+    {-48.459f,-288.802f,55.47f,1.0}
+
+};
+
+
+enum BG_AV_CreatureIds
+{
+
+    AV_NPC_A_GRAVEDEFENSE0 = 0,     // stormpike Defender
+    AV_NPC_A_GRAVEDEFENSE1 = 1,     // seasoned defender
+    AV_NPC_A_GRAVEDEFENSE2 = 2,     // veteran defender
+    AV_NPC_A_GRAVEDEFENSE3 = 3,     // champion defender
+    AV_NPC_A_TOWERDEFENSE  = 4,     // stormpike bowman
+    AV_NPC_A_CAPTAIN       = 5,     // balinda
+    AV_NPC_A_BOSS          = 6,     // vanndar
+
+    AV_NPC_H_GRAVEDEFENSE0 = 7,     // frostwolf guardian
+    AV_NPC_H_GRAVEDEFENSE1 = 8,     // seasoned guardian
+    AV_NPC_H_GRAVEDEFENSE2 = 9,     // veteran guardian
+    AV_NPC_H_GRAVEDEFENSE3 = 10,    // champion guardian
+    AV_NPC_H_TOWERDEFENSE  = 11,    // frostwolf bowman
+    AV_NPC_H_CAPTAIN       = 12,    // galvangar
+    AV_NPC_H_BOSS          = 13,    // drek thar
+
+    AV_NPC_A_MARSHAL_SOUTH = 14,
+    AV_NPC_MARSHAL_NORTH   = 15,
+    AV_NPC_A_MARSHAL_ICE   = 16,
+    AV_NPC_A_MARSHAL_STONE = 17,
+    AV_NPC_H_MARSHAL_ICE   = 18,
+    AV_NPC_H_MARSHAL_TOWER = 19,
+    AV_NPC_MARSHAL_ETOWER  = 20,
+    AV_NPC_H_MARSHAL_WTOWER= 21,
+    AV_NPC_N_MINE_N_1      = 22,
+    AV_NPC_N_MINE_N_2      = 23,
+    AV_NPC_N_MINE_N_3      = 24,
+    AV_NPC_N_MINE_N_4      = 25,
+    AV_NPC_N_MINE_A_1      = 26,
+    AV_NPC_N_MINE_A_2      = 27,
+    AV_NPC_N_MINE_A_3      = 28,
+    AV_NPC_N_MINE_A_4      = 29,
+    AV_NPC_N_MINE_H_1      = 30,
+    AV_NPC_N_MINE_H_2      = 31,
+    AV_NPC_N_MINE_H_3      = 32,
+    AV_NPC_N_MINE_H_4      = 33,
+    AV_NPC_S_MINE_N_1      = 34,
+    AV_NPC_S_MINE_N_2      = 35,
+    AV_NPC_S_MINE_N_3      = 36,
+    AV_NPC_S_MINE_N_4      = 37,
+    AV_NPC_S_MINE_N_S      = 38,
+    AV_NPC_S_MINE_A_1      = 39,
+    AV_NPC_S_MINE_A_2      = 40,
+    AV_NPC_S_MINE_A_3      = 41,
+    AV_NPC_S_MINE_A_4      = 42,
+    AV_NPC_S_MINE_H_1      = 43,
+    AV_NPC_S_MINE_H_2      = 44,
+    AV_NPC_S_MINE_H_3      = 45,
+    AV_NPC_S_MINE_H_4      = 46,
+    AV_NPC_HERALD          = 47,
+    AV_NPC_INFO_MAX        = 48
+
+};
+
+//entry, team, minlevel, maxlevel
+//TODO this array should be removed, the only needed things are the entrys (for spawning(?) and handlekillunit)
+const uint32 BG_AV_CreatureInfo[AV_NPC_INFO_MAX][4] = {
+    { 12050, 1216, 58, 58 }, //Stormpike Defender
+    { 13326, 1216, 59, 59 }, //Seasoned Defender
+    { 13331, 1216, 60, 60 }, //Veteran Defender
+    { 13422, 1216, 61, 61 }, //Champion Defender
+    { 13358, 1216, 59, 60 }, //Stormpike Bowman //i think its 60,61 and 69,70.. but this is until now not possible TODO look if this is ok
+    { 11949,469,0,0},//not spawned with this data, but used for handlekillunit
+    { 11948,469,0,0},//not spawned with this data, but used for handlekillunit
+    { 12053, 1214, 58, 58 }, //Frostwolf Guardian
+    { 13328, 1214, 59, 59 }, //Seasoned Guardian
+    { 13332, 1214, 60, 60 }, //Veteran Guardian
+    { 13421, 1214, 61, 61 }, //Champion Guardian
+    { 13359, 1214, 59, 60 }, //Frostwolf Bowman
+    { 11947,67,0,0}, //not spawned with this data, but used for handlekillunit
+    { 11946,67,0,0}, //not spawned with this data, but used for handlekillunit
+    { 14763, 1534, 60, 60 }, //Dun Baldar South Marshal
+    { 14762, 1534, 60, 60 }, //Dun Baldar North Marshal
+    { 14764, 1534, 60, 60 }, //Icewing Marshal
+    { 14765, 1534, 60, 60 }, //Stonehearth Marshal
+
+    { 14773, 1214, 60, 60 }, //Iceblood Warmaster
+    { 14776, 1214, 60, 60 }, //Tower Point Warmaster
+    { 14772, 1214, 60, 60 }, //East Frostwolf Warmaster
+    { 14777, 1214, 60, 60 }, //West Frostwolf Warmaster
+
+    { 10987, 59, 52, 53 }, //Irondeep Trogg
+    { 11600, 59, 53, 54 }, //Irondeep Shaman
+    { 11602, 59, 54, 55 }, //Irondeep Skullthumper
+    { 11657, 59, 58, 58 }, //Morloch
+
+    {13396,469,52,53}, //irondeep alliance TODO: get the right ids
+    {13080,469,53,54},
+    {13098,469,54,55},
+    {13078,469,58,58},
+
+    {13397,67,52,53}, //irondeep horde
+    {13099,67,53,54},
+    {13081,67,54,55},
+    {13079,67,58,58},
+
+    { 11603, 59, 52, 53 }, //south mine neutral
+    { 11604, 59, 53, 54 },
+    { 11605, 59, 54, 55 },
+    { 11677, 59, 58, 58 },
+    { 10982, 59, 52, 53 }, //vermin
+
+    {13317,469,52,53}, //alliance
+    {13096,469,54,55}, //explorer
+    {13087,469,54,55}, //invader
+    {13086,469,58,58},
+
+    {13316,67,52,53}, //horde
+    {13097,67,54,55}, //surveypr
+    {13089,67,54,55}, //guard
+    {13088,67,58,58},
+    {14848,67,58,58} //Herald
+
+};
+
+//x,y,z,o,static_creature_info-id
+const float BG_AV_StaticCreaturePos[AV_STATICCPLACE_MAX][5] = { //static creatures
+    {-1235.31f,-340.777f,60.5088f,3.31613f,0 },//2225 - Zora Guthrek
+    {-1244.02f,-323.795f,61.0485f,5.21853f,1 },//3343 - Grelkor
+    {-1235.16f,-332.302f,60.2985f,2.96706f,2 },//3625 - Rarck
+    {587.303f,-42.8257f,37.5615f,5.23599f,3 },//4255 - Brogus Thunderbrew
+    {643.635f,-58.3987f,41.7405f,4.72984f,4 },//4257 - Lana Thunderbrew
+    {591.464f,-44.452f,37.6166f,5.65487f,5 },//5134 - Jonivera Farmountain
+    {608.515f,-33.3935f,42.0003f,5.41052f,6 },//5135 - Svalbrad Farmountain
+    {617.656f,-32.0701f,42.7168f,4.06662f,7 },//5139 - Kurdrum Barleybeard
+    {-1183.76f,-268.295f,72.8233f,3.28122f,8 },//10364 - Yaelika Farclaw
+    {-1187.86f,-275.31f,73.0481f,3.63028f,9 },//10367 - Shrye Ragefist
+    {-1008.42f,-368.006f,55.3426f,5.95647f,10 },//10981 - Frostwolf
+    {-1091.92f,-424.28f,53.0139f,2.93958f,10 },//10981 - Frostwolf
+    {-558.455f,-198.768f,58.1755f,4.97946f,10 },//10981 - Frostwolf
+    {-861.247f,-312.51f,55.1427f,3.35382f,10 },//10981 - Frostwolf
+    {-1003.81f,-395.913f,50.4736f,2.85631f,10 },//10981 - Frostwolf
+    {-904.5f,-289.815f,65.1222f,5.7847f,10 },//10981 - Frostwolf
+    {-1064.41f,-438.839f,51.3614f,1.88857f,10 },//10981 - Frostwolf
+    {258.814f,76.2017f,18.6468f,6.19052f,11 },//10986 - Snowblind Harpy
+    {265.838f,-315.846f,-16.5429f,3.15917f,11 },//10986 - Snowblind Harpy
+    {426.485f,-51.1927f,-5.66286f,1.60347f,11 },//10986 - Snowblind Harpy
+    {452.044f,-33.9594f,-0.044651f,2.72815f,11 },//10986 - Snowblind Harpy
+    {266.032f,-315.639f,-16.5429f,4.67962f,11 },//10986 - Snowblind Harpy
+    {532.64f,-54.5863f,20.7024f,2.93215f,11 },//10986 - Snowblind Harpy
+    {295.183f,-299.908f,-34.6123f,0.135851f,12 },//10990 - Alterac Ram
+    {421.08f,-225.006f,-23.73f,0.166754f,12 },//10990 - Alterac Ram
+    {-55.7766f,-192.498f,20.4352f,6.12221f,12 },//10990 - Alterac Ram
+    {527.887f,-477.223f,62.3559f,0.170935f,12 },//10990 - Alterac Ram
+    {389.144f,-346.508f,-30.334f,4.14117f,12 },//10990 - Alterac Ram
+    {108.121f,-322.248f,37.5655f,4.46788f,12 },//10990 - Alterac Ram
+    {507.479f,-67.9403f,10.3571f,3.26304f,12 },//10990 - Alterac Ram
+    {329.071f,-185.016f,-29.1542f,0.356943f,12 },//10990 - Alterac Ram
+    {252.449f,-422.313f,35.1404f,4.53771f,12 },//10990 - Alterac Ram
+    {358.882f,-118.061f,-24.9119f,2.29257f,12 },//10990 - Alterac Ram
+    {487.151f,-174.229f,14.7558f,4.73192f,12 },//10990 - Alterac Ram
+    {449.652f,-123.561f,6.14273f,6.12029f,12 },//10990 - Alterac Ram
+    {272.419f,-261.802f,-41.8835f,3.66559f,12 },//10990 - Alterac Ram
+    {359.021f,-210.954f,-29.3483f,4.31339f,12 },//10990 - Alterac Ram
+    {450.598f,-318.048f,-37.7548f,0.655219f,12 },//10990 - Alterac Ram
+    {509.333f,-218.2f,3.05439f,3.66292f,12 },//10990 - Alterac Ram
+    {485.771f,-223.613f,-1.53f,2.04862f,12 },//10990 - Alterac Ram
+    {486.636f,-452.172f,39.6592f,2.3341f,12 },//10990 - Alterac Ram
+    {702.783f,-257.494f,25.9777f,1.68329f,12 },//10990 - Alterac Ram
+    {460.942f,-199.263f,-6.0149f,0.380506f,12 },//10990 - Alterac Ram
+    {483.108f,-115.307f,10.1056f,3.69701f,12 },//10990 - Alterac Ram
+    {471.601f,-154.174f,14.0702f,5.5807f,12 },//10990 - Alterac Ram
+    {213.938f,-420.793f,41.2549f,5.71394f,12 },//10990 - Alterac Ram
+    {289.387f,-294.685f,-33.9073f,0.555494f,12 },//10990 - Alterac Ram
+    {155.649f,-402.891f,43.3915f,5.94838f,12 },//10990 - Alterac Ram
+    {517.184f,-295.105f,-9.78195f,6.05668f,12 },//10990 - Alterac Ram
+    {102.334f,-332.165f,38.9812f,3.31445f,12 },//10990 - Alterac Ram
+    {320.244f,-107.793f,-42.6357f,-1.00311f,12 },//10990 - Alterac Ram
+    {217.976f,110.774f,15.7603f,4.56793f,13 },//11675 - Snowblind Windcaller
+    {269.872f,6.66684f,20.7592f,0.381212f,13 },//11675 - Snowblind Windcaller
+    {313.528f,-319.041f,-27.2373f,0.554098f,13 },//11675 - Snowblind Windcaller
+    {435.441f,-39.9289f,-0.169651f,0.549454f,13 },//11675 - Snowblind Windcaller
+    {315.115f,-317.62f,-29.1123f,0.90111f,13 },//11675 - Snowblind Windcaller
+    {428.091f,-122.731f,3.40332f,6.05901f,14 },//11678 - Snowblind Ambusher
+    {235.05f,85.5705f,18.3079f,-0.914255f,14 },//11678 - Snowblind Ambusher
+    {-1553.04f,-344.342f,64.4163f,6.09933f,15 },//11839 - Wildpaw Brute
+    {-545.23f,-165.35f,57.7886f,3.01145f,16 },//11947 - Captain Galvangar
+    {722.43f,-10.9982f,50.7046f,3.42085f,17 },//11948 - Vanndar Stormpike
+    {-57.7891f,-286.597f,15.6479f,6.02139f,18 },//11949 - Captain Balinda Stonehearth
+    {930.498f,-520.755f,93.7334f,1.8326f,19 },//11997 - Stormpike Herald
+    {-776.092f,-345.161f,67.4092f,1.89257f,20 },//12051 - Frostwolf Legionnaire
+    {-1224.63f,-308.144f,65.0087f,4.01139f,20 },//12051 - Frostwolf Legionnaire
+    {-713.039f,-442.515f,82.8638f,0.68724f,20 },//12051 - Frostwolf Legionnaire
+    {-711.783f,-444.061f,82.7039f,0.683494f,20 },//12051 - Frostwolf Legionnaire
+    {587.633f,-45.9816f,37.5438f,5.81195f,21 },//12096 - Stormpike Quartermaster
+    {-1293.79f,-194.407f,72.4398f,5.84685f,22 },//12097 - Frostwolf Quartermaster
+    {446.163f,-377.119f,-1.12725f,0.209526f,23 },//12127 - Stormpike Guardsman
+    {549.348f,-399.254f,53.3537f,3.24729f,23 },//12127 - Stormpike Guardsman
+    {549.801f,-401.217f,53.8305f,3.24729f,23 },//12127 - Stormpike Guardsman
+    {192.704f,-406.874f,42.9183f,6.10696f,23 },//12127 - Stormpike Guardsman
+    {441.305f,-435.765f,28.2385f,2.14472f,23 },//12127 - Stormpike Guardsman
+    {192.982f,-404.891f,43.0132f,6.1061f,23 },//12127 - Stormpike Guardsman
+    {355.342f,-391.989f,-0.486707f,3.00643f,23 },//12127 - Stormpike Guardsman
+    {446.035f,-375.104f,-1.12725f,0.21033f,23 },//12127 - Stormpike Guardsman
+    {697.864f,-433.238f,62.7914f,1.65776f,23 },//12127 - Stormpike Guardsman
+    {610.74f,-331.585f,30.8021f,5.14253f,23 },//12127 - Stormpike Guardsman
+    {609.815f,-329.775f,30.9271f,-2.38829f,23 },//12127 - Stormpike Guardsman
+    {695.874f,-433.434f,62.8543f,1.65776f,23 },//12127 - Stormpike Guardsman
+    {443.337f,-435.283f,28.6842f,2.13768f,23 },//12127 - Stormpike Guardsman
+    {-1251.5f,-316.327f,62.6565f,5.02655f,24 },//13176 - Smith Regzar
+    {-1332.0f,-331.243f,91.2631f,1.50098f,25 },//13179 - Wing Commander Guse
+    {569.983f,-94.9992f,38.0325f,1.39626f,26 },//13216 - Gaelden Hammersmith
+    {-1244.92f,-308.916f,63.2525f,1.62316f,27 },//13218 - Grunnda Wolfheart
+    {-1319.56f,-342.675f,60.3404f,1.20428f,28 },//13236 - Primalist Thurloga
+    {647.61f,-61.1548f,41.7405f,4.24115f,29 },//13257 - Murgot Deepforge
+    {-1321.64f,-343.73f,60.4833f,1.01229f,30 },//13284 - Frostwolf Shaman
+    {-1317.61f,-342.853f,60.3726f,2.47837f,30 },//13284 - Frostwolf Shaman
+    {-1319.31f,-344.475f,60.3825f,1.72788f,30 },//13284 - Frostwolf Shaman
+    {569.963f,-42.0218f,37.7581f,4.27606f,31 },//13438 - Wing Commander Slidore
+    {729.2f,-78.812f,51.6335f,3.97935f,32 },//13442 - Arch Druid Renferal
+    {729.118f,-82.8713f,51.6335f,2.53073f,33 },//13443 - Druid of the Grove
+    {725.554f,-79.4973f,51.6335f,5.27089f,33 },//13443 - Druid of the Grove
+    {724.768f,-84.1642f,51.6335f,0.733038f,33 },//13443 - Druid of the Grove
+    {596.68f,-83.0633f,39.0051f,6.24828f,34 },//13447 - Corporal Noreg Stormpike
+    {600.032f,-2.92475f,42.0788f,5.00909f,35 },//13577 - Stormpike Ram Rider Commander
+    {610.239f,-21.8454f,43.272f,4.90438f,36 },//13617 - Stormpike Stable Master
+    {613.422f,-150.764f,33.4517f,5.55015f,37 },//13797 - Mountaineer Boombellow
+    {-1213.91f,-370.619f,56.4455f,0.837758f,38 },//13798 - Jotek
+    {704.35f,-22.9071f,50.2187f,0.785398f,39 },//13816 - Prospector Stonehewer
+    {-1271.24f,-335.766f,62.3971f,5.75959f,40 },//14185 - Najak Hexxen
+    {-1268.64f,-332.688f,62.6171f,5.28835f,41 },//14186 - Ravak Grimtotem
+    {648.363f,-65.2233f,41.7405f,3.12414f,42 },//14187 - Athramanis
+    {648.238f,-67.8931f,41.7405f,2.60054f,43 },//14188 - Dirk Swindle
+    {-1223.44f,-309.833f,64.9331f,4.0131f,44 },//14282 - Frostwolf Bloodhound
+    {-1226.4f,-307.136f,64.9706f,4.0145f,44 },//14282 - Frostwolf Bloodhound
+    {356.001f,-389.969f,-0.438796f,3.0334f,45 },//14283 - Stormpike Owl
+    {355.835f,-394.005f,-0.60149f,3.02498f,45 },//14283 - Stormpike Owl
+    {882.266f,-496.378f,96.7707f,4.83248f,45 },//14283 - Stormpike Owl
+    {878.649f,-495.917f,96.6171f,4.67693f,45 },//14283 - Stormpike Owl
+    {932.851f,-511.017f,93.6748f,3.61004f,45 },//14283 - Stormpike Owl
+    {935.806f,-513.983f,93.7436f,3.61788f,45 },//14283 - Stormpike Owl
+    {947.412f,-509.982f,95.1098f,2.82743f,46 },//14284 - Stormpike Battleguard
+    {934.557f,-512.395f,93.662f,3.61004f,46 },//14284 - Stormpike Battleguard
+    {939.42f,-502.777f,94.5887f,5.14872f,46 },//14284 - Stormpike Battleguard
+    {854.276f,-494.241f,96.8017f,5.44543f,46 },//14284 - Stormpike Battleguard
+    {776.621f,-487.775f,99.4049f,3.50811f,46 },//14284 - Stormpike Battleguard
+    {880.169f,-495.699f,96.6204f,4.8325f,46 },//14284 - Stormpike Battleguard
+    {773.651f,-497.482f,99.0408f,2.11185f,46 },//14284 - Stormpike Battleguard
+    {949.1f,-506.913f,95.4237f,3.31613f,46 },//14284 - Stormpike Battleguard
+    {-1370.9f,-219.793f,98.4258f,5.04381f,47}, //drek thar
+
+};
+
+const uint32 BG_AV_StaticCreatureInfo[51][4] = {
+    { 2225, 1215, 55, 55 }, //Zora Guthrek
+    { 3343, 1215, 55, 55 }, //Grelkor
+    { 3625, 1215, 55, 55 }, //Rarck
+    { 4255, 1217, 55, 55 }, //Brogus Thunderbrew
+    { 4257, 1217, 55, 55 }, //Lana Thunderbrew
+    { 5134, 1217, 55, 55 }, //Jonivera Farmountain
+    { 5135, 1217, 55, 55 }, //Svalbrad Farmountain
+    { 5139, 1217, 55, 55 }, //Kurdrum Barleybeard
+    { 10364, 1215, 55, 55 }, //Yaelika Farclaw
+    { 10367, 1215, 55, 55 }, //Shrye Ragefist
+    { 10981, 38, 50, 51 }, //Frostwolf
+    { 10986, 514, 52, 53 }, //Snowblind Harpy
+    { 10990, 1274, 50, 51 }, //Alterac Ram
+    { 11675, 514, 53, 53 }, //Snowblind Windcaller
+    { 11678, 14, 52, 53 }, //Snowblind Ambusher
+    { 11839, 39, 56, 56 }, //Wildpaw Brute
+    { 11947, 1214, 61, 61 }, //Captain Galvangar --TODO: doubled
+    { 11948, 1216, 63, 63 }, //Vanndar Stormpike
+    { 11949, 1216, 61, 61 }, //Captain Balinda Stonehearth
+    { 11997, 1334, 60, 60 }, //Stormpike Herald
+    { 12051, 1214, 57, 57 }, //Frostwolf Legionnaire
+    { 12096, 1217, 55, 55 }, //Stormpike Quartermaster
+    { 12097, 1215, 55, 55 }, //Frostwolf Quartermaster
+    { 12127, 1216, 57, 57 }, //Stormpike Guardsman
+    { 13176, 1215, 60, 60 }, //Smith Regzar
+    { 13179, 1215, 59, 59 }, //Wing Commander Guse
+    { 13216, 1217, 58, 58 }, //Gaelden Hammersmith
+    { 13218, 1215, 58, 58 }, //Grunnda Wolfheart
+    { 13236, 1214, 60, 60 }, //Primalist Thurloga
+    { 13257, 1216, 60, 60 }, //Murgot Deepforge
+    { 13284, 1214, 58, 58 }, //Frostwolf Shaman
+    { 13438, 1217, 58, 58 }, //Wing Commander Slidore
+    { 13442, 1216, 60, 60 }, //Arch Druid Renferal
+    { 13443, 1216, 60, 60 }, //Druid of the Grove
+    { 13447, 1216, 58, 58 }, //Corporal Noreg Stormpike
+    { 13577, 1216, 60, 60 }, //Stormpike Ram Rider Commander
+    { 13617, 1216, 60, 60 }, //Stormpike Stable Master
+    { 13797, 32, 60, 61 }, //Mountaineer Boombellow
+    { 13798, 1214, 60, 61 }, //Jotek
+    { 13816, 1216, 61, 61 }, //Prospector Stonehewer
+    { 14185, 877, 59, 59 }, //Najak Hexxen
+    { 14186, 105, 60, 60 }, //Ravak Grimtotem
+    { 14187, 1594, 60, 60 }, //Athramanis
+    { 14188, 57, 59, 59 }, //Dirk Swindle
+    { 14282, 1214, 53, 54 }, //Frostwolf Bloodhound
+    { 14283, 1216, 53, 54 }, //Stormpike Owl
+    { 14284, 1216, 61, 61 }, //Stormpike Battleguard
+    { 11946, 1214, 63, 63 }, //Drek'Thar //TODO: make the levels right (boss=0 maybe)
+    { 11948, 1216, 63, 63 }, //Vanndar Stormpike
+    { 11947, 1214, 61, 61 }, //Captain Galvangar
+    { 11949, 1216, 61, 61 } //Captain Balinda Stonehearth
+};
+
+enum BG_AV_Graveyards
+{
+    AV_GRAVE_STORM_AID         = 751,
+    AV_GRAVE_STORM_GRAVE       = 689,
+    AV_GRAVE_STONE_GRAVE       = 729,
+    AV_GRAVE_SNOWFALL          = 169,
+    AV_GRAVE_ICE_GRAVE         = 749,
+    AV_GRAVE_FROSTWOLF         = 690,
+    AV_GRAVE_FROST_HUT         = 750,
+    AV_GRAVE_MAIN_ALLIANCE     = 611,
+    AV_GRAVE_MAIN_HORDE        = 610
+};
+
+
+
+const uint32 BG_AV_GraveyardIds[9]= {
+  AV_GRAVE_STORM_AID,
+  AV_GRAVE_STORM_GRAVE,
+  AV_GRAVE_STONE_GRAVE,
+  AV_GRAVE_SNOWFALL,
+  AV_GRAVE_ICE_GRAVE,
+  AV_GRAVE_FROSTWOLF,
+  AV_GRAVE_FROST_HUT,
+  AV_GRAVE_MAIN_ALLIANCE,
+  AV_GRAVE_MAIN_HORDE
+};
+
+enum BG_AV_BUFF
+{ //TODO add all other buffs here
+    AV_BUFF_ARMOR = 21163,
+    AV_BUFF_A_CAPTAIN = 23693, //the buff which the alliance captain does
+    AV_BUFF_H_CAPTAIN = 22751 //the buff which the horde captain does
+};
+enum BG_AV_States
+{
+    POINT_NEUTRAL              =  0,
+    POINT_ASSAULTED            =  1,
+    POINT_DESTROYED            =  2,
+    POINT_CONTROLED            =  3
+};
+
+enum BG_AV_WorldStates
+{
+    AV_Alliance_Score               = 3127,
+    AV_Horde_Score                  = 3128,
+    AV_SHOW_H_SCORE                 = 3133,
+    AV_SHOW_A_SCORE                 = 3134,
+
+/*
+    //the comments behind the state shows which icon overlaps the other.. but is, until now, unused and maybe not a good solution (but give few performance (: )
+
+// Graves
+
+    // Alliance
+    //Stormpike first aid station
+    AV_AID_A_C                      = 1325,
+    AV_AID_A_A                      = 1326,
+    AV_AID_H_C                      = 1327,
+    AV_AID_H_A                      = 1328,
+    //Stormpike Graveyard
+    AV_PIKEGRAVE_A_C                = 1333,
+    AV_PIKEGRAVE_A_A                = 1335,
+    AV_PIKEGRAVE_H_C                = 1334,
+    AV_PIKEGRAVE_H_A                = 1336,
+    //Stoneheart Grave
+    AV_STONEHEART_A_C               = 1302,
+    AV_STONEHEART_A_A               = 1304, //over hc
+    AV_STONEHEART_H_C               = 1301, //over ac
+    AV_STONEHEART_H_A               = 1303, //over aa
+    //Neutral
+    //Snowfall Grave
+*/
+    AV_SNOWFALL_N                   = 1966, //over aa
+/*
+    AV_SNOWFALL_A_C                 = 1341, //over hc
+    AV_SNOWFALL_A_A                 = 1343, //over ha
+    AV_SNOWFALL_H_C                 = 1342,
+    AV_SNOWFALL_H_A                 = 1344, //over ac
+    //Horde
+    //Iceblood grave
+    AV_ICEBLOOD_A_C                 = 1346, //over hc
+    AV_ICEBLOOD_A_A                 = 1348, //over ac
+    AV_ICEBLOOD_H_C                 = 1347,
+    AV_ICEBLOOD_H_A                 = 1349, //over aa
+    //Frostwolf Grave
+    AV_FROSTWOLF_A_C                = 1337, //over hc
+    AV_FROSTWOLF_A_A                = 1339, //over ac
+    AV_FROSTWOLF_H_C                = 1338,
+    AV_FROSTWOLF_H_A                = 1340, //over aa
+    //Frostwolf Hut
+    AV_FROSTWOLFHUT_A_C             = 1329, //over hc
+    AV_FROSTWOLFHUT_A_A             = 1331, //over ha
+    AV_FROSTWOLFHUT_H_C             = 1330,
+    AV_FROSTWOLFHUT_H_A             = 1332, //over ac
+
+
+//Towers
+    //Alliance
+    //Dunbaldar South Bunker
+    AV_DUNS_CONTROLLED              = 1361,
+    AV_DUNS_DESTROYED               = 1370,
+    AV_DUNS_ASSAULTED               = 1378,
+    //Dunbaldar North Bunker
+    AV_DUNN_CONTROLLED              = 1362,
+    AV_DUNN_DESTROYED               = 1371,
+    AV_DUNN_ASSAULTED               = 1379,
+    //Icewing Bunker
+    AV_ICEWING_CONTROLLED           = 1363,
+    AV_ICEWING_DESTROYED            = 1372,
+    AV_ICEWING_ASSAULTED            = 1380,
+    //Stoneheart Bunker
+    AV_STONEH_CONTROLLED            = 1364,
+    AV_STONEH_DESTROYED             = 1373,
+    AV_STONEH_ASSAULTED             = 1381,
+    //Horde
+    //Iceblood Tower
+    AV_ICEBLOOD_CONTROLLED          = 1385,
+    AV_ICEBLOOD_DESTROYED           = 1368,
+    AV_ICEBLOOD_ASSAULTED           = 1390,
+    //Tower Point
+    AV_TOWERPOINT_CONTROLLED        = 1384,
+    AV_TOWERPOINT_DESTROYED         = 1367, //goes over controlled
+    AV_TOWERPOINT_ASSAULTED         = 1389, //goes over destroyed
+    //Frostwolf West
+    AV_FROSTWOLFW_CONTROLLED        = 1382,
+    AV_FROSTWOLFW_DESTROYED         = 1365, //over controlled
+    AV_FROSTWOLFW_ASSAULTED         = 1387, //over destroyed
+    //Frostwolf East
+    AV_FROSTWOLFE_CONTROLLED        = 1383,
+    AV_FROSTWOLFE_DESTROYED         = 1366,
+    AV_FROSTWOLFE_ASSAULTED         = 1388,
+
+//mines
+
+    AV_N_MINE_N              = 1360,
+    AV_N_MINE_A              = 1358,
+    AV_N_MINE_H              = 1359,
+
+    AV_S_MINE_N                     = 1357,
+    AV_S_MINE_A                     = 1355,
+    AV_S_MINE_H                     = 1356,
+
+//towers assaulted by own team (unused)
+    AV_STONEH_UNUSED                = 1377,
+    AV_ICEWING_UNUSED               = 1376,
+    AV_DUNS_UNUSED                  = 1375,
+    AV_DUNN_UNUSED                  = 1374,
+
+    AV_ICEBLOOD_UNUSED              = 1395,
+    AV_TOWERPOINT_UNUSED            = 1394,
+    AV_FROSTWOLFE_UNUSED            = 1393,
+    AV_FROSTWOLFW_UNUSED            = 1392
+*/
+
+};
+
+//alliance_control neutral_control horde_control
+const uint32 BG_AV_MineWorldStates[2][3] = {
+    {1358, 1360,1359},
+    {1355, 1357,1356}
+};
+
+
+//alliance_control alliance_assault h_control h_assault
+const uint32 BG_AV_NodeWorldStates[16][4] = {
+    //Stormpike first aid station
+    {1325, 1326,1327,1328},
+    //Stormpike Graveyard
+    {1333,1335,1334,1336},
+    //Stoneheart Grave
+    {1302,1304,1301,1303},
+    //Snowfall Grave
+    {1341,1343,1342,1344},
+    //Iceblood grave
+    {1346,1348,1347,1349},
+    //Frostwolf Grave
+    {1337,1339,1338,1340},
+    //Frostwolf Hut
+    {1329,1331,1330,1332},
+    //Dunbaldar South Bunker
+    {1361,1375,1370,1378},
+    //Dunbaldar North Bunker
+    {1362,1374,1371,1379},
+    //Icewing Bunker
+    {1363,1376,1372,1380},
+    //Stoneheart Bunker
+    {1364,1377,1373,1381},
+    //Iceblood Tower
+    {1368,1390,1385,1395},
+    //Tower Point
+    {1367,1389,1384,1394},
+    //Frostwolf East
+    {1366,1388,1383,1393},
+    //Frostwolf West
+    {1365,1387,1382,1392},
+};
+
+enum BG_AV_QuestIds
+{
+    AV_QUEST_A_SCRAPS1      = 7223,
+    AV_QUEST_A_SCRAPS2      = 6781,
+    AV_QUEST_H_SCRAPS1      = 7224,
+    AV_QUEST_H_SCRAPS2      = 6741,
+    AV_QUEST_A_COMMANDER1   = 6942, //soldier
+    AV_QUEST_H_COMMANDER1   = 6825,
+    AV_QUEST_A_COMMANDER2   = 6941, //leutnant
+    AV_QUEST_H_COMMANDER2   = 6826,
+    AV_QUEST_A_COMMANDER3   = 6943, //commander
+    AV_QUEST_H_COMMANDER3   = 6827,
+    AV_QUEST_A_BOSS1        = 7386, // 5 cristal/blood
+    AV_QUEST_H_BOSS1        = 7385,
+    AV_QUEST_A_BOSS2        = 6881, // 1
+    AV_QUEST_H_BOSS2        = 6801,
+    AV_QUEST_A_NEAR_MINE    = 5892, //the mine near start location of team
+    AV_QUEST_H_NEAR_MINE    = 5893,
+    AV_QUEST_A_OTHER_MINE   = 6982, //the other mine ;)
+    AV_QUEST_H_OTHER_MINE   = 6985,
+    AV_QUEST_A_RIDER_HIDE   = 7026,
+    AV_QUEST_H_RIDER_HIDE   = 7002,
+    AV_QUEST_A_RIDER_TAME   = 7027,
+    AV_QUEST_H_RIDER_TAME   = 7001
+};
+
+struct BG_AV_NodeInfo
+{
+    uint16       TotalOwner;
+    uint16       Owner;
+    uint16       PrevOwner;
+    BG_AV_States State;
+    BG_AV_States PrevState;
+    int          Timer;
+    bool         Tower;
+};
+
+inline BG_AV_Nodes &operator++(BG_AV_Nodes &i){ return i = BG_AV_Nodes(i + 1); }
+
 class BattleGroundAVScore : public BattleGroundScore
 {
@@ -52,10 +1508,74 @@
         void RemovePlayer(Player *plr,uint64 guid);
         void HandleAreaTrigger(Player *Source, uint32 Trigger);
-        //bool SetupBattleGround();
-
-        /* Scorekeeping */
-        void UpdatePlayerScore(Player *Source, uint32 type, uint32 value);
+        bool SetupBattleGround();
+        virtual void ResetBGSubclass();
+
+        /*general stuff*/
+        void UpdateScore(uint16 team, int16 points);
+       void UpdatePlayerScore(Player *Source, uint32 type, uint32 value);
+
+        /*handlestuff*/ //these are functions which get called from extern
+        virtual void EventPlayerClickedOnFlag(Player *source, GameObject* target_obj);
+        void HandleKillPlayer(Player* player, Player *killer);
+        void HandleKillUnit(Creature *unit, Player *killer);
+        void HandleQuestComplete(uint32 questid, Player *player);
+        bool PlayerCanDoMineQuest(int32 GOId,uint32 team);
+
+
+        void EndBattleGround(uint32 winner);
+
+        virtual WorldSafeLocsEntry const* GetClosestGraveYard(float x, float y, float z, uint32 team);
 
     private:
-};
+        /* Nodes occupying */
+        void EventPlayerAssaultsPoint(Player* player, uint32 object);
+        void EventPlayerDefendsPoint(Player* player, uint32 object);
+        void EventPlayerDestroyedPoint(BG_AV_Nodes node);
+
+        void AssaultNode(BG_AV_Nodes node,uint16 team);
+        void DestroyNode(BG_AV_Nodes node);
+        void InitNode(BG_AV_Nodes node, uint16 team, bool tower);
+        void DefendNode(BG_AV_Nodes node, uint16 team);
+
+        void PopulateNode(BG_AV_Nodes node);
+        void DePopulateNode(BG_AV_Nodes node);
+
+        const BG_AV_Nodes GetNodeThroughObject(uint32 object);
+        const uint32 GetObjectThroughNode(BG_AV_Nodes node);
+        const char* GetNodeName(BG_AV_Nodes node);
+        const bool IsTower(BG_AV_Nodes node) {   return m_Nodes[node].Tower; }
+
+
+        /*mine*/
+        void ChangeMineOwner(uint8 mine, uint32 team, bool initial=false);
+
+        /*worldstates*/
+        void FillInitialWorldStates(WorldPacket& data);
+        const uint8 GetWorldStateType(uint8 state, uint16 team);
+        void SendMineWorldStates(uint32 mine);
+        void UpdateNodeWorldState(BG_AV_Nodes node);
+
+        /*general */
+        Creature* AddAVCreature(uint16 cinfoid, uint16 type);
+        const uint16 GetBonusHonor(uint8 kills); //TODO remove this when mangos handles this right
+
+        /*variables */
+        int32 m_Team_Scores[2];
+        uint32 m_Team_QuestStatus[2][9]; //[x][y] x=team y=questcounter
+
+        BG_AV_NodeInfo m_Nodes[BG_AV_NODES_MAX];
+
+        uint32 m_Mine_Owner[2];
+        uint32 m_Mine_PrevOwner[2]; //only for worldstates needed
+        int32 m_Mine_Timer; //ticks for both teams
+        uint32 m_Mine_Reclaim_Timer[2];
+        uint32 m_CaptainBuffTimer[2];
+        bool m_CaptainAlive[2];
+
+        uint8 m_MaxLevel; //TODO remove this when battleground-getmaxlevel() returns something usefull
+        bool m_IsInformedNearVictory[2];
+
+
+};
+
 #endif
Index: /trunk/src/bindings/scripts/scripts/npc/npcs_special.cpp
===================================================================
--- /trunk/src/bindings/scripts/scripts/npc/npcs_special.cpp (revision 282)
+++ /trunk/src/bindings/scripts/scripts/npc/npcs_special.cpp (revision 283)
@@ -826,69 +826,4 @@
 }
 
-struct TRINITY_DLL_DECL npc_steam_tonkAI : public ScriptedAI
-{
-    npc_steam_tonkAI(Creature *c) : ScriptedAI(c) {Reset();}
-
-    void Reset() {}
-    void Aggro(Unit *who) {}
-    
-    void OnPossess(bool apply)
-    {
-        if (apply)
-        {
-            // Initialize the action bar without the melee attack command
-            m_creature->InitCharmInfo(m_creature);
-            m_creature->GetCharmInfo()->InitEmptyActionBar(false);
-
-            m_creature->SetAggressive(false);
-        }
-        else
-            m_creature->SetAggressive(true);
-    }
-
-};
-
-CreatureAI* GetAI_npc_steam_tonk(Creature *_Creature)
-{
-    return new npc_steam_tonkAI(_Creature);
-}
-
-#define SPELL_TONK_MINE_DETONATE 25099   
-
-struct TRINITY_DLL_DECL npc_tonk_mineAI : public ScriptedAI
-{
-    npc_tonk_mineAI(Creature *c) : ScriptedAI(c) 
-    {
-        m_creature->SetAggressive(false);
-        Reset();
-    }
-
-    uint32 ExplosionTimer;
-
-    void Reset()
-    {
-        ExplosionTimer = 3000;
-    }
-
-    void Aggro(Unit *who) {}
-    void AttackStart(Unit *who) {}
-    void MoveInLineOfSight(Unit *who) {}
-
-    void UpdateAI(const uint32 diff)
-    {
-        if (ExplosionTimer < diff)
-        {
-            m_creature->CastSpell(m_creature, SPELL_TONK_MINE_DETONATE, true);
-            m_creature->setDeathState(DEAD); // unsummon it
-        } else
-            ExplosionTimer -= diff;
-    }
-};
-
-CreatureAI* GetAI_npc_tonk_mine(Creature *_Creature)
-{
-    return new npc_tonk_mineAI(_Creature);
-}
-
 void AddSC_npcs_special()
 {
@@ -941,13 +876,3 @@
     newscript->pGossipSelect = &GossipSelect_npc_sayge;
     newscript->RegisterSelf();
-
-    newscript = new Script;
-    newscript->Name="npc_steam_tonk";
-    newscript->GetAI = &GetAI_npc_steam_tonk;
-    newscript->RegisterSelf();
-
-    newscript = new Script;
-    newscript->Name="npc_tonk_mine";
-    newscript->GetAI = &GetAI_npc_tonk_mine;
-    newscript->RegisterSelf();
-}
+}
Index: /trunk/sql/updates/285_world.sql
===================================================================
--- /trunk/sql/updates/285_world.sql (revision 283)
+++ /trunk/sql/updates/285_world.sql (revision 283)
@@ -0,0 +1,470 @@
+-- general stuff
+
+REPLACE INTO gameobject_template VALUES (178364,1,5773,"Horde Banner","",84,0,1,0,1479,196608,180101,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (178365,1,5771,"Alliance Banner","",83,0,1,0,1479,196608,180100,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (178925,1,5651,"Alliance Banner","",83,0,1,0,1479,196608,180421,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (178940,1,5653,"Contested Banner","",83,0,1,0,1479,196608,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (178943,1,5652,"Horde Banner","",84,0,1,0,1479,196608,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (179286,1,5772,"Contested Banner","",83,0,1,0,1479,196608,180102,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (179287,1,5774,"Contested Banner","",84,0,1,0,1479,0,180102,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (179435,1,5654,"Contested Banner","",84,0,1,0,1479,196608,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (180100,6,2232,"Alliance Banner Aura","",0,0,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (180101,6,1311,"Horde Banner Aura","",0,0,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (180102,6,266,"Neutral Banner Aura","",0,0,2,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (180418,1,6211,"Snowfall Banner","",0,0,1,0,1479,196608,180100,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (180421,6,2232,"Alliance Banner Aura, Large","",0,0,5,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (180422,6,1311,"Horde Banner Aura, Large","",0,0,5,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (180423,6,266,"Neutral Banner Aura, Large","",0,0,5,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+REPLACE INTO gameobject_template VALUES (180424,0,3751,"Alterac Valley Gate","",100,0,3.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"");
+
+-- following is the player loot.. it takes the id 1 - be sure that i don't delete anything
+REPLACE INTO `world`.`creature_loot_template` (`entry` ,`item` ,`ChanceOrQuestChance` ,`groupid` ,`mincountOrRef` ,`maxcount` ,`lootcondition` ,`condition_value1` ,`condition_value2`)
+VALUES ('1', '17306', '33', '0', '5', '15',  '6', '67', '0'),
+('1', '17422', '100', '0', '20', '40', '0', '0', '0'),
+('1', '17423', '33', '0', '5', '15',  '6', '469', '0'),
+( '1', '17502', '30', '1', '5', '10', '6', '469', '0' ),
+( '1', '17503', '30', '1', '5', '10', '6', '469', '0'),
+( '1', '17504', '30', '1', '5', '10', '6', '469', '0' ),
+( '1', '17326', '30', '2', '5', '10', '6', '67', '0' ),
+( '1', '17327', '30', '2', '5', '10', '6', '67', '0' ),
+( '1', '17328', '30', '2', '5', '10', '6', '67', '0' );
+
+-- blizzlike mobs in the mines don't have any loot (not even gold, it doesn't show the looticon if i go with my mouse over them)
+-- broken after the strange new loot-table appeared (but not important)  delete from creature_loot_template where entry in (13396,13080,13098,13078,13397,13099,13081,13079,11603,11604,11605,11677,10982,13317,13096,13087,13086,13316,13097,13089,13088);
+-- TODO: write own loottable
+
+
+
+-- language
+
+delete from trinity_string where entry>716 and entry<750;
+INSERT INTO trinity_string VALUES
+(717,'Alliance',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(718,'Horde',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(719,'%s was destroyed by the %s!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(720,'The %s is under attack! If left unchecked, the %s will destroy it!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(721,'The %s was taken by the %s!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(722,'The %s was taken by the %s!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(723,'The %s was taken by the %s!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(724,'The %s is under attack! If left unchecked, the %s will capture it!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(725,'The %s has taken the %s! Its supplies will now be used for reinforcements!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(726,'Irondeep Mine',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(727,'Coldtooth Mine',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(728,'Stormpike Aid Station',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(729,'Dun Baldar South Bunker',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(730,'Dun Baldar North Bunker',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(731,'Stormpike Graveyard',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(732,'Icewing Bunker',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(733,'Stonehearth Graveyard',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(734,'Stonehearth Bunker',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(735,'Snowfall Graveyard',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(736,'Iceblood Tower',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(737,'Iceblood Graveyard',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(738,'Tower Point',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(739,'Frostwolf Graveyard',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(740,'East Frostwolf Tower',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(741,'West Frostwolf Tower',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(742,'Frostwolf Relief Hut',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(743,'The Battle for Alterac Valley begins in 1 minute.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(744,'The Battle for Alterac Valley begins in 30 seconds. Prepare yourselves!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(745,'The Battle for Alterac Valley has begun!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(746,'The Alliance Team is running out of reinforcements!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(747,'The Horde Team is running out of reinforcements!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(748,'The Frostwolf General is Dead!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
+(749,'The Stormpike General is Dead!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL)
+;
+
+UPDATE trinity_string SET content_loc3='Allianz' WHERE entry=717;
+UPDATE trinity_string SET content_loc3='Horde' WHERE entry=718;
+
+UPDATE trinity_string SET content_loc3='%s wurde von der %s zerstÃ¶rt!' WHERE entry=719;
+
+UPDATE trinity_string SET content_loc3='%s wird angegriffen! Wenn er unbewacht bleibt, wird die %s ihn zerstÃ¶ren!' WHERE entry=720;
+-- Wenn _sie_ unbewacht bleibt wird allianz _sie_ TODO: don't store towers and gravenames, store complete strings with the names inside it, else i don't know how to implement this feature
+
+UPDATE trinity_string SET content_loc3='%s wurde von der %s erobert!' WHERE entry=721;
+UPDATE trinity_string SET content_loc3='%s wurde von der %s erobert!' WHERE entry=722;
+UPDATE trinity_string SET content_loc3='%s wurde von der %s erobert!' WHERE entry=723;
+
+UPDATE trinity_string SET content_loc3='%s wird angegriffen! Wenn er unbewacht bleibt, wird die %s ihn erobern!' WHERE entry=724;
+-- Wenn _sie_ unbewacht bleibt ... TODO...
+
+UPDATE trinity_string SET content_loc3='Die %s hat die %s eingenommen! Die dort befindlichen VorrÃ€te werden zur VerstÃ€rkung eingesetzt!' WHERE entry=725;
+
+UPDATE trinity_string SET content_loc3='Eisenschachtmine' WHERE entry=726;
+UPDATE trinity_string SET content_loc3='EisbeiÃermine' WHERE entry=727;
+UPDATE trinity_string SET content_loc3='Das Lazarett der Sturmlanzen' WHERE entry=728;
+UPDATE trinity_string SET content_loc3='Der SÃŒdbunker von Dun Baldar' WHERE entry=729;
+UPDATE trinity_string SET content_loc3='Der Nordbunker von Dun Baldar' WHERE entry=730;
+UPDATE trinity_string SET content_loc3='Der Friedhof der Sturmlanzen' WHERE entry=731;
+UPDATE trinity_string SET content_loc3='Der Eisschwingenbunker' WHERE entry=732;
+UPDATE trinity_string SET content_loc3='Der Steinbruchfriedhof' WHERE entry=733;
+UPDATE trinity_string SET content_loc3='Der Steinbruchbunker' WHERE entry=734;
+UPDATE trinity_string SET content_loc3='Der Schneewehenfriedhof' WHERE entry=735;
+UPDATE trinity_string SET content_loc3='Der Eisblutturm' WHERE entry=736;
+UPDATE trinity_string SET content_loc3='Der Eisblutfriedhof' WHERE entry=737;
+UPDATE trinity_string SET content_loc3='Die Turmstellung' WHERE entry=738;
+UPDATE trinity_string SET content_loc3='Der Friedhof der FrostwÃ¶lfe' WHERE entry=739;
+UPDATE trinity_string SET content_loc3='Der Ã¶stliche Frostwolfturm' WHERE entry=740;
+UPDATE trinity_string SET content_loc3='Der westliche Frostwolfturm' WHERE entry=741;
+UPDATE trinity_string SET content_loc3='Die HeilerhÃŒtte der FrostwÃ¶lfe' WHERE entry=742;
+UPDATE trinity_string SET content_loc3='Der Kampf um das Alteractal beginnt in 1 Minute.' WHERE entry=743;
+UPDATE trinity_string SET content_loc3='Der Kampf um das Alteractal beginnt in 30 Sekunden.' WHERE entry=744;
+UPDATE trinity_string SET content_loc3='Der Kampf um das Alteractal hat begonnen!' WHERE entry=745;
+UPDATE trinity_string SET content_loc3='Die Allianz hat nurnoch wenige VerstÃ€rkungspunkte' WHERE entry=746; -- TODO find right msg
+UPDATE trinity_string SET content_loc3='Die Horde hat nurnoch wenige VerstÃ€rkungspunkte' WHERE entry=747; -- TODO same here
+UPDATE trinity_string SET content_loc3='Der General der Allianz ist tot!' WHERE entry=748;
+UPDATE trinity_string SET content_loc3='Der General der Horde ist tot!' WHERE entry=749;
+
+
+-- CHAT_MSG_BG_SYSTEM_ALLIANCE', 'txt': '$N hat den Schneewehenfriedhof besetzt! Wenn niemand eingreift, erlangt die Allianz die Kontrolle \xc3\xbcber ihn
+
+-- creature stats
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (11946, 0, 11894, 0, 11894, 0, 'Drek\'Thar', 'Frostwolf General', '', 72, 72, 220000, 250000, 0, 0, 0, 1214, 1214, 1, 2, 1, 3, 5000, 8000, 0, 15000, 2000, 0, 4096, 0, 0, 0, 0, 0, 0, 203.77, 289.86, 100, 7, 4, 0, 11946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 1, 3, 0, 1, 994, 80428891, 1, 'mob_eventai');
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (11947, 0, 11895, 0, 11895, 0, 'Captain Galvangar', 'Frostwolf Captain', '', 71, 71, 180000, 200000, 0, 0, 0, 1214, 1214, 0, 2, 1, 3, 4000, 4000, 0, 8000, 2000, 0, 4160, 0, 0, 0, 0, 0, 0, 172.1, 240.07, 100, 7, 4, 11947, 11947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24055, 31418, '', 1, 3, 0, 1, 1389, 80428891, 1, 'mob_eventai');
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (11948, 0, 11896, 0, 11896, 0, 'Vanndar Stormpike', 'Stormpike General', '', 73, 73, 220000, 250000, 0, 0, 0, 1216, 1216, 0, 2, 1, 3, 5000, 8000, 0, 15000, 1158, 1274, 0, 0, 0, 0, 0, 0, 0, 203.77, 289.86, 100, 7, 4, 11948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 1, 3, 0, 1, 0, 80428891, 1, 'mob_eventai');
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (11949, 0, 12823, 0, 12823, 0, 'Captain Balinda Stonehearth', 'Stormpike Captain', '', 71, 71, 180000, 200000, 38772, 38772, 0, 1216, 1216, 0, 2, 1, 3, 1000, 2000, 0, 2000, 2000, 0, 4096, 0, 0, 0, 0, 0, 0, 172.1, 240.07, 100, 7, 4, 11949, 11949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19805, 25868, '', 1, 3, 0, 1, 1364, 80428891, 1, 'mob_eventai');
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (13358, 0, 13390, 0, 13393, 0, 'Stormpike Bowman', '', '', 69, 70, 4500, 10000, 0, 0, 0, 1216, 1216, 0, 1.27, 1, 0, 65, 135, 0, 696, 2000, 0, 4608, 0, 0, 0, 0, 0, 0, 200, 600, 1000, 7, 0, 13358, 13358, 0, 0, 0, 0, 0, 0, 0, 22121, 0, 0, 0, 0, 260, 344, '', 0, 3, 0, 1, 8, 0, 0, 'mob_eventai');
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (13359, 0, 13398, 0, 13401, 0, 'Frostwolf Bowman', '', '', 69, 70, 4500, 10000, 0, 0, 0, 1214, 1214, 0, 1.27, 1, 0, 66, 137, 0, 712, 2000, 0, 4608, 0, 0, 0, 0, 0, 0, 200, 600, 1000, 7, 0, 13359, 13359, 0, 0, 0, 0, 0, 0, 0, 22121, 0, 0, 0, 0, 262, 347, '', 0, 3, 0, 1, 6, 0, 0, 'mob_eventai');
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (14770, 0, 14797, 0, 14798, 0, 'Dun Baldar North Warmaster', '', '', 70, 70, 139780, 139780, 0, 0, 0, 1214, 1214, 0, 2, 1, 3, 3000, 5000, 0, 2175, 2000, 0, 4096, 0, 0, 0, 0, 0, 0, 62.016, 85.272, 100, 7, 0, 14770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 0, 1, 1416, 0, 0, 'mob_eventai');
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (14771, 0, 14798, 0, 14799, 0, 'Dun Baldar South Warmaster', '', '', 70, 70, 36600, 36600, 0, 0, 0, 1214, 1214, 0, 2, 1, 3, 3000, 6000, 0, 10000, 2000, 0, 4096, 0, 0, 0, 0, 0, 0, 62.016, 85.272, 100, 7, 0, 14771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 0, 1, 1416, 0, 0, 'mob_eventai');
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (14772, 0, 14798, 0, 14800, 0, 'East Frostwolf Warmaster', '', '', 70, 70, 139362, 139362, 0, 0, 0, 1214, 1214, 0, 2, 1, 3, 3000, 6000, 0, 10000, 2000, 0, 4096, 0, 0, 0, 0, 0, 0, 59.9488, 82.4296, 100, 7, 0, 14772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6049, 7904, '', 1, 3, 0, 1, 1416, 0, 0, 'mob_eventai');
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (14773, 0, 14797, 0, 14797, 0, 'Iceblood Warmaster', '', '', 70, 70, 141144, 141144, 0, 0, 0, 1214, 1214, 0, 2, 1, 3, 3000, 6000, 0, 10000, 2000, 0, 4096, 0, 0, 0, 0, 0, 0, 62.016, 85.272, 100, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 1, 3, 0, 1, 1416, 0, 0, 'mob_eventai');
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (14774, 0, 14800, 0, 14800, 0, 'Icewing Warmaster', '', '', 70, 70, 122300, 122300, 0, 0, 0, 1214, 1214, 0, 2, 1, 3, 3000, 6000, 0, 10000, 2000, 0, 4096, 0, 0, 0, 0, 0, 0, 62.016, 85.272, 100, 7, 0, 14774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6049, 7904, '', 1, 3, 0, 1, 1416, 0, 0, 'mob_eventai');
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (14775, 0, 14798, 0, 14800, 0, 'Stonehearth Warmaster', '', '', 70, 70, 140204, 140204, 0, 0, 0, 1214, 1214, 0, 2, 1, 3, 3000, 6000, 0, 10000, 2000, 0, 4096, 0, 0, 0, 0, 0, 0, 62.016, 85.272, 100, 7, 0, 14775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6049, 7904, '', 1, 3, 0, 1, 1416, 0, 0, 'mob_eventai');
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (14776, 0, 14798, 0, 14800, 0, 'Tower Point Warmaster', '', '', 70, 70, 131536, 131536, 0, 0, 0, 1214, 1214, 0, 2, 1, 3, 3000, 6000, 0, 10000, 2000, 0, 4096, 0, 0, 0, 0, 0, 0, 62.016, 85.272, 100, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 1, 3, 0, 1, 1416, 0, 0, 'mob_eventai');
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (14777, 0, 14797, 0, 14798, 0, 'West Frostwolf Warmaster', '', '', 70, 70, 138920, 138920, 0, 0, 0, 1214, 1214, 0, 2, 1, 3, 3000, 6000, 0, 10000, 2000, 0, 4096, 0, 0, 0, 0, 0, 0, 59.9488, 82.4296, 100, 7, 0, 14777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 1, 3, 0, 1, 1416, 0, 0, 'mob_eventai');
+
+REPLACE INTO creature_template
+   (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`)
+VALUES
+   (25040, 0, 4606, 0, 4606, 0, 'Greater Water Elemental', '', '', 1, 1, 1, 1, 0, 0, 0, 35, 35, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 0, 1, 0, 0, 0, 'mob_eventai');
+
+   
+-- eventai
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1335801, 13358, 0, 0, 100, 1, 1000, 1000, 3000, 3000, 11, 22121, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bowman AV shoot');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1335901, 13359, 0, 0, 100, 1, 1000, 1000, 3000, 3000, 11, 22121, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bowman AV shoot');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194901, 11949, 0, 0, 100, 1, 10000, 15000, 10000, 15000, 11, 46608, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Balinda AV AoE');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194902, 11949, 0, 0, 100, 1, 6000, 8000, 10000, 20000, 11, 38384, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Balinda AV CoC');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194903, 11949, 0, 0, 50, 1, 1000, 1000, 4000, 6000, 11, 46988, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Balinda AV fireball');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194904, 11949, 0, 0, 50, 1, 1000, 2000, 5000, 7000, 11, 46987, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Balinda AV frostbolt');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194905, 11949, 0, 0, 100, 1, 3000, 4000, 20000, 20000, 11, 45067, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Balinda AV Summon');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194801, 11948, 0, 0, 100, 1, 2000, 3000, 15000, 18000, 11, 19135, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vanndar AV avatar');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194802, 11948, 0, 0, 100, 1, 4000, 4000, 6000, 15000, 11, 15588, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Vanndar AV thunderclap');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194803, 11948, 0, 0, 100, 1, 6000, 8000, 5000, 25000, 11, 15589, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vanndar AV cleave');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (2504001, 25040, 0, 0, 100, 1, 1000, 1000, 2000, 2000, 11, 46983, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'water element AV waterbolt');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194701, 11947, 0, 0, 100, 1, 1000, 11000, 10000, 16000, 11, 15284, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Galvanar');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194702, 11947, 0, 0, 100, 1, 2000, 20000, 10000, 15000, 11, 19134, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'galvanar');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194703, 11947, 0, 0, 100, 1, 1000, 12000, 6000, 20000, 11, 16856, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'galvanar');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194704, 11947, 0, 0, 100, 1, 5000, 20000, 10000, 25000, 11, 15589, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'galvangar');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194705, 11947, 0, 0, 100, 1, 5000, 20000, 10000, 25000, 11, 13736, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'galvangar');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194601, 11946, 0, 0, 100, 1, 5000, 6000, 20000, 21000, 11, 8269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'drekthar');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194602, 11946, 0, 0, 100, 1, 10000, 12000, 10000, 15000, 11, 19128, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'drekthar');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194603, 11946, 0, 0, 100, 1, 1000, 20000, 8000, 20000, 11, 15589, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'drekthar');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194604, 11946, 0, 0, 100, 1, 1000, 25000, 7000, 25000, 11, 13736, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'drejthar');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477001, 14770, 0, 0, 100, 1, 10, 10, 10000, 15000, 11, 22911, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477002, 14770, 0, 0, 100, 1, 3000, 5000, 10000, 15000, 11, 40504, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477003, 14770, 0, 0, 100, 1, 5000, 15000, 10000, 20000, 11, 15589, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477101, 14771, 0, 0, 100, 1, 10, 10, 10000, 15000, 11, 22911, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477102, 14771, 0, 0, 100, 1, 3000, 5000, 10000, 15000, 11, 40504, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477103, 14771, 0, 0, 100, 1, 5000, 15000, 10000, 20000, 11, 15589, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477201, 14772, 0, 0, 100, 1, 10, 10, 10000, 15000, 11, 22911, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477202, 14772, 0, 0, 100, 1, 3000, 5000, 10000, 15000, 11, 40504, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477203, 14772, 0, 0, 100, 1, 5000, 15000, 10000, 20000, 11, 15589, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477301, 14773, 0, 0, 100, 1, 10, 10, 10000, 15000, 11, 22911, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477302, 14773, 0, 0, 100, 1, 3000, 5000, 10000, 15000, 11, 40504, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477303, 14773, 0, 0, 100, 1, 5000, 15000, 10000, 20000, 11, 15589, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477401, 14774, 0, 0, 100, 1, 10, 10, 10000, 15000, 11, 22911, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477402, 14774, 0, 0, 100, 1, 3000, 5000, 10000, 15000, 11, 40504, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477403, 14774, 0, 0, 100, 1, 5000, 15000, 10000, 20000, 11, 15589, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477501, 14775, 0, 0, 100, 1, 10, 10, 10000, 15000, 11, 22911, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477502, 14775, 0, 0, 100, 1, 3000, 5000, 10000, 15000, 11, 40504, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477503, 14775, 0, 0, 100, 1, 5000, 15000, 10000, 20000, 11, 15589, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477601, 14776, 0, 0, 100, 1, 10, 10, 10000, 15000, 11, 22911, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477602, 14776, 0, 0, 100, 1, 3000, 5000, 10000, 15000, 11, 40504, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477603, 14776, 0, 0, 100, 1, 5000, 15000, 10000, 20000, 11, 15589, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477701, 14777, 0, 0, 100, 1, 10, 10, 10000, 15000, 11, 22911, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477702, 14777, 0, 0, 100, 1, 3000, 5000, 10000, 15000, 11, 40504, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477703, 14777, 0, 0, 100, 1, 5000, 15000, 10000, 20000, 11, 15589, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194906, 11949, 7, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1194804, 11948, 7, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477004, 14770, 7, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477104, 14771, 7, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477204, 14772, 7, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477304, 14773, 7, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477404, 14774, 7, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477504, 14775, 7, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477604, 14776, 7, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '');
+
+REPLACE INTO eventai_scripts
+   (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`)
+VALUES
+   (1477704, 14777, 7, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '');
Index: /trunk/sql/updates/285_world.sql.disabled
===================================================================
--- /trunk/sql/updates/285_world.sql.disabled (revision 283)
+++ /trunk/sql/updates/285_world.sql.disabled (revision 283)
@@ -0,0 +1,110 @@
+Warning: these sql may have conflict with official DB.
+Use them at your own risk!
+
+/*
+-- people with custom content now have a problem
+-- all creatures and gameobjects where removed from alterac, cause udb have wrong spawns..
+delete from creature where map=30;
+delete from gameobject where map=30;
+
+-- gameobject-spawns
+
+-- following gameobjects are static
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,-1423.16,-318.436,89.1136,2.35619,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,-1290.27,-172.471,72.1853,3.06305,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,-1286.25,-184.48,71.8334,-2.05076,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,-1282.21,-284.083,87.256,-0.0610855,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,-1280.17,-220.537,72.2686,1.62316,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,-1256.55,-280.278,73.9473,-0.0610855,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,-1241.25,-345.115,59.6867,0.357794,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,-1215.59,-371.946,56.5293,0.357794,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,-1202.8,-271.599,72.5805,0.357794,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,-1140.82,-343.392,50.9077,-2.7838,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,-1139.68,-356.288,51.264,-0.706858,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,-1099.21,-266.231,57.8849,-2.28638,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,-1082.6,-266.681,57.8575,2.40855,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,30.4168,-428.853,41.528,-2.59181,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,31.2216,-428.08,41.528,0.549779,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2061,30,50.6401,-421.166,44.7325,-0.00875192,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (2066,30,-743.427,-398.242,76.4266,0.872664,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (3832,30,-1235.57,-241.478,73.4377,1.48353,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (3833,30,-1248.85,-254.06,73.4377,1.48353,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (3834,30,-1248.15,-245.599,73.4377,-0.0523605,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (3835,30,-1237.21,-260.168,73.4377,1.48353,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (3836,30,-1260.37,-248.767,77.9454,1.48353,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (3837,30,-1249.32,-244.907,92.3372,0.401426,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (3838,30,-1250.09,-254.604,92.3015,0.148352,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (22205,30,50.6401,-421.166,44.7325,-0.00875192,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (22207,30,30.4168,-428.853,41.528,-2.59181,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (22208,30,31.2216,-428.08,41.528,0.549779,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (28048,30,41.1672,-426.866,44.6828,2.7838,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (28049,30,39.0988,-425.746,44.688,-0.619592,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (28605,30,25.2482,-433.104,47.6369,2.38237,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (28606,30,25.758,-425.837,47.6369,-1.98095,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (28607,30,27.6786,-427.69,47.6369,-2.67908,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (29784,30,-1338.28,-297.628,91.4867,0.248971,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (31442,30,-1338.28,-297.628,91.4867,0.248971,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (50984,30,-1250.39,-310.191,61.185,-1.10828,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (51704,30,-1245.2,-307.059,63.3199,3.07959,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (51705,30,-1258.23,-310.977,63.2015,0.862906,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (177261,30,-1290.27,-172.471,72.1853,3.06305,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (177262,30,-1286.25,-184.48,71.8334,-2.05076,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (177263,30,-1280.17,-220.537,72.2686,1.62316,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (177292,30,-1099.21,-266.231,57.8849,-2.28638,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (177293,30,-1082.6,-266.681,57.8575,2.40855,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (177405,30,-1140.82,-343.392,50.9077,-2.7838,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (177406,30,-1139.68,-356.288,51.264,-0.706858,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (177408,30,-743.427,-398.242,76.4266,0.872664,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (177409,30,-1215.59,-371.946,56.5293,0.357794,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (177410,30,-1241.25,-345.115,59.6867,0.357794,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (177411,30,-1202.8,-271.599,72.5805,0.357794,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (177412,30,-1282.21,-284.083,87.256,-0.0610855,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (177413,30,-1256.55,-280.278,73.9473,-0.0610855,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (178684,30,649.265,-59.1102,41.5476,-2.68781,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (178685,30,646.207,-57.2428,41.6587,-0.157079,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179384,30,-145.341,-444.846,26.4163,-0.0523596,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179384,30,560.834,-75.4266,37.9558,0.785398,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179385,30,-155.405,-440.24,33.2862,2.34747,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179385,30,550.678,-79.8234,44.8257,-3.09796,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179386,30,-150.787,-459.829,26.4163,0.558507,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179386,30,568.326,-89.4992,37.9558,1.39626,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179387,30,-153.748,-438.639,33.2862,-2.88852,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179387,30,550.597,-77.5213,44.8257,-2.05076,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179388,30,-149.057,-461.089,26.4163,1.38754,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179388,30,570.419,-89.0567,37.9558,2.2253,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179389,30,-168.342,-458.4,33.2862,-0.445059,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179389,30,555.517,-101.589,44.8257,0.392699,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179390,30,-142.968,-444.076,26.4163,-2.23402,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179390,30,561.851,-73.1481,37.9558,-1.39626,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179391,30,-172.363,-452.824,33.2796,0.62832,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179391,30,548.682,-100.846,44.8191,1.46608,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179392,30,-171.282,-456.892,33.2796,1.63188,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179392,30,552.429,-102.764,44.8191,2.46964,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179393,30,-172.356,-453.88,33.2796,0.322886,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179393,30,549.472,-101.547,44.8191,1.16064,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179394,30,-171.882,-454.632,33.2796,0.759218,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179394,30,550.347,-101.698,44.8191,1.59698,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179395,30,-171.656,-455.671,33.2796,0.0610861,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179395,30,551.271,-102.226,44.8191,0.898843,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179396,30,-170.699,-458.41,33.2796,-1.02974,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179396,30,553.947,-103.347,44.8191,-0.191986,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179397,30,-170.14,-457.609,33.2796,-0.680678,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179397,30,553.725,-102.396,44.8191,0.15708,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179419,30,-1423.16,-318.436,89.1136,2.35619,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179437,30,618.748,-52.1126,42.1122,-0.0698131,60);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179438,30,-1181.1,-370.747,53.6246,2.68781,60);
+
+-- nest 2 gos were inserted by hand..
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179024,30,40.0913,0.0153897,-4.0962,0.96131,120);
+INSERT INTO `mangos`.`gameobject` (`id` ,`map`,position_x,position_y,position_z,orientation,spawntimesecs) VALUES (179025,30,-1552.55, -359.738, 66.948,2.8875,120);
+
+
+-- hack
+-- removes the damage from the fire-gos (used for destroyed towers) - but this is not blizzlike TODO remove this hack
+ UPDATE `mangos`.`gameobject_template` SET `type` = '5',`data0` = '0',`data1` = '0',`data2` = '0',`data3` = '1',`data5` = '0',`data10` = '0' WHERE `gameobject_template`.`entry` =179065 LIMIT 1 ;
+
+-- bowman apply aura entangling root (so they can't move)
+DELETE FROM `creature_template_addon` WHERE `entry` IN(13358,13359);
+INSERT INTO `creature_template_addon` (`entry`, `auras`) VALUES ('13358', '42716 0 42716 1');
+INSERT INTO `creature_template_addon` (`entry`, `auras`) VALUES ('13359', '42716 0 42716 1');
+*/
