mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-18 19:35:42 +00:00
refactor(Core): Use database tables for Shaman totems and Druid shapeshift forms. (#22104)
Co-authored-by: DoctorKraft <25483209+doctorkraft@users.noreply.github.com> Co-authored-by: Shauren <shauren.trinity@gmail.com> Co-authored-by: ForesterDev <11771800+ForesterDev@users.noreply.github.com>
This commit is contained in:
@@ -19230,7 +19230,7 @@ uint32 Unit::GetCombatRatingDamageReduction(CombatRating cr, float rate, float c
|
||||
return CalculatePct(damage, percent);
|
||||
}
|
||||
|
||||
uint32 Unit::GetModelForForm(ShapeshiftForm form, uint32 spellId) const
|
||||
uint32 Unit::GetModelForForm(ShapeshiftForm form, uint32 spellId)
|
||||
{
|
||||
// Hardcoded cases
|
||||
switch (spellId)
|
||||
@@ -19245,177 +19245,8 @@ uint32 Unit::GetModelForForm(ShapeshiftForm form, uint32 spellId) const
|
||||
|
||||
if (IsPlayer())
|
||||
{
|
||||
switch (form)
|
||||
{
|
||||
case FORM_CAT:
|
||||
// Based on Hair color
|
||||
if (getRace() == RACE_NIGHTELF)
|
||||
{
|
||||
uint8 hairColor = GetByteValue(PLAYER_BYTES, 3);
|
||||
switch (hairColor)
|
||||
{
|
||||
case 7: // Violet
|
||||
case 8:
|
||||
return 29405;
|
||||
case 3: // Light Blue
|
||||
return 29406;
|
||||
case 0: // Green
|
||||
case 1: // Light Green
|
||||
case 2: // Dark Green
|
||||
return 29407;
|
||||
case 4: // White
|
||||
return 29408;
|
||||
default: // original - Dark Blue
|
||||
return 892;
|
||||
}
|
||||
}
|
||||
// Based on Skin color
|
||||
else if (getRace() == RACE_TAUREN)
|
||||
{
|
||||
uint8 skinColor = GetByteValue(PLAYER_BYTES, 0);
|
||||
// Male
|
||||
if (getGender() == GENDER_MALE)
|
||||
{
|
||||
switch (skinColor)
|
||||
{
|
||||
case 12: // White
|
||||
case 13:
|
||||
case 14:
|
||||
case 18: // Completly White
|
||||
return 29409;
|
||||
case 9: // Light Brown
|
||||
case 10:
|
||||
case 11:
|
||||
return 29410;
|
||||
case 6: // Brown
|
||||
case 7:
|
||||
case 8:
|
||||
return 29411;
|
||||
case 0: // Dark
|
||||
case 1:
|
||||
case 2:
|
||||
case 3: // Dark Grey
|
||||
case 4:
|
||||
case 5:
|
||||
return 29412;
|
||||
default: // original - Grey
|
||||
return 8571;
|
||||
}
|
||||
}
|
||||
// Female
|
||||
else switch (skinColor)
|
||||
{
|
||||
case 10: // White
|
||||
return 29409;
|
||||
case 6: // Light Brown
|
||||
case 7:
|
||||
return 29410;
|
||||
case 4: // Brown
|
||||
case 5:
|
||||
return 29411;
|
||||
case 0: // Dark
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
return 29412;
|
||||
default: // original - Grey
|
||||
return 8571;
|
||||
}
|
||||
}
|
||||
else if (Player::TeamIdForRace(getRace()) == TEAM_ALLIANCE)
|
||||
return 892;
|
||||
else
|
||||
return 8571;
|
||||
case FORM_DIREBEAR:
|
||||
case FORM_BEAR:
|
||||
// Based on Hair color
|
||||
if (getRace() == RACE_NIGHTELF)
|
||||
{
|
||||
uint8 hairColor = GetByteValue(PLAYER_BYTES, 3);
|
||||
switch (hairColor)
|
||||
{
|
||||
case 0: // Green
|
||||
case 1: // Light Green
|
||||
case 2: // Dark Green
|
||||
return 29413; // 29415?
|
||||
case 6: // Dark Blue
|
||||
return 29414;
|
||||
case 4: // White
|
||||
return 29416;
|
||||
case 3: // Light Blue
|
||||
return 29417;
|
||||
default: // original - Violet
|
||||
return 2281;
|
||||
}
|
||||
}
|
||||
// Based on Skin color
|
||||
else if (getRace() == RACE_TAUREN)
|
||||
{
|
||||
uint8 skinColor = GetByteValue(PLAYER_BYTES, 0);
|
||||
// Male
|
||||
if (getGender() == GENDER_MALE)
|
||||
{
|
||||
switch (skinColor)
|
||||
{
|
||||
case 0: // Dark (Black)
|
||||
case 1:
|
||||
case 2:
|
||||
return 29418;
|
||||
case 3: // White
|
||||
case 4:
|
||||
case 5:
|
||||
case 12:
|
||||
case 13:
|
||||
case 14:
|
||||
return 29419;
|
||||
case 9: // Light Brown/Grey
|
||||
case 10:
|
||||
case 11:
|
||||
case 15:
|
||||
case 16:
|
||||
case 17:
|
||||
return 29420;
|
||||
case 18: // Completly White
|
||||
return 29421;
|
||||
default: // original - Brown
|
||||
return 2289;
|
||||
}
|
||||
}
|
||||
// Female
|
||||
else switch (skinColor)
|
||||
{
|
||||
case 0: // Dark (Black)
|
||||
case 1:
|
||||
return 29418;
|
||||
case 2: // White
|
||||
case 3:
|
||||
return 29419;
|
||||
case 6: // Light Brown/Grey
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
return 29420;
|
||||
case 10: // Completly White
|
||||
return 29421;
|
||||
default: // original - Brown
|
||||
return 2289;
|
||||
}
|
||||
}
|
||||
else if (Player::TeamIdForRace(getRace()) == TEAM_ALLIANCE)
|
||||
return 2281;
|
||||
else
|
||||
return 2289;
|
||||
case FORM_FLIGHT:
|
||||
if (Player::TeamIdForRace(getRace()) == TEAM_ALLIANCE)
|
||||
return 20857;
|
||||
return 20872;
|
||||
case FORM_FLIGHT_EPIC:
|
||||
if (Player::TeamIdForRace(getRace()) == TEAM_ALLIANCE)
|
||||
return 21243;
|
||||
return 21244;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (uint32 ModelId = sObjectMgr->GetModelForShapeshift(form, ToPlayer()))
|
||||
return ModelId;
|
||||
}
|
||||
|
||||
uint32 modelid = 0;
|
||||
@@ -19441,104 +19272,6 @@ uint32 Unit::GetModelForForm(ShapeshiftForm form, uint32 spellId) const
|
||||
return modelid;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
default: // One standard for other races.
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Unit* Unit::GetRedirectThreatTarget() const
|
||||
{
|
||||
return _redirectThreatInfo.GetTargetGUID() ? ObjectAccessor::GetUnit(*this, _redirectThreatInfo.GetTargetGUID()) : nullptr;
|
||||
|
||||
Reference in New Issue
Block a user