TrinityCore
Loading...
Searching...
No Matches
go_scripts.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18/* ContentData
19go_ethereum_prison
20go_ethereum_stasis
21go_southfury_moonstone
22go_resonite_cask
23go_tablet_of_the_seven
24go_tele_to_dalaran_crystal
25go_tele_to_violet_stand
26go_soulwell
27go_amberpine_outhouse
28go_veil_skith_cage
29go_bells
30EndContentData */
31
32#include "ScriptMgr.h"
33#include "DB2Structure.h"
34#include "GameEventMgr.h"
35#include "GameObject.h"
36#include "GameObjectAI.h"
37#include "GameTime.h"
38#include "Log.h"
39#include "MotionMaster.h"
40#include "Player.h"
41#include "ScriptedCreature.h"
42#include "ScriptedGossip.h"
43#include "TemporarySummon.h"
44#include "WorldSession.h"
45
46/*######
47## go_gilded_brazier (Paladin First Trail quest (9678))
48######*/
49
55
57{
58public:
59 go_gilded_brazier() : GameObjectScript("go_gilded_brazier") { }
60
62 {
64
65 bool OnGossipHello(Player* player) override
66 {
68 {
70 {
71 if (Creature* Stillblade = player->SummonCreature(NPC_STILLBLADE, 8106.11f, -7542.06f, 151.775f, 3.02598f, TEMPSUMMON_DEAD_DESPAWN, 1min))
72 Stillblade->AI()->AttackStart(player);
73 }
74 }
75 return true;
76 }
77 };
78
79 GameObjectAI* GetAI(GameObject* go) const override
80 {
81 return new go_gilded_brazierAI(go);
82 }
83};
84
85/*######
86## go_tablet_of_the_seven
87######*/
88
90{
91public:
92 go_tablet_of_the_seven() : GameObjectScript("go_tablet_of_the_seven") { }
93
95 {
97
99 bool OnGossipHello(Player* player) override
100 {
102 return true;
103
104 if (player->GetQuestStatus(4296) == QUEST_STATUS_INCOMPLETE)
105 player->CastSpell(player, 15065, false);
106
107 return true;
108 }
109 };
110
111 GameObjectAI* GetAI(GameObject* go) const override
112 {
113 return new go_tablet_of_the_sevenAI(go);
114 }
115};
116
117/*######
118## go_ethereum_prison
119######*/
120
130
132{
133 22810, 22811, 22812, 22813, 22814, 22815, //good guys
134 20783, 20784, 20785, 20786, 20788, 20789, 20790 //bad guys
135};
136
138{
139public:
140 go_ethereum_prison() : GameObjectScript("go_ethereum_prison") { }
141
143 {
145
146 bool OnGossipHello(Player* player) override
147 {
149 int Random = rand32() % (sizeof(NpcPrisonEntry) / sizeof(uint32));
150
153 {
154 if (!creature->IsHostileTo(player))
155 {
156 if (FactionTemplateEntry const* pFaction = creature->GetFactionTemplateEntry())
157 {
158 uint32 Spell = 0;
159
160 switch (pFaction->Faction)
161 {
162 case 1011: Spell = SPELL_REP_LC; break;
163 case 935: Spell = SPELL_REP_SHAT; break;
164 case 942: Spell = SPELL_REP_CE; break;
165 case 933: Spell = SPELL_REP_CON; break;
166 case 989: Spell = SPELL_REP_KT; break;
167 case 970: Spell = SPELL_REP_SPOR; break;
168 }
169
170 if (Spell)
171 creature->CastSpell(player, Spell, false);
172 else
173 TC_LOG_ERROR("scripts", "go_ethereum_prison summoned Creature (entry {}) but faction ({}) are not expected by script.", creature->GetEntry(), creature->GetFaction());
174 }
175 }
176 }
177
178 return false;
179 }
180 };
181
182 GameObjectAI* GetAI(GameObject* go) const override
183 {
184 return new go_ethereum_prisonAI(go);
185 }
186};
187
188/*######
189## go_ethereum_stasis
190######*/
191
193{
194 22825, 20888, 22827, 22826, 22828
195};
196
198{
199public:
200 go_ethereum_stasis() : GameObjectScript("go_ethereum_stasis") { }
201
203 {
205
206 bool OnGossipHello(Player* player) override
207 {
209 int Random = rand32() % (sizeof(NpcStasisEntry) / sizeof(uint32));
210
213
214 return false;
215 }
216 };
217
218 GameObjectAI* GetAI(GameObject* go) const override
219 {
220 return new go_ethereum_stasisAI(go);
221 }
222};
223
224/*######
225## go_resonite_cask
226######*/
227
229{
230 NPC_GOGGEROC = 11920
232
234{
235public:
236 go_resonite_cask() : GameObjectScript("go_resonite_cask") { }
237
239 {
241
242 bool OnGossipHello(Player* /*player*/) override
243 {
246
247 return false;
248 }
249 };
250
251 GameObjectAI* GetAI(GameObject* go) const override
252 {
253 return new go_resonite_caskAI(go);
254 }
255};
256
257/*######
258## go_southfury_moonstone
259######*/
260
262{
263 NPC_RIZZLE = 23002,
264 SPELL_BLACKJACK = 39865, //stuns player
265 SPELL_SUMMON_RIZZLE = 39866
267
269{
270public:
271 go_southfury_moonstone() : GameObjectScript("go_southfury_moonstone") { }
272
274 {
276
277 bool OnGossipHello(Player* player) override
278 {
279 //implicitTarget=48 not implemented as of writing this code, and manual summon may be just ok for our purpose
280 //player->CastSpell(player, SPELL_SUMMON_RIZZLE, false);
281
282 if (Creature* creature = player->SummonCreature(NPC_RIZZLE, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_DEAD_DESPAWN))
283 creature->CastSpell(player, SPELL_BLACKJACK, false);
284
285 return false;
286 }
287 };
288
289 GameObjectAI* GetAI(GameObject* go) const override
290 {
291 return new go_southfury_moonstoneAI(go);
292 }
293};
294
295/*######
296## go_tele_to_dalaran_crystal
297######*/
298
304
305#define GO_TELE_TO_DALARAN_CRYSTAL_FAILED "This teleport crystal cannot be used until the teleport crystal in Dalaran has been used at least once."
306
308{
309public:
310 go_tele_to_dalaran_crystal() : GameObjectScript("go_tele_to_dalaran_crystal") { }
311
313 {
315
316 bool OnGossipHello(Player* player) override
317 {
319 return false;
320
322 return true;
323 }
324 };
325
326 GameObjectAI* GetAI(GameObject* go) const override
327 {
328 return new go_tele_to_dalaran_crystalAI(go);
329 }
330};
331
332/*######
333## go_tele_to_violet_stand
334######*/
335
337{
338public:
339 go_tele_to_violet_stand() : GameObjectScript("go_tele_to_violet_stand") { }
340
342 {
344
345 bool OnGossipHello(Player* player) override
346 {
348 return false;
349
350 return true;
351 }
352 };
353
354 GameObjectAI* GetAI(GameObject* go) const override
355 {
356 return new go_tele_to_violet_standAI(go);
357 }
358};
359
360/*######
361## go_blood_filled_orb
362######*/
363
365{
366 NPC_ZELEMAR = 17830
367
369
371{
372public:
373 go_blood_filled_orb() : GameObjectScript("go_blood_filled_orb") { }
374
376 {
378
379 bool OnGossipHello(Player* player) override
380 {
382 player->SummonCreature(NPC_ZELEMAR, -369.746f, 166.759f, -21.50f, 5.235f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30s);
383
384 return true;
385 }
386 };
387
388 GameObjectAI* GetAI(GameObject* go) const override
389 {
390 return new go_blood_filled_orbAI(go);
391 }
392};
393
394/*######
395## go_amberpine_outhouse
396######*/
397
398#define GOSSIP_USE_OUTHOUSE "Use the outhouse."
399#define GO_ANDERHOLS_SLIDER_CIDER_NOT_FOUND "Quest item Anderhol's Slider Cider not found."
400
412
414{
415public:
416 go_amberpine_outhouse() : GameObjectScript("go_amberpine_outhouse") { }
417
419 {
421
422 bool OnGossipHello(Player* player) override
423 {
425 if (status == QUEST_STATUS_INCOMPLETE || status == QUEST_STATUS_COMPLETE || status == QUEST_STATUS_REWARDED)
426 {
429 }
430 else
432
433 return true;
434 }
435
436 bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
437 {
438 uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);
439 ClearGossipMenuFor(player);
440 if (action == GOSSIP_ACTION_INFO_DEF + 1)
441 {
442 CloseGossipMenuFor(player);
444 if (target)
445 {
446 target->AI()->SetData(1, player->GetNativeGender());
448 }
449 me->CastSpell(player, SPELL_INDISPOSED);
452 return true;
453 }
454 else
455 {
456 CloseGossipMenuFor(player);
458 return false;
459 }
460 }
461 };
462
463 GameObjectAI* GetAI(GameObject* go) const override
464 {
465 return new go_amberpine_outhouseAI(go);
466 }
467};
468
470{
471 public:
472 go_massive_seaforium_charge() : GameObjectScript("go_massive_seaforium_charge") { }
473
475 {
477
478 bool OnGossipHello(Player* /*player*/) override
479 {
481 return true;
482 }
483 };
484
485 GameObjectAI* GetAI(GameObject* go) const override
486 {
487 return new go_massive_seaforium_chargeAI(go);
488 }
489};
490
491/*########
492#### go_veil_skith_cage
493#####*/
494
501
503{
504 public:
505 go_veil_skith_cage() : GameObjectScript("go_veil_skith_cage") { }
506
508 {
510
511 bool OnGossipHello(Player* player) override
512 {
515 {
516 std::vector<Creature*> childrenList;
518 for (Creature* creature : childrenList)
519 {
520 player->KilledMonsterCredit(NPC_CAPTIVE_CHILD, creature->GetGUID());
521 creature->DespawnOrUnsummon(5s);
522 creature->GetMotionMaster()->MovePoint(1, me->GetPositionX() + 5, me->GetPositionY(), me->GetPositionZ());
523 creature->AI()->Talk(SAY_FREE_0);
524 creature->GetMotionMaster()->Clear();
525 }
526 }
527 return false;
528 }
529 };
530
531 GameObjectAI* GetAI(GameObject* go) const override
532 {
533 return new go_veil_skith_cageAI(go);
534 }
535};
536
537/*######
538## go_midsummer_bonfire
539######*/
540
545
547{
548public:
549 go_midsummer_bonfire() : GameObjectScript("go_midsummer_bonfire") { }
550
552 {
554
555 bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 /*gossipListId*/) override
556 {
557 player->CastSpell(player, STAMP_OUT_BONFIRE_QUEST_COMPLETE, true);
558 CloseGossipMenuFor(player);
559 return false;
560 }
561 };
562
563 GameObjectAI* GetAI(GameObject* go) const override
564 {
565 return new go_midsummer_bonfireAI(go);
566 }
567};
568
577
584
586{
587public:
588 go_midsummer_ribbon_pole() : GameObjectScript("go_midsummer_ribbon_pole") { }
589
591 {
593
594 bool OnGossipHello(Player* player) override
595 {
596 if (Creature* creature = me->FindNearestCreature(NPC_POLE_RIBBON_BUNNY, 10.0f))
597 {
598 creature->GetAI()->DoAction(ACTION_COSMETIC_FIRES);
599 player->CastSpell(player, RibbonPoleSpells[urand(0, 2)], true);
600 }
601 return true;
602 }
603 };
604
605 GameObjectAI* GetAI(GameObject* go) const override
606 {
607 return new go_midsummer_ribbon_poleAI(go);
608 }
609};
610
611/*####
612## go_brewfest_music
613####*/
614
616{
617 EVENT_BREWFESTDWARF01 = 11810, // 1.35 min
618 EVENT_BREWFESTDWARF02 = 11812, // 1.55 min
619 EVENT_BREWFESTDWARF03 = 11813, // 0.23 min
620 EVENT_BREWFESTGOBLIN01 = 11811, // 1.08 min
621 EVENT_BREWFESTGOBLIN02 = 11814, // 1.33 min
622 EVENT_BREWFESTGOBLIN03 = 11815 // 0.28 min
624
631
633{
634 SILVERMOON = 3430, // Horde
635 UNDERCITY = 1497,
639 IRONFORGE_1 = 809, // Alliance
642 EXODAR = 3557,
643 DARNASSUS = 1657,
644 SHATTRATH = 3703 // General
646
652
654{
655public:
656 go_brewfest_music() : GameObjectScript("go_brewfest_music") { }
657
659 {
662
668
669 void UpdateAI(uint32 diff) override
670 {
671 _events.Update(diff);
672 while (uint32 eventId = _events.ExecuteEvent())
673 {
674 switch (eventId)
675 {
677 if (!IsHolidayActive(HOLIDAY_BREWFEST)) // Check if Brewfest is active
678 break;
679 rnd = urand(0, 2); // Select random music sample
680 _events.ScheduleEvent(EVENT_BM_SELECT_MUSIC, musicTime); // Select new song music after play time is over
681 break;
683 if (!IsHolidayActive(HOLIDAY_BREWFEST)) // Check if Brewfest is active
684 break;
685
686 switch (me->GetAreaId())
687 {
688 // Horde
689 case SILVERMOON:
690 case UNDERCITY:
691 case ORGRIMMAR_1:
692 case ORGRIMMAR_2:
693 case THUNDERBLUFF:
694 if (rnd == 0)
695 {
698 }
699 else if (rnd == 1)
700 {
703 }
704 else
705 {
708 }
709 break;
710 // Alliance
711 case IRONFORGE_1:
712 case IRONFORGE_2:
713 case STORMWIND:
714 case EXODAR:
715 case DARNASSUS:
716 if (rnd == 0)
717 {
720 }
721 else if (rnd == 1)
722 {
725 }
726 else
727 {
730 }
731 break;
732 // Neurtal
733 case SHATTRATH:
734 std::vector<Player*> playersNearby;
735 me->GetPlayerListInGrid(playersNearby, me->GetVisibilityRange());
736 for (Player* player : playersNearby)
737 {
738 if (player->GetTeamId() == TEAM_HORDE)
739 {
740 if (rnd == 0)
741 {
744 }
745 else if (rnd == 1)
746 {
749 }
750 else
751 {
754 }
755 }
756 else
757 {
758 if (rnd == 0)
759 {
762 }
763 else if (rnd == 1)
764 {
767 }
768 else
769 {
772 }
773 }
774 }
775 break;
776 }
777
778 _events.ScheduleEvent(EVENT_BM_START_MUSIC, 5s); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client
779 break;
780 default:
781 break;
782 }
783 }
784 }
785 private:
787 };
788
789 GameObjectAI* GetAI(GameObject* go) const override
790 {
791 return new go_brewfest_musicAI(go);
792 }
793};
794
795/*####
796## go_midsummer_music
797####*/
798
800{
801 EVENTMIDSUMMERFIREFESTIVAL_A = 12319, // 1.08 min
802 EVENTMIDSUMMERFIREFESTIVAL_H = 12325, // 1.12 min
803};
804
809
811{
812public:
813 go_midsummer_music() : GameObjectScript("go_midsummer_music") { }
814
816 {
821
822 void UpdateAI(uint32 diff) override
823 {
824 _events.Update(diff);
825 while (uint32 eventId = _events.ExecuteEvent())
826 {
827 switch (eventId)
828 {
830 {
832 break;
833
834 std::vector<Player*> playersNearby;
835 me->GetPlayerListInGrid(playersNearby, me->GetVisibilityRange());
836 for (Player* player : playersNearby)
837 {
838 if (player->GetTeamId() == TEAM_HORDE)
840 else
842 }
843 _events.ScheduleEvent(EVENT_MM_START_MUSIC, 5s); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client (sniffed value)
844 break;
845 }
846 default:
847 break;
848 }
849 }
850 }
851 private:
853 };
854
855 GameObjectAI* GetAI(GameObject* go) const override
856 {
857 return new go_midsummer_musicAI(go);
858 }
859};
860
861/*####
862## go_darkmoon_faire_music
863####*/
864
869
874
876{
877public:
878 go_darkmoon_faire_music() : GameObjectScript("go_darkmoon_faire_music") { }
879
881 {
886
887 void UpdateAI(uint32 diff) override
888 {
889 _events.Update(diff);
890 while (uint32 eventId = _events.ExecuteEvent())
891 {
892 switch (eventId)
893 {
896 break;
898 _events.ScheduleEvent(EVENT_DFM_START_MUSIC, 5s); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client (sniffed value)
899 break;
900 default:
901 break;
902 }
903 }
904 }
905 private:
907 };
908
909 GameObjectAI* GetAI(GameObject* go) const override
910 {
911 return new go_darkmoon_faire_musicAI(go);
912 }
913};
914
915/*####
916## go_pirate_day_music
917####*/
918
923
928
930{
931public:
932 go_pirate_day_music() : GameObjectScript("go_pirate_day_music") { }
933
935 {
940
941 void UpdateAI(uint32 diff) override
942 {
943 _events.Update(diff);
944 while (uint32 eventId = _events.ExecuteEvent())
945 {
946 switch (eventId)
947 {
950 break;
952 _events.ScheduleEvent(EVENT_PDM_START_MUSIC, 5s); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client (sniffed value)
953 break;
954 default:
955 break;
956 }
957 }
958 }
959 private:
961 };
962
963 GameObjectAI* GetAI(GameObject* go) const override
964 {
965 return new go_pirate_day_musicAI(go);
966 }
967};
968
969/*####
970## go_bells
971####*/
972
974{
975 BELLTOLLHORDE = 6595, // Undercity
976 BELLTOLLTRIBAL = 6675, // Orgrimma/Thunderbluff
977 BELLTOLLALLIANCE = 6594, // Stormwind
978 BELLTOLLNIGHTELF = 6674, // Darnassus
979 BELLTOLLDWARFGNOME = 7234, // Ironforge
980 BELLTOLLKHARAZHAN = 9154 // Kharazhan
982
995
1002
1008
1010{
1011public:
1012 go_bells() : GameObjectScript("go_bells") { }
1013
1014 struct go_bellsAI : public GameObjectAI
1015 {
1017
1018 void InitializeAI() override
1019 {
1020 uint32 zoneId = me->GetZoneId();
1021
1022 switch (me->GetEntry())
1023 {
1024 case GO_HORDE_BELL:
1025 {
1026 switch (zoneId)
1027 {
1028 case TIRISFAL_ZONE:
1029 case UNDERCITY_ZONE:
1031 case DUSKWOOD_ZONE:
1032 _soundId = BELLTOLLHORDE; // undead bell sound
1033 break;
1034 default:
1035 _soundId = BELLTOLLTRIBAL; // orc drum sound
1036 break;
1037 }
1038 break;
1039 }
1040 case GO_ALLIANCE_BELL:
1041 {
1042 switch (zoneId)
1043 {
1044 case IRONFORGE_ZONE:
1045 case DUN_MOROGH_ZONE:
1046 _soundId = BELLTOLLDWARFGNOME; // horn sound
1047 break;
1048 case DARNASSUS_ZONE:
1049 case TELDRASSIL_ZONE:
1050 case ASHENVALE_ZONE:
1051 _soundId = BELLTOLLNIGHTELF; // nightelf bell sound
1052 break;
1053 default:
1054 _soundId = BELLTOLLALLIANCE; // human bell sound
1055 }
1056 break;
1057 }
1058 case GO_KHARAZHAN_BELL:
1059 {
1061 break;
1062 }
1063 }
1064 }
1065
1066 void OnGameEvent(bool start, uint16 eventId) override
1067 {
1068 if (eventId == GAME_EVENT_HOURLY_BELLS && start)
1069 {
1070 time_t time = GameTime::GetGameTime();
1071 tm localTm;
1072 localtime_r(&time, &localTm);
1073 uint8 _rings = (localTm.tm_hour) % 12;
1074 if (_rings == 0) // 00:00 and 12:00
1075 {
1076 _rings = 12;
1077 }
1078
1079 // Dwarf hourly horn should only play a single time, each time the next hour begins.
1081 {
1082 _rings = 1;
1083 }
1084
1085 for (auto i = 0; i < _rings; ++i)
1087 }
1088 }
1089
1090 void UpdateAI(uint32 diff) override
1091 {
1092 _events.Update(diff);
1093
1094 while (uint32 eventId = _events.ExecuteEvent())
1095 {
1096 switch (eventId)
1097 {
1098 case EVENT_RING_BELL:
1100 break;
1101 default:
1102 break;
1103 }
1104 }
1105 }
1106 private:
1109 };
1110
1111 GameObjectAI* GetAI(GameObject* go) const override
1112 {
1113 return new go_bellsAI(go);
1114 }
1115};
1116
1118{
1119 new go_gilded_brazier();
1122 new go_ethereum_prison();
1123 new go_ethereum_stasis();
1124 new go_resonite_cask();
1127 new go_blood_filled_orb();
1130 new go_veil_skith_cage();
1133 new go_brewfest_music();
1134 new go_midsummer_music();
1136 new go_pirate_day_music();
1137 new go_bells();
1138}
uint8_t uint8
Definition Define.h:156
uint16_t uint16
Definition Define.h:155
uint32_t uint32
Definition Define.h:154
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition Duration.h:24
std::chrono::seconds Seconds
Seconds shorthand typedef.
Definition Duration.h:28
bool IsHolidayActive(HolidayIds id)
@ GO_JUST_DEACTIVATED
Definition GameObject.h:165
#define TC_LOG_ERROR(filterType__, message__,...)
Definition Log.h:182
@ TEMPSUMMON_DEAD_DESPAWN
@ TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT
#define INTERACTION_DISTANCE
QuestStatus
Definition QuestDef.h:142
@ QUEST_STATUS_REWARDED
Definition QuestDef.h:149
@ QUEST_STATUS_INCOMPLETE
Definition QuestDef.h:146
@ QUEST_STATUS_COMPLETE
Definition QuestDef.h:144
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:43
uint32 rand32()
Definition Random.cpp:71
void GetCreatureListWithEntryInGrid(Container &container, WorldObject *source, uint32 entry, float maxSearchRange)
Creature * GetClosestCreatureWithEntry(WorldObject *source, uint32 entry, float maxSearchRange, bool alive=true)
void AddGossipItemFor(Player *player, GossipOptionNpc optionNpc, std::string text, uint32 sender, uint32 action)
void SendGossipMenuFor(Player *player, uint32 npcTextID, ObjectGuid const &guid)
void ClearGossipMenuFor(Player *player)
void CloseGossipMenuFor(Player *player)
@ GOSSIP_SENDER_MAIN
@ GOSSIP_ACTION_INFO_DEF
@ GAMEOBJECT_TYPE_QUESTGIVER
@ GAMEOBJECT_TYPE_GOOBER
@ TEAM_HORDE
@ HOLIDAY_DARKMOON_FAIRE
@ HOLIDAY_MIDSUMMER_FIRE_FESTIVAL
@ HOLIDAY_PIRATES_DAY
@ HOLIDAY_BREWFEST
ObjectGuid const & GetGUID() const
Definition BaseEntity.h:163
CreatureAI * AI() const
Definition Creature.h:235
void Update(uint32 time)
Definition EventMap.h:77
EventId ExecuteEvent()
Definition EventMap.cpp:77
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
Definition EventMap.cpp:40
GameObject *const me
void UseDoorOrButton(uint32 time_to_restore=0, bool alternative=false, Unit *user=nullptr)
void SetLootState(LootState s, Unit *unit=nullptr)
GameobjectTypes GetGoType() const
Definition GameObject.h:288
uint32 GetEntry() const
Definition Object.h:89
void KilledMonsterCredit(uint32 entry, ObjectGuid guid=ObjectGuid::Empty)
Definition Player.cpp:16646
Gender GetNativeGender() const override
Definition Player.h:1334
bool GetQuestRewardStatus(uint32 quest_id) const
Definition Player.cpp:15912
bool HasItemCount(uint32 item, uint32 count=1, bool inBankAlso=false) const
Definition Player.cpp:9824
WorldSession * GetSession() const
Definition Player.h:2256
QuestStatus GetQuestStatus(uint32 quest_id) const
Definition Player.cpp:15929
std::unique_ptr< PlayerMenu > PlayerTalkClass
Definition Player.h:2556
Definition Spell.h:277
virtual void SetData(uint32 id, uint32 value)
Definition UnitAI.h:75
void GetPlayerListInGrid(Container &playerContainer, float maxSearchRange, bool alive=true) const
Definition Object.cpp:2683
void PlayDirectSound(uint32 soundId, Player const *target=nullptr, uint32 broadcastTextId=0) const
Definition Object.cpp:2941
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition Object.cpp:2222
void PlayDirectMusic(uint32 musicId, Player const *target=nullptr) const
Definition Object.cpp:2949
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
Definition Object.cpp:1403
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
Definition Object.cpp:1522
float GetVisibilityRange() const
Definition Object.cpp:785
uint32 GetAreaId() const
Definition Object.h:333
uint32 GetZoneId() const
Definition Object.h:332
void SendNotification(char const *format,...) ATTR_PRINTF(2
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
AmberpineOuthouse
@ NPC_OUTHOUSE_BUNNY
@ QUEST_DOING_YOUR_DUTY
@ SPELL_INDISPOSED_III
@ SPELL_INDISPOSED
@ ITEM_ANDERHOLS_SLIDER_CIDER
@ GOSSIP_OUTHOUSE_INUSE
@ GOSSIP_OUTHOUSE_VACANT
@ SPELL_CREATE_AMBERSEEDS
MidsummerPoleRibbon
@ ACTION_COSMETIC_FIRES
@ SPELL_TEST_RIBBON_POLE_2
@ SPELL_TEST_RIBBON_POLE_1
@ NPC_POLE_RIBBON_BUNNY
@ SPELL_TEST_RIBBON_POLE_3
#define GO_ANDERHOLS_SLIDER_CIDER_NOT_FOUND
BloodFilledOrb
@ NPC_ZELEMAR
#define GO_TELE_TO_DALARAN_CRYSTAL_FAILED
void AddSC_go_scripts()
BrewfestMusicEvents
@ EVENT_BM_SELECT_MUSIC
@ EVENT_BM_START_MUSIC
constexpr Seconds EVENT_BREWFESTDWARF02_TIME
BellHourlyMisc
@ GAME_EVENT_HOURLY_BELLS
@ EVENT_RING_BELL
constexpr Seconds EVENT_BREWFESTGOBLIN03_TIME
GildedBrazier
@ QUEST_THE_FIRST_TRIAL
@ NPC_STILLBLADE
BellHourlyObjects
@ GO_ALLIANCE_BELL
@ GO_KHARAZHAN_BELL
@ GO_HORDE_BELL
constexpr Seconds EVENT_BREWFESTGOBLIN01_TIME
PirateDayMusic
@ MUSIC_PIRATE_DAY_MUSIC
#define GOSSIP_USE_OUTHOUSE
constexpr Seconds EVENT_BREWFESTDWARF01_TIME
EthereumPrison
@ SPELL_REP_KT
@ SPELL_REP_CON
@ SPELL_REP_SPOR
@ SPELL_REP_LC
@ SPELL_REP_SHAT
@ SPELL_REP_CE
const uint32 NpcPrisonEntry[]
uint32 const RibbonPoleSpells[3]
BrewfestMusic
@ EVENT_BREWFESTGOBLIN03
@ EVENT_BREWFESTDWARF02
@ EVENT_BREWFESTDWARF01
@ EVENT_BREWFESTDWARF03
@ EVENT_BREWFESTGOBLIN02
@ EVENT_BREWFESTGOBLIN01
PirateDayMusicEvents
@ EVENT_PDM_START_MUSIC
BrewfestMusicAreas
@ UNDERCITY
@ IRONFORGE_1
@ ORGRIMMAR_2
@ SHATTRATH
@ IRONFORGE_2
@ THUNDERBLUFF
@ DARNASSUS
@ SILVERMOON
@ STORMWIND
@ EXODAR
@ ORGRIMMAR_1
constexpr Seconds EVENT_BREWFESTGOBLIN02_TIME
BellHourlySoundZones
@ HILLSBRAD_FOOTHILLS_ZONE
@ TIRISFAL_ZONE
@ ASHENVALE_ZONE
@ DUSKWOOD_ZONE
@ TELDRASSIL_ZONE
@ IRONFORGE_ZONE
@ DARNASSUS_ZONE
@ DUN_MOROGH_ZONE
@ UNDERCITY_ZONE
BellHourlySoundFX
@ BELLTOLLNIGHTELF
@ BELLTOLLALLIANCE
@ BELLTOLLKHARAZHAN
@ BELLTOLLHORDE
@ BELLTOLLTRIBAL
@ BELLTOLLDWARFGNOME
ResoniteCask
@ NPC_GOGGEROC
Southfury
@ SPELL_BLACKJACK
@ SPELL_SUMMON_RIZZLE
@ NPC_RIZZLE
MidsummerBonfire
@ STAMP_OUT_BONFIRE_QUEST_COMPLETE
const uint32 NpcStasisEntry[]
MidsummerMusicEvents
@ EVENT_MM_START_MUSIC
DalaranCrystal
@ QUEST_TELE_CRYSTAL_FLAG
@ QUEST_LEARN_LEAVE_RETURN
MissingFriends
@ NPC_CAPTIVE_CHILD
@ SAY_FREE_0
@ QUEST_MISSING_FRIENDS
DarkmoonFaireMusic
@ MUSIC_DARKMOON_FAIRE_MUSIC
constexpr Seconds EVENT_BREWFESTDWARF03_TIME
DarkmoonFaireMusicEvents
@ EVENT_DFM_START_MUSIC
MidsummerMusic
@ EVENTMIDSUMMERFIREFESTIVAL_A
@ EVENTMIDSUMMERFIREFESTIVAL_H
time_t GetGameTime()
Definition GameTime.cpp:52
constexpr float GetPositionX() const
Definition Position.h:87
constexpr float GetPositionY() const
Definition Position.h:88
float GetAbsoluteAngle(float x, float y) const
Definition Position.h:136
constexpr float GetPositionZ() const
Definition Position.h:89
bool OnGossipHello(Player *player) override
bool OnGossipSelect(Player *player, uint32, uint32 gossipListId) override
void OnGameEvent(bool start, uint16 eventId) override
void UpdateAI(uint32 diff) override
void InitializeAI() override
go_bellsAI(GameObject *go)
bool OnGossipHello(Player *player) override
void UpdateAI(uint32 diff) override
bool OnGossipHello(Player *player) override
bool OnGossipHello(Player *player) override
bool OnGossipHello(Player *player) override
bool OnGossipSelect(Player *player, uint32, uint32) override
void UpdateAI(uint32 diff) override
bool OnGossipHello(Player *) override
bool OnGossipHello(Player *player) override
bool OnGossipHello(Player *player) override
bool OnGossipHello(Player *player) override