Core/Creatures: Drop dynamic flags from creature and creature_template

Port From (https://github.com/TrinityCore/TrinityCore/commit/bb68fd73b498f6d6fc2c4414352c6e073a184304)
This commit is contained in:
hondacrx
2023-06-24 09:11:35 -04:00
parent 55b91302ec
commit 219db87e6a
4 changed files with 43 additions and 69 deletions
+36 -50
View File
@@ -103,13 +103,12 @@ namespace Game
return cinfo.GetFirstInvisibleModel();
}
public static void ChooseCreatureFlags(CreatureTemplate cInfo, out ulong npcFlag, out uint unitFlags, out uint unitFlags2, out uint unitFlags3, out uint dynamicFlags, CreatureData data = null)
public static void ChooseCreatureFlags(CreatureTemplate cInfo, out ulong npcFlag, out uint unitFlags, out uint unitFlags2, out uint unitFlags3, CreatureData data = null)
{
npcFlag = data != null && data.npcflag != 0 ? data.npcflag : cInfo.Npcflag;
unitFlags = data != null && data.unit_flags != 0 ? data.unit_flags : (uint)cInfo.UnitFlags;
unitFlags2 = data != null && data.unit_flags2 != 0 ? data.unit_flags2 : cInfo.UnitFlags2;
unitFlags3 = data != null && data.unit_flags3 != 0 ? data.unit_flags3 : cInfo.UnitFlags3;
dynamicFlags = data != null && data.dynamicflags != 0 ? data.dynamicflags : cInfo.DynamicFlags;
}
public static ResponseCodes CheckPlayerName(string name, Locale locale, bool create = false)
@@ -1794,10 +1793,9 @@ namespace Game
creature.UnitFlags = (UnitFlags)fields.Read<uint>(22);
creature.UnitFlags2 = fields.Read<uint>(23);
creature.UnitFlags3 = fields.Read<uint>(24);
creature.DynamicFlags = fields.Read<uint>(25);
creature.Family = (CreatureFamily)fields.Read<uint>(26);
creature.TrainerClass = (Class)fields.Read<byte>(27);
creature.CreatureType = (CreatureType)fields.Read<byte>(28);
creature.Family = (CreatureFamily)fields.Read<uint>(25);
creature.TrainerClass = (Class)fields.Read<byte>(26);
creature.CreatureType = (CreatureType)fields.Read<byte>(27);
for (var i = (int)SpellSchools.Holy; i < (int)SpellSchools.Max; ++i)
creature.Resistance[i] = 0;
@@ -1805,42 +1803,42 @@ namespace Game
for (var i = 0; i < SharedConst.MaxCreatureSpells; ++i)
creature.Spells[i] = 0;
creature.VehicleId = fields.Read<uint>(29);
creature.AIName = fields.Read<string>(30);
creature.MovementType = fields.Read<uint>(31);
creature.VehicleId = fields.Read<uint>(28);
creature.AIName = fields.Read<string>(29);
creature.MovementType = fields.Read<uint>(30);
if (!fields.IsNull(31))
creature.Movement.Ground = (CreatureGroundMovementType)fields.Read<byte>(31);
if (!fields.IsNull(32))
creature.Movement.Ground = (CreatureGroundMovementType)fields.Read<byte>(32);
creature.Movement.Swim = fields.Read<bool>(32);
if (!fields.IsNull(33))
creature.Movement.Swim = fields.Read<bool>(33);
creature.Movement.Flight = (CreatureFlightMovementType)fields.Read<byte>(33);
if (!fields.IsNull(34))
creature.Movement.Flight = (CreatureFlightMovementType)fields.Read<byte>(34);
creature.Movement.Rooted = fields.Read<bool>(34);
if (!fields.IsNull(35))
creature.Movement.Rooted = fields.Read<bool>(35);
creature.Movement.Chase = (CreatureChaseMovementType)fields.Read<byte>(35);
if (!fields.IsNull(36))
creature.Movement.Chase = (CreatureChaseMovementType)fields.Read<byte>(36);
creature.Movement.Random = (CreatureRandomMovementType)fields.Read<byte>(36);
if (!fields.IsNull(37))
creature.Movement.Random = (CreatureRandomMovementType)fields.Read<byte>(37);
creature.Movement.InteractionPauseTimer = fields.Read<uint>(37);
if (!fields.IsNull(38))
creature.Movement.InteractionPauseTimer = fields.Read<uint>(38);
creature.ModExperience = fields.Read<float>(39);
creature.RacialLeader = fields.Read<bool>(40);
creature.MovementId = fields.Read<uint>(41);
creature.WidgetSetID = fields.Read<int>(42);
creature.WidgetSetUnitConditionID = fields.Read<int>(43);
creature.RegenHealth = fields.Read<bool>(44);
creature.MechanicImmuneMask = fields.Read<ulong>(45);
creature.SpellSchoolImmuneMask = fields.Read<uint>(46);
creature.FlagsExtra = (CreatureFlagsExtra)fields.Read<uint>(47);
creature.ScriptID = GetScriptId(fields.Read<string>(48));
creature.StringId = fields.Read<string>(49);
creature.ModExperience = fields.Read<float>(38);
creature.RacialLeader = fields.Read<bool>(39);
creature.MovementId = fields.Read<uint>(40);
creature.WidgetSetID = fields.Read<int>(41);
creature.WidgetSetUnitConditionID = fields.Read<int>(42);
creature.RegenHealth = fields.Read<bool>(43);
creature.MechanicImmuneMask = fields.Read<ulong>(44);
creature.SpellSchoolImmuneMask = fields.Read<uint>(45);
creature.FlagsExtra = (CreatureFlagsExtra)fields.Read<uint>(46);
creature.ScriptID = GetScriptId(fields.Read<string>(47));
creature.StringId = fields.Read<string>(48);
creatureTemplateStorage[entry] = creature;
}
@@ -2870,12 +2868,6 @@ namespace Game
cInfo.UnitFlags3 &= (uint)UnitFlags3.Allowed;
}
if (cInfo.DynamicFlags != 0)
{
Log.outError(LogFilter.Sql, $"Table `creature_template` lists creature (Entry: {cInfo.Entry}) with `dynamicflags` > 0. Ignored and set to 0.");
cInfo.DynamicFlags = 0;
}
if (!cInfo.GossipMenuIds.Empty() && !cInfo.Npcflag.HasAnyFlag((uint)NPCFlags.Gossip))
Log.outInfo(LogFilter.Sql, $"Creature (Entry: {cInfo.Entry}) has assigned gossip menu, but npcflag does not include UNIT_NPC_FLAG_GOSSIP.");
else if (cInfo.GossipMenuIds.Empty() && cInfo.Npcflag.HasAnyFlag((uint)NPCFlags.Gossip))
@@ -3433,8 +3425,8 @@ namespace Game
SQLResult result = DB.World.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
"currentwaypoint, curhealth, curmana, MovementType, spawnDifficulties, eventEntry, poolSpawnId, creature.npcflag, creature.unit_flags, creature.unit_flags2, creature.unit_flags3, " +
// 22 23 24 25 26 27 28
"creature.dynamicflags, creature.phaseUseFlags, creature.phaseid, creature.phasegroup, creature.terrainSwapMap, creature.ScriptName, creature.StringId " +
//22 23 24 25 26 27
"creature.phaseUseFlags, creature.phaseid, creature.phasegroup, creature.terrainSwapMap, creature.ScriptName, creature.StringId " +
"FROM creature LEFT OUTER JOIN game_event_creature ON creature.guid = game_event_creature.guid LEFT OUTER JOIN pool_members ON pool_members.type = 0 AND creature.guid = pool_members.spawnId");
if (result.IsEmpty())
@@ -3491,13 +3483,13 @@ namespace Game
data.unit_flags = result.Read<uint>(19);
data.unit_flags2 = result.Read<uint>(20);
data.unit_flags3 = result.Read<uint>(21);
data.dynamicflags = result.Read<uint>(22);
data.PhaseUseFlags = (PhaseUseFlagsValues)result.Read<byte>(23);
data.PhaseId = result.Read<uint>(24);
data.PhaseGroup = result.Read<uint>(25);
data.terrainSwapMap = result.Read<int>(26);
data.ScriptId = GetScriptId(result.Read<string>(27));
data.StringId = result.Read<string>(28);
data.PhaseUseFlags = (PhaseUseFlagsValues)result.Read<byte>(22);
data.PhaseId = result.Read<uint>(23);
data.PhaseGroup = result.Read<uint>(24);
data.terrainSwapMap = result.Read<int>(25);
data.ScriptId = GetScriptId(result.Read<string>(26));
data.StringId = result.Read<string>(27);
data.spawnGroupData = _spawnGroupDataStorage[IsTransportMap(data.MapId) ? 1 : 0u]; // transport spawns default to compatibility group
var mapEntry = CliDB.MapStorage.LookupByKey(data.MapId);
@@ -3625,12 +3617,6 @@ namespace Game
cInfo.UnitFlags3 &= (uint)UnitFlags3.Allowed;
}
if (cInfo.DynamicFlags != 0)
{
Log.outError(LogFilter.Sql, $"Table `creature_template` lists creature (Entry: {cInfo.Entry}) with `dynamicflags` > 0. Ignored and set to 0.");
cInfo.DynamicFlags = 0;
}
if (WorldConfig.GetBoolValue(WorldCfg.CalculateCreatureZoneAreaData))
{
PhasingHandler.InitDbVisibleMapId(phaseShift, data.terrainSwapMap);