diff options
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 83 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 9 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 5 |
3 files changed, 97 insertions, 0 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 604bb2830d5..10e6905ec8a 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -16102,6 +16102,89 @@ uint32 Unit::GetModelForForm(ShapeshiftForm form) return 0; } +uint32 Unit::GetModelForTotem(PlayerTotemType totemType) +{ + switch(getRace()) + { + case RACE_ORC: + { + switch(totemType) + { + case SUMMON_TYPE_TOTEM_FIRE: //fire + return 30758; + case SUMMON_TYPE_TOTEM_EARTH: //earth + return 30757; + case SUMMON_TYPE_TOTEM_WATER: //water + return 30759; + case SUMMON_TYPE_TOTEM_AIR: //air + return 30756; + } + break; + } + case RACE_DWARF: + { + switch(totemType) + { + case SUMMON_TYPE_TOTEM_FIRE: //fire + return 30754; + case SUMMON_TYPE_TOTEM_EARTH: //earth + return 30753; + case SUMMON_TYPE_TOTEM_WATER: //water + return 30755; + case SUMMON_TYPE_TOTEM_AIR: //air + return 30736; + } + break; + } + case RACE_TROLL: + { + switch(totemType) + { + case SUMMON_TYPE_TOTEM_FIRE: //fire + return 30762; + case SUMMON_TYPE_TOTEM_EARTH: //earth + return 30761; + case SUMMON_TYPE_TOTEM_WATER: //water + return 30763; + case SUMMON_TYPE_TOTEM_AIR: //air + return 30760; + } + break; + } + case RACE_TAUREN: + { + switch(totemType) + { + case SUMMON_TYPE_TOTEM_FIRE: //fire + return 4589; + case SUMMON_TYPE_TOTEM_EARTH: //earth + return 4588; + case SUMMON_TYPE_TOTEM_WATER: //water + return 4587; + case SUMMON_TYPE_TOTEM_AIR: //air + return 4590; + } + break; + } + case RACE_DRAENEI: + { + switch(totemType) + { + case SUMMON_TYPE_TOTEM_FIRE: //fire + return 19074; + case SUMMON_TYPE_TOTEM_EARTH: //earth + return 19073; + case SUMMON_TYPE_TOTEM_WATER: //water + return 19075; + case SUMMON_TYPE_TOTEM_AIR: //air + return 19071; + } + break; + } + } + return 0; +} + void Unit::JumpTo(float speedXY, float speedZ, bool forward) { float angle = forward ? 0 : M_PI; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 63b0ca91771..5ef7918f11d 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1074,6 +1074,14 @@ enum ReactiveType #define SUMMON_SLOT_QUEST 6 #define MAX_SUMMON_SLOT 7 +enum PlayerTotemType +{ + SUMMON_TYPE_TOTEM_FIRE = 63, + SUMMON_TYPE_TOTEM_EARTH = 81, + SUMMON_TYPE_TOTEM_WATER = 82, + SUMMON_TYPE_TOTEM_AIR = 83, +}; + // delay time next attack to prevent client attack animation problems #define ATTACK_DISPLAY_DELAY 200 #define MAX_PLAYER_STEALTH_DETECT_RANGE 45.0f // max distance for detection targets by player @@ -1917,6 +1925,7 @@ class Unit : public WorldObject void RemovePetAura(PetAura const* petSpell); uint32 GetModelForForm(ShapeshiftForm form); + uint32 GetModelForTotem(PlayerTotemType totemType); void SetReducedThreatPercent(uint32 pct, uint64 guid) { diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 4d6bd7b5fe5..f2e1beed478 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -3757,6 +3757,11 @@ void Spell::EffectSummonType(uint32 i) && properties->Slot >= SUMMON_SLOT_TOTEM && properties->Slot < MAX_TOTEM_SLOT) { + // set display id depending on race + uint32 displayId = m_originalCaster->GetModelForTotem(PlayerTotemType(properties->Id)); + summon->SetNativeDisplayId(displayId); + summon->SetDisplayId(displayId); + //summon->SendUpdateToPlayerm_originalCaster->ToPlayer(); WorldPacket data(SMSG_TOTEM_CREATED, 1+8+4+4); data << uint8(properties->Slot-1); |
