summaryrefslogtreecommitdiff
path: root/npc/012-4/wyara.txt
blob: f4a7680b5b351ef38b5e78d9fd1f586bfc8ff766 (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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
// TMW2 Script
// Author:
//    Saulc
//    Vasily_Makarov (original from Evol)
//    Jesusalva
// Description:
//    Hurnscald Potion Shopkeeper
// Notes:
//    Reset must be turned in function

012-4,29,28,0	script	Wyara	NPC_FEMALE,{

    speech S_LAST_NEXT,
        l("I am @@, an alchemist specialized in reset potions.", .name$);

L_Menu:
    .@plush_count = BaseLevel*210-(10*210);
    // Lv 10: 210 GP
    // Lv 90: 1.867 GP
    if (BaseLevel > 10)
        .@plush_count = .@plush_count/(BaseLevel/10);

    .@n=getq(General_Narrator);

    select
        l("Can you reset my stats please?"),
        rif($ARKIM_ST >= 1200,l("I want Piberries Infusion!")),
        rif(getq(HurnscaldQuest_InjuriedMouboo) == 2,l("Do you know how to break curses?")),
        rif(.@n >= 6,l("I am in dire need of Return Potions!")),
        lg("You are weird, I have to go sorry.");

    mes "";
    switch (@menu) {
        case 1:
            goto L_ResetStats;
        case 2:
            goto L_Piberries;
        case 3:
            goto L_Uncurse;
        case 4:
            goto L_ReturnPot;
        case 5:
            goto L_Quit;
    }

L_ResetStats:
    mesn;
    mesq l("Status point reset can't be undone. Do you really want this?");

L_ConfirmReset:
    switch (select(lg("Yes, I am sure."),
                   lg("I need to think about it..."),
                   lg("I won't need it, thank you.")))
    {
        case 1:
            speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
                l("Let me just have a quick look at you. Hm... I will need @@ GP to reset your stats.", .@plush_count);

            select
                rif(Zeny >= .@plush_count, l("Here, take as much as you need, I have plenty!")),
                rif(Zeny > 0 && Zeny < .@plush_count, l("I don't have enough money...")),
                rif(Zeny == 0, l("Oh no, I don't have any money on me right now.")),
                l("I have to go, sorry.");

            if (@menu > 1) {
                goto L_Quit;
            }

            // TODO: I think there were functions to deal with GP
            set Zeny, Zeny-.@plush_count;

            speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
                l("Thank you."),
                l("Now stand still... It should not take much time...");

            .@wasSP = StatusPoint;
            resetstatus;
            if (StatusPoint == .@wasSP) {
                speech S_LAST_NEXT,
                    l("It seems that you have no status points to reset!"),
                    l("But the money you brought was really awesome you know."),
                    l("Come back when you will really need me.");
            } else {
                speech S_LAST_NEXT,
                    l("Let's see... @@ of your status points have just been reset!", StatusPoint - .@wasSP),
                    l("Spend it wisely this time."),
                    l("But you are welcome to reset your stats again! I need the money.");
            }
            goto L_Quit;

        case 2:
            goto L_Quit;
        case 3:
            goto L_Quit;
    }


L_Piberries:
    mesn;
    mesq l("For (another) one @@, I'll need 3~4 @@ and 50 GP.", getitemlink(PiberriesInfusion), getitemlink(Piberries));
    next;
    select
        rif(Zeny >= 50 && countitem(Piberries) >= 4, l("Do it!")),
        l("Not now, sorry.");
    if (@menu == 2)
        goto L_Quit;

    mes "";
    inventoryplace PiberriesInfusion, 1;

    Zeny=Zeny-50;
    delitem Piberries, rand(3,4);
    getitem PiberriesInfusion, 1;
    getexp 10, 0;
    goto L_Piberries;

L_Uncurse:
    mesn;
    mesq l("Well, it depends on the curse. Some are easy to break, and others are... well...");
    next;
    select
        l("It's a simple curse."),
        l("It's a complex curse."),
        l("It's a cursed mouboo.");
    mes "";
    mesn;
    switch (@menu) {
        case 1:
            mesq l("Then you should look in buying Caffeinne. Curse is a status ailment which reduces your attack, nullifies your luck and makes you a snail. Simple Curses can be cured with time, too.");
            break;
        case 2:
            mesq l("Oh, then you should seek the help of an specialist. These curses have an specific condition to break, like leveling up or being killed. Force-breaking them can be difficult.");
            break;
        case 3:
            mesq l("A... Mouboo? Well, I know who can handle curses on cute Mouboos.");
            next;
            mesn;
            mesq l("Go talk to Sagratha, she is usually in a hut in northen forest. The door have a magic barrier, so you'll need to have minimal magic skills to get close enough to open it.");
            next;
            mesn;
            mesq l("She doesn't likes @@s, only cute animals. She doesn't likes Ghosts, Undeads, and Shadow monsters either.", get_race());
            next;
            mesn;
            mesq l("So, when you get on the door, knock it, and say this: \"@@\". She will open the door for you.", b(l("Mouboos are cute")));
            compareandsetq HurnscaldQuest_Sagratha, 0, 1;
            break;
    }
    close;

L_ReturnPot:
    .@price=10000-(reputation("Hurns")*20);
    .@craft=2001-(reputation("Hurns")*20);
    mesn;
    mesq l("I understand. Rakinorf told me to stuff you with them if needed.");
    next;
    mesn;
    mesq l("Be aware I can only bake batches of 5 potions.");
    next;
    mesn;
    mesq l("So, it is @@ GP each one up-front. Or I can brew with your materials:", .@price);
    mes "";
    mesn l("Craft Recipe");
    mesc l("- @@/@@ @@", 100, countitem(MauveHerb), getitemlink(MauveHerb));
    mesc l("- @@/@@ @@", 20, countitem(MushroomSpores), getitemlink(MushroomSpores));
    mesc l("- @@/@@ @@", 10, countitem(Potatoz), getitemlink(Potatoz));
    mesc l("- @@/@@ @@", 10, countitem(Coral), getitemlink(Coral));
    mesc l("- @@/@@ @@", 1, countitem(EverburnPowder), getitemlink(EverburnPowder));
    mesc l("- @@/@@ GP", format_number(.@craft), format_number(Zeny));
    next;
    select
        l("Too expensive %%n"),
        rif(Zeny >= .@price, l("I want to pay the full price.")),
        l("I want you to brew some for me.");
    mes "";
    switch (@menu) {
        case 1:
            close;
        case 2:
            mesc l("How many? Max. @@", (Zeny/.@price));
            input .@c, 0, (Zeny/.@price);
            .@payment=.@price*.@c;
            if (Zeny >= .@payment) {
                inventoryplace ReturnPotion, .@c*5;
                Zeny-=.@payment;
                getitem ReturnPotion, .@c*5;
                mesn;
                mesq l("There you go!");
            } else {
                Exception("Illegal input.", RB_DEFAULT | RB_SPEECH);
            }
            break;
        case 3:
            mesc l("How many?");
            input .@c, 0, 100;
            inventoryplace ReturnPotion, .@c*5;
            if (
                countitem(MauveHerb)        < 100*.@c ||
                countitem(MushroomSpores)   <  20*.@c ||
                countitem(Potatoz)          <  10*.@c ||
                countitem(Coral)            <  10*.@c ||
                countitem(EverburnPowder)   <   1*.@c ||
                Zeny < .@craft*.@c
                ) Exception("You don't have that much material.", RB_ISFATAL|RB_SPEECH);
            delitem MauveHerb,      100*.@c;
            delitem MushroomSpores,  20*.@c;
            delitem Potatoz,         10*.@c;
            delitem Coral,           10*.@c;
            delitem EverburnPowder,   1*.@c;
            Zeny-=.@craft*.@c;
            getitem ReturnPotion, .@c*5;
            mesn;
            mesq l("There you go!");
            break;
    }
    close;

L_Quit:
    goodbye;
    close;

OnInit:
    .@npcId = getnpcid(.name$);
    setunitdata(.@npcId, UDT_HEADTOP, FancyHat);
    setunitdata(.@npcId, UDT_HEADMIDDLE, SailorShirt);
    setunitdata(.@npcId, UDT_HEADBOTTOM, BromenalPants);
    setunitdata(.@npcId, UDT_WEAPON, LousyMoccasins); // Boots
    setunitdata(.@npcId, UDT_HAIRSTYLE, 8);
    setunitdata(.@npcId, UDT_HAIRCOLOR, 18);

    .sex = G_FEMALE;
    .distance = 4;
    end;
}