aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp32
2 files changed, 30 insertions, 4 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 3c29288f88a..9b54c1f104b 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -25704,7 +25704,7 @@ void Player::HandleFall(MovementInfo const& movementInfo)
if (damageperc > 0)
{
uint32 damage = (uint32)(damageperc * GetMaxHealth()*sWorld->getRate(RATE_DAMAGE_FALL));
-
+
if (GetCommandStatus(CHEAT_GOD))
damage = 0;
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 3e19a5f0420..a00a9596f91 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -11311,9 +11311,35 @@ bool Unit::IsInFeralForm() const
bool Unit::IsInDisallowedMountForm() const
{
- ShapeshiftForm form = GetShapeshiftForm();
- return form != FORM_NONE && form != FORM_BATTLESTANCE && form != FORM_BERSERKERSTANCE && form != FORM_DEFENSIVESTANCE &&
- form != FORM_SHADOW && form != FORM_STEALTH && form != FORM_UNDEAD;
+ if (ShapeshiftForm form = GetShapeshiftForm())
+ {
+ SpellShapeshiftFormEntry const* shapeshift = sSpellShapeshiftFormStore.LookupEntry(form);
+ if (!shapeshift)
+ return true;
+
+ if (!(shapeshift->flags1 & 0x1))
+ return true;
+ }
+
+ if (GetDisplayId() == GetNativeDisplayId())
+ return false;
+
+ CreatureDisplayInfoEntry const* display = sCreatureDisplayInfoStore.LookupEntry(GetDisplayId());
+ if (!display)
+ return true;
+
+ CreatureDisplayInfoExtraEntry const* displayExtra = sCreatureDisplayInfoExtraStore.LookupEntry(display->ExtraId);
+ if (!displayExtra)
+ return true;
+
+ CreatureModelDataEntry const* model = sCreatureModelDataStore.LookupEntry(display->ModelId);
+ ChrRacesEntry const* race = sChrRacesStore.LookupEntry(displayExtra->Race);
+
+ if (model && !(model->Flags & 0x80))
+ if (race && !(race->Flags & 0x4))
+ return true;
+
+ return false;
}
/*#######################################