aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authorRat <gmstreetrat@gmail.com>2012-01-01 22:31:48 +0100
committerRat <gmstreetrat@gmail.com>2012-01-01 22:31:48 +0100
commit0e950d5e467a63827d1e280929a2e5bd36e6dc98 (patch)
tree41c3424fe560ee1a338140203ffdf1b1ae7b6469 /src/server/scripts
parentbff7c18251e8c16dfbe3f4484a76d8df76f05076 (diff)
parentb1e19257bcd80427986cbb670cbc69c45d6154b6 (diff)
Merge branch '4.x' of git://github.com/TrinityCore/TrinityCore into 4.x
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Commands/cs_account.cpp35
-rw-r--r--src/server/scripts/Commands/cs_npc.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp18
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp32
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp12
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp14
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp12
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/blasted_lands.cpp15
-rw-r--r--src/server/scripts/EasternKingdoms/eversong_woods.cpp6
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp10
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp8
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp8
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp6
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp2
-rw-r--r--src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp2
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp20
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp12
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp14
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp22
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp26
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp8
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp14
-rw-r--r--src/server/scripts/Kalimdor/azuremyst_isle.cpp4
-rw-r--r--src/server/scripts/Kalimdor/boss_azuregos.cpp16
-rw-r--r--src/server/scripts/Kalimdor/desolace.cpp55
-rw-r--r--src/server/scripts/Kalimdor/durotar.cpp4
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp8
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp5
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp3
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp1
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp2
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_noth.cpp8
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp30
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp16
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp12
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp14
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon.cpp2
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp4
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp4
-rw-r--r--src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp2
-rw-r--r--src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp10
-rw-r--r--src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp8
-rw-r--r--src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp8
-rw-r--r--src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp4
-rw-r--r--src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp4
-rw-r--r--src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp6
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_illidan.cpp24
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp6
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp4
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp8
-rw-r--r--src/server/scripts/Outland/BlackTemple/illidari_council.cpp14
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp8
-rw-r--r--src/server/scripts/Outland/GruulsLair/boss_gruul.cpp2
-rw-r--r--src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp10
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp14
-rw-r--r--src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp4
-rw-r--r--src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp14
-rw-r--r--src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp22
-rw-r--r--src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp8
-rw-r--r--src/server/scripts/Outland/blades_edge_mountains.cpp25
-rw-r--r--src/server/scripts/Outland/netherstorm.cpp32
-rw-r--r--src/server/scripts/Outland/shadowmoon_valley.cpp25
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp53
-rw-r--r--src/server/scripts/Spells/spell_quest.cpp49
-rw-r--r--src/server/scripts/World/areatrigger_scripts.cpp166
-rw-r--r--src/server/scripts/World/go_scripts.cpp54
-rw-r--r--src/server/scripts/World/item_scripts.cpp41
-rw-r--r--src/server/scripts/World/npcs_special.cpp10
93 files changed, 836 insertions, 427 deletions
diff --git a/src/server/scripts/Commands/cs_account.cpp b/src/server/scripts/Commands/cs_account.cpp
index ae3250ad7b7..bcef7ac9ba9 100644
--- a/src/server/scripts/Commands/cs_account.cpp
+++ b/src/server/scripts/Commands/cs_account.cpp
@@ -81,8 +81,13 @@ public:
return false;
}
- // No SQL injection
- LoginDatabase.PExecute("UPDATE account SET expansion = '%d' WHERE id = '%u'", expansion, accountId);
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPDATE_EXPANSION);
+
+ stmt->setUInt8(0, uint8(expansion));
+ stmt->setUInt32(1, accountId);
+
+ LoginDatabase.Execute(stmt);
+
handler->PSendSysMessage(LANG_ACCOUNT_ADDON, expansion);
return true;
}
@@ -242,17 +247,25 @@ public:
}
std::string param = (char*)args;
- if (param == "on")
- {
- LoginDatabase.PExecute("UPDATE account SET locked = '1' WHERE id = '%d'", handler->GetSession()->GetAccountId());
- handler->PSendSysMessage(LANG_COMMAND_ACCLOCKLOCKED);
- return true;
- }
- if (param == "off")
+ if (!param.empty())
{
- LoginDatabase.PExecute("UPDATE account SET locked = '0' WHERE id = '%d'", handler->GetSession()->GetAccountId());
- handler->PSendSysMessage(LANG_COMMAND_ACCLOCKUNLOCKED);
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPDATE_ACCOUNT_LOCK);
+
+ if (param == "on")
+ {
+ stmt->setBool(0, true); // locked
+ handler->PSendSysMessage(LANG_COMMAND_ACCLOCKLOCKED);
+ }
+ else if (param == "off")
+ {
+ stmt->setBool(0, false); // unlocked
+ handler->PSendSysMessage(LANG_COMMAND_ACCLOCKUNLOCKED);
+ }
+
+ stmt->setUInt32(1, handler->GetSession()->GetAccountId());
+
+ LoginDatabase.Execute(stmt);
return true;
}
diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp
index b9ac21cc040..a5aa2a516f3 100644
--- a/src/server/scripts/Commands/cs_npc.cpp
+++ b/src/server/scripts/Commands/cs_npc.cpp
@@ -552,15 +552,13 @@ public:
handler->PSendSysMessage(LANG_NPCINFO_PHASEMASK, target->GetPhaseMask());
handler->PSendSysMessage(LANG_NPCINFO_ARMOR, target->GetArmor());
handler->PSendSysMessage(LANG_NPCINFO_POSITION, float(target->GetPositionX()), float(target->GetPositionY()), float(target->GetPositionZ()));
+ handler->PSendSysMessage(LANG_NPCINFO_AIINFO, target->GetAIName().c_str(), target->GetScriptName().c_str());
- if ((npcflags & UNIT_NPC_FLAG_VENDOR))
- {
+ if (npcflags & UNIT_NPC_FLAG_VENDOR)
handler->SendSysMessage(LANG_NPCINFO_VENDOR);
- }
- if ((npcflags & UNIT_NPC_FLAG_TRAINER))
- {
+
+ if (npcflags & UNIT_NPC_FLAG_TRAINER)
handler->SendSysMessage(LANG_NPCINFO_TRAINER);
- }
return true;
}
diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp
index 4e44a70475f..a7c984fa536 100644
--- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp
@@ -70,7 +70,7 @@ public:
if (ShadowFlame_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_SHADOWFLAME);
- ShadowFlame_Timer = 15000 + rand()%7000;
+ ShadowFlame_Timer = urand(15000, 22000);
} else ShadowFlame_Timer -= diff;
//WingBuffet_Timer
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp
index 8454150d830..389f0d0a959 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp
@@ -824,7 +824,7 @@ public:
void Reset()
{
ChaseTimer = 30000;
- FearTimer = 25000 + rand()%10000;
+ FearTimer = urand(25000, 35000);
SwipeTimer = 5000;
HoodGUID = 0;
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp
index 55254a3b8ee..bf58d6f2853 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp
@@ -467,7 +467,7 @@ struct boss_priestess_lackey_commonAI : public ScriptedAI
if (ResetThreatTimer <= diff)
{
DoResetThreat();
- ResetThreatTimer = 5000 + rand()%15000;
+ ResetThreatTimer = urand(5000, 20000);
} else ResetThreatTimer -= diff;
}
};
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
index 305ce97687a..93b0b45a3e3 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
@@ -122,13 +122,13 @@ public:
instance->SetData(DATA_SELIN_EVENT, NOT_STARTED);
} else sLog->outError(ERROR_INST_DATA);
- DrainLifeTimer = 3000 + rand()%4000;
+ DrainLifeTimer = urand(3000, 7000);
DrainManaTimer = DrainLifeTimer + 5000;
FelExplosionTimer = 2100;
if (IsHeroic())
- DrainCrystalTimer = 10000 + rand()%5000;
+ DrainCrystalTimer = urand(10000, 15000);
else
- DrainCrystalTimer = 20000 + rand()%5000;
+ DrainCrystalTimer = urand(20000, 25000);
EmpowerTimer = 10000;
IsDraining = false;
@@ -285,9 +285,9 @@ public:
{
SelectNearestCrystal();
if (IsHeroic())
- DrainCrystalTimer = 10000 + rand()%5000;
+ DrainCrystalTimer = urand(10000, 15000);
else
- DrainCrystalTimer = 20000 + rand()%5000;
+ DrainCrystalTimer = urand(20000, 25000);
} else DrainCrystalTimer -= diff;
}
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp
index ebd30aa2f5d..6d316eff94f 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp
@@ -248,7 +248,7 @@ public:
me->Mount(MODEL_DEATH_KNIGHT_MOUNT);
break;
case 10:
- me->Unmount();
+ me->Dismount();
break;
}
}
@@ -378,7 +378,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
DoScriptText(SAY_TREE2, me);
- me->Unmount();
+ me->Dismount();
uiStage = 0;
}
@@ -482,21 +482,21 @@ public:
{
Shout();
DoCast(me, SPELL_RENEW);
- uiRenew_timer = 1000 + rand()%5000;
+ uiRenew_timer = urand(1000, 6000);
} else uiRenew_timer -= diff;
if (uiInquisitor_Penance_timer <= diff)
{
Shout();
DoCast(me->getVictim(), SPELL_INQUISITOR_PENANCE);
- uiInquisitor_Penance_timer = 2000 + rand()%5000;
+ uiInquisitor_Penance_timer = urand(2000, 7000);
} else uiInquisitor_Penance_timer -= diff;
if (uiValroth_Smite_timer <= diff)
{
Shout();
DoCast(me->getVictim(), SPELL_VALROTH_SMITE);
- uiValroth_Smite_timer = 1000 + rand()%5000;
+ uiValroth_Smite_timer = urand(1000, 6000);
} else uiValroth_Smite_timer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp
index 18316d67cd4..5b89651f2b0 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp
@@ -526,13 +526,13 @@ public:
NPCChangeTarget(uiOrbazGUID);
NPCChangeTarget(uiThassarianGUID);
- me->Unmount();
+ me->Dismount();
me->CastSpell(me, SPELL_THE_MIGHT_OF_MOGRAINE, true); // need to fix, on player only
if (Creature* temp = Unit::GetCreature(*me, uiKoltiraGUID))
- temp->Unmount();
+ temp->Dismount();
if (Creature* temp = Unit::GetCreature(*me, uiThassarianGUID))
- temp->Unmount();
+ temp->Dismount();
bIsBattle = true;
break;
@@ -1352,31 +1352,31 @@ public:
if (uiAnti_magic_zone <= diff)
{
DoCast(me, SPELL_ANTI_MAGIC_ZONE1);
- uiAnti_magic_zone = 25000 + rand()%5000;
+ uiAnti_magic_zone = urand(25000, 30000);
} else uiAnti_magic_zone -= diff;
if (uiDeath_strike <= diff)
{
DoCast(me->getVictim(), SPELL_DEATH_STRIKE);
- uiDeath_strike = 5000 + rand()%5000;
+ uiDeath_strike = urand(5000, 10000);
} else uiDeath_strike -= diff;
if (uiDeath_embrace <= diff)
{
DoCast(me->getVictim(), SPELL_DEATH_EMBRACE);
- uiDeath_embrace = 5000 + rand()%5000;
+ uiDeath_embrace = urand(5000, 10000);
} else uiDeath_embrace -= diff;
if (uiIcy_touch <= diff)
{
DoCast(me->getVictim(), SPELL_ICY_TOUCH1);
- uiIcy_touch = 5000 + rand()%5000;
+ uiIcy_touch = urand(5000, 10000);
} else uiIcy_touch -= diff;
if (uiUnholy_blight <= diff)
{
DoCast(me->getVictim(), SPELL_UNHOLY_BLIGHT);
- uiUnholy_blight = 5000 + rand()%5000;
+ uiUnholy_blight = urand(5000, 10000);
} else uiUnholy_blight -= diff;
if (uiFight_speech <= diff)
@@ -1387,7 +1387,7 @@ public:
SAY_LIGHT_OF_DAWN18, SAY_LIGHT_OF_DAWN19, SAY_LIGHT_OF_DAWN20,
SAY_LIGHT_OF_DAWN21, SAY_LIGHT_OF_DAWN22, SAY_LIGHT_OF_DAWN23,
SAY_LIGHT_OF_DAWN24), me);
- uiFight_speech = 15000 + rand()%5000;
+ uiFight_speech = urand(15000, 20000);
} else uiFight_speech -= diff;
// Check spawns
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp
index a5fe8a5c6db..25295e62ff3 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp
@@ -111,7 +111,7 @@ public:
if (AoESilence_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_AOESILENCE);
- AoESilence_Timer = 15000 + rand()%5000;
+ AoESilence_Timer = urand(15000, 20000);
} else AoESilence_Timer -= diff;
//ArcaneExplosion_Timer
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp
index 16875dce85f..733b3a91f93 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp
@@ -92,7 +92,7 @@ public:
if (FlameShock_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_FLAMESHOCK);
- FlameShock_Timer = 10000 + rand()%5000;
+ FlameShock_Timer = urand(10000, 15000);
} else FlameShock_Timer -= diff;
//FlameSpike_Timer
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp
index 2277d867455..e66c639896e 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp
@@ -107,7 +107,7 @@ public:
if (ShadowWordPain_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_SHADOWWORDPAIN);
- ShadowWordPain_Timer = 5000 + rand()%10000;
+ ShadowWordPain_Timer = urand(5000, 15000);
} else ShadowWordPain_Timer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp
index 12dd67e009d..d930dd4a14c 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp
@@ -108,14 +108,14 @@ public:
if (ShadowShield_Timer <= diff)
{
DoCast(me, SPELL_SHADOWSHIELD);
- ShadowShield_Timer = 14000 + rand()%14000;
+ ShadowShield_Timer = urand(14000, 28000);
} else ShadowShield_Timer -= diff;
//Curse_Timer
if (Curse_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_CURSE);
- Curse_Timer = 15000 + rand()%12000;
+ Curse_Timer = urand(15000, 27000);
} else Curse_Timer -= diff;
//Teleporting Random Target to one of the six pre boss rooms and spawn 3-4 skeletons near the gamer.
@@ -214,7 +214,7 @@ public:
break;
}
}
- Teleport_Timer = 20000 + rand()%15000;
+ Teleport_Timer = urand(20000, 35000);
} else Teleport_Timer -= diff;
}
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp
index 9dd9f1fedb5..2d1d78193ed 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp
@@ -171,7 +171,7 @@ public:
void Reset()
{
- Cleave_Timer = 2000 + rand()%6000;
+ Cleave_Timer = urand(2000, 8000);
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
}
@@ -192,7 +192,7 @@ public:
DoCast(me->getVictim(), SPELL_CLEAVE);
//5-8 seconds
- Cleave_Timer = 5000 + rand()%3000;
+ Cleave_Timer = urand(5000, 8000);
} else Cleave_Timer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp
index 17ea8a04293..3cbf00f291d 100644
--- a/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp
+++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp
@@ -131,7 +131,7 @@ public:
if (m_uiMindBlast_Timer <= uiDiff)
{
DoCast(me->getVictim(), SPELL_MINDBLAST);
- m_uiMindBlast_Timer = 15000 + rand()%5000;
+ m_uiMindBlast_Timer = urand(15000, 20000);
} else m_uiMindBlast_Timer -= uiDiff;
//CrusadersHammer
@@ -173,7 +173,7 @@ public:
if (m_uiMindBlast_Timer <= uiDiff)
{
DoCast(me->getVictim(), SPELL_MINDBLAST);
- m_uiMindBlast_Timer = 15000 + rand()%5000;
+ m_uiMindBlast_Timer = urand(15000, 20000);
} else m_uiMindBlast_Timer -= uiDiff;
//ShadowShock
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
index df3bb5d4525..747d9e29ec1 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
@@ -612,7 +612,7 @@ public:
KalecGUID = 0;
}
- ShadowBoltTimer = 7000 + rand()%3 * 1000;
+ ShadowBoltTimer = urand(7, 10) * 1000;
AgonyCurseTimer = 20000;
CorruptionStrikeTimer = 13000;
CheckTimer = 1000;
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
index 413897c94e8..ffccfbce2b6 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
@@ -296,13 +296,13 @@ class boss_akilzon : public CreatureScript
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1);
if (!target) target = me->getVictim();
DoCast(target, SPELL_GUST_OF_WIND);
- GustOfWind_Timer = (20+rand()%10)*1000; //20 to 30 seconds(bosskillers)
+ GustOfWind_Timer = urand(20, 30) * 1000; //20 to 30 seconds(bosskillers)
} else GustOfWind_Timer -= diff;
if (CallLighting_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_CALL_LIGHTNING);
- CallLighting_Timer = (12 + rand()%5)*1000; //totaly random timer. can't find any info on this
+ CallLighting_Timer = urand(12, 17) * 1000; //totaly random timer. can't find any info on this
} else CallLighting_Timer -= diff;
if (!isRaining && ElectricalStorm_Timer < uint32(8000 + rand() % 5000))
@@ -406,7 +406,7 @@ class mob_akilzon_eagle : public CreatureScript
void Reset()
{
- EagleSwoop_Timer = 5000 + rand()%5000;
+ EagleSwoop_Timer = urand(5000, 10000);
arrived = true;
TargetGUID = 0;
me->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING);
@@ -425,7 +425,7 @@ class mob_akilzon_eagle : public CreatureScript
DoCast(target, SPELL_EAGLE_SWOOP, true);
TargetGUID = 0;
me->SetSpeed(MOVE_RUN, 1.2f);
- EagleSwoop_Timer = 5000 + rand()%5000;
+ EagleSwoop_Timer = urand(5000, 10000);
}
}
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp
index a3c7aae4132..80c31d42a46 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp
@@ -263,7 +263,7 @@ class boss_halazzi : public CreatureScript
DoCast(target, SPELL_EARTHSHOCK);
else
DoCast(target, SPELL_FLAMESHOCK);
- ShockTimer = 10000 + rand()%5000;
+ ShockTimer = urand(10000, 15000);
}
} else ShockTimer -= diff;
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
index 3ff465a3c1d..0ae8a9bc5c4 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
@@ -145,10 +145,10 @@ class boss_nalorakk : public CreatureScript
if (instance)
instance->SetData(DATA_NALORAKKEVENT, NOT_STARTED);
- Surge_Timer = 15000 + rand()%5000;
- BrutalSwipe_Timer = 7000 + rand()%5000;
- Mangle_Timer = 10000 + rand()%5000;
- ShapeShift_Timer = 45000 + rand()%5000;
+ Surge_Timer = urand(15000, 20000);
+ BrutalSwipe_Timer = urand(7000, 12000);
+ Mangle_Timer = urand(10000, 15000);
+ ShapeShift_Timer = urand(45000, 50000);
Berserk_Timer = 600000;
inBearForm = false;
@@ -371,10 +371,10 @@ class boss_nalorakk : public CreatureScript
me->MonsterYell(YELL_SHIFTEDTOTROLL, LANG_UNIVERSAL, 0);
DoPlaySoundToSet(me, SOUND_YELL_TOTROLL);
me->RemoveAurasDueToSpell(SPELL_BEARFORM);
- Surge_Timer = 15000 + rand()%5000;
- BrutalSwipe_Timer = 7000 + rand()%5000;
- Mangle_Timer = 10000 + rand()%5000;
- ShapeShift_Timer = 45000 + rand()%5000;
+ Surge_Timer = urand(15000, 20000);
+ BrutalSwipe_Timer = urand(7000, 12000);
+ Mangle_Timer = urand(10000, 15000);
+ ShapeShift_Timer = urand(45000, 50000);
inBearForm = false;
}
else
@@ -385,8 +385,8 @@ class boss_nalorakk : public CreatureScript
DoCast(me, SPELL_BEARFORM, true);
LaceratingSlash_Timer = 2000; // dur 18s
RendFlesh_Timer = 3000; // dur 5s
- DeafeningRoar_Timer = 5000 + rand()%5000; // dur 2s
- ShapeShift_Timer = 20000 + rand()%5000; // dur 30s
+ DeafeningRoar_Timer = urand(5000, 10000); // dur 2s
+ ShapeShift_Timer = urand(20000, 25000); // dur 30s
inBearForm = true;
}
} else ShapeShift_Timer -= diff;
@@ -396,7 +396,7 @@ class boss_nalorakk : public CreatureScript
if (BrutalSwipe_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_BRUTALSWIPE);
- BrutalSwipe_Timer = 7000 + rand()%5000;
+ BrutalSwipe_Timer = urand(7000, 12000);
} else BrutalSwipe_Timer -= diff;
if (Mangle_Timer <= diff)
@@ -406,7 +406,7 @@ class boss_nalorakk : public CreatureScript
DoCast(me->getVictim(), SPELL_MANGLE);
Mangle_Timer = 1000;
}
- else Mangle_Timer = 10000 + rand()%5000;
+ else Mangle_Timer = urand(10000, 15000);
} else Mangle_Timer -= diff;
if (Surge_Timer <= diff)
@@ -416,7 +416,7 @@ class boss_nalorakk : public CreatureScript
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 45, true);
if (target)
DoCast(target, SPELL_SURGE);
- Surge_Timer = 15000 + rand()%5000;
+ Surge_Timer = urand(15000, 20000);
} else Surge_Timer -= diff;
}
else
@@ -424,19 +424,19 @@ class boss_nalorakk : public CreatureScript
if (LaceratingSlash_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_LACERATINGSLASH);
- LaceratingSlash_Timer = 18000 + rand()%5000;
+ LaceratingSlash_Timer = urand(18000, 23000);
} else LaceratingSlash_Timer -= diff;
if (RendFlesh_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_RENDFLESH);
- RendFlesh_Timer = 5000 + rand()%5000;
+ RendFlesh_Timer = urand(5000, 10000);
} else RendFlesh_Timer -= diff;
if (DeafeningRoar_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_DEAFENINGROAR);
- DeafeningRoar_Timer = 15000 + rand()%5000;
+ DeafeningRoar_Timer = urand(15000, 20000);
} else DeafeningRoar_Timer -= diff;
}
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp
index ae6a25d2c17..5dbe3fc9409 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp
@@ -430,7 +430,7 @@ class boss_zuljin : public CreatureScript
if (Whirlwind_Timer <= diff)
{
DoCast(me, SPELL_WHIRLWIND);
- Whirlwind_Timer = 15000 + rand()%5000;
+ Whirlwind_Timer = urand(15000, 20000);
} else Whirlwind_Timer -= diff;
if (Grievous_Throw_Timer <= diff)
@@ -489,7 +489,7 @@ class boss_zuljin : public CreatureScript
++Claw_Counter;
if (Claw_Counter == 12)
{
- Claw_Rage_Timer = 15000 + rand()%5000;
+ Claw_Rage_Timer = urand(15000, 20000);
me->SetSpeed(MOVE_RUN, 1.2f);
AttackStart(Unit::GetUnit(*me, TankGUID));
TankGUID = 0;
@@ -537,7 +537,7 @@ class boss_zuljin : public CreatureScript
++Claw_Counter;
if (Claw_Counter == 9)
{
- Lynx_Rush_Timer = 15000 + rand()%5000;
+ Lynx_Rush_Timer = urand(15000, 20000);
me->SetSpeed(MOVE_RUN, 1.2f);
AttackStart(Unit::GetUnit(*me, TankGUID));
TankGUID = 0;
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp
index c515b625e6f..5ca43e9268e 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp
@@ -66,7 +66,7 @@ class boss_gahzranka : public CreatureScript
if (Frostbreath_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_FROSTBREATH);
- Frostbreath_Timer = 7000 + rand()%4000;
+ Frostbreath_Timer = urand(7000, 11000);
} else Frostbreath_Timer -= diff;
//MassiveGeyser_Timer
@@ -75,14 +75,14 @@ class boss_gahzranka : public CreatureScript
DoCast(me->getVictim(), SPELL_MASSIVEGEYSER);
DoResetThreat();
- MassiveGeyser_Timer = 22000 + rand()%10000;
+ MassiveGeyser_Timer = urand(22000, 32000);
} else MassiveGeyser_Timer -= diff;
//Slam_Timer
if (Slam_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_SLAM);
- Slam_Timer = 12000 + rand()%8000;
+ Slam_Timer = urand(12000, 20000);
} else Slam_Timer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp
index e01dafd4777..d3922602a17 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp
@@ -47,8 +47,8 @@ class boss_grilek : public CreatureScript
void Reset()
{
- Avartar_Timer = 15000 + rand()%10000;
- GroundTremor_Timer = 8000 + rand()%8000;
+ Avartar_Timer = urand(15000, 25000);
+ GroundTremor_Timer = urand(8000, 16000);
}
void EnterCombat(Unit* /*who*/)
@@ -75,14 +75,14 @@ class boss_grilek : public CreatureScript
if (target)
AttackStart(target);
- Avartar_Timer = 25000 + rand()%10000;
+ Avartar_Timer = urand(25000, 35000);
} else Avartar_Timer -= diff;
//GroundTremor_Timer
if (GroundTremor_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_GROUNDTREMOR);
- GroundTremor_Timer = 12000 + rand()%4000;
+ GroundTremor_Timer = urand(12000, 16000);
} else GroundTremor_Timer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp
index 77b8955158a..484499b1567 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp
@@ -126,7 +126,7 @@ class boss_hakkar : public CreatureScript
if (CorruptedBlood_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_CORRUPTEDBLOOD);
- CorruptedBlood_Timer = 30000 + rand()%15000;
+ CorruptedBlood_Timer = urand(30000, 45000);
} else CorruptedBlood_Timer -= diff;
//CauseInsanity_Timer
@@ -135,7 +135,7 @@ class boss_hakkar : public CreatureScript
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_CAUSEINSANITY);
- CauseInsanity_Timer = 35000 + rand()%8000;
+ CauseInsanity_Timer = urand(35000, 43000);
} else CauseInsanity_Timer -= diff;*/
//WillOfHakkar_Timer
@@ -144,7 +144,7 @@ class boss_hakkar : public CreatureScript
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_WILLOFHAKKAR);
- WillOfHakkar_Timer = 25000 + rand()%10000;
+ WillOfHakkar_Timer = urand(25000, 35000);
} else WillOfHakkar_Timer -= diff;
if (!Enraged && Enrage_Timer <= diff)
@@ -163,7 +163,7 @@ class boss_hakkar : public CreatureScript
if (AspectOfJeklik_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_ASPECT_OF_JEKLIK);
- AspectOfJeklik_Timer = 10000 + rand()%4000;
+ AspectOfJeklik_Timer = urand(10000, 14000);
} else AspectOfJeklik_Timer -= diff;
}
}
@@ -234,7 +234,7 @@ class boss_hakkar : public CreatureScript
DoCast(me, SPELL_ASPECT_OF_ARLOKK);
DoResetThreat();
- AspectOfArlokk_Timer = 10000 + rand()%5000;
+ AspectOfArlokk_Timer = urand(10000, 15000);
} else AspectOfArlokk_Timer -= diff;
}
}
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp
index b8f4b0a50a1..73fa91dbdd8 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp
@@ -48,9 +48,9 @@ class boss_hazzarah : public CreatureScript
void Reset()
{
- ManaBurn_Timer = 4000 + rand()%6000;
- Sleep_Timer = 10000 + rand()%8000;
- Illusions_Timer = 10000 + rand()%8000;
+ ManaBurn_Timer = urand(4000, 10000);
+ Sleep_Timer = urand(10000, 18000);
+ Illusions_Timer = urand(10000, 18000);
}
void EnterCombat(Unit* /*who*/)
@@ -66,14 +66,14 @@ class boss_hazzarah : public CreatureScript
if (ManaBurn_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_MANABURN);
- ManaBurn_Timer = 8000 + rand()%8000;
+ ManaBurn_Timer = urand(8000, 16000);
} else ManaBurn_Timer -= diff;
//Sleep_Timer
if (Sleep_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_SLEEP);
- Sleep_Timer = 12000 + rand()%8000;
+ Sleep_Timer = urand(12000, 20000);
} else Sleep_Timer -= diff;
//Illusions_Timer
@@ -93,7 +93,7 @@ class boss_hazzarah : public CreatureScript
Illusion->AI()->AttackStart(target);
}
- Illusions_Timer = 15000 + rand()%10000;
+ Illusions_Timer = urand(15000, 25000);
} else Illusions_Timer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp
index fcb492d47f7..87dc0e372f6 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp
@@ -119,19 +119,19 @@ class boss_jeklik : public CreatureScript
AttackStart(target);
}
- Charge_Timer = 15000 + rand()%15000;
+ Charge_Timer = urand(15000, 30000);
} else Charge_Timer -= diff;
if (SonicBurst_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_SONICBURST);
- SonicBurst_Timer = 8000 + rand()%5000;
+ SonicBurst_Timer = urand(8000, 13000);
} else SonicBurst_Timer -= diff;
if (Screech_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_SCREECH);
- Screech_Timer = 18000 + rand()%8000;
+ Screech_Timer = urand(18000, 26000);
} else Screech_Timer -= diff;
if (SpawnBats_Timer <= diff)
@@ -168,7 +168,7 @@ class boss_jeklik : public CreatureScript
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
{
DoCast(target, SPELL_SHADOW_WORD_PAIN);
- ShadowWordPain_Timer = 12000 + rand()%6000;
+ ShadowWordPain_Timer = urand(12000, 18000);
}
}ShadowWordPain_Timer -=diff;
@@ -182,14 +182,14 @@ class boss_jeklik : public CreatureScript
{
me->InterruptNonMeleeSpells(false);
DoCast(me->getVictim(), SPELL_CHAIN_MIND_FLAY);
- ChainMindFlay_Timer = 15000 + rand()%15000;
+ ChainMindFlay_Timer = urand(15000, 30000);
}ChainMindFlay_Timer -=diff;
if (GreaterHeal_Timer <= diff)
{
me->InterruptNonMeleeSpells(false);
DoCast(me, SPELL_GREATERHEAL);
- GreaterHeal_Timer = 25000 + rand()%10000;
+ GreaterHeal_Timer = urand(25000, 35000);
}GreaterHeal_Timer -=diff;
if (SpawnFlyingBats_Timer <= diff)
@@ -202,7 +202,7 @@ class boss_jeklik : public CreatureScript
if (FlyingBat)
FlyingBat->AI()->AttackStart(target);
- SpawnFlyingBats_Timer = 10000 + rand()%5000;
+ SpawnFlyingBats_Timer = urand(10000, 15000);
} else SpawnFlyingBats_Timer -=diff;
}
else
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp
index 7c8e53038ab..9c82c3eddfb 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp
@@ -83,7 +83,7 @@ class boss_jindo : public CreatureScript
if (BrainWashTotem_Timer <= diff)
{
DoCast(me, SPELL_BRAINWASHTOTEM);
- BrainWashTotem_Timer = 18000 + rand()%8000;
+ BrainWashTotem_Timer = urand(18000, 26000);
} else BrainWashTotem_Timer -= diff;
//HealingWard_Timer
@@ -91,7 +91,7 @@ class boss_jindo : public CreatureScript
{
//DoCast(me, SPELL_POWERFULLHEALINGWARD);
me->SummonCreature(14987, me->GetPositionX()+3, me->GetPositionY()-2, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 30000);
- HealingWard_Timer = 14000 + rand()%6000;
+ HealingWard_Timer = urand(14000, 20000);
} else HealingWard_Timer -= diff;
//Hex_Timer
@@ -102,7 +102,7 @@ class boss_jindo : public CreatureScript
if (DoGetThreat(me->getVictim()))
DoModifyThreatPercent(me->getVictim(), -80);
- Hex_Timer = 12000 + rand()%8000;
+ Hex_Timer = urand(12000, 20000);
} else Hex_Timer -= diff;
//Casting the delusion curse with a shade. So shade will attack the same target with the curse.
@@ -117,7 +117,7 @@ class boss_jindo : public CreatureScript
Shade->AI()->AttackStart(target);
}
- Delusions_Timer = 4000 + rand()%8000;
+ Delusions_Timer = urand(4000, 12000);
} else Delusions_Timer -= diff;
//Teleporting a random gamer and spawning 9 skeletons that will attack this gamer
@@ -162,7 +162,7 @@ class boss_jindo : public CreatureScript
Skeletons->AI()->AttackStart(target);
}
- Teleport_Timer = 15000 + rand()%8000;
+ Teleport_Timer = urand(15000, 23000);
} else Teleport_Timer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
index f45c943b0f1..06ae34b79b2 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
@@ -149,7 +149,7 @@ class boss_mandokir : public CreatureScript
if (!CombatStart)
{
//At combat Start Mandokir is mounted so we must unmount it first
- me->Unmount();
+ me->Dismount();
//And summon his raptor
me->SummonCreature(14988, me->getVictim()->GetPositionX(), me->getVictim()->GetPositionY(), me->getVictim()->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 35000);
@@ -325,7 +325,7 @@ class mob_ohgan : public CreatureScript
if (SunderArmor_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_SUNDERARMOR);
- SunderArmor_Timer = 10000 + rand()%5000;
+ SunderArmor_Timer = urand(10000, 15000);
} else SunderArmor_Timer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp
index f6704a50e6f..5dafa54a2ba 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp
@@ -105,13 +105,13 @@ class boss_marli : public CreatureScript
if (PoisonVolley_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_POISONVOLLEY);
- PoisonVolley_Timer = 10000 + rand()%10000;
+ PoisonVolley_Timer = urand(10000, 20000);
} else PoisonVolley_Timer -= diff;
if (!PhaseTwo && Aspect_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_ASPECT_OF_MARLI);
- Aspect_Timer = 13000 + rand()%5000;
+ Aspect_Timer = urand(13000, 18000);
} else Aspect_Timer -= diff;
if (!Spawned && SpawnStartSpiders_Timer <= diff)
@@ -149,7 +149,7 @@ class boss_marli : public CreatureScript
Creature* Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
if (Spider)
Spider->AI()->AttackStart(target);
- SpawnSpider_Timer = 12000 + rand()%5000;
+ SpawnSpider_Timer = urand(12000, 17000);
} else SpawnSpider_Timer -= diff;
if (!PhaseTwo && Transform_Timer <= diff)
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp
index bbff6a55ffb..c3bf09ee28d 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp
@@ -55,11 +55,11 @@ class boss_renataki : public CreatureScript
void Reset()
{
- Invisible_Timer = 8000 + rand()%10000;
+ Invisible_Timer = urand(8000, 18000);
Ambush_Timer = 3000;
Visible_Timer = 4000;
- Aggro_Timer = 15000 + rand()%10000;
- ThousandBlades_Timer = 4000 + rand()%4000;
+ Aggro_Timer = urand(15000, 25000);
+ ThousandBlades_Timer = urand(4000, 8000);
Invisible = false;
Ambushed = false;
@@ -85,7 +85,7 @@ class boss_renataki : public CreatureScript
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
Invisible = true;
- Invisible_Timer = 15000 + rand()%15000;
+ Invisible_Timer = urand(15000, 30000);
} else Invisible_Timer -= diff;
if (Invisible)
@@ -135,13 +135,13 @@ class boss_renataki : public CreatureScript
if (target)
AttackStart(target);
- Aggro_Timer = 7000 + rand()%13000;
+ Aggro_Timer = urand(7000, 20000);
} else Aggro_Timer -= diff;
if (ThousandBlades_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_THOUSANDBLADES);
- ThousandBlades_Timer = 7000 + rand()%5000;
+ ThousandBlades_Timer = urand(7000, 12000);
} else ThousandBlades_Timer -= diff;
}
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp
index 4fbb5cd1109..743ec211529 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp
@@ -167,13 +167,13 @@ class boss_thekal : public CreatureScript
if (!PhaseTwo && MortalCleave_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_MORTALCLEAVE);
- MortalCleave_Timer = 15000 + rand()%5000;
+ MortalCleave_Timer = urand(15000, 20000);
} else MortalCleave_Timer -= diff;
if (!PhaseTwo && Silence_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_SILENCE);
- Silence_Timer = 20000 + rand()%5000;
+ Silence_Timer = urand(20000, 25000);
} else Silence_Timer -= diff;
if (!PhaseTwo && !WasDead && !HealthAbovePct(5))
@@ -226,7 +226,7 @@ class boss_thekal : public CreatureScript
AttackStart(target);
}
- Charge_Timer = 15000 + rand()%7000;
+ Charge_Timer = urand(15000, 22000);
} else Charge_Timer -= diff;
if (Frenzy_Timer <= diff)
@@ -238,13 +238,13 @@ class boss_thekal : public CreatureScript
if (ForcePunch_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_SILENCE);
- ForcePunch_Timer = 16000 + rand()%5000;
+ ForcePunch_Timer = urand(16000, 21000);
} else ForcePunch_Timer -= diff;
if (SummonTigers_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_SUMMONTIGERS);
- SummonTigers_Timer = 10000 + rand()%4000;
+ SummonTigers_Timer = urand(10000, 14000);
} else SummonTigers_Timer -= diff;
if (HealthBelowPct(11) && !Enraged)
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp
index 7288d063c21..179935524a8 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp
@@ -47,8 +47,8 @@ class boss_wushoolay : public CreatureScript
void Reset()
{
- LightningCloud_Timer = 5000 + rand()%5000;
- LightningWave_Timer = 8000 + rand()%8000;
+ LightningCloud_Timer = urand(5000, 10000);
+ LightningWave_Timer = urand(8000, 16000);
}
void EnterCombat(Unit* /*who*/)
@@ -64,7 +64,7 @@ class boss_wushoolay : public CreatureScript
if (LightningCloud_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_LIGHTNINGCLOUD);
- LightningCloud_Timer = 15000 + rand()%5000;
+ LightningCloud_Timer = urand(15000, 20000);
} else LightningCloud_Timer -= diff;
//LightningWave_Timer
@@ -74,7 +74,7 @@ class boss_wushoolay : public CreatureScript
target = SelectTarget(SELECT_TARGET_RANDOM, 0);
if (target) DoCast(target, SPELL_LIGHTNINGWAVE);
- LightningWave_Timer = 12000 + rand()%4000;
+ LightningWave_Timer = urand(12000, 16000);
} else LightningWave_Timer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/EasternKingdoms/blasted_lands.cpp b/src/server/scripts/EasternKingdoms/blasted_lands.cpp
index 048fd8dfd2a..38a577b9ba9 100644
--- a/src/server/scripts/EasternKingdoms/blasted_lands.cpp
+++ b/src/server/scripts/EasternKingdoms/blasted_lands.cpp
@@ -72,6 +72,13 @@ public:
/*######
## npc_fallen_hero_of_horde
######*/
+
+enum HeroesOfOld
+{
+ QUEST_HEROES_OF_OLD = 2702,
+ NPC_THUND_SPLITHOOF = 7750,
+};
+
#define GOSSIP_H_F1 "Why are you here?"
#define GOSSIP_H_F2 "Continue story..."
@@ -159,6 +166,14 @@ public:
return true;
}
+ bool OnQuestAccept(Player* /*player*/, Creature* creature, Quest const* quest)
+ {
+ if (quest->GetQuestId() == QUEST_HEROES_OF_OLD)
+ creature->SummonCreature(NPC_THUND_SPLITHOOF, -10630.3f, -2987.05f, 28.96f, 4.54f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 9000000);
+
+ return true;
+ }
+
};
void AddSC_blasted_lands()
diff --git a/src/server/scripts/EasternKingdoms/eversong_woods.cpp b/src/server/scripts/EasternKingdoms/eversong_woods.cpp
index d02cce3f17c..d9171308ba6 100644
--- a/src/server/scripts/EasternKingdoms/eversong_woods.cpp
+++ b/src/server/scripts/EasternKingdoms/eversong_woods.cpp
@@ -204,7 +204,7 @@ public:
if (timerJustice <= diff)
{
DoCast(me, SPELL_SEAL_OF_JUSTICE);
- timerJustice = 10000 + rand()%10000;
+ timerJustice = urand(10000, 20000);
}
else
timerJustice -= diff;
@@ -215,7 +215,7 @@ public:
if (timerJudLight <= diff)
{
DoCast(me, SPELL_JUDGEMENT_OF_LIGHT);
- timerJudLight = 10000 + rand()%10000;
+ timerJudLight = urand(10000, 20000);
}
else
timerJudLight -= diff;
@@ -226,7 +226,7 @@ public:
if (timerCommand <= diff)
{
DoCast(me, SPELL_SEAL_OF_COMMAND);
- timerCommand = 20000 + rand()%20000;
+ timerCommand = urand(20000, 40000);
}
else
timerCommand -= diff;
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp
index f681b245a42..35de4c70214 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp
@@ -105,15 +105,15 @@ public:
ai->EnterEvadeMode();
ai->Spells[0].SpellId = SPELL_BLIZZARD;
- ai->Spells[0].Cooldown = 15000 + rand()%20000;
+ ai->Spells[0].Cooldown = urand(15000, 35000);
ai->Spells[0].TargetType = TARGETTYPE_RANDOM;
ai->Spells[1].SpellId = SPELL_PYROBLAST;
- ai->Spells[1].Cooldown = 5500 + rand()%4000;
+ ai->Spells[1].Cooldown = urand(5500, 9500);
ai->Spells[1].TargetType = TARGETTYPE_RANDOM;
ai->Spells[2].SpellId = SPELL_SUMMON_ELEMENTALS;
- ai->Spells[2].Cooldown = 15000 + rand()%30000;
+ ai->Spells[2].Cooldown = urand(15000, 45000);
ai->Spells[2].TargetType = TARGETTYPE_SELF;
return ai;
@@ -187,11 +187,11 @@ public:
ai->EnterEvadeMode();
ai->Spells[0].SpellId = SPELL_CHAIN_LIGHTNING;
- ai->Spells[0].Cooldown = 3000 + rand()%5000;
+ ai->Spells[0].Cooldown = urand(3000, 8000);
ai->Spells[0].TargetType = TARGETTYPE_VICTIM;
ai->Spells[1].SpellId = SPELL_SUMMON_DIRE_WOLF;
- ai->Spells[1].Cooldown = 6000 + rand()%35000;
+ ai->Spells[1].Cooldown = urand(6000, 41000);
ai->Spells[1].TargetType = TARGETTYPE_RANDOM;
return ai;
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
index 1a43472365a..798ea3925dc 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
@@ -34,7 +34,8 @@ enum Spells
H_SPELL_MIND_BLAST = 58850,
SPELL_SLEEP = 52721, //Puts an enemy to sleep for up to 10 sec. Any damage caused will awaken the target.
H_SPELL_SLEEP = 58849,
- SPELL_VAMPIRIC_TOUCH = 52723 //Heals the caster for half the damage dealt by a melee attack.
+ SPELL_VAMPIRIC_TOUCH = 52723, //Heals the caster for half the damage dealt by a melee attack.
+ SPELL_KILL_CREDIT = 58630 // Non-existing spell as encounter credit, created in spell_dbc
};
enum Yells
@@ -237,9 +238,8 @@ public:
{
instance->SetData(DATA_MAL_GANIS_EVENT, DONE);
- // give achievement credit to players. criteria use spell 58630 which doesn't exist.
- if (instance)
- instance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, 58630);
+ // give achievement credit and LFG rewards to players. criteria use spell 58630 which doesn't exist, but it was created in spell_dbc
+ DoCast(me, SPELL_KILL_CREDIT);
}
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp
index f09308a6724..488c7195534 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp
@@ -68,9 +68,9 @@ public:
void Reset()
{
- Holy_Light_Timer = 20000 + rand()%10000;
+ Holy_Light_Timer = urand(20000, 30000);
Cleanse_Timer = 10000;
- HammerOfJustice_Timer = 20000 + rand()%15000;
+ HammerOfJustice_Timer = urand(20000, 35000);
HolyShield_Timer = 240000;
DevotionAura_Timer = 3000;
Consecration_Timer = 8000;
@@ -134,14 +134,14 @@ public:
if (DevotionAura_Timer <= diff)
{
DoCast(me, SPELL_DEVOTION_AURA);
- DevotionAura_Timer = 45000 + rand()%10000;
+ DevotionAura_Timer = urand(45000, 55000);
} else DevotionAura_Timer -= diff;
//Consecration
if (Consecration_Timer <= diff)
{
//DoCast(me->getVictim(), SPELL_CONSECRATION);
- Consecration_Timer = 5000 + rand()%5000;
+ Consecration_Timer = urand(5000, 10000);
} else Consecration_Timer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp
index 5b201e50bcb..9e6957a5e0c 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp
@@ -68,8 +68,8 @@ public:
void Reset()
{
- SandBreath_Timer = 8000 + rand()%8000;
- ImpendingDeath_Timer = 25000 + rand()%5000;
+ SandBreath_Timer = urand(8000, 16000);
+ ImpendingDeath_Timer = urand(25000, 30000);
WingBuffet_Timer = 35000;
Mda_Timer = 40000;
}
@@ -108,7 +108,7 @@ public:
DoScriptText(RAND(SAY_BREATH1, SAY_BREATH2), me);
- SandBreath_Timer = 10000 + rand()%10000;
+ SandBreath_Timer = urand(10000, 20000);
} else SandBreath_Timer -= diff;
if (ImpendingDeath_Timer <= diff)
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp
index 1f0342b3804..65ae3287381 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp
@@ -498,7 +498,7 @@ public:
}
void DoUnmount()
{
- me->Unmount();
+ me->Dismount();
me->SetSpeed(MOVE_RUN, SPEED_RUN);
}
void EnterCombat(Unit* /*who*/)
diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp
index 7ade38dba8e..fd1966d106c 100644
--- a/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp
+++ b/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp
@@ -61,7 +61,7 @@ public:
{
AmnenarsWrath_Timer = 8000;
FrostBolt_Timer = 1000;
- FrostNova_Timer = 10000 + rand()%5000;
+ FrostNova_Timer = urand(10000, 15000);
Spectrals30 = false;
Spectrals60 = false;
Hp = false;
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp
index 1a9d3f7a557..34b481c97f4 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp
@@ -65,8 +65,8 @@ public:
void Reset()
{
- Cleave_Timer = 4000 + rand()%4000;
- ToxicVolley_Timer = 6000 + rand()%6000;
+ Cleave_Timer = urand(4000, 8000);
+ ToxicVolley_Timer = urand(6000, 12000);
Check_Timer = 2000;
VemDead = false;
@@ -98,14 +98,14 @@ public:
if (Cleave_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_CLEAVE);
- Cleave_Timer = 5000 + rand()%7000;
+ Cleave_Timer = urand(5000, 12000);
} else Cleave_Timer -= diff;
//ToxicVolley_Timer
if (ToxicVolley_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_TOXIC_VOLLEY);
- ToxicVolley_Timer = 10000 + rand()%5000;
+ ToxicVolley_Timer = urand(10000, 15000);
} else ToxicVolley_Timer -= diff;
if (!HealthAbovePct(5) && !Death)
@@ -161,8 +161,8 @@ public:
void Reset()
{
- Charge_Timer = 15000 + rand()%12000;
- KnockBack_Timer = 8000 + rand()%12000;
+ Charge_Timer = urand(15000, 27000);
+ KnockBack_Timer = urand(8000, 20000);
Enrage_Timer = 120000;
Enraged = false;
@@ -202,7 +202,7 @@ public:
AttackStart(target);
}
- Charge_Timer = 8000 + rand()%8000;
+ Charge_Timer = urand(8000, 16000);
} else Charge_Timer -= diff;
//KnockBack_Timer
@@ -211,7 +211,7 @@ public:
DoCast(me->getVictim(), SPELL_KNOCKBACK);
if (DoGetThreat(me->getVictim()))
DoModifyThreatPercent(me->getVictim(), -80);
- KnockBack_Timer = 15000 + rand()%10000;
+ KnockBack_Timer = urand(15000, 25000);
} else KnockBack_Timer -= diff;
//Enrage_Timer
@@ -254,8 +254,8 @@ public:
void Reset()
{
- Heal_Timer = 25000 + rand()%15000;
- Fear_Timer = 12000 + rand()%12000;
+ Heal_Timer = urand(25000, 40000);
+ Fear_Timer = urand(12000, 24000);
Check_Timer = 2000;
VemDead = false;
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp
index 9d83bfea866..505907cd0f5 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp
@@ -63,9 +63,9 @@ public:
void Reset()
{
- MortalWound_Timer = 10000 + rand()%5000;
- SpawnHatchlings_Timer = 6000 + rand()%6000;
- SpawnSpawns_Timer = 15000 + rand()%30000;
+ MortalWound_Timer = urand(10000, 15000);
+ SpawnHatchlings_Timer = urand(6000, 12000);
+ SpawnSpawns_Timer = urand(15000, 45000);
}
void SummonSpawn(Unit* victim)
@@ -106,7 +106,7 @@ public:
if (MortalWound_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_MORTAL_WOUND);
- MortalWound_Timer = 10000 + rand()%10000;
+ MortalWound_Timer = urand(10000, 20000);
} else MortalWound_Timer -= diff;
//Summon 1-3 Spawns of Fankriss at random time.
@@ -127,7 +127,7 @@ public:
SummonSpawn(SelectTarget(SELECT_TARGET_RANDOM, 0));
break;
}
- SpawnSpawns_Timer = 30000 + rand()%30000;
+ SpawnSpawns_Timer = urand(30000, 60000);
} else SpawnSpawns_Timer -= diff;
// Teleporting Random Target to one of the three tunnels and spawn 4 hatchlings near the gamer.
@@ -194,7 +194,7 @@ public:
break;
}
}
- SpawnHatchlings_Timer = 45000 + rand()%15000;
+ SpawnHatchlings_Timer = urand(45000, 60000);
} else SpawnHatchlings_Timer -= diff;
}
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp
index f8cafea0ef2..d6d23cf7426 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp
@@ -61,11 +61,11 @@ public:
void Reset()
{
- Frenzy_Timer = 25000 + rand()%10000;
- Wyvern_Timer = 18000 + rand()%10000;
+ Frenzy_Timer = urand(25000, 35000);
+ Wyvern_Timer = urand(18000, 28000);
Spit_Timer = 8000;
PoisonBolt_Timer = 4000;
- NoxiousPoison_Timer = 10000 + rand()%10000;
+ NoxiousPoison_Timer = urand(10000, 20000);
FrenzyBack_Timer = 15000;
Frenzy = false;
@@ -89,7 +89,7 @@ public:
DoScriptText(EMOTE_GENERIC_FRENZY_KILL, me);
Frenzy = true;
PoisonBolt_Timer = 3000;
- Frenzy_Timer = 25000 + rand()%10000;
+ Frenzy_Timer = urand(25000, 35000);
} else Frenzy_Timer -= diff;
// Wyvern Timer
@@ -97,21 +97,21 @@ public:
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_WYVERNSTING);
- Wyvern_Timer = 15000 + rand()%17000;
+ Wyvern_Timer = urand(15000, 32000);
} else Wyvern_Timer -= diff;
//Spit Timer
if (Spit_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_ACIDSPIT);
- Spit_Timer = 5000 + rand()%5000;
+ Spit_Timer = urand(5000, 10000);
} else Spit_Timer -= diff;
//NoxiousPoison_Timer
if (NoxiousPoison_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_NOXIOUSPOISON);
- NoxiousPoison_Timer = 12000 + rand()%12000;
+ NoxiousPoison_Timer = urand(12000, 24000);
} else NoxiousPoison_Timer -= diff;
//PoisonBolt only if frenzy or berserk
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
index 01d26ed7726..4595e4e5095 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
@@ -59,12 +59,12 @@ public:
void Reset()
{
- Sweep_Timer = 5000 + rand()%5000;
- SandBlast_Timer = 20000 + rand()%15000;
- Submerge_Timer = 90000 + rand()%60000;
- Back_Timer = 30000 + rand()%15000;
- ChangeTarget_Timer = 5000 + rand()%3000;
- Spawn_Timer = 10000 + rand()%10000;
+ Sweep_Timer = urand(5000, 10000);
+ SandBlast_Timer = urand(20000, 35000);
+ Submerge_Timer = urand(90000, 150000);
+ Back_Timer = urand(30000, 45000);
+ ChangeTarget_Timer = urand(5000, 8000);
+ Spawn_Timer = urand(10000, 20000);
Enrage = false;
Submerged = false;
@@ -85,14 +85,14 @@ public:
if (!Submerged && Sweep_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_SWEEP);
- Sweep_Timer = 15000 + rand()%15000;
+ Sweep_Timer = urand(15000, 30000);
} else Sweep_Timer -= diff;
//SandBlast_Timer
if (!Submerged && SandBlast_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_SANDBLAST);
- SandBlast_Timer = 20000 + rand()%15000;
+ SandBlast_Timer = urand(20000, 35000);
} else SandBlast_Timer -= diff;
//Submerge_Timer
@@ -105,7 +105,7 @@ public:
DoCast(me, SPELL_DIRTMOUND_PASSIVE);
Submerged = true;
- Back_Timer = 30000 + rand()%15000;
+ Back_Timer = urand(30000, 45000);
} else Submerge_Timer -= diff;
//ChangeTarget_Timer
@@ -117,7 +117,7 @@ public:
if (target)
DoTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
- ChangeTarget_Timer = 10000 + rand()%10000;
+ ChangeTarget_Timer = urand(10000, 20000);
} else ChangeTarget_Timer -= diff;
//Back_Timer
@@ -129,7 +129,7 @@ public:
DoCast(me->getVictim(), SPELL_GROUND_RUPTURE);
Submerged = false;
- Submerge_Timer = 60000 + rand()%60000;
+ Submerge_Timer = urand(60000, 120000);
} else Back_Timer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp
index fb16d2b7319..27aa72d3e55 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp
@@ -66,9 +66,9 @@ public:
void Reset()
{
WhirlWind_Timer = 30000;
- WhirlWindRandom_Timer = 3000 + rand()%4000;
+ WhirlWindRandom_Timer = urand(3000, 7000);
WhirlWindEnd_Timer = 15000;
- AggroReset_Timer = 45000 + rand()%10000;
+ AggroReset_Timer = urand(45000, 55000);
AggroResetEnd_Timer = 5000;
EnrageHard_Timer = 10*60000;
@@ -111,13 +111,13 @@ public:
me->TauntApply(target);
AttackStart(target);
}
- WhirlWindRandom_Timer = 3000 + rand()%4000;
+ WhirlWindRandom_Timer = urand(3000, 7000);
} else WhirlWindRandom_Timer -= diff;
if (WhirlWindEnd_Timer <= diff)
{
WhirlWind = false;
- WhirlWind_Timer = 25000 + rand()%15000;
+ WhirlWind_Timer = urand(25000, 40000);
} else WhirlWindEnd_Timer -= diff;
}
@@ -140,7 +140,7 @@ public:
AttackStart(target);
}
AggroReset = true;
- AggroReset_Timer = 2000 + rand()%3000;
+ AggroReset_Timer = urand(2000, 5000);
} else AggroReset_Timer -= diff;
if (AggroReset)
@@ -149,7 +149,7 @@ public:
{
AggroReset = false;
AggroResetEnd_Timer = 5000;
- AggroReset_Timer = 35000 + rand()%10000;
+ AggroReset_Timer = urand(35000, 45000);
} else AggroResetEnd_Timer -= diff;
}
@@ -207,9 +207,9 @@ public:
void Reset()
{
WhirlWind_Timer = 30000;
- WhirlWindRandom_Timer = 3000 + rand()%4000;
+ WhirlWindRandom_Timer = urand(3000, 7000);
WhirlWindEnd_Timer = 15000;
- AggroReset_Timer = 45000 + rand()%10000;
+ AggroReset_Timer = urand(45000, 55000);
AggroResetEnd_Timer = 5000;
KnockBack_Timer = 10000;
@@ -231,7 +231,7 @@ public:
{
DoCast(me, SPELL_WHIRLWINDADD);
WhirlWind = true;
- WhirlWind_Timer = 25000 + rand()%15000;
+ WhirlWind_Timer = urand(25000, 40000);
WhirlWindEnd_Timer = 15000;
} else WhirlWind_Timer -= diff;
@@ -247,7 +247,7 @@ public:
AttackStart(target);
}
- WhirlWindRandom_Timer = 3000 + rand()%4000;
+ WhirlWindRandom_Timer = urand(3000, 7000);
} else WhirlWindRandom_Timer -= diff;
if (WhirlWindEnd_Timer <= diff)
@@ -269,13 +269,13 @@ public:
}
AggroReset = true;
- AggroReset_Timer = 2000 + rand()%3000;
+ AggroReset_Timer = urand(2000, 5000);
} else AggroReset_Timer -= diff;
if (KnockBack_Timer <= diff)
{
DoCast(me, SPELL_WHIRLWINDADD);
- KnockBack_Timer = 10000 + rand()%10000;
+ KnockBack_Timer = urand(10000, 20000);
} else KnockBack_Timer -= diff;
}
@@ -285,7 +285,7 @@ public:
{
AggroReset = false;
AggroResetEnd_Timer = 5000;
- AggroReset_Timer = 30000 + rand()%10000;
+ AggroReset_Timer = urand(30000, 40000);
} else AggroResetEnd_Timer -= diff;
}
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp
index 0ba6bdb1154..c9a9865e36e 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp
@@ -82,10 +82,10 @@ public:
void Reset()
{
- ArcaneExplosion_Timer = 6000 + rand()%6000;
+ ArcaneExplosion_Timer = urand(6000, 12000);
EarthShock_Timer = 2000;
FullFillment_Timer = 15000;
- Blink_Timer = 8000 + rand()%12000;
+ Blink_Timer = urand(8000, 20000);
Invisible_Timer = 500;
Images75 = false;
@@ -128,7 +128,7 @@ public:
if (ArcaneExplosion_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_ARCANE_EXPLOSION);
- ArcaneExplosion_Timer = 8000 + rand()%10000;
+ ArcaneExplosion_Timer = urand(8000, 18000);
} else ArcaneExplosion_Timer -= diff;
//If we are within range melee the target
@@ -171,7 +171,7 @@ public:
}
DoStopAttack();
- Blink_Timer= 20000 + rand()%20000;
+ Blink_Timer= urand(20000, 40000);
} else Blink_Timer -= diff;
int procent = (int) (me->GetHealthPct() + 0.5f);
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
index 29b92957ace..b005f9d0953 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
@@ -88,7 +88,7 @@ struct boss_twinemperorsAI : public ScriptedAI
AfterTeleport = false;
tspellcasted = false;
AfterTeleportTimer = 0;
- Abuse_Bug_Timer = 10000 + rand()%7000;
+ Abuse_Bug_Timer = urand(10000, 17000);
BugsTimer = 2000;
me->ClearUnitState(UNIT_STAT_STUNNED);
DontYellWhenDead = false;
@@ -347,7 +347,7 @@ struct boss_twinemperorsAI : public ScriptedAI
if (c)
{
CastSpellOnBug(c);
- Abuse_Bug_Timer = 10000 + rand()%7000;
+ Abuse_Bug_Timer = urand(10000, 17000);
}
else
{
@@ -407,9 +407,9 @@ public:
void Reset()
{
TwinReset();
- UpperCut_Timer = 14000 + rand()%15000;
- UnbalancingStrike_Timer = 8000 + rand()%10000;
- Scarabs_Timer = 7000 + rand()%7000;
+ UpperCut_Timer = urand(14000, 29000);
+ UnbalancingStrike_Timer = urand(8000, 18000);
+ Scarabs_Timer = urand(7000, 14000);
//Added. Can be removed if its included in DB.
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
@@ -495,9 +495,9 @@ public:
{
TwinReset();
ShadowBolt_Timer = 0;
- Blizzard_Timer = 15000 + rand()%5000;
+ Blizzard_Timer = urand(15000, 20000);
ArcaneBurst_Timer = 1000;
- Scorpions_Timer = 7000 + rand()%7000;
+ Scorpions_Timer = urand(7000, 14000);
//Added. Can be removed if its included in DB.
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
diff --git a/src/server/scripts/Kalimdor/azuremyst_isle.cpp b/src/server/scripts/Kalimdor/azuremyst_isle.cpp
index 57ff1448a7e..1898186f615 100644
--- a/src/server/scripts/Kalimdor/azuremyst_isle.cpp
+++ b/src/server/scripts/Kalimdor/azuremyst_isle.cpp
@@ -243,7 +243,7 @@ public:
void Reset()
{
Dynamite_Timer = 8000;
- Emote_Timer = 120000 + rand()%30000;
+ Emote_Timer = urand(120000, 150000);
me->setFaction(NormFaction);
me->SetUInt32Value(UNIT_NPC_FLAGS, NpcFlags);
@@ -264,7 +264,7 @@ public:
{
DoScriptText(SAY_TEXT, me);
DoScriptText(SAY_EMOTE, me);
- Emote_Timer = 120000 + rand()%30000;
+ Emote_Timer = urand(120000, 150000);
} else Emote_Timer -= diff;
}
else if (IsTreeEvent)
diff --git a/src/server/scripts/Kalimdor/boss_azuregos.cpp b/src/server/scripts/Kalimdor/boss_azuregos.cpp
index 6bbc29dcc56..19b5e36e113 100644
--- a/src/server/scripts/Kalimdor/boss_azuregos.cpp
+++ b/src/server/scripts/Kalimdor/boss_azuregos.cpp
@@ -62,11 +62,11 @@ public:
void Reset()
{
MarkOfFrost_Timer = 35000;
- ManaStorm_Timer = 5000 + rand()%12000;
- Chill_Timer = 10000 + rand()%20000;
- Breath_Timer = 2000 + rand()%6000;
+ ManaStorm_Timer = urand(5000, 17000);
+ Chill_Timer = urand(10000, 30000);
+ Breath_Timer = urand(2000, 8000);
Teleport_Timer = 30000;
- Reflect_Timer = 15000 + rand()%15000;
+ Reflect_Timer = urand(15000, 30000);
Cleave_Timer = 7000;
Enrage_Timer = 0;
Enraged = false;
@@ -109,14 +109,14 @@ public:
if (Chill_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_CHILL);
- Chill_Timer = 13000 + rand()%12000;
+ Chill_Timer = urand(13000, 25000);
} else Chill_Timer -= diff;
//Breath_Timer
if (Breath_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_FROSTBREATH);
- Breath_Timer = 10000 + rand()%5000;
+ Breath_Timer = urand(10000, 15000);
} else Breath_Timer -= diff;
//ManaStorm_Timer
@@ -124,14 +124,14 @@ public:
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_MANASTORM);
- ManaStorm_Timer = 7500 + rand()%5000;
+ ManaStorm_Timer = urand(7500, 12500);
} else ManaStorm_Timer -= diff;
//Reflect_Timer
if (Reflect_Timer <= diff)
{
DoCast(me, SPELL_REFLECT);
- Reflect_Timer = 20000 + rand()%15000;
+ Reflect_Timer = urand(20000, 35000);
} else Reflect_Timer -= diff;
//Cleave_Timer
diff --git a/src/server/scripts/Kalimdor/desolace.cpp b/src/server/scripts/Kalimdor/desolace.cpp
index 71372f1d9e4..5badc7fe725 100644
--- a/src/server/scripts/Kalimdor/desolace.cpp
+++ b/src/server/scripts/Kalimdor/desolace.cpp
@@ -25,6 +25,9 @@ EndScriptData */
/* ContentData
npc_aged_dying_ancient_kodo
+go_iruxos
+npc_dalinda_malem
+go_demon_portal
EndContentData */
#include "ScriptPCH.h"
@@ -168,22 +171,28 @@ public:
};
/*######
-## go_iruxos. Quest 5381
+## go_iruxos
+## Hand of Iruxos
######*/
+enum
+{
+ QUEST_HAND_IRUXOS = 5381,
+ NPC_DEMON_SPIRIT = 11876,
+};
+
class go_iruxos : public GameObjectScript
{
-public:
- go_iruxos() : GameObjectScript("go_iruxos") { }
+ public:
+ go_iruxos() : GameObjectScript("go_iruxos") { }
- bool OnGossipHello(Player* player, GameObject* /*pGO*/)
- {
- if (player->GetQuestStatus(5381) == QUEST_STATUS_INCOMPLETE)
- player->SummonCreature(11876, player->GetInnPosX(), player->GetInnPosY(), player->GetInnPosZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000);
+ bool OnGossipHello(Player* player, GameObject* go)
+ {
+ if (player->GetQuestStatus(QUEST_HAND_IRUXOS) == QUEST_STATUS_INCOMPLETE && !go->FindNearestCreature(NPC_DEMON_SPIRIT, 25.0f, true))
+ player->SummonCreature(NPC_DEMON_SPIRIT, go->GetPositionX(), go->GetPositionY(), go->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000);
return true;
- }
-
+ }
};
/*######
@@ -254,7 +263,34 @@ public:
DoMeleeAttackIfReady();
}
};
+};
+
+/*######
+## go_demon_portal
+######*/
+enum DemonPortal
+{
+ NPC_DEMON_GUARDIAN = 11937,
+
+ QUEST_PORTAL_OF_THE_LEGION = 5581,
+};
+
+class go_demon_portal : public GameObjectScript
+{
+ public:
+ go_demon_portal() : GameObjectScript("go_demon_portal") { }
+
+ bool OnGossipHello(Player* player, GameObject* go)
+ {
+ if (player->GetQuestStatus(QUEST_PORTAL_OF_THE_LEGION) == QUEST_STATUS_INCOMPLETE && !go->FindNearestCreature(NPC_DEMON_GUARDIAN, 5.0f, true))
+ {
+ if (Creature* guardian = player->SummonCreature(NPC_DEMON_GUARDIAN, go->GetPositionX(), go->GetPositionY(), go->GetPositionZ(), 0.0f, TEMPSUMMON_DEAD_DESPAWN, 0))
+ guardian->AI()->AttackStart(player);
+ }
+
+ return true;
+ }
};
void AddSC_desolace()
@@ -262,4 +298,5 @@ void AddSC_desolace()
new npc_aged_dying_ancient_kodo();
new go_iruxos();
new npc_dalinda();
+ new go_demon_portal();
}
diff --git a/src/server/scripts/Kalimdor/durotar.cpp b/src/server/scripts/Kalimdor/durotar.cpp
index 1f64353901c..d6d2d633890 100644
--- a/src/server/scripts/Kalimdor/durotar.cpp
+++ b/src/server/scripts/Kalimdor/durotar.cpp
@@ -400,7 +400,7 @@ class npc_troll_volunteer : public CreatureScript
DoCast(me, SPELL_TURNIN);
DoCast(me, SPELL_QUEST_CREDIT);
me->RemoveAurasDueToSpell(SPELL_MOUNTING_CHECK);
- me->Unmount();
+ me->Dismount();
Talk(SAY_VOLUNTEER_END);
me->GetMotionMaster()->MovePoint(POINT_URUZIN, caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ());
}
@@ -447,7 +447,7 @@ class spell_mount_check : public SpellScriptLoader
target->Mount(mountid);
}
else if (!owner->IsMounted() && target->IsMounted())
- target->Unmount();
+ target->Dismount();
target->SetSpeed(MOVE_RUN, owner->GetSpeedRate(MOVE_RUN));
target->SetSpeed(MOVE_WALK, owner->GetSpeedRate(MOVE_WALK));
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp
index fd84c1eec8a..f73e9779248 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp
@@ -54,8 +54,10 @@ enum eSpells
SPELL_BLACK_KNIGHT_RES = 67693,
- SPELL_LEAP = 67749,
- SPELL_LEAP_H = 67880
+ SPELL_LEAP = 67749,
+ SPELL_LEAP_H = 67880,
+
+ SPELL_KILL_CREDIT = 68663
};
enum eModels
@@ -288,6 +290,8 @@ public:
void JustDied(Unit* /*killer*/)
{
+ DoCast(me, SPELL_KILL_CREDIT);
+
if (instance)
instance->SetData(BOSS_BLACK_KNIGHT, DONE);
}
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
index 2fbe381fed5..2f6a01e73d7 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
@@ -839,7 +839,8 @@ public:
if (target && me->IsInRange(target, 5.0f, 30.0f, false))
{
DoCast(target, SPELL_MULTI_SHOT);
- } else
+ }
+ else
{
Map::PlayerList const& players = me->GetMap()->GetPlayers();
if (me->GetMap()->IsDungeon() && !players.isEmpty())
@@ -849,7 +850,7 @@ public:
Player* player = itr->getSource();
if (player && !player->isGameMaster() && me->IsInRange(player, 5.0f, 30.0f, false))
{
- DoCast(target, SPELL_MULTI_SHOT);
+ DoCast(player, SPELL_MULTI_SHOT);
break;
}
}
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
index e552341fd1e..d877bbd0842 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
@@ -237,7 +237,8 @@ public:
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
if (Player* player = i->getSource())
player->DeMorph();
- instance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2, SPELL_ACHIEVEMENT_CHECK);
+
+ DoCast(me, SPELL_ACHIEVEMENT_CHECK);
instance->SetData(DATA_THARON_JA_EVENT, DONE);
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
index eacb800f15a..1e29ec55dc8 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
@@ -215,7 +215,6 @@ class mob_corrupted_soul_fragment : public CreatureScript
if (Creature* bronjahm = ObjectAccessor::GetCreature(*me, BronjahmGUID))
me->CastSpell(bronjahm, SPELL_CONSUME_SOUL, true);
- summ->GetMotionMaster()->MoveIdle();
summ->UnSummon();
}
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
index c2107e88b2e..9096282c3f6 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
@@ -111,7 +111,7 @@ public:
{
_EnterCombat();
DoScriptText(SAY_AGGRO, me);
- events.ScheduleEvent(EVENT_IMPALE, 10000 + rand()%10000);
+ events.ScheduleEvent(EVENT_IMPALE, urand(10000, 20000));
events.ScheduleEvent(EVENT_LOCUST, 90000);
events.ScheduleEvent(EVENT_BERSERK, 600000);
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
index 04627981ef3..b7d74c02dd8 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
@@ -107,7 +107,7 @@ public:
events.ScheduleEvent(EVENT_CURSE, 10000+rand()%15000);
events.ScheduleEvent(EVENT_WARRIOR, 30000);
if (GetDifficulty() == RAID_DIFFICULTY_25MAN_NORMAL)
- events.ScheduleEvent(EVENT_BLINK, 20000 + rand()%20000);
+ events.ScheduleEvent(EVENT_BLINK, urand(20000, 40000));
}
}
@@ -153,7 +153,7 @@ public:
{
case EVENT_CURSE:
DoCastAOE(SPELL_CURSE_PLAGUEBRINGER);
- events.ScheduleEvent(EVENT_CURSE, 50000 + rand()%10000);
+ events.ScheduleEvent(EVENT_CURSE, urand(50000, 60000));
return;
case EVENT_WARRIOR:
DoScriptText(SAY_SUMMON, me);
@@ -173,7 +173,7 @@ public:
me->RemoveAllAuras();
me->NearTeleportTo(TELE_X, TELE_Y, TELE_Z, TELE_O);
events.Reset();
- events.ScheduleEvent(EVENT_WAVE, 2000 + rand()%3000);
+ events.ScheduleEvent(EVENT_WAVE, urand(2000, 5000));
waveCount = 0;
return;
case EVENT_WAVE:
@@ -188,7 +188,7 @@ public:
SummonUndead(MOB_GUARDIAN, RAID_MODE(5, 10));break;
}
++waveCount;
- events.ScheduleEvent(waveCount < 2 ? EVENT_WAVE : EVENT_GROUND, 30000 + rand()%15000);
+ events.ScheduleEvent(waveCount < 2 ? EVENT_WAVE : EVENT_GROUND, urand(30000, 45000));
return;
case EVENT_GROUND:
{
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp
index 8c97766f787..5e2b6551f84 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp
@@ -131,7 +131,7 @@ public:
m_uiChargingStatus = 0;
m_uiCharge_Timer = 1000;
- m_uiChangeStance_Timer = 20000 + rand()%5000;
+ m_uiChangeStance_Timer = urand(20000, 25000);
m_uiReflection_Timer = 8000;
m_uiKnockAway_Timer = 20000;
@@ -252,7 +252,7 @@ public:
break;
}
- m_uiChangeStance_Timer = 20000 + rand()%5000;
+ m_uiChangeStance_Timer = urand(20000, 25000);
return;
}
else
@@ -265,7 +265,7 @@ public:
if (m_uiReflection_Timer <= uiDiff)
{
DoCast(me, SPELL_SPELL_REFLECTION);
- m_uiReflection_Timer = 8000 + rand()%1000;
+ m_uiReflection_Timer = urand(8000, 9000);
}
else
m_uiReflection_Timer -= uiDiff;
@@ -273,7 +273,7 @@ public:
if (m_uiKnockAway_Timer <= uiDiff)
{
DoCast(me, SPELL_KNOCK_AWAY);
- m_uiKnockAway_Timer = 20000 + rand()%1000;
+ m_uiKnockAway_Timer = urand(20000, 21000);
}
else
m_uiKnockAway_Timer -= uiDiff;
@@ -281,7 +281,7 @@ public:
if (m_uiPummel_Timer <= uiDiff)
{
DoCast(me->getVictim(), SPELL_PUMMEL);
- m_uiPummel_Timer = 10000 + rand()%1000;
+ m_uiPummel_Timer = urand(10000, 11000);
}
else
m_uiPummel_Timer -= uiDiff;
@@ -289,7 +289,7 @@ public:
if (m_uiIronform_Timer <= uiDiff)
{
DoCast(me, SPELL_IRONFORM);
- m_uiIronform_Timer = 25000 + rand()%1000;
+ m_uiIronform_Timer = urand(25000, 26000);
}
else
m_uiIronform_Timer -= uiDiff;
@@ -302,7 +302,7 @@ public:
{
//not much point is this, better random target and more often?
DoCast(me->getVictim(), SPELL_INTERCEPT);
- m_uiIntercept_Timer = 45000 + rand()%1000;
+ m_uiIntercept_Timer = urand(45000, 46000);
}
else
m_uiIntercept_Timer -= uiDiff;
@@ -310,7 +310,7 @@ public:
if (m_uiWhirlwind_Timer <= uiDiff)
{
DoCast(me, SPELL_WHIRLWIND);
- m_uiWhirlwind_Timer = 10000 + rand()%1000;
+ m_uiWhirlwind_Timer = urand(10000, 11000);
}
else
m_uiWhirlwind_Timer -= uiDiff;
@@ -318,7 +318,7 @@ public:
if (m_uiCleave_Timer <= uiDiff)
{
DoCast(me->getVictim(), SPELL_CLEAVE);
- m_uiCleave_Timer = 8000 + rand()%1000;
+ m_uiCleave_Timer = urand(8000, 9000);
}
else
m_uiCleave_Timer -= uiDiff;
@@ -330,7 +330,7 @@ public:
if (m_uiMortalStrike_Timer <= uiDiff)
{
DoCast(me->getVictim(), SPELL_MORTAL_STRIKE);
- m_uiMortalStrike_Timer = 20000 + rand()%1000;
+ m_uiMortalStrike_Timer = urand(20000, 21000);
}
else
m_uiMortalStrike_Timer -= uiDiff;
@@ -338,7 +338,7 @@ public:
if (m_uiSlam_Timer <= uiDiff)
{
DoCast(me->getVictim(), SPELL_SLAM);
- m_uiSlam_Timer = 15000 + rand()%1000;
+ m_uiSlam_Timer = urand(15000, 16000);
}
else
m_uiSlam_Timer -= uiDiff;
@@ -381,8 +381,8 @@ public:
void Reset()
{
- m_uiArcWeld_Timer = 20000 + rand()%1000;
- m_uiRenewSteel_Timer = 10000 + rand()%1000;
+ m_uiArcWeld_Timer = urand(20000, 21000);
+ m_uiRenewSteel_Timer = urand(10000, 11000);
}
void EnterCombat(Unit* who)
@@ -406,7 +406,7 @@ public:
if (m_uiArcWeld_Timer <= uiDiff)
{
DoCast(me->getVictim(), SPELL_ARC_WELD);
- m_uiArcWeld_Timer = 20000 + rand()%1000;
+ m_uiArcWeld_Timer = urand(20000, 21000);
}
else
m_uiArcWeld_Timer -= uiDiff;
@@ -421,7 +421,7 @@ public:
DoCast(pBjarngrim, SPELL_RENEW_STEEL_N);
}
}
- m_uiRenewSteel_Timer = 10000 + rand()%4000;
+ m_uiRenewSteel_Timer = urand(10000, 14000);
}
else
m_uiRenewSteel_Timer -= uiDiff;
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp
index a5ea1868686..d90704dd352 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp
@@ -183,7 +183,7 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_ARC_LIGHTNING);
- m_uiArcLightning_Timer = 15000 + rand()%1000;
+ m_uiArcLightning_Timer = urand(15000, 16000);
}
else
m_uiArcLightning_Timer -= uiDiff;
@@ -196,7 +196,7 @@ public:
m_bIsAura = false;
m_uiResumePulsingShockwave_Timer = DUNGEON_MODE(5000, 4000); // Pause Pulsing Shockwave aura
- m_uiLightningNova_Timer = 20000 + rand()%1000;
+ m_uiLightningNova_Timer = urand(20000, 21000);
}
else
m_uiLightningNova_Timer -= uiDiff;
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
index 375862c141c..65b5d3eaad1 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
@@ -80,10 +80,10 @@ public:
{
bIsSlam = false;
- uiBoulderTossTimer = 3000 + rand()%6000;
- uiGroundSpikeTimer = 9000 + rand()%5000;
- uiGroundSlamTimer = 15000 + rand()%3000;
- uiStompTimer = 20000 + rand()%9000;
+ uiBoulderTossTimer = urand(3000, 9000);
+ uiGroundSpikeTimer = urand(9000, 14000);
+ uiGroundSlamTimer = urand(15000, 18000);
+ uiStompTimer = urand(20000, 29000);
uiShatterTimer = 0;
if (instance)
@@ -107,20 +107,20 @@ public:
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(target, SPELL_BOULDER_TOSS);
- uiBoulderTossTimer = 9000 + rand()%6000;
+ uiBoulderTossTimer = urand(9000, 15000);
} else uiBoulderTossTimer -= diff;
if (uiGroundSpikeTimer <= diff)
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(target, SPELL_GROUND_SPIKE);
- uiGroundSpikeTimer = 12000 + rand()%5000;
+ uiGroundSpikeTimer = urand(12000, 17000);
} else uiGroundSpikeTimer -= diff;
if (uiStompTimer <= diff)
{
DoCast(me, SPELL_STOMP);
- uiStompTimer = 20000 + rand()%9000;
+ uiStompTimer = urand(20000, 29000);
} else uiStompTimer -= diff;
if (uiGroundSlamTimer <= diff)
@@ -128,7 +128,7 @@ public:
DoCast(me, SPELL_GROUND_SLAM);
bIsSlam = true;
uiShatterTimer = 10000;
- uiGroundSlamTimer = 15000 + rand()%3000;
+ uiGroundSlamTimer = urand(15000, 18000);
} else uiGroundSlamTimer -= diff;
if (bIsSlam)
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp
index 4ab09dbf67a..4f512089119 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp
@@ -79,10 +79,10 @@ public:
void Reset()
{
- PartingSorrowTimer = 25000 + rand()%5000;
+ PartingSorrowTimer = urand(25000, 30000);
StormOfGriefTimer = 10000;
ShockOfSorrowTimer = 20000+rand()%5000;
- PillarOfWoeTimer = 5000 + rand()%10000;
+ PillarOfWoeTimer = urand(5000, 15000);
if (instance)
{
@@ -124,14 +124,14 @@ public:
if (target)
DoCast(target, SPELL_PARTING_SORROW);
- PartingSorrowTimer = 30000 + rand()%10000;
+ PartingSorrowTimer = urand(30000, 40000);
} else PartingSorrowTimer -= diff;
}
if (StormOfGriefTimer <= diff)
{
DoCast(me->getVictim(), SPELL_STORM_OF_GRIEF_N, true);
- StormOfGriefTimer = 15000 + rand()%5000;
+ StormOfGriefTimer = urand(15000, 20000);
} else StormOfGriefTimer -= diff;
if (ShockOfSorrowTimer <= diff)
@@ -139,7 +139,7 @@ public:
DoResetThreat();
DoScriptText(SAY_STUN, me);
DoCast(me, SPELL_SHOCK_OF_SORROW_N);
- ShockOfSorrowTimer = 20000 + rand()%10000;
+ ShockOfSorrowTimer = urand(20000, 30000);
} else ShockOfSorrowTimer -= diff;
if (PillarOfWoeTimer <= diff)
@@ -151,7 +151,7 @@ public:
else
DoCast(me->getVictim(), SPELL_PILLAR_OF_WOE_N);
- PillarOfWoeTimer = 5000 + rand()%20000;
+ PillarOfWoeTimer = urand(5000, 25000);
} else PillarOfWoeTimer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
index 41dcd77d4bc..dd61fe549c3 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
@@ -115,10 +115,10 @@ public:
bIsFrenzy = false;
uiEncounterTimer = 0;
- uiChainLightningTimer = 3000 + rand()%5000;
- uiLightningShieldTimer = 20000 + rand()%5000;
- uiStaticChargeTimer = 20000 + rand()%5000;
- uiLightningRingTimer = 30000 + rand()%5000;
+ uiChainLightningTimer = urand(3000, 8000);
+ uiLightningShieldTimer = urand(20000, 25000);
+ uiStaticChargeTimer = urand(20000, 25000);
+ uiLightningRingTimer = urand(30000, 35000);
uiSummonTimer = 5000;
uiFrenzyTimer = 300000; //5 minutes
abuseTheOoze = 0;
@@ -158,7 +158,7 @@ public:
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(target, SPELL_CHAIN_LIGHTING);
- uiChainLightningTimer = 10000 + rand()%5000;
+ uiChainLightningTimer = urand(10000, 15000);
} else uiChainLightningTimer -= diff;
if (uiLightningShieldTimer <= diff)
@@ -170,7 +170,7 @@ public:
if (uiStaticChargeTimer <= diff)
{
DoCast(me->getVictim(), SPELL_STATIC_CHARGE);
- uiStaticChargeTimer = 20000 + rand()%5000;
+ uiStaticChargeTimer = urand(20000, 25000);
} uiStaticChargeTimer -= diff;
if (uiLightningRingTimer <= diff)
@@ -178,7 +178,7 @@ public:
if (me->IsNonMeleeSpellCasted(false))
me->InterruptNonMeleeSpells(false);
DoCast(me, SPELL_LIGHTING_RING);
- uiLightningRingTimer = 30000 + rand()%5000;
+ uiLightningRingTimer = urand(30000, 35000);
} else uiLightningRingTimer -= diff;
if (uiSummonTimer <= diff)
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp
index ec1464a5d6f..273a0bf6f8e 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp
@@ -239,7 +239,7 @@ public:
summon->CastSpell(target, DUNGEON_MODE(SPELL_DARK_MATTER, H_SPELL_DARK_MATTER), true);
}
}
- uiMarnakEncounterTimer = 30000 + rand()%1000;
+ uiMarnakEncounterTimer = urand(30000, 31000);
} else uiMarnakEncounterTimer -= diff;
}
if (bAbedneumActivated)
@@ -255,7 +255,7 @@ public:
summon->CastSpell(target, DUNGEON_MODE(SPELL_SEARING_GAZE, H_SPELL_SEARING_GAZE), true);
}
}
- uiAbedneumEncounterTimer = 30000 + rand()%1000;
+ uiAbedneumEncounterTimer = urand(30000, 31000);
} else uiAbedneumEncounterTimer -= diff;
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon.cpp
index 3888cc43bc9..1892702d336 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon.cpp
@@ -143,7 +143,7 @@ public:
uiPhase_timer = 0;
Ascend_Timer = 480000; //8 minutes
- QuantumStrike_Timer = 4000 + rand()%10000;
+ QuantumStrike_Timer = urand(4000, 14000);
Berserk_Timer = 360000; //6 minutes
CollapsingStar_Timer = urand(15000, 20000); //Spawns between 15 to 20 seconds
BigBang_Timer = 90000;
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
index dc2d34326a7..3712bd748a5 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
@@ -173,7 +173,11 @@ public:
DoScriptText(YELL_DEAD_2, me);
if (instance)
+ {
+ // Ingvar has MOB_INGVAR_UNDEAD id in this moment, so we have to update encounter state for his original id
+ instance->UpdateEncounterState(ENCOUNTER_CREDIT_KILL_CREATURE, MOB_INGVAR_HUMAN, me);
instance->SetData(DATA_INGVAR_EVENT, DONE);
+ }
}
void KilledUnit(Unit* /*victim*/)
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
index 7b459e7410d..f31271b825e 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
@@ -218,7 +218,7 @@ public:
void JustReachedHome()
{
me->SetFlying(false);
- me->Unmount();
+ me->Dismount();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
if (Unit::GetCreature((*me), m_uiGraufGUID) == NULL)
me->SummonCreature(CREATURE_GRAUF, Location[0].GetPositionX(), Location[0].GetPositionY(), Location[0].GetPositionZ(), 3.0f);
@@ -285,7 +285,7 @@ public:
{
Phase = SKADI;
me->SetFlying(false);
- me->Unmount();
+ me->Dismount();
if (Creature* pGrauf = me->SummonCreature(CREATURE_GRAUF, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3*IN_MILLISECONDS))
{
pGrauf->GetMotionMaster()->MoveFall(0);
diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp
index a9f84016a04..71de7177e2b 100644
--- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp
+++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp
@@ -340,7 +340,7 @@ public:
if (Mortal_Strike_timer <= diff)
{
DoCast(me->getVictim(), SPELL_AV_MORTAL_STRIKE);
- Mortal_Strike_timer = 10000 + rand()%20 * 1000;
+ Mortal_Strike_timer = urand(10, 30) * 1000;
} else Mortal_Strike_timer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp
index 829f681982f..8a7eefbf633 100644
--- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp
@@ -162,20 +162,20 @@ public:
me->InterruptNonMeleeSpells(true);
DoCast(me, SPELL_FROSTNOVA);
- FrostNova_Timer = 17500 + rand()%7500;
+ FrostNova_Timer = urand(17500, 25000);
CanBlink = true;
} else FrostNova_Timer -= diff;
if (Frostbolt_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_FROSTBOLT);
- Frostbolt_Timer = 4500 + rand()%1500;
+ Frostbolt_Timer = urand(4500, 6000);
} else Frostbolt_Timer -= diff;
if (FireBall_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_FIREBALL);
- FireBall_Timer = 4500 + rand()%1500;
+ FireBall_Timer = urand(4500, 6000);
} else FireBall_Timer -= diff;
if (CanBlink)
@@ -191,7 +191,7 @@ public:
me->GetMotionMaster()->MovementExpired();
DoCast(me, SPELL_BLINK);
- Blink_Timer = 1000 + rand()%1500;
+ Blink_Timer = urand(1000, 2500);
CanBlink = false;
} else Blink_Timer -= diff;
}
@@ -290,7 +290,7 @@ public:
if (ArcaneBolt_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_ARCANE_BOLT);
- ArcaneBolt_Timer = 2000 + rand()%2500;
+ ArcaneBolt_Timer = urand(2000, 4500);
} else ArcaneBolt_Timer -= diff;
if (Apprentice_Timer <= diff)
diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp
index 43171eda1af..e744cd0f8fb 100644
--- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp
+++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp
@@ -157,7 +157,7 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_FLAME_SHOCK);
- flameshock_timer = 10000 + rand()%5000;
+ flameshock_timer = urand(10000, 15000);
} else flameshock_timer -= diff;
if (arcaneshock_timer <= diff)
@@ -165,7 +165,7 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_ARCANE_SHOCK);
- arcaneshock_timer = 10000 + rand()%5000;
+ arcaneshock_timer = urand(10000, 15000);
} else arcaneshock_timer -= diff;
if (frostshock_timer <= diff)
@@ -173,7 +173,7 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_FROST_SHOCK);
- frostshock_timer = 10000 + rand()%5000;
+ frostshock_timer = urand(10000, 15000);
} else frostshock_timer -= diff;
if (shadowshock_timer <= diff)
@@ -181,7 +181,7 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_SHADOW_SHOCK);
- shadowshock_timer = 10000 + rand()%5000;
+ shadowshock_timer = urand(10000, 15000);
} else shadowshock_timer -= diff;
if (chainlightning_timer <= diff)
diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp
index 8f1453e51ee..7ffc203f694 100644
--- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp
@@ -74,8 +74,8 @@ public:
void Reset()
{
EventCheck_Timer = 5000;
- CorrosiveAcid_Timer = 5000 + rand()%5000;
- Fear_Timer = 25000 + rand()%5000;
+ CorrosiveAcid_Timer = urand(5000, 10000);
+ Fear_Timer = urand(25000, 30000);
Enrage_Timer = 180000;
Intro = false;
IsBanished = true;
@@ -182,13 +182,13 @@ public:
if (CorrosiveAcid_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_CORROSIVE_ACID);
- CorrosiveAcid_Timer = 15000 + rand()%10000;
+ CorrosiveAcid_Timer = urand(15000, 25000);
} else CorrosiveAcid_Timer -= diff;
if (Fear_Timer <= diff)
{
DoCast(me, SPELL_FEAR);
- Fear_Timer = 20000 + rand()%15000;
+ Fear_Timer = urand(20000, 35000);
} else Fear_Timer -= diff;
if (IsHeroic())
diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp
index 1987c1bb01a..dd5df358d53 100644
--- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp
@@ -152,14 +152,14 @@ public:
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_CHARGE);
- Charge_Timer = 15000 + rand()%10000;
+ Charge_Timer = urand(15000, 25000);
} else Charge_Timer -= diff;
//Knockback_Timer
if (Knockback_Timer <= diff)
{
DoCast(me, SPELL_WAR_STOMP);
- Knockback_Timer = 18000 + rand()%6000;
+ Knockback_Timer = urand(18000, 24000);
} else Knockback_Timer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp
index 6d3a5f181d4..8cf8d61b845 100644
--- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp
@@ -165,7 +165,7 @@ public:
void Reset()
{
- ShadowBoltVolley_Timer = 7000 + rand()%7000;
+ ShadowBoltVolley_Timer = urand(7000, 14000);
DrawShadows_Timer = 45000;
summonTraveler_Timer = 90000;
banish_Timer = 17000;
@@ -269,7 +269,7 @@ public:
if (ShadowBoltVolley_Timer <= diff)
{
DoCast(me, SPELL_SHADOWBOLT_VOLLEY);
- ShadowBoltVolley_Timer = 15000 + rand()%15000;
+ ShadowBoltVolley_Timer = urand(15000, 30000);
} else ShadowBoltVolley_Timer -= diff;
if (IsHeroic() && banish_Timer <= diff)
diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp
index bd6539335c8..ebb279f74ac 100644
--- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp
@@ -64,9 +64,9 @@ public:
void Reset()
{
SonicBoom_Timer = 30000;
- MurmursTouch_Timer = 8000 + rand()%12000;
+ MurmursTouch_Timer = urand(8000, 20000);
Resonance_Timer = 5000;
- MagneticPull_Timer = 15000 + rand()%15000;
+ MagneticPull_Timer = urand(15000, 30000);
ThunderingStorm_Timer = 15000;
SonicShock_Timer = 10000;
SonicBoom = false;
@@ -133,7 +133,7 @@ public:
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 80, true))
DoCast(target, SPELL_MURMURS_TOUCH);
- MurmursTouch_Timer = 25000 + rand()%10000;
+ MurmursTouch_Timer = urand(25000, 35000);
} else MurmursTouch_Timer -= diff;
// Resonance
diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
index ec7f9a8e070..c28fe68d9e0 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
@@ -646,7 +646,7 @@ public:
case PHASE_NORMAL_MAIEV:
AttackStart(me->getVictim());
Timer[EVENT_TAUNT] = 32000;
- Timer[EVENT_SHEAR] = 10000 + rand()%15 * 1000;
+ Timer[EVENT_SHEAR] = urand(10, 25) * 1000;
Timer[EVENT_FLAME_CRASH] = 20000;
Timer[EVENT_PARASITIC_SHADOWFIEND] = 25000;
Timer[EVENT_PARASITE_CHECK] = 0;
@@ -657,14 +657,14 @@ public:
Timer[EVENT_TRANSFORM_NORMAL] = 60000;
if (NextPhase == PHASE_NORMAL_2)
break;
- Timer[EVENT_ENRAGE] = 30000 + rand()%10 * 1000;
+ Timer[EVENT_ENRAGE] = urand(30, 40) * 1000;
break;
case PHASE_FLIGHT:
Timer[EVENT_FIREBALL] = 1000;
if (!(rand()%4))
Timer[EVENT_DARK_BARRAGE] = 10000;
- Timer[EVENT_EYE_BLAST] = 10000 + rand()%15 * 1000;
- Timer[EVENT_MOVE_POINT] = 20000 + rand()%20 * 1000;
+ Timer[EVENT_EYE_BLAST] = urand(10, 25) * 1000;
+ Timer[EVENT_MOVE_POINT] = urand(20, 40) * 1000;
break;
case PHASE_DEMON:
Timer[EVENT_SHADOW_BLAST] = 1000;
@@ -1022,7 +1022,7 @@ public:
if (soundid)
DoPlaySoundToSet(me, soundid);
}
- Timer[EVENT_TAUNT] = 25000 + rand()%10000;
+ Timer[EVENT_TAUNT] = urand(25000, 35000);
break;
case EVENT_SHEAR:
@@ -1033,14 +1033,14 @@ public:
case EVENT_FLAME_CRASH:
DoCast(me->getVictim(), SPELL_FLAME_CRASH);
- Timer[EVENT_FLAME_CRASH] = 30000 + rand()%10000;
+ Timer[EVENT_FLAME_CRASH] = urand(30000, 40000);
break;
case EVENT_PARASITIC_SHADOWFIEND:
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 200, true))
DoCast(target, SPELL_PARASITIC_SHADOWFIEND, true);
- Timer[EVENT_PARASITIC_SHADOWFIEND] = 35000 + rand()%10000;
+ Timer[EVENT_PARASITIC_SHADOWFIEND] = urand(35000, 45000);
}
break;
@@ -1050,7 +1050,7 @@ public:
case EVENT_DRAW_SOUL:
DoCast(me->getVictim(), SPELL_DRAW_SOUL);
- Timer[EVENT_DRAW_SOUL] = 50000 + rand()%10000;
+ Timer[EVENT_DRAW_SOUL] = urand(50000, 60000);
break;
// PHASE_NORMAL_2
@@ -1172,7 +1172,7 @@ public:
Phase = PHASE_NORMAL_MAIEV;
IllidanGUID = 0;
Timer[EVENT_MAIEV_STEALTH] = 0;
- Timer[EVENT_MAIEV_TAUNT] = 22000 + rand()%21 * 1000;
+ Timer[EVENT_MAIEV_TAUNT] = urand(22, 43) * 1000;
Timer[EVENT_MAIEV_SHADOW_STRIKE] = 30000;
SetEquipmentSlots(false, 44850, EQUIP_UNEQUIP, EQUIP_NO_CHANGE);
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 2, 45738);
@@ -1321,7 +1321,7 @@ public:
if (MaievTaunts[random].text.size())
me->MonsterYell(MaievTaunts[random].text.c_str(), LANG_UNIVERSAL, 0);
DoPlaySoundToSet(me, sound);
- Timer[EVENT_MAIEV_TAUNT] = 22000 + rand()%21 * 1000;
+ Timer[EVENT_MAIEV_TAUNT] = urand(22, 43) * 1000;
}
break;
case EVENT_MAIEV_SHADOW_STRIKE:
@@ -1590,7 +1590,7 @@ public:
break;
case PHASE_FIGHT_MINIONS:
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- Timer = 10000 + rand()%6000; // summon minion
+ Timer = urand(10000, 16000); // summon minion
break;
case PHASE_RETURN:
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
@@ -1780,7 +1780,7 @@ public:
AttackStart(Elite);
me->AddThreat(Elite, 1000000.0f);
}
- Timer = 10000 + rand()%6000;
+ Timer = urand(10000, 16000);
GETUNIT(Illidan, IllidanGUID);
if (Illidan && Illidan->HealthBelowPct(10))
EnterPhase(PHASE_RETURN);
diff --git a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp
index a69ed1f7e7d..645a9fe7978 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp
@@ -128,7 +128,7 @@ public:
FatalAttractionExplodeTimer = 70000;
ShriekTimer = 30000;
SaberTimer = 35000;
- RandomYellTimer = 70000 + rand()%41 * 1000;
+ RandomYellTimer = urand(70, 111) * 1000;
EnrageTimer = 600000;
ExplosionCount = 0;
@@ -237,7 +237,7 @@ public:
DoScriptText(RAND(SAY_SPELL2, SAY_SPELL3), me);
FatalAttractionExplodeTimer = 2000;
- FatalAttractionTimer = 40000 + rand()%31 * 1000;
+ FatalAttractionTimer = urand(40, 71) * 1000;
} else FatalAttractionTimer -= diff;
if (FatalAttractionExplodeTimer <= diff)
@@ -293,7 +293,7 @@ public:
if (RandomYellTimer <= diff)
{
DoScriptText(RAND(SAY_TAUNT1, SAY_TAUNT2, SAY_TAUNT3), me);
- RandomYellTimer = 60000 + rand()%91 * 1000;
+ RandomYellTimer = urand(60, 151) * 1000;
} else RandomYellTimer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
index 1519713183d..8b39fe8a8f7 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
@@ -582,7 +582,7 @@ public:
{
me->InterruptNonMeleeSpells(false);
DoCast(me->getVictim(), SPELL_DEADEN);
- DeadenTimer = 25000 + rand()%10000;
+ DeadenTimer = urand(25000, 35000);
if (!(rand()%2))
{
DoScriptText(DESI_SAY_SPEC, me);
@@ -676,7 +676,7 @@ public:
if (SoulScreamTimer <= diff)
{
DoCast(me->getVictim(), SPELL_SOUL_SCREAM);
- SoulScreamTimer = 9000 + rand()%2000;
+ SoulScreamTimer = urand(9000, 11000);
if (!(rand()%3))
{
DoScriptText(ANGER_SAY_SPEC, me);
diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
index 074bb16e7a0..d6510db0cbb 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
@@ -246,7 +246,7 @@ public:
if (instance)
instance->SetData(DATA_TERONGOREFIENDEVENT, NOT_STARTED);
- IncinerateTimer = 20000 + rand()%11000;
+ IncinerateTimer = urand(20000, 31000);
SummonDoomBlossomTimer = 12000;
EnrageTimer = 600000;
CrushingShadowsTimer = 22000;
@@ -460,7 +460,7 @@ public:
{
DoScriptText(RAND(SAY_SPECIAL1, SAY_SPECIAL2), me);
DoCast(target, SPELL_INCINERATE);
- IncinerateTimer = 20000 + rand()%31 * 1000;
+ IncinerateTimer = urand(20, 51) * 1000;
}
} else IncinerateTimer -= diff;
@@ -469,7 +469,7 @@ public:
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0);
if (target && target->isAlive())
DoCast(target, SPELL_CRUSHING_SHADOWS);
- CrushingShadowsTimer = 10000 + rand()%16 * 1000;
+ CrushingShadowsTimer = urand(10, 26) * 1000;
} else CrushingShadowsTimer -= diff;
/*** NOTE FOR FUTURE DEV: UNCOMMENT BELOW ONLY IF MIND CONTROL IS FULLY IMPLEMENTED **/
@@ -492,7 +492,7 @@ public:
if (RandomYellTimer <= diff)
{
DoScriptText(RAND(SAY_SPELL1, SAY_SPELL2), me);
- RandomYellTimer = 50000 + rand()%51 * 1000;
+ RandomYellTimer = urand(50, 101) * 1000;
} else RandomYellTimer -= diff;
if (!me->HasAura(SPELL_BERSERK))
diff --git a/src/server/scripts/Outland/BlackTemple/illidari_council.cpp b/src/server/scripts/Outland/BlackTemple/illidari_council.cpp
index f7e98444be8..6fe24378f79 100644
--- a/src/server/scripts/Outland/BlackTemple/illidari_council.cpp
+++ b/src/server/scripts/Outland/BlackTemple/illidari_council.cpp
@@ -613,8 +613,8 @@ public:
void Reset()
{
- BlizzardTimer = 30000 + rand()%61 * 1000;
- FlamestrikeTimer = 30000 + rand()%61 * 1000;
+ BlizzardTimer = urand(30, 91) * 1000;
+ FlamestrikeTimer = urand(30, 91) * 1000;
ArcaneBoltTimer = 10000;
DampenMagicTimer = 2000;
ArcaneExplosionTimer = 14000;
@@ -673,7 +673,7 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
{
DoCast(target, SPELL_BLIZZARD);
- BlizzardTimer = 45000 + rand()%46 * 1000;
+ BlizzardTimer = urand(45, 91) * 1000;
FlamestrikeTimer += 10000;
Cooldown = 1000;
}
@@ -684,7 +684,7 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
{
DoCast(target, SPELL_FLAMESTRIKE);
- FlamestrikeTimer = 55000 + rand()%46 * 1000;
+ FlamestrikeTimer = urand(55, 101) * 1000;
BlizzardTimer += 10000;
Cooldown = 2000;
}
@@ -756,7 +756,7 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
{
DoCast(target, SPELL_DIVINE_WRATH);
- DivineWrathTimer = 40000 + rand()%41 * 1000;
+ DivineWrathTimer = urand(40, 81) * 1000;
}
} else DivineWrathTimer -= diff;
@@ -799,7 +799,7 @@ public:
EnvenomTargetGUID = 0;
DeadlyPoisonTimer = 20000;
- VanishTimer = 60000 + rand()%61 * 1000;
+ VanishTimer = urand(60, 121) * 1000;
AppearEnvenomTimer = 150000;
HasVanished = false;
@@ -827,7 +827,7 @@ public:
if (DeadlyPoisonTimer <= diff)
{
DoCast(me->getVictim(), SPELL_DEADLY_POISON);
- DeadlyPoisonTimer = 15000 + rand()%31 * 1000;
+ DeadlyPoisonTimer = urand(15, 46) * 1000;
} else DeadlyPoisonTimer -= diff;
if (AppearEnvenomTimer <= diff) // Cast Envenom. This is cast 4 seconds after Vanish is over
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp
index 65cb0173cd7..a29fafe4edb 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp
@@ -691,8 +691,8 @@ public:
void Reset()
{
- Mindblast_Timer = 3000 + rand()%5000;
- Earthshock_Timer = 5000 + rand()%5000;
+ Mindblast_Timer = urand(3000, 8000);
+ Earthshock_Timer = urand(5000, 10000);
if (instance)
{
@@ -764,7 +764,7 @@ public:
if (target)DoCast(target, SPELL_MINDBLAST);
- Mindblast_Timer = 10000 + rand()%5000;
+ Mindblast_Timer = urand(10000, 15000);
} else Mindblast_Timer -= diff;
if (Earthshock_Timer <= diff)
@@ -787,7 +787,7 @@ public:
}
}
}
- Earthshock_Timer = 8000 + rand()%7000;
+ Earthshock_Timer = urand(8000, 15000);
} else Earthshock_Timer -= diff;
DoMeleeAttackIfReady();
}
diff --git a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
index 7cdfdc383bd..5265dff16e2 100644
--- a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
+++ b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
@@ -213,7 +213,7 @@ public:
if (m_uiReverberation_Timer <= uiDiff)
{
DoCast(me->getVictim(), SPELL_REVERBERATION, true);
- m_uiReverberation_Timer = 15000 + rand()%10000;
+ m_uiReverberation_Timer = urand(15000, 25000);
}
else
m_uiReverberation_Timer -= uiDiff;
diff --git a/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp b/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp
index de3b93d029d..b941e3bc581 100644
--- a/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp
+++ b/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp
@@ -524,7 +524,7 @@ public:
if (target)
DoCast(target, SPELL_GREATER_POLYMORPH);
- GreaterPolymorph_Timer = 15000 + rand()%5000;
+ GreaterPolymorph_Timer = urand(15000, 20000);
} else GreaterPolymorph_Timer -= diff;
//LightningBolt_Timer
@@ -581,8 +581,8 @@ public:
void Reset()
{
GreaterPowerWordShield_Timer = 5000;
- Heal_Timer = 25000 + rand()%15000;
- PrayerofHealing_Timer = 45000 + rand()%10000;
+ Heal_Timer = urand(25000, 40000);
+ PrayerofHealing_Timer = urand(45000, 55000);
//reset encounter
if (instance)
@@ -648,14 +648,14 @@ public:
if (Heal_Timer <= diff)
{
DoCast(me, SPELL_HEAL);
- Heal_Timer = 15000 + rand()%25000;
+ Heal_Timer = urand(15000, 40000);
} else Heal_Timer -= diff;
//PrayerofHealing_Timer
if (PrayerofHealing_Timer <= diff)
{
DoCast(me, SPELL_PRAYER_OH);
- PrayerofHealing_Timer = 35000 + rand()%15000;
+ PrayerofHealing_Timer = urand(35000, 50000);
} else PrayerofHealing_Timer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
index 6918a076f6e..755106f7092 100644
--- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
@@ -424,7 +424,7 @@ class boss_magtheridon : public CreatureScript
summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
}
}
- Blaze_Timer = 20000 + rand()%20000;
+ Blaze_Timer = urand(20000, 40000);
}
else
Blaze_Timer -= diff;
@@ -497,10 +497,10 @@ class mob_hellfire_channeler : public CreatureScript
void Reset()
{
- ShadowBoltVolley_Timer = 8000 + rand()%2000;
+ ShadowBoltVolley_Timer = urand(8000, 10000);
DarkMending_Timer = 10000;
- Fear_Timer = 15000 + rand()%5000;
- Infernal_Timer = 10000 + rand()%40000;
+ Fear_Timer = urand(15000, 20000);
+ Infernal_Timer = urand(10000, 50000);
Check_Timer = 5000;
}
@@ -547,7 +547,7 @@ class mob_hellfire_channeler : public CreatureScript
if (ShadowBoltVolley_Timer <= diff)
{
DoCast(me, SPELL_SHADOW_BOLT_VOLLEY);
- ShadowBoltVolley_Timer = 10000 + rand()%10000;
+ ShadowBoltVolley_Timer = urand(10000, 20000);
}
else
ShadowBoltVolley_Timer -= diff;
@@ -565,7 +565,7 @@ class mob_hellfire_channeler : public CreatureScript
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1))
DoCast(target, SPELL_FEAR);
- Fear_Timer = 25000 + rand()%15000;
+ Fear_Timer = urand(25000, 40000);
}
else
Fear_Timer -= diff;
@@ -574,7 +574,7 @@ class mob_hellfire_channeler : public CreatureScript
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_BURNING_ABYSSAL, true);
- Infernal_Timer = 30000 + rand()%10000;
+ Infernal_Timer = urand(30000, 40000);
}
else
Infernal_Timer -= diff;
diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp
index df7f95abe2a..cae13adfef7 100644
--- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp
@@ -102,7 +102,7 @@ class boss_gatewatcher_iron_hand : public CreatureScript
if (Shadow_Power_Timer <= diff)
{
DoCast(me, SPELL_SHADOW_POWER);
- Shadow_Power_Timer = 20000 + rand()%8000;
+ Shadow_Power_Timer = urand(20000, 28000);
}
else
Shadow_Power_Timer -= diff;
@@ -128,7 +128,7 @@ class boss_gatewatcher_iron_hand : public CreatureScript
if (Stream_of_Machine_Fluid_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_STREAM_OF_MACHINE_FLUID);
- Stream_of_Machine_Fluid_Timer = 35000 + rand()%15000;
+ Stream_of_Machine_Fluid_Timer = urand(35000, 50000);
}
else
Stream_of_Machine_Fluid_Timer -= diff;
diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp
index 05bf711432d..c5408b4bbf5 100644
--- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp
@@ -76,10 +76,10 @@ class boss_nethermancer_sepethrea : public CreatureScript
void Reset()
{
- frost_attack_Timer = 7000 + rand()%3000;
- arcane_blast_Timer = 12000 + rand()%6000;
- dragons_breath_Timer = 18000 + rand()%4000;
- knockback_Timer = 22000 + rand()%6000;
+ frost_attack_Timer = urand(7000, 10000);
+ arcane_blast_Timer = urand(12000, 18000);
+ dragons_breath_Timer = urand(18000, 22000);
+ knockback_Timer = urand(22000, 28000);
solarburn_Timer = 30000;
if (instance)
@@ -119,7 +119,7 @@ class boss_nethermancer_sepethrea : public CreatureScript
{
DoCast(me->getVictim(), SPELL_FROST_ATTACK);
- frost_attack_Timer = 7000 + rand()%3000;
+ frost_attack_Timer = urand(7000, 10000);
}
else
frost_attack_Timer -= diff;
@@ -141,7 +141,7 @@ class boss_nethermancer_sepethrea : public CreatureScript
return;
DoScriptText(RAND(SAY_DRAGONS_BREATH_1, SAY_DRAGONS_BREATH_2), me);
}
- dragons_breath_Timer = 12000 + rand()%10000;
+ dragons_breath_Timer = urand(12000, 22000);
}
else
dragons_breath_Timer -= diff;
@@ -150,7 +150,7 @@ class boss_nethermancer_sepethrea : public CreatureScript
if (knockback_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_KNOCKBACK);
- knockback_Timer = 15000 + rand()%10000;
+ knockback_Timer = urand(15000, 25000);
}
else
knockback_Timer -= diff;
diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp
index 54ecbdd621a..30a6bdbc0dd 100644
--- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp
@@ -83,10 +83,10 @@ class boss_pathaleon_the_calculator : public CreatureScript
void Reset()
{
Summon_Timer = 30000;
- ManaTap_Timer = 12000 + rand()%8000;
- ArcaneTorrent_Timer = 16000 + rand()%9000;
- Domination_Timer = 25000 + rand()%15000;
- ArcaneExplosion_Timer = 8000 + rand()%5000;
+ ManaTap_Timer = urand(12000, 20000);
+ ArcaneTorrent_Timer = urand(16000, 25000);
+ Domination_Timer = urand(25000, 40000);
+ ArcaneExplosion_Timer = urand(8000, 13000);
Enraged = false;
@@ -135,7 +135,7 @@ class boss_pathaleon_the_calculator : public CreatureScript
Wraith->AI()->AttackStart(target);
}
DoScriptText(SAY_SUMMON, me);
- Summon_Timer = 30000 + rand()%15000;
+ Summon_Timer = urand(30000, 45000);
}
else
Summon_Timer -= diff;
@@ -143,7 +143,7 @@ class boss_pathaleon_the_calculator : public CreatureScript
if (ManaTap_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_MANA_TAP);
- ManaTap_Timer = 14000 + rand()%8000;
+ ManaTap_Timer = urand(14000, 22000);
}
else
ManaTap_Timer -= diff;
@@ -151,7 +151,7 @@ class boss_pathaleon_the_calculator : public CreatureScript
if (ArcaneTorrent_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_ARCANE_TORRENT);
- ArcaneTorrent_Timer = 12000 + rand()%6000;
+ ArcaneTorrent_Timer = urand(12000, 18000);
}
else
ArcaneTorrent_Timer -= diff;
@@ -163,7 +163,7 @@ class boss_pathaleon_the_calculator : public CreatureScript
DoScriptText(RAND(SAY_DOMINATION_1, SAY_DOMINATION_2), me);
DoCast(target, SPELL_DOMINATION);
}
- Domination_Timer = 25000 + rand()%5000;
+ Domination_Timer = urand(25000, 30000);
}
else
Domination_Timer -= diff;
@@ -174,7 +174,7 @@ class boss_pathaleon_the_calculator : public CreatureScript
if (ArcaneExplosion_Timer <= diff)
{
DoCast(me->getVictim(), H_SPELL_ARCANE_EXPLOSION);
- ArcaneExplosion_Timer = 10000 + rand()%4000;
+ ArcaneExplosion_Timer = urand(10000, 14000);
}
else
ArcaneExplosion_Timer -= diff;
@@ -218,7 +218,7 @@ class mob_nether_wraith : public CreatureScript
void Reset()
{
- ArcaneMissiles_Timer = 1000 + rand()%3000;
+ ArcaneMissiles_Timer = urand(1000, 4000);
Detonation_Timer = 20000;
Die_Timer = 2200;
Detonation = false;
@@ -237,7 +237,7 @@ class mob_nether_wraith : public CreatureScript
DoCast(target, SPELL_ARCANE_MISSILES);
else
DoCast(me->getVictim(), SPELL_ARCANE_MISSILES);
- ArcaneMissiles_Timer = 5000 + rand()%5000;
+ ArcaneMissiles_Timer = urand(5000, 10000);
}
else
ArcaneMissiles_Timer -=diff;
diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp
index 2bf4abbcb96..75c80b06816 100644
--- a/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp
+++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp
@@ -152,9 +152,9 @@ class boss_warp_splinter : public CreatureScript
void Reset()
{
- War_Stomp_Timer = 25000 + rand()%15000;
+ War_Stomp_Timer = urand(25000, 40000);
Summon_Treants_Timer = 45000;
- Arcane_Volley_Timer = 8000 + rand()%12000;
+ Arcane_Volley_Timer = urand(8000, 20000);
me->SetSpeed(MOVE_RUN, 0.7f, true);
}
@@ -199,7 +199,7 @@ class boss_warp_splinter : public CreatureScript
if (War_Stomp_Timer <= diff)
{
DoCast(me->getVictim(), WAR_STOMP);
- War_Stomp_Timer = 25000 + rand()%15000;
+ War_Stomp_Timer = urand(25000, 40000);
}
else
War_Stomp_Timer -= diff;
@@ -208,7 +208,7 @@ class boss_warp_splinter : public CreatureScript
if (Arcane_Volley_Timer <= diff)
{
DoCast(me->getVictim(), DUNGEON_MODE(ARCANE_VOLLEY, ARCANE_VOLLEY_H));
- Arcane_Volley_Timer = 20000 + rand()%15000;
+ Arcane_Volley_Timer = urand(20000, 35000);
}
else
Arcane_Volley_Timer -= diff;
diff --git a/src/server/scripts/Outland/blades_edge_mountains.cpp b/src/server/scripts/Outland/blades_edge_mountains.cpp
index f94a7d2725c..87304a3f721 100644
--- a/src/server/scripts/Outland/blades_edge_mountains.cpp
+++ b/src/server/scripts/Outland/blades_edge_mountains.cpp
@@ -30,6 +30,7 @@ npc_daranelle
npc_overseer_nuaar
npc_saikkal_the_elder
go_legion_obelisk
+go_thunderspike
EndContentData */
#include "ScriptPCH.h"
@@ -537,9 +538,30 @@ public:
};
/*######
-## AddSC
+## go_thunderspike
######*/
+enum TheThunderspike
+{
+ NPC_GOR_GRIMGUT = 21319,
+ QUEST_THUNDERSPIKE = 10526,
+};
+
+class go_thunderspike : public GameObjectScript
+{
+ public:
+ go_thunderspike() : GameObjectScript("go_thunderspike") { }
+
+ bool OnGossipHello(Player* player, GameObject* go)
+ {
+ if (player->GetQuestStatus(QUEST_THUNDERSPIKE) == QUEST_STATUS_INCOMPLETE && !go->FindNearestCreature(NPC_GOR_GRIMGUT, 25.0f, true))
+ if (Creature* gorGrimgut = go->SummonCreature(NPC_GOR_GRIMGUT, -2413.4f, 6914.48f, 25.01f, 3.67f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 300000))
+ gorGrimgut->AI()->AttackStart(player);
+
+ return true;
+ }
+};
+
void AddSC_blades_edge_mountains()
{
new mobs_bladespire_ogre();
@@ -550,4 +572,5 @@ void AddSC_blades_edge_mountains()
new go_legion_obelisk();
new npc_bloodmaul_brutebane();
new npc_ogre_brute();
+ new go_thunderspike();
}
diff --git a/src/server/scripts/Outland/netherstorm.cpp b/src/server/scripts/Outland/netherstorm.cpp
index 5f2626c0039..e5ee8d19c59 100644
--- a/src/server/scripts/Outland/netherstorm.cpp
+++ b/src/server/scripts/Outland/netherstorm.cpp
@@ -29,6 +29,7 @@ go_manaforge_control_console
npc_commander_dawnforge
npc_bessy
npc_maxx_a_million
+go_captain_tyralius_prison
EndContentData */
#include "ScriptPCH.h"
@@ -1046,6 +1047,36 @@ public:
}
};
+/*######
+## go_captain_tyralius_prison
+######*/
+
+enum CaptainTyralius
+{
+ NPC_CAPTAIN_TYRALIUS = 20787,
+ SAY_FREE = 0,
+};
+
+class go_captain_tyralius_prison : public GameObjectScript
+{
+ public:
+ go_captain_tyralius_prison() : GameObjectScript("go_captain_tyralius_prison") { }
+
+ bool OnGossipHello(Player* player, GameObject* go)
+ {
+ if (Creature* tyralius = go->FindNearestCreature(NPC_CAPTAIN_TYRALIUS, 1.0f))
+ {
+ go->UseDoorOrButton();
+
+ player->KilledMonsterCredit(NPC_CAPTAIN_TYRALIUS, 0);
+
+ tyralius->AI()->Talk(SAY_FREE);
+ tyralius->ForcedDespawn(8000);
+ }
+ return true;
+ }
+};
+
void AddSC_netherstorm()
{
new go_manaforge_control_console();
@@ -1056,4 +1087,5 @@ void AddSC_netherstorm()
new mob_phase_hunter();
new npc_bessy();
new npc_maxx_a_million_escort();
+ new go_captain_tyralius_prison();
}
diff --git a/src/server/scripts/Outland/shadowmoon_valley.cpp b/src/server/scripts/Outland/shadowmoon_valley.cpp
index 610cf684a77..ecbdb921567 100644
--- a/src/server/scripts/Outland/shadowmoon_valley.cpp
+++ b/src/server/scripts/Outland/shadowmoon_valley.cpp
@@ -635,26 +635,31 @@ public:
# npc_karynaku
####*/
-enum eKarynaku
+enum Karynaku
{
QUEST_ALLY_OF_NETHER = 10870,
+ QUEST_ZUHULED_THE_WACK = 10866,
- TAXI_PATH_ID = 649
+ NPC_ZUHULED_THE_WACKED = 11980,
+
+ TAXI_PATH_ID = 649,
};
class npc_karynaku : public CreatureScript
{
-public:
- npc_karynaku() : CreatureScript("npc_karynaku") { }
+ public:
+ npc_karynaku() : CreatureScript("npc_karynaku") { }
- bool OnQuestAccept(Player* player, Creature* /*creature*/, Quest const* quest)
- {
- if (quest->GetQuestId() == QUEST_ALLY_OF_NETHER)
- player->ActivateTaxiPathTo(TAXI_PATH_ID); //player->ActivateTaxiPathTo(649);
+ bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest)
+ {
+ if (quest->GetQuestId() == QUEST_ALLY_OF_NETHER)
+ player->ActivateTaxiPathTo(TAXI_PATH_ID);
- return true;
- }
+ if (quest->GetQuestId() == QUEST_ZUHULED_THE_WACK)
+ creature->SummonCreature(NPC_ZUHULED_THE_WACKED, -4204.94f, 316.397f, 122.508f, 1.309f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 300000);
+ return true;
+ }
};
/*####
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index 260b0c57563..298e9b6410e 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -26,6 +26,8 @@
#include "SpellAuraEffects.h"
#include "SkillDiscovery.h"
#include "GridNotifiers.h"
+#include "Group.h"
+#include "LFGMgr.h"
class spell_gen_absorb0_hitlimit1 : public SpellScriptLoader
{
@@ -564,6 +566,9 @@ class spell_creature_permanent_feign_death : public SpellScriptLoader
Unit* target = GetTarget();
target->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
target->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
+
+ if (target->GetTypeId() == TYPEID_UNIT)
+ target->ToCreature()->SetReactState(REACT_PASSIVE);
}
void Register()
@@ -1419,6 +1424,53 @@ public:
}
};
+class spell_gen_luck_of_the_draw : public SpellScriptLoader
+{
+ public:
+ spell_gen_luck_of_the_draw() : SpellScriptLoader("spell_gen_luck_of_the_draw") { }
+
+ class spell_gen_luck_of_the_draw_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_gen_luck_of_the_draw_AuraScript);
+
+ // cheap hax to make it have update calls
+ void CalcPeriodic(AuraEffect const* /*effect*/, bool& isPeriodic, int32& amplitude)
+ {
+ isPeriodic = true;
+ amplitude = 5 * IN_MILLISECONDS;
+ }
+
+ void Update(AuraEffect* /*effect*/)
+ {
+ if (GetUnitOwner()->GetTypeId() != TYPEID_PLAYER)
+ return;
+
+ LFGDungeonEntry const* randomDungeon = sLFGDungeonStore.LookupEntry(*(sLFGMgr->GetSelectedDungeons(GetUnitOwner()->GetGUID()).begin()));
+ Group* group = GetUnitOwner()->ToPlayer()->GetGroup();
+ Map const* map = GetUnitOwner()->GetMap();
+ if (group && group->isLFGGroup())
+ if (uint32 dungeonId = sLFGMgr->GetDungeon(group->GetGUID(), true))
+ if (LFGDungeonEntry const* dungeon = sLFGDungeonStore.LookupEntry(dungeonId))
+ if (dungeon->map == map->GetId() && dungeon->difficulty == map->GetDifficulty())
+ if (randomDungeon && randomDungeon->type == LFG_TYPE_RANDOM)
+ return; // in correct dungeon
+
+ Remove(AURA_REMOVE_BY_DEFAULT);
+ }
+
+ void Register()
+ {
+ DoEffectCalcPeriodic += AuraEffectCalcPeriodicFn(spell_gen_luck_of_the_draw_AuraScript::CalcPeriodic, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE);
+ OnEffectUpdatePeriodic += AuraEffectUpdatePeriodicFn(spell_gen_luck_of_the_draw_AuraScript::Update, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE);
+ }
+ };
+
+ AuraScript* GetAuraScript() const
+ {
+ return new spell_gen_luck_of_the_draw_AuraScript();
+ }
+};
+
void AddSC_generic_spell_scripts()
{
new spell_gen_absorb0_hitlimit1();
@@ -1451,4 +1503,5 @@ void AddSC_generic_spell_scripts()
new spell_gen_vehicle_scaling();
new spell_gen_oracle_wolvar_reputation();
new spell_gen_damage_reduction_aura();
+ new spell_gen_luck_of_the_draw();
}
diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp
index 3b2cc5f5e00..ecdbd582b76 100644
--- a/src/server/scripts/Spells/spell_quest.cpp
+++ b/src/server/scripts/Spells/spell_quest.cpp
@@ -1026,6 +1026,54 @@ public:
}
};
+// http://old01.wowhead.com/quest=9452 - Red Snapper - Very Tasty!
+enum RedSnapperVeryTasty
+{
+ SPELL_CAST_NET = 29866,
+ ITEM_RED_SNAPPER = 23614,
+ NPC_ANGRY_MURLOC = 17102,
+};
+
+class spell_q9452_cast_net: public SpellScriptLoader
+{
+ public:
+ spell_q9452_cast_net() : SpellScriptLoader("spell_q9452_cast_net") { }
+
+ class spell_q9452_cast_net_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_q9452_cast_net_SpellScript)
+
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ Player* caster = GetCaster()->ToPlayer();
+
+ if (!caster)
+ return;
+
+ switch (urand(0, 2))
+ {
+ case 0: case 1:
+ caster->AddItem(ITEM_RED_SNAPPER, 1);
+ break;
+ case 2:
+ if (Creature* murloc = caster->SummonCreature(NPC_ANGRY_MURLOC, caster->GetPositionX()+5, caster->GetPositionY(), caster->GetPositionZ(), 0.0f, TEMPSUMMON_MANUAL_DESPAWN, 120000))
+ murloc->AI()->AttackStart(caster);
+ break;
+ }
+ }
+
+ void Register()
+ {
+ OnEffectHit += SpellEffectFn(spell_q9452_cast_net_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_q9452_cast_net_SpellScript();
+ }
+};
+
void AddSC_quest_spell_scripts()
{
new spell_q55_sacred_cleansing();
@@ -1050,4 +1098,5 @@ void AddSC_quest_spell_scripts()
new spell_q12805_lifeblood_dummy();
new spell_q13280_13283_plant_battle_standard();
new spell_q14112_14145_chum_the_water();
+ new spell_q9452_cast_net();
}
diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp
index 517746dac55..7d1ed17ed29 100644
--- a/src/server/scripts/World/areatrigger_scripts.cpp
+++ b/src/server/scripts/World/areatrigger_scripts.cpp
@@ -29,6 +29,9 @@ at_legion_teleporter 4560 Teleporter TO Invasion Point: Cataclysm
at_stormwright_shelf q12741
at_last_rites q12019
at_sholazar_waygate q12548
+at_nats_landing q11209
+at_bring_your_orphan_to q910 q910 q1800 q1479 q1687 q1558 q10951 q10952
+at_brewfest
EndContentData */
#include "ScriptPCH.h"
@@ -257,6 +260,166 @@ class AreaTrigger_at_sholazar_waygate : public AreaTriggerScript
}
};
+/*######
+## at_nats_landing
+######*/
+
+enum NatsLanding
+{
+ QUEST_NATS_BARGAIN = 11209,
+ SPELL_FISH_PASTE = 42644,
+ NPC_LURKING_SHARK = 23928
+};
+
+class AreaTrigger_at_nats_landing : public AreaTriggerScript
+{
+ public:
+ AreaTrigger_at_nats_landing() : AreaTriggerScript("at_nats_landing") { }
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const* /*trigger*/)
+ {
+ if (!player->isAlive() || !player->HasAura(SPELL_FISH_PASTE))
+ return false;
+
+ if (player->GetQuestStatus(QUEST_NATS_BARGAIN) == QUEST_STATUS_INCOMPLETE)
+ {
+ if (!player->FindNearestCreature(NPC_LURKING_SHARK, 20.0f))
+ {
+ if (Creature* shark = player->SummonCreature(NPC_LURKING_SHARK, -4246.243f, -3922.356f, -7.488f, 5.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 100000))
+ shark->AI()->AttackStart(player);
+
+ return false;
+ }
+ }
+ return true;
+ }
+};
+
+/*######
+## at_bring_your_orphan_to
+######*/
+
+enum BringYourOrphanTo
+{
+ QUEST_DOWN_AT_THE_DOCKS = 910,
+ QUEST_GATEWAY_TO_THE_FRONTIER = 911,
+ QUEST_LORDAERON_THRONE_ROOM = 1800,
+ QUEST_BOUGHT_OF_ETERNALS = 1479,
+ QUEST_SPOOKY_LIGHTHOUSE = 1687,
+ QUEST_STONEWROUGHT_DAM = 1558,
+ QUEST_DARK_PORTAL_H = 10951,
+ QUEST_DARK_PORTAL_A = 10952,
+
+ AT_DOWN_AT_THE_DOCKS = 3551,
+ AT_GATEWAY_TO_THE_FRONTIER = 3549,
+ AT_LORDAERON_THRONE_ROOM = 3547,
+ AT_BOUGHT_OF_ETERNALS = 3546,
+ AT_SPOOKY_LIGHTHOUSE = 3552,
+ AT_STONEWROUGHT_DAM = 3548,
+ AT_DARK_PORTAL = 4356,
+
+ AURA_ORPHAN_OUT = 58818,
+};
+
+class AreaTrigger_at_bring_your_orphan_to : public AreaTriggerScript
+{
+ public:
+ AreaTrigger_at_bring_your_orphan_to() : AreaTriggerScript("at_bring_your_orphan_to") { }
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
+ {
+ uint32 questId = 0;
+
+ if (player->isDead() || !player->HasAura(AURA_ORPHAN_OUT))
+ return false;
+
+ switch (trigger->id)
+ {
+ case AT_DOWN_AT_THE_DOCKS:
+ questId = QUEST_DOWN_AT_THE_DOCKS;
+ break;
+ case AT_GATEWAY_TO_THE_FRONTIER:
+ questId = QUEST_GATEWAY_TO_THE_FRONTIER;
+ break;
+ case AT_LORDAERON_THRONE_ROOM:
+ questId = QUEST_LORDAERON_THRONE_ROOM;
+ break;
+ case AT_BOUGHT_OF_ETERNALS:
+ questId = QUEST_BOUGHT_OF_ETERNALS;
+ break;
+ case AT_SPOOKY_LIGHTHOUSE:
+ questId = QUEST_SPOOKY_LIGHTHOUSE;
+ break;
+ case AT_STONEWROUGHT_DAM:
+ questId = QUEST_STONEWROUGHT_DAM;
+ break;
+ case AT_DARK_PORTAL:
+ questId = player->GetTeam() == ALLIANCE ? QUEST_DARK_PORTAL_A : QUEST_DARK_PORTAL_H;
+ break;
+ }
+
+ if (questId && player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE)
+ player->AreaExploredOrEventHappens(questId);
+
+ return true;
+ }
+};
+
+/*######
+## at_brewfest
+######*/
+
+enum Brewfest
+{
+ NPC_TAPPER_SWINDLEKEG = 24711,
+ NPC_IPFELKOFER_IRONKEG = 24710,
+
+ AT_BREWFEST_DUROTAR = 4829,
+ AT_BREWFEST_DUN_MOROGH = 4820,
+
+ SAY_WELCOME = 4,
+
+ AREATRIGGER_TALK_COOLDOWN = 5, // in seconds
+};
+
+class AreaTrigger_at_brewfest : public AreaTriggerScript
+{
+ public:
+ AreaTrigger_at_brewfest() : AreaTriggerScript("at_brewfest")
+ {
+ // Initialize for cooldown
+ _triggerTimes[AT_BREWFEST_DUROTAR] = _triggerTimes[AT_BREWFEST_DUN_MOROGH] = 0;
+ }
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
+ {
+ uint32 triggerId = trigger->id;
+ // Second trigger happened too early after first, skip for now
+ if (sWorld->GetGameTime() - _triggerTimes[triggerId] < AREATRIGGER_TALK_COOLDOWN)
+ return false;
+
+ switch (triggerId)
+ {
+ case AT_BREWFEST_DUROTAR:
+ if (Creature* tapper = player->FindNearestCreature(NPC_TAPPER_SWINDLEKEG, 20.0f))
+ tapper->AI()->Talk(SAY_WELCOME, player->GetGUID());
+ break;
+ case AT_BREWFEST_DUN_MOROGH:
+ if (Creature* ipfelkofer = player->FindNearestCreature(NPC_IPFELKOFER_IRONKEG, 20.0f))
+ ipfelkofer->AI()->Talk(SAY_WELCOME, player->GetGUID());
+ break;
+ default:
+ break;
+ }
+
+ _triggerTimes[triggerId] = sWorld->GetGameTime();
+ return false;
+ }
+
+ private:
+ std::map<uint32, time_t> _triggerTimes;
+};
+
void AddSC_areatrigger_scripts()
{
new AreaTrigger_at_coilfang_waterfall();
@@ -265,4 +428,7 @@ void AddSC_areatrigger_scripts()
new AreaTrigger_at_scent_larkorwi();
new AreaTrigger_at_last_rites();
new AreaTrigger_at_sholazar_waygate();
+ new AreaTrigger_at_nats_landing();
+ new AreaTrigger_at_bring_your_orphan_to();
+ new AreaTrigger_at_brewfest();
}
diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp
index 44c3ab9bdc9..e93dd2751e6 100644
--- a/src/server/scripts/World/go_scripts.cpp
+++ b/src/server/scripts/World/go_scripts.cpp
@@ -16,13 +16,6 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* ScriptData
-SDName: GO_Scripts
-SD%Complete: 100
-SDComment: Quest support: 4285, 4287, 4288(crystal pylons), 4296, 6481, 10990, 10991, 10992, Field_Repair_Bot->Teaches spell 22704. Barov_journal->Teaches spell 26089, 12843, 12982, 2936. Soulwell
-SDCategory: Game Objects
-EndScriptData */
-
/* ContentData
go_cat_figurine (the "trap" version of GO, two different exist)
go_northern_crystal_pylon
@@ -48,6 +41,15 @@ go_table_theka
go_soulwell
go_bashir_crystalforge
go_ethereal_teleport_pad
+go_soulwell
+go_dragonflayer_cage
+go_tadpole_cage
+go_black_cage
+go_amberpine_outhouse
+go_hive_pod
+go_gjalerbron_cage
+go_large_gjalerbron_cage
+go_veil_skith_cage
EndContentData */
#include "ScriptPCH.h"
@@ -1179,6 +1181,7 @@ public:
/*######
## Quest 1126: Hive in the Tower
+## go_hive_pod
######*/
enum eHives
@@ -1278,6 +1281,42 @@ class go_large_gjalerbron_cage : public GameObjectScript
}
};
+/*########
+#### go_veil_skith_cage
+#####*/
+
+enum MissingFriends
+{
+ QUEST_MISSING_FRIENDS = 10852,
+ NPC_CAPTIVE_CHILD = 22314,
+ SAY_FREE_0 = 0,
+};
+
+class go_veil_skith_cage : public GameObjectScript
+{
+ public:
+ go_veil_skith_cage() : GameObjectScript("go_veil_skith_cage") { }
+
+ bool OnGossipHello(Player* player, GameObject* go)
+ {
+ if (player->GetQuestStatus(QUEST_MISSING_FRIENDS) == QUEST_STATUS_INCOMPLETE)
+ {
+ std::list<Creature*> childrenList;
+ GetCreatureListWithEntryInGrid(childrenList, go, NPC_CAPTIVE_CHILD, INTERACTION_DISTANCE);
+ for (std::list<Creature*>::const_iterator itr = childrenList.begin(); itr != childrenList.end(); ++itr)
+ {
+ go->UseDoorOrButton();
+ player->KilledMonsterCredit(NPC_CAPTIVE_CHILD, (*itr)->GetGUID());
+ (*itr)->ForcedDespawn(5000);
+ (*itr)->GetMotionMaster()->MovePoint(1, go->GetPositionX()+5, go->GetPositionY(), go->GetPositionZ());
+ (*itr)->AI()->Talk(SAY_FREE_0);
+ (*itr)->GetMotionMaster()->Clear();
+ }
+ }
+ return false;
+ }
+};
+
void AddSC_go_scripts()
{
new go_cat_figurine;
@@ -1319,4 +1358,5 @@ void AddSC_go_scripts()
new go_massive_seaforium_charge;
new go_gjalerbron_cage;
new go_large_gjalerbron_cage;
+ new go_veil_skith_cage;
}
diff --git a/src/server/scripts/World/item_scripts.cpp b/src/server/scripts/World/item_scripts.cpp
index 4099c03384c..9bfa77271f5 100644
--- a/src/server/scripts/World/item_scripts.cpp
+++ b/src/server/scripts/World/item_scripts.cpp
@@ -24,7 +24,6 @@ SDCategory: Items
EndScriptData */
/* ContentData
-item_draenei_fishing_net(i23654) Hacklike implements chance to spawn item or creature
item_nether_wraith_beacon(i31742) Summons creatures for quest Becoming a Spellfire Tailor (q10832)
item_flying_machine(i34060, i34061) Engineering crafted flying machines
item_gor_dreks_ointment(i30175) Protecting Our Own(q10488)
@@ -81,45 +80,6 @@ public:
};
/*#####
-# item_draenei_fishing_net
-#####*/
-
-class item_draenei_fishing_net : public ItemScript
-{
-public:
- item_draenei_fishing_net() : ItemScript("item_draenei_fishing_net") { }
-
- //This is just a hack and should be removed from here.
- //Creature/Item are in fact created before spell are sucessfully casted, without any checks at all to ensure proper/expected behavior.
- bool OnUse(Player* player, Item* /*pItem*/, SpellCastTargets const& /*targets*/)
- {
- if (player->GetQuestStatus(9452) == QUEST_STATUS_INCOMPLETE)
- {
- if (urand(0, 99) < 35)
- {
- Creature* Murloc = player->SummonCreature(17102, player->GetPositionX(), player->GetPositionY()+20, player->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000);
- if (Murloc)
- Murloc->AI()->AttackStart(player);
- }
- else
- {
- ItemPosCountVec dest;
- uint32 itemId = 23614;
- InventoryResult msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, 1);
- if (msg == EQUIP_ERR_OK)
- {
- if (Item* item = player->StoreNewItem(dest, itemId, true))
- player->SendNewItem(item, 1, false, true);
- }
- else
- player->SendEquipError(msg, NULL, NULL, itemId);
- }
- }
- return false;
- }
-};
-
-/*#####
# item_nether_wraith_beacon
#####*/
@@ -452,7 +412,6 @@ public:
void AddSC_item_scripts()
{
new item_only_for_flight();
- new item_draenei_fishing_net();
new item_nether_wraith_beacon();
new item_gor_dreks_ointment();
new item_incendiary_explosives();
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index 38a56f7b64a..03fc07c9582 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -2026,6 +2026,16 @@ public:
{
DoCast(me, 59907, false); // Spell for Lightwell Charges
}
+
+ void EnterEvadeMode()
+ {
+ if (!me->isAlive())
+ return;
+
+ me->DeleteThreatList();
+ me->CombatStop(true);
+ me->ResetPlayerDamageReq();
+ }
};
CreatureAI* GetAI(Creature* creature) const