mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-24 02:46:33 +01:00
[svn] Script for quest 1719. Patch provided by ckegg.
--HG-- branch : trunk
This commit is contained in:
@@ -164,7 +164,199 @@ bool ReciveEmote_npc_taskmaster_fizzule(Player *player, Creature *_Creature, uin
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/*#####
|
||||
## npc_twiggy_flathead
|
||||
#####*/
|
||||
|
||||
#define BIG_WILL 6238
|
||||
#define AFFRAY_CHALLENGER 6240
|
||||
#define SAY_BIG_WILL_READY "Ready when you are, warrior"
|
||||
#define SAY_TWIGGY_FLATHEAD_BEGIN "The Affray has begun, get ready to fight!"
|
||||
#define SAY_TWIGGY_FLATHEAD_FRAY "You! Enter the fray!"
|
||||
#define SAY_TWIGGY_FLATHEAD_DOWN "Challenger is down!"
|
||||
#define SAY_TWIGGY_FLATHEAD_OVER "The Affray is over"
|
||||
|
||||
float AffrayChallengerLoc[6][4]=
|
||||
{
|
||||
{-1683, -4326, 2.79, 0},
|
||||
{-1682, -4329, 2.79, 0},
|
||||
{-1683, -4330, 2.79, 0},
|
||||
{-1680, -4334, 2.79, 1.49},
|
||||
{-1674, -4326, 2.79, 3.49},
|
||||
{-1677, -4334, 2.79, 1.66}
|
||||
};
|
||||
|
||||
struct TRINITY_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI
|
||||
{
|
||||
npc_twiggy_flatheadAI(Creature *c) : ScriptedAI(c) {Reset();}
|
||||
|
||||
bool EventInProgress;
|
||||
bool EventGrate;
|
||||
bool EventBigWill;
|
||||
bool Challenger_down[6];
|
||||
uint32 Wave;
|
||||
uint32 Wave_Timer;
|
||||
uint32 Challenger_checker;
|
||||
uint64 PlayerGUID;
|
||||
uint64 AffrayChallenger[6];
|
||||
uint64 BigWill;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
EventInProgress = false;
|
||||
EventGrate = false;
|
||||
EventBigWill = false;
|
||||
Wave_Timer = 600000;
|
||||
Challenger_checker = 0;
|
||||
Wave = 0;
|
||||
PlayerGUID = 0;
|
||||
|
||||
for(uint8 i = 0; i < 6; i++) {
|
||||
AffrayChallenger[i] = 0;
|
||||
Challenger_down[i] = false;
|
||||
}
|
||||
BigWill = 0;
|
||||
}
|
||||
|
||||
void Aggro(Unit *who) { }
|
||||
|
||||
void MoveInLineOfSight(Unit *who)
|
||||
{
|
||||
if(!who || (!who->isAlive())) return;
|
||||
|
||||
if (m_creature->IsWithinDistInMap(who, 10.0f) && (who->GetTypeId() == TYPEID_PLAYER) && ((Player*)who)->GetQuestStatus(1719) == QUEST_STATUS_INCOMPLETE && !EventInProgress)
|
||||
{
|
||||
PlayerGUID = who->GetGUID();
|
||||
EventInProgress = true;
|
||||
}
|
||||
}
|
||||
|
||||
void KilledUnit(Unit *victim) { }
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (EventInProgress) {
|
||||
Player* pWarrior = NULL;
|
||||
|
||||
if(PlayerGUID)
|
||||
pWarrior = ((Player*)Unit::GetUnit((*m_creature), PlayerGUID));
|
||||
|
||||
if(!pWarrior)
|
||||
return;
|
||||
|
||||
if(!pWarrior->isAlive() && pWarrior->GetQuestStatus(1719) == QUEST_STATUS_INCOMPLETE) {
|
||||
EventInProgress = false;
|
||||
DoYell(SAY_TWIGGY_FLATHEAD_DOWN,LANG_UNIVERSAL,NULL);
|
||||
pWarrior->FailQuest(1719);
|
||||
|
||||
for(uint8 i = 0; i < 6; i++) {
|
||||
if (AffrayChallenger[i]) {
|
||||
Creature* pCreature = (Creature*)Unit::GetUnit((*m_creature), AffrayChallenger[i]);
|
||||
if(pCreature) {
|
||||
if(pCreature->isAlive()) {
|
||||
pCreature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT);
|
||||
pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
pCreature->setDeathState(JUST_DIED);
|
||||
}
|
||||
}
|
||||
}
|
||||
AffrayChallenger[i] = 0;
|
||||
Challenger_down[i] = false;
|
||||
}
|
||||
|
||||
if (BigWill) {
|
||||
Creature* pCreature = (Creature*)Unit::GetUnit((*m_creature), BigWill);
|
||||
if(pCreature) {
|
||||
if(pCreature->isAlive()) {
|
||||
pCreature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT);
|
||||
pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
pCreature->setDeathState(JUST_DIED);
|
||||
}
|
||||
}
|
||||
}
|
||||
BigWill = 0;
|
||||
}
|
||||
|
||||
if (!EventGrate && EventInProgress) {
|
||||
float x,y,z;
|
||||
pWarrior->GetPosition(x, y, z);
|
||||
|
||||
if (x >= -1684 && x <= -1674 && y >= -4334 && y <= -4324) {
|
||||
pWarrior->AreaExploredOrEventHappens(1719);
|
||||
DoYell(SAY_TWIGGY_FLATHEAD_BEGIN,LANG_UNIVERSAL,NULL);
|
||||
|
||||
for(uint8 i = 0; i < 6; i++) {
|
||||
Creature* pCreature = m_creature->SummonCreature(AFFRAY_CHALLENGER, AffrayChallengerLoc[i][0], AffrayChallengerLoc[i][1], AffrayChallengerLoc[i][2], AffrayChallengerLoc[i][3], TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 600000);
|
||||
pCreature->setFaction(35);
|
||||
pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
pCreature->HandleEmoteCommand(15);
|
||||
AffrayChallenger[i] = pCreature->GetGUID();
|
||||
}
|
||||
Wave_Timer = 5000;
|
||||
Challenger_checker = 1000;
|
||||
EventGrate = true;
|
||||
}
|
||||
}
|
||||
else if (EventInProgress) {
|
||||
if (Challenger_checker < diff) {
|
||||
for(uint8 i = 0; i < 6; i++) {
|
||||
if (AffrayChallenger[i]) {
|
||||
Creature* pCreature = (Creature*)Unit::GetUnit((*m_creature), AffrayChallenger[i]);
|
||||
if((!pCreature || (!pCreature->isAlive())) && !Challenger_down[i]) {
|
||||
DoYell(SAY_TWIGGY_FLATHEAD_DOWN,LANG_UNIVERSAL,NULL);
|
||||
Challenger_down[i] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Challenger_checker = 1000;
|
||||
} else Challenger_checker -= diff;
|
||||
|
||||
if(Wave_Timer < diff) {
|
||||
if (AffrayChallenger[Wave] && Wave < 6 && !EventBigWill) {
|
||||
DoYell(SAY_TWIGGY_FLATHEAD_FRAY,LANG_UNIVERSAL,NULL);
|
||||
Creature* pCreature = (Creature*)Unit::GetUnit((*m_creature), AffrayChallenger[Wave]);
|
||||
if(pCreature || (pCreature->isAlive())) {
|
||||
pCreature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
pCreature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
pCreature->HandleEmoteCommand(15);
|
||||
pCreature->setFaction(14);
|
||||
((CreatureAI*)pCreature->AI())->AttackStart(pWarrior);
|
||||
Wave++;
|
||||
Wave_Timer = 20000;
|
||||
}
|
||||
}
|
||||
else if (Wave >= 6 && !EventBigWill) {
|
||||
Creature* pCreature = m_creature->SummonCreature(BIG_WILL, -1722, -4341, 6.12, 6.26, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 480000);
|
||||
BigWill = pCreature->GetGUID();
|
||||
//pCreature->GetMotionMaster()->MovePoint(0, -1693, -4343, 4.32);
|
||||
//pCreature->GetMotionMaster()->MovePoint(1, -1684, -4333, 2.78);
|
||||
pCreature->GetMotionMaster()->MovePoint(2, -1682, -4329, 2.79);
|
||||
//pCreature->HandleEmoteCommand(15);
|
||||
pCreature->HandleEmoteCommand(27);
|
||||
EventBigWill = true;
|
||||
Wave_Timer = 1000;
|
||||
}
|
||||
else if (Wave >= 6 && EventBigWill && BigWill) {
|
||||
Creature* pCreature = (Creature*)Unit::GetUnit((*m_creature), BigWill);
|
||||
if (!pCreature->isAlive()) {
|
||||
DoYell(SAY_TWIGGY_FLATHEAD_OVER,LANG_UNIVERSAL,NULL);
|
||||
EventInProgress = false;
|
||||
EventBigWill = false;
|
||||
EventGrate = false;
|
||||
PlayerGUID = 0;
|
||||
Wave = 0;
|
||||
}
|
||||
}
|
||||
} else Wave_Timer -= diff;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
CreatureAI* GetAI_npc_twiggy_flathead(Creature *_Creature)
|
||||
{
|
||||
return new npc_twiggy_flatheadAI (_Creature);
|
||||
}
|
||||
void AddSC_the_barrens()
|
||||
{
|
||||
Script *newscript;
|
||||
@@ -186,4 +378,9 @@ void AddSC_the_barrens()
|
||||
newscript->GetAI = GetAI_npc_taskmaster_fizzule;
|
||||
newscript->pReceiveEmote = &ReciveEmote_npc_taskmaster_fizzule;
|
||||
m_scripts[nrscripts++] = newscript;
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name="npc_twiggy_flathead";
|
||||
newscript->GetAI = GetAI_npc_twiggy_flathead;
|
||||
m_scripts[nrscripts++] = newscript;
|
||||
}
|
||||
|
||||
1
src/bindings/scripts/sql/Updates/r82_trinity.sql
Normal file
1
src/bindings/scripts/sql/Updates/r82_trinity.sql
Normal file
@@ -0,0 +1 @@
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_twiggy_flathead' WHERE `entry` =6248;
|
||||
Reference in New Issue
Block a user