mirror of
https://github.com/ZhengPeiRu21/mod-individual-progression
synced 2025-11-29 23:44:51 +08:00
patch
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ScriptMgr.h"
|
#include "CreatureScript.h"
|
||||||
#include "ScriptedCreature.h"
|
#include "ScriptedCreature.h"
|
||||||
#include "naxxramas.h"
|
#include "naxxramas.h"
|
||||||
|
|
||||||
@@ -30,7 +30,8 @@ enum Yells
|
|||||||
|
|
||||||
enum Spells
|
enum Spells
|
||||||
{
|
{
|
||||||
SPELL_HATEFUL_STRIKE = 28308,
|
SPELL_HATEFUL_STRIKE_10 = 41926,
|
||||||
|
SPELL_HATEFUL_STRIKE_25 = 59192,
|
||||||
SPELL_FRENZY = 28131,
|
SPELL_FRENZY = 28131,
|
||||||
SPELL_BERSERK = 26662,
|
SPELL_BERSERK = 26662,
|
||||||
SPELL_SLIME_BOLT = 32309
|
SPELL_SLIME_BOLT = 32309
|
||||||
@@ -44,6 +45,11 @@ enum Events
|
|||||||
EVENT_BERSERK = 4
|
EVENT_BERSERK = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum Misc
|
||||||
|
{
|
||||||
|
ACHIEV_TIMED_START_EVENT = 10286
|
||||||
|
};
|
||||||
|
|
||||||
class boss_patchwerk_40 : public CreatureScript
|
class boss_patchwerk_40 : public CreatureScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -57,12 +63,9 @@ public:
|
|||||||
struct boss_patchwerk_40AI : public BossAI
|
struct boss_patchwerk_40AI : public BossAI
|
||||||
{
|
{
|
||||||
explicit boss_patchwerk_40AI(Creature* c) : BossAI(c, BOSS_PATCHWERK)
|
explicit boss_patchwerk_40AI(Creature* c) : BossAI(c, BOSS_PATCHWERK)
|
||||||
{
|
{}
|
||||||
pInstance = me->GetInstanceScript();
|
|
||||||
}
|
|
||||||
|
|
||||||
EventMap events;
|
EventMap events;
|
||||||
InstanceScript* pInstance;
|
|
||||||
|
|
||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
@@ -72,17 +75,13 @@ public:
|
|||||||
|
|
||||||
void KilledUnit(Unit* who) override
|
void KilledUnit(Unit* who) override
|
||||||
{
|
{
|
||||||
if (who->GetTypeId() != TYPEID_PLAYER)
|
if (!who->IsPlayer())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!urand(0, 3))
|
if (!urand(0, 3))
|
||||||
{
|
|
||||||
Talk(SAY_SLAY);
|
Talk(SAY_SLAY);
|
||||||
}
|
|
||||||
if (pInstance)
|
instance->StorePersistentData(PERSISTENT_DATA_IMMORTAL_FAIL, 1);
|
||||||
{
|
|
||||||
pInstance->SetData(DATA_IMMORTAL_FAIL, 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit* killer) override
|
void JustDied(Unit* killer) override
|
||||||
@@ -96,9 +95,10 @@ public:
|
|||||||
BossAI::JustEngagedWith(who);
|
BossAI::JustEngagedWith(who);
|
||||||
Talk(SAY_AGGRO);
|
Talk(SAY_AGGRO);
|
||||||
me->SetInCombatWithZone();
|
me->SetInCombatWithZone();
|
||||||
events.ScheduleEvent(EVENT_HATEFUL_STRIKE, 1200);
|
events.ScheduleEvent(EVENT_HATEFUL_STRIKE, 1200ms);
|
||||||
events.ScheduleEvent(EVENT_BERSERK, 7 * 60 * 1000); // 7 minutes enrange
|
events.ScheduleEvent(EVENT_BERSERK, 7min); // 7 minutes enrange
|
||||||
events.ScheduleEvent(EVENT_HEALTH_CHECK, 1000);
|
events.ScheduleEvent(EVENT_HEALTH_CHECK, 1s);
|
||||||
|
// instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(uint32 diff) override
|
void UpdateAI(uint32 diff) override
|
||||||
@@ -113,7 +113,7 @@ public:
|
|||||||
switch (events.ExecuteEvent())
|
switch (events.ExecuteEvent())
|
||||||
{
|
{
|
||||||
case EVENT_HATEFUL_STRIKE:
|
case EVENT_HATEFUL_STRIKE:
|
||||||
{
|
{
|
||||||
// Cast Hateful strike on the player with the highest amount of HP within melee distance, and second threat amount
|
// Cast Hateful strike on the player with the highest amount of HP within melee distance, and second threat amount
|
||||||
std::list<Unit*> meleeRangeTargets;
|
std::list<Unit*> meleeRangeTargets;
|
||||||
Unit* finalTarget = nullptr;
|
Unit* finalTarget = nullptr;
|
||||||
@@ -156,19 +156,19 @@ public:
|
|||||||
if (finalTarget)
|
if (finalTarget)
|
||||||
{
|
{
|
||||||
int32 dmg = urand(22100,22850);
|
int32 dmg = urand(22100,22850);
|
||||||
me->CastCustomSpell(finalTarget, SPELL_HATEFUL_STRIKE, &dmg, 0, 0, false);
|
me->CastCustomSpell(finalTarget, SPELL_HATEFUL_STRIKE_10, &dmg, 0, 0, false);
|
||||||
}
|
}
|
||||||
events.RepeatEvent(1200);
|
events.Repeat(1200ms);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EVENT_BERSERK:
|
case EVENT_BERSERK:
|
||||||
Talk(EMOTE_BERSERK);
|
Talk(EMOTE_BERSERK);
|
||||||
me->CastSpell(me, SPELL_BERSERK, true);
|
me->CastSpell(me, SPELL_BERSERK, true);
|
||||||
events.ScheduleEvent(EVENT_SLIME_BOLT, 3000);
|
events.ScheduleEvent(EVENT_SLIME_BOLT, 3s);
|
||||||
break;
|
break;
|
||||||
case EVENT_SLIME_BOLT:
|
case EVENT_SLIME_BOLT:
|
||||||
me->CastSpell(me, SPELL_SLIME_BOLT, false);
|
me->CastSpell(me, SPELL_SLIME_BOLT, false);
|
||||||
events.RepeatEvent(3000);
|
events.Repeat(3s);
|
||||||
break;
|
break;
|
||||||
case EVENT_HEALTH_CHECK:
|
case EVENT_HEALTH_CHECK:
|
||||||
if (me->GetHealthPct() <= 5)
|
if (me->GetHealthPct() <= 5)
|
||||||
@@ -177,7 +177,7 @@ public:
|
|||||||
me->CastSpell(me, SPELL_FRENZY, true);
|
me->CastSpell(me, SPELL_FRENZY, true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
events.RepeatEvent(1000);
|
events.Repeat(1s);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
|
|||||||
Reference in New Issue
Block a user