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

Public Member Functions

 go_suppression_device (GameObject *go)
 
void InitializeAI () override
 
void UpdateAI (uint32 diff) override
 
void OnStateChanged (uint32 state, Unit *) override
 
void DoAction (int32 action) override
 
void Activate ()
 
void Deactivate ()
 
- Public Member Functions inherited from GameObjectAI
 GameObjectAI (GameObject *go)
 
virtual ~GameObjectAI ()
 
virtual void Reset ()
 
virtual void SetGUID (ObjectGuid const &, 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 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

InstanceScript * _instance
 
EventMap _events
 
bool _active
 

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_suppression_device()

go_suppression_device::go_suppression_device ( GameObject *  go)
inline
133: GameObjectAI(go), _instance(go->GetInstanceScript()), _active(true) { }
Definition GameObjectAI.h:33
InstanceScript * GetInstanceScript() const
Definition Object.cpp:1247
bool _active
Definition boss_broodlord_lashlayer.cpp:239
InstanceScript * _instance
Definition boss_broodlord_lashlayer.cpp:237

Member Function Documentation

◆ Activate()

void go_suppression_device::Activate ( )
inline
214 {
215 if (_active)
216 return;
217 _active = true;
218 if (me->GetGoState() == GO_STATE_ACTIVE)
223 me->Respawn();
224 }
@ GO_STATE_READY
Definition GameObjectData.h:709
@ GO_STATE_ACTIVE
Definition GameObjectData.h:708
@ GO_READY
Definition GameObject.h:111
@ GO_FLAG_NOT_SELECTABLE
Definition SharedDefines.h:1611
@ EVENT_SUPPRESSION_CAST
Definition boss_broodlord_lashlayer.cpp:51
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
Definition EventMap.cpp:48
GameObject *const me
Definition GameObjectAI.h:35
void SetGoState(GOState state)
Definition GameObject.cpp:2519
GOState GetGoState() const
Definition GameObject.h:206
void SetLootState(LootState s, Unit *unit=nullptr)
Definition GameObject.cpp:2484
void Respawn()
Definition GameObject.cpp:1303
void RemoveGameObjectFlag(GameObjectFlags flags)
Definition GameObject.h:220
EventMap _events
Definition boss_broodlord_lashlayer.cpp:238

References _active, _events, EVENT_SUPPRESSION_CAST, GameObject::GetGoState(), GO_FLAG_NOT_SELECTABLE, GO_READY, GO_STATE_ACTIVE, GO_STATE_READY, GameObjectAI::me, GameObject::RemoveGameObjectFlag(), GameObject::Respawn(), EventMap::ScheduleEvent(), GameObject::SetGoState(), and GameObject::SetLootState().

Referenced by UpdateAI().

◆ Deactivate()

void go_suppression_device::Deactivate ( )
inline
227 {
228 if (!_active)
229 return;
230 _active = false;
234 }
void CancelEvent(EventId eventId)
Definition EventMap.cpp:160
void SetGameObjectFlag(GameObjectFlags flags)
Definition GameObject.h:219

References _active, _events, EventMap::CancelEvent(), EVENT_SUPPRESSION_CAST, GO_FLAG_NOT_SELECTABLE, GO_STATE_ACTIVE, GameObjectAI::me, GameObject::SetGameObjectFlag(), and GameObject::SetGoState().

Referenced by DoAction(), and InitializeAI().

◆ DoAction()

void go_suppression_device::DoAction ( int32  action)
inlineoverridevirtual

Reimplemented from GameObjectAI.

195 {
196 if (action == ACTION_DEACTIVATE)
197 {
199 }
200 else if (action == ACTION_DISARMED)
201 {
202 if (!_active)
203 return;
204
205 Deactivate();
207
210 }
211 }
@ DONE
Definition InstanceScript.h:61
@ DATA_BROODLORD_LASHLAYER
Definition blackwing_lair.h:33
@ ACTION_DEACTIVATE
Definition boss_broodlord_lashlayer.cpp:57
@ ACTION_DISARMED
Definition boss_broodlord_lashlayer.cpp:58
@ EVENT_SUPPRESSION_RESET
Definition boss_broodlord_lashlayer.cpp:52
EncounterState GetBossState(uint32 id) const
Definition InstanceScript.h:252
void Deactivate()
Definition boss_broodlord_lashlayer.cpp:226

References _active, _events, _instance, ACTION_DEACTIVATE, ACTION_DISARMED, EventMap::CancelEvent(), DATA_BROODLORD_LASHLAYER, Deactivate(), DONE, EVENT_SUPPRESSION_CAST, EVENT_SUPPRESSION_RESET, InstanceScript::GetBossState(), and EventMap::ScheduleEvent().

Referenced by OnStateChanged().

◆ InitializeAI()

void go_suppression_device::InitializeAI ( )
inlineoverridevirtual

Reimplemented from GameObjectAI.

136 {
137 me->AllowSaveToDB(true);
138
139 // Disarmed devices use GO_STATE_ACTIVE. Preserve that state after Broodlord dies;
140 // before then, a reload resets the transient disarm because its reset timer is not persisted.
141 if (me->GetGoState() == GO_STATE_ACTIVE)
142 {
144 {
145 Deactivate();
146 return;
147 }
148
150 }
151
153 }
void AllowSaveToDB(bool enable)
Definition GameObject.h:363

References _events, _instance, GameObject::AllowSaveToDB(), DATA_BROODLORD_LASHLAYER, Deactivate(), DONE, EVENT_SUPPRESSION_CAST, InstanceScript::GetBossState(), GameObject::GetGoState(), GO_STATE_ACTIVE, GO_STATE_READY, GameObjectAI::me, EventMap::ScheduleEvent(), and GameObject::SetGoState().

◆ OnStateChanged()

void go_suppression_device::OnStateChanged ( uint32  state,
Unit *   
)
inlineoverridevirtual

Reimplemented from GameObjectAI.

179 {
180 switch (state)
181 {
183 // Disarm Trap must retract the device, not send it through generic despawning.
185 [[fallthrough]];
186 case GO_ACTIVATED:
188 break;
189 default:
190 break;
191 }
192 }
@ GO_ACTIVATED
Definition GameObject.h:112
@ GO_JUST_DEACTIVATED
Definition GameObject.h:113
void DoAction(int32 action) override
Definition boss_broodlord_lashlayer.cpp:194

References ACTION_DISARMED, DoAction(), GO_ACTIVATED, GO_JUST_DEACTIVATED, GO_READY, GameObjectAI::me, and GameObject::SetLootState().

◆ UpdateAI()

void go_suppression_device::UpdateAI ( uint32  diff)
inlineoverridevirtual

Reimplemented from GameObjectAI.

156 {
157 _events.Update(diff);
158
159 while (uint32 eventId = _events.ExecuteEvent())
160 {
161 switch (eventId)
162 {
164 if (me->GetGoState() == GO_STATE_READY)
165 {
167 me->SendCustomAnim(0);
168 }
170 break;
172 Activate();
173 break;
174 }
175 }
176 }
std::uint32_t uint32
Definition Define.h:107
@ SPELL_SUPPRESSION_AURA
Definition boss_broodlord_lashlayer.cpp:40
void Update(uint32 time)
Definition EventMap.h:67
EventId ExecuteEvent()
Definition EventMap.cpp:86
void SendCustomAnim(uint32 anim)
Definition GameObject.cpp:2164
void CastSpell(Unit *target, uint32 spell)
Definition GameObject.cpp:2099
void Activate()
Definition boss_broodlord_lashlayer.cpp:213

References _events, Activate(), GameObject::CastSpell(), EVENT_SUPPRESSION_CAST, EVENT_SUPPRESSION_RESET, EventMap::ExecuteEvent(), GameObject::GetGoState(), GO_STATE_READY, GameObjectAI::me, EventMap::ScheduleEvent(), GameObject::SendCustomAnim(), SPELL_SUPPRESSION_AURA, and EventMap::Update().

Member Data Documentation

◆ _active

bool go_suppression_device::_active
private

Referenced by Activate(), Deactivate(), and DoAction().

◆ _events

EventMap go_suppression_device::_events
private

◆ _instance

InstanceScript* go_suppression_device::_instance
private

Referenced by DoAction(), and InitializeAI().


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