mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 01:15:35 +01:00
Merge pull request #8127 from Gacko/childrens_week
Core/DB: Children's Week
This commit is contained in:
@@ -44,6 +44,7 @@ if(SCRIPTS)
|
||||
include(Kalimdor/CMakeLists.txt)
|
||||
include(Outland/CMakeLists.txt)
|
||||
include(Northrend/CMakeLists.txt)
|
||||
include(Events/CMakeLists.txt)
|
||||
endif()
|
||||
|
||||
message(STATUS "SCRIPT PREPARATION COMPLETE")
|
||||
|
||||
17
src/server/scripts/Events/CMakeLists.txt
Normal file
17
src/server/scripts/Events/CMakeLists.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
|
||||
#
|
||||
# This file is free software; as a special exception the author gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
set(scripts_STAT_SRCS
|
||||
${scripts_STAT_SRCS}
|
||||
Events/childrens_week.cpp
|
||||
Events/event.cpp
|
||||
)
|
||||
|
||||
message(" -> Prepared: Events")
|
||||
1049
src/server/scripts/Events/childrens_week.cpp
Normal file
1049
src/server/scripts/Events/childrens_week.cpp
Normal file
File diff suppressed because it is too large
Load Diff
25
src/server/scripts/Events/event.cpp
Normal file
25
src/server/scripts/Events/event.cpp
Normal file
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2012 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "ScriptPCH.h"
|
||||
|
||||
void AddSC_event_childrens_week();
|
||||
|
||||
void AddSC_event_scripts()
|
||||
{
|
||||
AddSC_event_childrens_week();
|
||||
}
|
||||
@@ -470,11 +470,27 @@ public:
|
||||
|
||||
enum utils
|
||||
{
|
||||
NPC_HEMET = 27986,
|
||||
NPC_HADRIUS = 28047,
|
||||
NPC_TAMARA = 28568,
|
||||
SPELL_OFFER = 51962,
|
||||
QUEST_ENTRY = 12645,
|
||||
NPC_HEMET = 27986,
|
||||
NPC_HADRIUS = 28047,
|
||||
NPC_TAMARA = 28568,
|
||||
SPELL_OFFER = 51962,
|
||||
QUEST_ENTRY = 12645,
|
||||
};
|
||||
|
||||
enum NesingwaryChildrensWeek
|
||||
{
|
||||
SPELL_ORPHAN_OUT = 58818,
|
||||
|
||||
QUEST_THE_MIGHTY_HEMET_NESINGWARY = 13957,
|
||||
|
||||
ORPHAN_WOLVAR = 33532,
|
||||
|
||||
TEXT_WOLVAR_ORPHAN_6 = 6,
|
||||
TEXT_WOLVAR_ORPHAN_7 = 7,
|
||||
TEXT_WOLVAR_ORPHAN_8 = 8,
|
||||
TEXT_WOLVAR_ORPHAN_9 = 9,
|
||||
|
||||
TEXT_NESINGWARY_1 = 1,
|
||||
};
|
||||
|
||||
class npc_jungle_punch_target : public CreatureScript
|
||||
@@ -486,17 +502,86 @@ public:
|
||||
{
|
||||
npc_jungle_punch_targetAI(Creature* creature) : ScriptedAI(creature) {}
|
||||
|
||||
uint16 sayTimer;
|
||||
uint8 sayStep;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
sayTimer = 3500;
|
||||
sayStep = 0;
|
||||
timer = 0;
|
||||
phase = 0;
|
||||
playerGUID = 0;
|
||||
orphanGUID = 0;
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* who)
|
||||
{
|
||||
if (!phase && who && who->GetDistance2d(me) < 10.0f)
|
||||
if (Player* player = who->ToPlayer())
|
||||
if (player->GetQuestStatus(QUEST_THE_MIGHTY_HEMET_NESINGWARY) == QUEST_STATUS_INCOMPLETE)
|
||||
{
|
||||
playerGUID = player->GetGUID();
|
||||
if (Aura* orphanOut = player->GetAura(SPELL_ORPHAN_OUT))
|
||||
if (orphanOut->GetCaster() && orphanOut->GetCaster()->GetEntry() == ORPHAN_WOLVAR)
|
||||
{
|
||||
orphanGUID = orphanOut->GetCaster()->GetGUID();
|
||||
phase = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void proceedCwEvent(const uint32 diff)
|
||||
{
|
||||
if (timer <= diff)
|
||||
{
|
||||
Player* player = Player::GetPlayer(*me, playerGUID);
|
||||
Creature* orphan = Creature::GetCreature(*me, orphanGUID);
|
||||
|
||||
if(!orphan || !player)
|
||||
{
|
||||
Reset();
|
||||
return;
|
||||
}
|
||||
|
||||
switch(phase)
|
||||
{
|
||||
case 1:
|
||||
orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ());
|
||||
orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_6);
|
||||
timer = 5000;
|
||||
break;
|
||||
case 2:
|
||||
orphan->SetFacingToObject(me);
|
||||
orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_7);
|
||||
timer = 5000;
|
||||
break;
|
||||
case 3:
|
||||
Talk(TEXT_NESINGWARY_1);
|
||||
timer = 5000;
|
||||
break;
|
||||
case 4:
|
||||
orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_8);
|
||||
timer = 5000;
|
||||
break;
|
||||
case 5:
|
||||
orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_9);
|
||||
timer = 5000;
|
||||
break;
|
||||
case 6:
|
||||
orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
|
||||
player->GroupEventHappens(QUEST_THE_MIGHTY_HEMET_NESINGWARY, me);
|
||||
Reset();
|
||||
return;
|
||||
}
|
||||
++phase;
|
||||
}
|
||||
else
|
||||
timer -= diff;
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
{
|
||||
if (phase)
|
||||
proceedCwEvent(uiDiff);
|
||||
|
||||
if (!sayStep)
|
||||
return;
|
||||
|
||||
@@ -588,6 +673,14 @@ public:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
uint16 sayTimer;
|
||||
uint8 sayStep;
|
||||
uint32 timer;
|
||||
int8 phase;
|
||||
uint64 playerGUID;
|
||||
uint64 orphanGUID;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
|
||||
@@ -235,21 +235,19 @@ enum eWaygate
|
||||
|
||||
QUEST_THE_MAKERS_OVERLOOK = 12613,
|
||||
QUEST_THE_MAKERS_PERCH = 12559,
|
||||
QUEST_MEETING_A_GREAT_ONE = 13956,
|
||||
};
|
||||
|
||||
class AreaTrigger_at_sholazar_waygate : public AreaTriggerScript
|
||||
{
|
||||
public:
|
||||
|
||||
AreaTrigger_at_sholazar_waygate()
|
||||
: AreaTriggerScript("at_sholazar_waygate")
|
||||
{
|
||||
}
|
||||
AreaTrigger_at_sholazar_waygate() : AreaTriggerScript("at_sholazar_waygate") {}
|
||||
|
||||
bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
|
||||
{
|
||||
if (player->GetQuestStatus(QUEST_THE_MAKERS_OVERLOOK) == QUEST_STATUS_REWARDED && !player->isDead() &&
|
||||
player->GetQuestStatus(QUEST_THE_MAKERS_PERCH) == QUEST_STATUS_REWARDED)
|
||||
if (!player->isDead() && (player->GetQuestStatus(QUEST_MEETING_A_GREAT_ONE) != QUEST_STATUS_NONE ||
|
||||
(player->GetQuestStatus(QUEST_THE_MAKERS_OVERLOOK) == QUEST_STATUS_REWARDED && player->GetQuestStatus(QUEST_THE_MAKERS_PERCH) == QUEST_STATUS_REWARDED)))
|
||||
{
|
||||
switch (trigger->id)
|
||||
{
|
||||
@@ -302,76 +300,6 @@ class AreaTrigger_at_nats_landing : public AreaTriggerScript
|
||||
}
|
||||
};
|
||||
|
||||
/*######
|
||||
## 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
|
||||
######*/
|
||||
@@ -505,7 +433,6 @@ void AddSC_areatrigger_scripts()
|
||||
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();
|
||||
new AreaTrigger_at_area_52_entrance();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user