Core/Spells: Define all spell modifier types and implement ProcCooldown mod and PeriodicHealingAndDamage for melee periodic damage

Port From (https://github.com/TrinityCore/TrinityCore/commit/6585666e6e34ade0333e4c23876acdf847d169c0)
This commit is contained in:
hondacrx
2021-03-17 18:52:59 -04:00
parent f667df1b11
commit 4568cdad48
16 changed files with 168 additions and 158 deletions
+11
View File
@@ -192,6 +192,17 @@ namespace System.Collections
return this;
}
public bool Any()
{
for (var i = 0; i < Length; ++i)
{
if (Get(i))
return true;
}
return false;
}
public int Length
{
get
+37 -37
View File
@@ -317,50 +317,50 @@ namespace Framework.Constants
public enum SpellModOp
{
Damage = 0,
HealingAndDamage = 0,
Duration = 1,
Threat = 2,
Effect1 = 3,
Charges = 4,
Hate = 2,
PointsIndex0 = 3,
ProcCharges = 4,
Range = 5,
Radius = 6,
CriticalChance = 7,
AllEffects = 8,
NotLoseCastingTime = 9,
CastingTime = 10,
CritChance = 7,
Points = 8,
ResistPushback = 9,
ChangeCastTime = 10,
Cooldown = 11,
Effect2 = 12,
IgnoreArmor = 13,
Cost = 14, // Used when SpellPowerEntry.PowerIndex == 0
CritDamageBonus = 15,
ResistMissChance = 16,
JumpTargets = 17,
ChanceOfSuccess = 18,
ActivationTime = 19,
DamageMultiplier = 20,
GlobalCooldown = 21,
Dot = 22,
Effect3 = 23,
BonusMultiplier = 24,
// Spellmod 25
ProcPerMinute = 26,
ValueMultiplier = 27,
ResistDispelChance = 28,
CritDamageBonus2 = 29, //One Not Used Spell
SpellCostRefundOnFail = 30,
StackAmount = 31,
Effect4 = 32,
Effect5 = 33,
SpellCost2 = 34, // Used when SpellPowerEntry.PowerIndex == 1
JumpDistance = 35,
// spellmod 36
MaxStackAmount = 37,
// spellmod 38
SpellCost3 = 39,
PointsIndex1 = 12,
TargetResistance = 13,
PowerCost0 = 14, // Used when SpellPowerEntry::PowerIndex == 0
CritDamageAndHealing = 15,
HitChance = 16,
ChainTargets = 17,
ProcChance = 18,
Period = 19,
ChainAmplitude = 20,
StartCooldown = 21,
PeriodicHealingAndDamage = 22,
PointsIndex2 = 23,
BonusCoefficient = 24,
TriggerDamage = 25, // NYI
ProcFrequency = 26,
Amplitude = 27,
DispelResistance = 28,
CrowdDamage = 29, // NYI
PowerCostOnMiss = 30,
Doses = 31,
PointsIndex3 = 32,
PointsIndex4 = 33,
PowerCost1 = 34, // Used when SpellPowerEntry::PowerIndex == 1
ChainJumpDistance = 35,
AreaTriggerMaxSummons = 36, // NYI
MaxAuraStacks = 37,
ProcCooldown = 38,
PowerCost2 = 39, // Used when SpellPowerEntry::PowerIndex == 2
Max = 40
}
// Note: SPELLMOD_* values is aura types in fact
public enum SpellModType
{
Flat = 0, // SPELL_AURA_ADD_FLAT_MODIFIER