Core/Creatures: Drop dynamic flags from creature and creature_template

This commit is contained in:
Meji authored and Ovahlord committed 2025-03-11 21:29:30 +01:00
1 parent 55318b76b6
commit d0c902ce1f
6 files changed
+73 -78

No files matched your search

+53 -61
View File
@@ -429,15 +429,15 @@ void ObjectMgr::LoadCreatureTemplates()
"modelid4, name, femaleName, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, exp_unk, faction, npcflag, speed_walk, speed_run, "
// 23 24 25 26 27 28 29 30 31 32
"scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, "
// 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
"dynamicflags, family, trainer_class, type, type_flags, type_flags2, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, "
// 48 49 50 51 52 53 54 55 56 57 58 59 60 61
// 33 34 35 36 37 38 39 40 41 42 43 44 45 46
"family, trainer_class, type, type_flags, type_flags2, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, "
// 47 48 49 50 51 52 53 54 55 56 57 58 59 60
"spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, "
// 62 63 64 65 66 67 68 69
// 61 62 63 64 65 66 67 68
"ctm.HoverInitiallyEnabled, ctm.Random, ctm.InteractionPauseTimer, HoverHeight, HealthModifier, HealthModifierExtra, ManaModifier, ManaModifierExtra, "
// 70 71 72 73 74 75 76 77
// 69 70 71 72 73 74 75 76
"ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, "
// 78 79 80 81 82 83 84
// 77 78 79 80 81 82 83
"flags_extra, StaticFlags, StaticFlags2, StaticFlags3, StaticFlags4, StaticFlags5, ScriptName FROM creature_template ct LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId");
if (!result)
@@ -505,55 +505,54 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields)
creatureTemplate.unit_class = uint32(fields[30].GetUInt8());
creatureTemplate.unit_flags = fields[31].GetUInt32();
creatureTemplate.unit_flags2 = fields[32].GetUInt32();
creatureTemplate.dynamicflags = fields[33].GetUInt32();
creatureTemplate.family = CreatureFamily(uint32(fields[34].GetUInt8()));
creatureTemplate.trainer_class = fields[35].GetUInt32();
creatureTemplate.type = uint32(fields[36].GetUInt8());
creatureTemplate.type_flags = fields[37].GetUInt32();
creatureTemplate.type_flags2 = fields[38].GetUInt32();
creatureTemplate.lootid = fields[39].GetUInt32();
creatureTemplate.pickpocketLootId = fields[40].GetUInt32();
creatureTemplate.SkinLootId = fields[41].GetUInt32();
creatureTemplate.family = CreatureFamily(uint32(fields[33].GetUInt8()));
creatureTemplate.trainer_class = fields[34].GetUInt32();
creatureTemplate.type = uint32(fields[35].GetUInt8());
creatureTemplate.type_flags = fields[36].GetUInt32();
creatureTemplate.type_flags2 = fields[37].GetUInt32();
creatureTemplate.lootid = fields[38].GetUInt32();
creatureTemplate.pickpocketLootId = fields[39].GetUInt32();
creatureTemplate.SkinLootId = fields[40].GetUInt32();
for (uint8 i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i)
creatureTemplate.resistance[i] = fields[42 + i - 1].GetInt16();
creatureTemplate.resistance[i] = fields[41 + i - 1].GetInt16();
for (uint8 i = 0; i < MAX_CREATURE_SPELLS; ++i)
creatureTemplate.spells[i] = fields[48 + i].GetUInt32();
creatureTemplate.spells[i] = fields[47 + i].GetUInt32();
creatureTemplate.PetSpellDataId = fields[55].GetUInt32();
creatureTemplate.VehicleId = fields[56].GetUInt32();
creatureTemplate.mingold = fields[57].GetUInt32();
creatureTemplate.maxgold = fields[58].GetUInt32();
creatureTemplate.AIName = fields[59].GetString();
creatureTemplate.MovementType = uint32(fields[60].GetUInt8());
if (!fields[61].IsNull())
creatureTemplate.Movement.HoverInitiallyEnabled = fields[61].GetBool();
creatureTemplate.PetSpellDataId = fields[56].GetUInt32();
creatureTemplate.VehicleId = fields[57].GetUInt32();
creatureTemplate.mingold = fields[58].GetUInt32();
creatureTemplate.maxgold = fields[59].GetUInt32();
creatureTemplate.AIName = fields[60].GetString();
creatureTemplate.MovementType = uint32(fields[61].GetUInt8());
if (!fields[62].IsNull())
creatureTemplate.Movement.HoverInitiallyEnabled = fields[62].GetBool();
creatureTemplate.Movement.Random = static_cast<CreatureRandomMovementType>(fields[62].GetUInt8());
if (!fields[63].IsNull())
creatureTemplate.Movement.Random = static_cast<CreatureRandomMovementType>(fields[63].GetUInt8());
creatureTemplate.Movement.InteractionPauseTimer = fields[63].GetUInt32();
if (!fields[64].IsNull())
creatureTemplate.Movement.InteractionPauseTimer = fields[64].GetUInt32();
creatureTemplate.HoverHeight = fields[64].GetFloat();
creatureTemplate.ModHealth = fields[65].GetFloat();
creatureTemplate.ModHealthExtra = fields[66].GetFloat();
creatureTemplate.ModMana = fields[67].GetFloat();
creatureTemplate.ModManaExtra = fields[68].GetFloat();
creatureTemplate.ModArmor = fields[69].GetFloat();
creatureTemplate.ModDamage = fields[70].GetFloat();
creatureTemplate.ModExperience = fields[71].GetFloat();
creatureTemplate.HoverHeight = fields[65].GetFloat();
creatureTemplate.ModHealth = fields[66].GetFloat();
creatureTemplate.ModHealthExtra = fields[67].GetFloat();
creatureTemplate.ModMana = fields[68].GetFloat();
creatureTemplate.ModManaExtra = fields[69].GetFloat();
creatureTemplate.ModArmor = fields[70].GetFloat();
creatureTemplate.ModDamage = fields[71].GetFloat();
creatureTemplate.ModExperience = fields[72].GetFloat();
creatureTemplate.RacialLeader = fields[73].GetBool();
creatureTemplate.movementId = fields[74].GetUInt32();
creatureTemplate.RegenHealth = fields[75].GetBool();
creatureTemplate.MechanicImmuneMask = fields[76].GetUInt32();
creatureTemplate.SpellSchoolImmuneMask = fields[77].GetUInt32();
creatureTemplate.flags_extra = fields[78].GetUInt32();
creatureTemplate.StaticFlags = CreatureStaticFlagsHolder(CreatureStaticFlags(fields[79].GetUInt32()), CreatureStaticFlags2(fields[80].GetUInt32()),
CreatureStaticFlags3(fields[81].GetUInt32()), CreatureStaticFlags4(fields[82].GetUInt32()), CreatureStaticFlags5(fields[83].GetUInt32()));
creatureTemplate.ScriptID = GetScriptId(fields[84].GetCString());
creatureTemplate.RacialLeader = fields[72].GetBool();
creatureTemplate.movementId = fields[73].GetUInt32();
creatureTemplate.RegenHealth = fields[74].GetBool();
creatureTemplate.MechanicImmuneMask = fields[75].GetUInt32();
creatureTemplate.SpellSchoolImmuneMask = fields[76].GetUInt32();
creatureTemplate.flags_extra = fields[77].GetUInt32();
creatureTemplate.StaticFlags = CreatureStaticFlagsHolder(CreatureStaticFlags(fields[78].GetUInt32()), CreatureStaticFlags2(fields[79].GetUInt32()),
CreatureStaticFlags3(fields[80].GetUInt32()), CreatureStaticFlags4(fields[81].GetUInt32()), CreatureStaticFlags5(fields[82].GetUInt32()));
creatureTemplate.ScriptID = GetScriptId(fields[83].GetCString());
}
void ObjectMgr::LoadCreatureTemplateModels()
@@ -1597,7 +1596,7 @@ CreatureModel const* ObjectMgr::ChooseDisplayId(CreatureTemplate const* cinfo, C
return cinfo->GetFirstInvisibleModel();
}
void ObjectMgr::ChooseCreatureFlags(CreatureTemplate const* cInfo, uint32* npcFlags, uint32* unitFlags, uint32* unitFlags2, uint32* dynamicFlags, CreatureStaticFlagsHolder const& staticFlags, CreatureData const* data /*= nullptr*/)
void ObjectMgr::ChooseCreatureFlags(CreatureTemplate const* cInfo, uint32* npcFlags, uint32* unitFlags, uint32* unitFlags2, CreatureStaticFlagsHolder const& staticFlags, CreatureData const* data /*= nullptr*/)
{
#define ChooseCreatureFlagSource(field) ((data && data->field.has_value()) ? *data->field : cInfo->field)
@@ -1627,11 +1626,6 @@ void ObjectMgr::ChooseCreatureFlags(CreatureTemplate const* cInfo, uint32* npcFl
if (staticFlags.HasFlag(CREATURE_STATIC_FLAG_4_PREVENT_SWIM))
*unitFlags2 |= UNIT_FLAG2_AI_WILL_ONLY_SWIM_IF_TARGET_SWIMS;
}
if (dynamicFlags)
{
*dynamicFlags = ChooseCreatureFlagSource(dynamicflags);
}
}
@@ -2056,9 +2050,9 @@ void ObjectMgr::LoadCreatures()
// 0 1 2 3 4 5 6 7 8 9 10
QueryResult result = WorldDatabase.Query("SELECT creature.guid, id, map, position_x, position_y, position_z, orientation, modelid, equipment_id, spawntimesecs, wander_distance, "
// 11 12 13 14 15 16 17 18 19 20 21 22
"currentwaypoint, curhealth, curmana, MovementType, spawnMask, eventEntry, poolSpawnId, creature.npcflag, creature.unit_flags, creature.unit_flags2, creature.dynamicflags, creature.phaseUseFlags, "
// 23 24 25 26
// 11 12 13 14 15 16 17 18 19 20 21
"currentwaypoint, curhealth, curmana, MovementType, spawnMask, eventEntry, poolSpawnId, creature.npcflag, creature.unit_flags, creature.unit_flags2, creature.phaseUseFlags, "
// 22 23 24 25
"creature.PhaseId, creature.PhaseGroup, creature.terrainSwapMap, creature.ScriptName "
"FROM creature "
"LEFT OUTER JOIN game_event_creature ON creature.guid = game_event_creature.guid "
@@ -2118,13 +2112,11 @@ void ObjectMgr::LoadCreatures()
data.unit_flags = fields[19].GetUInt32();
if (!fields[20].IsNull())
data.unit_flags2 = fields[20].GetUInt32();
if (!fields[21].IsNull())
data.dynamicflags = fields[21].GetUInt32();
data.phaseUseFlags = fields[22].GetUInt8();
data.phaseId = fields[23].GetUInt32();
data.phaseGroup = fields[24].GetUInt32();
data.terrainSwapMap = fields[25].GetInt32();
data.scriptId = GetScriptId(fields[26].GetString());
data.phaseUseFlags = fields[21].GetUInt8();
data.phaseId = fields[22].GetUInt32();
data.phaseGroup = fields[23].GetUInt32();
data.terrainSwapMap = fields[24].GetInt32();
data.scriptId = GetScriptId(fields[25].GetString());
data.spawnGroupData = GetDefaultSpawnGroup();
MapEntry const* mapEntry = sMapStore.LookupEntry(data.mapId);