mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 07:37:01 +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',
|
||||
`levelMin` 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 '',
|
||||
PRIMARY KEY (`map`)
|
||||
) 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
|
||||
uint32 multimap_id; // 57 index in LoadingScreens.dbc
|
||||
//float BattlefieldMapIconScale; // 58 BattlefieldMapIconScale
|
||||
int32 entrance_map; // 59 map_id of entrance map
|
||||
float entrance_x; // 60 entrance x coordinate (if exist single entry)
|
||||
float entrance_y; // 61 entrance y coordinate (if exist single entry)
|
||||
int32 ghost_entrance_map; // 59 map_id of entrance map in ghost mode (continent always and in most cases = normal entrance)
|
||||
float ghost_entrance_x; // 60 entrance x coordinate in ghost mode (in most cases = normal entrance)
|
||||
float ghost_entrance_y; // 61 entrance y coordinate in ghost mode (in most cases = normal entrance)
|
||||
//uint32 timeOfDayOverride; // 62 time of day override
|
||||
uint32 addon; // 63 expansion
|
||||
// 64 some kind of time?
|
||||
|
|
|
|||
|
|
@ -189,14 +189,11 @@ public:
|
|||
|
||||
struct InstanceTemplate
|
||||
{
|
||||
uint32 map;
|
||||
uint32 parent;
|
||||
uint32 map; // instance map
|
||||
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 levelMax;
|
||||
float startLocX;
|
||||
float startLocY;
|
||||
float startLocZ;
|
||||
float startLocO;
|
||||
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 IsBattleArena() const { return i_mapEntry && i_mapEntry->IsBattleArena(); }
|
||||
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);
|
||||
|
||||
|
|
|
|||
|
|
@ -4676,17 +4676,42 @@ void ObjectMgr::LoadInstanceTemplate()
|
|||
|
||||
for(uint32 i = 0; i < sInstanceTemplate.MaxEntry; i++)
|
||||
{
|
||||
InstanceTemplate* temp = (InstanceTemplate*)GetInstanceTemplate(i);
|
||||
if(!temp)
|
||||
InstanceTemplate const* temp = GetInstanceTemplate(i);
|
||||
if (!temp)
|
||||
continue;
|
||||
|
||||
if(!MapManager::IsValidMAP(temp->map))
|
||||
sLog.outErrorDb("ObjectMgr::LoadInstanceTemplate: bad mapid %d for template!", temp->map);
|
||||
|
||||
if(!MapManager::IsValidMapCoord(temp->parent,temp->startLocX,temp->startLocY,temp->startLocZ,temp->startLocO))
|
||||
MapEntry const* mapEntry = sMapStore.LookupEntry(temp->map);
|
||||
if (!mapEntry)
|
||||
{
|
||||
sLog.outErrorDb("ObjectMgr::LoadInstanceTemplate: bad parent entrance coordinates for map id %d template!", temp->map);
|
||||
temp->parent = 0; // will have wrong continent 0 parent, at least existed
|
||||
sLog.outErrorDb("ObjectMgr::LoadInstanceTemplate: bad mapid %d for template!", temp->map);
|
||||
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)
|
||||
continue;
|
||||
|
||||
// find now nearest graveyard at other map
|
||||
// find now nearest graveyard at other (continent) map
|
||||
if(MapId != entry->map_id)
|
||||
{
|
||||
// if find graveyard at different map from where entrance placed (or no entrance data), use any first
|
||||
if (!mapEntry ||
|
||||
mapEntry->entrance_map < 0 ||
|
||||
mapEntry->entrance_map != entry->map_id ||
|
||||
(mapEntry->entrance_x == 0 && mapEntry->entrance_y == 0))
|
||||
mapEntry->ghost_entrance_map < 0 ||
|
||||
mapEntry->ghost_entrance_map != entry->map_id ||
|
||||
(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;
|
||||
continue;
|
||||
}
|
||||
|
||||
// at entrance map calculate distance (2D);
|
||||
float dist2 = (entry->x - mapEntry->entrance_x)*(entry->x - mapEntry->entrance_x)
|
||||
+(entry->y - mapEntry->entrance_y)*(entry->y - mapEntry->entrance_y);
|
||||
float dist2 = (entry->x - mapEntry->ghost_entrance_x)*(entry->x - mapEntry->ghost_entrance_x)
|
||||
+(entry->y - mapEntry->ghost_entrance_y)*(entry->y - mapEntry->ghost_entrance_y);
|
||||
if(foundEntr)
|
||||
{
|
||||
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;
|
||||
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);
|
||||
if(atEntry && atEntry->mapid == Map)
|
||||
if(atEntry && atEntry->mapid == map_id)
|
||||
return &itr->second;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -293,14 +293,14 @@ void WorldSession::HandleCorpseQueryOpcode(WorldPacket & /*recv_data*/)
|
|||
// search entrance map for proper show entrance
|
||||
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(Map const* entranceMap = sMapMgr.CreateBaseMap(corpseMapEntry->entrance_map))
|
||||
if(Map const* entranceMap = sMapMgr.CreateBaseMap(corpseMapEntry->ghost_entrance_map))
|
||||
{
|
||||
mapid = corpseMapEntry->entrance_map;
|
||||
x = corpseMapEntry->entrance_x;
|
||||
y = corpseMapEntry->entrance_y;
|
||||
mapid = corpseMapEntry->ghost_entrance_map;
|
||||
x = corpseMapEntry->ghost_entrance_x;
|
||||
y = corpseMapEntry->ghost_entrance_y;
|
||||
z = entranceMap->GetHeight(x, y, MAX_HEIGHT);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,8 +36,8 @@ const char GameObjectInfodstfmt[]="iiissssiifiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii";
|
|||
const char ItemPrototypesrcfmt[]="iiiisiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiiiiiiiiiifiiifiiiiiifiiiiiifiiiiiifiiiiiifiiiisiiiiiiiiiiiiiiiiiiiiiiiiifiiisiiiii";
|
||||
const char ItemPrototypedstfmt[]="iiiisiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiiiiiiiiiifiiifiiiiiifiiiiiifiiiiiifiiiiiifiiiisiiiiiiiiiiiiiiiiiiiiiiiiifiiiiiiiii";
|
||||
const char PageTextfmt[]="isi";
|
||||
const char InstanceTemplatesrcfmt[]="iiiiffffs";
|
||||
const char InstanceTemplatedstfmt[]="iiiiffffi";
|
||||
const char InstanceTemplatesrcfmt[]="iiiis";
|
||||
const char InstanceTemplatedstfmt[]="iiiii";
|
||||
|
||||
SQLStorage sCreatureStorage(CreatureInfosrcfmt, CreatureInfodstfmt, "entry","creature_template");
|
||||
SQLStorage sCreatureDataAddonStorage(CreatureDataAddonInfofmt,"guid","creature_addon");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue