[12017] Add support for getRace() of creatures. Thanks to vladimir for input

This commit is contained in:
Schmoozerd 2012-06-24 19:28:11 +02:00
parent dfa35dafab
commit fb3a990b13
6 changed files with 16 additions and 9 deletions

View file

@ -2168,6 +2168,11 @@ bool Creature::HasSpellCooldown(uint32 spell_id) const
return (itr != m_CreatureSpellCooldowns.end() && itr->second > time(NULL)) || HasCategoryCooldown(spell_id); return (itr != m_CreatureSpellCooldowns.end() && itr->second > time(NULL)) || HasCategoryCooldown(spell_id);
} }
uint8 Creature::getRace() const
{
return Unit::getRace() ? Unit::getRace() : GetCreatureModelRace(GetNativeDisplayId());
}
bool Creature::IsInEvadeMode() const bool Creature::IsInEvadeMode() const
{ {
return !i_motionMaster.empty() && i_motionMaster.GetCurrentMovementGeneratorType() == HOME_MOTION_TYPE; return !i_motionMaster.empty() && i_motionMaster.GetCurrentMovementGeneratorType() == HOME_MOTION_TYPE;

View file

@ -525,6 +525,8 @@ class MANGOS_DLL_SPEC Creature : public Unit
uint32 GetLevelForTarget(Unit const* target) const; // overwrite Unit::GetLevelForTarget for boss level support uint32 GetLevelForTarget(Unit const* target) const; // overwrite Unit::GetLevelForTarget for boss level support
uint8 getRace() const override;
bool IsInEvadeMode() const; bool IsInEvadeMode() const;
bool AIM_Initialize(); bool AIM_Initialize();

View file

@ -3681,10 +3681,8 @@ void Aura::HandleAuraTransform(bool apply, bool Real)
case 65528: // Gossip NPC Appearance - Pirates' Day case 65528: // Gossip NPC Appearance - Pirates' Day
{ {
// expecting npc's using this spell to have models with race info. // expecting npc's using this spell to have models with race info.
uint32 race = GetCreatureModelRace(target->GetNativeDisplayId());
// random gender, regardless of current gender // random gender, regardless of current gender
switch(race) switch (target->getRace())
{ {
case RACE_HUMAN: case RACE_HUMAN:
target->SetDisplayId(roll_chance_i(50) ? 25037 : 25048); target->SetDisplayId(roll_chance_i(50) ? 25037 : 25048);
@ -8426,7 +8424,9 @@ void Aura::HandleAuraMirrorImage(bool apply, bool Real)
// Caster can be player or creature, the unit who pCreature will become an clone of. // Caster can be player or creature, the unit who pCreature will become an clone of.
Unit* caster = GetCaster(); Unit* caster = GetCaster();
pCreature->SetByteValue(UNIT_FIELD_BYTES_0, 0, caster->getRace()); if (caster->GetTypeId() == TYPEID_PLAYER) // TODO - Verify! Does it take a 'pseudo-race' (from display-id) for creature-mirroring, and what is sent in SMSG_MIRRORIMAGE_DATA
pCreature->SetByteValue(UNIT_FIELD_BYTES_0, 0, caster->getRace());
pCreature->SetByteValue(UNIT_FIELD_BYTES_0, 1, caster->getClass()); pCreature->SetByteValue(UNIT_FIELD_BYTES_0, 1, caster->getClass());
pCreature->SetByteValue(UNIT_FIELD_BYTES_0, 2, caster->getGender()); pCreature->SetByteValue(UNIT_FIELD_BYTES_0, 2, caster->getGender());
pCreature->SetByteValue(UNIT_FIELD_BYTES_0, 3, caster->getPowerType()); pCreature->SetByteValue(UNIT_FIELD_BYTES_0, 3, caster->getPowerType());

View file

@ -4522,10 +4522,10 @@ bool SpellArea::IsFitToRequirements(Player const* player, uint32 newZone, uint32
return false; return false;
} }
if(raceMask) if (raceMask)
{ {
// not in expected race // not in expected race
if(!player || !(raceMask & player->getRaceMask())) if (!(raceMask & player->getRaceMask()))
return false; return false;
} }

View file

@ -1182,8 +1182,8 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
uint32 getLevel() const { return GetUInt32Value(UNIT_FIELD_LEVEL); } uint32 getLevel() const { return GetUInt32Value(UNIT_FIELD_LEVEL); }
virtual uint32 GetLevelForTarget(Unit const* /*target*/) const { return getLevel(); } virtual uint32 GetLevelForTarget(Unit const* /*target*/) const { return getLevel(); }
void SetLevel(uint32 lvl); void SetLevel(uint32 lvl);
uint8 getRace() const { return GetByteValue(UNIT_FIELD_BYTES_0, 0); } virtual uint8 getRace() const { return GetByteValue(UNIT_FIELD_BYTES_0, 0); }
uint32 getRaceMask() const { return 1 << (getRace()-1); } uint32 getRaceMask() const { return getRace() ? 1 << (getRace()-1) : 0; }
uint8 getClass() const { return GetByteValue(UNIT_FIELD_BYTES_0, 1); } uint8 getClass() const { return GetByteValue(UNIT_FIELD_BYTES_0, 1); }
uint32 getClassMask() const { return 1 << (getClass()-1); } uint32 getClassMask() const { return 1 << (getClass()-1); }
uint8 getGender() const { return GetByteValue(UNIT_FIELD_BYTES_0, 2); } uint8 getGender() const { return GetByteValue(UNIT_FIELD_BYTES_0, 2); }

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "12016" #define REVISION_NR "12017"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__