OSDN Git Service

First version
[st-ro/stro.git] / npc / custom / etc / lottery.txt
1 //===== rAthena Script =======================================
2 //= Lottery
3 //===== By: ==================================================
4 //= acky
5 //===== Current Version: =====================================
6 //= 1.2.1a
7 //===== Compatible With: =====================================
8 //= rAthena Project
9 //===== Description: =========================================
10 //= Daily lottery draw
11 //===== Additional Comments: =================================
12 //= Numbers drawn daily (Time is configured line 29)
13 //= *Added GM-Riggability
14 //= *Ability to renew ticket
15 //= *Improved interface
16 //= *Fixed minor bug where first load didn't work.
17 //= 1.2.1a fix due to new script engine
18 //============================================================
19
20 -       script  lotterygenerator        -1,{
21 OnInit:
22         set $L_TicketPrice,4750; // TICKET COST
23         set $L_Prize_Money,5000000; // JACKPOT AMOUNT
24         set $L_Prize_Money_Small,1000000; // SECONDARY PRIZE
25         if ($LID == 0) goto L_GenID;
26         end;
27
28         //Modify for own time
29 OnClock2045:
30         // CHECKS IF LOTTERY IS RIGGED
31         if ($L_Rigged == 1) goto L_Rigged_Draw;
32         // GENERATES RANDOM NUMBERS 1-40
33 Pick1:
34         set $LW1,rand (1,40);
35
36 Pick2:
37         set $LW2,rand (1,40);
38         if ($LW2 == $LW1) goto Pick2;
39
40 Pick3:
41         set $LW3,rand (1,40);
42         if ($LW3 == $LW2) goto Pick3;
43         if ($LW3 == $LW1) goto Pick3;
44
45 Pick4:
46         set $LW4,rand (1,40);
47         if ($LW4 == $LW2) goto Pick4;
48         if ($LW4 == $LW1) goto Pick4;
49         if ($LW4 == $LW3) goto Pick4;
50
51 Pick5:
52         set $LW5,rand (1,40);
53         if ($LW5 == $LW1) goto Pick5;
54         if ($LW5 == $LW2) goto Pick5;
55         if ($LW5 == $LW3) goto Pick5;
56         if ($LW5 == $LW4) goto Pick5;
57
58 Pick6:
59         set $LW6,rand (1,40);
60         if ($LW6 == $LW1) goto Pick6;
61         if ($LW6 == $LW2) goto Pick6;
62         if ($LW6 == $LW3) goto Pick6;
63         if ($LW6 == $LW4) goto Pick6;
64         if ($LW6 == $LW5) goto Pick6;
65
66         // BROADCASTS DRAW
67 L_Broadcast:
68         Announce "Lottery: Welcome to tonight's lotto draw!",8;
69         Announce "The numbers are as follows: [" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]",8;
70         Announce "Congratulations to the winners of tonight!",8;
71
72         // GENERATES DRAW ID CODE
73 L_GenID:
74         set $LID2,$LID;
75         // SETS TOMORROW'S ID NUMBER
76         set $LID,rand (100000,999999);
77         end;
78
79         // SETS DRAW TO RIGGED NUMBERS
80 L_Rigged_Draw:
81         set $LW1,$LR1;
82         set $LW2,$LR2;
83         set $LW3,$LR3;
84         set $LW4,$LR4;
85         set $LW5,$LR5;
86         set $LW6,$LR6;
87         set $L_Rigged,0;
88         goto L_Broadcast;
89 }
90
91 prontera,141,182,5      script  Lottery 76,{
92 L_Begin:
93         mes "[Lottery]";
94         mes "Winning Lotto Numbers ("+$LID2+"):";
95         mes "^0000FF[" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]^000000";
96         if ($LID > 99999) mes "Your Ticket ("+#LID+"):";
97         if ($LID > 99999) mes "^FF0000[" + #LW1 + "] [" + #LW2 + "] [" + #LW3 + "] [" + #LW4 + "] [" + #LW5 + "] [" + #LW6 + "]^000000";
98         mes "Next Draw-ID: ^FF0000" + $LID + "^000000.";
99         next;
100         if (getgmlevel() > 90) goto L_GM;
101         menu "Claim Prize",L_Claim,"Buy New Ticket",L_Buy,"Cancel",L_Cancel;
102
103 // PURCHASE TICKET
104 L_Buy:
105         if (#LID == $LID && #L1 != 0) goto L_DoubleTicket;
106         mes "[Lottery]";
107         mes "Tickets cost ^0000FF" + $L_TicketPrice + "z^000000.";
108         mes "The Jackpot is ^FF0000" + $L_Prize_Money + "z^000000.";
109         next;
110         menu "Buy Ticket",-,"Cancel",L_Cancel;
111         if (Zeny < $L_TicketPrice) goto L_NoZeny;
112         set Zeny, Zeny-$L_TicketPrice;
113         mes "[Lottery]";
114         mes "Would you like your numbers hand picked or computer generated?";
115         next;
116         menu "Computer Generated",L_ComputerGen,"Hand Picked",L_HandPick,"Renew Ticket",L_Renew;
117
118 // RENEW LAST TICKET
119 L_Renew:
120         if ($LID < 99999) goto L_Invalid;
121         set #LID,$LID;
122         goto L_Confirm2;
123
124 L_ComputerGen:
125 // SELECTS RANDOM NUMBERS
126         set @L1,0;
127         set @L2,0;
128         set @L3,0;
129         set @L4,0;
130         set @L5,0;
131         set @L6,0;
132 Pick1:
133         set @L1,rand (1,40);
134 Pick2:
135         set @L2,rand (1,40);
136         if (@L2 == @L1) goto Pick2;
137 Pick3:
138         set @L3,rand (1,40);
139         if (@L3 == @L2) goto Pick3;
140         if (@L3 == @L1) goto Pick3;
141 Pick4:
142         set @L4,rand (1,40);
143         if (@L4 == @L2) goto Pick4;
144         if (@L4 == @L1) goto Pick4;
145         if (@L4 == @L3) goto Pick4;
146 Pick5:
147         set @L5,rand (1,40);
148         if (@L5 == @L1) goto Pick5;
149         if (@L5 == @L2) goto Pick5;
150         if (@L5 == @L3) goto Pick5;
151         if (@L5 == @L4) goto Pick5;
152 Pick6:
153         set @L6,rand (1,40);
154         if (@L6 == @L1) goto Pick6;
155         if (@L6 == @L2) goto Pick6;
156         if (@L6 == @L3) goto Pick6;
157         if (@L6 == @L4) goto Pick6;
158         if (@L6 == @L5) goto Pick6;
159         mes "[Lottery]";
160         mes "The computer has selected the following numbers:";
161         mes "^0000FF" + @L1 + " " + @L2 + " " + @L3 + " " + @L4 + " " + @L5 + " " + @L6 + "^000000";
162         next;
163         menu "Confirm",L_Confirm,"Re-Generate",L_ComputerGen;
164
165 // HAND PICK LOTTERY NUMBERS
166 L_HandPick:
167         mes "[Lottery]";
168         mes "Please pick your numbers (1-40):";
169         set @L1,0;
170         set @L2,0;
171         set @L3,0;
172         set @L4,0;
173         set @L5,0;
174         set @L6,0;
175 Input1:
176         input @L1;
177         if (@L1 < 1 || @L1 > 40) goto Input1;
178         mes @L1;
179 Input2:
180         input @L2;
181         if (@L2 < 1 || @L2 > 40) goto Input2;
182         if (@L2 == @L1) goto Input2;
183         mes @L2;
184 Input3:
185         input @L3;
186         if (@L3 < 1 || @L3 > 40) goto Input3;
187         if (@L3 == @L1) goto Input3;
188         if (@L3 == @L2) goto Input3;
189         mes @L3;
190 Input4:
191         input @L4;
192         if (@L4 < 1 || @L4 > 40) goto Input4;
193         if (@L4 == @L1) goto Input4;
194         if (@L4 == @L2) goto Input4;
195         if (@L4 == @L3) goto Input4;
196         mes @L4;
197 Input5:
198         input @L5;
199         if (@L5 < 1 || @L5 > 40) goto Input5;
200         if (@L5 == @L1) goto Input5;
201         if (@L5 == @L2) goto Input5;
202         if (@L5 == @L3) goto Input5;
203         if (@L5 == @L4) goto Input5;
204         mes @L5;
205 Input6:
206         input @L6;
207         if (@L6 < 1 || @L6 > 40) goto Input6;
208         if (@L6 == @L1) goto Input6;
209         if (@L6 == @L2) goto Input6;
210         if (@L6 == @L3) goto Input6;
211         if (@L6 == @L4) goto Input6;
212         if (@L6 == @L5) goto Input6;
213         mes @L6;
214         next;
215         mes "[Lottery]";
216         mes "Your numbers are:";
217         mes "^0000FF" + @L1 + " " + @L2 + " " + @L3 + " " + @L4 + " " + @L5 + " " + @L6 + "^000000";
218         next;
219         menu "Confirm",L_Confirm,"Re-Pick",L_HandPick;
220
221 L_Confirm:
222         set #LW1,@L1;
223         set #LW2,@L2;
224         set #LW3,@L3;
225         set #LW4,@L4;
226         set #LW5,@L5;
227         set #LW6,@L6;
228         set #LID,$LID;
229 L_Confirm2:
230         mes "[Lottery]";
231         mes "The live broadcasted draw is at 9pm.";
232         mes "You can claim your ticket between then and the next draw.";
233         next;
234         mes "[Lottery]";
235         mes "Good luck!";
236         close;
237
238 L_Claim:
239         // CHECKS TICKET VALIDILITY
240         if (#LID != $LID2) goto L_Invalid;
241         // CHECKS HOW MANY NUMBERS MATCHED
242         set @LPrize,0;
243         if (#LW1 == $LW1) set @LPrize,@LPrize+1;
244         if (#LW1 == $LW2) set @LPrize,@LPrize+1;
245         if (#LW1 == $LW3) set @LPrize,@LPrize+1;
246         if (#LW1 == $LW4) set @LPrize,@LPrize+1;
247         if (#LW1 == $LW5) set @LPrize,@LPrize+1;
248         if (#LW1 == $LW6) set @LPrize,@LPrize+1;
249         if (#LW2 == $LW1) set @LPrize,@LPrize+1;
250         if (#LW2 == $LW2) set @LPrize,@LPrize+1;
251         if (#LW2 == $LW3) set @LPrize,@LPrize+1;
252         if (#LW2 == $LW4) set @LPrize,@LPrize+1;
253         if (#LW2 == $LW5) set @LPrize,@LPrize+1;
254         if (#LW2 == $LW6) set @LPrize,@LPrize+1;
255         if (#LW3 == $LW1) set @LPrize,@LPrize+1;
256         if (#LW3 == $LW2) set @LPrize,@LPrize+1;
257         if (#LW3 == $LW3) set @LPrize,@LPrize+1;
258         if (#LW3 == $LW4) set @LPrize,@LPrize+1;
259         if (#LW3 == $LW5) set @LPrize,@LPrize+1;
260         if (#LW3 == $LW6) set @LPrize,@LPrize+1;
261         if (#LW4 == $LW1) set @LPrize,@LPrize+1;
262         if (#LW4 == $LW2) set @LPrize,@LPrize+1;
263         if (#LW4 == $LW3) set @LPrize,@LPrize+1;
264         if (#LW4 == $LW4) set @LPrize,@LPrize+1;
265         if (#LW4 == $LW5) set @LPrize,@LPrize+1;
266         if (#LW4 == $LW6) set @LPrize,@LPrize+1;
267         if (#LW5 == $LW1) set @LPrize,@LPrize+1;
268         if (#LW5 == $LW2) set @LPrize,@LPrize+1;
269         if (#LW5 == $LW3) set @LPrize,@LPrize+1;
270         if (#LW5 == $LW4) set @LPrize,@LPrize+1;
271         if (#LW5 == $LW5) set @LPrize,@LPrize+1;
272         if (#LW5 == $LW6) set @LPrize,@LPrize+1;
273         if (#LW6 == $LW1) set @LPrize,@LPrize+1;
274         if (#LW6 == $LW2) set @LPrize,@LPrize+1;
275         if (#LW6 == $LW3) set @LPrize,@LPrize+1;
276         if (#LW6 == $LW4) set @LPrize,@LPrize+1;
277         if (#LW6 == $LW5) set @LPrize,@LPrize+1;
278         if (#LW6 == $LW6) set @LPrize,@LPrize+1;
279
280         if (@LPrize == 6) goto LWinBig;
281         if (@LPrize > 3 && @LPrize < 6) goto LWinSmall;
282
283 // NO WINNER
284         mes "[Lottery]";
285         mes "Bad luck, it appears you do not hold a winning ticket.";
286         next;
287         mes "[Lottery]";
288         mes "Better luck next time!.";
289         close;
290
291 // MATCHED ALL SIX
292 LWinBig:
293         mes "[Lottery]";
294         mes "You have matched all six numbers!";
295         mes "Jackpot!";
296         mes "You've won ^0000FF" + $L_Prize_Money + "z^000000.";
297         set Zeny, Zeny+$L_Prize_Money;
298         Announce "Lottery: " + strcharinfo(0) + " has won the JACKPOT of " + $L_Prize_Money + "z!",8;
299         set #LID,0;
300         close;
301
302 // MATCHED AT LEAST 4
303 LWinSmall:
304         mes "[Lottery]";
305         mes "You have matched at least 4 numbers!";
306         mes "You've won ^0000FF" + $L_Prize_Money_Small + "z^000000.";
307         set Zeny, Zeny+$L_Prize_Money_Small;
308         Announce "Lottery: " + strcharinfo(0) + " has won a prize of " + $L_Prize_Money_Small + "z!",8;
309         set #LID,0;
310         close;
311
312 // NO ZENY
313 L_NoZeny:
314         mes "[Lottery]";
315         mes "You can't afford a lottery ticket.";
316         close;
317
318 // INVALID TICKET
319 L_Invalid:
320         mes "[Lottery]";
321         mes "I'm sorry but it appears that you have an invalid ticket.";
322         close;
323
324 // DOUBLE TICKET
325 L_DoubleTicket:
326         mes "[Lottery]";
327         mes "It appears that you already have a ticket for today.";
328         mes "You may only purchase one ticket per draw.";
329         close;
330
331 L_Cancel:
332         mes "[Lottery]";
333         mes "Come back soon!";
334         close;
335
336 // GM MENU (Lets you manually do draws)
337 L_GM:
338         menu "Claim Prize",L_Claim,"Buy New Ticket",L_Buy,"[GM]Do Draw Now",-,"[GM]Rig the Lottery",L_GM_Rig,"Cancel",L_Cancel;
339
340         // CHECKS IF LOTTERY IS RIGGED
341         if ($L_Rigged == 1) goto L_Rigged_Draw;
342         // GENERATES RANDOM NUMBERS 1-40
343 GMPick1:
344         set $LW1,rand (1,40);
345
346 GMPick2:
347         set $LW2,rand (1,40);
348         if ($LW2 == $LW1) goto GMPick2;
349
350 GMPick3:
351         set $LW3,rand (1,40);
352         if ($LW3 == $LW2) goto GMPick3;
353         if ($LW3 == $LW1) goto GMPick3;
354
355 GMPick4:
356         set $LW4,rand (1,40);
357         if ($LW4 == $LW2) goto GMPick4;
358         if ($LW4 == $LW1) goto GMPick4;
359         if ($LW4 == $LW3) goto GMPick4;
360
361 GMPick5:
362         set $LW5,rand (1,40);
363         if ($LW5 == $LW1) goto GMPick5;
364         if ($LW5 == $LW2) goto GMPick5;
365         if ($LW5 == $LW3) goto GMPick5;
366         if ($LW5 == $LW4) goto GMPick5;
367
368 GMPick6:
369         set $LW6,rand (1,40);
370         if ($LW6 == $LW1) goto GMPick6;
371         if ($LW6 == $LW2) goto GMPick6;
372         if ($LW6 == $LW3) goto GMPick6;
373         if ($LW6 == $LW4) goto GMPick6;
374         if ($LW6 == $LW5) goto GMPick6;
375
376 // BROADCASTS DRAW
377 L_Broadcast:
378         Announce "Lottery: Welcome to the special GM's lotto draw!",8;
379         Announce "The numbers are as follows: [" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]",8;
380         Announce "Congratulations to the winners!",8;
381
382 // GENERATES DRAW ID CODE
383 L_GenID:
384         set $LID2,$LID;
385         // SETS TOMORROW'S ID NUMBER
386         set $LID,rand (100000,999999);
387         close;
388
389 // SETS DRAW TO RIGGED NUMBERS
390 L_Rigged_Draw:
391         set $LW1,$LR1;
392         set $LW2,$LR2;
393         set $LW3,$LR3;
394         set $LW4,$LR4;
395         set $LW5,$LR5;
396         set $LW6,$LR6;
397         set $L_Rigged,0;
398         goto L_Broadcast;
399
400 // ALLOWS GM TO DO A RIGGED DRAW
401 L_GM_Rig:
402         mes "[Lottery]";
403         mes "Please pick your numbers (1-40):";
404         set $LR1,0;
405         set $LR2,0;
406         set $LR3,0;
407         set $LR4,0;
408         set $LR5,0;
409         set $LR6,0;
410 GMInput1:
411         Input $LR1;
412         if ($LR1 < 1 || $LR1 > 40) goto GMInput1;
413         mes $LR1;
414 GMInput2:
415         Input $LR2;
416         if ($LR2 < 1 || $LR2 > 40) goto GMInput2;
417         if ($LR2 == $LR1) goto GMInput2;
418         mes $LR2;
419 GMInput3:
420         Input $LR3;
421         if ($LR3 < 1 || $LR3 > 40) goto GMInput3;
422         if ($LR3 == $LR1) goto GMInput3;
423         if ($LR3 == $LR2) goto GMInput3;
424         mes $LR3;
425 GMInput4:
426         Input $LR4;
427         if ($LR4 < 1 || $LR4 > 40) goto GMInput4;
428         if ($LR4 == $LR1) goto GMInput4;
429         if ($LR4 == $LR2) goto GMInput4;
430         if ($LR4 == $LR3) goto GMInput4;
431         mes $LR4;
432 GMInput5:
433         Input $LR5;
434         if ($LR5 < 1 || $LR5 > 40) goto GMInput5;
435         if ($LR5 == $LR1) goto GMInput5;
436         if ($LR5 == $LR2) goto GMInput5;
437         if ($LR5 == $LR3) goto GMInput5;
438         if ($LR5 == $LR4) goto GMInput5;
439         mes $LR5;
440 GMInput6:
441         Input $LR6;
442         if ($LR6 < 1 || $LR6 > 40) goto GMInput6;
443         if ($LR6 == $LR1) goto GMInput6;
444         if ($LR6 == $LR2) goto GMInput6;
445         if ($LR6 == $LR3) goto GMInput6;
446         if ($LR6 == $LR4) goto GMInput6;
447         if ($LR6 == $LR5) goto GMInput6;
448         mes $LR6;
449         next;
450         mes "[Lottery]";
451         mes "Lottery rigged for next draw.";
452         set $L_Rigged,1;
453         close;
454 }