Entities/Unit: Nuke Map::ForceRespawn from orbit, with the following implications:
Port From (https://github.com/TrinityCore/TrinityCore/commit/2532de6acb7d73957a8fca44e7fc26160f47cc47)
This commit is contained in:
@@ -69,39 +69,35 @@ namespace Game.Chat
|
||||
if (string.IsNullOrEmpty(id))
|
||||
return false;
|
||||
|
||||
if (!ulong.TryParse(id, out ulong guidLow) || guidLow == 0)
|
||||
if (!ulong.TryParse(id, out ulong spawnId) || spawnId == 0)
|
||||
return false;
|
||||
|
||||
Player player = handler.GetSession().GetPlayer();
|
||||
// force respawn to make sure we find something
|
||||
player.GetMap().ForceRespawn(SpawnObjectType.GameObject, guidLow);
|
||||
GameObject obj = handler.GetObjectFromPlayerMapByDbGuid(guidLow);
|
||||
if (!obj)
|
||||
GameObject obj = handler.GetObjectFromPlayerMapByDbGuid(spawnId);
|
||||
if (obj != null)
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.CommandObjnotfound, guidLow);
|
||||
return false;
|
||||
}
|
||||
|
||||
ObjectGuid ownerGuid = obj.GetOwnerGUID();
|
||||
if (!ownerGuid.IsEmpty())
|
||||
{
|
||||
Unit owner = Global.ObjAccessor.GetUnit(player, ownerGuid);
|
||||
if (!owner || !ownerGuid.IsPlayer())
|
||||
Player player = handler.GetSession().GetPlayer();
|
||||
ObjectGuid ownerGuid = obj.GetOwnerGUID();
|
||||
if (!ownerGuid.IsEmpty())
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.CommandDelobjrefercreature, ownerGuid.ToString(), obj.GetGUID().ToString());
|
||||
return false;
|
||||
}
|
||||
Unit owner = Global.ObjAccessor.GetUnit(player, ownerGuid);
|
||||
if (!owner || !ownerGuid.IsPlayer())
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.CommandDelobjrefercreature, ownerGuid.ToString(), obj.GetGUID().ToString());
|
||||
return false;
|
||||
}
|
||||
|
||||
owner.RemoveGameObject(obj, false);
|
||||
owner.RemoveGameObject(obj, false);
|
||||
}
|
||||
}
|
||||
|
||||
obj.SetRespawnTime(0); // not save respawn time
|
||||
obj.Delete();
|
||||
obj.DeleteFromDB();
|
||||
if (GameObject.DeleteFromDB(spawnId))
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.CommandDelobjmessage, spawnId);
|
||||
return true;
|
||||
}
|
||||
|
||||
handler.SendSysMessage(CypherStrings.CommandDelobjmessage, obj.GetGUID().ToString());
|
||||
|
||||
return true;
|
||||
handler.SendSysMessage(CypherStrings.CommandObjnotfound, obj.GetGUID().ToString());
|
||||
return false;
|
||||
}
|
||||
|
||||
[Command("despawngroup", RBACPermissions.CommandGobjectDespawngroup)]
|
||||
|
||||
@@ -869,7 +869,7 @@ namespace Game.Chat
|
||||
[Command("", RBACPermissions.CommandNpcDelete)]
|
||||
static bool HandleNpcDeleteCommand(StringArguments args, CommandHandler handler)
|
||||
{
|
||||
Creature creature;
|
||||
ulong spawnId;
|
||||
|
||||
if (!args.Empty())
|
||||
{
|
||||
@@ -881,34 +881,36 @@ namespace Game.Chat
|
||||
if (!ulong.TryParse(cId, out ulong guidLow) || guidLow == 0)
|
||||
return false;
|
||||
|
||||
// force respawn to make sure we find something
|
||||
handler.GetSession().GetPlayer().GetMap().ForceRespawn(SpawnObjectType.Creature, guidLow);
|
||||
// then try to find it
|
||||
creature = handler.GetCreatureFromPlayerMapByDbGuid(guidLow);
|
||||
spawnId = guidLow;
|
||||
}
|
||||
else
|
||||
creature = handler.GetSelectedCreature();
|
||||
|
||||
if (!creature || creature.IsPet() || creature.IsTotem())
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.SelectCreature);
|
||||
return false;
|
||||
Creature creature = handler.GetSelectedCreature();
|
||||
|
||||
if (!creature || creature.IsPet() || creature.IsTotem())
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.SelectCreature);
|
||||
return false;
|
||||
}
|
||||
|
||||
TempSummon summon = creature.ToTempSummon();
|
||||
if (summon != null)
|
||||
{
|
||||
summon.UnSummon();
|
||||
handler.SendSysMessage(CypherStrings.CommandDelcreatmessage);
|
||||
return true;
|
||||
}
|
||||
spawnId = creature.GetSpawnId();
|
||||
}
|
||||
|
||||
TempSummon summon = creature.ToTempSummon();
|
||||
if (summon != null)
|
||||
summon.UnSummon();
|
||||
else
|
||||
if (Creature.DeleteFromDB(spawnId))
|
||||
{
|
||||
// Delete the creature
|
||||
creature.CombatStop();
|
||||
creature.DeleteFromDB();
|
||||
creature.AddObjectToRemoveList();
|
||||
handler.SendSysMessage(CypherStrings.CommandDelcreatmessage);
|
||||
return true;
|
||||
}
|
||||
|
||||
handler.SendSysMessage(CypherStrings.CommandDelcreatmessage);
|
||||
|
||||
return true;
|
||||
handler.SendSysMessage(CypherStrings.CommandCreatguidnotfound, spawnId);
|
||||
return false;
|
||||
}
|
||||
|
||||
[Command("item", RBACPermissions.CommandNpcDeleteItem)]
|
||||
|
||||
@@ -512,21 +512,27 @@ namespace Game.Chat.Commands
|
||||
{
|
||||
handler.SendSysMessage("|cff00ff00DEBUG: wp modify del, PathID: |r|cff00ffff{0}|r", pathid);
|
||||
|
||||
target.DeleteFromDB();
|
||||
target.AddObjectToRemoveList();
|
||||
if (Creature.DeleteFromDB(target.GetSpawnId()))
|
||||
{
|
||||
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.DEL_WAYPOINT_DATA);
|
||||
stmt.AddValue(0, pathid);
|
||||
stmt.AddValue(1, point);
|
||||
DB.World.Execute(stmt);
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.DEL_WAYPOINT_DATA);
|
||||
stmt.AddValue(0, pathid);
|
||||
stmt.AddValue(1, point);
|
||||
DB.World.Execute(stmt);
|
||||
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.UPD_WAYPOINT_DATA_POINT);
|
||||
stmt.AddValue(0, pathid);
|
||||
stmt.AddValue(1, point);
|
||||
DB.World.Execute(stmt);
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.UPD_WAYPOINT_DATA_POINT);
|
||||
stmt.AddValue(0, pathid);
|
||||
stmt.AddValue(1, point);
|
||||
DB.World.Execute(stmt);
|
||||
|
||||
handler.SendSysMessage(CypherStrings.WaypointRemoved);
|
||||
return true;
|
||||
handler.SendSysMessage(CypherStrings.WaypointRemoved);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.WaypointNotremoved);
|
||||
return false;
|
||||
}
|
||||
} // del
|
||||
|
||||
if (show == "move")
|
||||
@@ -538,8 +544,11 @@ namespace Game.Chat.Commands
|
||||
// What to do:
|
||||
// Move the visual spawnpoint
|
||||
// Respawn the owner of the waypoints
|
||||
target.DeleteFromDB();
|
||||
target.AddObjectToRemoveList();
|
||||
if (!Creature.DeleteFromDB(target.GetSpawnId()))
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.WaypointVpNotcreated, 1);
|
||||
return false;
|
||||
}
|
||||
|
||||
// re-create
|
||||
Creature creature = Creature.CreateCreature(1, map, chr.GetPosition());
|
||||
@@ -721,21 +730,10 @@ namespace Game.Chat.Commands
|
||||
{
|
||||
ulong wpguid = result2.Read<ulong>(0);
|
||||
|
||||
Creature creature = handler.GetCreatureFromPlayerMapByDbGuid(wpguid);
|
||||
if (!creature)
|
||||
if (!Creature.DeleteFromDB(wpguid))
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.WaypointNotremoved, wpguid);
|
||||
hasError = true;
|
||||
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.DEL_CREATURE);
|
||||
stmt.AddValue(0, wpguid);
|
||||
DB.World.Execute(stmt);
|
||||
}
|
||||
else
|
||||
{
|
||||
creature.CombatStop();
|
||||
creature.DeleteFromDB();
|
||||
creature.AddObjectToRemoveList();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -931,21 +929,10 @@ namespace Game.Chat.Commands
|
||||
{
|
||||
ulong lowguid = result.Read<ulong>(0);
|
||||
|
||||
Creature creature = handler.GetCreatureFromPlayerMapByDbGuid(lowguid);
|
||||
if (!creature)
|
||||
if (!Creature.DeleteFromDB(lowguid))
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.WaypointNotremoved, lowguid);
|
||||
hasError = true;
|
||||
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.DEL_CREATURE);
|
||||
stmt.AddValue(0, lowguid);
|
||||
DB.World.Execute(stmt);
|
||||
}
|
||||
else
|
||||
{
|
||||
creature.CombatStop();
|
||||
creature.DeleteFromDB();
|
||||
creature.AddObjectToRemoveList();
|
||||
}
|
||||
}
|
||||
while (result.NextRow());
|
||||
|
||||
Reference in New Issue
Block a user