Issue information

Issue ID
#2393
Status
Fixed
Severity
None
Started
Hercules Elf Bot
Oct 27, 2008 6:49
Last Post
Hercules Elf Bot
Mar 5, 2012 9:18
Confirmation
N/A

Hercules Elf Bot - Oct 27, 2008 6:49

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

After getting a letter from the Icarus guildmaster in Archer Village, if you go to Seisner, she will explain things to you. But, when you ask her to explain stats to you, you can't get out of the menu by choosing to end conversation.

The file for this is in NPC/quests/first_class, and the file is called tu_archer.txt. The code currently present is:
CODE
while(1){
    switch(select("About Archers.:Stats for Archers:End Conversation.")){
    case 1:
        
        ...

        next;  
        break;
    case 2:
        ...
        next;
        while(1){
            switch(select("STR", "^3131FFAGI^000000", "VIT", "^FF9900INT^000000", "^FF3131DEX^000000",
                "LUK", "End Conversation.")){
            case 1:
                             ...
            if(tu_archer01 == 1) set tu_archer01, 2;
                break;
            case 7:
                mes "[Seisner]";
                mes "So is there";
                mes "anything else that";
                mes "you want to ask me?";
                next;
                break;
            }
        }
        break;
    case 3:
        ...    
        close;
        break;
    }
}


The break command only causes it to leave the switch statement, and this causes the loop to repeat infinitely.

I don't think this is the best way to fix it, but it seems to work anyway:
CODE
while(1){
    // move the case 7 embedded in the case 2 here as a label
    L_repeat:
        mes "[Seisner]";
        mes "So is there";
        mes "anything else that";
        mes "you want to ask me?";
        next;
    switch(select("About Archers.:Stats for Archers:End Conversation.")){
    case 1:
                ...
        next;  
        break;
    case 2:
        ...
        next;
        while(1){
            switch(select("STR", "^3131FFAGI^000000", "VIT", "^FF9900INT^000000", "^FF3131DEX^000000",
                "LUK", "End Conversation.")){
            case 1:
                                                ...
            case 7:
                // replace everything under case 7 with this:
                goto L_repeat;
            }
        }
        break;
    case 3:
                                ...
        close;
        break;
    }
}