mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 13:37:05 +00:00
[8250] Cleanup code and data for spell_threat
* Load table data to std::map instead SQLStorage and add check loaded spell existance. * Drop from table not existed spells. Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
parent
13b709a10b
commit
fd2eb3cfee
9 changed files with 64 additions and 33 deletions
|
|
@ -23,7 +23,7 @@ DROP TABLE IF EXISTS `db_version`;
|
||||||
CREATE TABLE `db_version` (
|
CREATE TABLE `db_version` (
|
||||||
`version` varchar(120) default NULL,
|
`version` varchar(120) default NULL,
|
||||||
`creature_ai_version` varchar(120) default NULL,
|
`creature_ai_version` varchar(120) default NULL,
|
||||||
`required_8249_02_mangos_spell_chain` bit(1) default NULL
|
`required_8250_01_mangos_spell_threat` bit(1) default NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
@ -18099,7 +18099,6 @@ INSERT INTO `spell_threat` VALUES
|
||||||
(284,39),
|
(284,39),
|
||||||
(285,59),
|
(285,59),
|
||||||
(770,108),
|
(770,108),
|
||||||
(778,108),
|
|
||||||
(1608,78),
|
(1608,78),
|
||||||
(1672,180),
|
(1672,180),
|
||||||
(1715,61),
|
(1715,61),
|
||||||
|
|
@ -18119,10 +18118,8 @@ INSERT INTO `spell_threat` VALUES
|
||||||
(8380,180),
|
(8380,180),
|
||||||
(8972,118),
|
(8972,118),
|
||||||
(9745,148),
|
(9745,148),
|
||||||
(9749,108),
|
|
||||||
(9880,178),
|
(9880,178),
|
||||||
(9881,207),
|
(9881,207),
|
||||||
(9907,108),
|
|
||||||
(11556,43),
|
(11556,43),
|
||||||
(11564,98),
|
(11564,98),
|
||||||
(11565,118),
|
(11565,118),
|
||||||
|
|
@ -18135,20 +18132,12 @@ INSERT INTO `spell_threat` VALUES
|
||||||
(11600,275),
|
(11600,275),
|
||||||
(11601,315),
|
(11601,315),
|
||||||
(11775,395),
|
(11775,395),
|
||||||
(14274,200),
|
|
||||||
(14921,415),
|
(14921,415),
|
||||||
(15629,300),
|
|
||||||
(15630,400),
|
|
||||||
(15631,500),
|
|
||||||
(15632,600),
|
|
||||||
(16857,108),
|
(16857,108),
|
||||||
(17735,200),
|
(17735,200),
|
||||||
(17750,300),
|
(17750,300),
|
||||||
(17751,450),
|
(17751,450),
|
||||||
(17752,600),
|
(17752,600),
|
||||||
(17390,108),
|
|
||||||
(17391,108),
|
|
||||||
(17392,108),
|
|
||||||
(20569,100),
|
(20569,100),
|
||||||
(20736,100),
|
(20736,100),
|
||||||
(20925,20),
|
(20925,20),
|
||||||
|
|
@ -18168,9 +18157,7 @@ INSERT INTO `spell_threat` VALUES
|
||||||
(25286,175),
|
(25286,175),
|
||||||
(25288,355),
|
(25288,355),
|
||||||
(25289,60),
|
(25289,60),
|
||||||
(26993,127),
|
|
||||||
(26996,176),
|
(26996,176),
|
||||||
(27011,127),
|
|
||||||
(27179,54),
|
(27179,54),
|
||||||
(29704,230),
|
(29704,230),
|
||||||
(29707,196),
|
(29707,196),
|
||||||
|
|
|
||||||
3
sql/updates/8250_01_mangos_spell_threat.sql
Normal file
3
sql/updates/8250_01_mangos_spell_threat.sql
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
ALTER TABLE db_version CHANGE COLUMN required_8249_02_mangos_spell_chain required_8250_01_mangos_spell_threat bit;
|
||||||
|
|
||||||
|
DELETE FROM `spell_threat` WHERE `entry` IN (778,9749,9907,14274,15629,15630,15631,15632,17390,17391,17392,26993,27011);
|
||||||
|
|
@ -254,6 +254,7 @@ pkgdata_DATA = \
|
||||||
8247_01_mangos_spell_bonus_data.sql \
|
8247_01_mangos_spell_bonus_data.sql \
|
||||||
8249_01_mangos_spell_proc_item_enchant.sql \
|
8249_01_mangos_spell_proc_item_enchant.sql \
|
||||||
8249_02_mangos_spell_chain.sql \
|
8249_02_mangos_spell_chain.sql \
|
||||||
|
8250_01_mangos_spell_threat.sql \
|
||||||
README
|
README
|
||||||
|
|
||||||
## Additional files to include when running 'make dist'
|
## Additional files to include when running 'make dist'
|
||||||
|
|
@ -488,4 +489,5 @@ EXTRA_DIST = \
|
||||||
8247_01_mangos_spell_bonus_data.sql \
|
8247_01_mangos_spell_bonus_data.sql \
|
||||||
8249_01_mangos_spell_proc_item_enchant.sql \
|
8249_01_mangos_spell_proc_item_enchant.sql \
|
||||||
8249_02_mangos_spell_chain.sql \
|
8249_02_mangos_spell_chain.sql \
|
||||||
|
8250_01_mangos_spell_threat.sql \
|
||||||
README
|
README
|
||||||
|
|
|
||||||
|
|
@ -1426,13 +1426,6 @@ struct SpellFocusObjectEntry
|
||||||
// 16 string flags, unused
|
// 16 string flags, unused
|
||||||
};
|
};
|
||||||
|
|
||||||
// stored in SQL table
|
|
||||||
struct SpellThreatEntry
|
|
||||||
{
|
|
||||||
uint32 spellId;
|
|
||||||
int32 threat;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct SpellRadiusEntry
|
struct SpellRadiusEntry
|
||||||
{
|
{
|
||||||
uint32 ID;
|
uint32 ID;
|
||||||
|
|
|
||||||
|
|
@ -3566,13 +3566,14 @@ void Spell::HandleThreatSpells(uint32 spellId)
|
||||||
if(!m_targets.getUnitTarget()->CanHaveThreatList())
|
if(!m_targets.getUnitTarget()->CanHaveThreatList())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SpellThreatEntry const *threatSpell = sSpellThreatStore.LookupEntry<SpellThreatEntry>(spellId);
|
uint16 threat = spellmgr.GetSpellThreat(spellId);
|
||||||
if(!threatSpell)
|
|
||||||
|
if(!threat)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_targets.getUnitTarget()->AddThreat(m_caster, float(threatSpell->threat));
|
m_targets.getUnitTarget()->AddThreat(m_caster, float(threat));
|
||||||
|
|
||||||
DEBUG_LOG("Spell %u, rank %u, added an additional %i threat", spellId, spellmgr.GetSpellRank(spellId), threatSpell->threat);
|
DEBUG_LOG("Spell %u, rank %u, added an additional %i threat", spellId, spellmgr.GetSpellRank(spellId), threat);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::HandleEffects(Unit *pUnitTarget,Item *pItemTarget,GameObject *pGOTarget,uint32 i, float DamageMultiplier)
|
void Spell::HandleEffects(Unit *pUnitTarget,Item *pItemTarget,GameObject *pGOTarget,uint32 i, float DamageMultiplier)
|
||||||
|
|
|
||||||
|
|
@ -989,12 +989,50 @@ void SpellMgr::LoadSpellElixirs()
|
||||||
|
|
||||||
void SpellMgr::LoadSpellThreats()
|
void SpellMgr::LoadSpellThreats()
|
||||||
{
|
{
|
||||||
sSpellThreatStore.Free(); // for reload
|
mSpellThreatMap.clear(); // need for reload case
|
||||||
|
|
||||||
sSpellThreatStore.Load();
|
uint32 count = 0;
|
||||||
|
|
||||||
|
// 0 1
|
||||||
|
QueryResult *result = WorldDatabase.Query("SELECT entry, Threat FROM spell_threat");
|
||||||
|
if( !result )
|
||||||
|
{
|
||||||
|
|
||||||
|
barGoLink bar( 1 );
|
||||||
|
|
||||||
|
bar.step();
|
||||||
|
|
||||||
|
sLog.outString();
|
||||||
|
sLog.outString( ">> Loaded %u aggro generating spells", count );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
barGoLink bar( result->GetRowCount() );
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
Field *fields = result->Fetch();
|
||||||
|
|
||||||
|
bar.step();
|
||||||
|
|
||||||
|
uint32 entry = fields[0].GetUInt32();
|
||||||
|
uint16 Threat = fields[1].GetUInt16();
|
||||||
|
|
||||||
|
if (!sSpellStore.LookupEntry(entry))
|
||||||
|
{
|
||||||
|
sLog.outErrorDb("Spell %u listed in `spell_threat` does not exist", entry);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
mSpellThreatMap[entry] = Threat;
|
||||||
|
|
||||||
|
++count;
|
||||||
|
} while( result->NextRow() );
|
||||||
|
|
||||||
|
delete result;
|
||||||
|
|
||||||
sLog.outString( ">> Loaded %u aggro generating spells", sSpellThreatStore.RecordCount );
|
|
||||||
sLog.outString();
|
sLog.outString();
|
||||||
|
sLog.outString( ">> Loaded %u aggro generating spells", count );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SpellMgr::IsRankSpellDueToSpell(SpellEntry const *spellInfo_1,uint32 spellId_2) const
|
bool SpellMgr::IsRankSpellDueToSpell(SpellEntry const *spellInfo_1,uint32 spellId_2) const
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,6 @@ class Player;
|
||||||
class Spell;
|
class Spell;
|
||||||
struct SpellModifier;
|
struct SpellModifier;
|
||||||
|
|
||||||
extern SQLStorage sSpellThreatStore;
|
|
||||||
|
|
||||||
// only used in code
|
// only used in code
|
||||||
enum SpellCategories
|
enum SpellCategories
|
||||||
{
|
{
|
||||||
|
|
@ -450,6 +448,7 @@ typedef UNORDERED_MAP<uint32, SpellBonusEntry> SpellBonusMap;
|
||||||
|
|
||||||
typedef std::map<uint32, uint8> SpellElixirMap;
|
typedef std::map<uint32, uint8> SpellElixirMap;
|
||||||
typedef std::map<uint32, float> SpellProcItemEnchantMap;
|
typedef std::map<uint32, float> SpellProcItemEnchantMap;
|
||||||
|
typedef std::map<uint32, uint16> SpellThreatMap;
|
||||||
|
|
||||||
// Spell script target related declarations (accessed using SpellMgr functions)
|
// Spell script target related declarations (accessed using SpellMgr functions)
|
||||||
enum SpellTargetType
|
enum SpellTargetType
|
||||||
|
|
@ -663,6 +662,15 @@ class SpellMgr
|
||||||
return SPELL_NORMAL;
|
return SPELL_NORMAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint16 GetSpellThreat(uint32 spellid) const
|
||||||
|
{
|
||||||
|
SpellThreatMap::const_iterator itr = mSpellThreatMap.find(spellid);
|
||||||
|
if(itr==mSpellThreatMap.end())
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return itr->second;
|
||||||
|
}
|
||||||
|
|
||||||
// Spell proc events
|
// Spell proc events
|
||||||
SpellProcEventEntry const* GetSpellProcEvent(uint32 spellId) const
|
SpellProcEventEntry const* GetSpellProcEvent(uint32 spellId) const
|
||||||
{
|
{
|
||||||
|
|
@ -927,6 +935,7 @@ class SpellMgr
|
||||||
SpellLearnSpellMap mSpellLearnSpells;
|
SpellLearnSpellMap mSpellLearnSpells;
|
||||||
SpellTargetPositionMap mSpellTargetPositions;
|
SpellTargetPositionMap mSpellTargetPositions;
|
||||||
SpellElixirMap mSpellElixirs;
|
SpellElixirMap mSpellElixirs;
|
||||||
|
SpellThreatMap mSpellThreatMap;
|
||||||
SpellProcEventMap mSpellProcEventMap;
|
SpellProcEventMap mSpellProcEventMap;
|
||||||
SpellProcItemEnchantMap mSpellProcItemEnchantMap;
|
SpellProcItemEnchantMap mSpellProcItemEnchantMap;
|
||||||
SpellBonusMap mSpellBonusMap;
|
SpellBonusMap mSpellBonusMap;
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,6 @@ const char GameObjectInfodstfmt[]="iiissssiifiiiiiiiiiiiiiiiiiiiiiiiiiiiii";
|
||||||
const char ItemPrototypesrcfmt[]="iiiisiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiiiiiiiiiifiiifiiiiiifiiiiiifiiiiiifiiiiiifiiiisiiiiiiiiiiiiiiiiiiiiiiiiifiiisiiii";
|
const char ItemPrototypesrcfmt[]="iiiisiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiiiiiiiiiifiiifiiiiiifiiiiiifiiiiiifiiiiiifiiiisiiiiiiiiiiiiiiiiiiiiiiiiifiiisiiii";
|
||||||
const char ItemPrototypedstfmt[]="iiiisiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiiiiiiiiiifiiifiiiiiifiiiiiifiiiiiifiiiiiifiiiisiiiiiiiiiiiiiiiiiiiiiiiiifiiiiiiii";
|
const char ItemPrototypedstfmt[]="iiiisiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiffiiiiiiiiiifiiifiiiiiifiiiiiifiiiiiifiiiiiifiiiisiiiiiiiiiiiiiiiiiiiiiiiiifiiiiiiii";
|
||||||
const char PageTextfmt[]="isi";
|
const char PageTextfmt[]="isi";
|
||||||
const char SpellThreatfmt[]="ii";
|
|
||||||
const char InstanceTemplatesrcfmt[]="iiiiiiiffffs";
|
const char InstanceTemplatesrcfmt[]="iiiiiiiffffs";
|
||||||
const char InstanceTemplatedstfmt[]="iiiiiiiffffi";
|
const char InstanceTemplatedstfmt[]="iiiiiiiffffi";
|
||||||
|
|
||||||
|
|
@ -48,7 +47,6 @@ SQLStorage sEquipmentStorage(EquipmentInfofmt,"entry","creature_equip_template")
|
||||||
SQLStorage sGOStorage(GameObjectInfosrcfmt, GameObjectInfodstfmt, "entry","gameobject_template");
|
SQLStorage sGOStorage(GameObjectInfosrcfmt, GameObjectInfodstfmt, "entry","gameobject_template");
|
||||||
SQLStorage sItemStorage(ItemPrototypesrcfmt, ItemPrototypedstfmt, "entry","item_template");
|
SQLStorage sItemStorage(ItemPrototypesrcfmt, ItemPrototypedstfmt, "entry","item_template");
|
||||||
SQLStorage sPageTextStore(PageTextfmt,"entry","page_text");
|
SQLStorage sPageTextStore(PageTextfmt,"entry","page_text");
|
||||||
SQLStorage sSpellThreatStore(SpellThreatfmt,"entry","spell_threat");
|
|
||||||
SQLStorage sInstanceTemplate(InstanceTemplatesrcfmt, InstanceTemplatedstfmt, "map","instance_template");
|
SQLStorage sInstanceTemplate(InstanceTemplatesrcfmt, InstanceTemplatedstfmt, "map","instance_template");
|
||||||
|
|
||||||
void SQLStorage::Free ()
|
void SQLStorage::Free ()
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "8249"
|
#define REVISION_NR "8250"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue