本文整理汇总了C#中Attack.Clone方法的典型用法代码示例。如果您正苦于以下问题:C# Attack.Clone方法的具体用法?C# Attack.Clone怎么用?C# Attack.Clone使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Attack
的用法示例。
在下文中一共展示了Attack.Clone方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Alizabal
public Alizabal()
{
// If not listed here use values from defaults
#region Info
Name = "Alizabal, Mistress of Hate";
Instance = "Baradin Hold";
Content = new BossHandler.TierLevels[] { BossHandler.TierLevels.T13_10, BossHandler.TierLevels.T13_25, BossHandler.TierLevels.T13_10H, BossHandler.TierLevels.T13_25H, BossHandler.TierLevels.T13_LFR };
#endregion
#region Basics
Health = new float[] { 25166000f, 80900000f, 0, 0, 0 };
MobType = (int)MOB_TYPES.DEMON;
// 5 minute Berserk timer
BerserkTimer = new int[] { 5 * 60, 5 * 60, 0, 0, 0 };
SpeedKillTimer = new int[] { 3 * 60, 3 * 60, 0, 0, 0 };
InBackPerc_Melee = new double[] { 0.95f, 0.95f, 0, 0, 0 };
InBackPerc_Ranged = new double[] { 0.00f, 0.00f, 0, 0, 0 };
Max_Players = new int[] { 10, 25, 0, 0, 0 };
Min_Tanks = new int[] { 2, 2, 0, 0, 0 };
Min_Healers = new int[] { 3, 5, 0, 0, 0 };
TimeBossIsInvuln = new float[] { 5f * 15f, 5f * 15f, 0, 0, 0 };
#endregion
#region The Phases
for (int i = 0; i < 2; i++)
{
Phase Phase1 = new Phase() { Name = "Phase 1: Soaking" };
Phase Phase2 = new Phase() { Name = "Phase 2: Blade Dance" };
#region MT and OT Melee Swapping
// MT and OT tank swap
// Each should take half of the total damage
// does not melee during Firestorm
Attack MTMelee = new Attack
{
Name = "MT Melee",
AttackType = ATTACK_TYPES.AT_MELEE,
IsTheDefaultMelee = true,
DamageType = ItemDamageType.Physical,
DamagePerHit = BossHandler.StandardMeleePerHit[(int)Content[i]],
MaxNumTargets = 1f,
AttackSpeed = 5f,
IsDualWielding = true,
};
MTMelee.AffectsRole[PLAYER_ROLES.MainTank] = true;
Phase1.Attacks.Add(MTMelee);
Attack OTMelee = MTMelee.Clone();
OTMelee.Name = "OT Melee";
OTMelee.AffectsRole[PLAYER_ROLES.MainTank] = false;
OTMelee.AffectsRole[PLAYER_ROLES.OffTank] = true;
Phase1.Attacks.Add(OTMelee);
#endregion
#region Skewer
// Alizabal skewers her current target, stunning them. In addition, Skewer inflicts 20,000 damage
// every second and increases damage taken by 100%.
// http://ptr.wowhead.com/spell=104936
// Tanks switch every 10 seconds so minimize any extra damage the tank gets while stunned.
// TODO: double check attack speed of the attack
#region Main Attack
Attack SkewerMainTank = new Attack
{
Name = "Skewer",
SpellID = 104936,
DamageType = ItemDamageType.Physical,
AttackType = ATTACK_TYPES.AT_MELEE,
DamagePerTick = (18000f + 22000f) / 2f,
IsDoT = true,
Duration = 8f,
TickInterval = 1f,
MaxNumTargets = 1f,
// Based on early videos, it appears that the boss applies this every 20 second per tank
AttackSpeed = 40f,
};
SkewerMainTank.SetUnavoidable();
SkewerMainTank.SetAffectsRoles_Tanks();
Phase1.Attacks.Add(SkewerMainTank);
#endregion
#region Stun
Impedance SkewerMTImpedance = new Impedance
{
Name = "Skewer Stun",
Chance = 1f,
Duration = SkewerMainTank.Duration,
Frequency = SkewerMainTank.AttackSpeed,
};
SkewerMTImpedance.SetAffectsRoles_Tanks();
Phase1.Stuns.Add(SkewerMTImpedance);
#endregion
#region Increased Damage
BuffState SkewerMTBuffState = new BuffState
{
Name = "Skewer Increased Damage Taken",
Chance = 1f,
Duration = SkewerMainTank.Duration * 1000f,
Frequency = SkewerMainTank.AttackSpeed,
Breakable = false,
Stats = new Stats() { DamageTakenReductionMultiplier = -1f },
};
//.........这里部分代码省略.........
示例2: Morchok
public Morchok()
{
// If not listed here use values from defaults
#region Info
Name = "Morchok";
Instance = "Dragon Soul";
Content = new BossHandler.TierLevels[] { BossHandler.TierLevels.T13_LFR, BossHandler.TierLevels.T13_10, BossHandler.TierLevels.T13_25, BossHandler.TierLevels.T13_10H, BossHandler.TierLevels.T13_25H, };
#endregion
#region Basics
Health = new float[] { 53167148f, 30062200f, 53167148f, 27829008f, 83658808f };
MobType = (int)MOB_TYPES.ELEMENTAL;
BerserkTimer = new int[] { 6 * 60, 6 * 60, 6 * 60, 6 * 60, 6 * 60 };
SpeedKillTimer = new int[] { 7 * 60, 7 * 60, 7 * 60, 7 * 60, 7 * 60 };
InBackPerc_Melee = new double[] { 0.95f, 0.95f, 0.95f, 0.95f, 0.95f };
InBackPerc_Ranged = new double[] { 0.00f, 0.00f, 0.00f, 0.00f, 0.00f };
Max_Players = new int[] { 25, 10, 25, 10, 25 };
Min_Tanks = new int[] { 2, 2, 2, 2, 2 };
Min_Healers = new int[] { 6, 3, 5, 3, 5 };
#endregion
#region Offensive
for (int i = 0; i < 5; i++)
{
Phase EntirePhase = new Phase() { Name = "Entire Phase" };
Attack Melee = new Attack
{
Name = "Default Melee",
AttackType = ATTACK_TYPES.AT_MELEE,
DamagePerHit = BossHandler.StandardMeleePerHit[(int)Content[i]],
AttackSpeed = 2.5f,
};
Melee.AffectsRole[PLAYER_ROLES.MainTank] = true;
EntirePhase.Attacks.Add(Melee);
Attack MeleeP2 = Melee.Clone();
Melee.AffectsRole[PLAYER_ROLES.OffTank] = true;
EntirePhase.Attacks.Add(MeleeP2);
#region The Entire Phase
/* Stomp - Morchok performs a massive stomp, splitting 500000 damage between all enemies within 20 yards. The two closest targets take a double share of the damage.
* Crush Armor - Morchok reduces his target's armor by 10% for 20 sec. Effect stacks up to 5 times.
* Twilight Orb - Morchok conjures an explosive crystal, which explodes after 12 sec. The explosion splits the damage between the five closest enemies. The total damage increases the further the enemy is from the crystal. Designer Note: 150000 damage base.
* The Earth Consumes You! - Morchok channels an intense spell, causing fragments to erupt to the surface and draw the Black Blood of the Earth to the surface. For 5 sec, he deals 5000 damage to all visible enemies within 4 yards.
* Falling Fragments - Stalagmites erupt from the ground, dealing 15000 damage to enemies and creating obstacles which block spells.
* Black Blood of the Earth - Morchok channels the blood of the earth and inflicts 5000 Nature damage to nearby enemies, increasing Nature damage taken by 10% every sec. Stacks up to 20 times.
*/
#endregion
#region Apply Phases
float p1duration = 0f;
ApplyAPhasesValues( EntirePhase, i, 0, 0, this[i].BerserkTimer, this[i].BerserkTimer);
AddAPhase(EntirePhase, i);
#endregion
}
#endregion
#region Defensive
Resist_Physical = new double[] { 0, 0.00f, 0.00f, 0, 0 };
Resist_Frost = new double[] { 0, 0.00f, 0.00f, 0, 0 };
Resist_Fire = new double[] { 0, 0.00f, 0.00f, 0, 0 };
Resist_Nature = new double[] { 0, 0.00f, 0.00f, 0, 0 };
Resist_Arcane = new double[] { 0, 0.00f, 0.00f, 0, 0 };
Resist_Shadow = new double[] { 0, 0.00f, 0.00f, 0, 0 };
Resist_Holy = new double[] { 0, 0.00f, 0.00f, 0, 0 };
#endregion
TimeBossIsInvuln = new float[] { 0, 0.00f, 0.00f, 0, 0 };
}
示例3: LordRhyolith
//.........这里部分代码省略.........
AttackType = ATTACK_TYPES.AT_MELEE,
DamagePerHit = BossHandler.StandardMeleePerHit[(int)Content[i]],
Missable = true,
Dodgable = true,
Parryable = true,
Blockable = true,
};
BasicMeleeMT.AffectsRole[PLAYER_ROLES.MainTank] = true;
LiquidForm.Attacks.Add(BasicMeleeMT);
#endregion
#region Immolation
/* Immolation
* Lord Rhyolith's fiery presence deals 7003 to 9004 Fire damage to all players every second.*/
// http://ptr.wowhead.com/spell=99845
Attack Immolation = new Attack
{
Name = "Phase 2 Immolation",
DamagePerTick = (7000f + 9000f) / 2f,
IsDoT = true,
AttackType = ATTACK_TYPES.AT_AOE,
DamageType = ItemDamageType.Fire,
TickInterval = 1,
Duration = BerserkTimer[i] * .25f * 1000f, // for the duration of this phase.
SpellID = 99845f,
};
Immolation.SetUnavoidable();
Immolation.SetAffectsRoles_All();
LiquidForm.Attacks.Add(Immolation);
#endregion
#region Concussive Stomp
//Concussive Stomp
Attack ConcussiveStopPhase2 = ConcussiveStomp.Clone();
ConcussiveStopPhase2.AttackSpeed = 10f;
LiquidForm.Attacks.Add(ConcussiveStopPhase2);
#endregion
#region Unleashed Flame
/* Unleashed Flame
* Lord Rhyolithunleashes beams of fire which pursue random players, dealing 10000 Fire damage
* to all players within 5 yards.*/
// http://ptr.wowhead.com/spell=100974
if (i > 1)
{
Attack UnleashedFlame = new Attack
{
Name = "Unleashed Flame",
DamagePerTick = 10000f,
MaxNumTargets = Max_Players[i],
IsDoT = true,
TickInterval = 1f,
Duration = Immolation.Duration,
AttackType = ATTACK_TYPES.AT_AOE,
DamageType = ItemDamageType.Fire,
SpellID = 100974f,
};
UnleashedFlame.SetUnavoidable();
UnleashedFlame.SetAffectsRoles_All();
LiquidForm.Attacks.Add(UnleashedFlame);
}
#endregion
#endregion
#region Add Phases
int phaseStartTime = 0;
示例4: Ragnaros
//.........这里部分代码省略.........
// damage - http://ptr.wowhead.com/spell=98170
// summons after damage - http://ptr.wowhead.com/npc=53086
// Normal we are popping them immediatly on spawn
// On Heroic we need to wait 45 seconds before popping the next trap.
// That means on the bear minimum, we need to pop 4 traps in Phase 1 and 3 traps in phase 2
#region Magma Trap Eruption
/* When triggered, a Magma Trap erupts for 75318 to 79182 Fire damage to all enemies
* within the Firelands, and violently knocking the player who tripped the Magma Trap into the air.
*
* *Heroic* An enemy that triggers a Magma Trap will take 50% additional fire damage from the Magma
* Trap Eruption for 45 sec. Stacks.*/
// This means we cannot pop the next trap until the debuf wears off or 45 second cooldown
// This debuff ONLY increases the damage of your next Magma Trap damage, not overall fire damage
/* Eruption
* 10 man - http://ptr.wowhead.com/spell=98175
* 25 man - http://ptr.wowhead.com/spell=100106
* 10 man heroic - http://ptr.wowhead.com/spell=100107
* 25 man heroic - http://ptr.wowhead.com/spell=100108 */
// Timers are adjusted by 16 seconds
Attack MagmaTrapEruption = new Attack
{
Name = "Magma Trap Eruption",
AttackSpeed = (phase1to3Length/ (phase1to3Length - 16f)) * (i < 2 ? 25f : 45f),
DamagePerHit = new float[] { (58500f + 61500f), (58500f + 61500f), (82875f + 87125f), (97500f + 102500f), 0f }[i] / 2f,
MaxNumTargets = Max_Players[i],
AttackType = ATTACK_TYPES.AT_AOE,
DamageType = ItemDamageType.Fire,
SpellID = new float[] { 98175, 100106, 100107, 100108, 0 }[i],
};
MagmaTrapEruption.SetAffectsRoles_All();
ByFirebePurged.Attacks.Add(MagmaTrapEruption);
Attack MagmaTrapEruptionPhase2 = MagmaTrapEruption.Clone();
// At most 3 traps should be up during phase 2 on Heroic
MagmaTrapEruptionPhase2.AttackSpeed = phase1to3Length / 3f;
if (i > 1) { SulfuaswillbeYourEnd.Attacks.Add(MagmaTrapEruptionPhase2); }
/* Vulnerability
* 10-man Heroic - http://ptr.wowhead.com/spell=100238
* 25-man heroic - http://ptr.wowhead.com/spell=100239 */
// Not going to model this part since I'm factoring in the 45 second debuff into my attack speed
#endregion
#endregion
#region Magma Blast
/* Ragnaros blasts magma at his current target if he cannot reach and melee them,
* inflicting 73125 to 76875 Fire damage and increasing Fire damage taken by 50% for 6 sec. */
// http://ptr.wowhead.com/spell=98313
// This should NEVER happen
#endregion
#region Burning Wound
/* The attacks from Ragnaros open a Burning Wound, inflicting 3656 to 3843 Fire damage every 2 sec
* for 20 sec. The wound causes the target's attacks to become infused with fire, causing a
* Burning Blast.*/
// 10-man - http://ptr.wowhead.com/spell=99399
// 25-man - http://ptr.wowhead.com/spell=101238
// 10-man Heroic - http://ptr.wowhead.com/spell=101239
// 25-man Heroic - http://ptr.wowhead.com/spell=101240
// 5 second cooldown on application
// Only allow 4 stacks to be applied
float BurningWoundDamage = new float[] { (3656f + 3843f), (3656f + 3843f), (5386f + 5663f), (5386f + 5663f), 0f }[i] / 2f;
Attack BurningWound = new Attack
{
Name = "Burning Wound",
AttackSpeed = 40f,
示例5: MajordomoStaghelm
public MajordomoStaghelm()
{
// If not listed here use values from defaults
#region Info
Name = "Majordomo Staghelm";
Instance = "Firelands";
Content = new BossHandler.TierLevels[] { BossHandler.TierLevels.T12_10, BossHandler.TierLevels.T12_25, BossHandler.TierLevels.T12_10H, BossHandler.TierLevels.T12_25H, BossHandler.TierLevels.T12_LFR };
Comment = "Not modeled in detail yet.";
#endregion
#region Basics
Health = new float[] { 38221940f, 133927104f, 105990728f, 367274176f, 0 }; // TODO: Double check 25-man normal health value
MobType = (int)MOB_TYPES.HUMANOID;
BerserkTimer = new int[] { 10 * 60, 10 * 60, 10 * 60, 10 * 60, 0 };
SpeedKillTimer = new int[] { 5 * 60, 5 * 60, 5 * 60, 5 * 60, 0 };
InBackPerc_Melee = new double[] { 0.95f, 0.95f, 0.95f, 0.95f, 0 };
InBackPerc_Ranged = new double[] { 0.00f, 0.00f, 0.00f, 0.00f, 0 };
Max_Players = new int[] { 10, 25, 10, 25, 0 };
Min_Tanks = new int[] { 1, 1, 1, 1, 0 };
Min_Healers = new int[] { 3, 5, 3, 5, 0 };
#endregion
#region Offensive
//MaxNumTargets = new double[] { 1, 1, 0, 0 };
//MultiTargsPerc = new double[] { 0.00d, 0.00d, 0.00d, 0.00d };
#region Attacks
for (int i = 0; i < 4; i++)
{
Phase NEPhase = new Phase() { Name = "Night Elf Phase" };
Phase ShapeshiftingPhase1 = new Phase() { Name = "Shapeshifting Phase One" };
Phase ShapeshiftingPhase2 = new Phase() { Name = "Shapeshifting Phase Two" };
Phase ShapeshiftingPhase3 = new Phase() { Name = "Shapeshifting Phase Three" };
Phase ShapeshiftingPhase4 = new Phase() { Name = "Shapeshifting Phase Four" };
Phase ShapeshiftingPhase5 = new Phase() { Name = "Shapeshifting Phase Five" };
Phase ShapeshiftingPhase6 = new Phase() { Name = "Shapeshifting Phase Six" };
Phase ScorpionPhase1 = new Phase() { Name = "Scorpion Phase One" };
Phase CatPhase1 = new Phase() { Name = "Cat Phase One" };
Phase ScorpionPhase2 = new Phase() { Name = "Scorpion Phase Two" };
Phase CatPhase2 = new Phase() { Name = "Cat Phase Two" };
Phase ScorpionPhase3 = new Phase() { Name = "Scorpion Phase Three" };
Phase CatPhase3 = new Phase() { Name = "Cat Phase Three" };
Phase ScorpionPhase4 = new Phase() { Name = "Scorpion Phase Four" };
Phase CatPhase4 = new Phase() { Name = "Cat Phase Four" };
Phase ScorpionPhase5 = new Phase() { Name = "Scorpion Phase Five" };
Phase CatPhase5 = new Phase() { Name = "Cat Phase Five" };
Phase ScorpionPhase6 = new Phase() { Name = "Scorpion Phase Six" };
Phase CatPhase6 = new Phase() { Name = "Cat Phase Six" };
float SevenStackLength = 17.3f + 13.4f + 11f + 8.6f + 7.4f + 7.4f + 6.1f + 6.1f;
float SevenStackAverageLength = SevenStackLength / 8f;
float FiveStackLength = 17.3f + 13.4f + 11f + 8.6f + 7.4f + 7.4f;
float FiveStackAverageLength = FiveStackLength / 6f;
float ThreeStackLength = 17.3f + 13.4f + 11f + 8.6f;
// Spread once the bar reaches 70%
float ZeroStackLength = 17.3f * 0.7f;
#region Main Tank Damage
Attack MTMelee0Stacks = GenAStandardMelee(Content[i]);
MTMelee0Stacks.Name = "Main Taink Melee - Zero Stacks";
MTMelee0Stacks.DamagePerHit *= 0.80f;
MTMelee0Stacks.AffectsRole[PLAYER_ROLES.OffTank] = false;
MTMelee0Stacks.AffectsRole[PLAYER_ROLES.MainTank] = true;
ScorpionPhase1.Attacks.Add(MTMelee0Stacks);
Attack MTMeleeTemp = MTMelee0Stacks.Clone();
MTMeleeTemp.Name = "Main Taink Melee - One Stack";
MTMeleeTemp.DamagePerHit *= 1.10f;
CatPhase1.Attacks.Add(MTMeleeTemp);
MTMeleeTemp = MTMelee0Stacks.Clone();
MTMeleeTemp.Name = "Main Taink Melee - Two Stacks";
MTMeleeTemp.DamagePerHit *= 1.20f;
ScorpionPhase2.Attacks.Add(MTMeleeTemp);
MTMeleeTemp = MTMelee0Stacks.Clone();
MTMeleeTemp.Name = "Main Taink Melee - Three Stacks";
MTMeleeTemp.DamagePerHit *= 1.30f;
CatPhase2.Attacks.Add(MTMeleeTemp);
MTMeleeTemp = MTMelee0Stacks.Clone();
MTMeleeTemp.Name = "Main Taink Melee - Four Stacks";
MTMeleeTemp.DamagePerHit *= 1.40f;
ScorpionPhase3.Attacks.Add(MTMeleeTemp);
MTMeleeTemp = MTMelee0Stacks.Clone();
MTMeleeTemp.Name = "Main Taink Melee - Five Stacks";
MTMeleeTemp.DamagePerHit *= 1.50f;
CatPhase3.Attacks.Add(MTMeleeTemp);
MTMeleeTemp = MTMelee0Stacks.Clone();
MTMeleeTemp.Name = "Main Taink Melee - Six Stacks";
MTMeleeTemp.DamagePerHit *= 1.60f;
ScorpionPhase4.Attacks.Add(MTMeleeTemp);
MTMeleeTemp = MTMelee0Stacks.Clone();
MTMeleeTemp.Name = "Main Taink Melee - Seven Stacks";
MTMeleeTemp.DamagePerHit *= 1.70f;
CatPhase4.Attacks.Add(MTMeleeTemp);
MTMeleeTemp = MTMelee0Stacks.Clone();
MTMeleeTemp.Name = "Main Taink Melee - Eight Stacks";
MTMeleeTemp.DamagePerHit *= 1.80f;
//.........这里部分代码省略.........
示例6: Bethtilac
public Bethtilac()
{
// If not listed here use values from defaults
#region Info
Name = "Beth'tilac";
Instance = "Firelands";
Content = new BossHandler.TierLevels[] { BossHandler.TierLevels.T12_10, BossHandler.TierLevels.T12_25, BossHandler.TierLevels.T12_10H, BossHandler.TierLevels.T12_25H, BossHandler.TierLevels.T12_LFR };
Comment = "Main Tank is tanking Beth'tilac, Off Tank is tanking adds during Cinderweb phase.";
#endregion
#region Basics
Health = new float[] { 17693752f, 53167148f, 27829008f, 83658808f, 0 };
MobType = (int)MOB_TYPES.BEAST;
BerserkTimer = new int[] { 10 * 60, 10 * 60, 10 * 60, 10 * 60, 0 };
SpeedKillTimer = new int[] { 7 * 60, 7 * 60, 7 * 60, 7 * 60, 0 };
InBackPerc_Melee = new double[] { 0.95f, 0.95f, 0.95f, 0.95f, 0 };
InBackPerc_Ranged = new double[] { 0.00f, 0.00f, 0.00f, 0.00f, 0 };
Max_Players = new int[] { 10, 25, 10, 25, 0 };
Min_Tanks = new int[] { 2, 2, 2, 2, 0 };
Min_Healers = new int[] { 3, 5, 3, 5, 0 };
TimeBossIsInvuln = new float[] { 8f * 3f, 8f * 3f, 8f * 3f, 8f * 3f, 0 };
#endregion
#region Offensive
for (int i = 0; i < 4; i++)
{
Phase TheCinderweb = new Phase() { Name = "The Cinderweb" };
Phase TheFrenzy = new Phase() { Name = "The Frenzy!" };
Phase Devastation = new Phase() { Name = "Devastation" };
Attack Melee = new Attack
{
Name = "Default Melee",
AttackType = ATTACK_TYPES.AT_MELEE,
DamagePerHit = BossHandler.StandardMeleePerHit[(int)Content[i]],
AttackSpeed = 2.5f,
};
Melee.AffectsRole[PLAYER_ROLES.MainTank] = true;
Devastation.Attacks.Add(Melee);
Attack MeleeP2 = Melee.Clone();
MeleeP2.AttackSpeed = 5f;
Melee.AffectsRole[PLAYER_ROLES.OffTank] = true;
TheFrenzy.Attacks.Add(MeleeP2);
#region The Cinderweb
#region Boss Effects
// Beth'tilac retreats to her web at the beginning of the battle. Beneath her web
// scurry her brood.
/* Fire Energy
* Beth'tilac will slowly lose Fire Energy over time. In addition, Cinderweb Drones will siphon
* some of her energy when they are depleted. Whenever Beth'tilac runs out of Fire Energy, she will
* set herself ablaze, causing Smoldering Devastation. */
#region Phase 1 Ember Flare
/* Ember Flare
* Intense heat burns enemies near Beth'tilac dealing 18500 to 21500 Fire damage to those on the
* same side of the web as she is. */
// 10 man - http://ptr.wowhead.com/spell=98934 (Upstairs); alt - http://ptr.wowhead.com/spell=99859 (on ground)
// 25 man - http://ptr.wowhead.com/spell=100648; alt - http://ptr.wowhead.com/spell=100649
// 10 man heroic - http://ptr.wowhead.com/spell=100834; alt - http://ptr.wowhead.com/spell=100935
// 25 man heroic - http://ptr.wowhead.com/spell=100835; alt - http://ptr.wowhead.com/spell=100936
Attack EmberFlare = new Attack
{
Name = "Ember Flare",
DamagePerHit = new float[]{ (14152f + 16447f), (15725f + 18275f), (20229f + 23510f), (25858f + 30051f), 0f }[i] / 2f, // Heroic values are a guess.
AttackSpeed = 6f,
MaxNumTargets = new float[]{ 3f, 5f, 3f, 5f, 0f }[i],
};
EmberFlare.AffectsRole[PLAYER_ROLES.MainTank] = true;
EmberFlare.AffectsRole[PLAYER_ROLES.MainTankHealer] = true;
EmberFlare.AffectsRole[PLAYER_ROLES.MeleeDPS] = true;
Devastation.Attacks.Add(EmberFlare);
#endregion
#region Meteor Burn
/* Meteor Burn
* Meteors crash down onto the web, dealing 37000 to 43000 Fire damage to those who stand beneath
* them. Additionally, they burn a hole in the web through which players may fall. */
// http://ptr.wowhead.com/spell=99076
// Players should not be hit by these
Impedance Move_MeteorBurn = new Impedance
{
Chance = new float[]{ 3f, 5f, 3f, 5f, 0f }[i] / Max_Players[i],
Name = "Meteor Burn",
Duration = 2f * 1000f,
Frequency = 15, // Guess
Breakable = false,
};
Move_MeteorBurn.AffectsRole[PLAYER_ROLES.MainTank] = true;
Move_MeteorBurn.AffectsRole[PLAYER_ROLES.MainTankHealer] = true;
Move_MeteorBurn.AffectsRole[PLAYER_ROLES.MeleeDPS] = true;
Devastation.Moves.Add(Move_MeteorBurn);
#endregion
#region Consume
/* Consume
* Beth'tilac consumes Cinderweb Spiderlings healing for 10% of her life. */
// 2 spell ids with similar wording, providing both
// http://ptr.wowhead.com/spell=99332; alt - http://ptr.wowhead.com/spell=99857
// This should not happen
#endregion
//.........这里部分代码省略.........
示例7: Shannox
public Shannox()
{
/* Shannox can be done with 1 tank on Normal with the main tank tanking Riplimb at the same time as
* Shannox. However for consistency between Normal and Heroic, the Boss Handler will assume the use
* of the two tank strat.*/
#region Info
Name = "Shannox";
Instance = "Firelands";
Content = new BossHandler.TierLevels[] { BossHandler.TierLevels.T12_10, BossHandler.TierLevels.T12_25, BossHandler.TierLevels.T12_10H, BossHandler.TierLevels.T12_25H, BossHandler.TierLevels.T12_LFR };
#endregion
#region Basics
// Baleroc's health consists of both himself and his dogs Ripgut and Rageface
// On heroic mode, you do not kill the dogs. Instead you burn Shannox instead
Health = new float[] { (20442296f + (7901028f * 2f)), (61198050f + (25252248f * 2f)), 28619216f, 97100904f, 0 };
MobType = (int)MOB_TYPES.HUMANOID;
BerserkTimer = new int[] { 10 * 60, 10 * 60, 10 * 60, 10 * 60, 0 };
SpeedKillTimer = new int[] { 7 * 60, 7 * 60, 7 * 60, 7 * 60, 0 };
InBackPerc_Melee = new double[] { 0.95f, 0.95f, 0.95f, 0.95f, 0 };
InBackPerc_Ranged = new double[] { 0.00f, 0.00f, 0.00f, 0.00f, 0 };
Max_Players = new int[] { 10, 25, 10, 25, 0 };
Min_Tanks = new int[] { 2, 2, 2, 2, 0 };
Min_Healers = new int[] { 3, 5, 3, 5, 0 };
#endregion
#region Offensive
#region Attacks
for (int i = 0; i < 4; i++)
{
Phase EntireFight = new Phase() { Name = "Entire Fight" };
Phase TwoDogsUp = new Phase() { Name = "Two Dogs Up" };
Phase OneDogUp = new Phase() { Name = "One Dog Up" };
Phase Before30Pct = new Phase() { Name = "Before Shannox reaches 30% Health" };
Phase After30Pct = new Phase() { Name = "After Shannox reaches 30% Health" };
#region Shannox
Attack BasicMeleeMT = new Attack
{
Name = "Melee Shannox",
AttackSpeed = 1.4f,
AttackType = ATTACK_TYPES.AT_MELEE,
DamagePerHit = BossHandler.StandardMeleePerHit[(int)Content[i]] * (i < 2 ? .5f : 1f),
Missable = true,
Dodgable = true,
Parryable = true,
Blockable = true,
IsTheDefaultMelee=true,
};
BasicMeleeMT.AffectsRole[PLAYER_ROLES.MainTank] = true;
TwoDogsUp.Attacks.Add(BasicMeleeMT);
// With just one dog up, his attack damage goes up by 15%
Attack BasicMeleeMT1DU = BasicMeleeMT.Clone();
BasicMeleeMT1DU.DamagePerHit *= 1.15f;
OneDogUp.Attacks.Add(BasicMeleeMT1DU);
#region Frenzy
/* When both of Shannox's hounds are defeated, he goes into a frenzy, increasing physical damage
* and attack speed by 30. Shannox no longer uses Hurl Spear after this point and instead drives his
* spear directly into the ground to trigger the same cascade of molten eruptions around the impact
* point, which deal 61156 to 67594 Fire damage to enemies that are stand in them.*/
// http://ptr.wowhead.com/spell=100522
// If both of his dogs die, his damage goes up by 30%
// Does not happen on Heroic
Attack BasicMeleeMT0DU = BasicMeleeMT.Clone();
BasicMeleeMT0DU.DamagePerHit *= 1.30f;
if (i < 2)
After30Pct.Attacks.Add(BasicMeleeMT0DU);
else
After30Pct.Attacks.Add(BasicMeleeMT);
#endregion
#region Arcing Slash
/* Shannox causes 125% of normal melee damage in a wide arc up to 1 yards in front of him, and
* inflicts Jagged Tear on those he strikes.*/
// http://ptr.wowhead.com/spell=99931
Attack ArcingSlash = new Attack
{
Name = "Arcing Slash",
AttackSpeed = 12.5f,
AttackType = ATTACK_TYPES.AT_MELEE,
DamagePerHit = BasicMeleeMT.DamagePerHit * 1.25f,
SpellID = 99931,
};
ArcingSlash.AffectsRole[PLAYER_ROLES.MainTank] = true;
TwoDogsUp.Attacks.Add(ArcingSlash);
Attack ArcingSlash1DU = ArcingSlash.Clone();
ArcingSlash1DU.DamagePerHit = BasicMeleeMT1DU.DamagePerHit * 1.25f;
OneDogUp.Attacks.Add(ArcingSlash1DU);
Attack ArcingSlash0DU = ArcingSlash.Clone();
ArcingSlash0DU.DamagePerHit = BasicMeleeMT0DU.DamagePerHit * 1.25f;
if (i < 2)
After30Pct.Attacks.Add(ArcingSlash0DU);
else
After30Pct.Attacks.Add(ArcingSlash);
#region Jagged Tear
/* Shannox's Arcing Slash leaves a Jagged Tear that deals 3000 physical damage every 3 sec for 30
* sec. Stacks.*/
//.........这里部分代码省略.........