Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
GuardAI.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 "
CreatureAIImpl.h
"
7
#include "
Errors.h
"
8
#include "
GuardAI.h
"
9
#include "
ObjectAccessor.h
"
10
#include "
Player.h
"
11
#include "
World.h
"
12
13
int
GuardAI::Permissible
(
Creature
const
* creature)
14
{
15
if
(creature->
IsGuard
())
16
return
PERMIT_BASE_SPECIAL
;
17
18
return
PERMIT_BASE_NO
;
19
}
20
21
GuardAI::GuardAI
(
Creature
* creature) :
ScriptedAI
(creature) { }
22
23
bool
GuardAI::CanSeeAlways
(
WorldObject
const
* obj)
24
{
25
if
(!obj->
isType
(
TYPEMASK_UNIT
))
26
return
false
;
27
28
ThreatContainer::StorageType
threatList =
me
->getThreatManager().getThreatList();
29
for
(ThreatContainer::StorageType::const_iterator itr = threatList.begin(); itr != threatList.end(); ++itr)
30
if
((*itr)->getUnitGuid() == obj->
GetGUID
())
31
return
true
;
32
33
return
false
;
34
}
35
36
void
GuardAI::EnterEvadeMode
()
37
{
38
if
(!
me
->IsAlive())
39
{
40
me
->GetMotionMaster()->MoveIdle();
41
me
->CombatStop(
true
);
42
me
->DeleteThreatList();
43
return
;
44
}
45
46
SF_LOG_DEBUG
(
"entities.unit"
,
"Guard entry: %u enters evade mode."
,
me
->GetEntry());
47
48
me
->RemoveAllAuras();
49
me
->DeleteThreatList();
50
me
->CombatStop(
true
);
51
52
// Remove ChaseMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead
53
if
(
me
->GetMotionMaster()->GetCurrentMovementGeneratorType() ==
CHASE_MOTION_TYPE
)
54
me
->GetMotionMaster()->MoveTargetedHome();
55
}
56
57
void
GuardAI::JustDied
(
Unit
* killer)
58
{
59
if
(
Player
* player = killer->
GetCharmerOrOwnerPlayerOrPlayerItself
())
60
me
->SendZoneUnderAttackMessage(player);
61
}
PERMIT_BASE_SPECIAL
@ PERMIT_BASE_SPECIAL
Definition
CreatureAI.h:185
PERMIT_BASE_NO
@ PERMIT_BASE_NO
Definition
CreatureAI.h:180
CreatureAIImpl.h
Errors.h
GuardAI.h
SF_LOG_DEBUG
#define SF_LOG_DEBUG(filterType__,...)
Definition
Log.h:134
CHASE_MOTION_TYPE
@ CHASE_MOTION_TYPE
Definition
MotionMaster.h:30
TYPEMASK_UNIT
@ TYPEMASK_UNIT
Definition
Object.h:40
ObjectAccessor.h
Player.h
World.h
Creature
Definition
Creature.h:427
Creature::IsGuard
bool IsGuard() const
Definition
Creature.h:455
GuardAI::CanSeeAlways
bool CanSeeAlways(WorldObject const *obj) OVERRIDE
Definition
GuardAI.cpp:23
GuardAI::JustDied
void JustDied(Unit *killer) OVERRIDE
Definition
GuardAI.cpp:57
GuardAI::Permissible
static int Permissible(Creature const *creature)
Definition
GuardAI.cpp:13
GuardAI::GuardAI
GuardAI(Creature *creature)
Definition
GuardAI.cpp:21
GuardAI::EnterEvadeMode
void EnterEvadeMode() OVERRIDE
Definition
GuardAI.cpp:36
Object::GetGUID
uint64 GetGUID() const
Definition
Object.h:119
Object::isType
bool isType(uint16 mask) const
Definition
Object.h:132
Player
Definition
Player.h:1289
ThreatContainer::StorageType
std::list< HostileReference * > StorageType
Definition
ThreatManager.h:127
Unit
Definition
Unit.h:1367
Unit::GetCharmerOrOwnerPlayerOrPlayerItself
Player * GetCharmerOrOwnerPlayerOrPlayerItself() const
Definition
Unit.cpp:2355
WorldObject
Definition
Object.h:610
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
src
server
game
AI
CoreAI
GuardAI.cpp
Generated on
for Project SkyFire Core by
1.17.0