mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 01:37:00 +00:00
Cleanups in instance_template and map entrance DBC data.
This commit is contained in:
parent
43cc07fbbc
commit
48254e3879
7 changed files with 63 additions and 51 deletions
|
|
@ -2036,10 +2036,6 @@ CREATE TABLE `instance_template` (
|
||||||
`parent` smallint(5) unsigned NOT NULL default '0',
|
`parent` smallint(5) unsigned NOT NULL default '0',
|
||||||
`levelMin` tinyint(3) unsigned NOT NULL default '0',
|
`levelMin` tinyint(3) unsigned NOT NULL default '0',
|
||||||
`levelMax` tinyint(3) unsigned NOT NULL default '0',
|
`levelMax` tinyint(3) unsigned NOT NULL default '0',
|
||||||
`startLocX` float default NULL,
|
|
||||||
`startLocY` float default NULL,
|
|
||||||
`startLocZ` float default NULL,
|
|
||||||
`startLocO` float default NULL,
|
|
||||||
`script` varchar(128) NOT NULL default '',
|
`script` varchar(128) NOT NULL default '',
|
||||||
PRIMARY KEY (`map`)
|
PRIMARY KEY (`map`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
|
||||||
5
sql/updates/9999_01_mangos_instance_template.sql
Normal file
5
sql/updates/9999_01_mangos_instance_template.sql
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
ALTER TABLE instance_template
|
||||||
|
DROP COLUMN startLocX,
|
||||||
|
DROP COLUMN startLocY,
|
||||||
|
DROP COLUMN startLocZ,
|
||||||
|
DROP COLUMN startLocO;
|
||||||
|
|
@ -1108,9 +1108,9 @@ struct MapEntry
|
||||||
// 56 intro text flags
|
// 56 intro text flags
|
||||||
uint32 multimap_id; // 57 index in LoadingScreens.dbc
|
uint32 multimap_id; // 57 index in LoadingScreens.dbc
|
||||||
//float BattlefieldMapIconScale; // 58 BattlefieldMapIconScale
|
//float BattlefieldMapIconScale; // 58 BattlefieldMapIconScale
|
||||||
int32 entrance_map; // 59 map_id of entrance map
|
int32 ghost_entrance_map; // 59 map_id of entrance map in ghost mode (continent always and in most cases = normal entrance)
|
||||||
float entrance_x; // 60 entrance x coordinate (if exist single entry)
|
float ghost_entrance_x; // 60 entrance x coordinate in ghost mode (in most cases = normal entrance)
|
||||||
float entrance_y; // 61 entrance y coordinate (if exist single entry)
|
float ghost_entrance_y; // 61 entrance y coordinate in ghost mode (in most cases = normal entrance)
|
||||||
//uint32 timeOfDayOverride; // 62 time of day override
|
//uint32 timeOfDayOverride; // 62 time of day override
|
||||||
uint32 addon; // 63 expansion
|
uint32 addon; // 63 expansion
|
||||||
// 64 some kind of time?
|
// 64 some kind of time?
|
||||||
|
|
|
||||||
|
|
@ -189,14 +189,11 @@ public:
|
||||||
|
|
||||||
struct InstanceTemplate
|
struct InstanceTemplate
|
||||||
{
|
{
|
||||||
uint32 map;
|
uint32 map; // instance map
|
||||||
uint32 parent;
|
uint32 parent; // non-continent parent instance (for instance with entrance in another instances)
|
||||||
|
// or 0 (not related to continent 0 map id)
|
||||||
uint32 levelMin;
|
uint32 levelMin;
|
||||||
uint32 levelMax;
|
uint32 levelMax;
|
||||||
float startLocX;
|
|
||||||
float startLocY;
|
|
||||||
float startLocZ;
|
|
||||||
float startLocO;
|
|
||||||
uint32 script_id;
|
uint32 script_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -347,17 +344,6 @@ class MANGOS_DLL_SPEC Map : public GridRefManager<NGridType>, public MaNGOS::Obj
|
||||||
bool IsBattleGround() const { return i_mapEntry && i_mapEntry->IsBattleGround(); }
|
bool IsBattleGround() const { return i_mapEntry && i_mapEntry->IsBattleGround(); }
|
||||||
bool IsBattleArena() const { return i_mapEntry && i_mapEntry->IsBattleArena(); }
|
bool IsBattleArena() const { return i_mapEntry && i_mapEntry->IsBattleArena(); }
|
||||||
bool IsBattleGroundOrArena() const { return i_mapEntry && i_mapEntry->IsBattleGroundOrArena(); }
|
bool IsBattleGroundOrArena() const { return i_mapEntry && i_mapEntry->IsBattleGroundOrArena(); }
|
||||||
bool GetEntrancePos(int32 &mapid, float &x, float &y)
|
|
||||||
{
|
|
||||||
if(!i_mapEntry)
|
|
||||||
return false;
|
|
||||||
if(i_mapEntry->entrance_map < 0)
|
|
||||||
return false;
|
|
||||||
mapid = i_mapEntry->entrance_map;
|
|
||||||
x = i_mapEntry->entrance_x;
|
|
||||||
y = i_mapEntry->entrance_y;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddObjectToRemoveList(WorldObject *obj);
|
void AddObjectToRemoveList(WorldObject *obj);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4676,17 +4676,42 @@ void ObjectMgr::LoadInstanceTemplate()
|
||||||
|
|
||||||
for(uint32 i = 0; i < sInstanceTemplate.MaxEntry; i++)
|
for(uint32 i = 0; i < sInstanceTemplate.MaxEntry; i++)
|
||||||
{
|
{
|
||||||
InstanceTemplate* temp = (InstanceTemplate*)GetInstanceTemplate(i);
|
InstanceTemplate const* temp = GetInstanceTemplate(i);
|
||||||
if(!temp)
|
if (!temp)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(!MapManager::IsValidMAP(temp->map))
|
MapEntry const* mapEntry = sMapStore.LookupEntry(temp->map);
|
||||||
sLog.outErrorDb("ObjectMgr::LoadInstanceTemplate: bad mapid %d for template!", temp->map);
|
if (!mapEntry)
|
||||||
|
|
||||||
if(!MapManager::IsValidMapCoord(temp->parent,temp->startLocX,temp->startLocY,temp->startLocZ,temp->startLocO))
|
|
||||||
{
|
{
|
||||||
sLog.outErrorDb("ObjectMgr::LoadInstanceTemplate: bad parent entrance coordinates for map id %d template!", temp->map);
|
sLog.outErrorDb("ObjectMgr::LoadInstanceTemplate: bad mapid %d for template!", temp->map);
|
||||||
temp->parent = 0; // will have wrong continent 0 parent, at least existed
|
sInstanceTemplate.EraseEntry(i);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mapEntry->IsContinent())
|
||||||
|
{
|
||||||
|
sLog.outErrorDb("ObjectMgr::LoadInstanceTemplate: continent mapid %d for template!", temp->map);
|
||||||
|
sInstanceTemplate.EraseEntry(i);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (temp->parent > 0)
|
||||||
|
{
|
||||||
|
// check existence
|
||||||
|
MapEntry const* parentEntry = sMapStore.LookupEntry(temp->parent);
|
||||||
|
if (!parentEntry)
|
||||||
|
{
|
||||||
|
sLog.outErrorDb("ObjectMgr::LoadInstanceTemplate: bad parent map id for instance template %d template!", parentEntry,temp->map);
|
||||||
|
const_cast<InstanceTemplate*>(temp)->parent = 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parentEntry->IsContinent())
|
||||||
|
{
|
||||||
|
sLog.outErrorDb("ObjectMgr::LoadInstanceTemplate: parent point to continent map id %u for instance template %d template, ignored, need be set only for non-continent parents!", parentEntry->MapID,temp->map);
|
||||||
|
const_cast<InstanceTemplate*>(temp)->parent = 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -5349,23 +5374,23 @@ WorldSafeLocsEntry const *ObjectMgr::GetClosestGraveYard(float x, float y, float
|
||||||
if(data.team != 0 && team != 0 && data.team != team)
|
if(data.team != 0 && team != 0 && data.team != team)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// find now nearest graveyard at other map
|
// find now nearest graveyard at other (continent) map
|
||||||
if(MapId != entry->map_id)
|
if(MapId != entry->map_id)
|
||||||
{
|
{
|
||||||
// if find graveyard at different map from where entrance placed (or no entrance data), use any first
|
// if find graveyard at different map from where entrance placed (or no entrance data), use any first
|
||||||
if (!mapEntry ||
|
if (!mapEntry ||
|
||||||
mapEntry->entrance_map < 0 ||
|
mapEntry->ghost_entrance_map < 0 ||
|
||||||
mapEntry->entrance_map != entry->map_id ||
|
mapEntry->ghost_entrance_map != entry->map_id ||
|
||||||
(mapEntry->entrance_x == 0 && mapEntry->entrance_y == 0))
|
(mapEntry->ghost_entrance_x == 0 && mapEntry->ghost_entrance_y == 0))
|
||||||
{
|
{
|
||||||
// not have any corrdinates for check distance anyway
|
// not have any coordinates for check distance anyway
|
||||||
entryFar = entry;
|
entryFar = entry;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// at entrance map calculate distance (2D);
|
// at entrance map calculate distance (2D);
|
||||||
float dist2 = (entry->x - mapEntry->entrance_x)*(entry->x - mapEntry->entrance_x)
|
float dist2 = (entry->x - mapEntry->ghost_entrance_x)*(entry->x - mapEntry->ghost_entrance_x)
|
||||||
+(entry->y - mapEntry->entrance_y)*(entry->y - mapEntry->entrance_y);
|
+(entry->y - mapEntry->ghost_entrance_y)*(entry->y - mapEntry->ghost_entrance_y);
|
||||||
if(foundEntr)
|
if(foundEntr)
|
||||||
{
|
{
|
||||||
if(dist2 < distEntr)
|
if(dist2 < distEntr)
|
||||||
|
|
@ -5586,18 +5611,18 @@ void ObjectMgr::LoadAreaTriggerTeleports()
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Searches for the areatrigger which teleports players out of the given map
|
* Searches for the areatrigger which teleports players out of the given map (only direct to continent)
|
||||||
*/
|
*/
|
||||||
AreaTrigger const* ObjectMgr::GetGoBackTrigger(uint32 Map) const
|
AreaTrigger const* ObjectMgr::GetGoBackTrigger(uint32 map_id) const
|
||||||
{
|
{
|
||||||
const MapEntry *mapEntry = sMapStore.LookupEntry(Map);
|
const MapEntry *mapEntry = sMapStore.LookupEntry(map_id);
|
||||||
if(!mapEntry) return NULL;
|
if(!mapEntry) return NULL;
|
||||||
for (AreaTriggerMap::const_iterator itr = mAreaTriggers.begin(); itr != mAreaTriggers.end(); ++itr)
|
for (AreaTriggerMap::const_iterator itr = mAreaTriggers.begin(); itr != mAreaTriggers.end(); ++itr)
|
||||||
{
|
{
|
||||||
if(itr->second.target_mapId == mapEntry->entrance_map)
|
if(itr->second.target_mapId == mapEntry->ghost_entrance_map)
|
||||||
{
|
{
|
||||||
AreaTriggerEntry const* atEntry = sAreaTriggerStore.LookupEntry(itr->first);
|
AreaTriggerEntry const* atEntry = sAreaTriggerStore.LookupEntry(itr->first);
|
||||||
if(atEntry && atEntry->mapid == Map)
|
if(atEntry && atEntry->mapid == map_id)
|
||||||
return &itr->second;
|
return &itr->second;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -293,14 +293,14 @@ void WorldSession::HandleCorpseQueryOpcode(WorldPacket & /*recv_data*/)
|
||||||
// search entrance map for proper show entrance
|
// search entrance map for proper show entrance
|
||||||
if(MapEntry const* corpseMapEntry = sMapStore.LookupEntry(mapid))
|
if(MapEntry const* corpseMapEntry = sMapStore.LookupEntry(mapid))
|
||||||
{
|
{
|
||||||
if(corpseMapEntry->IsDungeon() && corpseMapEntry->entrance_map >= 0)
|
if(corpseMapEntry->IsDungeon() && corpseMapEntry->ghost_entrance_map >= 0)
|
||||||
{
|
{
|
||||||
// if corpse map have entrance
|
// if corpse map have entrance
|
||||||
if(Map const* entranceMap = sMapMgr.CreateBaseMap(corpseMapEntry->entrance_map))
|
if(Map const* entranceMap = sMapMgr.CreateBaseMap(corpseMapEntry->ghost_entrance_map))
|
||||||
{
|
{
|
||||||
mapid = corpseMapEntry->entrance_map;
|
mapid = corpseMapEntry->ghost_entrance_map;
|
||||||
x = corpseMapEntry->entrance_x;
|
x = corpseMapEntry->ghost_entrance_x;
|
||||||
y = corpseMapEntry->entrance_y;
|
y = corpseMapEntry->ghost_entrance_y;
|
||||||
z = entranceMap->GetHeight(x, y, MAX_HEIGHT);
|
z = entranceMap->GetHeight(x, y, MAX_HEIGHT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,8 @@ const char GameObjectInfodstfmt[]="iiissssiifiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii";
|
||||||
const char ItemPrototypesrcfmt[]="iiiisiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiiiiiiiiiifiiifiiiiiifiiiiiifiiiiiifiiiiiifiiiisiiiiiiiiiiiiiiiiiiiiiiiiifiiisiiiii";
|
const char ItemPrototypesrcfmt[]="iiiisiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiiiiiiiiiifiiifiiiiiifiiiiiifiiiiiifiiiiiifiiiisiiiiiiiiiiiiiiiiiiiiiiiiifiiisiiiii";
|
||||||
const char ItemPrototypedstfmt[]="iiiisiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiiiiiiiiiifiiifiiiiiifiiiiiifiiiiiifiiiiiifiiiisiiiiiiiiiiiiiiiiiiiiiiiiifiiiiiiiii";
|
const char ItemPrototypedstfmt[]="iiiisiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiiiiiiiiiifiiifiiiiiifiiiiiifiiiiiifiiiiiifiiiisiiiiiiiiiiiiiiiiiiiiiiiiifiiiiiiiii";
|
||||||
const char PageTextfmt[]="isi";
|
const char PageTextfmt[]="isi";
|
||||||
const char InstanceTemplatesrcfmt[]="iiiiffffs";
|
const char InstanceTemplatesrcfmt[]="iiiis";
|
||||||
const char InstanceTemplatedstfmt[]="iiiiffffi";
|
const char InstanceTemplatedstfmt[]="iiiii";
|
||||||
|
|
||||||
SQLStorage sCreatureStorage(CreatureInfosrcfmt, CreatureInfodstfmt, "entry","creature_template");
|
SQLStorage sCreatureStorage(CreatureInfosrcfmt, CreatureInfodstfmt, "entry","creature_template");
|
||||||
SQLStorage sCreatureDataAddonStorage(CreatureDataAddonInfofmt,"guid","creature_addon");
|
SQLStorage sCreatureDataAddonStorage(CreatureDataAddonInfofmt,"guid","creature_addon");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue