Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
PassiveAI.cpp
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#include "
Creature.h
"
7
#include "
PassiveAI.h
"
8
#include "
TemporarySummon.h
"
9
10
PassiveAI::PassiveAI
(
Creature
* c) :
CreatureAI
(c) {
me
->SetReactState(
REACT_PASSIVE
); }
11
PossessedAI::PossessedAI
(
Creature
* c) :
CreatureAI
(c) {
me
->SetReactState(
REACT_PASSIVE
); }
12
NullCreatureAI::NullCreatureAI
(
Creature
* c) :
CreatureAI
(c) {
me
->SetReactState(
REACT_PASSIVE
); }
13
14
void
PassiveAI::UpdateAI
(
uint32
)
15
{
16
if
(
me
->IsInCombat() &&
me
->getAttackers().empty())
17
EnterEvadeMode
();
18
}
19
20
void
PossessedAI::AttackStart
(
Unit
* target)
21
{
22
me
->Attack(target,
true
);
23
}
24
25
void
PossessedAI::UpdateAI
(
uint32
/*diff*/
)
26
{
27
if
(
me
->GetVictim())
28
{
29
if
(!
me
->IsValidAttackTarget(
me
->GetVictim()))
30
me
->AttackStop();
31
else
32
DoMeleeAttackIfReady
();
33
}
34
}
35
36
void
PossessedAI::JustDied
(
Unit
*
/*u*/
)
37
{
38
// We died while possessed, disable our loot
39
me
->RemoveFlag(
OBJECT_FIELD_DYNAMIC_FLAGS
,
UNIT_DYNFLAG_LOOTABLE
);
40
}
41
42
void
PossessedAI::KilledUnit
(
Unit
* victim)
43
{
44
// We killed a creature, disable victim's loot
45
if
(victim->
GetTypeId
() ==
TypeID::TYPEID_UNIT
)
46
victim->
RemoveFlag
(
OBJECT_FIELD_DYNAMIC_FLAGS
,
UNIT_DYNFLAG_LOOTABLE
);
47
}
48
49
void
CritterAI::DamageTaken
(
Unit
*
/*done_by*/
,
uint32
&)
50
{
51
if
(!
me
->HasUnitState(
UNIT_STATE_FLEEING
))
52
me
->SetControlled(
true
,
UNIT_STATE_FLEEING
);
53
}
54
55
void
CritterAI::EnterEvadeMode
()
56
{
57
if
(
me
->HasUnitState(
UNIT_STATE_FLEEING
))
58
me
->SetControlled(
false
,
UNIT_STATE_FLEEING
);
59
CreatureAI::EnterEvadeMode
();
60
}
61
62
void
TriggerAI::IsSummonedBy
(
Unit
* summoner)
63
{
64
if
(
me
->m_spells[0])
65
me
->CastSpell(
me
,
me
->m_spells[0],
false
, 0, 0, summoner->
GetGUID
());
66
}
Creature.h
uint32
std::uint32_t uint32
Definition
Define.h:77
TypeID::TYPEID_UNIT
@ TYPEID_UNIT
Definition
Object.h:54
PassiveAI.h
UNIT_DYNFLAG_LOOTABLE
@ UNIT_DYNFLAG_LOOTABLE
Definition
SharedDefines.h:3634
TemporarySummon.h
UNIT_STATE_FLEEING
@ UNIT_STATE_FLEEING
Definition
Unit.h:519
REACT_PASSIVE
@ REACT_PASSIVE
Definition
Unit.h:1156
OBJECT_FIELD_DYNAMIC_FLAGS
@ OBJECT_FIELD_DYNAMIC_FLAGS
Definition
UpdateFields.h:17
CreatureAI::CreatureAI
CreatureAI(Creature *creature)
Definition
CreatureAI.h:69
CreatureAI::me
Creature *const me
Definition
CreatureAI.h:56
CreatureAI::EnterEvadeMode
virtual void EnterEvadeMode()
Definition
CreatureAI.cpp:130
Creature
Definition
Creature.h:427
CritterAI::DamageTaken
void DamageTaken(Unit *done_by, uint32 &) OVERRIDE
Definition
PassiveAI.cpp:49
CritterAI::EnterEvadeMode
void EnterEvadeMode() OVERRIDE
Definition
PassiveAI.cpp:55
NullCreatureAI::NullCreatureAI
NullCreatureAI(Creature *c)
Definition
PassiveAI.cpp:12
Object::GetGUID
uint64 GetGUID() const
Definition
Object.h:119
Object::GetTypeId
TypeID GetTypeId() const
Definition
Object.h:131
Object::RemoveFlag
void RemoveFlag(uint16 index, uint32 oldFlag)
Definition
Object.cpp:1280
PassiveAI::PassiveAI
PassiveAI(Creature *c)
Definition
PassiveAI.cpp:10
PassiveAI::UpdateAI
void UpdateAI(uint32) OVERRIDE
== Triggered Actions Requested ==================
Definition
PassiveAI.cpp:14
PossessedAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
PassiveAI.cpp:36
PossessedAI::PossessedAI
PossessedAI(Creature *c)
Definition
PassiveAI.cpp:11
PossessedAI::UpdateAI
void UpdateAI(uint32) OVERRIDE
== Triggered Actions Requested ==================
Definition
PassiveAI.cpp:25
PossessedAI::AttackStart
void AttackStart(Unit *target) OVERRIDE
Definition
PassiveAI.cpp:20
PossessedAI::KilledUnit
void KilledUnit(Unit *victim) OVERRIDE
Definition
PassiveAI.cpp:42
TriggerAI::IsSummonedBy
void IsSummonedBy(Unit *summoner) OVERRIDE
Definition
PassiveAI.cpp:62
UnitAI::DoMeleeAttackIfReady
void DoMeleeAttackIfReady()
Definition
UnitAI.cpp:28
Unit
Definition
Unit.h:1367
src
server
game
AI
CoreAI
PassiveAI.cpp
Generated on
for Project SkyFire Core by
1.17.0