// Variables used: nibble 1 of QUEST_SouthTulimshar
001-1.gat,137,78,0|script|Sarah|106
{
// This NPC previously used the variable TMW_Quest
callfunc "ClearVarTMW_Quest";
set @state, ((QUEST_SouthTulimshar & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT);
if (@state >= 2) goto L_Done;
if (@state == 1) goto L_Progress;
mes "[Sarah]";
mes "\"Boy, am I hungry or what!\"";
next;
set @TEMP, rand(2);
if(@TEMP == 1) goto L_Opening1;
goto L_Opening0;
L_Opening0:
mes "\"Cherry Cake is the best!\"";
next;
goto L_Ask;
L_Opening1:
mes "\"Mmm, Cherry Cake... I love it!\"";
next;
goto L_Ask;
L_Ask:
mes "\"Can you bring me a piece of Cherry Cake? Pretty please?\"";
menu
"Yes.", L_Req0,
"No.", L_Close;
L_Req0:
mes "[Sarah]";
mes "\"Yippee! Bring me a piece of Cherry Cake, and I'll give you a nice hat!\"";
next;
set @state, 1;
callsub S_Update_Var;
mes "[Sarah]";
mes "\"Please bring it to me!\"";
goto L_Close;
L_Progress:
if (countitem("CherryCake") < 1)
goto L_NotEnough;
mes "[Sarah]";
mes "\"Whee!\"";
next;
mes "You brought me Cherry Cake! Here is your new hat, as promised.\"";
emotion EMOTE_TONGUE;
getinventorylist;
if ((@inventorylist_count - (countitem("CherryCake") == 1)) > 99) goto L_TooMany;
delitem "CherryCake", 1;
getitem "SerfHat", 1;
set @state, 2;
callsub S_Update_Var;
goto L_Close;
L_NotEnough:
mes "[Sarah]";
mes "\"Oh, I'm starving! Please bring me Cherry Cake!\"";
goto L_Close;
L_Done:
mes "[Sarah]";
mes "\"It was so tasty, I can't eat anything more... Thank you!\"";
emotion EMOTE_TONGUE;
goto L_Close;
L_Close:
set @TEMP, 0;
set @state, 0;
close;
L_TooMany:
next;
mes "[Sarah]";
mes "\"You don't have room for my reward. I'll wait until you do.\"";
goto L_Close;
S_Update_Var:
set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_1_MASK) | (@state << NIBBLE_1_SHIFT));
return;
}