Horizon Official Technical Documentation
Monster.hpp
Go to the documentation of this file.
1/***************************************************
2 * _ _ _ *
3 * | | | | (_) *
4 * | |_| | ___ _ __ _ _______ _ __ *
5 * | _ |/ _ \| '__| |_ / _ \| '_ \ *
6 * | | | | (_) | | | |/ / (_) | | | | *
7 * \_| |_/\___/|_| |_/___\___/|_| |_| *
8 ***************************************************
9 * This file is part of Horizon (c).
10 *
11 * Copyright (c) 2019 Sagun K. (sagunxp@gmail.com).
12 * Copyright (c) 2019 Horizon Dev Team.
13 *
14 * Base Author - Sagun K. (sagunxp@gmail.com)
15 *
16 * This library is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation, either version 3 of the License, or
19 * (at your option) any later version.
20 *
21 * This library is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
25 *
26 * You should have received a copy of the GNU General Public License
27 * along with this library. If not, see <http://www.gnu.org/licenses/>.
28 **************************************************/
29
30#ifndef HORIZON_ZONE_GAME_ENTITIES_MONSTER_HPP
31#define HORIZON_ZONE_GAME_ENTITIES_MONSTER_HPP
32
36
37
38namespace Horizon
39{
40namespace Zone
41{
42class Map;
43namespace Units
44{
45class Player;
46class Monster : public Mob, public GridObject<Monster>
47{
48public:
49 explicit Monster(int16_t spawn_dataset_id, int8_t spawn_id, std::shared_ptr<Map> map, MapCoords mcoords,
50 std::shared_ptr<const monster_config_data> md,
51 std::shared_ptr<std::vector<std::shared_ptr<const monster_skill_config_data>>> mskd);
52 ~Monster() override;
53
54 bool initialize();
55 virtual bool finalize() override;
56
57 virtual void stop_movement() override;
58 virtual void on_pathfinding_failure() override;
59 virtual void on_movement_begin(int32_t time) override;
60 virtual void on_movement_step() override;
61 virtual void on_movement_end() override;
62
63 void on_damage_received(std::shared_ptr<Unit> damage_dealer, int damage) override;
64 void on_killed(std::shared_ptr<Unit> killer, bool with_drops = false, bool with_exp = false) override;
65
66 void set_spotted(bool spotted) { _was_spotted_once = spotted; }
68
69 std::shared_ptr<const monster_config_data> monster_config() { return _wmd_data.lock(); }
70 void set_monster_config(std::shared_ptr<const monster_config_data> md) { _wmd_data = md; }
71
75 void on_status_effect_start(std::shared_ptr<status_change_entry> sce) override;
76 void on_status_effect_end(std::shared_ptr<status_change_entry> sce) override;
77 void on_status_effect_change(std::shared_ptr<status_change_entry> sce) override;
78
79 void behavior_passive();
80 void behavior_active(std::shared_ptr<Player> pl);
81
82 void set_next_walk_time(int walk_time) { _next_walk_time = walk_time; }
84
85 void set_target(std::shared_ptr<Unit> &target) { _target = target; }
86 std::shared_ptr<Unit> target() { return _target; }
87 void unlock_target() { _target = nullptr; }
88
89private:
90 bool _was_spotted_once{false};
92 std::weak_ptr<const monster_config_data> _wmd_data;
93 std::weak_ptr<std::vector<std::shared_ptr<const monster_skill_config_data>>> _wms_data;
94
95 std::shared_ptr<Unit> _target{nullptr};
96
97};
98}
99}
100}
101
102#endif /* HORIZON_ZONE_GAME_ENTITIES_MONSTER_HPP */
Definition: GridObject.hpp:42
std::shared_ptr< Map > map()
Map & Map Container.
Definition: Unit.hpp:165
Definition: Mob.hpp:45
Definition: Monster.hpp:47
void behavior_active(std::shared_ptr< Player > pl)
Definition: Monster.cpp:116
Monster(int16_t spawn_dataset_id, int8_t spawn_id, std::shared_ptr< Map > map, MapCoords mcoords, std::shared_ptr< const monster_config_data > md, std::shared_ptr< std::vector< std::shared_ptr< const monster_skill_config_data > > > mskd)
Definition: Monster.cpp:45
void on_status_effect_end(std::shared_ptr< status_change_entry > sce) override
Definition: Monster.cpp:171
void set_monster_config(std::shared_ptr< const monster_config_data > md)
Definition: Monster.hpp:70
void set_next_walk_time(int walk_time)
Definition: Monster.hpp:82
void set_target(std::shared_ptr< Unit > &target)
Definition: Monster.hpp:85
void on_damage_received(std::shared_ptr< Unit > damage_dealer, int damage) override
Definition: Monster.cpp:181
virtual void on_pathfinding_failure() override
Definition: Monster.cpp:147
void unlock_target()
Definition: Monster.hpp:87
virtual void on_movement_step() override
Definition: Monster.cpp:157
std::weak_ptr< const monster_config_data > _wmd_data
Definition: Monster.hpp:92
void on_status_effect_start(std::shared_ptr< status_change_entry > sce) override
Status Effect.
Definition: Monster.cpp:166
void set_spotted(bool spotted)
Definition: Monster.hpp:66
int next_walk_time()
Definition: Monster.hpp:83
void behavior_passive()
Definition: Monster.cpp:92
std::weak_ptr< std::vector< std::shared_ptr< const monster_skill_config_data > > > _wms_data
Definition: Monster.hpp:93
virtual bool finalize() override
Definition: Monster.cpp:80
bool _was_spotted_once
Definition: Monster.hpp:90
virtual void on_movement_end() override
Definition: Monster.cpp:162
std::shared_ptr< Unit > _target
Definition: Monster.hpp:95
std::shared_ptr< Unit > target()
Definition: Monster.hpp:86
virtual void on_movement_begin(int32_t time) override
Definition: Monster.cpp:152
int _last_think_time
Definition: Monster.hpp:91
void on_killed(std::shared_ptr< Unit > killer, bool with_drops=false, bool with_exp=false) override
Definition: Monster.cpp:186
void on_status_effect_change(std::shared_ptr< status_change_entry > sce) override
Definition: Monster.cpp:176
~Monster() override
Definition: Monster.cpp:55
virtual void stop_movement() override
Definition: Monster.cpp:143
int _last_spotted_time
Definition: Monster.hpp:91
int _next_walk_time
Definition: Monster.hpp:91
bool initialize()
Definition: Monster.cpp:59
bool was_spotted_once()
Definition: Monster.hpp:67
std::shared_ptr< const monster_config_data > monster_config()
Definition: Monster.hpp:69
Definition: ReferenceListTest.cpp:114
Definition: Element.hpp:7