mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-27 12:22:39 +01:00
Blackrock Spire: Implements Leroy Jenkins achievement, by Spichy.
Fixes issue #1073. Please, post your contribution following our coding style, otherwise I have to waste a lot of time cleaning up the code --HG-- branch : trunk
This commit is contained in:
@@ -35,6 +35,7 @@ SET(scripts_STAT_SRCS
|
||||
eastern_kingdoms/blackrock_depths/boss_tomb_of_seven.cpp
|
||||
eastern_kingdoms/blackrock_depths/blackrock_depths.h
|
||||
eastern_kingdoms/blackrock_depths/instance_blackrock_depths.cpp
|
||||
eastern_kingdoms/blackrock_spire/blackrock_spire.cpp
|
||||
eastern_kingdoms/blackrock_spire/boss_drakkisath.cpp
|
||||
eastern_kingdoms/blackrock_spire/boss_gyth.cpp
|
||||
eastern_kingdoms/blackrock_spire/boss_halycon.cpp
|
||||
@@ -47,6 +48,8 @@ SET(scripts_STAT_SRCS
|
||||
eastern_kingdoms/blackrock_spire/boss_shadow_hunter_voshgajin.cpp
|
||||
eastern_kingdoms/blackrock_spire/boss_the_beast.cpp
|
||||
eastern_kingdoms/blackrock_spire/boss_warmaster_voone.cpp
|
||||
eastern_kingdoms/blackrock_spire/blackrock_spire.h
|
||||
eastern_kingdoms/blackrock_spire/instance_blackrock_spire.cpp
|
||||
eastern_kingdoms/blackwing_lair/boss_broodlord_lashlayer.cpp
|
||||
eastern_kingdoms/blackwing_lair/boss_chromaggus.cpp
|
||||
eastern_kingdoms/blackwing_lair/boss_ebonroc.cpp
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
/* Copyright (C) 2008 - 2010 TrinityCore <http://www.trinitycore.org>
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "ScriptedPch.h"
|
||||
#include "blackrock_spire.h"
|
||||
|
||||
enum Creatures
|
||||
{
|
||||
NPC_ROOKERY_WHELP = 10161
|
||||
};
|
||||
|
||||
struct npc_rookey_whelpAI : public ScriptedAI
|
||||
{
|
||||
npc_rookey_whelpAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
|
||||
void JustDied(Unit *who)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetData(WHELP_DEATH_COUNT, pInstance->GetData(WHELP_DEATH_COUNT)+1);
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_rookey_whelp(Creature* pCreature)
|
||||
{
|
||||
return new npc_rookey_whelpAI(pCreature);
|
||||
}
|
||||
|
||||
bool GOHello_rookey_egg(Player *pPlayer, GameObject *pGO)
|
||||
{
|
||||
Position pos;
|
||||
pPlayer->GetPosition(&pos);
|
||||
pPlayer->SummonCreature(NPC_ROOKERY_WHELP, pos, TEMPSUMMON_TIMED_DESPAWN, 15*IN_MILISECONDS);
|
||||
//destroy gobject need to be implemented
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
void AddSC_blackrock_spire()
|
||||
{
|
||||
Script *newscript;
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "npc_rookey_whelp";
|
||||
newscript->GetAI = &GetAI_rookey_whelp;
|
||||
newscript->RegisterSelf();
|
||||
newscript = new Script;
|
||||
|
||||
newscript->Name = "go_rookey_egg";
|
||||
newscript->pGOHello = &GOHello_rookey_egg;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
/* Copyright (C) 2008 - 2010 TrinityCore <http://www.trinitycore.org>
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef DEF_BRS_H
|
||||
#define DEF_BRS_H
|
||||
|
||||
enum Data
|
||||
{
|
||||
EVENT_LEEEROY,
|
||||
WHELP_DEATH_COUNT
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,104 @@
|
||||
/* Copyright (C) 2008 - 2010 TrinityCore <http://www.trinitycore.org>
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "ScriptedPch.h"
|
||||
#include "blackrock_spire.h"
|
||||
|
||||
enum Achievements
|
||||
{
|
||||
ACHIEV_LEROY_JENKINS = 2188
|
||||
};
|
||||
|
||||
struct instance_blackrock_spire : public ScriptedInstance
|
||||
{
|
||||
instance_blackrock_spire(Map* pMap) : ScriptedInstance(pMap) {}
|
||||
|
||||
uint32 uiLeeroyTimer;
|
||||
uint32 uiWhelpCount;
|
||||
uint32 uiLeroyData;
|
||||
|
||||
bool bLeeeeeeeeroy;
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiLeeroyTimer = 15*IN_MILISECONDS;
|
||||
uiWhelpCount = 0;
|
||||
bLeeeeeeeeroy = true;
|
||||
uiLeroyData = 0;
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 data)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case EVENT_LEEEROY:
|
||||
if (data == DONE)
|
||||
DoCompleteAchievement(ACHIEV_LEROY_JENKINS);
|
||||
uiLeroyData = data;
|
||||
break;
|
||||
case WHELP_DEATH_COUNT:
|
||||
if (data == 1)
|
||||
{
|
||||
SetData(EVENT_LEEEROY, IN_PROGRESS);
|
||||
//DoSendNotifyToInstance("Leeeeeeeeeeeeeroy! Started");
|
||||
}
|
||||
uiWhelpCount = data;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 type)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case EVENT_LEEEROY: return uiLeroyData;
|
||||
case WHELP_DEATH_COUNT: return uiWhelpCount;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Update(uint32 diff)
|
||||
{
|
||||
if (GetData(EVENT_LEEEROY) != FAIL && GetData(EVENT_LEEEROY) == IN_PROGRESS)
|
||||
{
|
||||
if (uiLeeroyTimer <= diff)
|
||||
{
|
||||
SetData(EVENT_LEEEROY, FAIL);
|
||||
bLeeeeeeeeroy = false;
|
||||
//DoSendNotifyToInstance("Leeeeeeeeeeeeeroy! Failed");
|
||||
} else uiLeeroyTimer -= diff;
|
||||
if (uiWhelpCount >= 50 && bLeeeeeeeeroy)
|
||||
{
|
||||
SetData(EVENT_LEEEROY, DONE);
|
||||
//DoSendNotifyToInstance("Leeeeeeeeeeeeeroy! Success");
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
InstanceData* GetInstanceData_instance_blackrock_spire(Map* pMap)
|
||||
{
|
||||
return new instance_blackrock_spire(pMap);
|
||||
}
|
||||
|
||||
void AddSC_instance_blackrock_spire()
|
||||
{
|
||||
Script *newscript;
|
||||
newscript = new Script;
|
||||
newscript->Name = "instance_blackrock_spire";
|
||||
newscript->GetInstanceData = &GetInstanceData_instance_blackrock_spire;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
Reference in New Issue
Block a user