Core/Creatures: Drop dynamic flags from creature and creature_template
This commit is contained in:
1 parent
55318b76b6
commit
d0c902ce1f
6 files changed
+73
-78
No files matched your search
@@ -0,0 +1,5 @@
|
||||
ALTER TABLE `creature_template`
|
||||
DROP COLUMN `dynamicflags`;
|
||||
|
||||
ALTER TABLE `creature`
|
||||
DROP COLUMN `dynamicflags`;
|
||||
@@ -76,12 +76,12 @@ 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, permission, help FROM command", CONNECTION_SYNCH);
|
||||
PrepareStatement(WORLD_SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid1, modelid2, modelid3, modelid4, name, femaleName, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, exp_unk, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, dynamicflags, family, trainer_class, type, type_flags, type_flags2, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, ctm.HoverInitiallyEnabled, ctm.Random, ctm.InteractionPauseTimer, HoverHeight, HealthModifier, HealthModifierExtra, ManaModifier, ManaModifierExtra, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, StaticFlags, StaticFlags2, StaticFlags3, StaticFlags4, StaticFlags5, ScriptName FROM creature_template ct LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId WHERE entry = ?", CONNECTION_SYNCH);
|
||||
PrepareStatement(WORLD_SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid1, modelid2, modelid3, modelid4, name, femaleName, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, exp_unk, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, family, trainer_class, type, type_flags, type_flags2, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, ctm.HoverInitiallyEnabled, ctm.Random, ctm.InteractionPauseTimer, HoverHeight, HealthModifier, HealthModifierExtra, ManaModifier, ManaModifierExtra, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, StaticFlags, StaticFlags2, StaticFlags3, StaticFlags4, StaticFlags5, ScriptName FROM creature_template ct LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId WHERE entry = ?", 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);
|
||||
PrepareStatement(WORLD_SEL_CREATURE_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 creature WHERE map = ? AND (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) <= ? ORDER BY order_", CONNECTION_SYNCH);
|
||||
PrepareStatement(WORLD_INS_CREATURE, "INSERT INTO creature (guid, id , map, spawnMask, PhaseId, PhaseGroup, modelid, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(WORLD_INS_CREATURE, "INSERT INTO creature (guid, id , map, spawnMask, PhaseId, PhaseGroup, modelid, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, unit_flags2) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(WORLD_DEL_GAME_EVENT_CREATURE, "DELETE FROM game_event_creature WHERE guid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(WORLD_DEL_GAME_EVENT_MODEL_EQUIP, "DELETE FROM game_event_model_equip WHERE guid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(WORLD_INS_GAMEOBJECT, "INSERT INTO gameobject (guid, id, map, spawnMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
|
||||
|
||||
@@ -582,8 +582,8 @@ bool Creature::UpdateEntry(uint32 entry, CreatureData const* data /*= nullptr*/,
|
||||
|
||||
SetFaction(cInfo->faction);
|
||||
|
||||
uint32 npcflags, unitFlags, unitFlags2, dynamicFlags;
|
||||
ObjectMgr::ChooseCreatureFlags(cInfo, &npcflags, &unitFlags, &unitFlags2, &dynamicFlags, _staticFlags, data);
|
||||
uint32 npcflags, unitFlags, unitFlags2;
|
||||
ObjectMgr::ChooseCreatureFlags(cInfo, &npcflags, &unitFlags, &unitFlags2, _staticFlags, data);
|
||||
|
||||
if (cInfo->flags_extra & CREATURE_FLAG_EXTRA_WORLDEVENT)
|
||||
npcflags |= sGameEventMgr->GetNPCFlag(this);
|
||||
@@ -598,7 +598,7 @@ bool Creature::UpdateEntry(uint32 entry, CreatureData const* data /*= nullptr*/,
|
||||
SetUInt32Value(UNIT_FIELD_FLAGS, unitFlags);
|
||||
SetUInt32Value(UNIT_FIELD_FLAGS_2, unitFlags2);
|
||||
|
||||
SetUInt32Value(UNIT_DYNAMIC_FLAGS, dynamicFlags);
|
||||
SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_NONE);
|
||||
|
||||
SetCanDualWield(cInfo->flags_extra & CREATURE_FLAG_EXTRA_USE_OFFHAND_ATTACK);
|
||||
|
||||
@@ -1307,7 +1307,7 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask)
|
||||
uint32 displayId = GetNativeDisplayId();
|
||||
uint32 npcflag = GetUInt32Value(UNIT_NPC_FLAGS);
|
||||
uint32 unit_flags = GetUInt32Value(UNIT_FIELD_FLAGS);
|
||||
uint32 dynamicflags = GetUInt32Value(UNIT_DYNAMIC_FLAGS);
|
||||
uint32 unit_flags2 = GetUInt32Value(UNIT_FIELD_FLAGS_2);
|
||||
|
||||
// check if it's a custom model and if not, use 0 for displayId
|
||||
CreatureTemplate const* cinfo = GetCreatureTemplate();
|
||||
@@ -1323,8 +1323,8 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask)
|
||||
if (unit_flags == cinfo->unit_flags)
|
||||
unit_flags = 0;
|
||||
|
||||
if (dynamicflags == cinfo->dynamicflags)
|
||||
dynamicflags = 0;
|
||||
if (unit_flags2 == cinfo->unit_flags2)
|
||||
unit_flags2 = 0;
|
||||
}
|
||||
|
||||
if (!data.spawnId)
|
||||
@@ -1355,7 +1355,7 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask)
|
||||
data.spawnMask = spawnMask;
|
||||
data.npcflag = npcflag;
|
||||
data.unit_flags = unit_flags;
|
||||
data.dynamicflags = dynamicflags;
|
||||
data.unit_flags2 = unit_flags2;
|
||||
if (!data.spawnGroupData)
|
||||
data.spawnGroupData = sObjectMgr->GetDefaultSpawnGroup();
|
||||
|
||||
@@ -1393,7 +1393,7 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask)
|
||||
stmt->setUInt8(index++, uint8(GetDefaultMovementType()));
|
||||
stmt->setUInt32(index++, npcflag);
|
||||
stmt->setUInt32(index++, unit_flags);
|
||||
stmt->setUInt32(index++, dynamicflags);
|
||||
stmt->setUInt32(index++, unit_flags2);
|
||||
trans->Append(stmt);
|
||||
|
||||
WorldDatabase.CommitTransaction(trans);
|
||||
@@ -1991,13 +1991,13 @@ void Creature::setDeathState(DeathState s)
|
||||
CreatureData const* creatureData = GetCreatureData();
|
||||
CreatureTemplate const* cinfo = GetCreatureTemplate();
|
||||
|
||||
uint32 npcflag, unitFlags, unitFlags2, dynamicFlags;
|
||||
ObjectMgr::ChooseCreatureFlags(cinfo, &npcflag, &unitFlags, &unitFlags2, &dynamicFlags, _staticFlags, creatureData);
|
||||
uint32 npcflag, unitFlags, unitFlags2;
|
||||
ObjectMgr::ChooseCreatureFlags(cinfo, &npcflag, &unitFlags, &unitFlags2, _staticFlags, creatureData);
|
||||
|
||||
SetUInt32Value(UNIT_NPC_FLAGS, npcflag);
|
||||
SetUInt32Value(UNIT_FIELD_FLAGS, unitFlags);
|
||||
SetUInt32Value(UNIT_FIELD_FLAGS_2, unitFlags2);
|
||||
SetUInt32Value(UNIT_DYNAMIC_FLAGS, dynamicFlags);
|
||||
SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_NONE);
|
||||
|
||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT);
|
||||
|
||||
@@ -3265,7 +3265,7 @@ void Creature::AtDisengage()
|
||||
|
||||
ClearUnitState(UNIT_STATE_ATTACK_PLAYER);
|
||||
if (IsAlive() && HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_TAPPED))
|
||||
SetUInt32Value(UNIT_DYNAMIC_FLAGS, GetCreatureTemplate()->dynamicflags);
|
||||
RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_TAPPED);
|
||||
}
|
||||
|
||||
void Creature::ForcePartyMembersIntoCombat()
|
||||
|
||||
@@ -381,7 +381,6 @@ struct TC_GAME_API CreatureTemplate
|
||||
uint32 unit_class; // enum Classes. Note only 4 classes are known for creatures.
|
||||
uint32 unit_flags; // enum UnitFlags mask values
|
||||
uint32 unit_flags2; // enum UnitFlags2 mask values
|
||||
uint32 dynamicflags;
|
||||
CreatureFamily family; // enum CreatureFamily values (optional)
|
||||
uint32 trainer_class;
|
||||
uint32 type; // enum CreatureType values
|
||||
@@ -511,7 +510,6 @@ struct CreatureData : public SpawnData
|
||||
uint32 curhealth = 0;
|
||||
uint32 curmana = 0;
|
||||
uint8 movementType = 0;
|
||||
Optional<uint32> dynamicflags;
|
||||
Optional<uint32> npcflag;
|
||||
Optional<uint32> unit_flags; // enum UnitFlags mask values
|
||||
Optional<uint32> unit_flags2; // enum UnitFlags2 mask values
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -1014,7 +1014,7 @@ class TC_GAME_API ObjectMgr
|
||||
CreatureModelInfo const* GetCreatureModelInfo(uint32 modelId) const;
|
||||
CreatureModelInfo const* GetCreatureModelRandomGender(CreatureModel* model, CreatureTemplate const* creatureTemplate) const;
|
||||
static CreatureModel const* ChooseDisplayId(CreatureTemplate const* cinfo, CreatureData const* data = nullptr);
|
||||
static void ChooseCreatureFlags(CreatureTemplate const* cInfo, uint32* npcFlags, uint32* unitFlags, uint32* unitFlags2, uint32* dynamicFlags, CreatureStaticFlagsHolder const& staticFlags, CreatureData const* data /*= nullptr*/);
|
||||
static void ChooseCreatureFlags(CreatureTemplate const* cInfo, uint32* npcFlags, uint32* unitFlags, uint32* unitFlags2, CreatureStaticFlagsHolder const& staticFlags, CreatureData const* data /*= nullptr*/);
|
||||
EquipmentInfo const* GetEquipmentInfo(uint32 entry, int8& id) const;
|
||||
CreatureAddon const* GetCreatureAddon(ObjectGuid::LowType lowguid) const;
|
||||
GameObjectAddon const* GetGameObjectAddon(ObjectGuid::LowType lowguid) const;
|
||||
|
||||
Reference in new issue
Block a user