⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbcstores.h

📁 WOW 服务模拟端 支持2.4.3版本 来自开源的ASCENT 自己REPACK
💻 H
📖 第 1 页 / 共 3 页
字号:
/* AscentEmu By SOI */

#ifndef __SPELLSTORE_H
#define __SPELLSTORE_H

#include "Common.h"
#include "DataStore.h"
#include "Timer.h"

#pragma pack(push,1)

struct BankSlotPrice
{
	uint32 Id;
	uint32 Price;
};

struct ItemSetEntry
{
    uint32 id;                  //1
    char* name;                //2
    //uint32 unused_shit[15];      //3 - 9
    uint32 flag;                //10 constant
    uint32 itemid[8];           //11 - 18
    //uint32 more_unused_shit[9]; //19 - 27
    uint32 SpellID[8];          //28 - 35
    uint32 itemscount[8];       //36 - 43
    uint32 RequiredSkillID;     //44
    uint32 RequiredSkillAmt;    //45
};

struct Lock
{
    uint32 Id;
    uint32 locktype[5]; // 0 - no lock, 1 - item needed for lock, 2 - min lockping skill needed
    //uint32 unk1[3];
    uint32 lockmisc[5]; // if type is 1 here is a item to unlock, else is unknow for now
    //uint32 unk2[3];
    uint32 minlockskill[5]; // min skill in lockpiking to unlock.
    //uint32 unk3[11];

	/* Actually it is:
	uint32 Id;
    uint32 locktype[8];
    uint32 lockmisc[8];
    uint32 minlockskill[8];
    uint32 action[8];
	*/
};

struct emoteentry
{
    uint32 Id;
    //uint32 name;
    uint32 textid;
    uint32 textid2;
    uint32 textid3;
    uint32 textid4;
    //uint32 unk1;
    uint32 textid5;
    //uint32 unk2;
    uint32 textid6;
    //uint32 unk3;
    //uint32 unk4;
    //uint32 unk5;
    //uint32 unk6;
    //uint32 unk7;
    //uint32 unk8;
    //uint32 unk9;
    //uint32 unk10;
    //uint32 unk11;
};

struct skilllinespell //SkillLineAbility.dbc
{
    uint32 Id;
    uint32 skilline;
    uint32 spell;
    //uint32 raceMask;
	//uint32 classMask;
    //uint32 excludeRace;
    //uint32 excludeClass;
    //uint32 minSkillLineRank;
    uint32 next;
    uint32 acquireMethod;
    uint32 grey;
    uint32 green;
    //uint32 unk10;
    //uint32 unk11;
    uint32 reqTP;
};

struct EnchantEntry
{
    uint32 Id;
    uint32 type[3];
    int32 min[3];//for compat, in practice min==max
    int32 max[3];
    uint32 spell[3];
    char* Name;
    //uint32 NameAlt1;
    //uint32 NameAlt2;
    //uint32 NameAlt3;
    //uint32 NameAlt4;
    //uint32 NameAlt5;
    //uint32 NameAlt6;
    //uint32 NameAlt7;
    //uint32 NameAlt8;
    //uint32 NameAlt9;
    //uint32 NameAlt10;
    //uint32 NameAlt11;
    //uint32 NameAlt12;
    //uint32 NameAlt13;
    //uint32 NameAlt14;
    //uint32 NameAlt15;
    //uint32 NameFlags;
    uint32 visual;
    uint32 EnchantGroups;
    uint32 GemEntry;
    uint32 unk7;//Gem Related

};

struct GemPropertyEntry{
    uint32 Entry;
    uint32 EnchantmentID;
    uint32 unk1;//bool
    uint32 unk2;//bool
    uint32 SocketMask;
};

struct skilllineentry //SkillLine.dbc
{
    uint32 id;
    uint32 type;
    uint32 skillCostsID;
    char* Name;
    //int32 NameAlt1;
    //uint32 NameAlt2;
    //uint32 NameAlt3;
    //uint32 NameAlt4;
    //uint32 NameAlt5;
    //uint32 NameAlt6;
    //uint32 NameAlt7;
    //uint32 NameAlt8;
    //uint32 NameAlt9;
    //uint32 NameAlt10;
    //uint32 NameAlt11;
    //uint32 NameAlt12;
    //uint32 NameAlt13;
    //uint32 NameAlt14;
    //uint32 NameAlt15;
    //uint32 NameFlags;
    //uint32 Description;
    //uint32 DescriptionAlt1;
    //uint32 DescriptionAlt2;
    //uint32 DescriptionAlt3;
    //uint32 DescriptionAlt4;
    //uint32 DescriptionAlt5;
    //uint32 DescriptionAlt6;
    //uint32 DescriptionAlt7;
    //uint32 DescriptionAlt8;
    //uint32 DescriptionAlt9;
    //uint32 DescriptionAlt10;
    //uint32 DescriptionAlt11;
    //uint32 DescriptionAlt12;
    //uint32 DescriptionAlt13;
    //uint32 DescriptionAlt14;
    //uint32 DescriptionAlt15;
    //uint32 DescriptionFlags;
    //uint32 unk2;

};

// Struct for the entry in Spell.dbc
struct SpellEntry
{
	uint32 Id;                              //1
	uint32 Category;                        //2
	uint32 castUI;                          //3 something like spelltype 0: general spells 1: Pet spells 2: Disguise / transormation spells 3: enchantment spells
	uint32 DispelType;                      //4
	uint32 MechanicsType;                   //5
	uint32 Attributes;                      //6
	uint32 AttributesEx;                    //7
	uint32 AttributesExB;                   //8
	uint32 AttributesExC;                   //9 // Flags to
	uint32 AttributesExD;                   //10 // Flags....
	uint32 AttributesExE;                   //11 // Flags 2.0.1 unknown one
	uint32 AttributesExF;					//12
	uint32 RequiredShapeShift;              //13 // Flags BitMask for shapeshift spells
	uint32 ShapeshiftExclude;               //14-> this is wrong // Flags BitMask for which shapeshift forms this spell can NOT be used in.
	uint32 Targets;                         //15 - N / M
	uint32 TargetCreatureType;              //16
	uint32 RequiresSpellFocus;              //17
	uint32 FacingCasterFlags;				//18
	uint32 CasterAuraState;                 //19
	uint32 TargetAuraState;                 //20
	uint32 ExcludeCasterAuraState;          //21 2.0.1 unknown two
	uint32 ExcludeTargetAuraState;          //22 2.0.1 unknown three
	uint32 CastingTimeIndex;                //23
	uint32 RecoveryTime;                    //24
	uint32 CategoryRecoveryTime;            //25 recoverytime
	uint32 InterruptFlags;                  //26
	uint32 AuraInterruptFlags;              //27
	uint32 ChannelInterruptFlags;           //28
	uint32 procFlags;                       //29
	uint32 procChance;                      //30
	int32 procCharges;                      //31
	uint32 maxLevel;                        //32
	uint32 baseLevel;                       //33
	uint32 spellLevel;                      //34
	uint32 DurationIndex;                   //35
	uint32 powerType;                       //36
	uint32 manaCost;                        //37
	uint32 manaCostPerlevel;                //38
	uint32 manaPerSecond;                   //39
	uint32 manaPerSecondPerLevel;           //40
	uint32 rangeIndex;                      //41
	float  speed;                           //42
	uint32 modalNextSpell;                  //43
	uint32 maxstack;                        //44
	uint32 Totem[2];                        //45 - 46
	uint32 Reagent[8];                      //47 - 54
	uint32 ReagentCount[8];                 //55 - 62
	int32 EquippedItemClass;                //63
	uint32 EquippedItemSubClass;            //64
	uint32 RequiredItemFlags;               //65
	uint32 Effect[3];                       //66 - 68
	uint32 EffectDieSides[3];               //69 - 71
	uint32 EffectBaseDice[3];               //72 - 74
	float  EffectDicePerLevel[3];           //75 - 77
	float  EffectRealPointsPerLevel[3];     //78 - 80
	int32  EffectBasePoints[3];             //81 - 83
	int32  EffectMechanic[3];               //84 - 86       Related to SpellMechanic.dbc
	uint32 EffectImplicitTargetA[3];        //87 - 89
	uint32 EffectImplicitTargetB[3];        //90 - 92
	uint32 EffectRadiusIndex[3];            //93 - 95
	uint32 EffectApplyAuraName[3];          //96 - 98
	uint32 EffectAmplitude[3];              //99 - 101
	float  Effectunknown[3];                //102 - 104     This value is the $ value from description
	uint32 EffectChainTarget[3];            //105 - 107
	uint32 EffectSpellGroupRelation[3];     //108 - 110     Not sure maybe we should rename it. its the relation to field: SpellGroupType
	uint32 EffectMiscValue[3];              //111 - 113
	uint32 EffectMiscValueB[3];             //114 - 116  2.4.3
	uint32 EffectTriggerSpell[3];           //117 - 119
	float  EffectPointsPerComboPoint[3];    //120 - 122
	uint32 SpellVisual;                     //123
	uint32 field114;                        //124
	uint32 spellIconID;                     //125
	uint32 activeIconID;                    //126   activeIconID;
	uint32 spellPriority;                   //127
	char* Name;                             //128
	//uint32 NameAlt1;                        //129
	//uint32 NameAlt2;                        //130
	//uint32 NameAlt3;                        //131
	//uint32 NameAlt4;                        //132
	//uint32 NameAlt5;                        //133
	//uint32 NameAlt6;                        //134
	//uint32 NameAlt7;                        //135
	//uint32 NameAlt8;                        //136
	//uint32 NameAlt9;                        //137
	//uint32 NameAlt10;                       //138
	//uint32 NameAlt11;                       //139
	//uint32 NameAlt12;                       //140
	//uint32 NameAlt13;                       //141
	//uint32 NameAlt14;                       //142
	//uint32 NameAlt15;                       //143
	//uint32 NameFlags;                       //144
	char * Rank;                            //145
	//uint32 RankAlt1;                        //146
	//uint32 RankAlt2;                        //147
	//uint32 RankAlt3;                        //148
	//uint32 RankAlt4;                        //149
	//uint32 RankAlt5;                        //150
	//uint32 RankAlt6;                        //151
	//uint32 RankAlt7;                        //152
	//uint32 RankAlt8;                        //153
	//uint32 RankAlt9;                        //154
	//uint32 RankAlt10;                       //155
	//uint32 RankAlt11;                       //156
	//uint32 RankAlt12;                       //157
	//uint32 RankAlt13;                       //158
	//uint32 RankAlt14;                       //159
	//uint32 RankAlt15;                       //160
	//uint32 RankFlags;                       //161
	char * Description;                     //162
	//uint32 DescriptionAlt1;                 //163
	//uint32 DescriptionAlt2;                 //164
	//uint32 DescriptionAlt3;                 //165
	//uint32 DescriptionAlt4;                 //166
	//uint32 DescriptionAlt5;                 //167
	//uint32 DescriptionAlt6;                 //168
	//uint32 DescriptionAlt7;                 //169
	//uint32 DescriptionAlt8;                 //170
	//uint32 DescriptionAlt9;                 //171
	//uint32 DescriptionAlt10;                //172
	//uint32 DescriptionAlt11;                //173
	//uint32 DescriptionAlt12;                //174
	//uint32 DescriptionAlt13;                //175
	//uint32 DescriptionAlt14;                //176
	//uint32 DescriptionAlt15;                //177
	//uint32 DescriptionFlags;                //178
	char * BuffDescription;                 //179
	//uint32 BuffDescriptionAlt1;             //180
	//uint32 BuffDescriptionAlt2;             //181
	//uint32 BuffDescriptionAlt3;             //182
	//uint32 BuffDescriptionAlt4;             //183
	//uint32 BuffDescriptionAlt5;             //184
	//uint32 BuffDescriptionAlt6;             //185
	//uint32 BuffDescriptionAlt7;             //186
	//uint32 BuffDescriptionAlt8;             //187
	//uint32 BuffDescriptionAlt9;             //188
	//uint32 BuffDescriptionAlt10;            //189
	//uint32 BuffDescriptionAlt11;            //190
	//uint32 BuffDescriptionAlt12;            //191
	//uint32 BuffDescriptionAlt13;            //192
	//uint32 BuffDescriptionAlt14;            //193
	//uint32 BuffDescriptionAlt15;            //194
	//uint32 buffdescflags;                   //195
	uint32 ManaCostPercentage;              //196
	uint32 unkflags;                        //197 
	uint32 StartRecoveryTime;               //198
	uint32 StartRecoveryCategory;           //199
//	uint32 MaxTargetLevel						from 3.0.1
	uint32 SpellFamilyName;                 //200
	uint64 SpellGroupType;					//201+202
	uint32 MaxTargets;                      //203 
	uint32 Spell_Dmg_Type;                  //204   dmg_class Integer      0=None, 1=Magic, 2=Melee, 3=Ranged
	uint32 PreventionType;                  //205   0,1,2 related to Spell_Dmg_Type I think
	int32 StanceBarOrder;                   //206   related to paladin aura's 
	float dmg_multiplier[3];                //207 - 208   if the name is correct I dono
	uint32 MinFactionID;                    //209   only one spellid:6994 has this value = 369 UNUSED
	uint32 MinReputation;                   //210   only one spellid:6994 has this value = 4 UNUSED
	uint32 RequiredAuraVision;              //211  3 spells 1 or 2   
	uint32 TotemCategory[2];				//212-213
	uint32 RequiresAreaId;					//214 
	uint32 School;							//215
//	uint32 RuneCostID;						//216 from 3.0.1
//	uint32 SpellMissileID;					//217 from 3.0.1
    /// CUSTOM: these fields are used for the modifications made in the world.cpp
    uint32 DiminishStatus;                  //
    uint32 proc_interval;                   //!!! CUSTOM, <Fill description for variable>
	//Buff Groupin Rule -> caster can cast this spell only on 1 target. Value represents the group spell is part of. Can be part of only 1 group
	//caster can only cast on 1 target these spells
    uint32 BGR_one_buff_from_caster_on_1target;		//!!! CUSTOM, <Fill description for variable>
	//target can have only buff of this type on self. Value represents the group spell is part of. Can be part of only 1 group
    uint32 BGR_one_buff_on_target;          //!!! CUSTOM, these are related to creating a item through a spell
	//caster can have only 1 Aura per spell group, ex pal auras
    uint32 BGR_one_buff_from_caster_on_self;        //!!! CUSTOM, these are related to creating a item through a spell
//    uint32 buffIndexType;					//!!! CUSTOM, <Fill description for variable>
    uint32 c_is_flags;						//!!! CUSTOM, store spell checks in a static way : isdamageind,ishealing
//    uint32 buffType;                        //!!! CUSTOM, these are related to creating a item through a spell
    uint32 RankNumber;                      //!!! CUSTOM, this protects players from having >1 rank of a spell
    uint32 NameHash;                        //!!! CUSTOM, related to custom spells, summon spell quest related spells
	uint32 talent_tree;						//!!! CUSTOM,
	uint32 in_front_status;					//!!! CUSTOM,
    uint32 EffectSpellGroupRelation_high[3];     //!!! this is not contained in client dbc but server must have it
	uint32 ThreatForSpell;
	uint32 ProcOnNameHash[3];
	uint32 spell_coef_flags;                                //!!! CUSTOM, store flags for spell coefficient calculations

	float base_range_or_radius_sqr;         //!!! CUSTOM, needed for aoe spells most of the time
	// love me or hate me, all "In a cone in front of the caster" spells don't necessarily mean "in front"
	float cone_width;
	//Spell Coefficient
	float casttime_coef;                                    //!!! CUSTOM, faster spell bonus calculation
	float fixed_dddhcoef;                                   //!!! CUSTOM, fixed DD-DH coefficient for some spells
	float fixed_hotdotcoef;                                 //!!! CUSTOM, fixed HOT-DOT coefficient for some spells
	float Dspell_coef_override;                             //!!! CUSTOM, overrides any spell coefficient calculation and use this value in DD&DH
	float OTspell_coef_override;							//!!! CUSTOM, overrides any spell coefficient calculation and use this value in HOT&DOT
	int	ai_target_type;

	bool self_cast_only;
	bool apply_on_shapeshift_change;
	bool always_apply;
	bool is_melee_spell;					//!!! CUSTOM,
	bool is_ranged_spell;					//!!! CUSTOM,
	bool spell_can_crit;					//!!! CUSTOM,

/*
//3.0.1 client column namings
m_id
m_category
m_castUI
m_dispelType
m_mechanic
m_attributes
m_attributesEx
m_attributesExB
m_attributesExC
m_attributesExD
m_attributesExE
m_attributesExF
m_shapeshiftMask
m_shapeshiftExclude
m_targets
m_targetCreatureType
m_requiresSpellFocus
m_facingCasterFlags
m_casterAuraState
m_targetAuraState
m_excludeCasterAuraState
m_excludeTargetAuraState
m_castingTimeIndex
m_recoveryTime
m_categoryRecoveryTime
m_interruptFlags
m_auraInterruptFlags
m_channelInterruptFlags
m_procTypeMask
m_procChance
m_procCharges
m_maxLevel
m_baseLevel
m_spellLevel
m_durationIndex
m_powerType
m_manaCost
m_manaCostPerLevel
m_manaPerSecond
m_manaPerSecondPerLevel
m_rangeIndex
m_speed
m_modalNextSpell
m_cumulativeAura
m_totem
m_reagent
m_reagentCount
m_equippedItemClass
m_equippedItemSubclass
m_equippedItemInvTypes
m_effect
m_effectDieSides
m_effectBaseDice
m_effectDicePerLevel
m_effectRealPointsPerLevel
m_effectBasePoints
m_effectMechanic
m_implicitTargetA
m_implicitTargetB
m_effectRadiusIndex
m_effectAura
m_effectAuraPeriod
m_effectAmplitude
m_effectChainTargets
m_effectItemType
m_effectMiscValue
m_effectMiscValueB

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -