Horizon Official Technical Documentation
Horizon::Zone::Units::NPC Class Reference

#include <NPC.hpp>

+ Inheritance diagram for Horizon::Zone::Units::NPC:
+ Collaboration diagram for Horizon::Zone::Units::NPC:

Public Member Functions

 NPC (std::string const &name, std::shared_ptr< Map > map, uint16_t x, uint16_t y, uint32_t job_id, directions dir)
 
 NPC (std::string const &name, std::shared_ptr< Map > map, uint16_t x, uint16_t y, uint32_t job_id, directions dir, std::string const &script_file)
 
 NPC (std::string const &name, std::shared_ptr< Map > map, uint16_t x, uint16_t y, uint32_t job_id, directions dir, std::shared_ptr< NPC > duplicate)
 
 NPC (std::string const &name, std::shared_ptr< Map > map, uint16_t x, uint16_t y, std::string const &script)
 
 ~NPC ()
 
bool initialize ()
 
void stop_movement () override
 
void on_pathfinding_failure () override
 
void on_movement_begin (int32_t time) override
 
void on_movement_step () override
 
void on_movement_end () override
 
void on_status_effect_start (std::shared_ptr< status_change_entry > sce) override
 
void on_status_effect_end (std::shared_ptr< status_change_entry > sce) override
 
void on_status_effect_change (std::shared_ptr< status_change_entry > sce) override
 
- Public Member Functions inherited from Horizon::Zone::Unit
 Unit (uint64_t uuid, unit_type type, unit_type_mask type_mask, std::shared_ptr< Map > map, MapCoords map_coords)
 
 Unit (uint64_t uuid, unit_type type, unit_type_mask type_mask)
 
virtual ~Unit ()
 
bool initialize ()
 
virtual bool finalize ()
 
bool is_initialized () const
 
bool is_finalized () const
 
void set_finalized (bool finalized)
 
MapCoords const & dest_coords () const
 Movement. More...
 
virtual bool walk_to_coordinates (int16_t x, int16_t y)
 
virtual bool walk_to_unit (std::shared_ptr< Unit > unit)
 
bool is_walking () const
 
virtual void stop_movement ()=0
 
bool stop_walking (bool cancel=false, bool notify=false)
 
uint64_t uuid () const
 Unit Data. More...
 
unit_uuid s_uuid () const
 
void set_uuid (uint64_t uuid)
 
uint32_t guid ()
 
uint16_t job_id () const
 
void set_job_id (uint16_t job_id)
 
unit_posture_type posture () const
 
void set_posture (unit_posture_type posture)
 
const std::string & name () const
 
void set_name (const std::string &name)
 
directions direction () const
 
void set_direction (directions dir)
 
std::shared_ptr< Horizon::Zone::Traits::Statusstatus ()
 
void set_status (std::shared_ptr< Horizon::Zone::Traits::Status > st)
 
void force_movement_stop_internal (bool stop=false)
 
std::shared_ptr< Mapmap ()
 Map & Map Container. More...
 
void set_map (std::shared_ptr< Map > map)
 
AStar::CoordinateList get_walk_path ()
 
unit_type type () const
 Unit applications. More...
 
unit_type_mask type_mask () const
 
bool is_of_type (int type_mask)
 
template<class T >
std::shared_ptr< T > downcast ()
 
MapCoords const & map_coords () const
 Grid applications. More...
 
void set_map_coords (MapCoords const &coords)
 
GridCoords const & grid_coords () const
 
void set_grid_coords (GridCoords const &coords)
 
bool is_in_range_of (std::shared_ptr< Unit > unit, uint8_t range=MAX_VIEW_RANGE)
 
void notify_nearby_players_of_existence (unit_viewport_notification_type notif_type)
 
void notify_nearby_players_of_spawn ()
 
void notify_nearby_players_of_movement (bool new_entry=false)
 
void notify_nearby_players_of_movement_stop (MapCoords stop_coords)
 
void notify_nearby_players_of_skill_use (grid_unit_skill_use_notification_type notification_type, s_unit_skill_use_notifier_config config)
 
void notify_nearby_players_of_basic_attack (s_grid_unit_basic_attack_config config)
 
void notify_nearby_players_of_item_drop (s_grid_notify_item_drop_entry entry)
 
std::shared_ptr< Unitget_nearby_unit (uint32_t guid)
 
uint64_t get_scheduler_task_id (unit_task_schedule_group group)
 
std::map< int16_t, std::shared_ptr< status_change_entry > > & get_status_effects ()
 
void apply_status_change_in_area (std::shared_ptr< Unit > target, s_grid_sc_apply_in_skill_area_config const &config, s_grid_apply_in_area_config const &aoe_config)
 
void remove_status_change_in_area (std::shared_ptr< Unit > target, int sc_type, s_grid_apply_in_area_config const &aoe_config)
 
void execute_skill_in_area (std::shared_ptr< Unit > target, std::shared_ptr< SkillExecution > skill_execution, s_grid_apply_in_area_config const &aoe_config)
 
void execute_skill_in_cell (std::shared_ptr< Unit > target, MapCoords cell, std::shared_ptr< SkillExecution > skill_execution, s_grid_apply_in_area_config const &aoe_config)
 
void use_skill_on_target (int16_t skill_lv, int16_t skill_id, int target_guid)
 
void use_skill_on_ground (int16_t skill_lv, int16_t skill_id, int16_t pos_x, int16_t pos_y)
 
void use_skill_on_ground (int16_t skill_lv, int16_t skill_id, int16_t pos_x, int16_t pos_y, std::string contents)
 
bool status_effect_start (int type, int total_time, int val1, int val2, int val3, int val4)
 Status Effects. More...
 
bool status_effect_end (int type)
 
virtual void on_status_effect_start (std::shared_ptr< status_change_entry > sce)=0
 
virtual void on_status_effect_end (std::shared_ptr< status_change_entry > sce)=0
 
virtual void on_status_effect_change (std::shared_ptr< status_change_entry > sce)=0
 
std::shared_ptr< AStar::CoordinateListpath_to (std::shared_ptr< Unit > e)
 
int distance_from (std::shared_ptr< Unit > e)
 
virtual bool attack (std::shared_ptr< Unit > target, bool continuous=false)
 
virtual bool stop_attacking ()
 
bool target_is_attackable (std::shared_ptr< Unit > target)
 
void set_attacking (bool attacking)
 
bool is_attacking ()
 
void on_attack_end ()
 
bool is_dead ()
 
virtual void on_damage_received (std::shared_ptr< Unit > damage_dealer, int damage)
 
virtual void on_killed (std::shared_ptr< Unit > killer, bool with_drops=false, bool with_exp=false)
 
std::shared_ptr< Combatcombat ()
 Combat. More...
 
void set_combat (std::shared_ptr< Combat > combat)
 
void update (uint64_t tick)
 Extremely time-sensitive functions. More...
 
std::shared_ptr< CombatRegistrycombat_registry ()
 
bool has_damage_walk_delay ()
 Walk Delay. More...
 
void set_damage_walk_delay (bool delay)
 
void set_lockon_after_walk_completed (uint64_t target_guid, bool continuous=false)
 Lockon after walk completed. More...
 
void clear_lockon_after_walk_completed ()
 
uint64_t lockon_after_walk_completed_target_guid ()
 
- Public Member Functions inherited from Horizon::Zone::GridObject< NPC >
virtual ~GridObject ()
 
bool has_valid_grid_reference () const
 
void add_grid_reference (GridRefManager< NPC > &m)
 
void remove_grid_reference ()
 
GridReference< NPC > & get_reference ()
 

Additional Inherited Members

- Protected Member Functions inherited from Horizon::Zone::Unit
bool schedule_walk ()
 
void walk ()
 
virtual void on_pathfinding_failure ()=0
 
virtual void on_movement_begin (int32_t time)=0
 
virtual void on_movement_step ()=0
 
virtual void on_movement_end ()=0
 

Constructor & Destructor Documentation

◆ NPC() [1/4]

NPC::NPC ( std::string const &  name,
std::shared_ptr< Map map,
uint16_t  x,
uint16_t  y,
uint32_t  job_id,
directions  dir 
)
39: Unit(sZone->to_uuid((uint8_t) UNIT_NPC, ++_last_np_unit_guid, 0, 0), UNIT_NPC, UNIT_MASK_NPC, map, MapCoords(x, y))
40{
43 set_direction(dir);
44}
@ UNIT_NPC
Definition: UnitDefinitions.hpp:46
@ UNIT_MASK_NPC
Definition: UnitDefinitions.hpp:61
static std::atomic< int32_t > _last_np_unit_guid(NPC_START_GUID)
#define sZone
Definition: Zone.hpp:247
uint16_t job_id() const
Definition: Unit.hpp:146
std::shared_ptr< Map > map()
Map & Map Container.
Definition: Unit.hpp:165
Unit(uint64_t uuid, unit_type type, unit_type_mask type_mask, std::shared_ptr< Map > map, MapCoords map_coords)
Definition: Unit.cpp:45
void set_job_id(uint16_t job_id)
Definition: Unit.hpp:147
const std::string & name() const
Definition: Unit.hpp:152
void set_direction(directions dir)
Definition: Unit.hpp:156
void set_name(const std::string &name)
Definition: Unit.hpp:153

References Horizon::Zone::Unit::job_id(), Horizon::Zone::Unit::name(), Horizon::Zone::Unit::set_direction(), Horizon::Zone::Unit::set_job_id(), and Horizon::Zone::Unit::set_name().

+ Here is the call graph for this function:

◆ NPC() [2/4]

Horizon::Zone::Units::NPC::NPC ( std::string const &  name,
std::shared_ptr< Map map,
uint16_t  x,
uint16_t  y,
uint32_t  job_id,
directions  dir,
std::string const &  script_file 
)

◆ NPC() [3/4]

Horizon::Zone::Units::NPC::NPC ( std::string const &  name,
std::shared_ptr< Map map,
uint16_t  x,
uint16_t  y,
uint32_t  job_id,
directions  dir,
std::shared_ptr< NPC duplicate 
)

◆ NPC() [4/4]

NPC::NPC ( std::string const &  name,
std::shared_ptr< Map map,
uint16_t  x,
uint16_t  y,
std::string const &  script 
)
47: Unit(sZone->to_uuid((uint8_t) UNIT_NPC, ++_last_np_unit_guid, 0, 0), UNIT_NPC, UNIT_MASK_NPC, map, MapCoords(x, y))
48{
52}
@ NPC_TYPE_PORTAL
Definition: NPCDefinitions.hpp:43
@ DIR_NORTH
Definition: UnitDefinitions.hpp:76

References DIR_NORTH, Horizon::Zone::Unit::name(), NPC_TYPE_PORTAL, Horizon::Zone::Unit::set_direction(), Horizon::Zone::Unit::set_job_id(), and Horizon::Zone::Unit::set_name().

+ Here is the call graph for this function:

◆ ~NPC()

NPC::~NPC ( )
55{
58}
bool has_valid_grid_reference() const
Definition: GridObject.hpp:46
void remove_grid_reference()
Definition: GridObject.hpp:48

References Horizon::Zone::GridObject< NPC >::has_valid_grid_reference(), and Horizon::Zone::GridObject< NPC >::remove_grid_reference().

+ Here is the call graph for this function:

Member Function Documentation

◆ initialize()

bool NPC::initialize ( )
61{
62 if (Unit::initialize() == false)
63 return false;
64
65 if (status()->initialize(shared_from_this()->downcast<NPC>()) == false)
66 return false;
67
68 map()->ensure_grid_for_unit(this, map_coords());
69
70 return true;
71}
bool initialize()
Definition: Unit.cpp:72
std::shared_ptr< Horizon::Zone::Traits::Status > status()
Definition: Unit.hpp:158
MapCoords const & map_coords() const
Grid applications.
Definition: Unit.hpp:186
bool initialize()
Definition: NPC.cpp:60

References initialize(), Horizon::Zone::Unit::initialize(), Horizon::Zone::Unit::map(), Horizon::Zone::Unit::map_coords(), and Horizon::Zone::Unit::status().

Referenced by initialize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ on_movement_begin()

void NPC::on_movement_begin ( int32_t  time)
overridevirtual

Implements Horizon::Zone::Unit.

84{
85
86}

◆ on_movement_end()

void NPC::on_movement_end ( )
overridevirtual

Implements Horizon::Zone::Unit.

94{
95
96}

◆ on_movement_step()

void NPC::on_movement_step ( )
overridevirtual

Implements Horizon::Zone::Unit.

89{
90 map()->ensure_grid_for_unit(this, map_coords());
91}

References Horizon::Zone::Unit::map(), and Horizon::Zone::Unit::map_coords().

+ Here is the call graph for this function:

◆ on_pathfinding_failure()

void NPC::on_pathfinding_failure ( )
overridevirtual

Implements Horizon::Zone::Unit.

79{
80
81}

◆ on_status_effect_change()

void NPC::on_status_effect_change ( std::shared_ptr< status_change_entry sce)
overridevirtual

Implements Horizon::Zone::Unit.

100{ }

◆ on_status_effect_end()

void NPC::on_status_effect_end ( std::shared_ptr< status_change_entry sce)
overridevirtual

Implements Horizon::Zone::Unit.

99{ }

◆ on_status_effect_start()

void NPC::on_status_effect_start ( std::shared_ptr< status_change_entry sce)
overridevirtual

Implements Horizon::Zone::Unit.

98{ }

◆ stop_movement()

void NPC::stop_movement ( )
overridevirtual

Implements Horizon::Zone::Unit.

74{
75
76}

The documentation for this class was generated from the following files: