Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Centralize Job ID/Name/Data #165

Open
shennetsind opened this issue Sep 28, 2013 · 2 comments
Open

Centralize Job ID/Name/Data #165

shennetsind opened this issue Sep 28, 2013 · 2 comments
Labels
component:core Affecting the Hercules core (i.e. not the game mechanics directly) status:confirmed Issue is valid and can be reproduced type:enhancement Issue describes an enhancement or feature that should be implemented
Milestone

Comments

@shennetsind
Copy link
Member

Doesn't really belong to performance but I didn't feel well on another milestone, anyway:
Its all over the place, really. By aggregating it smartly we could duck hundreds of lines of code and make the whole process of adding or modifying job data waaaay more flexible (and thus faster).
Glance job names:

const char* job_name(int class_)
{
    switch (class_) {
    case JOB_NOVICE:
    case JOB_SWORDMAN:
    case JOB_MAGE:
    case JOB_ARCHER:
    case JOB_ACOLYTE:
    case JOB_MERCHANT:
    case JOB_THIEF:
        return msg_txt(550 - JOB_NOVICE+class_);

    case JOB_KNIGHT:
    case JOB_PRIEST:
    case JOB_WIZARD:
    case JOB_BLACKSMITH:
    case JOB_HUNTER:
    case JOB_ASSASSIN:
        return msg_txt(557 - JOB_KNIGHT+class_);

    case JOB_KNIGHT2:
        return msg_txt(557);

    case JOB_CRUSADER:
    case JOB_MONK:
    case JOB_SAGE:
    case JOB_ROGUE:
    case JOB_ALCHEMIST:
    case JOB_BARD:
    case JOB_DANCER:
        return msg_txt(563 - JOB_CRUSADER+class_);

    case JOB_CRUSADER2:
        return msg_txt(563);

    case JOB_WEDDING:
    case JOB_SUPER_NOVICE:
    case JOB_GUNSLINGER:
    case JOB_NINJA:
    case JOB_XMAS:
        return msg_txt(570 - JOB_WEDDING+class_);

    case JOB_SUMMER:
        return msg_txt(621);

    case JOB_NOVICE_HIGH:
    case JOB_SWORDMAN_HIGH:
    case JOB_MAGE_HIGH:
    case JOB_ARCHER_HIGH:
    case JOB_ACOLYTE_HIGH:
    case JOB_MERCHANT_HIGH:
    case JOB_THIEF_HIGH:
        return msg_txt(575 - JOB_NOVICE_HIGH+class_);

    case JOB_LORD_KNIGHT:
    case JOB_HIGH_PRIEST:
    case JOB_HIGH_WIZARD:
    case JOB_WHITESMITH:
    case JOB_SNIPER:
    case JOB_ASSASSIN_CROSS:
        return msg_txt(582 - JOB_LORD_KNIGHT+class_);

    case JOB_LORD_KNIGHT2:
        return msg_txt(582);

    case JOB_PALADIN:
    case JOB_CHAMPION:
    case JOB_PROFESSOR:
    case JOB_STALKER:
    case JOB_CREATOR:
    case JOB_CLOWN:
    case JOB_GYPSY:
        return msg_txt(588 - JOB_PALADIN + class_);

    case JOB_PALADIN2:
        return msg_txt(588);

    case JOB_BABY:
    case JOB_BABY_SWORDMAN:
    case JOB_BABY_MAGE:
    case JOB_BABY_ARCHER:
    case JOB_BABY_ACOLYTE:
    case JOB_BABY_MERCHANT:
    case JOB_BABY_THIEF:
        return msg_txt(595 - JOB_BABY + class_);

    case JOB_BABY_KNIGHT:
    case JOB_BABY_PRIEST:
    case JOB_BABY_WIZARD:
    case JOB_BABY_BLACKSMITH:
    case JOB_BABY_HUNTER:
    case JOB_BABY_ASSASSIN:
        return msg_txt(602 - JOB_BABY_KNIGHT + class_);

    case JOB_BABY_KNIGHT2:
        return msg_txt(602);

    case JOB_BABY_CRUSADER:
    case JOB_BABY_MONK:
    case JOB_BABY_SAGE:
    case JOB_BABY_ROGUE:
    case JOB_BABY_ALCHEMIST:
    case JOB_BABY_BARD:
    case JOB_BABY_DANCER:
        return msg_txt(608 - JOB_BABY_CRUSADER + class_);

    case JOB_BABY_CRUSADER2:
        return msg_txt(608);

    case JOB_SUPER_BABY:
        return msg_txt(615);

    case JOB_TAEKWON:
        return msg_txt(616);
    case JOB_STAR_GLADIATOR:
    case JOB_STAR_GLADIATOR2:
        return msg_txt(617);
    case JOB_SOUL_LINKER:
        return msg_txt(618);

    case JOB_GANGSI:
    case JOB_DEATH_KNIGHT:
    case JOB_DARK_COLLECTOR:
        return msg_txt(622 - JOB_GANGSI+class_);

    case JOB_RUNE_KNIGHT:
    case JOB_WARLOCK:
    case JOB_RANGER:
    case JOB_ARCH_BISHOP:
    case JOB_MECHANIC:
    case JOB_GUILLOTINE_CROSS:
        return msg_txt(625 - JOB_RUNE_KNIGHT+class_);

    case JOB_RUNE_KNIGHT_T:
    case JOB_WARLOCK_T:
    case JOB_RANGER_T:
    case JOB_ARCH_BISHOP_T:
    case JOB_MECHANIC_T:
    case JOB_GUILLOTINE_CROSS_T:
            return msg_txt(681 - JOB_RUNE_KNIGHT_T+class_);

    case JOB_ROYAL_GUARD:
    case JOB_SORCERER:
    case JOB_MINSTREL:
    case JOB_WANDERER:
    case JOB_SURA:
    case JOB_GENETIC:
    case JOB_SHADOW_CHASER:
        return msg_txt(631 - JOB_ROYAL_GUARD+class_);

    case JOB_ROYAL_GUARD_T:
    case JOB_SORCERER_T:
    case JOB_MINSTREL_T:
    case JOB_WANDERER_T:
    case JOB_SURA_T:
    case JOB_GENETIC_T:
    case JOB_SHADOW_CHASER_T:
            return msg_txt(687 - JOB_ROYAL_GUARD_T+class_);

    case JOB_RUNE_KNIGHT2:
    case JOB_RUNE_KNIGHT_T2:
        return msg_txt(625);

    case JOB_ROYAL_GUARD2:
    case JOB_ROYAL_GUARD_T2:
        return msg_txt(631);

    case JOB_RANGER2:
    case JOB_RANGER_T2:
        return msg_txt(627);

    case JOB_MECHANIC2:
    case JOB_MECHANIC_T2:
        return msg_txt(629);

    case JOB_BABY_RUNE:
    case JOB_BABY_WARLOCK:
    case JOB_BABY_RANGER:
    case JOB_BABY_BISHOP:
    case JOB_BABY_MECHANIC:
    case JOB_BABY_CROSS:
    case JOB_BABY_GUARD:
    case JOB_BABY_SORCERER:
    case JOB_BABY_MINSTREL:
    case JOB_BABY_WANDERER:
    case JOB_BABY_SURA:
    case JOB_BABY_GENETIC:
    case JOB_BABY_CHASER:
        return msg_txt(638 - JOB_BABY_RUNE+class_);

    case JOB_BABY_RUNE2:
        return msg_txt(638);

    case JOB_BABY_GUARD2:
        return msg_txt(644);

    case JOB_BABY_RANGER2:
        return msg_txt(640);

    case JOB_BABY_MECHANIC2:
        return msg_txt(642);

    case JOB_SUPER_NOVICE_E:
    case JOB_SUPER_BABY_E:
        return msg_txt(651 - JOB_SUPER_NOVICE_E+class_);

    case JOB_KAGEROU:
    case JOB_OBORO:
        return msg_txt(653 - JOB_KAGEROU+class_);
    case JOB_REBELLION:
        return msg_txt(694);

    default:
        return msg_txt(655);
    }
}

...

    struct {
        const char *name;
        int id;
    } jnames[] = {
        { "Novice", JOB_NOVICE },
        { "Swordsman", JOB_SWORDMAN },
        { "Magician", JOB_MAGE },
        { "Archer", JOB_ARCHER },
        { "Acolyte", JOB_ACOLYTE },
        { "Merchant", JOB_MERCHANT },
        { "Thief", JOB_THIEF },
        { "Knight", JOB_KNIGHT },
        { "Priest", JOB_PRIEST },
        { "Wizard", JOB_WIZARD },
        { "Blacksmith", JOB_BLACKSMITH },
        { "Hunter", JOB_HUNTER },
        { "Assassin", JOB_ASSASSIN },
        { "Crusader", JOB_CRUSADER },
        { "Monk", JOB_MONK },
        { "Sage", JOB_SAGE },
        { "Rogue", JOB_ROGUE },
        { "Alchemist", JOB_ALCHEMIST },
        { "Bard", JOB_BARD },
        { "Dancer", JOB_DANCER },
        { "Super_Novice", JOB_SUPER_NOVICE },
        { "Gunslinger", JOB_GUNSLINGER },
        { "Ninja", JOB_NINJA },
        { "Novice_High", JOB_NOVICE_HIGH },
        { "Swordsman_High", JOB_SWORDMAN_HIGH },
        { "Magician_High", JOB_MAGE_HIGH },
        { "Archer_High", JOB_ARCHER_HIGH },
        { "Acolyte_High", JOB_ACOLYTE_HIGH },
        { "Merchant_High", JOB_MERCHANT_HIGH },
        { "Thief_High", JOB_THIEF_HIGH },
        { "Lord_Knight", JOB_LORD_KNIGHT },
        { "High_Priest", JOB_HIGH_PRIEST },
        { "High_Wizard", JOB_HIGH_WIZARD },
        { "Whitesmith", JOB_WHITESMITH },
        { "Sniper", JOB_SNIPER },
        { "Assassin_Cross", JOB_ASSASSIN_CROSS },
        { "Paladin", JOB_PALADIN },
        { "Champion", JOB_CHAMPION },
        { "Professor", JOB_PROFESSOR },
        { "Stalker", JOB_STALKER },
        { "Creator", JOB_CREATOR },
        { "Clown", JOB_CLOWN },
        { "Gypsy", JOB_GYPSY },
        { "Baby_Novice", JOB_BABY },
        { "Baby_Swordsman", JOB_BABY_SWORDMAN },
        { "Baby_Magician", JOB_BABY_MAGE },
        { "Baby_Archer", JOB_BABY_ARCHER },
        { "Baby_Acolyte", JOB_BABY_ACOLYTE },
        { "Baby_Merchant", JOB_BABY_MERCHANT },
        { "Baby_Thief", JOB_BABY_THIEF },
        { "Baby_Knight", JOB_BABY_KNIGHT },
        { "Baby_Priest", JOB_BABY_PRIEST },
        { "Baby_Wizard", JOB_BABY_WIZARD },
        { "Baby_Blacksmith", JOB_BABY_BLACKSMITH },
        { "Baby_Hunter", JOB_BABY_HUNTER },
        { "Baby_Assassin", JOB_BABY_ASSASSIN },
        { "Baby_Crusader", JOB_BABY_CRUSADER },
        { "Baby_Monk", JOB_BABY_MONK },
        { "Baby_Sage", JOB_BABY_SAGE },
        { "Baby_Rogue", JOB_BABY_ROGUE },
        { "Baby_Alchemist", JOB_BABY_ALCHEMIST },
        { "Baby_Bard", JOB_BABY_BARD },
        { "Baby_Dancer", JOB_BABY_DANCER },
        { "Super_Baby", JOB_SUPER_BABY },
        { "Taekwon", JOB_TAEKWON },
        { "Star_Gladiator", JOB_STAR_GLADIATOR },
        { "Soul_Linker", JOB_SOUL_LINKER },
        { "Gangsi", JOB_GANGSI },
        { "Death_Knight", JOB_DEATH_KNIGHT },
        { "Dark_Collector", JOB_DARK_COLLECTOR },
        { "Rune_Knight", JOB_RUNE_KNIGHT },
        { "Warlock", JOB_WARLOCK },
        { "Ranger", JOB_RANGER },
        { "Arch_Bishop", JOB_ARCH_BISHOP },
        { "Mechanic", JOB_MECHANIC },
        { "Guillotine_Cross", JOB_GUILLOTINE_CROSS },
        { "Rune_Knight_Trans", JOB_RUNE_KNIGHT_T },
        { "Warlock_Trans", JOB_WARLOCK_T },
        { "Ranger_Trans", JOB_RANGER_T },
        { "Arch_Bishop_Trans", JOB_ARCH_BISHOP_T },
        { "Mechanic_Trans", JOB_MECHANIC_T },
        { "Guillotine_Cross_Trans", JOB_GUILLOTINE_CROSS_T },
        { "Royal_Guard", JOB_ROYAL_GUARD },
        { "Sorcerer", JOB_SORCERER },
        { "Minstrel", JOB_MINSTREL },
        { "Wanderer", JOB_WANDERER },
        { "Sura", JOB_SURA },
        { "Genetic", JOB_GENETIC },
        { "Shadow_Chaser", JOB_SHADOW_CHASER },
        { "Royal_Guard_Trans", JOB_ROYAL_GUARD_T },
        { "Sorcerer_Trans", JOB_SORCERER_T },
        { "Minstrel_Trans", JOB_MINSTREL_T },
        { "Wanderer_Trans", JOB_WANDERER_T },
        { "Sura_Trans", JOB_SURA_T },
        { "Genetic_Trans", JOB_GENETIC_T },
        { "Shadow_Chaser_Trans", JOB_SHADOW_CHASER_T },
        { "Baby_Rune_Knight", JOB_BABY_RUNE },
        { "Baby_Warlock", JOB_BABY_WARLOCK },
        { "Baby_Ranger", JOB_BABY_RANGER },
        { "Baby_Arch_Bishop", JOB_BABY_BISHOP },
        { "Baby_Mechanic", JOB_BABY_MECHANIC },
        { "Baby_Guillotine_Cross", JOB_BABY_CROSS },
        { "Baby_Royal_Guard", JOB_BABY_GUARD },
        { "Baby_Sorcerer", JOB_BABY_SORCERER },
        { "Baby_Minstrel", JOB_BABY_MINSTREL },
        { "Baby_Wanderer", JOB_BABY_WANDERER },
        { "Baby_Sura", JOB_BABY_SURA },
        { "Baby_Genetic", JOB_BABY_GENETIC },
        { "Baby_Shadow_Chaser", JOB_BABY_CHASER },
        { "Expanded_Super_Novice", JOB_SUPER_NOVICE_E },
        { "Expanded_Super_Baby", JOB_SUPER_BABY_E },
        { "Kagerou", JOB_KAGEROU },
        { "Oboro", JOB_OBORO },
        { "Rebellion", JOB_REBELLION },
    };

... (char-server)

#define MAX_JOB_NAMES 106
static char* msg_table[MAX_JOB_NAMES]; //  messages 550 ~ 655 are job names

const char* msg_txt(int msg_number) {
    msg_number -= 550;
    if (msg_number >= 0 && msg_number < MAX_JOB_NAMES &&
        msg_table[msg_number] != NULL && msg_table[msg_number][0] != '\0')
        return msg_table[msg_number];

    return "Unknown";
}

...

//550 -> 650: Job Names
550: Novice
551: Swordsman
552: Magician
553: Archer
554: Acolyte
555: Merchant
556: Thief
557: Knight
558: Priest
559: Wizard
560: Blacksmith
561: Hunter
562: Assassin
563: Crusader
564: Monk
565: Sage
566: Rogue
567: Alchemist
568: Bard
569: Dancer
570: Wedding
571: Super Novice
572: Gunslinger
573: Ninja
574: Christmas
575: High Novice
576: High Swordsman
577: High Magician
578: High Archer
579: High Acolyte
580: High Merchant
581: High Thief
582: Lord Knight
583: High Priest
584: High Wizard
585: Whitesmith
//585: Mastersmith //IRO name
586: Sniper
587: Assassin Cross
588: Paladin
589: Champion
590: Professor
//590: Scholar //IRO name
591: Stalker
592: Creator
//592: Biochemist //IRO Name
593: Clown
//593: Minstrel //IRO Name
594: Gypsy
595: Baby Novice
596: Baby Swordsman
597: Baby Magician
598: Baby Archer
599: Baby Acolyte
600: Baby Merchant
601: Baby Thief
602: Baby Knight
603: Baby Priest
604: Baby Wizard
605: Baby Blacksmith
606: Baby Hunter
607: Baby Assassin
608: Baby Crusader
609: Baby Monk
610: Baby Sage
611: Baby Rogue
612: Baby Alchemist
613: Baby Bard
614: Baby Dancer
615: Super Baby
616: Taekwon
617: Star Gladiator
618: Soul Linker
//619: FREE
//620: FREE
621: Summer
622: Gangsi
623: Death Knight
624: Dark Collector
625: Rune Knight
626: Warlock
627: Ranger
628: Arch Bishop
629: Mechanic
630: Guillotine Cross
631: Royal Guard
632: Sorcerer
633: Minstrel
//633: Maestro //IRO Name
634: Wanderer
635: Sura
636: Genetic
//636: Geneticist //IRO Name
637: Shadow Chaser
638: Baby Rune Knight
639: Baby Warlock
640: Baby Ranger
641: Baby Arch Bishop
642: Baby Mechanic
643: Baby Guillotine Cross
644: Baby Royal Guard
645: Baby Sorcerer
646: Baby Minstrel
647: Baby Wanderer
648: Baby Sura
649: Baby Genetic
650: Baby Shadow Chaser
651: Expanded Super Novice
652: Expanded Super Baby
653: Kagerou
654: Oboro
655: Unknown Job

...

jobchange: "Params: <job name|ID>\n" "Changes your job.\n"
    "----- Novice / 1st Class -----\n"
    "   0 Novice              1 Swordman            2 Magician            3 Archer\n"
    "   4 Acolyte              5 Merchant               6 Thief\n"
    "----- 2nd Class -----\n"
    "   7 Knight               8 Priest                     9 Wizard               10 Blacksmith\n"
    "  11 Hunter           12 Assassin            14 Crusader          15 Monk\n"
    "  16 Sage              17 Rogue                 18 Alchemist         19 Bard\n"
    "  20 Dancer\n"
    "----- High Novice / High 1st Class -----\n"
    "4001 Novice High     4002 Swordman High    4003 Magician High    4004 Archer High\n"
    "4005 Acolyte High     4006 Merchant High       4007 Thief High\n"
    "----- Transcendent 2nd Class -----\n"
    "4008 Lord Knight      4009 High Priest             4010 High Wizard      4011 Whitesmith\n"
    "4012 Sniper               4013 Assassin Cross   4015 Paladin              4016 Champion\n"
    "4017 Professor         4018 Stalker                    4019 Creator               4020 Clown\n"
    "4021 Gypsy\n"
    "----- 3rd Class (Regular) -----\n"
    "4054 Rune Knight    4055 Warlock                 4056 Ranger            4057 Arch Bishop\n"
    "4058 Mechanic         4059 Guillotine Cross  4066 Royal Guard   4067 Sorcerer\n"
    "4068 Minstrel            4069 Wanderer              4070 Sura                 4071 Genetic\n"
    "4072 Shadow Chaser\n"
    "----- 3rd Class (Transcendent) -----\n"
    "4060 Rune Knight    4061 Warlock                 4062 Ranger             4063 Arch Bishop\n"
    "4064 Mechanic         4065 Guillotine Cross  4073 Royal Guard    4074 Sorcerer\n"
    "4075 Minstrel            4076 Wanderer              4077 Sura                  4078 Genetic\n"
    "4079 Shadow Chaser\n"
    "----- Expanded Class -----\n"
    "     23 Super Novice      24 Gunslinger              25 Ninja                 4045 Super Baby\n"
    "4046 Taekwon           4047 Star Gladiator     4049 Soul Linker            4050 Gangsi\n"
    "4051 Death Knight    4052 Dark Collector    4190 Ex. Super Novice  4191 Ex. Super Baby\n"
    "4211 Kagerou            4212 Oboro            4215 Rebellion\n"
    "----- Baby Novice And Baby 1st Class -----\n"
    "4023 Baby Novice      4024 Baby Swordman    4025 Baby Magician   4026 Baby Archer\n"
    "4027 Baby Acolyte      4028 Baby Merchant       4029 Baby Thief\n"
    "---- Baby 2nd Class ----\n"
    "4030 Baby Knight     4031 Baby Priest         4032 Baby Wizard         4033 Baby Blacksmith\n"
    "4034 Baby Hunter    4035 Baby Assassin   4037 Baby Crusader    4038 Baby Monk\n"
    "4039 Baby Sage       4040 Baby Rogue        4041 Baby Alchemist   4042 Baby Bard\n"
    "4043 Baby Dancer\n"
    "---- Baby 3rd Class ----\n"
    "4096 Baby Rune Knight  4097 Baby Warlock     4098 Baby Ranger           4099 Baby Arch Bishop\n"
    "4100 Baby Mechanic       4101 Baby Glt. Cross  4102 Baby Royal Guard  4103 Baby Sorcerer\n"
    "4104 Baby Minstrel          4105 Baby Wanderer   4106 Baby Sura             4107 Baby Genetic\n"
    "4108 Baby Shadow Chaser\n"
    "---- Modes And Others ----\n"
    " 22 Wedding            26 Christmas          27 Summer           4048 Star Gladiator (Union)\n"

... (the following could even get out of the file and populated during runtime by the server using the centralized data)

Job_Novice  0
Job_Swordman    1
Job_Mage    2
Job_Archer  3
Job_Acolyte 4
Job_Merchant    5
Job_Thief   6
Job_Knight  7
Job_Priest  8
Job_Wizard  9
Job_Blacksmith  10
Job_Hunter  11
Job_Assassin    12
Job_Knight2 13
Job_Crusader    14
Job_Monk    15
Job_Sage    16
Job_Rogue   17
Job_Alchem  18
Job_Alchemist   18
Job_Bard    19
Job_Dancer  20
Job_Crusader2   21
Job_Wedding 22
Job_SuperNovice 23
Job_Gunslinger  24
Job_Ninja   25
Job_Xmas    26
Job_Summer  27

Job_Novice_High 4001
Job_Swordman_High   4002
Job_Mage_High   4003
Job_Archer_High 4004
Job_Acolyte_High    4005
Job_Merchant_High   4006
Job_Thief_High  4007
Job_Lord_Knight 4008
Job_High_Priest 4009
Job_High_Wizard 4010
Job_Whitesmith  4011
Job_Sniper  4012
Job_Assassin_Cross  4013
Job_Lord_Knight2    4014
Job_Paladin 4015
Job_Champion    4016
Job_Professor   4017
Job_Stalker 4018
Job_Creator 4019
Job_Clown   4020
Job_Gypsy   4021
Job_Paladin2    4022

Job_Baby    4023
Job_Baby_Swordman   4024
Job_Baby_Mage   4025
Job_Baby_Archer 4026
Job_Baby_Acolyte    4027
Job_Baby_Merchant   4028
Job_Baby_Thief  4029
Job_Baby_Knight 4030
Job_Baby_Priest 4031
Job_Baby_Wizard 4032
Job_Baby_Blacksmith 4033
Job_Baby_Hunter 4034
Job_Baby_Assassin   4035
Job_Baby_Knight2    4036
Job_Baby_Crusader   4037
Job_Baby_Monk   4038
Job_Baby_Sage   4039
Job_Baby_Rogue  4040
Job_Baby_Alchem 4041
Job_Baby_Alchemist  4041
Job_Baby_Bard   4042
Job_Baby_Dancer 4043
Job_Baby_Crusader2  4044
Job_Super_Baby  4045

Job_Taekwon 4046
Job_Star_Gladiator  4047
Job_Star_Gladiator2 4048
Job_Soul_Linker 4049

Job_Gangsi  4050
Job_Death_Knight    4051
Job_Dark_Collector  4052

Job_Rune_Knight 4054
Job_Warlock 4055
Job_Ranger  4056
Job_Arch_Bishop 4057
Job_Mechanic    4058
Job_Guillotine_Cross    4059

Job_Rune_Knight_T   4060
Job_Warlock_T   4061
Job_Ranger_T    4062
Job_Arch_Bishop_T   4063
Job_Mechanic_T  4064
Job_Guillotine_Cross_T  4065

Job_Royal_Guard 4066
Job_Sorcerer    4067
Job_Minstrel    4068
Job_Wanderer    4069
Job_Sura    4070
Job_Genetic 4071
Job_Shadow_Chaser   4072

Job_Royal_Guard_T   4073
Job_Sorcerer_T  4074
Job_Minstrel_T  4075
Job_Wanderer_T  4076
Job_Sura_T  4077
Job_Genetic_T   4078
Job_Shadow_Chaser_T 4079

Job_Rune_Knight2    4080
Job_Rune_Knight_T2  4081
Job_Royal_Guard2    4082
Job_Royal_Guard_T2  4083
Job_Ranger2 4084
Job_Ranger_T2   4085
Job_Mechanic2   4086
Job_Mechanic_T2 4087

Job_Baby_Rune   4096
Job_Baby_Warlock    4097
Job_Baby_Ranger 4098
Job_Baby_Bishop 4099
Job_Baby_Mechanic   4100
Job_Baby_Cross  4101
Job_Baby_Guard  4102
Job_Baby_Sorcerer   4103
Job_Baby_Minstrel   4104
Job_Baby_Wanderer   4105
Job_Baby_Sura   4106
Job_Baby_Genetic    4107
Job_Baby_Chaser 4108

Job_Baby_Rune2  4109
Job_Baby_Guard2 4110
Job_Baby_Ranger2    4111
Job_Baby_Mechanic2  4112

Job_Super_Novice_E  4190
Job_Super_Baby_E    4191

Job_Kagerou 4211
Job_Oboro   4212
Job_Rebellion   4215
@shennetsind
Copy link
Member Author

in my opinion, It should be stored in one place, and whatever else that may need to store it differently reads from that place and stores it differently, not cache it differently all over the place as is being done.

@malufett
Copy link
Contributor

malufett commented Oct 8, 2013

agree in centralization and I suggest to store it in const.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component:core Affecting the Hercules core (i.e. not the game mechanics directly) status:confirmed Issue is valid and can be reproduced type:enhancement Issue describes an enhancement or feature that should be implemented
Projects
None yet
Development

No branches or pull requests

3 participants