summaryrefslogtreecommitdiff
path: root/world/map/npc/009-2/bernard.txt
blob: f0c03fbcebc3ebc16284e3068979475b4f8d80ea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// Variables used: nibble 0 of QUEST_SouthTulimshar

009-2,67,79,0|script|Bernard|117
{
    // This NPC previously used the variable TMW_Quest
    callfunc "ClearVarTMW_Quest";

    set @state, ((QUEST_SouthTulimshar & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);

    if (@state >= 6) goto L_Done3;
    if (@state >= 4) goto L_Done2;
    if (@state == 3) goto L_Progress2;
    if (@state == 2) goto L_Done1;
    if (@state == 1) goto L_Progress;

    set @TEMP, rand(2);
    if(@TEMP == 1) goto L_Opening1;
    goto L_Opening0;

L_Opening0:
    mes "[Bernard]";
    mes "\"The fields are crawling with maggots. Where is Mikhail? What is taking them so long?";
    mes "Could I ask a favor of you?\"";
    next;
    goto L_Ask;

L_Opening1:
    mes "[Bernard]";
    mes "\"The taste of maggots in soup is... unforgettable, they taste simply divine!";
    mes "I sent someone to kill me some maggots and they have yet to return. Would you help me kill some?\"";
    next;
    goto L_Ask;

L_Ask:
    menu
        "Yes.", L_Yes,
        "No.", L_Close;

L_Yes:
    set @TEMP, rand(2);
    if(@TEMP == 1) goto L_Req1;
    goto L_Req0;

L_Req0:
    mes "[Bernard]";
    mes "\"Great!  I need a Roasted Maggot for my soup.\"";
    next;
    goto L_Set;

L_Req1:
    mes "[Bernard]";
    mes "\"Bring me a Roasted Maggot. I'll give you something if you do.\"";
    next;
    goto L_Set;

L_Set:
    set @state, 1;
    callsub S_Update_Var;
    mes "[Bernard]";
    mes "\"Please bring it to me!\"";
    goto L_Close;

L_Progress:
    if (countitem("RoastedMaggot") < 1) goto L_NotEnough;
    mes "[Bernard]";
    mes "\"Oooh, perfect! It's perfect!";
    mes "You brought me my Roasted Maggot!  Here, have some cake for your troubles.\"";
    getinventorylist;
    if (@inventorylist_count - (countitem("RoastedMaggot") == 1) > 99 - (countitem("CherryCake") == 0) ) goto L_TooMany;
    delitem "RoastedMaggot", 1;
    getexp 100, 0;
    getitem "CherryCake", 5;
    set @state, 2;
    callsub S_Update_Var;
    next;
    mes "\"Now let's see...\"";
    goto L_Close;

L_Progress2:
    if (countitem("MaggotSlime") < 3) goto L_NotEnough1;
    mes "[Bernard]";
    mes "\"Nice!  They're perfect, just perfect!";
    mes "You brought me the 3 Maggot Slimes!  Here, have some beer as reward.\"";
    getinventorylist;
    if ((@inventorylist_count - (countitem("MaggotSlime") == 3) > 99  - (countitem("Beer") == 0) )) goto L_TooMany;
    delitem "MaggotSlime", 3;
    getexp 100, 0;
    getitem "Beer", 3;
    set @state, 4;
    callsub S_Update_Var;
    goto L_Close;

L_NotEnough:
    mes "[Bernard]";
    mes "\"Oh, please hurry and bring me a Roasted Maggot. I'm yearning for maggot soup!\"";
    goto L_Close;

L_NotEnough1:
    mes "[Bernard]";
    mes "\"Please do hurry and bring me 3 Maggot Slimes, so I can finish my soup!\"";
    goto L_Close;

L_Done1:
    mes "[Bernard]";
    mes "\"Thank you so much!\"";
    mes "\"But... something is missing to make the soup creamy.\"";
    next;
    mes "\"I need 3 Maggot Slimes for that.\"";
    mes "\"Bring them to me, and I'll give you something nice.\"";
    set @state, 3;
    callsub S_Update_Var;
    goto L_Close;

L_Done2:
    mes "[Bernard]";
    mes "\"I didn't mention it before, but I also put beer in my soup. I hope you like beer as much as I do, because, you see...\"";
    next;
    mes "\"Beer is life!\"";
    goto L_Close;

L_Done3:
    mes "[Bernard]";
    mes "\"My help, Mikhail, finally returned with the slimes I needed.";
    mes "I wonder what took him so long?\"";
    goto L_Close;

L_Close:
    set @TEMP, 0;
    set @state, 0;
    close;

L_TooMany:
    next;
    mes "[Bernard]";
    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_0_MASK) | (@state << NIBBLE_0_SHIFT));
    return;
}