Merge remote-tracking branch 'origin/master' into mmaps

This commit is contained in:
Nay
2012-09-30 15:43:20 +01:00
17 changed files with 317 additions and 129 deletions
@@ -0,0 +1,21 @@
-- VoA
UPDATE `creature_model_info` SET `bounding_radius`=0.3875,`combat_reach`=7.5 WHERE `modelid`=29524; -- Koralon
UPDATE `creature_model_info` SET `bounding_radius`=0.465,`combat_reach`=7.5 WHERE `modelid`=27108; -- Emalon
UPDATE `creature_model_info` SET `bounding_radius`=0.465,`combat_reach`=9 WHERE `modelid`=31089; -- Toravon
UPDATE `creature_model_info` SET `bounding_radius`=0.465,`combat_reach`=7.5 WHERE `modelid`=26967; -- Archavon
-- ToCr
UPDATE `creature_model_info` SET `bounding_radius`=1.085,`combat_reach`=10.5 WHERE `modelid`=29614; -- Gormok
UPDATE `creature_model_info` SET `bounding_radius`=1.55,`combat_reach`=5 WHERE `modelid`=29815; -- Acidmaw
UPDATE `creature_model_info` SET `bounding_radius`=1.24,`combat_reach`=12 WHERE `modelid`=24564; -- Dreadscale
UPDATE `creature_model_info` SET `bounding_radius`=4,`combat_reach`=14 WHERE `modelid`=21601; -- Icehowl
UPDATE `creature_model_info` SET `bounding_radius`=1.52778,`combat_reach`=5 WHERE `modelid`=29615; -- Jaraxxus
UPDATE `creature_model_info` SET `bounding_radius`=1.5,`combat_reach`=9 WHERE `modelid`=29267; -- Eydis Darkbane
UPDATE `creature_model_info` SET `bounding_radius`=1.5,`combat_reach`=9 WHERE `modelid`=29240; -- Fjola Lightbane
UPDATE `creature_model_info` SET `bounding_radius`=1.5,`combat_reach`=2.25 WHERE `modelid`=29773; -- Saamul
UPDATE `creature_model_info` SET `bounding_radius`=0.459,`combat_reach`=2.25 WHERE `modelid`=29774; -- Baelnor Lightbearer
UPDATE `creature_model_info` SET `bounding_radius`=0.312,`combat_reach`=2.25 WHERE `modelid`=29776; -- Irieth Shadowstep
UPDATE `creature_model_info` SET `bounding_radius`=0.52785,`combat_reach`=2.5875 WHERE `modelid`=29777; -- Serissa Grimdabbler
UPDATE `creature_model_info` SET `bounding_radius`=0.312,`combat_reach`=2.25 WHERE `modelid`=29778; -- Brienna Nightfell
UPDATE `creature_model_info` SET `bounding_radius`=1.5,`combat_reach`=2.25 WHERE `modelid`=29779; -- Shocuul
UPDATE `creature_model_info` SET `bounding_radius`=0.4511,`combat_reach`=2.6 WHERE `modelid`=29780; -- Melador Valestrider / Erin Misthoof
@@ -0,0 +1,24 @@
-- Mimiron
DELETE FROM `script_texts` WHERE `entry` BETWEEN -1603259 AND -1603240;
DELETE FROM `creature_text` WHERE `entry`=33350;
INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
(33350,0,0, 'Oh, my! I wasn''t expecting company! The workshop is such a mess! How embarrassing!',14,0,100,0,0,15611, 'Mimiron SAY_AGGRO'),
(33350,1,0, 'Now why would you go and do something like that? Didn''t you see the sign that said ''DO NOT PUSH THIS BUTTON!''? How will we finish testing with the self-destruct mechanism active?',14,0,100,0,0,15629, 'Mimiron SAY_HARDMODE_ON'),
(33350,2,0, 'We haven''t much time, friends! You''re going to help me test out my latest and greatest creation. Now, before you change your minds, remember, that you kind of owe it to me after the mess you made with the XT-002.',14,0,100,0,0,15612, 'Mimiron SAY_MKII_ACTIVATE'),
(33350,3,0, 'MEDIC!',14,0,100,0,0,15613, 'Mimiron SAY_MKII_SLAY_1'),
(33350,3,1, 'I can fix that... or, maybe not! Sheesh, what a mess...',14,0,100,0,0,15614, 'Mimiron SAY_MKII_SLAY_2'),
(33350,4,0, 'WONDERFUL! Positively marvelous results! Hull integrity at 98.9 percent! Barely a dent! Moving right along.',14,0,100,0,0,15615, 'Mimiron SAY_MKII_DEATH'),
(33350,5,0, 'Behold the VX-001 Anti-personnel Assault Cannon! You might want to take cover.',14,0,100,0,0,15616, 'Mimiron SAY_VX001_ACTIVATE'),
(33350,6,0, 'Fascinating. I think they call that a "clean kill".',14,0,100,0,0,15617, 'Mimiron SAY_VX001_SLAY_1'),
(33350,6,1, 'Note to self: Cannon highly effective against flesh.',14,0,100,0,0,15618, 'Mimiron SAY_VX001_SLAY_2'),
(33350,7,0, 'Thank you, friends! Your efforts have yielded some fantastic data! Now, where did I put- oh, there it is!',14,0,100,0,0,15619, 'Mimiron SAY_VX001_DEATH'),
(33350,8,0, 'Isn''t it beautiful? I call it the magnificent aerial command unit!',14,0,100,0,0,15620, 'Mimiron SAY_AERIAL_ACTIVATE'),
(33350,9,0, 'Outplayed!',14,0,100,0,0,15621, 'Mimiron SAY_AERIAL_SLAY_1'),
(33350,9,1, 'You can do better than that!',14,0,100,0,0,15622, 'Mimiron SAY_AERIAL_SLAY_2'),
(33350,10,0, 'Preliminary testing phase complete. Now comes the true test!!',14,0,100,0,0,15623, 'Mimiron SAY_AERIAL_DEATH'),
(33350,11,0, 'Gaze upon its magnificence! Bask in its glorious, um, glory! I present you... V-07-TR-0N!',14,0,100,0,0,15624, 'Mimiron SAY_V07TRON_ACTIVATE'),
(33350,12,0, 'Prognosis: Negative!',14,0,100,0,0,15625, 'Mimiron SAY_V07TRON_SLAY_1'),
(33350,12,1, 'You''re not going to get up from that one, friend.',14,0,100,0,0,15626, 'Mimiron SAY_V07TRON_SLAY_2'),
(33350,13,0, 'It would appear that I''ve made a slight miscalculation. I allowed my mind to be corrupted by the fiend in the prison, overriding my primary directive. All systems seem to be functional now. Clear.',14,0,100,0,0,15627, 'Mimiron SAY_V07TRON_DEATH'),
(33350,14,0, 'Oh, my! It would seem that we are out of time, my friends!',14,0,100,0,0,15628, 'Mimiron SAY_BERSERK'),
(33350,15,0, 'Combat matrix enhanced. Behold wonderous rapidity!',14,0,100,0,0,15630, 'Mimiron SAY_YS_HELP');
@@ -0,0 +1,12 @@
-- AzjolNerub/Ahnkahet/Elder Nadox
DELETE FROM `script_texts` WHERE `entry` BETWEEN -1619020 AND -1619014;
DELETE FROM `creature_text` WHERE `entry`=29309;
INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
(29309,0,0, 'The secrets of the deep shall remain hidden.',14,0,100,0,0,14033, 'SAY_AGGRO'),
(29309,1,0, 'Sleep now, in the cold dark.',14,0,100,0,0,14036, 'SAY_SLAY_1'),
(29309,1,1, 'For the Lich King!',14,0,100,0,0,14037, 'SAY_SLAY_2'),
(29309,1,2, 'Perhaps we will be allies soon.',14,0,100,0,0,14038, 'SAY_SLAY_3'),
(29309,2,0, 'Master, is my service complete?',14,0,100,0,0,14039, 'SAY_DEATH'),
(29309,3,0, 'The young must not grow hungry...',14,0,100,0,0,14034, 'SAY_EGG_SAC_1'),
(29309,3,1, 'Shhhad ak kereeesshh chak-k-k!',14,0,100,0,0,14035, 'SAY_EGG_SAC_2'),
(29309,4,0, 'An Ahn''kahar Guardian hatches!',16,0,100,0,0,14035, 'EMOTE_HATCHES');
@@ -0,0 +1,32 @@
-- Title converter
DROP TABLE IF EXISTS `player_factionchange_titles`;
CREATE TABLE `player_factionchange_titles` (
`alliance_id` int(8) NOT NULL,
`horde_id` int(8) NOT NULL,
PRIMARY KEY (`alliance_id`,`horde_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DELETE FROM `player_factionchange_titles` WHERE `alliance_id` IN (1,2,3,4,5,6,7,8,9,10,11,12,13,14,48,75,113,126,146,147,148,149);
INSERT INTO `player_factionchange_titles` (`alliance_id`,`horde_id`) VALUES
(1, 15),
(2, 16),
(3, 17),
(4, 18),
(5, 19),
(6, 20),
(7, 21),
(8, 22),
(9, 23),
(10, 24),
(11, 25),
(12, 26),
(13, 27),
(14, 28),
(48, 47),
(75, 76),
(113, 153),
(126, 127),
(146, 152),
(147, 154),
(148, 151),
(149, 150);
@@ -876,9 +876,9 @@ void BattlefieldWG::SendInitWorldStatesTo(Player* player)
data << uint32(m_ZoneId);
data << uint32(0);
data << uint16(10 + BuildingsInZone.size() + WorkshopsList.size()); // Number of fields
FillInitialWorldStates(data);
player->GetSession()->SendPacket(&data);
}
@@ -65,7 +65,7 @@ void BattlegroundWS::PostUpdateImpl(uint32 diff)
{
if (GetStatus() == STATUS_IN_PROGRESS)
{
if (GetStartTime() >= 25*MINUTE*IN_MILLISECONDS)
if (GetStartTime() >= 27*MINUTE*IN_MILLISECONDS)
{
if (GetTeamScore(ALLIANCE) == 0)
{
@@ -83,7 +83,8 @@ void BattlegroundWS::PostUpdateImpl(uint32 diff)
else
EndBattleground(ALLIANCE);
}
else if (GetStartTime() > uint32(_minutesElapsed * MINUTE * IN_MILLISECONDS))
// first update needed after 1 minute of game already in progress
else if (GetStartTime() > uint32(_minutesElapsed * MINUTE * IN_MILLISECONDS) + 3 * MINUTE * IN_MILLISECONDS)
{
++_minutesElapsed;
UpdateWorldState(BG_WS_STATE_TIMER, 25 - _minutesElapsed);
@@ -159,6 +160,17 @@ void BattlegroundWS::PostUpdateImpl(uint32 diff)
}
else
{
if (Player* player = ObjectAccessor::FindPlayer(m_FlagKeepers[0]))
{
player->RemoveAurasDueToSpell(WS_SPELL_FOCUSED_ASSAULT);
player->RemoveAurasDueToSpell(WS_SPELL_BRUTAL_ASSAULT);
}
if (Player* player = ObjectAccessor::FindPlayer(m_FlagKeepers[1]))
{
player->RemoveAurasDueToSpell(WS_SPELL_FOCUSED_ASSAULT);
player->RemoveAurasDueToSpell(WS_SPELL_BRUTAL_ASSAULT);
}
_flagSpellForceTimer = 0; //reset timer.
_flagDebuffState = 0;
}
@@ -826,23 +838,17 @@ void BattlegroundWS::FillInitialWorldStates(WorldPacket& data)
data << uint32(BG_WS_FLAG_CAPTURES_MAX) << uint32(BG_WS_MAX_TEAM_SCORE);
if (GetStatus() == STATUS_IN_PROGRESS)
{
data << uint32(BG_WS_STATE_TIMER_ACTIVE) << uint32(1);
data << uint32(BG_WS_STATE_TIMER) << uint32(25-_minutesElapsed);
}
else
data << uint32(BG_WS_STATE_TIMER_ACTIVE) << uint32(0);
if (_flagState[BG_TEAM_HORDE] == BG_WS_FLAG_STATE_ON_PLAYER)
data << uint32(BG_WS_FLAG_STATE_ALLIANCE) << uint32(2);
else
data << uint32(BG_WS_FLAG_STATE_ALLIANCE) << uint32(1);
if (_flagState[BG_TEAM_ALLIANCE] == BG_WS_FLAG_STATE_ON_PLAYER)
data << uint32(BG_WS_FLAG_STATE_HORDE) << uint32(2);
else
data << uint32(BG_WS_FLAG_STATE_HORDE) << uint32(1);
if (_flagState[BG_TEAM_ALLIANCE] == BG_WS_FLAG_STATE_ON_PLAYER)
data << uint32(BG_WS_FLAG_STATE_ALLIANCE) << uint32(2);
else
data << uint32(BG_WS_FLAG_STATE_ALLIANCE) << uint32(1);
data << uint32(BG_WS_STATE_TIMER_ACTIVE) << uint32(1);
data << uint32(BG_WS_STATE_TIMER) << uint32(25 - _minutesElapsed);
}
+1 -1
View File
@@ -9078,7 +9078,7 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid)
NumberOfFields = 83;
break;
case 3277:
NumberOfFields = 16;
NumberOfFields = 18;
break;
case 3358:
case 3820:
+1 -1
View File
@@ -6673,7 +6673,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere
{
victim->CastCustomSpell(beaconTarget, triggered_spell_id, &basepoints0, NULL, NULL, true, 0, triggeredByAura);
return true;
}
}
else
return false;
}
+35
View File
@@ -8605,6 +8605,41 @@ void ObjectMgr::LoadFactionChangeReputations()
sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded %u faction change reputation pairs in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
void ObjectMgr::LoadFactionChangeTitles()
{
uint32 oldMSTime = getMSTime();
QueryResult result = WorldDatabase.Query("SELECT alliance_id, horde_id FROM player_factionchange_titles");
if (!result)
{
sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded 0 faction change title pairs. DB table `player_factionchange_title` is empty.");
return;
}
uint32 count = 0;
do
{
Field* fields = result->Fetch();
uint32 alliance = fields[0].GetUInt32();
uint32 horde = fields[1].GetUInt32();
if (!sCharTitlesStore.LookupEntry(alliance))
sLog->outError(LOG_FILTER_SQL, "Title %u referenced in `player_factionchange_title` does not exist, pair skipped!", alliance);
else if (!sCharTitlesStore.LookupEntry(horde))
sLog->outError(LOG_FILTER_SQL, "Title %u referenced in `player_factionchange_title` does not exist, pair skipped!", horde);
else
FactionChange_Titles[alliance] = horde;
++count;
}
while (result->NextRow());
sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded %u faction change title pairs in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
GameObjectTemplate const* ObjectMgr::GetGameObjectTemplate(uint32 entry)
{
GameObjectTemplateContainer::const_iterator itr = _gameObjectTemplateStore.find(entry);
+2
View File
@@ -1139,11 +1139,13 @@ class ObjectMgr
CharacterConversionMap FactionChange_Items;
CharacterConversionMap FactionChange_Spells;
CharacterConversionMap FactionChange_Reputation;
CharacterConversionMap FactionChange_Titles;
void LoadFactionChangeAchievements();
void LoadFactionChangeItems();
void LoadFactionChangeSpells();
void LoadFactionChangeReputations();
void LoadFactionChangeTitles();
private:
// first free id for selected id type
@@ -1644,6 +1644,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recv_data)
uint32 level = uint32(fields[1].GetUInt8());
uint32 at_loginFlags = fields[2].GetUInt16();
uint32 used_loginFlag = ((recv_data.GetOpcode() == CMSG_CHAR_RACE_CHANGE) ? AT_LOGIN_CHANGE_RACE : AT_LOGIN_CHANGE_FACTION);
char const* knownTitlesStr = fields[3].GetCString();
if (!sObjectMgr->GetPlayerInfo(race, playerClass))
{
@@ -2014,6 +2015,70 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recv_data)
stmt->setUInt32(2, lowGuid);
trans->Append(stmt);
}
// Title conversion
if (knownTitlesStr)
{
const uint32 ktcount = KNOWN_TITLES_SIZE * 2;
uint32 knownTitles[ktcount];
Tokens tokens(knownTitlesStr, ' ', ktcount);
if (tokens.size() != ktcount)
return;
for (uint32 index = 0; index < ktcount; ++index)
knownTitles[index] = atol(tokens[index]);
for (std::map<uint32, uint32>::const_iterator it = sObjectMgr->FactionChange_Titles.begin(); it != sObjectMgr->FactionChange_Titles.end(); ++it)
{
uint32 title_alliance = it->first;
uint32 title_horde = it->second;
CharTitlesEntry const* atitleInfo = sCharTitlesStore.LookupEntry(title_alliance);
CharTitlesEntry const* htitleInfo = sCharTitlesStore.LookupEntry(title_horde);
// new team
if (team == BG_TEAM_ALLIANCE)
{
uint32 bitIndex = htitleInfo->bit_index;
uint32 index = bitIndex / 32;
uint32 old_flag = 1 << (bitIndex % 32);
uint32 new_flag = 1 << (atitleInfo->bit_index % 32);
if (knownTitles[index] & old_flag)
{
knownTitles[index] &= ~old_flag;
// use index of the new title
knownTitles[atitleInfo->bit_index / 32] |= new_flag;
}
}
else
{
uint32 bitIndex = atitleInfo->bit_index;
uint32 index = bitIndex / 32;
uint32 old_flag = 1 << (bitIndex % 32);
uint32 new_flag = 1 << (htitleInfo->bit_index % 32);
if (knownTitles[index] & old_flag)
{
knownTitles[index] &= ~old_flag;
// use index of the new title
knownTitles[htitleInfo->bit_index / 32] |= new_flag;
}
}
std::ostringstream ss;
for (uint32 index = 0; index < ktcount; ++index)
ss << knownTitles[index] << ' ';
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TITLES_FACTION_CHANGE);
stmt->setString(0, ss.str().c_str());
stmt->setUInt32(1, lowGuid);
trans->Append(stmt);
// unset any currently chosen title
stmt = CharacterDatabase.GetPreparedStatement(CHAR_RES_CHAR_TITLES_FACTION_CHANGE);
stmt->setUInt32(0, lowGuid);
trans->Append(stmt);
}
}
}
CharacterDatabase.CommitTransaction(trans);
+3
View File
@@ -1625,6 +1625,9 @@ void World::SetInitialWorldSettings()
sLog->outInfo(LOG_FILTER_SERVER_LOADING, "Loading faction change reputation pairs...");
sObjectMgr->LoadFactionChangeReputations();
sLog->outInfo(LOG_FILTER_SERVER_LOADING, "Loading faction change title pairs...");
sObjectMgr->LoadFactionChangeTitles();
sLog->outInfo(LOG_FILTER_SERVER_LOADING, "Loading GM tickets...");
sTicketMgr->LoadTickets();
@@ -19,16 +19,13 @@
#include "ScriptedCreature.h"
#include "ahnkahet.h"
//not in db
enum Yells
{
SAY_AGGRO = -1619014,
SAY_SLAY_1 = -1619015,
SAY_SLAY_2 = -1619016,
SAY_SLAY_3 = -1619017,
SAY_DEATH = -1619018,
SAY_EGG_SAC_1 = -1619019,
SAY_EGG_SAC_2 = -1619020
SAY_AGGRO = 0,
SAY_SLAY = 1,
SAY_DEATH = 2,
SAY_EGG_SAC = 3,
EMOTE_HATCHES = 4
};
enum Spells
@@ -50,8 +47,6 @@ enum Creatures
#define ACTION_AHNKAHAR_GUARDIAN_DEAD 1
#define DATA_RESPECT_YOUR_ELDERS 2
#define EMOTE_HATCHES "An Ahn'kahar Guardian hatches!"
class boss_elder_nadox : public CreatureScript
{
public:
@@ -61,7 +56,7 @@ class boss_elder_nadox : public CreatureScript
{
boss_elder_nadoxAI(Creature* creature) : ScriptedAI(creature)
{
instance = me->GetInstanceScript();
instance = creature->GetInstanceScript();
}
uint32 uiPlagueTimer;
@@ -78,16 +73,13 @@ class boss_elder_nadox : public CreatureScript
void Reset()
{
uiPlagueTimer = 13000;
uiRagueTimer = 20000;
uiPlagueTimer = 13000;
uiRagueTimer = 20000;
uiSwarmerSpawnTimer = 10000;
uiGuardSpawnTimer = 25000;
uiEnrageTimer = 5000;
bGuardSpawned = false;
respectYourElders = true;
uiGuardSpawnTimer = 25000;
uiEnrageTimer = 5000;
bGuardSpawned = false;
respectYourElders = true;
if (instance)
instance->SetData(DATA_ELDER_NADOX_EVENT, NOT_STARTED);
@@ -95,7 +87,7 @@ class boss_elder_nadox : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
DoScriptText(SAY_DEATH, me);
Talk(SAY_AGGRO);
if (instance)
instance->SetData(DATA_ELDER_NADOX_EVENT, IN_PROGRESS);
@@ -103,12 +95,12 @@ class boss_elder_nadox : public CreatureScript
void KilledUnit(Unit* /*who*/)
{
DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3), me);
Talk(SAY_SLAY);
}
void JustDied(Unit* /*killer*/)
{
DoScriptText(SAY_SLAY_3, me); //SAY_SLAY_3 on death?
Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_ELDER_NADOX_EVENT, DONE);
@@ -135,7 +127,7 @@ class boss_elder_nadox : public CreatureScript
if (uiPlagueTimer <= diff)
{
DoCast(me->getVictim(), SPELL_BROOD_PLAGUE);
DoCastVictim(SPELL_BROOD_PLAGUE);
uiPlagueTimer = 15000;
}
else
@@ -160,7 +152,7 @@ class boss_elder_nadox : public CreatureScript
DoCast(me, SPELL_SUMMON_SWARMERS, true);
DoCast(me, SPELL_SUMMON_SWARMERS);
if (urand(1, 3) == 3) // 33% chance of dialog
DoScriptText(RAND(SAY_EGG_SAC_1, SAY_EGG_SAC_2), me);
Talk(SAY_EGG_SAC);
uiSwarmerSpawnTimer = 10000;
}
@@ -169,7 +161,7 @@ class boss_elder_nadox : public CreatureScript
if (!bGuardSpawned && uiGuardSpawnTimer <= diff)
{
me->MonsterTextEmote(EMOTE_HATCHES, me->GetGUID(), true);
Talk(EMOTE_HATCHES, me->GetGUID());
DoCast(me, SPELL_SUMMON_SWARM_GUARD);
bGuardSpawned = true;
}
@@ -217,7 +209,7 @@ class mob_ahnkahar_nerubian : public CreatureScript
{
mob_ahnkahar_nerubianAI(Creature* creature) : ScriptedAI(creature)
{
instance = me->GetInstanceScript();
instance = creature->GetInstanceScript();
}
InstanceScript* instance;
@@ -237,9 +229,7 @@ class mob_ahnkahar_nerubian : public CreatureScript
Nadox->AI()->DoAction(ACTION_AHNKAHAR_GUARDIAN_DEAD);
}
void EnterCombat(Unit* /*who*/)
{
}
void EnterCombat(Unit* /*who*/) {}
void UpdateAI(uint32 const diff)
{
@@ -300,9 +290,7 @@ public:
class achievement_respect_your_elders : public AchievementCriteriaScript
{
public:
achievement_respect_your_elders() : AchievementCriteriaScript("achievement_respect_your_elders")
{
}
achievement_respect_your_elders() : AchievementCriteriaScript("achievement_respect_your_elders") {}
bool OnCheck(Player* /*player*/, Unit* target)
{
@@ -21,97 +21,93 @@
enum Yells
{
SAY_AGGRO = -1603240,
SAY_HARDMODE_ON = -1603241,
SAY_MKII_ACTIVATE = -1603242,
SAY_MKII_SLAY_1 = -1603243,
SAY_MKII_SLAY_2 = -1603244,
SAY_MKII_DEATH = -1603245,
SAY_VX001_ACTIVATE = -1603246,
SAY_VX001_SLAY_1 = -1603247,
SAY_VX001_SLAY_2 = -1603248,
SAY_VX001_DEATH = -1603249,
SAY_AERIAL_ACTIVATE = -1603250,
SAY_AERIAL_SLAY_1 = -1603251,
SAY_AERIAL_SLAY_2 = -1603252,
SAY_AERIAL_DEATH = -1603253,
SAY_V07TRON_ACTIVATE = -1603254,
SAY_V07TRON_SLAY_1 = -1603255,
SAY_V07TRON_SLAY_2 = -1603256,
SAY_V07TRON_DEATH = -1603257,
SAY_BERSERK = -1603258,
SAY_YS_HELP = -1603259,
SAY_AGGRO = 0,
SAY_HARDMODE_ON = 1,
SAY_MKII_ACTIVATE = 2,
SAY_MKII_SLAY = 3,
SAY_MKII_DEATH = 4,
SAY_VX001_ACTIVATE = 5,
SAY_VX001_SLAY = 6,
SAY_VX001_DEATH = 7,
SAY_AERIAL_ACTIVATE = 8,
SAY_AERIAL_SLAY = 9,
SAY_AERIAL_DEATH = 10,
SAY_V07TRON_ACTIVATE = 11,
SAY_V07TRON_SLAY = 12,
SAY_V07TRON_DEATH = 13,
SAY_BERSERK = 14,
SAY_YS_HELP = 15
};
enum Spells
{
SPELL_JETPACK = 63341,
SPELL_EMERGENCY_MODE = 64582,
SPELL_SELF_REPAIR = 64383,
SPELL_MAGNETIC_CORE = 64444,
// Leviathan MK II
SPELL_FLAME_SUPPRESSANT_MK = 64570,
SPELL_NAPALM_SHELL = 63666,
SPELL_PLASMA_BLAST = 62977,
SPELL_PROXIMITY_MINES = 63027,
SPELL_SHOCK_BLAST = 63631,
// VX 001
SPELL_FLAME_SUPPRESSANT_VX = 65192,
SPELL_FROSTBOMB = 64623,
SPELL_HAND_PULSE = 64348,
SPELL_SPINNING_UP = 63414,
SPELL_RAPID_BURST = 63387,
SPELL_P3WX2_LASER_BARRAGE = 63293,
SPELL_ROCKET_STRIKE = 63041,
SPELL_HEAT_WAVE = 63677,
// Aerial Command Unit
SPELL_PLASMA_BALL = 63689,
// Additonal spells
SPELL_MAGNETIC_FIELD = 64668,
SPELL_DEAFENING_SIREN = 64616,
SPELL_WATER_SPRAY = 64619,
SPELL_FROST_BOMB_HARD_MODE = 64627,
SPELL_EXPLOSION = 66351,
SPELL_DISARM = 1842,
SPELL_RIDE_VEHICLE = 46598,
SPELL_TRIGGER_MISSILE = 65347,
SPELL_JETPACK = 63341,
SPELL_EMERGENCY_MODE = 64582,
SPELL_SELF_REPAIR = 64383,
SPELL_MAGNETIC_CORE = 64444,
// Leviathan MK II
SPELL_FLAME_SUPPRESSANT_MK = 64570,
SPELL_NAPALM_SHELL = 63666,
SPELL_PLASMA_BLAST = 62977,
SPELL_PROXIMITY_MINES = 63027,
SPELL_SHOCK_BLAST = 63631,
// VX 001
SPELL_FLAME_SUPPRESSANT_VX = 65192,
SPELL_FROSTBOMB = 64623,
SPELL_HAND_PULSE = 64348,
SPELL_SPINNING_UP = 63414,
SPELL_RAPID_BURST = 63387,
SPELL_P3WX2_LASER_BARRAGE = 63293,
SPELL_ROCKET_STRIKE = 63041,
SPELL_HEAT_WAVE = 63677,
// Aerial Command Unit
SPELL_PLASMA_BALL = 63689,
// Additonal spells
SPELL_MAGNETIC_FIELD = 64668,
SPELL_DEAFENING_SIREN = 64616,
SPELL_WATER_SPRAY = 64619,
SPELL_FROST_BOMB_HARD_MODE = 64627,
SPELL_EXPLOSION = 66351,
SPELL_DISARM = 1842,
SPELL_RIDE_VEHICLE = 46598,
SPELL_TRIGGER_MISSILE = 65347,
};
enum Npc
{
NPC_ASSAULT_BOT = 34057,
NPC_BOMB_BOT = 33836,
NPC_JUNK_BOT = 33855,
NPC_EMERGENCE_FIRE_BOT = 34147,
NPC_FROST_BOMB = 34149,
NPC_ASSAULT_BOT = 34057,
NPC_BOMB_BOT = 33836,
NPC_JUNK_BOT = 33855,
NPC_EMERGENCE_FIRE_BOT = 34147,
NPC_FROST_BOMB = 34149,
};
class spell_ulduar_proximity_mines : public SpellScriptLoader
{
public:
spell_ulduar_proximity_mines() : SpellScriptLoader("spell_ulduar_proximity_mines") { }
public:
spell_ulduar_proximity_mines() : SpellScriptLoader("spell_ulduar_proximity_mines") { }
class spell_ulduar_proximity_minesSpellScript : public SpellScript
{
PrepareSpellScript(spell_ulduar_proximity_minesSpellScript)
class spell_ulduar_proximity_minesSpellScript : public SpellScript
{
PrepareSpellScript(spell_ulduar_proximity_minesSpellScript)
void HandleScript(SpellEffIndex effIndex)
{
PreventHitDefaultEffect(effIndex);
for (uint8 i = 0; i < 10; ++i)
GetCaster()->CastSpell(GetCaster(), SPELL_TRIGGER_MISSILE, true);
}
void HandleScript(SpellEffIndex effIndex)
{
PreventHitDefaultEffect(effIndex);
for (uint8 i = 0; i < 10; ++i)
GetCaster()->CastSpell(GetCaster(), SPELL_TRIGGER_MISSILE, true);
}
void Register()
{
OnEffectHitTarget += SpellEffectFn(spell_ulduar_proximity_minesSpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
void Register()
{
OnEffectHitTarget += SpellEffectFn(spell_ulduar_proximity_minesSpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const
{
return new spell_ulduar_proximity_minesSpellScript();
}
SpellScript* GetSpellScript() const
{
return new spell_ulduar_proximity_minesSpellScript();
}
};
void AddSC_boss_mimiron()
+1 -1
View File
@@ -627,7 +627,7 @@ class spell_pal_divine_sacrifice : public SpellScriptLoader
bool Load()
{
if (Unit* caster = GetCaster())
{
if (caster->GetTypeId() == TYPEID_PLAYER)
@@ -420,7 +420,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PREPARE_STATEMENT(CHAR_SEL_CHAR_GUID_NAME_BY_ACC, "SELECT guid, name FROM characters WHERE account = ?", CONNECTION_SYNCH);
PREPARE_STATEMENT(CHAR_SEL_POOL_QUEST_SAVE, "SELECT quest_id FROM pool_quest_save WHERE pool_id = ?", CONNECTION_SYNCH);
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_AT_LOGIN, "SELECT at_login FROM characters WHERE guid = ?", CONNECTION_SYNCH);
PREPARE_STATEMENT(CHAR_SEL_CHAR_CLASS_LVL_AT_LOGIN, "SELECT class, level, at_login FROM characters WHERE guid = ?", CONNECTION_SYNCH);
PREPARE_STATEMENT(CHAR_SEL_CHAR_CLASS_LVL_AT_LOGIN, "SELECT class, level, at_login, knownTitles FROM characters WHERE guid = ?", CONNECTION_SYNCH);
PREPARE_STATEMENT(CHAR_SEL_INSTANCE, "SELECT data, completedEncounters FROM instance WHERE map = ? AND id = ?", CONNECTION_SYNCH);
PREPARE_STATEMENT(CHAR_SEL_PET_SPELL_LIST, "SELECT DISTINCT pet_spell.spell FROM pet_spell, character_pet WHERE character_pet.owner = ? AND character_pet.id = pet_spell.guid AND character_pet.id <> ?", CONNECTION_SYNCH);
PREPARE_STATEMENT(CHAR_SEL_CHAR_PET, "SELECT id FROM character_pet WHERE owner = ? AND id <> ?", CONNECTION_SYNCH);
@@ -499,6 +499,8 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PREPARE_STATEMENT(CHAR_UPD_CHAR_SPELL_FACTION_CHANGE, "UPDATE character_spell SET spell = ? where spell = ? AND guid = ?", CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_DEL_CHAR_REP_BY_FACTION, "DELETE FROM character_reputation WHERE faction = ? AND guid = ?", CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_UPD_CHAR_REP_FACTION_CHANGE, "UPDATE character_reputation SET faction = ? where faction = ? AND guid = ?", CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_UPD_CHAR_TITLES_FACTION_CHANGE, "UPDATE characters SET knownTitles = ? WHERE guid = ?", CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_RES_CHAR_TITLES_FACTION_CHANGE, "UPDATE characters SET chosenTitle = 0 WHERE guid = ?", CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_DEL_CHAR_SPELL_COOLDOWN, "DELETE FROM character_spell_cooldown WHERE guid = ?", CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_DEL_CHARACTER, "DELETE FROM characters WHERE guid = ?", CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_DEL_CHAR_ACTION, "DELETE FROM character_action WHERE guid = ?", CONNECTION_ASYNC);
@@ -462,6 +462,8 @@ enum CharacterDatabaseStatements
CHAR_UPD_CHAR_SPELL_FACTION_CHANGE,
CHAR_DEL_CHAR_REP_BY_FACTION,
CHAR_UPD_CHAR_REP_FACTION_CHANGE,
CHAR_UPD_CHAR_TITLES_FACTION_CHANGE,
CHAR_RES_CHAR_TITLES_FACTION_CHANGE,
CHAR_DEL_CHAR_SPELL_COOLDOWN,
CHAR_DEL_CHARACTER,
CHAR_DEL_CHAR_ACTION,