Core/Player: Correct gender by modelid and avoid saving character with wrong gender

Closes #396

Author is MitchesD, Kittnz and Shauren
This commit is contained in:
Inifield
2017-06-26 16:43:13 +02:00
parent 445b88563f
commit bd799ecd5b
2 changed files with 5 additions and 2 deletions

View File

@@ -25861,7 +25861,7 @@ void Player::_SaveCharacter(bool create, SQLTransaction& trans)
stmt->setString(index++, GetName());
stmt->setUInt8(index++, getRace(true));
stmt->setUInt8(index++, getClass());
stmt->setUInt8(index++, getGender());
stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_3, 0)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect
stmt->setUInt8(index++, getLevel());
stmt->setUInt32(index++, GetUInt32Value(PLAYER_XP));
stmt->setUInt32(index++, GetMoney());
@@ -25966,7 +25966,7 @@ void Player::_SaveCharacter(bool create, SQLTransaction& trans)
stmt->setString(index++, GetName());
stmt->setUInt8(index++, getRace(true));
stmt->setUInt8(index++, getClass());
stmt->setUInt8(index++, getGender());
stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_3, 0)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect
stmt->setUInt8(index++, getLevel());
stmt->setUInt32(index++, GetUInt32Value(PLAYER_XP));
stmt->setUInt32(index++, GetMoney());

View File

@@ -15404,6 +15404,9 @@ bool Unit::IsPolymorphed() const
void Unit::SetDisplayId(uint32 modelId)
{
SetUInt32Value(UNIT_FIELD_DISPLAYID, modelId);
// Set Gender by modelId
if (CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelInfo(modelId))
SetByteValue(UNIT_FIELD_BYTES_0, 2, minfo->gender);
}
void Unit::RestoreDisplayId()