Issue information

Issue ID
#943
Status
Fixed
Severity
None
Started
Hercules Elf Bot
Feb 8, 2008 23:03
Last Post
Hercules Elf Bot
Feb 8, 2008 23:03
Confirmation
N/A

Hercules Elf Bot - Feb 8, 2008 23:03

Originally posted by [b]pakpil[/b]
http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=943

First of all:

This is the code of Job_Change function:

CODE
function    script    Job_Change    {
    if (Upper<2)
        jobchange getarg(0); // Common jobchange
    else
        jobchange getarg(0) + Job_Baby; //Change Job For Baby Class
    logmes "CLASS CHANGE: " +strcharinfo(0)+ " become a "+jobname(Class);
    return;
}


These are Jobs constants:

[codebox]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_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[/codebox]

Well... when Job_Change function is called by job_changer or job quest, this function recive the job constant as data.

if you want to change to baby class:

Job_Swordman 1 -> Job_Baby_Swordman 4024 = jobchange getarg(0) + Job_Baby; //Change Job For Baby Class

then

1 + 4023 = 4024 Its OK

BUT:

When you go to change to Super Baby you get:



Job_SuperNovice 23 -> Job_Super_Baby 4045 = jobchange getarg(0) + Job_Baby; //Change Job For Baby Class

then

23 + 4023 = 4046 Its No OK. You dont change to Super Baby Novice.

I have solved this problem using something like this:

CODE
function    script    Job_Change    {
    if (Upper<2)
        jobchange getarg(0); // Common jobchange
    else {
                if(getarg(0) == Job_SuperNovice)
                     jobchange getarg(0) + Job_Baby - 1; //Change Job For Super Baby Class
                else
                     jobchange getarg(0) + Job_Baby; //Change Job For Baby Class
        }
    logmes "CLASS CHANGE: " +strcharinfo(0)+ " become a "+jobname(Class);
    return;
}


But, Would it be necessary to review these constants?

This post has been edited by pakpil: Feb 8 2008, 03:10 PM