mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-31 01:23:47 +00:00
feat(Core/DB): Add Creature ExperienceModifier (#7095)
This commit is contained in:
@@ -65,7 +65,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, security, 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, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, faction, npcflag, speed_walk, speed_run, detection_range, scale, `rank`, dmgschool, DamageModifier, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, dynamicflags, family, trainer_type, trainer_spell, trainer_class, trainer_race, type, type_flags, lootid, pickpocketloot, skinloot, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, InhabitType, HoverHeight, HealthModifier, ManaModifier, ArmorModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName FROM creature_template 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, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, faction, npcflag, speed_walk, speed_run, detection_range, scale, `rank`, dmgschool, DamageModifier, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, dynamicflags, family, trainer_type, trainer_spell, trainer_class, trainer_race, type, type_flags, lootid, pickpocketloot, skinloot, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, InhabitType, HoverHeight, HealthModifier, ManaModifier, ArmorModifier, ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName FROM creature_template 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_ITEM_TEMPLATE_BY_NAME, "SELECT entry FROM item_template WHERE name = ?", CONNECTION_SYNCH);
|
||||
PrepareStatement(WORLD_SEL_CREATURE_BY_ID, "SELECT guid FROM creature WHERE id = ?", CONNECTION_SYNCH);
|
||||
|
||||
@@ -128,6 +128,7 @@ struct CreatureTemplate
|
||||
float ModHealth;
|
||||
float ModMana;
|
||||
float ModArmor;
|
||||
float ModExperience;
|
||||
bool RacialLeader;
|
||||
uint32 movementId;
|
||||
bool RegenHealth;
|
||||
|
||||
@@ -473,8 +473,8 @@ void ObjectMgr::LoadCreatureTemplates()
|
||||
"dynamicflags, family, trainer_type, trainer_spell, trainer_class, trainer_race, type, "
|
||||
// 40 41 42 43 44 45 46 47 48 49
|
||||
"type_flags, lootid, pickpocketloot, skinloot, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, "
|
||||
// 50 51 52 53 54 55 56 57 58 59 60 61
|
||||
"InhabitType, HoverHeight, HealthModifier, ManaModifier, ArmorModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName "
|
||||
// 50 51 52 53 54 55 56 57 58 59 60 61 62
|
||||
"InhabitType, HoverHeight, HealthModifier, ManaModifier, ArmorModifier, ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName "
|
||||
"FROM creature_template;");
|
||||
|
||||
if (!result)
|
||||
@@ -600,13 +600,14 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields)
|
||||
creatureTemplate.ModHealth = fields[52].GetFloat();
|
||||
creatureTemplate.ModMana = fields[53].GetFloat();
|
||||
creatureTemplate.ModArmor = fields[54].GetFloat();
|
||||
creatureTemplate.RacialLeader = fields[55].GetBool();
|
||||
creatureTemplate.movementId = fields[56].GetUInt32();
|
||||
creatureTemplate.RegenHealth = fields[57].GetBool();
|
||||
creatureTemplate.MechanicImmuneMask = fields[58].GetUInt32();
|
||||
creatureTemplate.SpellSchoolImmuneMask = fields[59].GetUInt8();
|
||||
creatureTemplate.flags_extra = fields[60].GetUInt32();
|
||||
creatureTemplate.ScriptID = GetScriptId(fields[61].GetCString());
|
||||
creatureTemplate.ModExperience = fields[55].GetFloat();
|
||||
creatureTemplate.RacialLeader = fields[56].GetBool();
|
||||
creatureTemplate.movementId = fields[57].GetUInt32();
|
||||
creatureTemplate.RegenHealth = fields[58].GetBool();
|
||||
creatureTemplate.MechanicImmuneMask = fields[59].GetUInt32();
|
||||
creatureTemplate.SpellSchoolImmuneMask = fields[60].GetUInt8();
|
||||
creatureTemplate.flags_extra = fields[61].GetUInt32();
|
||||
creatureTemplate.ScriptID = GetScriptId(fields[62].GetCString());
|
||||
}
|
||||
|
||||
void ObjectMgr::LoadCreatureTemplateResistances()
|
||||
|
||||
@@ -79,8 +79,7 @@ uint32 Acore::XP::Gain(Player* player, Unit* unit, bool isBattleGround /*= false
|
||||
xpMod *= 2.0f;
|
||||
}
|
||||
|
||||
// This requires TrinityCore creature_template.ExperienceModifier feature
|
||||
// xpMod *= creature->GetCreatureTemplate()->ModExperience;
|
||||
xpMod *= creature->GetCreatureTemplate()->ModExperience;
|
||||
}
|
||||
|
||||
xpMod *= isBattleGround ? sWorld->getRate(RATE_XP_BG_KILL) : sWorld->getRate(RATE_XP_KILL);
|
||||
|
||||
Reference in New Issue
Block a user