diff options
| author | Giacomo Pozzoni <giacomopoz@gmail.com> | 2021-01-22 19:48:50 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-03-06 00:56:46 +0100 |
| commit | 5180abfb19b9c1c4f2df2fbfa918a62f1c4ae995 (patch) | |
| tree | 8038c606101b28bd8675149a11aef9aa62ff7fb0 /src/server/game/Entities | |
| parent | f74b4cb265d8ff9aab8e5734124dd3d2ec1b8a1a (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.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Entities/Creature/CreatureData.h | 6 |
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; }; |
