Horizon Official Technical Documentation
Horizon::Zone::JobDatabase Class Reference

#include <JobDB.hpp>

+ Collaboration diagram for Horizon::Zone::JobDatabase:

Public Member Functions

 JobDatabase ()
 
 ~JobDatabase ()
 
job_class_type get_job_class_by_name (std::string name) const
 
job_class_mask job_id_to_mask (job_class_type job_id) const
 
bool load ()
 
int load_job (sol::table &job_tbl, std::string name="")
 
bool load_job_internal (sol::table &job_tbl, job_config_data &data, std::string job_name="")
 
bool load_hp_sp_table (sol::table &job_tbl, job_config_data &data, std::string &job_name, std::string table_name)
 
std::shared_ptr< const job_config_dataget_job_by_id (uint16_t job_id)
 
std::string get_job_name_by_id (int32_t id)
 

Static Public Member Functions

static JobDatabaseget_instance ()
 

Private Attributes

LockedLookupTable< uint32_t, std::shared_ptr< const job_config_data > > _job_db
 
std::map< std::string, int > _name2id_list
 

Constructor & Destructor Documentation

◆ JobDatabase()

JobDatabase::JobDatabase ( )
36{
37 _name2id_list.emplace("Novice", JOB_NOVICE);
38 _name2id_list.emplace("Swordsman", JOB_SWORDMAN);
39 _name2id_list.emplace("Magician", JOB_MAGE);
40 _name2id_list.emplace("Archer", JOB_ARCHER);
41 _name2id_list.emplace("Acolyte", JOB_ACOLYTE);
42 _name2id_list.emplace("Merchant", JOB_MERCHANT);
43 _name2id_list.emplace("Thief", JOB_THIEF);
44 _name2id_list.emplace("Knight", JOB_KNIGHT);
45 _name2id_list.emplace("Priest", JOB_PRIEST);
46 _name2id_list.emplace("Wizard", JOB_WIZARD);
47 _name2id_list.emplace("Blacksmith", JOB_BLACKSMITH);
48 _name2id_list.emplace("Hunter", JOB_HUNTER);
49 _name2id_list.emplace("Assassin", JOB_ASSASSIN);
50 _name2id_list.emplace("Crusader", JOB_CRUSADER);
51 _name2id_list.emplace("Monk", JOB_MONK);
52 _name2id_list.emplace("Sage", JOB_SAGE);
53 _name2id_list.emplace("Rogue", JOB_ROGUE);
54 _name2id_list.emplace("Alchemist", JOB_ALCHEMIST);
55 _name2id_list.emplace("Bard", JOB_BARD);
56 _name2id_list.emplace("Dancer", JOB_DANCER);
57 _name2id_list.emplace("SuperNovice", JOB_SUPER_NOVICE);
58 _name2id_list.emplace("Gunslinger", JOB_GUNSLINGER);
59 _name2id_list.emplace("Ninja", JOB_NINJA);
60 _name2id_list.emplace("HighNovice", JOB_NOVICE_HIGH);
61 _name2id_list.emplace("HighSwordsman", JOB_SWORDMAN_HIGH);
62 _name2id_list.emplace("HighMagician", JOB_MAGE_HIGH);
63 _name2id_list.emplace("HighArcher", JOB_ARCHER_HIGH);
64 _name2id_list.emplace("HighAcolyte", JOB_ACOLYTE_HIGH);
65 _name2id_list.emplace("HighMerchant", JOB_MERCHANT_HIGH);
66 _name2id_list.emplace("HighThief", JOB_THIEF_HIGH);
67 _name2id_list.emplace("LordKnight", JOB_LORD_KNIGHT);
68 _name2id_list.emplace("HighPriest", JOB_HIGH_PRIEST);
69 _name2id_list.emplace("HighWizard", JOB_HIGH_WIZARD);
70 _name2id_list.emplace("Whitesmith", JOB_WHITESMITH);
71 _name2id_list.emplace("Sniper", JOB_SNIPER);
72 _name2id_list.emplace("AssassinCross", JOB_ASSASSIN_CROSS);
73 _name2id_list.emplace("Paladin", JOB_PALADIN);
74 _name2id_list.emplace("Champion", JOB_CHAMPION);
75 _name2id_list.emplace("Professor", JOB_PROFESSOR);
76 _name2id_list.emplace("Stalker", JOB_STALKER);
77 _name2id_list.emplace("Creator", JOB_CREATOR);
78 _name2id_list.emplace("Clown", JOB_CLOWN);
79 _name2id_list.emplace("Gypsy", JOB_GYPSY);
80 _name2id_list.emplace("BabyNovice", JOB_BABY_NOVICE);
81 _name2id_list.emplace("BabySwordsman", JOB_BABY_SWORDMAN);
82 _name2id_list.emplace("BabyMagician", JOB_BABY_MAGE);
83 _name2id_list.emplace("BabyArcher", JOB_BABY_ARCHER);
84 _name2id_list.emplace("BabyAcolyte", JOB_BABY_ACOLYTE);
85 _name2id_list.emplace("BabyMerchant", JOB_BABY_MERCHANT);
86 _name2id_list.emplace("BabyThief", JOB_BABY_THIEF);
87 _name2id_list.emplace("BabyKnight", JOB_BABY_KNIGHT);
88 _name2id_list.emplace("BabyPriest", JOB_BABY_PRIEST);
89 _name2id_list.emplace("BabyWizard", JOB_BABY_WIZARD);
90 _name2id_list.emplace("BabyBlacksmith", JOB_BABY_BLACKSMITH);
91 _name2id_list.emplace("BabyHunter", JOB_BABY_HUNTER);
92 _name2id_list.emplace("BabyAssassin", JOB_BABY_ASSASSIN);
93 _name2id_list.emplace("BabyCrusader", JOB_BABY_CRUSADER);
94 _name2id_list.emplace("BabyMonk", JOB_BABY_MONK);
95 _name2id_list.emplace("BabySage", JOB_BABY_SAGE);
96 _name2id_list.emplace("BabyRogue", JOB_BABY_ROGUE);
97 _name2id_list.emplace("BabyAlchemist", JOB_BABY_ALCHEMIST);
98 _name2id_list.emplace("BabyBard", JOB_BABY_BARD);
99 _name2id_list.emplace("BabyDancer", JOB_BABY_DANCER);
100 _name2id_list.emplace("SuperBaby", JOB_SUPER_BABY);
101 _name2id_list.emplace("Taekwon", JOB_TAEKWON);
102 _name2id_list.emplace("StarGladiator", JOB_STAR_GLADIATOR);
103 _name2id_list.emplace("SoulLinker", JOB_SOUL_LINKER);
104 _name2id_list.emplace("Gangsi", JOB_GANGSI);
105 _name2id_list.emplace("DeathKnight", JOB_DEATH_KNIGHT);
106 _name2id_list.emplace("DarkCollector", JOB_DARK_COLLECTOR);
107 _name2id_list.emplace("RuneKnight", JOB_RUNE_KNIGHT);
108 _name2id_list.emplace("Warlock", JOB_WARLOCK);
109 _name2id_list.emplace("Ranger", JOB_RANGER);
110 _name2id_list.emplace("ArchBishop", JOB_ARCH_BISHOP);
111 _name2id_list.emplace("Mechanic", JOB_MECHANIC);
112 _name2id_list.emplace("GuillotineCross", JOB_GUILLOTINE_CROSS);
113 _name2id_list.emplace("RuneKnightTrans", JOB_RUNE_KNIGHT_T);
114 _name2id_list.emplace("WarlockTrans", JOB_WARLOCK_T);
115 _name2id_list.emplace("RangerTrans", JOB_RANGER_T);
116 _name2id_list.emplace("ArchBishopTrans", JOB_ARCH_BISHOP_T);
117 _name2id_list.emplace("MechanicTrans", JOB_MECHANIC_T);
118 _name2id_list.emplace("GuillotineCrossTrans", JOB_GUILLOTINE_CROSS_T);
119 _name2id_list.emplace("RoyalGuard", JOB_ROYAL_GUARD);
120 _name2id_list.emplace("Sorcerer", JOB_SORCERER);
121 _name2id_list.emplace("Minstrel", JOB_MINSTREL);
122 _name2id_list.emplace("Wanderer", JOB_WANDERER);
123 _name2id_list.emplace("Sura", JOB_SURA);
124 _name2id_list.emplace("Genetic", JOB_GENETIC);
125 _name2id_list.emplace("ShadowChaser", JOB_SHADOW_CHASER);
126 _name2id_list.emplace("RoyalGuardTrans", JOB_ROYAL_GUARD_T);
127 _name2id_list.emplace("SorcererTrans", JOB_SORCERER_T);
128 _name2id_list.emplace("MinstrelTrans", JOB_MINSTREL_T);
129 _name2id_list.emplace("WandererTrans", JOB_WANDERER_T);
130 _name2id_list.emplace("SuraTrans", JOB_SURA_T);
131 _name2id_list.emplace("GeneticTrans", JOB_GENETIC_T);
132 _name2id_list.emplace("ShadowChaserTrans", JOB_SHADOW_CHASER_T);
133 _name2id_list.emplace("BabyRuneKnight", JOB_BABY_RUNE_KNIGHT);
134 _name2id_list.emplace("BabyWarlock", JOB_BABY_WARLOCK);
135 _name2id_list.emplace("BabyRanger", JOB_BABY_RANGER);
136 _name2id_list.emplace("BabyArchBishop", JOB_BABY_ARCH_BISHOP);
137 _name2id_list.emplace("BabyMechanic", JOB_BABY_MECHANIC);
138 _name2id_list.emplace("BabyGuillotineCross", JOB_BABY_GUILLOTINE_CROSS);
139 _name2id_list.emplace("BabyRoyalGuard", JOB_BABY_ROYAL_GUARD);
140 _name2id_list.emplace("BabySorcerer", JOB_BABY_SORCERER);
141 _name2id_list.emplace("BabyMinstrel", JOB_BABY_MINSTREL);
142 _name2id_list.emplace("BabyWanderer", JOB_BABY_WANDERER);
143 _name2id_list.emplace("BabySura", JOB_BABY_SURA);
144 _name2id_list.emplace("BabyGenetic", JOB_BABY_GENETIC);
145 _name2id_list.emplace("BabyShadowChaser", JOB_BABY_SHADOW_CHASER);
146 _name2id_list.emplace("ExpandedSuperNovice", JOB_SUPER_NOVICE_E);
147 _name2id_list.emplace("ExpandedSuperBaby", JOB_SUPER_BABY_E);
148 _name2id_list.emplace("Kagerou", JOB_KAGEROU);
149 _name2id_list.emplace("Oboro", JOB_OBORO);
150 _name2id_list.emplace("Rebellion", JOB_REBELLION);
151 _name2id_list.emplace("Summoner", JOB_SUMMONER);
152}
@ JOB_BABY_MECHANIC
Definition: UnitDefinitions.hpp:596
@ JOB_SUMMONER
Definition: UnitDefinitions.hpp:614
@ JOB_BABY_THIEF
Definition: UnitDefinitions.hpp:532
@ JOB_RUNE_KNIGHT_T
Definition: UnitDefinitions.hpp:563
@ JOB_GUILLOTINE_CROSS_T
Definition: UnitDefinitions.hpp:568
@ JOB_SHADOW_CHASER_T
Definition: UnitDefinitions.hpp:582
@ JOB_GYPSY
Definition: UnitDefinitions.hpp:524
@ JOB_MAGE
Definition: UnitDefinitions.hpp:477
@ JOB_DANCER
Definition: UnitDefinitions.hpp:495
@ JOB_BABY_SWORDMAN
Definition: UnitDefinitions.hpp:527
@ JOB_SURA_T
Definition: UnitDefinitions.hpp:580
@ JOB_SWORDMAN_HIGH
Definition: UnitDefinitions.hpp:505
@ JOB_MECHANIC_T
Definition: UnitDefinitions.hpp:567
@ JOB_BABY_ALCHEMIST
Definition: UnitDefinitions.hpp:544
@ JOB_REBELLION
Definition: UnitDefinitions.hpp:613
@ JOB_NOVICE
Definition: UnitDefinitions.hpp:475
@ JOB_ROGUE
Definition: UnitDefinitions.hpp:492
@ JOB_BABY_NOVICE
Definition: UnitDefinitions.hpp:526
@ JOB_CHAMPION
Definition: UnitDefinitions.hpp:519
@ JOB_BABY_MONK
Definition: UnitDefinitions.hpp:541
@ JOB_PRIEST
Definition: UnitDefinitions.hpp:483
@ JOB_ARCH_BISHOP
Definition: UnitDefinitions.hpp:560
@ JOB_ASSASSIN_CROSS
Definition: UnitDefinitions.hpp:516
@ JOB_CRUSADER
Definition: UnitDefinitions.hpp:489
@ JOB_BABY_ACOLYTE
Definition: UnitDefinitions.hpp:530
@ JOB_CLOWN
Definition: UnitDefinitions.hpp:523
@ JOB_DEATH_KNIGHT
Definition: UnitDefinitions.hpp:554
@ JOB_STALKER
Definition: UnitDefinitions.hpp:521
@ JOB_SWORDMAN
Definition: UnitDefinitions.hpp:476
@ JOB_MERCHANT_HIGH
Definition: UnitDefinitions.hpp:509
@ JOB_SNIPER
Definition: UnitDefinitions.hpp:515
@ JOB_DARK_COLLECTOR
Definition: UnitDefinitions.hpp:555
@ JOB_WARLOCK_T
Definition: UnitDefinitions.hpp:564
@ JOB_RANGER
Definition: UnitDefinitions.hpp:559
@ JOB_BLACKSMITH
Definition: UnitDefinitions.hpp:485
@ JOB_BABY_WIZARD
Definition: UnitDefinitions.hpp:535
@ JOB_ALCHEMIST
Definition: UnitDefinitions.hpp:493
@ JOB_BABY_SORCERER
Definition: UnitDefinitions.hpp:599
@ JOB_BABY_BARD
Definition: UnitDefinitions.hpp:545
@ JOB_BABY_WARLOCK
Definition: UnitDefinitions.hpp:593
@ JOB_SUPER_BABY
Definition: UnitDefinitions.hpp:548
@ JOB_BABY_SURA
Definition: UnitDefinitions.hpp:602
@ JOB_HIGH_PRIEST
Definition: UnitDefinitions.hpp:512
@ JOB_SURA
Definition: UnitDefinitions.hpp:573
@ JOB_SUPER_NOVICE_E
Definition: UnitDefinitions.hpp:609
@ JOB_BABY_ROGUE
Definition: UnitDefinitions.hpp:543
@ JOB_BABY_GUILLOTINE_CROSS
Definition: UnitDefinitions.hpp:597
@ JOB_MINSTREL
Definition: UnitDefinitions.hpp:571
@ JOB_OBORO
Definition: UnitDefinitions.hpp:612
@ JOB_BABY_MERCHANT
Definition: UnitDefinitions.hpp:531
@ JOB_WIZARD
Definition: UnitDefinitions.hpp:484
@ JOB_ARCH_BISHOP_T
Definition: UnitDefinitions.hpp:566
@ JOB_NOVICE_HIGH
Definition: UnitDefinitions.hpp:504
@ JOB_BABY_MAGE
Definition: UnitDefinitions.hpp:528
@ JOB_RANGER_T
Definition: UnitDefinitions.hpp:565
@ JOB_SORCERER_T
Definition: UnitDefinitions.hpp:577
@ JOB_SUPER_BABY_E
Definition: UnitDefinitions.hpp:610
@ JOB_GENETIC_T
Definition: UnitDefinitions.hpp:581
@ JOB_ARCHER_HIGH
Definition: UnitDefinitions.hpp:507
@ JOB_NINJA
Definition: UnitDefinitions.hpp:500
@ JOB_GANGSI
Definition: UnitDefinitions.hpp:553
@ JOB_MECHANIC
Definition: UnitDefinitions.hpp:561
@ JOB_WANDERER
Definition: UnitDefinitions.hpp:572
@ JOB_KAGEROU
Definition: UnitDefinitions.hpp:611
@ JOB_BABY_KNIGHT
Definition: UnitDefinitions.hpp:533
@ JOB_BABY_GENETIC
Definition: UnitDefinitions.hpp:603
@ JOB_HIGH_WIZARD
Definition: UnitDefinitions.hpp:513
@ JOB_PROFESSOR
Definition: UnitDefinitions.hpp:520
@ JOB_BABY_PRIEST
Definition: UnitDefinitions.hpp:534
@ JOB_BABY_BLACKSMITH
Definition: UnitDefinitions.hpp:536
@ JOB_BARD
Definition: UnitDefinitions.hpp:494
@ JOB_BABY_ARCH_BISHOP
Definition: UnitDefinitions.hpp:595
@ JOB_GENETIC
Definition: UnitDefinitions.hpp:574
@ JOB_ASSASSIN
Definition: UnitDefinitions.hpp:487
@ JOB_SHADOW_CHASER
Definition: UnitDefinitions.hpp:575
@ JOB_BABY_ASSASSIN
Definition: UnitDefinitions.hpp:538
@ JOB_SORCERER
Definition: UnitDefinitions.hpp:570
@ JOB_SAGE
Definition: UnitDefinitions.hpp:491
@ JOB_HUNTER
Definition: UnitDefinitions.hpp:486
@ JOB_SOUL_LINKER
Definition: UnitDefinitions.hpp:552
@ JOB_PALADIN
Definition: UnitDefinitions.hpp:518
@ JOB_GUNSLINGER
Definition: UnitDefinitions.hpp:499
@ JOB_MERCHANT
Definition: UnitDefinitions.hpp:480
@ JOB_BABY_HUNTER
Definition: UnitDefinitions.hpp:537
@ JOB_MINSTREL_T
Definition: UnitDefinitions.hpp:578
@ JOB_STAR_GLADIATOR
Definition: UnitDefinitions.hpp:550
@ JOB_WARLOCK
Definition: UnitDefinitions.hpp:558
@ JOB_ROYAL_GUARD_T
Definition: UnitDefinitions.hpp:576
@ JOB_BABY_MINSTREL
Definition: UnitDefinitions.hpp:600
@ JOB_RUNE_KNIGHT
Definition: UnitDefinitions.hpp:557
@ JOB_BABY_DANCER
Definition: UnitDefinitions.hpp:546
@ JOB_BABY_ROYAL_GUARD
Definition: UnitDefinitions.hpp:598
@ JOB_BABY_CRUSADER
Definition: UnitDefinitions.hpp:540
@ JOB_THIEF
Definition: UnitDefinitions.hpp:481
@ JOB_SUPER_NOVICE
Definition: UnitDefinitions.hpp:498
@ JOB_BABY_SHADOW_CHASER
Definition: UnitDefinitions.hpp:604
@ JOB_WANDERER_T
Definition: UnitDefinitions.hpp:579
@ JOB_GUILLOTINE_CROSS
Definition: UnitDefinitions.hpp:562
@ JOB_ROYAL_GUARD
Definition: UnitDefinitions.hpp:569
@ JOB_BABY_WANDERER
Definition: UnitDefinitions.hpp:601
@ JOB_WHITESMITH
Definition: UnitDefinitions.hpp:514
@ JOB_ARCHER
Definition: UnitDefinitions.hpp:478
@ JOB_BABY_SAGE
Definition: UnitDefinitions.hpp:542
@ JOB_ACOLYTE
Definition: UnitDefinitions.hpp:479
@ JOB_LORD_KNIGHT
Definition: UnitDefinitions.hpp:511
@ JOB_BABY_RANGER
Definition: UnitDefinitions.hpp:594
@ JOB_BABY_ARCHER
Definition: UnitDefinitions.hpp:529
@ JOB_KNIGHT
Definition: UnitDefinitions.hpp:482
@ JOB_MONK
Definition: UnitDefinitions.hpp:490
@ JOB_THIEF_HIGH
Definition: UnitDefinitions.hpp:510
@ JOB_TAEKWON
Definition: UnitDefinitions.hpp:549
@ JOB_MAGE_HIGH
Definition: UnitDefinitions.hpp:506
@ JOB_ACOLYTE_HIGH
Definition: UnitDefinitions.hpp:508
@ JOB_BABY_RUNE_KNIGHT
Definition: UnitDefinitions.hpp:592
@ JOB_CREATOR
Definition: UnitDefinitions.hpp:522
std::map< std::string, int > _name2id_list
Definition: JobDB.hpp:82

References _name2id_list, JOB_ACOLYTE, JOB_ACOLYTE_HIGH, JOB_ALCHEMIST, JOB_ARCH_BISHOP, JOB_ARCH_BISHOP_T, JOB_ARCHER, JOB_ARCHER_HIGH, JOB_ASSASSIN, JOB_ASSASSIN_CROSS, JOB_BABY_ACOLYTE, JOB_BABY_ALCHEMIST, JOB_BABY_ARCH_BISHOP, JOB_BABY_ARCHER, JOB_BABY_ASSASSIN, JOB_BABY_BARD, JOB_BABY_BLACKSMITH, JOB_BABY_CRUSADER, JOB_BABY_DANCER, JOB_BABY_GENETIC, JOB_BABY_GUILLOTINE_CROSS, JOB_BABY_HUNTER, JOB_BABY_KNIGHT, JOB_BABY_MAGE, JOB_BABY_MECHANIC, JOB_BABY_MERCHANT, JOB_BABY_MINSTREL, JOB_BABY_MONK, JOB_BABY_NOVICE, JOB_BABY_PRIEST, JOB_BABY_RANGER, JOB_BABY_ROGUE, JOB_BABY_ROYAL_GUARD, JOB_BABY_RUNE_KNIGHT, JOB_BABY_SAGE, JOB_BABY_SHADOW_CHASER, JOB_BABY_SORCERER, JOB_BABY_SURA, JOB_BABY_SWORDMAN, JOB_BABY_THIEF, JOB_BABY_WANDERER, JOB_BABY_WARLOCK, JOB_BABY_WIZARD, JOB_BARD, JOB_BLACKSMITH, JOB_CHAMPION, JOB_CLOWN, JOB_CREATOR, JOB_CRUSADER, JOB_DANCER, JOB_DARK_COLLECTOR, JOB_DEATH_KNIGHT, JOB_GANGSI, JOB_GENETIC, JOB_GENETIC_T, JOB_GUILLOTINE_CROSS, JOB_GUILLOTINE_CROSS_T, JOB_GUNSLINGER, JOB_GYPSY, JOB_HIGH_PRIEST, JOB_HIGH_WIZARD, JOB_HUNTER, JOB_KAGEROU, JOB_KNIGHT, JOB_LORD_KNIGHT, JOB_MAGE, JOB_MAGE_HIGH, JOB_MECHANIC, JOB_MECHANIC_T, JOB_MERCHANT, JOB_MERCHANT_HIGH, JOB_MINSTREL, JOB_MINSTREL_T, JOB_MONK, JOB_NINJA, JOB_NOVICE, JOB_NOVICE_HIGH, JOB_OBORO, JOB_PALADIN, JOB_PRIEST, JOB_PROFESSOR, JOB_RANGER, JOB_RANGER_T, JOB_REBELLION, JOB_ROGUE, JOB_ROYAL_GUARD, JOB_ROYAL_GUARD_T, JOB_RUNE_KNIGHT, JOB_RUNE_KNIGHT_T, JOB_SAGE, JOB_SHADOW_CHASER, JOB_SHADOW_CHASER_T, JOB_SNIPER, JOB_SORCERER, JOB_SORCERER_T, JOB_SOUL_LINKER, JOB_STALKER, JOB_STAR_GLADIATOR, JOB_SUMMONER, JOB_SUPER_BABY, JOB_SUPER_BABY_E, JOB_SUPER_NOVICE, JOB_SUPER_NOVICE_E, JOB_SURA, JOB_SURA_T, JOB_SWORDMAN, JOB_SWORDMAN_HIGH, JOB_TAEKWON, JOB_THIEF, JOB_THIEF_HIGH, JOB_WANDERER, JOB_WANDERER_T, JOB_WARLOCK, JOB_WARLOCK_T, JOB_WHITESMITH, and JOB_WIZARD.

◆ ~JobDatabase()

Horizon::Zone::JobDatabase::~JobDatabase ( )
inline
57{ }

Member Function Documentation

◆ get_instance()

static JobDatabase * Horizon::Zone::JobDatabase::get_instance ( )
inlinestatic
60 {
61 static JobDatabase instance;
62 return &instance;
63 }
JobDatabase()
Definition: JobDB.cpp:35

◆ get_job_by_id()

std::shared_ptr< const job_config_data > Horizon::Zone::JobDatabase::get_job_by_id ( uint16_t  job_id)
inline
73{ return _job_db.at((job_class_type) job_id); }
job_class_type
Definition: UnitDefinitions.hpp:474
LockedLookupTable< uint32_t, std::shared_ptr< const job_config_data > > _job_db
Definition: JobDB.hpp:81

References _job_db.

◆ get_job_class_by_name()

job_class_type JobDatabase::get_job_class_by_name ( std::string  name) const
155{
156 auto id = _name2id_list.find(name);
157
158 if (id == _name2id_list.end())
159 return JOB_INVALID;
160
161 return job_class_type(id->second);
162}
@ JOB_INVALID
Definition: UnitDefinitions.hpp:616

References _name2id_list, and JOB_INVALID.

Referenced by load_hp_sp_table(), load_job(), and load_job_internal().

+ Here is the caller graph for this function:

◆ get_job_name_by_id()

std::string Horizon::Zone::JobDatabase::get_job_name_by_id ( int32_t  id)
inline
74 {
75 for (auto j = _name2id_list.begin(); j != _name2id_list.end(); j++)
76 if (j->second == id)
77 return j->first;
78 return "";
79 }

References _name2id_list.

◆ job_id_to_mask()

job_class_mask JobDatabase::job_id_to_mask ( job_class_type  job_id) const
382{
383 switch (job_id)
384 {
385 //Novice And 1-1 Jobs
386 case JOB_NOVICE: return JMASK_NOVICE;
387 case JOB_SWORDMAN: return JMASK_SWORDMAN;
388 case JOB_MAGE: return JMASK_MAGE;
389 case JOB_ARCHER: return JMASK_ARCHER;
390 case JOB_ACOLYTE: return JMASK_ACOLYTE;
391 case JOB_MERCHANT: return JMASK_MERCHANT;
392 case JOB_THIEF: return JMASK_THIEF;
393 case JOB_WEDDING: return JMASK_WEDDING;
394 case JOB_GANGSI: return JMASK_GANGSI;
395 case JOB_SUMMONER: return JMASK_SUMMONER;
396 //2-1 Jobs
397 case JOB_KNIGHT: return JMASK_KNIGHT;
398 case JOB_WIZARD: return JMASK_WIZARD;
399 case JOB_HUNTER: return JMASK_HUNTER;
400 case JOB_PRIEST: return JMASK_PRIEST;
401 case JOB_BLACKSMITH: return JMASK_BLACKSMITH;
402 case JOB_ASSASSIN: return JMASK_ASSASSIN;
404 //2-2 Jobs
405 case JOB_CRUSADER: return JMASK_CRUSADER;
406 case JOB_SAGE: return JMASK_SAGE;
407 case JOB_BARD:
408 case JOB_DANCER: return JMASK_BARDDANCER;
409 case JOB_MONK: return JMASK_MONK;
410 case JOB_ALCHEMIST: return JMASK_ALCHEMIST;
411 case JOB_ROGUE: return JMASK_ROGUE;
413 //Trans Novice And Trans 1-1 Jobs
416 case JOB_MAGE_HIGH: return JMASK_MAGE_HIGH;
420 case JOB_THIEF_HIGH: return JMASK_THIEF_HIGH;
421 //Trans 2-1 Jobs
424 case JOB_SNIPER: return JMASK_SNIPER;
426 case JOB_WHITESMITH: return JMASK_WHITESMITH;
428 //Trans 2-2 Jobs
429 case JOB_PALADIN: return JMASK_PALADIN;
430 case JOB_PROFESSOR: return JMASK_PROFESSOR;
431 case JOB_CLOWN:
432 case JOB_GYPSY: return JMASK_CLOWNGYPSY;
433 case JOB_CHAMPION: return JMASK_CHAMPION;
434 case JOB_CREATOR: return JMASK_CREATOR;
435 case JOB_STALKER: return JMASK_STALKER;
436 //Baby Novice And Baby 1-1 Jobs
439 case JOB_BABY_MAGE: return JMASK_BABY_MAGE;
443 case JOB_BABY_THIEF: return JMASK_BABY_THIEF;
444 //Baby 2-1 Jobs
445 case JOB_SUPER_BABY: return JMASK_SUPER_BABY;
452 //Baby 2-2 Jobs
454 case JOB_BABY_SAGE: return JMASK_BABY_SAGE;
455 case JOB_BABY_BARD:
457 case JOB_BABY_MONK: return JMASK_BABY_MONK;
459 case JOB_BABY_ROGUE: return JMASK_BABY_ROGUE;
460 //3-1 Jobs
462 case JOB_WARLOCK: return JMASK_WARLOCK;
463 case JOB_RANGER: return JMASK_RANGER;
465 case JOB_MECHANIC: return JMASK_MECHANIC;
467 //3-2 Jobs
469 case JOB_SORCERER: return JMASK_SORCERER;
470 case JOB_MINSTREL:
472 case JOB_SURA: return JMASK_SURA;
473 case JOB_GENETIC: return JMASK_GENETIC;
475 //Trans 3-1 Jobs
477 case JOB_WARLOCK_T: return JMASK_WARLOCK_T;
478 case JOB_RANGER_T: return JMASK_RANGER_T;
480 case JOB_MECHANIC_T: return JMASK_MECHANIC_T;
482 //Trans 3-2 Jobs
484 case JOB_SORCERER_T: return JMASK_SORCERER_T;
485 case JOB_MINSTREL_T:
487 case JOB_SURA_T: return JMASK_SURA_T;
488 case JOB_GENETIC_T: return JMASK_GENETIC_T;
490 //Baby 3-1 Jobs
497 //Baby 3-2 Jobs
502 case JOB_BABY_SURA: return JMASK_BABY_SURA;
505 // Expanded Jobs
509 case JOB_TAEKWON: return JMASK_TAEKWON;
512 case JOB_GUNSLINGER: return JMASK_GUNSLINGER;
513 case JOB_REBELLION: return JMASK_REBELLION;
514 case JOB_NINJA: return JMASK_NINJA;
515 case JOB_KAGEROU:
516 case JOB_OBORO: return JMASK_KAGEROUOBORO;
517 default: return JMASK_INVALID;
518 }
519}
@ JMASK_BABY_SWORDMAN
Definition: UnitDefinitions.hpp:744
@ JMASK_BABY_CRUSADER
Definition: UnitDefinitions.hpp:760
@ JMASK_SWORDMAN_HIGH
Definition: UnitDefinitions.hpp:719
@ JMASK_WEDDING
Definition: UnitDefinitions.hpp:667
@ JMASK_BABY_RUNE_KNIGHT
Definition: UnitDefinitions.hpp:800
@ JMASK_SWORDMAN
Definition: UnitDefinitions.hpp:653
@ JMASK_BABY_ASSASSIN
Definition: UnitDefinitions.hpp:757
@ JMASK_SHADOW_CHASER_T
Definition: UnitDefinitions.hpp:797
@ JMASK_BABY_SORCERER
Definition: UnitDefinitions.hpp:809
@ JMASK_MAGE_HIGH
Definition: UnitDefinitions.hpp:720
@ JMASK_WIZARD
Definition: UnitDefinitions.hpp:701
@ JMASK_NOVICE
Definition: UnitDefinitions.hpp:652
@ JMASK_BABY_BARDDANCER
Definition: UnitDefinitions.hpp:762
@ JMASK_SURA_T
Definition: UnitDefinitions.hpp:795
@ JMASK_LORD_KNIGHT
Definition: UnitDefinitions.hpp:727
@ JMASK_MECHANIC_T
Definition: UnitDefinitions.hpp:788
@ JMASK_SORCERER_T
Definition: UnitDefinitions.hpp:793
@ JMASK_THIEF
Definition: UnitDefinitions.hpp:658
@ JMASK_BABY_WIZARD
Definition: UnitDefinitions.hpp:753
@ JMASK_TAEKWON
Definition: UnitDefinitions.hpp:816
@ JMASK_KNIGHT
Definition: UnitDefinitions.hpp:700
@ JMASK_BARDDANCER
Definition: UnitDefinitions.hpp:711
@ JMASK_BABY_PRIEST
Definition: UnitDefinitions.hpp:755
@ JMASK_BABY_MERCHANT
Definition: UnitDefinitions.hpp:748
@ JMASK_ROYAL_GUARD
Definition: UnitDefinitions.hpp:776
@ JMASK_RUNE_KNIGHT
Definition: UnitDefinitions.hpp:768
@ JMASK_ARCHER
Definition: UnitDefinitions.hpp:655
@ JMASK_ALCHEMIST
Definition: UnitDefinitions.hpp:713
@ JMASK_MECHANIC
Definition: UnitDefinitions.hpp:772
@ JMASK_HUNTER
Definition: UnitDefinitions.hpp:702
@ JMASK_CREATOR
Definition: UnitDefinitions.hpp:739
@ JMASK_DEATH_KNIGHT
Definition: UnitDefinitions.hpp:706
@ JMASK_SUPER_NOVICE_E
Definition: UnitDefinitions.hpp:821
@ JMASK_PROFESSOR
Definition: UnitDefinitions.hpp:736
@ JMASK_BABY_SURA
Definition: UnitDefinitions.hpp:811
@ JMASK_BABY_ARCH_BISHOP
Definition: UnitDefinitions.hpp:803
@ JMASK_MONK
Definition: UnitDefinitions.hpp:712
@ JMASK_SUPER_NOVICE
Definition: UnitDefinitions.hpp:820
@ JMASK_BABY_SHADOW_CHASER
Definition: UnitDefinitions.hpp:813
@ JMASK_PALADIN
Definition: UnitDefinitions.hpp:735
@ JMASK_ARCH_BISHOP_T
Definition: UnitDefinitions.hpp:787
@ JMASK_GENETIC_T
Definition: UnitDefinitions.hpp:796
@ JMASK_REBELLION
Definition: UnitDefinitions.hpp:827
@ JMASK_GENETIC
Definition: UnitDefinitions.hpp:780
@ JMASK_SUPER_BABY_E
Definition: UnitDefinitions.hpp:824
@ JMASK_BABY_ARCHER
Definition: UnitDefinitions.hpp:746
@ JMASK_CLOWNGYPSY
Definition: UnitDefinitions.hpp:737
@ JMASK_GUILLOTINE_CROSS_T
Definition: UnitDefinitions.hpp:789
@ JMASK_MINSTRELWANDERER
Definition: UnitDefinitions.hpp:778
@ JMASK_BABY_GENETIC
Definition: UnitDefinitions.hpp:812
@ JMASK_ACOLYTE
Definition: UnitDefinitions.hpp:656
@ JMASK_BABY_ROGUE
Definition: UnitDefinitions.hpp:765
@ JMASK_NOVICE_HIGH
Definition: UnitDefinitions.hpp:718
@ JMASK_HIGH_PRIEST
Definition: UnitDefinitions.hpp:730
@ JMASK_WHITESMITH
Definition: UnitDefinitions.hpp:731
@ JMASK_MERCHANT
Definition: UnitDefinitions.hpp:657
@ JMASK_SAGE
Definition: UnitDefinitions.hpp:710
@ JMASK_BABY_NOVICE
Definition: UnitDefinitions.hpp:743
@ JMASK_BABY_ALCHEMIST
Definition: UnitDefinitions.hpp:764
@ JMASK_BABY_MAGE
Definition: UnitDefinitions.hpp:745
@ JMASK_WARLOCK_T
Definition: UnitDefinitions.hpp:785
@ JMASK_ROGUE
Definition: UnitDefinitions.hpp:714
@ JMASK_ASSASSIN_CROSS
Definition: UnitDefinitions.hpp:732
@ JMASK_SUMMONER
Definition: UnitDefinitions.hpp:660
@ JMASK_SOUL_LINKER
Definition: UnitDefinitions.hpp:818
@ JMASK_BABY_WARLOCK
Definition: UnitDefinitions.hpp:801
@ JMASK_BABY_THIEF
Definition: UnitDefinitions.hpp:749
@ JMASK_BABY_SAGE
Definition: UnitDefinitions.hpp:761
@ JMASK_MAGE
Definition: UnitDefinitions.hpp:654
@ JMASK_ACOLYTE_HIGH
Definition: UnitDefinitions.hpp:722
@ JMASK_STALKER
Definition: UnitDefinitions.hpp:740
@ JMASK_SNIPER
Definition: UnitDefinitions.hpp:729
@ JMASK_RANGER
Definition: UnitDefinitions.hpp:770
@ JMASK_SURA
Definition: UnitDefinitions.hpp:779
@ JMASK_SHADOW_CHASER
Definition: UnitDefinitions.hpp:781
@ JMASK_INVALID
Definition: UnitDefinitions.hpp:651
@ JMASK_STAR_GLADIATOR
Definition: UnitDefinitions.hpp:817
@ JMASK_BABY_ROYAL_GUARD
Definition: UnitDefinitions.hpp:808
@ JMASK_SUPER_BABY
Definition: UnitDefinitions.hpp:823
@ JMASK_GUNSLINGER
Definition: UnitDefinitions.hpp:826
@ JMASK_ARCHER_HIGH
Definition: UnitDefinitions.hpp:721
@ JMASK_ASSASSIN
Definition: UnitDefinitions.hpp:705
@ JMASK_BABY_GUILLOTINE_CROSS
Definition: UnitDefinitions.hpp:805
@ JMASK_DARK_COLLECTOR
Definition: UnitDefinitions.hpp:715
@ JMASK_CHAMPION
Definition: UnitDefinitions.hpp:738
@ JMASK_ARCH_BISHOP
Definition: UnitDefinitions.hpp:771
@ JMASK_RANGER_T
Definition: UnitDefinitions.hpp:786
@ JMASK_MINSTRELWANDERER_T
Definition: UnitDefinitions.hpp:794
@ JMASK_BABY_MINSTRELWANDERER
Definition: UnitDefinitions.hpp:810
@ JMASK_HIGH_WIZARD
Definition: UnitDefinitions.hpp:728
@ JMASK_SORCERER
Definition: UnitDefinitions.hpp:777
@ JMASK_BABY_ACOLYTE
Definition: UnitDefinitions.hpp:747
@ JMASK_ROYAL_GUARD_T
Definition: UnitDefinitions.hpp:792
@ JMASK_CRUSADER
Definition: UnitDefinitions.hpp:709
@ JMASK_BLACKSMITH
Definition: UnitDefinitions.hpp:704
@ JMASK_BABY_MONK
Definition: UnitDefinitions.hpp:763
@ JMASK_NINJA
Definition: UnitDefinitions.hpp:829
@ JMASK_BABY_KNIGHT
Definition: UnitDefinitions.hpp:752
@ JMASK_BABY_RANGER
Definition: UnitDefinitions.hpp:802
@ JMASK_RUNE_KNIGHT_T
Definition: UnitDefinitions.hpp:784
@ JMASK_GANGSI
Definition: UnitDefinitions.hpp:659
@ JMASK_BABY_BLACKSMITH
Definition: UnitDefinitions.hpp:756
@ JMASK_MERCHANT_HIGH
Definition: UnitDefinitions.hpp:723
@ JMASK_PRIEST
Definition: UnitDefinitions.hpp:703
@ JMASK_BABY_MECHANIC
Definition: UnitDefinitions.hpp:804
@ JMASK_THIEF_HIGH
Definition: UnitDefinitions.hpp:724
@ JMASK_GUILLOTINE_CROSS
Definition: UnitDefinitions.hpp:773
@ JMASK_WARLOCK
Definition: UnitDefinitions.hpp:769
@ JMASK_KAGEROUOBORO
Definition: UnitDefinitions.hpp:830
@ JMASK_BABY_HUNTER
Definition: UnitDefinitions.hpp:754
@ JOB_WEDDING
Definition: UnitDefinitions.hpp:497

References JMASK_ACOLYTE, JMASK_ACOLYTE_HIGH, JMASK_ALCHEMIST, JMASK_ARCH_BISHOP, JMASK_ARCH_BISHOP_T, JMASK_ARCHER, JMASK_ARCHER_HIGH, JMASK_ASSASSIN, JMASK_ASSASSIN_CROSS, JMASK_BABY_ACOLYTE, JMASK_BABY_ALCHEMIST, JMASK_BABY_ARCH_BISHOP, JMASK_BABY_ARCHER, JMASK_BABY_ASSASSIN, JMASK_BABY_BARDDANCER, JMASK_BABY_BLACKSMITH, JMASK_BABY_CRUSADER, JMASK_BABY_GENETIC, JMASK_BABY_GUILLOTINE_CROSS, JMASK_BABY_HUNTER, JMASK_BABY_KNIGHT, JMASK_BABY_MAGE, JMASK_BABY_MECHANIC, JMASK_BABY_MERCHANT, JMASK_BABY_MINSTRELWANDERER, JMASK_BABY_MONK, JMASK_BABY_NOVICE, JMASK_BABY_PRIEST, JMASK_BABY_RANGER, JMASK_BABY_ROGUE, JMASK_BABY_ROYAL_GUARD, JMASK_BABY_RUNE_KNIGHT, JMASK_BABY_SAGE, JMASK_BABY_SHADOW_CHASER, JMASK_BABY_SORCERER, JMASK_BABY_SURA, JMASK_BABY_SWORDMAN, JMASK_BABY_THIEF, JMASK_BABY_WARLOCK, JMASK_BABY_WIZARD, JMASK_BARDDANCER, JMASK_BLACKSMITH, JMASK_CHAMPION, JMASK_CLOWNGYPSY, JMASK_CREATOR, JMASK_CRUSADER, JMASK_DARK_COLLECTOR, JMASK_DEATH_KNIGHT, JMASK_GANGSI, JMASK_GENETIC, JMASK_GENETIC_T, JMASK_GUILLOTINE_CROSS, JMASK_GUILLOTINE_CROSS_T, JMASK_GUNSLINGER, JMASK_HIGH_PRIEST, JMASK_HIGH_WIZARD, JMASK_HUNTER, JMASK_INVALID, JMASK_KAGEROUOBORO, JMASK_KNIGHT, JMASK_LORD_KNIGHT, JMASK_MAGE, JMASK_MAGE_HIGH, JMASK_MECHANIC, JMASK_MECHANIC_T, JMASK_MERCHANT, JMASK_MERCHANT_HIGH, JMASK_MINSTRELWANDERER, JMASK_MINSTRELWANDERER_T, JMASK_MONK, JMASK_NINJA, JMASK_NOVICE, JMASK_NOVICE_HIGH, JMASK_PALADIN, JMASK_PRIEST, JMASK_PROFESSOR, JMASK_RANGER, JMASK_RANGER_T, JMASK_REBELLION, JMASK_ROGUE, JMASK_ROYAL_GUARD, JMASK_ROYAL_GUARD_T, JMASK_RUNE_KNIGHT, JMASK_RUNE_KNIGHT_T, JMASK_SAGE, JMASK_SHADOW_CHASER, JMASK_SHADOW_CHASER_T, JMASK_SNIPER, JMASK_SORCERER, JMASK_SORCERER_T, JMASK_SOUL_LINKER, JMASK_STALKER, JMASK_STAR_GLADIATOR, JMASK_SUMMONER, JMASK_SUPER_BABY, JMASK_SUPER_BABY_E, JMASK_SUPER_NOVICE, JMASK_SUPER_NOVICE_E, JMASK_SURA, JMASK_SURA_T, JMASK_SWORDMAN, JMASK_SWORDMAN_HIGH, JMASK_TAEKWON, JMASK_THIEF, JMASK_THIEF_HIGH, JMASK_WARLOCK, JMASK_WARLOCK_T, JMASK_WEDDING, JMASK_WHITESMITH, JMASK_WIZARD, JOB_ACOLYTE, JOB_ACOLYTE_HIGH, JOB_ALCHEMIST, JOB_ARCH_BISHOP, JOB_ARCH_BISHOP_T, JOB_ARCHER, JOB_ARCHER_HIGH, JOB_ASSASSIN, JOB_ASSASSIN_CROSS, JOB_BABY_ACOLYTE, JOB_BABY_ALCHEMIST, JOB_BABY_ARCH_BISHOP, JOB_BABY_ARCHER, JOB_BABY_ASSASSIN, JOB_BABY_BARD, JOB_BABY_BLACKSMITH, JOB_BABY_CRUSADER, JOB_BABY_DANCER, JOB_BABY_GENETIC, JOB_BABY_GUILLOTINE_CROSS, JOB_BABY_HUNTER, JOB_BABY_KNIGHT, JOB_BABY_MAGE, JOB_BABY_MECHANIC, JOB_BABY_MERCHANT, JOB_BABY_MINSTREL, JOB_BABY_MONK, JOB_BABY_NOVICE, JOB_BABY_PRIEST, JOB_BABY_RANGER, JOB_BABY_ROGUE, JOB_BABY_ROYAL_GUARD, JOB_BABY_RUNE_KNIGHT, JOB_BABY_SAGE, JOB_BABY_SHADOW_CHASER, JOB_BABY_SORCERER, JOB_BABY_SURA, JOB_BABY_SWORDMAN, JOB_BABY_THIEF, JOB_BABY_WANDERER, JOB_BABY_WARLOCK, JOB_BABY_WIZARD, JOB_BARD, JOB_BLACKSMITH, JOB_CHAMPION, JOB_CLOWN, JOB_CREATOR, JOB_CRUSADER, JOB_DANCER, JOB_DARK_COLLECTOR, JOB_DEATH_KNIGHT, JOB_GANGSI, JOB_GENETIC, JOB_GENETIC_T, JOB_GUILLOTINE_CROSS, JOB_GUILLOTINE_CROSS_T, JOB_GUNSLINGER, JOB_GYPSY, JOB_HIGH_PRIEST, JOB_HIGH_WIZARD, JOB_HUNTER, JOB_KAGEROU, JOB_KNIGHT, JOB_LORD_KNIGHT, JOB_MAGE, JOB_MAGE_HIGH, JOB_MECHANIC, JOB_MECHANIC_T, JOB_MERCHANT, JOB_MERCHANT_HIGH, JOB_MINSTREL, JOB_MINSTREL_T, JOB_MONK, JOB_NINJA, JOB_NOVICE, JOB_NOVICE_HIGH, JOB_OBORO, JOB_PALADIN, JOB_PRIEST, JOB_PROFESSOR, JOB_RANGER, JOB_RANGER_T, JOB_REBELLION, JOB_ROGUE, JOB_ROYAL_GUARD, JOB_ROYAL_GUARD_T, JOB_RUNE_KNIGHT, JOB_RUNE_KNIGHT_T, JOB_SAGE, JOB_SHADOW_CHASER, JOB_SHADOW_CHASER_T, JOB_SNIPER, JOB_SORCERER, JOB_SORCERER_T, JOB_SOUL_LINKER, JOB_STALKER, JOB_STAR_GLADIATOR, JOB_SUMMONER, JOB_SUPER_BABY, JOB_SUPER_BABY_E, JOB_SUPER_NOVICE, JOB_SUPER_NOVICE_E, JOB_SURA, JOB_SURA_T, JOB_SWORDMAN, JOB_SWORDMAN_HIGH, JOB_TAEKWON, JOB_THIEF, JOB_THIEF_HIGH, JOB_WANDERER, JOB_WANDERER_T, JOB_WARLOCK, JOB_WARLOCK_T, JOB_WEDDING, JOB_WHITESMITH, and JOB_WIZARD.

◆ load()

bool JobDatabase::load ( )
165{
166 sol::state lua;
167
168 int total_entries = 0;
169 std::string tmp_string;
170 std::string file_path = sZone->config().get_static_db_path().string() + "job_db.lua";
171
172 // Read the file. If there is an error, report it and exit.
173 try {
174 lua.script_file(file_path);
175 sol::table job_tbl = lua.get<sol::table>("job_db");
176 total_entries = load_job(job_tbl);
177 HLog(info) << "Loaded " << total_entries << " entries from '" << file_path << "'";
178 } catch(const std::exception &e) {
179 HLog(error) << "JobDB::load: " << e.what();
180 return false;
181 }
182
183 return true;
184}
#define HLog(type)
Definition: Logger.hpp:122
#define sZone
Definition: Zone.hpp:247
int load_job(sol::table &job_tbl, std::string name="")
Definition: JobDB.cpp:186

References HLog, load_job(), and sZone.

+ Here is the call graph for this function:

◆ load_hp_sp_table()

bool JobDatabase::load_hp_sp_table ( sol::table &  job_tbl,
job_config_data data,
std::string &  job_name,
std::string  table_name 
)
334{
335 std::string t_str;
336
337 t_str = job_tbl.get_or("Inherit", t_str);
338 t_str = job_tbl.get_or("InheritHP", t_str);
339 t_str = job_tbl.get_or("InheritSP", t_str);
340
341 if (!t_str.empty()) {
343 if (jc == JOB_INVALID) {
344 HLog(warning) <<"JobDB::load_hp_sp_table:1: Unable to inherit from non-existent job '" << t_str << "' for '" << job_name << "', make sure the job is read before being inherited. Skipping...";
345 return false;
346 }
347 auto jobi = _job_db.at(jc);
348 if (!jobi) {
349 HLog(warning) <<"JobDB::load_hp_sp_table:2: Unable to inherit " << table_name << " from non-existent job '" << t_str << "' for '" << job_name << "', make sure the job is read before being inherited. Skipping...";
350 return false;
351 }
352 std::shared_ptr<const job_config_data> inherited_data = jobi;
353
354 data.hp_table = inherited_data->hp_table;
355 data.sp_table = inherited_data->sp_table;
356 return true;
357 }
358
359 sol::optional<sol::table> tbl = job_tbl.get<sol::optional<sol::table>>(table_name);
360
361 if (!tbl) {
362 HLog(warning) << "JobDB::load_hp_sp_table: Job '" << job_name << "' does not have a " << table_name << ", skipping...";
363 return false;
364 }
365
366 tbl.value().for_each([&data, &job_name, &table_name](sol::object const &key, sol::object const &val) {
367 if (key.get_type() != sol::type::number) {
368 HLog(warning) << "JobDB::load_hp_sp_table: Invalid index " << key.as<int>() << " for entry " << job_name << " in job '" << table_name << "', skipping...";
369 return;
370 }
371
372 if (!table_name.compare("HPTable"))
373 data.hp_table.push_back(val.as<int>());
374 else if (!table_name.compare("SPTable"))
375 data.sp_table.push_back(val.as<int>());
376 });
377
378 return true;
379}
job_class_type get_job_class_by_name(std::string name) const
Definition: JobDB.cpp:154
std::vector< int > sp_table
Definition: JobDB.hpp:51
std::vector< int > hp_table
Definition: JobDB.hpp:51

References _job_db, get_job_class_by_name(), HLog, Horizon::Zone::job_config_data::hp_table, JOB_INVALID, and Horizon::Zone::job_config_data::sp_table.

Referenced by load_job_internal().

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

◆ load_job()

int JobDatabase::load_job ( sol::table &  job_tbl,
std::string  name = "" 
)
187{
188 int count = 0;
189
190 if (name.empty()) {
191 job_tbls.for_each([this, &count](sol::object const &/*key*/, sol::object const &value) {
192 job_config_data data;
193 sol::table job_tbl = value.as<sol::table>();
194 std::string name = job_tbl.get_or("Name", std::string(""));
196 data.id = (int) jc;
197 data.name = name;
198 if (load_job_internal(job_tbl, data, name) == true) {
199 _job_db.insert(jc, std::make_shared<job_config_data>(data));
200 count++;
201 }
202 });
203 } else {
204 sol::optional<sol::table> maybe_job = job_tbls.get<sol::optional<sol::table>>(name);
205 if (maybe_job) {
206 job_config_data data;
208 data.id = (int) jc;
209 data.name = name;
210 if (load_job_internal(maybe_job.value(), data, name) == true)
211 _job_db.insert(jc, std::make_shared<job_config_data>(data));
212 } else {
213 HLog(warning) << "JobDB::load_job: Job named '" << name << "' was not found.";
214 }
215 }
216
217 return count;
218}
bool load_job_internal(sol::table &job_tbl, job_config_data &data, std::string job_name="")
Definition: JobDB.cpp:220
size_t count(GridTypeListContainer< SPECIFIC_TYPE > const &elements, SPECIFIC_TYPE *)
Definition: GridReferenceContainer.hpp:100
Definition: JobDB.hpp:45
std::string name
Definition: JobDB.hpp:47
int id
Definition: JobDB.hpp:46

References _job_db, GridTypeListIterator::count(), get_job_class_by_name(), HLog, Horizon::Zone::job_config_data::id, load_job_internal(), and Horizon::Zone::job_config_data::name.

Referenced by load().

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

◆ load_job_internal()

bool JobDatabase::load_job_internal ( sol::table &  job_tbl,
job_config_data data,
std::string  job_name = "" 
)
221{
222 std::string t_str;
223
224 t_str = job_tbl.get_or("BaseExpGroup", std::string(""));
225 if (t_str.empty()) {
226 HLog(warning) << "JobDB::load_job_internal: Invalid or non-existant BaseExpGroup for job '" << job_name << "', skipping...";
227 return false;
228 }
229 data.base_exp_group = t_str;
230
231 t_str = job_tbl.get_or("JobExpGroup", std::string(""));
232 if (t_str.empty()) {
233 HLog(warning) << "JobDB::load_job_internal: Invalid or non-existant JobExpGroup for job '" << job_name << "', skipping...";
234 return false;
235 }
236 data.job_exp_group = t_str;
237
238 t_str = job_tbl.get_or("Inherit", std::string(""));
239 if (t_str.empty()) {
240 // Max Weight
241 data.max_weight = job_tbl.get_or("Weight", 20000);
242
243 sol::optional<sol::table> aspd_tbl = job_tbl.get<sol::optional<sol::table>>("BaseASPD");
244 if (aspd_tbl) {
245 aspd_tbl.value().for_each([&data, &job_name] (sol::object const &key, sol::object const &value) {
246 std::string w_name = key.as<std::string>();
247
248 if (value.get_type() != sol::type::number) {
249 HLog(warning) << "JobDB::load_job_internal: Invalid entry in BaseASPD setting weapon " << w_name << " for job '" << job_name << "'.";
250 return;
251 }
252
253 int val = value.as<int>();
254 if (!w_name.compare("Fist")) {
255 data.weapon_base_aspd[IT_WT_FIST] = val;
256 } else if (!w_name.compare("Dagger")) {
257 data.weapon_base_aspd[IT_WT_DAGGER] = val;
258 } else if (!w_name.compare("Sword")) {
260 } else if (!w_name.compare("TwoHandSword")) {
262 } else if (!w_name.compare("Spear")) {
264 } else if (!w_name.compare("TwoHandSpear")) {
266 } else if (!w_name.compare("Axe")) {
267 data.weapon_base_aspd[IT_WT_1HAXE] = val;
268 } else if (!w_name.compare("TwoHandAxe")) {
269 data.weapon_base_aspd[IT_WT_2HAXE] = val;
270 } else if (!w_name.compare("Mace")) {
271 data.weapon_base_aspd[IT_WT_1HMACE] = val;
272 } else if (!w_name.compare("TwoHandMace")) {
273 data.weapon_base_aspd[IT_WT_2HMACE] = val;
274 } else if (!w_name.compare("Rod")) {
275 data.weapon_base_aspd[IT_WT_STAFF] = val;
276 } else if (!w_name.compare("Bow")) {
277 data.weapon_base_aspd[IT_WT_BOW] = val;
278 } else if (!w_name.compare("Knuckle")) {
280 } else if (!w_name.compare("Instrument")) {
282 } else if (!w_name.compare("Whip")) {
283 data.weapon_base_aspd[IT_WT_WHIP] = val;
284 } else if (!w_name.compare("Book")) {
285 data.weapon_base_aspd[IT_WT_BOOK] = val;
286 } else if (!w_name.compare("Katar")) {
287 data.weapon_base_aspd[IT_WT_KATAR] = val;
288 } else if (!w_name.compare("Revolver")) {
290 } else if (!w_name.compare("Rifle")) {
291 data.weapon_base_aspd[IT_WT_RIFLE] = val;
292 } else if (!w_name.compare("GatlingGun")) {
294 } else if (!w_name.compare("Shotgun")) {
296 } else if (!w_name.compare("GrenadeLauncher")) {
298 } else if (!w_name.compare("FuumaShuriken")) {
299 data.weapon_base_aspd[IT_WT_HUUMA] = val;
300 } else if (!w_name.compare("TwoHandRod")) {
302 }
303 });
304
305 }
306 } else {
308
309 if (jc == JOB_INVALID) {
310 HLog(warning) << "JobDB::load_job_internal:1: Unable to inherit from non-existent job '" << t_str << "' for '" << job_name << "', make sure the job is read before being inherited. Skipping...";
311 return false;
312 }
313
314 auto jobi = _job_db.at(jc);
315 if (!jobi) {
316 HLog(warning) << "JobDB::load_job_internal:2: Unable to inherit from non-existent job '" << t_str << "' for '" << job_name << "', make sure the job is read before being inherited. Skipping...";
317 return false;
318 }
319
320 data.weapon_base_aspd = jobi->weapon_base_aspd;
321 data.max_weight = jobi->max_weight;
322 }
323
324 if (load_hp_sp_table(job_tbl, data, job_name, "HPTable") == false)
325 return false;
326
327 if (load_hp_sp_table(job_tbl, data, job_name, "SPTable") == false)
328 return false;
329
330 return true;
331}
@ IT_WT_FIST
Bare hands.
Definition: ItemDefinitions.hpp:100
@ IT_WT_1HSWORD
Definition: ItemDefinitions.hpp:102
@ IT_WT_KATAR
Definition: ItemDefinitions.hpp:116
@ IT_WT_2HSPEAR
Definition: ItemDefinitions.hpp:105
@ IT_WT_2HMACE
Definition: ItemDefinitions.hpp:109
@ IT_WT_GATLING
Definition: ItemDefinitions.hpp:119
@ IT_WT_GRENADE
Definition: ItemDefinitions.hpp:121
@ IT_WT_RIFLE
Definition: ItemDefinitions.hpp:118
@ IT_WT_2HAXE
Definition: ItemDefinitions.hpp:107
@ IT_WT_BOW
Definition: ItemDefinitions.hpp:111
@ IT_WT_2HSTAFF
Definition: ItemDefinitions.hpp:123
@ IT_WT_SHOTGUN
Definition: ItemDefinitions.hpp:120
@ IT_WT_HUUMA
Definition: ItemDefinitions.hpp:122
@ IT_WT_1HSPEAR
Definition: ItemDefinitions.hpp:104
@ IT_WT_BOOK
Definition: ItemDefinitions.hpp:115
@ IT_WT_WHIP
Definition: ItemDefinitions.hpp:114
@ IT_WT_MUSICAL
Definition: ItemDefinitions.hpp:113
@ IT_WT_STAFF
Definition: ItemDefinitions.hpp:110
@ IT_WT_KNUCKLE
Definition: ItemDefinitions.hpp:112
@ IT_WT_2HSWORD
Definition: ItemDefinitions.hpp:103
@ IT_WT_1HAXE
Definition: ItemDefinitions.hpp:106
@ IT_WT_1HMACE
Definition: ItemDefinitions.hpp:108
@ IT_WT_DAGGER
Definition: ItemDefinitions.hpp:101
@ IT_WT_REVOLVER
Definition: ItemDefinitions.hpp:117
bool load_hp_sp_table(sol::table &job_tbl, job_config_data &data, std::string &job_name, std::string table_name)
Definition: JobDB.cpp:333
std::string base_exp_group
Definition: JobDB.hpp:49
int max_weight
Definition: JobDB.hpp:48
std::array< int, IT_WT_SINGLE_MAX > weapon_base_aspd
Definition: JobDB.hpp:50
std::string job_exp_group
Definition: JobDB.hpp:49

References _job_db, Horizon::Zone::job_config_data::base_exp_group, get_job_class_by_name(), HLog, IT_WT_1HAXE, IT_WT_1HMACE, IT_WT_1HSPEAR, IT_WT_1HSWORD, IT_WT_2HAXE, IT_WT_2HMACE, IT_WT_2HSPEAR, IT_WT_2HSTAFF, IT_WT_2HSWORD, IT_WT_BOOK, IT_WT_BOW, IT_WT_DAGGER, IT_WT_FIST, IT_WT_GATLING, IT_WT_GRENADE, IT_WT_HUUMA, IT_WT_KATAR, IT_WT_KNUCKLE, IT_WT_MUSICAL, IT_WT_REVOLVER, IT_WT_RIFLE, IT_WT_SHOTGUN, IT_WT_STAFF, IT_WT_WHIP, Horizon::Zone::job_config_data::job_exp_group, JOB_INVALID, load_hp_sp_table(), Horizon::Zone::job_config_data::max_weight, and Horizon::Zone::job_config_data::weapon_base_aspd.

Referenced by load_job().

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

Member Data Documentation

◆ _job_db

LockedLookupTable<uint32_t, std::shared_ptr<const job_config_data> > Horizon::Zone::JobDatabase::_job_db
private

◆ _name2id_list

std::map<std::string, int> Horizon::Zone::JobDatabase::_name2id_list
private

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