Scripts/Events: Implemented Selina Dourman / Darkmoon Faire (#28036)

This commit is contained in:
Meji
2022-07-02 00:24:11 +02:00
committed by GitHub
parent 4ac86c13d2
commit 1a967dcd14
3 changed files with 270 additions and 0 deletions

View File

@@ -0,0 +1,100 @@
-- Selina Dourman
UPDATE `creature_template` SET `AIName`='', `ScriptName`='npc_selina_dourman' WHERE `entry`=10445;
UPDATE `gossip_menu_option` SET `VerifiedBuild`=44127 WHERE `MenuID`=13076;
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=13075;
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=13113;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(14,13075,18362,0,0,22,1,974,0,0,1,0,0,'','Show gossip text 18362 if creature is not located in Darkmoon Faire'),
(14,13075,18372,0,0,22,1,974,0,0,0,0,0,'','Show gossip text 18372 if creature is located in Darkmoon Faire'),
(15,13113,0,0,0,2,0,71634,1,1,1,0,0,'','Show gossip option if player does not have has Darkmoon Adventurer''s Guide'),
(15,13113,0,0,0,47,0,7905,64,0,0,0,0,'','Show gossip option if quest 7905 is rewarded'),
(15,13113,0,0,1,2,0,71634,1,1,1,0,0,'','Show gossip option if player does not have has Darkmoon Adventurer''s Guide'),
(15,13113,0,0,1,47,0,7926,64,0,0,0,0,'','Show gossip option if quest 7926 is rewarded');
DELETE FROM `creature_text` WHERE `CreatureID`=10445;
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `SoundPlayType`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(10445, 0, 0, 'Welcome to the Darkmoon Faire, $c!', 12, 0, 100, 70, 0, 0, 0, 53804, 0, 'Selina Dourman - Welcome Random text'),
(10445, 0, 1, 'Welcome to the Darkmoon Faire!', 12, 0, 100, 70, 0, 0, 0, 53805, 0, 'Selina Dourman - Welcome Random text'),
(10445, 0, 2, 'Welcome!', 12, 0, 100, 70, 0, 0, 0, 53806, 0, 'Selina Dourman - Welcome Random text'),
(10445, 0, 3, 'Greetings!', 12, 0, 100, 70, 0, 0, 0, 53808, 0, 'Selina Dourman - Welcome Random text');
DELETE FROM `smart_scripts` WHERE `entryorguid`=10445;
DELETE FROM `areatrigger_scripts` WHERE `entry`=7016;
INSERT INTO `areatrigger_scripts` VALUES
(7016, 'at_darkmoon_faire_entrance');
DELETE FROM `points_of_interest` WHERE `ID` BETWEEN 10463 AND 10468;
DELETE FROM `points_of_interest` WHERE `ID` BETWEEN 2716 AND 2721;
INSERT INTO `points_of_interest` (`ID`, `PositionX`, `PositionY`, `PositionZ`, `Icon`, `Flags`, `Importance`, `Name`, `Unknown905`, `VerifiedBuild`) VALUES
(2716, -3998.494873046875, 6280.140625, 13.06377983093261718, 7, 99, 0, 'AAA Whack-a-Gnoll', 0, 44127),
(2717, -4018.01904296875, 6292.56103515625, 13.03492259979248046, 7, 99, 0, 'AAA Cannon', 0, 44127),
(2718, -4076.423583984375, 6351.39599609375, 13.00009632110595703, 7, 99, 0, 'AAA Shooting Gallery', 0, 44127),
(2719, -4128.34033203125, 6324.9287109375, 13.11676025390625, 7, 99, 0, 'AAA Tonk Arena', 0, 44127),
(2720, -4263.24853515625, 6281.23095703125, 13.11678886413574218, 7, 99, 0, 'AAA Fortune Teller', 0, 44127),
(2721, -4290.15625, 6308.5537109375, 13.11675357818603515, 7, 99, 0, 'AAA Ring Toss', 0, 44127);
DELETE FROM `points_of_interest_locale` WHERE `ID` BETWEEN 2716 AND 2721;
INSERT INTO `points_of_interest_locale` (`ID`, `locale`, `Name`, `VerifiedBuild`) VALUES
(2716, 'deDE', 'Hau-den-Gnoll', 44127),
(2716, 'esES', 'AAA Whack-a-Gnoll', 44127),
(2716, 'esMX', 'AAA Whack-a-Gnoll', 44127),
(2716, 'frFR', 'AAA Cogne-Gnoll', 44127),
(2716, 'itIT', 'AAA Pesta-lo-Gnoll', 44127),
(2716, 'koKR', 'AAA 놀 때려잡기', 44127),
(2716, 'ptBR', 'AAA Pancada-no-Gnoll', 44127),
(2716, 'ruRU', 'ААА Гноллобой', 44127),
(2716, 'zhCN', '3A级打豺狼人', 44127),
(2716, 'zhTW', 'AAA痛扁豺狼人', 44127),
(2717, 'deDE', 'Kanone', 44127),
(2717, 'esES', 'AAA Cannon', 44127),
(2717, 'esMX', 'AAA Cannon', 44127),
(2717, 'frFR', 'AAA Canon', 44127),
(2717, 'itIT', 'AAA Cannone', 44127),
(2717, 'koKR', 'AAA 대포', 44127),
(2717, 'ptBR', 'AAA Canhão', 44127),
(2717, 'ruRU', 'ААА Пушка', 44127),
(2717, 'zhCN', '3A级暗月大炮', 44127),
(2717, 'zhTW', 'AAA火砲', 44127),
(2718, 'deDE', 'Schießbude', 44127),
(2718, 'esES', 'AAA Shooting Gallery', 44127),
(2718, 'esMX', 'AAA Shooting Gallery', 44127),
(2718, 'frFR', 'AAA Stand de tir', 44127),
(2718, 'itIT', 'AAA Tiro a Segno', 44127),
(2718, 'koKR', 'AAA 사격 연습장', 44127),
(2718, 'ptBR', 'AAA Galeria de Tiro', 44127),
(2718, 'ruRU', 'ААА Тир', 44127),
(2718, 'zhCN', '3A级射击场', 44127),
(2718, 'zhTW', 'AAA打靶場', 44127),
(2719, 'deDE', 'Panzerarena', 44127),
(2719, 'esES', 'AAA Tonk Arena', 44127),
(2719, 'esMX', 'AAA Tonk Arena', 44127),
(2719, 'frFR', 'AAA Arène à chariottes', 44127),
(2719, 'itIT', 'AAA Arena dei Carri Giocattoli', 44127),
(2719, 'koKR', 'AAA 통통 전차 게임장', 44127),
(2719, 'ptBR', 'AAA Arena de Tonques', 44127),
(2719, 'ruRU', 'ААА Танковая арена', 44127),
(2719, 'zhCN', '3A级蒸汽坦克竞技场', 44127),
(2719, 'zhTW', 'AAA坦克競技場', 44127),
(2720, 'deDE', 'Wahrsager', 44127),
(2720, 'esES', 'AAA Fortune Teller', 44127),
(2720, 'esMX', 'AAA Fortune Teller', 44127),
(2720, 'frFR', 'AAA Diseuse de bonne aventure', 44127),
(2720, 'itIT', 'AAA Indovina', 44127),
(2720, 'koKR', 'AAA 점술소', 44127),
(2720, 'ptBR', 'AAA Cartomante', 44127),
(2720, 'ruRU', 'ААА Предсказание судьбы', 44127),
(2720, 'zhCN', '3A级占卜师', 44127),
(2720, 'zhTW', 'AAA占卜師', 44127),
(2721, 'deDE', 'Ringwurf', 44127),
(2721, 'esES', 'AAA Ring Toss', 44127),
(2721, 'esMX', 'AAA Ring Toss', 44127),
(2721, 'frFR', 'AAA Lancer d\anneaux', 44127),
(2721, 'itIT', 'AAA Lancio degli Anelli', 44127),
(2721, 'koKR', 'AAA 고리 던지기', 44127),
(2721, 'ptBR', 'AAA Arremesso de Argolas', 44127),
(2721, 'ruRU', 'ААА Метание колец', 44127),
(2721, 'zhCN', '3A级套圈圈', 44127),
(2721, 'zhTW', 'AAA丟圈圈', 44127);

View File

@@ -0,0 +1,168 @@
/*
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
*
* 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 "ScriptMgr.h"
#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
enum Creatures
{
NPC_SELINA_DOURMAN = 10445
};
enum Events
{
EVENT_SELINA_TALK_COOLDOWN = 1
};
enum Gossips
{
GOSSIP_MENU_SELINA_POIS = 13076,
GOSSIP_MENU_SELINA_ITEM = 13113
};
enum GossipMenuOptions
{
GOSSIP_MENU_OPTION_TONK_ARENA_POI = 0,
GOSSIP_MENU_OPTION_CANNON_POI = 1,
GOSSIP_MENU_OPTION_WHACK_A_GNOLL_POI = 2,
GOSSIP_MENU_OPTION_RING_TOSS_POI = 3,
GOSSIP_MENU_OPTION_SHOOTING_GALLERY_POI = 4,
GOSSIP_MENU_OPTION_FORTUNE_TELLER_POI = 5
};
enum PointsOfInterest
{
POI_WHACK_A_GNOLL = 2716,
POI_CANNON = 2717,
POI_SHOOTING_GALLERY = 2718,
POI_TONK_ARENA = 2719,
POI_FORTUNE_TELLER = 2720,
POI_RING_TOSS = 2721
};
enum Spells
{
SPELL_REPLACE_DARKMOON_ADVENTURES_GUIDE = 103413
};
enum Texts
{
SAY_WELCOME = 0
};
// 10445 - Selina Dourman
struct npc_selina_dourman : public ScriptedAI
{
npc_selina_dourman(Creature* creature) : ScriptedAI(creature), _talkCooldown(false) { }
bool OnGossipSelect(Player* player, uint32 menuId, uint32 gossipListId) override
{
switch (menuId)
{
case GOSSIP_MENU_SELINA_POIS:
{
uint32 poiId = 0;
switch (gossipListId)
{
case GOSSIP_MENU_OPTION_TONK_ARENA_POI:
poiId = POI_TONK_ARENA;
break;
case GOSSIP_MENU_OPTION_CANNON_POI:
poiId = POI_CANNON;
break;
case GOSSIP_MENU_OPTION_WHACK_A_GNOLL_POI:
poiId = POI_WHACK_A_GNOLL;
break;
case GOSSIP_MENU_OPTION_RING_TOSS_POI:
poiId = POI_RING_TOSS;
break;
case GOSSIP_MENU_OPTION_SHOOTING_GALLERY_POI:
poiId = POI_SHOOTING_GALLERY;
break;
case GOSSIP_MENU_OPTION_FORTUNE_TELLER_POI:
poiId = POI_FORTUNE_TELLER;
break;
default:
break;
}
if (poiId)
player->PlayerTalkClass->SendPointOfInterest(poiId);
break;
}
case GOSSIP_MENU_SELINA_ITEM:
me->CastSpell(player, SPELL_REPLACE_DARKMOON_ADVENTURES_GUIDE);
CloseGossipMenuFor(player);
break;
default:
break;
}
return false;
}
void DoWelcomeTalk(Unit* talkTarget)
{
if (!talkTarget || _talkCooldown)
return;
_talkCooldown = true;
_events.ScheduleEvent(EVENT_SELINA_TALK_COOLDOWN, 30s);
Talk(SAY_WELCOME, talkTarget);
}
void UpdateAI(uint32 diff) override
{
_events.Update(diff);
switch (_events.ExecuteEvent())
{
case EVENT_SELINA_TALK_COOLDOWN:
_talkCooldown = false;
break;
default:
break;
}
}
private:
EventMap _events;
bool _talkCooldown;
};
// 7016 - Darkmoon Faire Entrance
class at_darkmoon_faire_entrance : public AreaTriggerScript
{
public:
at_darkmoon_faire_entrance() : AreaTriggerScript("at_darkmoon_faire_entrance") { }
bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
{
if (Creature* selinaDourman = player->FindNearestCreature(NPC_SELINA_DOURMAN, 50.f))
if (npc_selina_dourman* selinaDourmanAI = CAST_AI(npc_selina_dourman, selinaDourman->GetAI()))
selinaDourmanAI->DoWelcomeTalk(player);
return true;
}
};
void AddSC_event_darkmoon_faire()
{
RegisterCreatureAI(npc_selina_dourman);
new at_darkmoon_faire_entrance();
}

View File

@@ -18,6 +18,7 @@
// This is where scripts' loading functions should be declared:
void AddSC_event_brewfest();
void AddSC_event_childrens_week();
void AddSC_event_darkmoon_faire();
void AddSC_event_fireworks();
void AddSC_event_hallows_end();
void AddSC_event_love_is_in_the_air();
@@ -34,6 +35,7 @@ void AddEventsScripts()
{
AddSC_event_brewfest();
AddSC_event_childrens_week();
AddSC_event_darkmoon_faire();
AddSC_event_fireworks();
AddSC_event_hallows_end();
AddSC_event_love_is_in_the_air();