mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-29 08:33:47 +00:00
feat(Core/DB): Add Creature ExperienceModifier (#7095)
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1627113690089052600');
|
||||
|
||||
ALTER TABLE `creature_template` ADD COLUMN `ExperienceModifier` FLOAT NOT NULL DEFAULT 1 AFTER `ArmorModifier`;
|
||||
|
||||
UPDATE `creature_template` SET `ExperienceModifier` = 2 WHERE `entry` IN (639,642,643,644,645,646,647,1663,1666,1696,1716,1717,1720,1763,1853,2748,3586,3653,3654,3669,3670,3671,3673,3674,3872,3886,3887,3914,3927,3974,3975,3976,3977,3983,4274,4275,4278,4279,4420,4421,4422,4424,4428,4542,4543,4829,4830,4831,4832,4854,4887,5709,5710,5711,5712,5713,5714,5715,5716,5717,5719,5720,5721,5722,5775,6168,6229,6235,6243,6487,6906,6910,7023,7079,7206,7228,7267,7271,7272,7273,7275,7291,7354,7355,7356,7357,7358,7361,7795,7796,7797,7800,8127,8443,8567,8580,8929,8983,9016,9017,9018,9019,9024,9025,9033,9041,9042,9056,9156,9196,9236,9237,9319,9499,9502,9537,9543,9568,9736,9816,9938,10096,10220,10268,10339,10363,10393,10429,10430,10432,10433,10435,10436,10437,10438,10439,10440,10502,10503,10504,10505,10506,10507,10508,10516,10558,10584,10596,10808,10811,10813,10901,10997,11032,11058,11143,11261,11486,11487,11488,11489,11490,11492,11496,11501,11517,11518,11519,11520,11622,12201,12203,12225,12236,12258,12876,12902,13280,13282,13282,13596,13601,13601,14321,14322,14323,14324,14325,14326,14327);
|
||||
UPDATE `creature_template` SET `ExperienceModifier` = 0.5 WHERE `entry` IN (7076,7077,7309,8477,8615,8658,9157,10387,10389,10441,10461,11460,11466,12473,14350,14396,15546,15720,15733,15735,15738,16032,16286);
|
||||
UPDATE `creature_template` SET `ExperienceModifier` = 0.1 WHERE `entry` IN (15316,15317);
|
||||
UPDATE `creature_template` SET `ExperienceModifier` = 0.25 WHERE `entry` IN (2946,6575,9496,10411,11713,14386,16230);
|
||||
UPDATE `creature_template` SET `ExperienceModifier` = 0.005 WHERE `entry` = 10925;
|
||||
@@ -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