diff options
-rw-r--r-- | sql/updates/world/3.4.x/2023_11_29_01_world.sql | 2 | ||||
-rw-r--r-- | src/server/database/Database/Implementation/WorldDatabase.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/CreatureData.h | 1 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 29 |
5 files changed, 20 insertions, 15 deletions
diff --git a/sql/updates/world/3.4.x/2023_11_29_01_world.sql b/sql/updates/world/3.4.x/2023_11_29_01_world.sql new file mode 100644 index 00000000000..490bc20e852 --- /dev/null +++ b/sql/updates/world/3.4.x/2023_11_29_01_world.sql @@ -0,0 +1,2 @@ +ALTER TABLE `creature_template` + ADD COLUMN `Civilian` TINYINT UNSIGNED DEFAULT 0 NOT NULL AFTER `ExperienceModifier`; diff --git a/src/server/database/Database/Implementation/WorldDatabase.cpp b/src/server/database/Database/Implementation/WorldDatabase.cpp index 1a5275f0a13..ef9ca9165cb 100644 --- a/src/server/database/Database/Implementation/WorldDatabase.cpp +++ b/src/server/database/Database/Implementation/WorldDatabase.cpp @@ -76,7 +76,7 @@ void WorldDatabaseConnection::DoPrepareStatements() PrepareStatement(WORLD_SEL_WAYPOINT_SCRIPT_ID_BY_GUID, "SELECT id FROM waypoint_scripts WHERE guid = ?", CONNECTION_SYNCH); PrepareStatement(WORLD_DEL_CREATURE, "DELETE FROM creature WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(WORLD_SEL_COMMANDS, "SELECT name, help FROM command", CONNECTION_SYNCH); - PrepareStatement(WORLD_SEL_CREATURE_TEMPLATE, "SELECT entry, KillCredit1, KillCredit2, name, femaleName, subname, TitleAlt, IconName, RequiredExpansion, VignetteID, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, unit_flags3, family, trainer_class, type, VehicleId, AIName, MovementType, ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, ctm.Chase, ctm.Random, ctm.InteractionPauseTimer, ExperienceModifier, RacialLeader, movementId, WidgetSetID, WidgetSetUnitConditionID, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName, StringId FROM creature_template ct LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId WHERE entry = ? OR 1 = ?", CONNECTION_SYNCH); + PrepareStatement(WORLD_SEL_CREATURE_TEMPLATE, "SELECT entry, KillCredit1, KillCredit2, name, femaleName, subname, TitleAlt, IconName, RequiredExpansion, VignetteID, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, unit_flags3, family, trainer_class, type, VehicleId, AIName, MovementType, ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, ctm.Chase, ctm.Random, ctm.InteractionPauseTimer, ExperienceModifier, Civilian, RacialLeader, movementId, WidgetSetID, WidgetSetUnitConditionID, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName, StringId FROM creature_template ct LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId WHERE entry = ? OR 1 = ?", CONNECTION_SYNCH); PrepareStatement(WORLD_SEL_WAYPOINT_SCRIPT_BY_ID, "SELECT guid, delay, command, datalong, datalong2, dataint, x, y, z, o FROM waypoint_scripts WHERE id = ?", CONNECTION_SYNCH); PrepareStatement(WORLD_SEL_CREATURE_BY_ID, "SELECT guid FROM creature WHERE id = ?", CONNECTION_SYNCH); PrepareStatement(WORLD_SEL_GAMEOBJECT_NEAREST, "SELECT guid, id, position_x, position_y, position_z, map, (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) AS order_ FROM gameobject WHERE map = ? AND (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) <= ? ORDER BY order_", CONNECTION_SYNCH); diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 9abcc58623b..d50aa414381 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -182,6 +182,7 @@ WorldPacket CreatureTemplate::BuildQueryData(LocaleConstant loc, Difficulty diff WorldPackets::Query::CreatureStats& stats = queryTemp.Stats; + stats.Cilivilan = Civilian; stats.Leader = RacialLeader; stats.Name[0] = Name; diff --git a/src/server/game/Entities/Creature/CreatureData.h b/src/server/game/Entities/Creature/CreatureData.h index 0777e2b69c7..0dd0e11a263 100644 --- a/src/server/game/Entities/Creature/CreatureData.h +++ b/src/server/game/Entities/Creature/CreatureData.h @@ -537,6 +537,7 @@ struct TC_GAME_API CreatureTemplate uint32 MovementType; CreatureMovementData Movement; float ModExperience; + bool Civilian; bool RacialLeader; uint32 movementId; int32 WidgetSetID; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 355f88be2c1..1fb7d2916f7 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -365,11 +365,11 @@ void ObjectMgr::LoadCreatureTemplates() // "family, trainer_class, type, VehicleId, AIName, MovementType, " // 31 32 33 34 35 36 37 38 // "ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, ctm.Chase, ctm.Random, ctm.InteractionPauseTimer, ExperienceModifier, " - // 39 40 41 42 43 - // "RacialLeader, movementId, WidgetSetID, WidgetSetUnitConditionID, RegenHealth, " - // 44 45 46 + // 39 40 41 42 43 44 + // "Civilian, RacialLeader, movementId, WidgetSetID, WidgetSetUnitConditionID, RegenHealth, " + // 45 46 47 // "mechanic_immune_mask, spell_school_immune_mask, flags_extra, " - // 47 48 + // 48 49 // "ScriptName, StringId FROM creature_template WHERE entry = ? OR 1 = ?"); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_CREATURE_TEMPLATE); @@ -472,16 +472,17 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields) creatureTemplate.Movement.InteractionPauseTimer = fields[37].GetUInt32(); creatureTemplate.ModExperience = fields[38].GetFloat(); - creatureTemplate.RacialLeader = fields[39].GetBool(); - creatureTemplate.movementId = fields[40].GetUInt32(); - creatureTemplate.WidgetSetID = fields[41].GetInt32(); - creatureTemplate.WidgetSetUnitConditionID = fields[42].GetInt32(); - creatureTemplate.RegenHealth = fields[43].GetBool(); - creatureTemplate.MechanicImmuneMask = fields[44].GetUInt64(); - creatureTemplate.SpellSchoolImmuneMask = fields[45].GetUInt32(); - creatureTemplate.flags_extra = fields[46].GetUInt32(); - creatureTemplate.ScriptID = GetScriptId(fields[47].GetString()); - creatureTemplate.StringId = fields[48].GetString(); + creatureTemplate.Civilian = fields[39].GetBool(); + creatureTemplate.RacialLeader = fields[40].GetBool(); + creatureTemplate.movementId = fields[41].GetUInt32(); + creatureTemplate.WidgetSetID = fields[42].GetInt32(); + creatureTemplate.WidgetSetUnitConditionID = fields[43].GetInt32(); + creatureTemplate.RegenHealth = fields[44].GetBool(); + creatureTemplate.MechanicImmuneMask = fields[45].GetUInt64(); + creatureTemplate.SpellSchoolImmuneMask = fields[46].GetUInt32(); + creatureTemplate.flags_extra = fields[47].GetUInt32(); + creatureTemplate.ScriptID = GetScriptId(fields[48].GetString()); + creatureTemplate.StringId = fields[49].GetString(); } void ObjectMgr::LoadCreatureTemplateGossip() |