mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-18 11:25:42 +00:00
feat(DB/Creature): Allow to set swim and flight speeds (#10067)
This commit is contained in:
@@ -477,16 +477,18 @@ void ObjectMgr::LoadCreatureTemplates()
|
||||
|
||||
// 0 1 2 3 4 5 6 7 8
|
||||
QueryResult result = WorldDatabase.Query("SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid1, modelid2, modelid3, "
|
||||
// 9 10 11 12 13 14 15 16 17 18 19 20 21
|
||||
"modelid4, name, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, faction, npcflag, speed_walk, speed_run, detection_range, "
|
||||
// 22 23 24 25 26 27 28 29 30 31 32
|
||||
"scale, `rank`, dmgschool, DamageModifier, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, "
|
||||
// 33 34 35 36 37 38 39
|
||||
// 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
||||
"modelid4, name, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, faction, npcflag, speed_walk, speed_run, speed_swim, speed_flight, "
|
||||
// 23 24 25 26 27 28 29 30 31 32 33 34
|
||||
"detection_range, scale, `rank`, dmgschool, DamageModifier, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, "
|
||||
// 35 36 37 38 39 40 41
|
||||
"dynamicflags, family, trainer_type, trainer_spell, trainer_class, trainer_race, type, "
|
||||
// 40 41 42 43 44 45 46 47 48 49
|
||||
// 42 43 44 45 46 47 48 49 50 51
|
||||
"type_flags, lootid, pickpocketloot, skinloot, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, "
|
||||
// 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
||||
"ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, ctm.Chase, ctm.Random, ctm.InteractionPauseTimer, HoverHeight, HealthModifier, ManaModifier, ArmorModifier, ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName "
|
||||
// 52 53 54 55 56 57 58 59 60 61 62 63
|
||||
"ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, ctm.Chase, ctm.Random, ctm.InteractionPauseTimer, HoverHeight, HealthModifier, ManaModifier, ArmorModifier, ExperienceModifier, "
|
||||
// 64 65 66 67 68 69 70
|
||||
"RacialLeader, movementId, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName "
|
||||
"FROM creature_template ct LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId;");
|
||||
|
||||
if (!result)
|
||||
@@ -567,29 +569,31 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields)
|
||||
creatureTemplate.npcflag = fields[18].GetUInt32();
|
||||
creatureTemplate.speed_walk = fields[19].GetFloat();
|
||||
creatureTemplate.speed_run = fields[20].GetFloat();
|
||||
creatureTemplate.detection_range = fields[21].GetFloat();
|
||||
creatureTemplate.scale = fields[22].GetFloat();
|
||||
creatureTemplate.rank = uint32(fields[23].GetUInt8());
|
||||
creatureTemplate.dmgschool = uint32(fields[24].GetInt8());
|
||||
creatureTemplate.DamageModifier = fields[25].GetFloat();
|
||||
creatureTemplate.BaseAttackTime = fields[26].GetUInt32();
|
||||
creatureTemplate.RangeAttackTime = fields[27].GetUInt32();
|
||||
creatureTemplate.BaseVariance = fields[28].GetFloat();
|
||||
creatureTemplate.RangeVariance = fields[29].GetFloat();
|
||||
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 = uint32(fields[34].GetUInt8());
|
||||
creatureTemplate.trainer_type = uint32(fields[35].GetUInt8());
|
||||
creatureTemplate.trainer_spell = fields[36].GetUInt32();
|
||||
creatureTemplate.trainer_class = uint32(fields[37].GetUInt8());
|
||||
creatureTemplate.trainer_race = uint32(fields[38].GetUInt8());
|
||||
creatureTemplate.type = uint32(fields[39].GetUInt8());
|
||||
creatureTemplate.type_flags = fields[40].GetUInt32();
|
||||
creatureTemplate.lootid = fields[41].GetUInt32();
|
||||
creatureTemplate.pickpocketLootId = fields[42].GetUInt32();
|
||||
creatureTemplate.SkinLootId = fields[43].GetUInt32();
|
||||
creatureTemplate.speed_swim = fields[21].GetFloat();
|
||||
creatureTemplate.speed_flight = fields[22].GetFloat();
|
||||
creatureTemplate.detection_range = fields[23].GetFloat();
|
||||
creatureTemplate.scale = fields[24].GetFloat();
|
||||
creatureTemplate.rank = uint32(fields[25].GetUInt8());
|
||||
creatureTemplate.dmgschool = uint32(fields[26].GetInt8());
|
||||
creatureTemplate.DamageModifier = fields[27].GetFloat();
|
||||
creatureTemplate.BaseAttackTime = fields[28].GetUInt32();
|
||||
creatureTemplate.RangeAttackTime = fields[29].GetUInt32();
|
||||
creatureTemplate.BaseVariance = fields[30].GetFloat();
|
||||
creatureTemplate.RangeVariance = fields[31].GetFloat();
|
||||
creatureTemplate.unit_class = uint32(fields[32].GetUInt8());
|
||||
creatureTemplate.unit_flags = fields[33].GetUInt32();
|
||||
creatureTemplate.unit_flags2 = fields[34].GetUInt32();
|
||||
creatureTemplate.dynamicflags = fields[35].GetUInt32();
|
||||
creatureTemplate.family = uint32(fields[36].GetUInt8());
|
||||
creatureTemplate.trainer_type = uint32(fields[37].GetUInt8());
|
||||
creatureTemplate.trainer_spell = fields[38].GetUInt32();
|
||||
creatureTemplate.trainer_class = uint32(fields[39].GetUInt8());
|
||||
creatureTemplate.trainer_race = uint32(fields[40].GetUInt8());
|
||||
creatureTemplate.type = uint32(fields[41].GetUInt8());
|
||||
creatureTemplate.type_flags = fields[42].GetUInt32();
|
||||
creatureTemplate.lootid = fields[43].GetUInt32();
|
||||
creatureTemplate.pickpocketLootId = fields[44].GetUInt32();
|
||||
creatureTemplate.SkinLootId = fields[45].GetUInt32();
|
||||
|
||||
for (uint8 i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i)
|
||||
{
|
||||
@@ -601,49 +605,49 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields)
|
||||
creatureTemplate.spells[i] = 0;
|
||||
}
|
||||
|
||||
creatureTemplate.PetSpellDataId = fields[44].GetUInt32();
|
||||
creatureTemplate.VehicleId = fields[45].GetUInt32();
|
||||
creatureTemplate.mingold = fields[46].GetUInt32();
|
||||
creatureTemplate.maxgold = fields[47].GetUInt32();
|
||||
creatureTemplate.AIName = fields[48].GetString();
|
||||
creatureTemplate.MovementType = uint32(fields[49].GetUInt8());
|
||||
if (!fields[50].IsNull())
|
||||
{
|
||||
creatureTemplate.Movement.Ground = static_cast<CreatureGroundMovementType>(fields[50].GetUInt8());
|
||||
}
|
||||
|
||||
creatureTemplate.Movement.Swim = fields[51].GetBool();
|
||||
creatureTemplate.PetSpellDataId = fields[46].GetUInt32();
|
||||
creatureTemplate.VehicleId = fields[47].GetUInt32();
|
||||
creatureTemplate.mingold = fields[48].GetUInt32();
|
||||
creatureTemplate.maxgold = fields[49].GetUInt32();
|
||||
creatureTemplate.AIName = fields[50].GetString();
|
||||
creatureTemplate.MovementType = uint32(fields[51].GetUInt8());
|
||||
if (!fields[52].IsNull())
|
||||
{
|
||||
creatureTemplate.Movement.Flight = static_cast<CreatureFlightMovementType>(fields[52].GetUInt8());
|
||||
creatureTemplate.Movement.Ground = static_cast<CreatureGroundMovementType>(fields[52].GetUInt8());
|
||||
}
|
||||
|
||||
creatureTemplate.Movement.Rooted = fields[53].GetBool();
|
||||
creatureTemplate.Movement.Swim = fields[53].GetBool();
|
||||
if (!fields[54].IsNull())
|
||||
{
|
||||
creatureTemplate.Movement.Chase = static_cast<CreatureChaseMovementType>(fields[54].GetUInt8());
|
||||
}
|
||||
if (!fields[55].IsNull())
|
||||
{
|
||||
creatureTemplate.Movement.Random = static_cast<CreatureRandomMovementType>(fields[55].GetUInt8());
|
||||
}
|
||||
if (!fields[56].IsNull())
|
||||
{
|
||||
creatureTemplate.Movement.InteractionPauseTimer = fields[56].GetUInt32();
|
||||
creatureTemplate.Movement.Flight = static_cast<CreatureFlightMovementType>(fields[54].GetUInt8());
|
||||
}
|
||||
|
||||
creatureTemplate.HoverHeight = fields[57].GetFloat();
|
||||
creatureTemplate.ModHealth = fields[58].GetFloat();
|
||||
creatureTemplate.ModMana = fields[59].GetFloat();
|
||||
creatureTemplate.ModArmor = fields[60].GetFloat();
|
||||
creatureTemplate.ModExperience = fields[61].GetFloat();
|
||||
creatureTemplate.RacialLeader = fields[62].GetBool();
|
||||
creatureTemplate.movementId = fields[63].GetUInt32();
|
||||
creatureTemplate.RegenHealth = fields[64].GetBool();
|
||||
creatureTemplate.MechanicImmuneMask = fields[65].GetUInt32();
|
||||
creatureTemplate.SpellSchoolImmuneMask = fields[66].GetUInt8();
|
||||
creatureTemplate.flags_extra = fields[67].GetUInt32();
|
||||
creatureTemplate.ScriptID = GetScriptId(fields[68].GetCString());
|
||||
creatureTemplate.Movement.Rooted = fields[55].GetBool();
|
||||
if (!fields[56].IsNull())
|
||||
{
|
||||
creatureTemplate.Movement.Chase = static_cast<CreatureChaseMovementType>(fields[56].GetUInt8());
|
||||
}
|
||||
if (!fields[57].IsNull())
|
||||
{
|
||||
creatureTemplate.Movement.Random = static_cast<CreatureRandomMovementType>(fields[57].GetUInt8());
|
||||
}
|
||||
if (!fields[58].IsNull())
|
||||
{
|
||||
creatureTemplate.Movement.InteractionPauseTimer = fields[58].GetUInt32();
|
||||
}
|
||||
|
||||
creatureTemplate.HoverHeight = fields[59].GetFloat();
|
||||
creatureTemplate.ModHealth = fields[60].GetFloat();
|
||||
creatureTemplate.ModMana = fields[61].GetFloat();
|
||||
creatureTemplate.ModArmor = fields[62].GetFloat();
|
||||
creatureTemplate.ModExperience = fields[63].GetFloat();
|
||||
creatureTemplate.RacialLeader = fields[64].GetBool();
|
||||
creatureTemplate.movementId = fields[65].GetUInt32();
|
||||
creatureTemplate.RegenHealth = fields[66].GetBool();
|
||||
creatureTemplate.MechanicImmuneMask = fields[67].GetUInt32();
|
||||
creatureTemplate.SpellSchoolImmuneMask = fields[68].GetUInt8();
|
||||
creatureTemplate.flags_extra = fields[69].GetUInt32();
|
||||
creatureTemplate.ScriptID = GetScriptId(fields[70].GetCString());
|
||||
}
|
||||
|
||||
void ObjectMgr::LoadCreatureTemplateResistances()
|
||||
|
||||
Reference in New Issue
Block a user