AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
go_bells::go_bellsAI Struct Reference
Inheritance diagram for go_bells::go_bellsAI:
GameObjectAI

Public Member Functions

 go_bellsAI (GameObject *go)
 
void UpdateAI (uint32 const diff) override
 
- Public Member Functions inherited from GameObjectAI
 GameObjectAI (GameObject *go)
 
virtual ~GameObjectAI ()
 
virtual void InitializeAI ()
 
virtual void Reset ()
 
virtual void DoAction (int32)
 
virtual void SetGUID (ObjectGuid, int32)
 
virtual ObjectGuid GetGUID (int32) const
 
virtual bool GossipHello (Player *, bool)
 
virtual bool GossipSelect (Player *, uint32, uint32)
 
virtual bool GossipSelectCode (Player *, uint32, uint32, char const *)
 
virtual bool QuestAccept (Player *, Quest const *)
 
virtual bool QuestReward (Player *, Quest const *, uint32)
 
virtual uint32 GetDialogStatus (Player *)
 
virtual void Destroyed (Player *, uint32)
 
virtual uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void OnGameEvent (bool, uint16)
 
virtual void OnStateChanged (uint32, Unit *)
 
virtual void EventInform (uint32)
 
virtual void SpellHit (Unit *, SpellInfo const *)
 
virtual bool CanBeSeen (Player const *)
 
virtual void JustSummoned (Creature *)
 
virtual void SummonedCreatureDespawn (Creature *)
 
virtual void SummonedCreatureDies (Creature *, Unit *)
 
virtual void SummonedCreatureEvade (Creature *)
 

Private Attributes

EventMap _events
 
uint32 _soundId
 
bool once
 

Additional Inherited Members

- Static Public Member Functions inherited from GameObjectAI
static int32 Permissible (GameObject const *go)
 
- Protected Attributes inherited from GameObjectAI
GameObject *const me
 

Detailed Description

Constructor & Destructor Documentation

◆ go_bellsAI()

go_bells::go_bellsAI::go_bellsAI ( GameObject go)
inline
1780 : GameObjectAI(go), _soundId(0), once(true)
1781 {
1782 uint32 zoneId = go->GetZoneId();
1783
1784 switch (go->GetEntry())
1785 {
1786 case GO_HORDE_BELL:
1787 {
1788 switch (zoneId)
1789 {
1790 case TIRISFAL_ZONE:
1791 case UNDERCITY_ZONE:
1793 case DUSKWOOD_ZONE:
1795 break;
1796 default:
1798 break;
1799 }
1800 break;
1801 }
1802 case GO_ALLIANCE_BELL:
1803 {
1804 switch (zoneId)
1805 {
1806 case IRONFORGE_ZONE:
1807 case DUN_MOROGH_ZONE:
1809 break;
1810 case DARNASSUS_ZONE:
1811 case TELDRASSIL_ZONE:
1812 case ASHENVALE_ZONE:
1813 case SHATTRATH_ZONE:
1815 break;
1816 case WESTFALL_ZONE:
1818 {
1820 }
1821 else
1822 {
1824 }
1825 break;
1827 if (go->GetAreaId() == AREA_ALCAZ_ISLAND)
1828 {
1830 }
1831 else
1832 {
1834 }
1835 break;
1836 default:
1838 break;
1839 }
1840 break;
1841 }
1842 case GO_KHARAZHAN_BELL:
1843 {
1845 break;
1846 }
1847 break;
1848 }
1849 }
std::uint32_t uint32
Definition Define.h:107
Definition GameObjectAI.h:33
uint32 GetEntry() const
Definition Object.h:115
uint32 GetAreaId() const
Definition Object.cpp:3156
uint32 GetZoneId() const
Definition Object.cpp:3148
@ GO_ALLIANCE_BELL
Definition go_scripts.cpp:1762
@ GO_KHARAZHAN_BELL
Definition go_scripts.cpp:1763
@ GO_HORDE_BELL
Definition go_scripts.cpp:1761
@ DUSTWALLOW_MARSH_ZONE
Definition go_scripts.cpp:1749
@ HILLSBRAD_FOOTHILLS_ZONE
Definition go_scripts.cpp:1746
@ TIRISFAL_ZONE
Definition go_scripts.cpp:1739
@ ASHENVALE_ZONE
Definition go_scripts.cpp:1745
@ DUSKWOOD_ZONE
Definition go_scripts.cpp:1747
@ TELDRASSIL_ZONE
Definition go_scripts.cpp:1743
@ IRONFORGE_ZONE
Definition go_scripts.cpp:1742
@ WESTFALL_ZONE
Definition go_scripts.cpp:1748
@ DARNASSUS_ZONE
Definition go_scripts.cpp:1744
@ SHATTRATH_ZONE
Definition go_scripts.cpp:1750
@ DUN_MOROGH_ZONE
Definition go_scripts.cpp:1741
@ UNDERCITY_ZONE
Definition go_scripts.cpp:1740
@ LIGHTHOUSEFOGHORN
Definition go_scripts.cpp:1734
@ BELLTOLLNIGHTELF
Definition go_scripts.cpp:1731
@ BELLTOLLALLIANCE
Definition go_scripts.cpp:1730
@ BELLTOLLKHARAZHAN
Definition go_scripts.cpp:1733
@ BELLTOLLHORDE
Definition go_scripts.cpp:1728
@ BELLTOLLTRIBAL
Definition go_scripts.cpp:1729
@ BELLTOLLDWARFGNOME
Definition go_scripts.cpp:1732
@ AREA_ALCAZ_ISLAND
Definition go_scripts.cpp:1755
@ AREA_WESTFALL_LIGHTHOUSE
Definition go_scripts.cpp:1756
uint32 _soundId
Definition go_scripts.cpp:1899
bool once
Definition go_scripts.cpp:1900

References _soundId, AREA_ALCAZ_ISLAND, AREA_WESTFALL_LIGHTHOUSE, ASHENVALE_ZONE, BELLTOLLALLIANCE, BELLTOLLDWARFGNOME, BELLTOLLHORDE, BELLTOLLKHARAZHAN, BELLTOLLNIGHTELF, BELLTOLLTRIBAL, DARNASSUS_ZONE, DUN_MOROGH_ZONE, DUSKWOOD_ZONE, DUSTWALLOW_MARSH_ZONE, WorldObject::GetAreaId(), Object::GetEntry(), WorldObject::GetZoneId(), GO_ALLIANCE_BELL, GO_HORDE_BELL, GO_KHARAZHAN_BELL, HILLSBRAD_FOOTHILLS_ZONE, IRONFORGE_ZONE, LIGHTHOUSEFOGHORN, SHATTRATH_ZONE, TELDRASSIL_ZONE, TIRISFAL_ZONE, UNDERCITY_ZONE, and WESTFALL_ZONE.

Member Function Documentation

◆ UpdateAI()

void go_bells::go_bellsAI::UpdateAI ( uint32 const  diff)
inlineoverridevirtual

Reimplemented from GameObjectAI.

1852 {
1853 _events.Update(diff);
1854
1855 if (sGameEventMgr->IsActiveEvent(GAME_EVENT_HOURLY_BELLS) && once)
1856 {
1857 // Reset
1858 once = false;
1860 }
1861
1862 while (uint32 eventId = _events.ExecuteEvent())
1863 {
1864 switch (eventId)
1865 {
1866 case EVENT_TIME:
1867 {
1868 tzset(); // set timezone for localtime_r() -> fix issues due to daylight time
1869 tm local_tm = Acore::Time::TimeBreakdown();
1870 uint8 _rings = (local_tm.tm_hour) % 12;
1871 _rings = (_rings == 0) ? 12 : _rings; // 00:00 and 12:00
1872
1873 // Dwarf hourly horn should only play a single time, each time the next hour begins.
1875 {
1876 _rings = 1;
1877 }
1878
1879 // Schedule ring event
1880 for (auto i = 0; i < _rings; ++i)
1881 {
1882 _events.ScheduleEvent(EVENT_RING_BELL, (i * 4 + 1) * 1000);
1883 }
1884 break;
1885 }
1886 case EVENT_RING_BELL:
1887 {
1889 break;
1890 }
1891 default:
1892 break;
1893 }
1894 }
1895 }
std::uint8_t uint8
Definition Define.h:109
#define sGameEventMgr
Definition GameEventMgr.h:201
uint32 ExecuteEvent()
Definition EventMap.cpp:114
void Update(uint32 time)
Definition EventMap.h:54
void ScheduleEvent(uint32 eventId, uint32 time, uint32 group=0, uint32 phase=0)
Definition EventMap.cpp:56
GameObject *const me
Definition GameObjectAI.h:35
void PlayDirectSound(uint32 sound_id, Player *target=nullptr)
Definition Object.cpp:2903
@ EVENT_TIME
Definition go_scripts.cpp:1770
@ GAME_EVENT_HOURLY_BELLS
Definition go_scripts.cpp:1768
@ EVENT_RING_BELL
Definition go_scripts.cpp:1769
AC_COMMON_API std::tm TimeBreakdown(time_t t=0)
Definition Timer.cpp:233
EventMap _events
Definition go_scripts.cpp:1898

References _events, _soundId, BELLTOLLDWARFGNOME, EVENT_RING_BELL, EVENT_TIME, EventMap::ExecuteEvent(), GAME_EVENT_HOURLY_BELLS, GameObjectAI::me, once, WorldObject::PlayDirectSound(), EventMap::ScheduleEvent(), sGameEventMgr, Acore::Time::TimeBreakdown(), and EventMap::Update().

Member Data Documentation

◆ _events

EventMap go_bells::go_bellsAI::_events
private

Referenced by UpdateAI().

◆ _soundId

uint32 go_bells::go_bellsAI::_soundId
private

Referenced by go_bellsAI(), and UpdateAI().

◆ once

bool go_bells::go_bellsAI::once
private

Referenced by UpdateAI().


The documentation for this struct was generated from the following file: