/
eden_iro.txt
1323 lines (1271 loc) · 44.4 KB
/
eden_iro.txt
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
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
//===== rAthena Script =======================================
//= Eden iRO NPCs
//===== By: ==================================================
//= -SkittleNugget-
//===== Current Version: =====================================
//= 1.4
//===== Compatible With: =====================================
//= rAthena Project
//===== Description: =========================================
//= Eden scripts custom to iRO (disabled by default).
//= You may need iRO's data.grf to view some of the items.
//===== Additional Comments: =================================
//= 1.0 First version.
//= 1.1 Edited and added more NPCs, lots of placeholders. [Euphy]
//= 1.2 Added VIP NPCs and features. [Euphy]
//= 1.3 Added Mail Annex Station scripts, commented out. [Euphy]
//= 1.4 Added Merry Badger. [Euphy/-SkittleNugget-]
//============================================================
// Acolyte Warper (part of other/acolyte_warp.txt)
//============================================================
moc_para01,14,32,5 script Aperture#acolytewarp 90,{
mes "[Aperture]";
mes "Hello there, adventurer.";
mes "I've been studying magic from all over Midgard to upgrade what I believe to be one of the greatest skills available to the acolyte class.";
next;
if (is_function("VIP_iRO_Acolyte"))
callfunc "VIP_iRO_Acolyte","[Aperture]","Prontera";
mes "[Aperture]";
mes "I am the one and only Acolyte that has attained the Level 10 Warp Portal skill!";
emotion ET_THINK, playerattached();
next;
mes "[Aperture]";
mes "That's right! And...";
mes "I promise you that I don't forget locations that I have already memorized.";
mes "One day I will level up my skills to warp to wherever I please~";
next;
mes "[Aperture]";
mes "I am willing to warp you to the many locations that I have memorized for a small fee.";
mes "Would you like to use this service?";
next;
switch(select("Yes:No")) {
case 1:
mes "[Aperture]";
mes "Where would you like to go to?";
mes "I wish you goodluck on your journey.";
next;
setarray .@towns$[0], "Prontera", "Izlude", "Geffen", "Payon", "Morocc", "Alberta", "Al De Baran", "Comodo", "Umbala", "Juno", "Einbroch", "Lighthalzen", "Hugel", "Rachel";
setarray .@cost[0], 600, 600, 1200, 1200, 1200, 1800, 2200, 2200, 2200, 1800, 2200, 2200, 2200, 2200;
set .@size, getarraysize(.@towns$);
for(set .@i,0; .@i<.@size; set .@i,.@i+1)
set .@menu$, .@menu$+.@towns$[.@i]+" -> "+.@cost[.@i]+"z:";
set .@i, select(.@menu$+"Cancel")-1;
if (.@i == .@size) {
mes "[Aperture]";
mes "Come back when you need a warp.";
close;
}
if (Zeny < .@cost[.@i]) {
mes "[Aperture]";
mes "I'm sorry, but you don't have";
mes "enough zeny for the Teleport";
mes "Service. The fee to teleport";
mes "to "+.@towns$[.@i]+" is "+.@cost[.@i]+" zeny.";
close;
}
specialeffect2 EF_READYPORTAL;
specialeffect2 EF_TELEPORTATION;
specialeffect2 EF_PORTAL;
next;
set Zeny, Zeny - .@cost[.@i];
switch(.@i) {
case 0: warp "prontera",116,72; break;
case 1: warp "izlude",128,98; break;
case 2: warp "geffen",120,39; break;
case 3: warp "payon",161,58; break;
case 4: warp "morocc",156,46; break;
case 5: warp "alberta",117,56; break;
case 6: warp "aldebaran",168,112; break;
case 7: warp "comodo",209,143; break;
case 8: warp "umbala",100,154; break;
case 9: warp "yuno",158,125; break;
case 10: warp "einbroch",67,195; break;
case 11: warp "lighthalzen",159,90; break;
case 12: warp "hugel",98,150; break;
case 13: warp "rachel",119,135; break;
}
close;
case 2:
mes "[Aperture]";
mes "Come back when you need a warp.";
close;
}
}
function script VIP_iRO_Acolyte {
if (!vip_status(VIP_STATUS_ACTIVE)) {
mes getarg(0);
mes "But, my full powers are only available to those who have are VIPs.";
mes "I can still offer you a warp to "+getarg(1)+" though.";
next;
switch(select(getarg(0)+" -> 1800z:Cancel")) {
case 1:
if (Zeny < 1800) {
mes getarg(0);
mes "I'm sorry, but you don't have";
mes "enough zeny for the Teleport";
mes "Service. The fee to teleport";
mes "to "+getarg(1)+" is 1,800 zeny.";
close;
}
specialeffect2 EF_READYPORTAL;
specialeffect2 EF_TELEPORTATION;
specialeffect2 EF_PORTAL;
next;
set Zeny, Zeny - 1800;
if (getarg(1) == "Juno")
warp "yuno",158,125;
else
warp "prontera",116,72;
close;
case 2:
close;
}
}
return;
}
// Primo d'Buffer, VIP stat bonuses
//============================================================
moc_para01,26,15,3 script Primo d'Buffer 790,{
mes "[Primo d'Buffer]";
mes "Hello adventurer, you look like you are itching to get out there and save the world!";
if (!vip_status(VIP_STATUS_ACTIVE)) {
mes "I can also tell that you haven't been blessed with '^6666ffVIP Status^000000'.";
next;
mes "[Primo d'Buffer]";
mes "My orders are to help out any Adventurer marked as VIP with special Buffs!";
mes "Currently I will give you ^ff0000+7 to all of your Stats for 30 minutes^000000 if you are VIP.";
next;
mes "[Primo d'Buffer]";
mes "If you would like to be VIP, you can use WarpPortal to ^FF8C42Power-UP^000000 your game account with VIP Status. Of course there are many other advantages to being VIP, like higher EXP and Drop Rates, more Storage, and special buff NPCs like me!";
mes "Happy Journeys!";
close;
}
mes "I can also tell that you have been blessed with '^007FFFVIP Status^000000'.";
next;
mes "[Primo d'Buffer]";
mes "That is awesome!";
mes "Here is +7 to all your stats for 30 minutes to help you on your journey. Just come back when you need to refill your stats!";
close2;
sc_start SC_FOOD_STR_CASH,1200000,7;
sc_start SC_FOOD_AGI_CASH,1200000,7;
sc_start SC_FOOD_VIT_CASH,1200000,7;
sc_start SC_FOOD_DEX_CASH,1200000,7;
sc_start SC_FOOD_INT_CASH,1200000,7;
sc_start SC_FOOD_LUK_CASH,1200000,7;
end;
}
// Clearchus, VIP mercenary rentals
//============================================================
moc_para01,53,30,3 script Clearchus 470,{
if (checkquest(62238,PLAYTIME) > -1 && checkquest(62238,PLAYTIME) < 2) {
mes "You must wait for the timer to finish before you can hire a new mercenary.";
close;
}
mes "[Clearchus]";
mes "Greetings young adventurer! I represent the Midgardian Mercenary Mission.";
next;
mes "[Clearchus]";
mes "We provide training to aspiring mercenaries by pairing them with adventurers such as yourself.";
next;
mes "[Clearchus]";
mes "Our organization is 10,000 strong! Now let me see if you are registered for this service.";
next;
if (!vip_status(VIP_STATUS_ACTIVE)) {
mes "[Clearchus]";
mes "Unfortunately it appears that you are not VIP, please get VIP so that you can use this service. You can get a temporary VIP access by talking to Gramps at the Eden Group Headquarters.";
next;
mes "[Clearchus]";
mes "Vip is a very useful tool for adventurers to have, giving access to extra Kafra Services, discounted warps, exclusive content, and use of Primo d'Buffer. If an adventurer has full vip they even get an Exp, Drops, and storage boost!";
close;
}
mes "[Clearchus]";
mes "Your name is on the list.";
next;
mes "[Clearchus]";
mes "What kind of skill set are you looking for in a mercenary?";
next;
switch(select("Swordsman:Archer:Lancer")) {
case 1:
set .@base_id,12163; //SwordMercenary_Scroll
break;
case 2:
set .@base_id,12153; //Bow_Mercenary_Scroll
break;
case 3:
set .@base_id,12173; //SpearMercenary_Scroll
break;
}
if (BaseLevel < 11) set .@i,0;
else if (BaseLevel < 21) set .@i,1;
else if (BaseLevel < 31) set .@i,2;
else if (BaseLevel < 41) set .@i,3;
else if (BaseLevel < 51) set .@i,4;
else if (BaseLevel < 61) set .@i,5;
else if (BaseLevel < 71) set .@i,6;
else if (BaseLevel < 81) set .@i,7;
else if (BaseLevel < 91) set .@i,8;
else set .@i,9;
mes "[Clearchus]";
mes "I have just the mercenary in mind!";
next;
mes "[Clearchus]";
mes "Have fun now, ya hear?";
getitem .@base_id + .@i,1;
if (isbegin_quest(62238) > 0)
erasequest 62238;
setquest 62238;
close;
}
// Carrot & Red Potion Traders
//============================================================
moc_para01,166,51,3 script Phelix#edco 85,{
mes "[Phelix]";
mes "Oh... I see from that look that you want me to work and give you Meat and Carrots...";
mes "Well my friend Izaac here has some Red Potions with him, but I only have some Carrots.";
mes "So I can trade you ^0000CC1 Carrot for 3 Jellopy^000000.";
next;
mes "[Phelix]";
mes "If you're interested in my offer, get me the Jellopies I mentioned.";
next;
select("Carrots please.");
mes "[Phelix]";
mes "Alright, let's see what ya got...";
next;
if (countitem(909) < 3) {
mes "[Phelix]";
mes "Hmm, look dude, I said 3 Jellopies for 1 Carrot... got it?";
close;
}
mes "[Phelix]";
mes "Not too bad...";
mes "How many do you want?";
next;
switch(select("As many as I can get, please.:I want to choose.:Never mind, I like my Jellopy.")) {
case 1:
set .@amount, countitem(909) / 3;
break;
case 2:
set .@available, countitem(909) / 3;
mes "[Phelix]";
mes "How many do you want?";
mes "^ff0000You have enough for up to " + .@available + " Carrots.^000000";
input .@input;
next;
if (.@input < 1 || .@input > 10000) {
mes "[Phelix]";
mes "Don't want to deal? Fair enough...";
close;
}
if (.@input > .@available) {
mes "[Phelix]";
mes "Dude, I said for every 3 Jellopy I'll give you 1 Carrot.";
close;
}
set .@amount, .@input;
break;
case 3:
mes "[Phelix]";
mes "Don't bother me if you don't want to trade.";
close;
}
if (checkweight(515,.@amount) == 0) {
mes "[Phelix]";
mes "You are overweight.";
close;
}
mes "[Phelix]";
mes "There you go~! As I promised.";
mes "Try not to stuff yer face.";
delitem 909,.@amount*3; //Jellopy
getitem 515,.@amount; //Carrot
end;
}
moc_para01,163,51,7 script Izaac#edco 86,{
mes "[Izaac]";
mes "Good day!";
mes "Have you collected any weird stuff from monsters?";
mes "I want things like Jellopy, Fluff, Shell, Feather of Birds, Tree Root, Worm Peelings, and Chrysalis.";
mes "I need those for something.";
next;
mes "[Izaac]";
mes "Of course, I won't ask you to give me that stuff for free. What if I traded the following for ^CC00001 Red Potion^000000:";
mes "^00CC005 Shell^000000";
mes "^0000CC10 Fluff^000000";
mes "^00CC0010 Jellopy^000000";
mes "^0000CC6 Tree Root^000000";
mes "^00CC001 Worm Peeling^000000";
mes "^0000CC7 Feather of Birds^000000";
mes "^00CC006 Chrysalis^000000";
next;
switch(select("Sure!:I think it's a rip-off!:No, thanks.")) {
case 1:
mes "[Izaac]";
mes "So which items do";
mes "you want to bring me?";
next;
setarray .@items[0], 935, 914, 909, 902, 955, 916, 915;
setarray .@count[0], 5, 10, 10, 6, 1, 7, 6;
set .@size, getarraysize(.@items);
for(set .@i,0; .@i<.@size; set .@i,.@i+1)
set .@menu$, .@menu$+getitemname(.@items[.@i])+":";
set .@select, select(.@menu$+"Cancel")-1;
if (.@select == .@size) {
mes "[Izaac]";
mes "Sure~";
mes "No problem.";
close;
}
set .@item, .@items[.@select];
set .@item$, getitemname(.@item);
set .@price, .@count[.@select];
if (countitem(.@item) < .@price) {
mes "[Izaac]";
mes "Hey, where's all";
mes "that "+.@item$+" that";
mes "you promised me?";
mes "Give me "+.@item$+"!";
close;
}
mes "[Izaac]";
mes "Okay, let me check";
mes "how much "+.@item$;
mes "you have on you.";
mes "Hmm...";
next;
set .@amount, countitem(.@item) / .@price;
set .@trade_amount, .@amount * .@price;
mes "[Izaac]";
mes "You have";
mes "a total of "+countitem(.@item)+" "+.@item$+"...";
mes "For all those, I can give you";
mes "a total of "+.@amount+" Red Potion(s).";
next;
mes "[Izaac]";
mes "What do you say?";
mes "Do we have a deal?";
next;
if(select("Deal.:No deal.") == 2) {
mes "[Izaac]";
mes "Huh~";
mes "Alright.";
mes "Though are";
mes .@item$ + " more useful";
mes "to an adventurer like you?";
close;
}
if (checkweight(501,.@amount) == 0) { //custom check
mes "[Izaac]";
mes "You are overweight.";
close;
}
delitem .@item,.@trade_amount;
getitem 501,.@amount; //Red_Potion
mes "[Izaac]";
mes "There you go!";
mes "Check how many "+.@item$;
mes "I've given you, it should be good.";
mes "Thanks, that was a good deal~";
close;
case 2:
mes "[Izaac]";
mes "A rip-off...?";
mes "If you check the market value";
mes "of the items being traded, I'm actually the one getting";
mes "ripped off here.";
close;
case 3:
mes "[Izaac]";
mes "Alright, No problem.";
mes "But come back to me if you change your mind.";
close;
}
}
// Safe to 7 Certificate Exchanger
//============================================================
moc_para01,50,39,4 script Eve Natalia 882,{
mes "[Eve Natalia]";
mes "So I'm in town for a while to see if I can strike up some commerce with MVP hunters!";
mes "I'm willing to take some MVP gear and give you these upgrade Certificates I have in exchange;";
mes "if things go well enough I'll open up further business opportunities!";
next;
mes "[Eve Natalia]";
mes "So do you have any of the gears I'm looking for to get some random Safe to 7 Certificates?";
next;
switch(select("What gear?:Yes I am!:Never mind.")) {
case 1:
mes "[Eve Natalia]";
mes "Nidhoggur's Shadow Garb 4 Random Safe to 7 Certificates";
mes "Valkyrja's Shield 4 Random Safe to 7 Certificates";
mes "Valkyrian Armor 5 Random Safe to 7 Certificates";
mes "Diabolus Robe 5 Random Safe to 7 Certificates";
mes "Diabolus Armor 2 Random Safe to 7 Certificates";
mes "Diabolus Boots 2 Random Safe to 7 Certificates";
mes "Diabolus Manteau 4 Random Safe to 7 Certificates";
mes "Twin Edge of Naght Sieger Blue 2 Random Safe to 7 Certificates";
mes "Twin Edge of Naght Sieger Red 2 Random Safe to 7 Certificates";
close;
case 2:
mes "[Eve Natalia]";
mes "I'm going to ask you which piece of gear you want to trade in, please verify that the 1st one in your inventory is one you want to give up.";
mes "^CC0000So if it is carded, upgraded, enchanted etc, you should put it in storage before we continue.^000000";
next;
set .@i, select("Wait a minute:Nidhoggur's Shadow Garb 4:Valkyrja's Shield 4:Valkyrian Armor 5:Diabolus Robe 5:Diabolus Armor 2:Diabolus Boots 2:Diabolus Manteau 4:Twin Edge of Naght Sieger Blue 2:Twin Edge of Naght Sieger Red 2")-2;
if (.@i == -1)
break;
setarray .@items[0], 2554, 2115, 2357, 2374, 2375, 2433, 2537, 13412, 13413;
setarray .@tickets[0], 4, 4, 5, 5, 2, 2, 4, 2, 2;
set .@item, .@items[.@i];
set .@amount, .@tickets[.@i];
mes "[Eve Natalia]";
mes "I see you have "+countitem(.@item)+" "+getitemname(.@item)+".";
mes "So do you want to trade the 1st one in your inventory for ^00CC00"+.@amount+" Random Safe to 7 Certificates^000000?";
mes "Tell me '1' if you do, or '0' to cancel.";
next;
input .@input;
if (.@input < 0 || .@input > 1) {
mes "[Eve Natalia]";
mes "It is a 0 or 1, it can't be that difficult.";
close;
} else if (.@input == 0) {
mes "[Eve Natalia]";
mes "It's best to be sure before trading, have a good day.";
close;
}
if (countitem(.@item) == 0) {
mes "[Eve Natalia]";
mes "You don't even have 1... stop wasting my time.";
close;
}
mes "[Eve Natalia]";
mes "Oh perfect, you get ^CC0000" + .@amount + "^000000 Safe to 7 Certificates!";
delitem .@item,1;
for(set .@i,0; .@i<.@amount; set .@i,.@i+1) {
// Note: iRO lists item 6235 as "Safe to 7 Headgear Certificate", but it's Guarantee_Armor_6Up in our database.
if (rand(2))
getitem 6230,1; //Guarantee_Weapon_7Up
else
getitem 6234,1; //Guarantee_Armor_7Up
}
close;
case 3:
break;
}
mes "[Eve Natalia]";
mes "Fair enough, if you have business with me in the future don't be shy!";
close;
}
// Bubble Gum & Battle Manual Exchanger
//============================================================
moc_para01,48,184,2 script Gum & Manual Exchanger 562,{
if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
mes "You're carrying too many items right now.";
close;
}
mes "[Trader Machine]";
mes "Insert Bubble Gums and/or Battle Manuals to trade for higher efficiency Gums and Manuals.";
next;
mes "[Trader Machine]";
mes "Exchange rate:";
mes "2 Bubble Gum -> 1 HE Bubble Gum";
mes "2 Battle Manual -> 1 HE Battle Manual";
mes "4 HE Battle Manual -> 1 Battle Manual X3";
mes "3 Thick Battle Manual -> 2 Battle Manual X3";
mes "What would you like to exchange for?";
next;
switch(select("HE Bubble Gum:HE Battle Manual:1 Battle Manual X3:2 Battle Manual X3:1 Costume Corsair:Nothing")) {
case 1:
callsub L_Exchange,12210,2,12412,1;
break;
case 2:
callsub L_Exchange,12208,2,12411,1;
break;
case 3:
callsub L_Exchange,12411,4,14545,1;
break;
case 4:
callsub L_Exchange,12312,3,14545,2;
break;
case 5:
mes "[Trader Machine]";
mes "I can give you 1 Battle Manual X3 for 1 Costume Corsair.";
next;
if (countitem(19619) == 0) {
mes "[Trader Machine]";
mes "You don't have a Costume Corsair hat to make that trade.";
close;
}
next;
if(select("Yes, give it to me!:No, wait not yet.") == 2)
close;
// Unofficial dialogue.
mes "[Trader Machine]";
mes "You place the required items into the machine...";
next;
mes "[Trader Machine]";
mes "The Machine has given you an item in return!";
delitem 19619,1; //C_Corsair
getitem 14545,1; //Battle_Manual_X3
close;
case 6:
close;
}
//callsub L_Exchange,<Insert Item>,<Amount>,<Return Item>,<Amount>
L_Exchange:
mes "[Trader Machine]";
mes "How many "+getitemname(getarg(2))+" do you want?";
mes "I can give you up to 60.";
mes "Type 0 to cancel.";
next;
input .@amount;
if (.@amount == 0) {
mes "[Trader Machine]";
mes "Cancelled.";
close;
} else if (.@amount < 0 || .@amount > 60) {
mes "[Trader Machine]";
mes "I said only 60 max.";
close;
}
mes "[Trader Machine]";
mes "That's a total of "+.@amount+" "+getitemname(getarg(2))+".";
mes "Is this correct?";
next;
if(select("Yes, give them to me!:No, wait not yet.") == 2)
close;
set .@cost, getarg(1) * .@amount;
set .@total_amount, getarg(3) * .@amount;
if (countitem(getarg(0)) < .@cost) {
mes "[Trader Machine]";
mes "You don't have enough "+getitemname(getarg(0))+" to make that trade.";
close;
}
delitem getarg(0),.@cost;
getitem getarg(2),.@total_amount;
close;
}
// Merry Badger
//============================================================
moc_para01,13,22,4 script Merry Badger#xch 882,{
disable_items;
mes "[Merry Badger]";
mes "Hello there! I'm Merry Badger and I was hired to exchange the ^00CC00Eden Merit Badges^000000!";
next;
mes "[Merry Badger]";
mes "I can take your Merit Badges and give you some useful stuff, or I can take some of your stuff and give you some Eden Merit Badges.";
mes "As I get more authorization I can offer more things to trade with you, so definitely keep me in mind when visiting the Eden Group.";
next;
// switch( select( "Redeem Badges", "Trade in FOR badges", "Exchange Rates", "15 Job Manuals - 1 JM Box", "Sky Fortress Tickets", "Weekly Special" ) ) {// Sky Fortress Tickets meaningless without the instance
switch( select( "Redeem Badges", "Trade in FOR badges", "Exchange Rates", "15 Job Manuals - 1 JM Box", "", "Weekly Special" ) ) {
case 1:
setarray .@menu_list$[0],
"4 EMB for 10 KVM Badge",
"4 EMB for 10 Bravery Medals",
"4 EMB for 10 Valor Medals",
"8 EMB for 1 Reset Stone",
"5 EMB for Battle Manual Buff",
"5 EMB for Job Battle Manual Buff",
"10 EMB for HE Battle Manual Buff",
"20 EMB for 3X Battle Manual Buff",
"5 EMB for Bubblegum Buff",
"10 EMB for HE Bubblegum Buff",
"", // "5 EMB for Miracle Buff" (item doesn't exist in db)
"1 EMB for Yggdrasil Leaf",
"", // "5 EMB for Rental Wing of Beelzebub" (item doesn't exist in db)
"5 EMB for Rental Halter Lead",
"5 EMB for 20 Blue Herbs",
"Token of Siegfried",
"Nothing Now";
.@menu$ = implode( .@menu_list$, ":" );
while(1) {
mes "[Merry Badger]";
mes "Sure thing, I have several options currently for your Badges!";
next;
switch( select(.@menu$) ) {
case 1:// "4 EMB for 10 KVM Badge"
callsub L_Exchange,4,6376,10;// KVM_Badge
break;
case 2:// "4 EMB for 10 Bravery Medals"
callsub L_Exchange,4,7828,10;// BF_Badge1
break;
case 3:// "4 EMB for 10 Valor Medals"
callsub L_Exchange,4,7829,10;// BF_Badge2
break;
case 4:// "8 EMB for 1 Reset Stone"
callsub L_Exchange,8,6320,1;// Premium_Reset_Stone
break;
case 5:// "5 EMB for Battle Manual Buff"
callsub L_Exchange,5,12208,1;// Battle_Manual
break;
case 6:// "5 EMB for Job Battle Manual Buff"
callsub L_Exchange,5,14592,1;// Job_Manual50
break;
case 7:// "10 EMB for HE Battle Manual Buff"
callsub L_Exchange,10,12411,1;// HE_Battle_Manual
break;
case 8:// "20 EMB for 3X Battle Manual Buff"
callsub L_Exchange,20,14545,1;// Battle_Manual_X3
break;
case 9:// "5 EMB for Bubblegum Buff"
callsub L_Exchange,5,12210,1;// Bubble_Gum
break;
case 10:// "10 EMB for HE Bubblegum Buff"
callsub L_Exchange,10,12412,1;// HE_Bubble_Gum
break;
case 11:// "5 EMB for Miracle Buff"
.@item_id = 22819;
if (countitem(6495) < 5) {
mes "[Merry Badger]";
mes "You don't have enough ^00CC00Eden Merit Badges^000000. Let's start over!";
break;
}
mes "[Merry Badger]";
mes "Ok, I can give you ^ff0000" + getitemname(.@item_id) + "^000000 for ^0066CC5 of your Eden Merit Badge(s)^000000.";
mes "Do you want to?";
next;
if (select("Yes", "No") == 2) {
mes "[Merry Badger]";
mes "I understand, let's see if you'd like something different!";
break;
}
mes "[Merry Badger]";
mes "There you go! What else would you like?";
delitem 6495, 5;// Para_Logro_Badge
consumeitem .@item_id;
break;
case 12:// "1 EMB for Yggdrasil Leaf"
callsub L_Exchange,1,610,1;// Leaf_Of_Yggdrasil
break;
case 13:// "5 EMB for Rental Wing of Beelzebub"
.@item_id = 14645;
if (countitem(6495) < 5) {
mes "[Merry Badger]";
mes "You don't have enough ^00CC00Eden Merit Badges^000000. Let's start over!";
break;
}
mes "[Merry Badger]";
mes "Ok, I can give you ^ff0000" + getitemname(.@item_id) + "^000000 for ^0066CC5 of your Eden Merit Badge(s)^000000.";
mes "Do you want to?";
next;
if (select("Yes", "No") == 2) {
mes "[Merry Badger]";
mes "I understand, let's see if you'd like something different!";
break;
}
mes "[Merry Badger]";
mes "There you go! What else would you like?";
delitem 6495, 5;// Para_Logro_Badge
rentitem .@item_id, 604800; // 7 days
break;
case 14:// "5 EMB for Rental Halter Lead"
callsub L_Exchange,5,17162,1;// Boarding_Halter_Box7
break;
case 15:// "5 EMB for 20 Blue Herbs"
callsub L_Exchange,5,510,20;// Blue_Herb
break;
case 16:// Token of Siegfried
if (vip_status(VIP_STATUS_ACTIVE) == false) {
mes "[Merry Badger]";
mes "VIP Services offers those to any user with VIP!!";
close;
}
// custom from here
.@date = gettime(DT_YYYYMMDD);
if (.@date <= eden_iro_token_date) {
mes "[Merry Badger]";
mes "You already got your Token today!";
close;
}
mes "[Merry Badger]";
mes "There you go! What else would you like?";
eden_iro_token_date = .@date;
getitem 7621,10;// Token_Of_Siegfried
close;
case 17:// Nothing Now
mes "[Merry Badger]";
mes "Wonderful!";
mes "I'll be here if you ever want to exchange for Eden Merit Badges!";
close;
}
next;
}
case 2:
mes "[Merry Badger]";
mes "I have a limited selection as of right now, but here is what I can offer to get 1 Eden Merit Badge!";
next;
switch( select( "Etc Items", "Equipments", "Cancel" ) ) {
case 1:
while(1) {
if (select( "5x Old Purple Box", "Nothing" ) == 2) {
mes "[Merry Badger]";
mes "Wonderful!";
mes "I'll be here if you ever want to exchange for Eden Merit Badges!";
close;
}
while(1) {
if (countitem(617) < 5) {
mes "[Merry Badger]";
mes "You don't have enough of that to get 1 Eden Merit Badge. Lets start over!";
break;
}
mes "[Merry Badger]";
mes "Ok, I can give you ^CC00001 Eden Merit Badge^000000 for ^0000CC5 of your Old Purple Boxes^000000. Do you want to?";
next;
if (select( "Yes", "No" ) == 2) {
mes "[Merry Badger]";
mes "I understand, lets see if you'd like something different!";
break;
}
else {
mes "[Merry Badger]";
mes "There you go! What else would you like?";
delitem 617,5;// Old_Violet_Box
getitem 6495,1;// Para_Logro_Badge
next;
}
}
next;
}
case 2:
while(1) {
mes "[Merry Badger]";
mes "I will take the top item in your inventory! MAKE SURE YOU DONT HAVE ANY OF THESE ITEMS THAT YOU DONT WANT TO EXCHANGE.";
next;
switch( select( "Giant Faceworm Snake Skin", "Giant Faceworm Snake Skin [1]", "Nothing" ) ) {
case 1:
.@item_req = 20717;// FaceWorm_Skin
.@item_name$ = "Giant Faceworm Snake Skin";
.@amount_reward = 5;
break;
case 2:
.@item_req = 20718;// FaceWorm_Skin_
.@item_name$ = "Giant Faceworm Snake Skin [1]";
.@amount_reward = 7;
break;
case 3:
mes "[Merry Badger]";
mes "Wonderful!";
mes "I'll be here if you ever want to exchange for Eden Merit Badges!";
next;
mes "[Merry Badger]";
mes "Well that is OK, if you want to see what I offer just ask!";
close;
}
while(1) {
if (countitem(.@item_req) < 1) {
mes "[Merry Badger]";
mes "You don't have enough of that to get 1 Eden Merit Badge. Lets start over!";
break;
}
mes "[Merry Badger]";
mes "Ok, I can give you ^ff0000" + .@amount_reward + " Eden Merit Badge^000000 for ^00ff00" + .@item_name$ + "^000000. Do you want to?";
next;
if (select( "Yes", "No" ) == 2) {
mes "[Merry Badger]";
mes "I understand, lets see if you'd like something different!";
break;
}
delitem .@item_req, 1;
getitem 6495, .@amount_reward;// Para_Logro_Badge
mes "[Merry Badger]";
mes "There you go! What else do you like?";
next;
}
next;
}
case 3:
mes "[Merry Badger]";
mes "Well that is OK, if you want to see what I offer just ask!";
close;
}
case 3:
mes "[Merry Badger]";
mes "This is what I'll give you for your ^00CC00Eden Merit Badges^000000!";
mes "Ok, I have a special for 3 Merit Badge. This week I'll give you ^00CC0040 Light Granule^000000, ^00CC0040 Gun Powder^000000, ^0000CC3 Izidor^000000, ^00CC0010 Prickly Fruit^000000, ^0000CC1 Mandragora Flowerpot^000000, and ^00CC003 Elder Branch^000000.";
mes "^00CC002 Eden Merit Badges^000000 = ^0000CC10x KVM Badge^000000";
mes "^00CC002 Eden Merit Badges^000000 = ^0000CC10x Bravery Medals^000000";
mes "^00CC002 Eden Merit Badges^000000 = ^0000CC10x Valor Medals^000000";
mes "^00CC005 Eden Merit Badges^000000 = ^0000CC5x Medium Life Potion^000000";
mes "^00CC005 Eden Merit Badges^000000 = ^0000CC5x Life Insurance^000000";
mes "^00CC005 Eden Merit Badges^000000 = ^0000CC5x Token Of Siegfried^000000";
mes "^00CC007 Eden Merit Badges^000000 = ^0000CC1x Job Battle Manual^000000";
mes "^00CC008 Eden Merit Badges^000000 = ^0000CC1x Reset Stone^000000";
next;
mes "[Merry Badger]";
mes "This is what you can give me to get ^00CC001 Eden Merit Badge^000000!";
mes "^0000CC5x Old Purple Box^000000";
close;
case 4:
mes "[Merry Badger]";
mes "I was strong armed into giving this, but you are worth it!";
mes "Do you want to exchange 15 Job Manuals to get 1 Tradable box of 10 Job Manuals?";
mes "I know 15 does not equal 10, but boxes are expensive you know.";
next;
if (countitem(14592) < 15) {
mes "[Merry Badger]";
mes "You don't have 15 or more Job Manuals to get 1 Box!";
close;
}
// custom dialogue below
if (select("Yes", "No") == 2) {
mes "[Merry Badger]";
mes "Wonderful!";
mes "I'll be here if you ever want to exchange for Eden Merit Badges!";
close;
}
mes "[Merry Badger]";
mes "Wonderful, what else do you want?";
delitem 14592,15; //Job_Manual50
getitem 13990,1; //Job_Manual50_Box
close;
case 5:
mes "[Merry Badger]";
mes "I don't really understand why but I have this stack of coupons to sell.";
mes "Do you want to exchange 25 Eden Merit Badges for 1 dungeon ticket? If you are VIP your ticket will last much longer!";
next;
if (select( "Yes", "No" ) == 2) {
mes "[Merry Badger]";
mes "I understand, lets see if you'd like something different!";
close;
}
if (countitem(6495) < 25) {
mes "[Merry Badger]";
mes "You don't have enough badges!";
close;
}
delitem 6495,25;
if (vip_status(VIP_STATUS_ACTIVE))
getitem 17570,1;// Sky Fortress Ticket 3 Hour Box
else
getitem 17569,1;// Sky Fortress Ticket 1 Hour Box
mes "[Merry Badger]";
mes "There you go! What else would you like?";
close;
case 6:
while(1) {
mes "[Merry Badger]";
mes "The Weekly special is ....";
next;
mes "[Merry Badger]";
mes "Ok, I have a special for 3 Merit Badge or 1,000,000 zeny. This week I'll give you ^00CC0040 Light Granule^000000, 40 Gun Powder^000000, ^0000CC3 Izidor^000000";
mes "^00CC0010 Prickly Fruit^000000, ^0000CC1 Mandragora Flowerpot^000000, and ^00CC003 Elder Branch^000000.";
next;
switch( select( "Badges", "Zeny", "No" ) ) {
case 1:
if (countitem(6495) < 3) {
mes "[Merry Badger]";
mes "You don't have enough ^00CC00Eden Merit Badges^000000. Lets start over!";
next;
continue;
}
delitem 6495,3; //Para_Logro_Badge
break;
case 2:
if (Zeny < 1000000) {
mes "[Merry Badger]";
mes "You don't have enough ^00CC00Zeny^000000. Lets start over!";
next;
continue;
}
Zeny -= 1000000;
break;
case 3:
mes "[Merry Badger]";
mes "I understand, lets see if you'd like something different!";
close;
}
getitem 7938,40;// Light_Granule
getitem 6244,40;// Gun_Power
getitem 709,3; // Izidor
getitem 576,10; // Prickly_Fruit
getitem 6217,1; // Mandragora_Flowerpot
getitem 7939,3; // Elder_Branch
mes "[Merry Badger]";
mes "There you go! What else would you like?";
next;
}
}
end;
//callsub L_Exchange,<badge cost>,<item id>,<amount>;
L_Exchange:
if (countitem(6495) < getarg(0)) {
mes "[Merry Badger]";
mes "You don't have enough ^00CC00Eden Merit Badges^000000. Let's start over!";
return;
}
mes "[Merry Badger]";
mes sprintf("Ok, I can give you ^ff0000%s^000000 for ^0066CC%d of your Eden Merit Badge(s)^000000.",
callfunc("F_InsertPlural",getarg(2),getitemname(getarg(1))), getarg(0));
mes "Do you want to?";
next;
if (select("Yes", "No") == 2) {
mes "[Merry Badger]";
mes "I understand, let's see if you'd like something different!";
return;
}
mes "[Merry Badger]";
mes "There you go! What else would you like?";
delitem 6495, getarg(0); //Para_Logro_Badge
getitem getarg(1),getarg(2);
return;
}
// Kafra Stacker
//============================================================
moc_para01,41,169,2 script Kafra Stacker#eden 749,{
if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
mes "- Wait a moment! -";
mes "- Currently you're carrying -";
mes "- too much weight in items. -";
mes "- Please come back later -";
mes "- after you put some into Kafra storage. -";
close;
}
mes "[Toma]";
mes "I can take your non-stacking Kafra Consumables";
mes "and make them fit neatly into stacks!";
next;
mes "[Toma]";
mes "Please understand that I can";
mes "only stack 10 groups at a time";
mes "so keep talking to me until";
mes "you have 1 stack of each!";
next;
while(1) {
if(select("Do it!:Never mind.") == 2)
break;
// Something strange goes on here, haven't quite figured it out...
mes "[Toma]";
mes "Ten stack down!";
mes "Want to do another?";
next;
}
mes "[Toma]";
mes "Ok then, laterz.";
close;
}
// Code Redeemer
//============================================================
moc_para01,38,162,2 script Code the Redeemer#Give1 405,{
if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
mes "^0000ffHold it right there!";
mes "You're carrying too many items and don't have enough inventory space to receive any rewards. Please make more inventory space available and come back to take this challenge.^000000";
close;
}
mes "[Code the Redeemer]";
mes "Welcome, "+strcharinfo(0)+"!";
mes "I've been expecting you.";
next;
mes "[Code the Redeemer]";
mes "I am a distributor of all the";
mes "items that adventurers like";
mes "yourself purchase on websites";
mes "or receive as promotions.";
next;
mes "[Code the Redeemer]";
mes "^0000FFIf the list is empty,";
mes "that means that you have";
mes "not purchased, or inputted";
mes "your serial code from the purchasing website.^000000";
next;
// If you have a code redemption system, write your SQL queries here.
select("");
close;
}