[11880] Ensure that db saved values and values in memory are in sync

This fixes db-errors for npcs with random movement added with .npc add command.
Patch inspired by NoFantasy and MasterTomas
This commit is contained in:
Schmoozerd 2012-01-20 02:57:43 +01:00
parent eca3586d74
commit 71bdb8e5b6
2 changed files with 19 additions and 19 deletions

View file

@ -1092,6 +1092,7 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask)
// data->guid = guid don't must be update at save
data.id = GetEntry();
data.mapid = mapid;
data.spawnMask = spawnMask;
data.phaseMask = phaseMask;
data.modelid_override = displayId;
data.equipmentId = GetEquipmentId();
@ -1109,7 +1110,6 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask)
// prevent add data integrity problems
data.movementType = !m_respawnradius && GetDefaultMovementType()==RANDOM_MOTION_TYPE
? IDLE_MOTION_TYPE : GetDefaultMovementType();
data.spawnMask = spawnMask;
// updated in DB
WorldDatabase.BeginTransaction();
@ -1119,23 +1119,23 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask)
std::ostringstream ss;
ss << "INSERT INTO creature VALUES ("
<< GetGUIDLow() << ","
<< GetEntry() << ","
<< mapid <<","
<< uint32(spawnMask) << "," // cast to prevent save as symbol
<< uint16(GetPhaseMask()) << "," // prevent out of range error
<< displayId <<","
<< GetEquipmentId() <<","
<< GetPositionX() << ","
<< GetPositionY() << ","
<< GetPositionZ() << ","
<< GetOrientation() << ","
<< m_respawnDelay << "," //respawn time
<< (float) m_respawnradius << "," //spawn distance (float)
<< (uint32) (0) << "," //currentwaypoint
<< GetHealth() << "," //curhealth
<< GetPower(POWER_MANA) << "," //curmana
<< (m_isDeadByDefault ? 1 : 0) << "," //is_dead
<< GetDefaultMovementType() << ")"; //default movement generator type
<< data.id << ","
<< data.mapid <<","
<< uint32(data.spawnMask) << "," // cast to prevent save as symbol
<< uint16(data.phaseMask) << "," // prevent out of range error
<< data.modelid_override <<","
<< data.equipmentId <<","
<< data.posX << ","
<< data.posY << ","
<< data.posZ << ","
<< data.orientation << ","
<< data.spawntimesecs << "," //respawn time
<< (float) data.spawndist << "," //spawn distance (float)
<< data.currentwaypoint << "," //currentwaypoint
<< data.curhealth << "," //curhealth
<< data.curmana << "," //curmana
<< (data.is_dead ? 1 : 0) << "," //is_dead
<< data.movementType << ")"; //default movement generator type
WorldDatabase.PExecuteLog("%s", ss.str().c_str());

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "11879"
#define REVISION_NR "11880"
#endif // __REVISION_NR_H__