aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorGiacomo Pozzoni <giacomopoz@gmail.com>2021-01-22 19:48:50 +0100
committerShauren <shauren.trinity@gmail.com>2022-03-06 00:56:46 +0100
commit5180abfb19b9c1c4f2df2fbfa918a62f1c4ae995 (patch)
tree8038c606101b28bd8675149a11aef9aa62ff7fb0 /src/server/game/Entities
parentf74b4cb265d8ff9aab8e5734124dd3d2ec1b8a1a (diff)
Core/Creature: Add new db field InteractionPauseTimer (#25880)
* Core/Creature: Add new db field InteractionPauseTimer Add new db field InteractionPauseTimer to allow to define different interaction pause timers for each creature (the previous system was a global setting in worldserver.conf Creature.MovingStopTimeForPlayer) * Set all columns in creature_template_movement as optional (can be NULL, default NULL). Fill only the columns that should override the default C++ value * Use the InteractionPauseTimer value throughout the code instead of Creature.MovingStopTimeForPlayer * Handle InteractionPauseTimer set to 0 as "don't stop at all" * Implement InteractionPauseTimer in creature_movement_override creature_movement_override allows NULL values, in which case the values from creature_template_movement will be used for those columns that are NULL, falling back to default C++ values if creature_template_movement has NULL values too (or no rows for the creature) * Read default InteractionPauseTimer from worldserver.conf * Rename 2021_99_99_99_world.sql to 2021_01_22_00_world.sql (cherry picked from commit a22bc236ebc038c723774e5b38cd93e814ccc43d)
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp4
-rw-r--r--src/server/game/Entities/Creature/CreatureData.h6
2 files changed, 8 insertions, 2 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index f33ed67c810..d6df4e1be9c 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -55,6 +55,9 @@
#include <G3D/g3dmath.h>
#include <sstream>
+CreatureMovementData::CreatureMovementData() : Ground(CreatureGroundMovementType::Run), Flight(CreatureFlightMovementType::None), Swim(true), Rooted(false), Chase(CreatureChaseMovementType::Run),
+Random(CreatureRandomMovementType::Walk), InteractionPauseTimer(sWorld->getIntConfig(CONFIG_CREATURE_STOP_FOR_PLAYER)) { }
+
std::string CreatureMovementData::ToString() const
{
char const* const GroundStates[] = { "None", "Run", "Hover" };
@@ -71,6 +74,7 @@ std::string CreatureMovementData::ToString() const
<< ", Random: " << RandomStates[AsUnderlyingType(Random)];
if (Rooted)
str << ", Rooted";
+ str << ", InteractionPauseTimer: " << InteractionPauseTimer;
return str.str();
}
diff --git a/src/server/game/Entities/Creature/CreatureData.h b/src/server/game/Entities/Creature/CreatureData.h
index afaa9851274..1497295a0d4 100644
--- a/src/server/game/Entities/Creature/CreatureData.h
+++ b/src/server/game/Entities/Creature/CreatureData.h
@@ -337,8 +337,7 @@ enum class CreatureRandomMovementType : uint8
struct TC_GAME_API CreatureMovementData
{
- CreatureMovementData() : Ground(CreatureGroundMovementType::Run), Flight(CreatureFlightMovementType::None), Swim(true), Rooted(false), Chase(CreatureChaseMovementType::Run),
- Random(CreatureRandomMovementType::Walk) { }
+ CreatureMovementData();
CreatureGroundMovementType Ground;
CreatureFlightMovementType Flight;
@@ -346,6 +345,7 @@ struct TC_GAME_API CreatureMovementData
bool Rooted;
CreatureChaseMovementType Chase;
CreatureRandomMovementType Random;
+ uint32 InteractionPauseTimer;
bool IsGroundAllowed() const { return Ground != CreatureGroundMovementType::None; }
bool IsSwimAllowed() const { return Swim; }
@@ -355,6 +355,8 @@ struct TC_GAME_API CreatureMovementData
CreatureChaseMovementType GetChase() const { return Chase; }
CreatureRandomMovementType GetRandom() const { return Random; }
+ uint32 GetInteractionPauseTimer() const { return InteractionPauseTimer; }
+
std::string ToString() const;
};