aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp11
-rw-r--r--src/server/game/Entities/Creature/Creature.h11
2 files changed, 15 insertions, 7 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 8bff608c149..f51b7a585bd 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -410,13 +410,7 @@ bool Creature::UpdateEntry(uint32 Entry, uint32 team, const CreatureData *data)
if (isTrigger())
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- if (isTotem() || isTrigger()
- || GetCreatureType() == CREATURE_TYPE_CRITTER)
- SetReactState(REACT_PASSIVE);
- /*else if (isCivilian())
- SetReactState(REACT_DEFENSIVE);*/
- else
- SetReactState(REACT_AGGRESSIVE);
+ InitializeReactState();
if (cInfo->flags_extra & CREATURE_FLAG_EXTRA_NO_TAUNT)
{
@@ -1602,6 +1596,9 @@ void Creature::Respawn(bool force)
uint16 poolid = GetDBTableGUIDLow() ? poolhandler.IsPartOfAPool<Creature>(GetDBTableGUIDLow()) : 0;
if (poolid)
poolhandler.UpdatePool<Creature>(poolid, GetDBTableGUIDLow());
+
+ //Re-initialize reactstate that could be altered by movementgenerators
+ InitializeReactState();
}
UpdateObjectVisibility();
diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h
index ae37ba56fd3..11b8ce29763 100644
--- a/src/server/game/Entities/Creature/Creature.h
+++ b/src/server/game/Entities/Creature/Creature.h
@@ -428,9 +428,20 @@ class Creature : public Unit, public GridObject<Creature>
bool canWalk() const { return GetCreatureInfo()->InhabitType & INHABIT_GROUND; }
bool canSwim() const { return GetCreatureInfo()->InhabitType & INHABIT_WATER; }
//bool canFly() const { return GetCreatureInfo()->InhabitType & INHABIT_AIR; }
+
void SetReactState(ReactStates st) { m_reactState = st; }
ReactStates GetReactState() { return m_reactState; }
bool HasReactState(ReactStates state) const { return (m_reactState == state); }
+ void InitializeReactState()
+ {
+ if (isTotem() || isTrigger() || GetCreatureType() == CREATURE_TYPE_CRITTER)
+ SetReactState(REACT_PASSIVE);
+ else
+ SetReactState(REACT_AGGRESSIVE);
+ /*else if (isCivilian())
+ SetReactState(REACT_DEFENSIVE);*/;
+ }
+
///// TODO RENAME THIS!!!!!
bool isCanTrainingOf(Player* player, bool msg) const;
bool isCanInteractWithBattleMaster(Player* player, bool msg) const;