diff --git a/data/sql/updates/pending_db_world/rev_1609633274065776000.sql b/data/sql/updates/pending_db_world/rev_1609633274065776000.sql new file mode 100644 index 000000000..0fc85e214 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1609633274065776000.sql @@ -0,0 +1,3 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1609633274065776000'); + +UPDATE `creature_template` SET `inhabittype`=`inhabittype`|8 WHERE `entry` IN (30268, 30273, 1921, 2674, 5674, 8035, 16236, 16400, 16897, 20251, 20561, 21322, 21413, 14697, 18679, 18695, 23076, 23077, 23876, 23996, 24210, 25284, 25534, 27064, 27430, 27894, 28156, 28366, 29475, 29483, 29613, 29747, 29790, 30236, 30475, 31103, 31280, 31424, 32347, 32795, 32938, 33174, 33184, 33229, 33243, 33272, 33342, 33352, 33353, 33651, 34047, 34050, 34068, 34071, 34096, 34108, 34110, 34121, 34149, 34362, 34363); diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index e0dcf5be3..9004fe173 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -482,6 +482,11 @@ bool Creature::UpdateEntry(uint32 Entry, const CreatureData* data, bool changele ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, true); } + if (cInfo->InhabitType & INHABIT_ROOT) + { + SetControlled(true, UNIT_STATE_ROOT); + } + UpdateEnvironmentIfNeeded(3); return true; diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index ea0274cf4..b1f968f61 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -302,7 +302,8 @@ enum InhabitTypeValues INHABIT_GROUND = 1, INHABIT_WATER = 2, INHABIT_AIR = 4, - INHABIT_ANYWHERE = INHABIT_GROUND | INHABIT_WATER | INHABIT_AIR + INHABIT_ROOT = 8, + INHABIT_ANYWHERE = INHABIT_GROUND | INHABIT_WATER | INHABIT_AIR | INHABIT_ROOT }; // Enums used by StringTextData::Type (CreatureEventAI)