Core/Creatures: implemented most movement related static flags and migrated existing movement data into static flags
* implemented CREATURE_STATIC_FLAG_AQUATIC - creatures cannot leave liquids * implemented CREATURE_STATIC_FLAG_AMPHIBIOUS - creatures can enter and leave liquids but remain on the ocean floor when swimming is not enabled until engaged * implemented CREATURE_STATIC_FLAG_FLOATING - creatures have their gravity on spawn / reset disabled * implemented CREATURE_STATIC_FLAG_SESSILE - creatures are rooted in place * implemented CREATURE_STATIC_FLAG_CAN_SWIM - creature can swim in liquids * implemented CREATURE_STATIC_FLAG_3_CANNOT_SWIM - Amphibious creatures cannot toggle on swimming * implemented CREATURE_STATIC_FLAG_3_CANNOT_TURN - Creatures cannot turn at all * implemented CREATURE_STATIC_FLAG_4_PREVENT_SWIM - Amphibious creatures won't toggle on swimming until their victim starts leaving the ocean floor * partially implemented CREATURE_STATIC_FLAG_3_CANNOT_PENETRATE_WATER * deprecated CREATURE_FLAG_EXTRA_NO_MOVE_FLAGS_UPDATE as this flag was a hackfix to a wrong implementation that is now gone Port From (https://github.com/TrinityCore/TrinityCore/commit/c541eda54d7e0dddeec329a6beac2948e0b0a40b)
This commit is contained in:
@@ -60,11 +60,9 @@ namespace Game.AI
|
||||
|
||||
if (movementInform && HasFlag(MovementGeneratorFlags.InformEnabled))
|
||||
{
|
||||
if (!owner.HasCanSwimFlagOutOfCombat())
|
||||
owner.RemoveUnitFlag(UnitFlags.CanSwim);
|
||||
|
||||
if (owner.IsStateRestoredOnEvade())
|
||||
{
|
||||
owner.InitializeMovementCapabilities();
|
||||
owner.SetSpawnHealth();
|
||||
owner.LoadCreaturesAddon();
|
||||
owner.LoadCreaturesSparringHealth();
|
||||
|
||||
@@ -155,7 +155,7 @@ namespace Game.Movement
|
||||
BuildShortcut();
|
||||
bool path = _source.IsTypeId(TypeId.Unit) && _source.ToCreature().CanFly();
|
||||
|
||||
bool waterPath = _source.IsTypeId(TypeId.Unit) && _source.ToCreature().CanSwim();
|
||||
bool waterPath = _source.IsTypeId(TypeId.Unit) && _source.ToCreature().CanEnterWater();
|
||||
if (waterPath)
|
||||
{
|
||||
// Check both start and end points, if they're both in water, then we can *safely* let the creature move
|
||||
@@ -850,7 +850,7 @@ namespace Game.Movement
|
||||
if (_source.IsTypeId(TypeId.Unit))
|
||||
{
|
||||
Creature creature = _source.ToCreature();
|
||||
if (creature.CanWalk())
|
||||
if (!creature.IsAquatic())
|
||||
includeFlags |= NavTerrainFlag.Ground;
|
||||
|
||||
// creatures don't take environmental damage
|
||||
|
||||
Reference in New Issue
Block a user