Skip to content

Commit cbf39e9

Browse files
Tobschinskixfurry
authored andcommitted
[s2849] Molten Core - Gehennas
Improved AI (based on commit a2246d6) Signed-off-by: Xfurry <xfurry@scriptdev2.com> (based on commit SD2-TBC[3146] - 05ddea0) Signed-off-by: xfurry <xfurry@scriptdev2.com>
1 parent 4d1844f commit cbf39e9

File tree

2 files changed

+36
-32
lines changed

2 files changed

+36
-32
lines changed

scripts/eastern_kingdoms/molten_core/boss_gehennas.cpp

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
/* ScriptData
1818
SDName: Boss_Gehennas
19-
SD%Complete: 90
20-
SDComment:
19+
SD%Complete: 100
20+
SDComment: -
2121
SDCategory: Molten Core
2222
EndScriptData */
2323

@@ -26,9 +26,10 @@ EndScriptData */
2626

2727
enum
2828
{
29-
SPELL_SHADOW_BOLT = 19728, // 19729 exists too, but can be reflected
29+
SPELL_GEHENNAS_CURSE = 19716,
3030
SPELL_RAIN_OF_FIRE = 19717,
31-
SPELL_GEHENNAS_CURSE = 19716
31+
SPELL_SHADOW_BOLT_RANDOM = 19728,
32+
SPELL_SHADOW_BOLT_TARGET = 19729,
3233
};
3334

3435
struct boss_gehennasAI : public ScriptedAI
@@ -41,15 +42,17 @@ struct boss_gehennasAI : public ScriptedAI
4142

4243
ScriptedInstance* m_pInstance;
4344

44-
uint32 m_uiShadowBoltTimer;
45-
uint32 m_uiRainOfFireTimer;
4645
uint32 m_uiGehennasCurseTimer;
46+
uint32 m_uiRainOfFireTimer;
47+
uint32 m_uiShadowBoltRandomTimer;
48+
uint32 m_uiShadowBoltTargetTimer;
4749

4850
void Reset() override
4951
{
50-
m_uiShadowBoltTimer = 6000;
51-
m_uiRainOfFireTimer = 10000;
52-
m_uiGehennasCurseTimer = 12000;
52+
m_uiGehennasCurseTimer = urand(5 * IN_MILLISECONDS, 10 * IN_MILLISECONDS);
53+
m_uiRainOfFireTimer = urand(6 * IN_MILLISECONDS, 12 * IN_MILLISECONDS);
54+
m_uiShadowBoltRandomTimer = urand(3 * IN_MILLISECONDS, 6 * IN_MILLISECONDS);
55+
m_uiShadowBoltTargetTimer = urand(3 * IN_MILLISECONDS, 6 * IN_MILLISECONDS);
5356
}
5457

5558
void Aggro(Unit* /*pwho*/) override
@@ -75,41 +78,42 @@ struct boss_gehennasAI : public ScriptedAI
7578
if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
7679
return;
7780

78-
// ShadowBolt Timer
79-
if (m_uiShadowBoltTimer < uiDiff)
80-
{
81-
if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 1))
82-
{
83-
if (DoCastSpellIfCan(pTarget, SPELL_SHADOW_BOLT) == CAST_OK)
84-
m_uiShadowBoltTimer = 7000;
85-
}
86-
else // In case someone attempts soloing, we don't need to scan for targets every tick
87-
m_uiShadowBoltTimer = 7000;
88-
}
89-
else
90-
m_uiShadowBoltTimer -= uiDiff;
91-
92-
// Rain of Fire Timer
81+
// Rain_of_Fire-Timer
9382
if (m_uiRainOfFireTimer < uiDiff)
9483
{
95-
if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0))
96-
{
97-
if (DoCastSpellIfCan(pTarget, SPELL_RAIN_OF_FIRE) == CAST_OK)
98-
m_uiRainOfFireTimer = urand(4000, 12000);
99-
}
84+
if (DoCastSpellIfCan(m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0), SPELL_RAIN_OF_FIRE) == CAST_OK)
85+
m_uiRainOfFireTimer = urand(6 * IN_MILLISECONDS, 12 * IN_MILLISECONDS);
10086
}
10187
else
10288
m_uiRainOfFireTimer -= uiDiff;
10389

104-
// GehennasCurse Timer
90+
// Gehennas_Curse-Timer
10591
if (m_uiGehennasCurseTimer < uiDiff)
10692
{
10793
if (DoCastSpellIfCan(m_creature, SPELL_GEHENNAS_CURSE) == CAST_OK)
108-
m_uiGehennasCurseTimer = 30000;
94+
m_uiGehennasCurseTimer = urand(25 * IN_MILLISECONDS, 30 * IN_MILLISECONDS);
10995
}
11096
else
11197
m_uiGehennasCurseTimer -= uiDiff;
11298

99+
// Shadow_Bolt_Random-Timer
100+
if (m_uiShadowBoltRandomTimer < uiDiff)
101+
{
102+
if (DoCastSpellIfCan(m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0), SPELL_SHADOW_BOLT_RANDOM) == CAST_OK)
103+
m_uiShadowBoltRandomTimer = urand(3 * IN_MILLISECONDS, 6 * IN_MILLISECONDS);
104+
}
105+
else
106+
m_uiShadowBoltRandomTimer -= uiDiff;
107+
108+
// Shadow_Bolt_Target-Timer
109+
if (m_uiShadowBoltTargetTimer < uiDiff)
110+
{
111+
if (DoCastSpellIfCan(m_creature->getVictim(), SPELL_SHADOW_BOLT_TARGET) == CAST_OK)
112+
m_uiShadowBoltTargetTimer = urand(3 * IN_MILLISECONDS, 6 * IN_MILLISECONDS);
113+
}
114+
else
115+
m_uiShadowBoltTargetTimer -= uiDiff;
116+
113117
DoMeleeAttackIfReady();
114118
}
115119
};

sd2_revision_nr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#ifndef __SD2_REVISION_NR_H__
22
#define __SD2_REVISION_NR_H__
3-
#define SD2_REVISION_NR "s2848"
3+
#define SD2_REVISION_NR "s2849"
44
#endif // __SD2_REVISION_NR_H__

0 commit comments

Comments
 (0)