aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authormegamage <none@none.none>2011-11-28 14:05:25 -0500
committermegamage <none@none.none>2011-11-28 14:05:25 -0500
commit529af3cd092972c2d5204308a5ba573bad8e0b1f (patch)
treedc416a7353c359677807d8871c585ff2627ffccd /src/server/scripts
parentcde7ea260eae5c7676411c848131f91e5648ec28 (diff)
Delete obj if it is not successfully added to grid. More to fix.
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Commands/cs_gobject.cpp4
-rw-r--r--src/server/scripts/Commands/cs_npc.cpp7
-rw-r--r--src/server/scripts/Commands/cs_wp.cpp33
-rwxr-xr-xsrc/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp27
4 files changed, 49 insertions, 22 deletions
diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp
index 4c9960992e1..eb1ccc543f3 100644
--- a/src/server/scripts/Commands/cs_gobject.cpp
+++ b/src/server/scripts/Commands/cs_gobject.cpp
@@ -165,14 +165,12 @@ public:
object->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), player->GetPhaseMaskForSpawn());
// this will generate a new guid if the object is in an instance
- if (!object->LoadFromDB(guidLow, map))
+ if (!object->LoadGameObjectFromDB(guidLow, map))
{
delete object;
return false;
}
- map->AddToMap(object);
-
// TODO: is it really necessary to add both the real and DB table guid here ?
sObjectMgr->AddGameobjectToGrid(guidLow, sObjectMgr->GetGOData(guidLow));
diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp
index 20d0994b911..bfa8b76f295 100644
--- a/src/server/scripts/Commands/cs_npc.cpp
+++ b/src/server/scripts/Commands/cs_npc.cpp
@@ -147,9 +147,12 @@ public:
uint32 db_guid = creature->GetDBTableGUIDLow();
// To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells();
- creature->LoadFromDB(db_guid, map);
+ if (!creature->LoadCreatureFromDB(db_guid, map))
+ {
+ delete creature;
+ return false;
+ }
- map->AddToMap(creature);
sObjectMgr->AddCreatureToGrid(db_guid, sObjectMgr->GetCreatureData(db_guid));
return true;
}
diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp
index ebeb7b8f4f4..d34ee801e50 100644
--- a/src/server/scripts/Commands/cs_wp.cpp
+++ b/src/server/scripts/Commands/cs_wp.cpp
@@ -578,8 +578,13 @@ public:
wpCreature2->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
// To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells();
- wpCreature2->LoadFromDB(wpCreature2->GetDBTableGUIDLow(), map);
- map->AddToMap(wpCreature2);
+ //TODO: Should we first use "Create" then use "LoadFromDB"?
+ if (!wpCreature2->LoadCreatureFromDB(wpCreature2->GetDBTableGUIDLow(), map))
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, VISUAL_WAYPOINT);
+ delete wpCreature2;
+ return false;
+ }
//sMapMgr->GetMap(npcCreature->GetMapId())->Add(wpCreature2);
}
@@ -777,8 +782,12 @@ public:
wpCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
// To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells();
- wpCreature->LoadFromDB(wpCreature->GetDBTableGUIDLow(), map);
- map->AddToMap(wpCreature);
+ if (!wpCreature->LoadCreatureFromDB(wpCreature->GetDBTableGUIDLow(), map))
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, id);
+ delete wpCreature;
+ return false;
+ }
if (target)
{
@@ -824,8 +833,12 @@ public:
}
creature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
- creature->LoadFromDB(creature->GetDBTableGUIDLow(), map);
- map->AddToMap(creature);
+ if (!creature->LoadCreatureFromDB(creature->GetDBTableGUIDLow(), map))
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_VP_NOTCREATED, id);
+ delete creature;
+ return false;
+ }
if (target)
{
@@ -872,8 +885,12 @@ public:
}
creature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn());
- creature->LoadFromDB(creature->GetDBTableGUIDLow(), map);
- map->AddToMap(creature);
+ if (!creature->LoadCreatureFromDB(creature->GetDBTableGUIDLow(), map))
+ {
+ handler->PSendSysMessage(LANG_WAYPOINT_NOTCREATED, id);
+ delete creature;
+ return false;
+ }
if (target)
{
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp
index 23477741ba1..bcdcc69181a 100755
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp
@@ -166,11 +166,15 @@ bool OutdoorPvPSI::HandleDropFlag(Player* player, uint32 spellId)
if (!go->Create(sObjectMgr->GenerateLowGuid(HIGHGUID_GAMEOBJECT), SI_SILITHYST_MOUND, map, player->GetPhaseMask(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), 0, 0, 0, 0, 100, GO_STATE_READY))
{
delete go;
+ return true;
}
- else
+
+ go->SetRespawnTime(0);
+
+ if (!map->AddToMap(go))
{
- go->SetRespawnTime(0);
- map->AddToMap(go);
+ delete go;
+ return true;
}
}
}
@@ -189,17 +193,22 @@ bool OutdoorPvPSI::HandleDropFlag(Player* player, uint32 spellId)
Map* map = player->GetMap();
if (!map)
{
- delete go;
- return true;
- }
+ delete go;
+ return true;
+ }
+
if (!go->Create(sObjectMgr->GenerateLowGuid(HIGHGUID_GAMEOBJECT), SI_SILITHYST_MOUND, map, player->GetPhaseMask(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), 0, 0, 0, 0, 100, GO_STATE_READY))
{
delete go;
+ return true;
}
- else
+
+ go->SetRespawnTime(0);
+
+ if (!map->AddToMap(go))
{
- go->SetRespawnTime(0);
- map->AddToMap(go);
+ delete go;
+ return true;
}
}
}