Batch #929 by ragnarok-clanker: 0 byte-identical, 2 confirmed by peer review. - fn_24165 JobNames::BaseJob: logic confirmed by peer review - fn_23396 JobNames::Lookup: logic confirmed by peer review Reviewed-by: ragnarok-clanker
353 lines
8.5 KiB
C++
353 lines
8.5 KiB
C++
#include "Contents/Jobs/JobNames.h"
|
|
#include "Contents/Jobs/JobId.h"
|
|
|
|
// OFFSET: 0x00E2FE80
|
|
// FUNCTION: fn_24165
|
|
unsigned JobNames::BaseJob(unsigned job) {
|
|
switch (job) {
|
|
case JT_CHICKEN:
|
|
case JT_LION_KNIGHT:
|
|
return JT_KNIGHT;
|
|
case JT_CHICKEN2:
|
|
case JT_LION_CRUSADER:
|
|
return JT_CRUSADER;
|
|
case JT_CHICKEN_H:
|
|
case JT_LION_KNIGHT_H:
|
|
return JT_KNIGHT_H;
|
|
case JT_CHICKEN2_H:
|
|
case JT_LION_CRUSADER_H:
|
|
return JT_CRUSADER_H;
|
|
case JT_CHICKEN_B:
|
|
case JT_LION_KNIGHT_B:
|
|
return JT_KNIGHT_B;
|
|
case JT_CHICKEN2_B:
|
|
case JT_LION_CRUSADER_B:
|
|
return JT_CRUSADER_B;
|
|
case JT_RUNE_CHICKEN:
|
|
case JT_RUNE_CHICKEN2:
|
|
case JT_RUNE_CHICKEN3:
|
|
case JT_RUNE_CHICKEN4:
|
|
case JT_RUNE_CHICKEN5:
|
|
case JT_LION_RUNE_KNIGHT:
|
|
return JT_RUNE_KNIGHT;
|
|
case JT_RUNE_CHICKEN_H:
|
|
case JT_RUNE_CHICKEN2_H:
|
|
case JT_RUNE_CHICKEN3_H:
|
|
case JT_RUNE_CHICKEN4_H:
|
|
case JT_RUNE_CHICKEN5_H:
|
|
return JT_RUNE_KNIGHT_H;
|
|
case JT_ROYAL_CHICKEN:
|
|
case JT_LION_ROYAL_GUARD:
|
|
return JT_ROYAL_GUARD;
|
|
case JT_ROYAL_CHICKEN_H:
|
|
return JT_ROYAL_GUARD_H;
|
|
case JT_WOLF_RANGER:
|
|
case JT_OSTRICH_RANGER:
|
|
return JT_RANGER;
|
|
case JT_WOLF_RANGER_H:
|
|
return JT_RANGER_H;
|
|
case JT_MADOGEAR:
|
|
case JT_PIG_MECHANIC:
|
|
return JT_MECHANIC;
|
|
case JT_MADOGEAR_H:
|
|
return JT_MECHANIC_H;
|
|
case JT_RUNE_CHICKEN_B:
|
|
case JT_LION_RUNE_KNIGHT_B:
|
|
return JT_RUNE_KNIGHT_B;
|
|
case JT_ROYAL_CHICKEN_B:
|
|
case JT_LION_ROYAL_GUARD_B:
|
|
return JT_ROYAL_GUARD_B;
|
|
case JT_WOLF_RANGER_B:
|
|
case JT_OSTRICH_RANGER_B:
|
|
return JT_RANGER_B;
|
|
case JT_MADOGEAR_B:
|
|
case JT_PIG_MECHANIC_B:
|
|
return JT_MECHANIC_B;
|
|
case JT_FROG_NINJA:
|
|
return JT_NINJA;
|
|
case JT_PECO_GUNNER:
|
|
return JT_GUNSLINGER;
|
|
case JT_PECO_SWORD:
|
|
return JT_SWORDMAN;
|
|
case JT_FROG_LINKER:
|
|
return JT_LINKER;
|
|
case JT_PIG_WHITESMITH:
|
|
return JT_BLACKSMITH_H;
|
|
case JT_PIG_MERCHANT:
|
|
return JT_MERCHANT;
|
|
case JT_PIG_GENETIC:
|
|
return JT_GENETIC;
|
|
case JT_PIG_CREATOR:
|
|
return JT_ALCHEMIST_H;
|
|
case JT_OSTRICH_ARCHER:
|
|
return JT_ARCHER;
|
|
case JT_PORING_STAR:
|
|
return JT_STAR;
|
|
case JT_PORING_NOVICE:
|
|
return JT_NOVICE;
|
|
case JT_SHEEP_MONK:
|
|
return JT_MONK;
|
|
case JT_SHEEP_ACO:
|
|
return JT_ACOLYTE;
|
|
case JT_SHEEP_SURA:
|
|
return JT_SURA;
|
|
case JT_PORING_SNOVICE:
|
|
return JT_SUPERNOVICE;
|
|
case JT_SHEEP_ARCB:
|
|
return JT_ARCHBISHOP;
|
|
case JT_FOX_MAGICIAN:
|
|
return JT_MAGICIAN;
|
|
case JT_FOX_SAGE:
|
|
return JT_SAGE;
|
|
case JT_FOX_SORCERER:
|
|
return JT_SORCERER;
|
|
case JT_FOX_WARLOCK:
|
|
return JT_WARLOCK;
|
|
case JT_FOX_WIZ:
|
|
return JT_WIZARD;
|
|
case JT_FOX_PROF:
|
|
return JT_SAGE_H;
|
|
case JT_FOX_HWIZ:
|
|
return JT_WIZARD_H;
|
|
case JT_PIG_ALCHE:
|
|
return JT_ALCHEMIST;
|
|
case JT_PIG_BLACKSMITH:
|
|
return JT_BLACKSMITH;
|
|
case JT_SHEEP_CHAMP:
|
|
return JT_MONK_H;
|
|
case JT_DOG_G_CROSS:
|
|
return JT_GUILLOTINE_CROSS;
|
|
case JT_DOG_THIEF:
|
|
return JT_THIEF;
|
|
case JT_DOG_ROGUE:
|
|
return JT_ROGUE;
|
|
case JT_DOG_CHASER:
|
|
return JT_SHADOW_CHASER;
|
|
case JT_DOG_STALKER:
|
|
return JT_ROGUE_H;
|
|
case JT_DOG_ASSASSIN:
|
|
return JT_ASSASSIN;
|
|
case JT_DOG_ASSA_X:
|
|
return JT_ASSASSIN_H;
|
|
case JT_OSTRICH_DANCER:
|
|
return JT_DANCER;
|
|
case JT_OSTRICH_MINSTREL:
|
|
return JT_MINSTREL;
|
|
case JT_OSTRICH_BARD:
|
|
return JT_BARD;
|
|
case JT_OSTRICH_SNIPER:
|
|
return JT_HUNTER_H;
|
|
case JT_OSTRICH_WANDER:
|
|
return JT_WANDERER;
|
|
case JT_OSTRICH_ZIPSI:
|
|
return JT_DANCER_H;
|
|
case JT_OSTRICH_CROWN:
|
|
return JT_BARD_H;
|
|
case JT_OSTRICH_HUNTER:
|
|
return JT_HUNTER;
|
|
case JT_PORING_TAEKWON:
|
|
return JT_TAEKWON;
|
|
case JT_SHEEP_PRIEST:
|
|
return JT_PRIEST;
|
|
case JT_SHEEP_HPRIEST:
|
|
return JT_PRIEST_H;
|
|
case JT_PORING_NOVICE_B:
|
|
return JT_NOVICE_B;
|
|
case JT_PECO_SWORD_B:
|
|
return JT_SWORDMAN_B;
|
|
case JT_FOX_MAGICIAN_B:
|
|
return JT_MAGICIAN_B;
|
|
case JT_OSTRICH_ARCHER_B:
|
|
return JT_ARCHER_B;
|
|
case JT_SHEEP_ACO_B:
|
|
return JT_ACOLYTE_B;
|
|
case JT_PIG_MERCHANT_B:
|
|
return JT_MERCHANT_B;
|
|
case JT_OSTRICH_HUNTER_B:
|
|
return JT_HUNTER_B;
|
|
case JT_DOG_ASSASSIN_B:
|
|
return JT_ASSASSIN_B;
|
|
case JT_SHEEP_MONK_B:
|
|
return JT_MONK_B;
|
|
case JT_FOX_SAGE_B:
|
|
return JT_SAGE_B;
|
|
case JT_DOG_ROGUE_B:
|
|
return JT_ROGUE_B;
|
|
case JT_PIG_ALCHE_B:
|
|
return JT_ALCHEMIST_B;
|
|
case JT_OSTRICH_BARD_B:
|
|
return JT_BARD_B;
|
|
case JT_OSTRICH_DANCER_B:
|
|
return JT_DANCER_B;
|
|
case JT_PORING_SNOVICE_B:
|
|
return JT_SUPERNOVICE_B;
|
|
case JT_FOX_WARLOCK_B:
|
|
return JT_WARLOCK_B;
|
|
case JT_SHEEP_ARCB_B:
|
|
return JT_ARCHBISHOP_B;
|
|
case JT_DOG_G_CROSS_B:
|
|
return JT_GUILLOTINE_CROSS_B;
|
|
case JT_FOX_SORCERER_B:
|
|
return JT_SORCERER_B;
|
|
case JT_OSTRICH_MINSTREL_B:
|
|
return JT_MINSTREL_B;
|
|
case JT_OSTRICH_WANDER_B:
|
|
return JT_WANDERER_B;
|
|
case JT_SHEEP_SURA_B:
|
|
return JT_SURA_B;
|
|
case JT_PIG_GENETIC_B:
|
|
return JT_GENETIC_B;
|
|
case JT_DOG_THIEF_B:
|
|
return JT_THIEF_B;
|
|
case JT_DOG_CHASER_B:
|
|
return JT_SHADOW_CHASER_B;
|
|
case JT_PORING_NOVICE_H:
|
|
return JT_NOVICE_H;
|
|
case JT_PECO_SWORD_H:
|
|
return JT_SWORDMAN_H;
|
|
case JT_FOX_MAGICIAN_H:
|
|
return JT_MAGICIAN_H;
|
|
case JT_OSTRICH_ARCHER_H:
|
|
return JT_ARCHER_H;
|
|
case JT_SHEEP_ACO_H:
|
|
return JT_ACOLYTE_H;
|
|
case JT_PIG_MERCHANT_H:
|
|
return JT_MERCHANT_H;
|
|
case JT_DOG_THIEF_H:
|
|
return JT_THIEF_H;
|
|
case JT_PORING_SNOVICE2:
|
|
return JT_SUPERNOVICE2;
|
|
case JT_PORING_SNOVICE2_B:
|
|
return JT_SUPERNOVICE2_B;
|
|
case JT_SHEEP_PRIEST_B:
|
|
return JT_PRIEST_B;
|
|
case JT_FOX_WIZ_B:
|
|
return JT_WIZARD_B;
|
|
case JT_PIG_BLACKSMITH_B:
|
|
return JT_BLACKSMITH_B;
|
|
case JT_FROG_KAGEROU:
|
|
return JT_KAGEROU;
|
|
case JT_FROG_OBORO:
|
|
return JT_OBORO;
|
|
case JT_PECO_REBELLION:
|
|
return JT_REBELLION;
|
|
case JT_DO_CART_SUMMONER:
|
|
return JT_DO_SUMMONER;
|
|
case JT_DO_CART_SUMMONER_B:
|
|
return JT_DO_SUMMONER_B;
|
|
case JT_FROG_NINJA_B:
|
|
return JT_NINJA_B;
|
|
case JT_FROG_KAGEROU_B:
|
|
return JT_KAGEROU_B;
|
|
case JT_FROG_OBORO_B:
|
|
return JT_OBORO_B;
|
|
case JT_PORING_TAEKWON_B:
|
|
return JT_TAEKWON_B;
|
|
case JT_PORING_STAR_B:
|
|
return JT_STAR_B;
|
|
case JT_FROG_LINKER_B:
|
|
return JT_LINKER_B;
|
|
case JT_PECO_GUNNER_B:
|
|
return JT_GUNSLINGER_B;
|
|
case JT_PECO_REBELLION_B:
|
|
return JT_REBELLION_B;
|
|
case JT_HAETAE_STAR_EMPEROR:
|
|
return JT_STAR_EMPEROR;
|
|
case JT_HAETAE_SOUL_REAPER:
|
|
return JT_SOUL_REAPER;
|
|
case JT_HAETAE_STAR_EMPEROR_B:
|
|
return JT_STAR_EMPEROR_B;
|
|
case JT_HAETAE_SOUL_REAPER_B:
|
|
return JT_SOUL_REAPER_B;
|
|
case JT_DRAGON_KNIGHT_RIDING:
|
|
case JT_DRAGON_KNIGHT_CHICKEN:
|
|
return JT_DRAGON_KNIGHT;
|
|
case JT_MEISTER_RIDING:
|
|
case JT_MEISTER_MADOGEAR:
|
|
return JT_MEISTER;
|
|
case JT_SHADOW_CROSS_RIDING:
|
|
return JT_SHADOW_CROSS;
|
|
case JT_ARCH_MAGE_RIDING:
|
|
return JT_ARCH_MAGE;
|
|
case JT_CARDINAL_RIDING:
|
|
return JT_CARDINAL;
|
|
case JT_WINDHAWK_RIDING:
|
|
case JT_WOLF_WINDHAWK:
|
|
return JT_WINDHAWK;
|
|
case JT_IMPERIAL_GUARD_RIDING:
|
|
case JT_IMPERIAL_GUARD_CHICKEN:
|
|
return JT_IMPERIAL_GUARD;
|
|
case JT_BIOLO_RIDING:
|
|
return JT_BIOLO;
|
|
case JT_ABYSS_CHASER_RIDING:
|
|
return JT_ABYSS_CHASER;
|
|
case JT_ELEMENTAL_MASTER_RIDING:
|
|
return JT_ELEMENTAL_MASTER;
|
|
case JT_INQUISITOR_RIDING:
|
|
return JT_INQUISITOR;
|
|
case JT_TROUBADOUR_RIDING:
|
|
return JT_TROUBADOUR;
|
|
case JT_TROUVERE_RIDING:
|
|
return JT_TROUVERE;
|
|
case JT_SKY_EMPEROR_RIDING:
|
|
return JT_SKY_EMPEROR;
|
|
case JT_SOUL_ASCETIC_RIDING:
|
|
return JT_SOUL_ASCETIC;
|
|
case JT_SHINKIRO_RIDING:
|
|
return JT_SHINKIRO;
|
|
case JT_SHIRANUI_RIDING:
|
|
return JT_SHIRANUI;
|
|
case JT_NIGHT_WATCH_RIDING:
|
|
return JT_NIGHT_WATCH;
|
|
case JT_HYPER_NOVICE_RIDING:
|
|
return JT_HYPER_NOVICE;
|
|
case JT_SPIRIT_HANDLER_RIDING:
|
|
return JT_SPIRIT_HANDLER;
|
|
case JT_DRUID_RIDING:
|
|
return JT_DRUID;
|
|
case JT_KARNOS_RIDING:
|
|
return JT_KARNOS;
|
|
case JT_ALITEA_RIDING:
|
|
return JT_ALITEA;
|
|
default:
|
|
return job;
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00DDE5C0
|
|
// FUNCTION: fn_23396
|
|
const char* JobNames::Lookup(unsigned job, int sex) {
|
|
if (this->names.size() <= job) {
|
|
return "";
|
|
}
|
|
|
|
if (job - JT_NOVICE_H > unsigned(JT_MER_BEGIN - 1 - JT_NOVICE_H) && job > unsigned(JT_SUMMER2)) {
|
|
return this->names[job];
|
|
}
|
|
|
|
const unsigned base = BaseJob(job);
|
|
|
|
if (sex == -1) {
|
|
if (this->cachedSex != this->currentSex) {
|
|
this->cachedSex = this->currentSex;
|
|
}
|
|
|
|
sex = this->currentSex;
|
|
}
|
|
|
|
if (sex == 0) {
|
|
const auto found = this->female.find(base);
|
|
|
|
if (found != this->female.end()) {
|
|
return found->second;
|
|
}
|
|
} else if (sex == 1) {
|
|
const auto found = this->male.find(base);
|
|
|
|
if (found != this->male.end()) {
|
|
return found->second;
|
|
}
|
|
}
|
|
|
|
return this->names[base];
|
|
}
|