Horizon Official Technical Documentation
SkillDB.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_STATICDB_SKILLDB_HPP
31#define HORIZON_ZONE_STATICDB_SKILLDB_HPP
33 // Linux
37
38#include <sol/sol.hpp>
39
40namespace Horizon
41{
42namespace Zone
43{
45{
46public:
49
51 {
52 static SkillDatabase instance;
53 return &instance;
54 }
55
56 bool load();
57
58protected:
59 bool load_internal_skill_db(sol::object const &key, sol::object const &value);
60 bool load_internal_skill_tree(sol::object const &key, sol::object const &value);
61
62 bool parse_range(sol::table const &table, skill_config_data &data);
63 bool parse_hit(sol::table const &table, skill_config_data &data);
64 bool parse_skill_type(sol::table const &table, skill_config_data &data);
65 bool parse_skill_info(sol::table const &table, skill_config_data &data);
66 bool parse_attack_type(sol::table const &table, skill_config_data &data);
67 bool parse_element(sol::table const &table, skill_config_data &data);
68 bool parse_damage_type(sol::table const &table, skill_config_data &data);
69 bool parse_splash_range(sol::table const &table, skill_config_data &data);
70 bool parse_number_of_hits(sol::table const &table, skill_config_data &data);
71 bool parse_interrupt_cast(sol::table const &table, skill_config_data &data);
72 bool parse_cast_defense_rate(sol::table const &table, skill_config_data &data);
73 bool parse_max_skill_instances(sol::table const &table, skill_config_data &data);
74 bool parse_knock_back_tiles(sol::table const &table, skill_config_data &data);
75 bool parse_cast_time(sol::table const &table, skill_config_data &data);
76 bool parse_after_cast_act_delay(sol::table const &table, skill_config_data &data);
77 bool parse_after_cast_walk_delay(sol::table const &table, skill_config_data &data);
78 bool parse_skill_data1(sol::table const &table, skill_config_data &data);
79 bool parse_skill_data2(sol::table const &table, skill_config_data &data);
80 bool parse_cooldown(sol::table const &table, skill_config_data &data);
81 bool parse_fixed_cast_time(sol::table const &table, skill_config_data &data);
82 bool parse_cast_time_options(sol::table const &table, skill_config_data &data);
83 bool parse_skill_delay_options(sol::table const &table, skill_config_data &data);
84 bool parse_requirements(sol::table const &table, skill_config_data &data);
85
86 bool parse_req_hp_cost(sol::table const &table, skill_config_data &data);
87 bool parse_req_sp_cost(sol::table const &table, skill_config_data &data);
88 bool parse_req_hp_rate_cost(sol::table const &table, skill_config_data &data);
89 bool parse_req_sp_rate_cost(sol::table const &table, skill_config_data &data);
90 bool parse_req_max_hp_trigger(sol::table const &table, skill_config_data &data);
91 bool parse_req_max_sp_trigger(sol::table const &table, skill_config_data &data);
92 bool parse_req_zeny_cost(sol::table const &table, skill_config_data &data);
93 bool parse_req_weapon_types(sol::table const &table, skill_config_data &data);
94 bool parse_req_ammunition_type(sol::table const &table, skill_config_data &data);
95 bool parse_req_ammunition_cost(sol::table const &table, skill_config_data &data);
96 bool parse_req_state(sol::table const &table, skill_config_data &data);
97 bool parse_req_spirit_sphere_cost(sol::table const &table, skill_config_data &data);
98 bool parse_req_items(sol::table const &table, skill_config_data &data, bool equips);
99
100 bool parse_placement(sol::table const &table, skill_config_data &data);
101 bool parse_placement_id(sol::table const &table, skill_config_data &data);
102 bool parse_placement_layout(sol::table const &table, skill_config_data &data);
103 bool parse_placement_range(sol::table const &table, skill_config_data &data);
104 bool parse_placement_interval(sol::table const &table, skill_config_data &data);
105 bool parse_placement_target(sol::table const &table, skill_config_data &data);
106 bool parse_placement_flag(sol::table const &table, skill_config_data &data);
107
108 template <typename T>
109 void fill_lvl_range(T *setting, T value);
110
111public:
112 std::shared_ptr<const skill_config_data> get_skill_by_id(int32_t id) { return _skill_db.at(id); }
113 std::shared_ptr<const skill_config_data> get_skill_by_name(std::string name) { return _skill_str_db.at(name); }
114
115 std::vector<std::shared_ptr<const skill_tree_config>> get_skill_tree_by_job_id(job_class_type job_id)
116 {
117 return _skill_tree_db.at(job_id, std::vector<std::shared_ptr<const skill_tree_config>>());
118 }
119
120 std::shared_ptr<const skill_tree_config> get_skill_tree_skill_id_by_job_id(job_class_type job_id, int16_t skill_id)
121 {
122 for (auto stc : get_skill_tree_by_job_id(job_id)) {
123 if (stc->skill_id == skill_id)
124 return stc;
125 }
126
127 return nullptr;
128 }
129
130private:
134};
135}
136}
137
138template <typename T>
140{
141 for (int i = 0; i < MAX_SKILL_LEVEL; i++)
142 setting[i] = value;
143}
144
145#define SkillDB Horizon::Zone::SkillDatabase::get_instance()
146
147#endif /* HORIZON_ZONE_STATICDB_SKILLDB_HPP */
#define MAX_SKILL_LEVEL
Definition: SkillDefinitions.hpp:45
job_class_type
Definition: UnitDefinitions.hpp:474
Definition: SkillDB.hpp:45
bool parse_placement_target(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:2039
bool parse_interrupt_cast(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:607
~SkillDatabase()
Definition: SkillDB.cpp:48
bool parse_cast_time(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:771
bool parse_req_hp_rate_cost(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1289
bool parse_req_hp_cost(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1207
bool parse_req_sp_cost(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1248
bool parse_max_skill_instances(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:689
bool parse_skill_data2(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:935
bool parse_req_items(sol::table const &table, skill_config_data &data, bool equips)
Definition: SkillDB.cpp:1695
bool parse_cast_time_options(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1058
bool parse_skill_info(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:369
bool parse_element(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:441
bool parse_placement_interval(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1998
bool parse_req_state(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1593
bool parse_skill_delay_options(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1106
LockedLookupTable< uint32_t, std::shared_ptr< const skill_config_data > > _skill_db
Definition: SkillDB.hpp:131
bool parse_after_cast_walk_delay(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:853
bool parse_after_cast_act_delay(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:812
bool parse_requirements(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1154
bool parse_placement(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1814
bool parse_cast_defense_rate(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:648
bool parse_req_ammunition_type(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1523
bool load()
Definition: SkillDB.cpp:53
std::vector< std::shared_ptr< const skill_tree_config > > get_skill_tree_by_job_id(job_class_type job_id)
Definition: SkillDB.hpp:115
bool parse_fixed_cast_time(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1017
void fill_lvl_range(T *setting, T value)
Definition: SkillDB.hpp:139
bool parse_req_spirit_sphere_cost(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1654
bool parse_placement_range(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1957
bool parse_placement_id(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1850
bool parse_range(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:227
static SkillDatabase * get_instance()
Definition: SkillDB.hpp:50
bool parse_hit(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:270
bool parse_req_weapon_types(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1494
std::shared_ptr< const skill_config_data > get_skill_by_id(int32_t id)
Definition: SkillDB.hpp:112
bool parse_req_ammunition_cost(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1552
bool parse_number_of_hits(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:566
std::shared_ptr< const skill_tree_config > get_skill_tree_skill_id_by_job_id(job_class_type job_id, int16_t skill_id)
Definition: SkillDB.hpp:120
bool load_internal_skill_db(sol::object const &key, sol::object const &value)
Definition: SkillDB.cpp:118
bool parse_skill_type(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:340
LockedLookupTable< job_class_type, std::vector< std::shared_ptr< const skill_tree_config > > > _skill_tree_db
Definition: SkillDB.hpp:133
bool parse_attack_type(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:398
bool parse_cooldown(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:976
bool parse_skill_data1(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:894
bool parse_splash_range(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:525
LockedLookupTable< std::string, std::shared_ptr< const skill_config_data > > _skill_str_db
Definition: SkillDB.hpp:132
SkillDatabase()
Definition: SkillDB.cpp:43
bool parse_damage_type(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:483
bool parse_req_max_sp_trigger(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1412
bool parse_knock_back_tiles(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:730
bool parse_placement_layout(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1916
bool parse_req_zeny_cost(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1453
std::shared_ptr< const skill_config_data > get_skill_by_name(std::string name)
Definition: SkillDB.hpp:113
bool parse_req_sp_rate_cost(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1330
bool parse_placement_flag(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:2080
bool load_internal_skill_tree(sol::object const &key, sol::object const &value)
Definition: SkillDB.cpp:2093
bool parse_req_max_hp_trigger(sol::table const &table, skill_config_data &data)
Definition: SkillDB.cpp:1371
Definition: LockedLookupTable.hpp:44
Value at(Key const &key, Value const &default_value=Value()) const
Definition: LockedLookupTable.hpp:63
Definition: Element.hpp:7
Definition: SkillDefinitions.hpp:279