mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 13:37:05 +00:00
[11222] Move possition setup for Creature and subclases before Create call.
Some called from Create code can req. proper pos setup for creature. Bad side: But in way how currently code orginized impossible setup excetly position for most Creature sublasses. So in this part need more work.
This commit is contained in:
parent
c132e54f73
commit
51b4556c4b
7 changed files with 171 additions and 105 deletions
|
|
@ -1558,11 +1558,6 @@ bool ChatHandler::HandleNpcAddCommand(char* args)
|
|||
Map *map = chr->GetMap();
|
||||
|
||||
Creature* pCreature = new Creature;
|
||||
if (!pCreature->Create(map->GenerateLocalLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), id))
|
||||
{
|
||||
delete pCreature;
|
||||
return false;
|
||||
}
|
||||
|
||||
pCreature->Relocate(x,y,z,o);
|
||||
|
||||
|
|
@ -1573,6 +1568,12 @@ bool ChatHandler::HandleNpcAddCommand(char* args)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!pCreature->Create(map->GenerateLocalLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), id))
|
||||
{
|
||||
delete pCreature;
|
||||
return false;
|
||||
}
|
||||
|
||||
pCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
|
||||
|
||||
uint32 db_guid = pCreature->GetGUIDLow();
|
||||
|
|
@ -3139,29 +3140,28 @@ bool ChatHandler::HandleWpModifyCommand(char* args)
|
|||
// create the waypoint creature
|
||||
wpGuid = 0;
|
||||
Creature* wpCreature = new Creature;
|
||||
|
||||
wpCreature->Relocate(chr->GetPositionX(), chr->GetPositionY(), chr->GetPositionZ(), chr->GetOrientation());
|
||||
|
||||
if (!wpCreature->IsPositionValid())
|
||||
{
|
||||
sLog.outError("Creature (guidlow %d, entry %d) not created. Suggested coordinates isn't valid (X: %f Y: %f)",wpCreature->GetGUIDLow(),wpCreature->GetEntry(),wpCreature->GetPositionX(),wpCreature->GetPositionY());
|
||||
delete wpCreature;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!wpCreature->Create(map->GenerateLocalLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), VISUAL_WAYPOINT))
|
||||
{
|
||||
PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, VISUAL_WAYPOINT);
|
||||
delete wpCreature;
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
wpCreature->Relocate(chr->GetPositionX(), chr->GetPositionY(), chr->GetPositionZ(), chr->GetOrientation());
|
||||
|
||||
if (!wpCreature->IsPositionValid())
|
||||
{
|
||||
sLog.outError("Creature (guidlow %d, entry %d) not created. Suggested coordinates isn't valid (X: %f Y: %f)",wpCreature->GetGUIDLow(),wpCreature->GetEntry(),wpCreature->GetPositionX(),wpCreature->GetPositionY());
|
||||
delete wpCreature;
|
||||
}
|
||||
else
|
||||
{
|
||||
wpCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
|
||||
// To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells();
|
||||
wpCreature->LoadFromDB(wpCreature->GetGUIDLow(), map);
|
||||
map->Add(wpCreature);
|
||||
wpGuid = wpCreature->GetGUIDLow();
|
||||
}
|
||||
}
|
||||
wpCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
|
||||
// To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells();
|
||||
wpCreature->LoadFromDB(wpCreature->GetGUIDLow(), map);
|
||||
map->Add(wpCreature);
|
||||
wpGuid = wpCreature->GetGUIDLow();
|
||||
|
||||
sWaypointMgr.AddAfterNode(lowguid, point, chr->GetPositionX(), chr->GetPositionY(), chr->GetPositionZ(), 0, 0, wpGuid);
|
||||
|
||||
|
|
@ -3259,12 +3259,6 @@ bool ChatHandler::HandleWpModifyCommand(char* args)
|
|||
wpCreature->AddObjectToRemoveList();
|
||||
// re-create
|
||||
Creature* wpCreature2 = new Creature;
|
||||
if (!wpCreature2->Create(map->GenerateLocalLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), VISUAL_WAYPOINT))
|
||||
{
|
||||
PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, VISUAL_WAYPOINT);
|
||||
delete wpCreature2;
|
||||
return false;
|
||||
}
|
||||
|
||||
wpCreature2->Relocate(chr->GetPositionX(), chr->GetPositionY(), chr->GetPositionZ(), chr->GetOrientation());
|
||||
|
||||
|
|
@ -3275,6 +3269,13 @@ bool ChatHandler::HandleWpModifyCommand(char* args)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!wpCreature2->Create(map->GenerateLocalLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), VISUAL_WAYPOINT))
|
||||
{
|
||||
PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, VISUAL_WAYPOINT);
|
||||
delete wpCreature2;
|
||||
return false;
|
||||
}
|
||||
|
||||
wpCreature2->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
|
||||
// To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells();
|
||||
wpCreature2->LoadFromDB(wpCreature2->GetGUIDLow(), map);
|
||||
|
|
@ -3563,13 +3564,6 @@ bool ChatHandler::HandleWpShowCommand(char* args)
|
|||
float o = chr->GetOrientation();
|
||||
|
||||
Creature* wpCreature = new Creature;
|
||||
if (!wpCreature->Create(map->GenerateLocalLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), id))
|
||||
{
|
||||
PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, id);
|
||||
delete wpCreature;
|
||||
delete result;
|
||||
return false;
|
||||
}
|
||||
|
||||
wpCreature->Relocate(x, y, z, o);
|
||||
|
||||
|
|
@ -3581,6 +3575,14 @@ bool ChatHandler::HandleWpShowCommand(char* args)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!wpCreature->Create(map->GenerateLocalLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), id))
|
||||
{
|
||||
PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, id);
|
||||
delete wpCreature;
|
||||
delete result;
|
||||
return false;
|
||||
}
|
||||
|
||||
wpCreature->SetVisibility(VISIBILITY_OFF);
|
||||
DEBUG_LOG("DEBUG: UPDATE creature_movement SET wpguid = '%u", wpCreature->GetGUIDLow());
|
||||
// set "wpguid" column to the visual waypoint
|
||||
|
|
@ -3621,13 +3623,6 @@ bool ChatHandler::HandleWpShowCommand(char* args)
|
|||
Map *map = chr->GetMap();
|
||||
|
||||
Creature* pCreature = new Creature;
|
||||
if (!pCreature->Create(map->GenerateLocalLowGuid(HIGHGUID_UNIT),map, chr->GetPhaseMaskForSpawn(), id))
|
||||
{
|
||||
PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, id);
|
||||
delete pCreature;
|
||||
delete result;
|
||||
return false;
|
||||
}
|
||||
|
||||
pCreature->Relocate(x, y, z, o);
|
||||
|
||||
|
|
@ -3639,6 +3634,14 @@ bool ChatHandler::HandleWpShowCommand(char* args)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!pCreature->Create(map->GenerateLocalLowGuid(HIGHGUID_UNIT),map, chr->GetPhaseMaskForSpawn(), id))
|
||||
{
|
||||
PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, id);
|
||||
delete pCreature;
|
||||
delete result;
|
||||
return false;
|
||||
}
|
||||
|
||||
pCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
|
||||
pCreature->LoadFromDB(pCreature->GetGUIDLow(), map);
|
||||
map->Add(pCreature);
|
||||
|
|
@ -3681,13 +3684,6 @@ bool ChatHandler::HandleWpShowCommand(char* args)
|
|||
Map *map = chr->GetMap();
|
||||
|
||||
Creature* pCreature = new Creature;
|
||||
if (!pCreature->Create(map->GenerateLocalLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), id))
|
||||
{
|
||||
PSendSysMessage(LANG_WAYPOINT_NOTCREATED, id);
|
||||
delete pCreature;
|
||||
delete result;
|
||||
return false;
|
||||
}
|
||||
|
||||
pCreature->Relocate(x, y, z, o);
|
||||
|
||||
|
|
@ -3699,6 +3695,14 @@ bool ChatHandler::HandleWpShowCommand(char* args)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!pCreature->Create(map->GenerateLocalLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), id))
|
||||
{
|
||||
PSendSysMessage(LANG_WAYPOINT_NOTCREATED, id);
|
||||
delete pCreature;
|
||||
delete result;
|
||||
return false;
|
||||
}
|
||||
|
||||
pCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
|
||||
pCreature->LoadFromDB(pCreature->GetGUIDLow(), map);
|
||||
map->Add(pCreature);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue