summaryrefslogtreecommitdiff
path: root/npc/re/quests/eden/eden_iro.txt
blob: 2012571b54f09289051a24c77c5d0e7c7e442d53 (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
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
//================= Hercules Script =======================================
//=       _   _                     _
//=      | | | |                   | |
//=      | |_| | ___ _ __ ___ _   _| | ___  ___
//=      |  _  |/ _ \ '__/ __| | | | |/ _ \/ __|
//=      | | | |  __/ | | (__| |_| | |  __/\__ \
//=      \_| |_/\___|_|  \___|\__,_|_|\___||___/
//================= License ===============================================
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
//= Copyright (C) 2013-2020 Hercules Dev Team
//= Copyright (C) Frost
//= Copyright (C) Euphy
//= Copyright (C) -SkittleNugget-
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
//= the Free Software Foundation, either version 3 of the License, or
//= (at your option) any later version.
//=
//= This program is distributed in the hope that it will be useful,
//= but WITHOUT ANY WARRANTY; without even the implied warranty of
//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//= GNU General Public License for more details.
//=
//= You should have received a copy of the GNU General Public License
//= along with this program.  If not, see <http://www.gnu.org/licenses/>.
//=========================================================================
//= Eden iRO NPCs
//================= Description ===========================================
//= Eden scripts custom to iRO (disabled by default).
//= You may need iRO's data.grf to view some of the items.
//================= Current Version =======================================
//= 1.3
//=========================================================================

//== Acolyte Warper (part of other/acolyte_warp.txt) =======
moc_para01,14,32,5	script	Aperture#acolytewarp	4_F_01,{
	mes "[Aperture]";
	mes "Hello there, adventurer.";
	mes "I've been studying magic from all over Rune-Midgard to upgrade what I believe to be one of the greatest skills available to the acolyte class.";
	next;
	mes "[Aperture]";
	mes "I am the one and only Acolyte that has attained the Level 10 Warp Portal skill!";
	emotion e_dots,1;
	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", "Morroc", "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;

		.@size = getarraysize(.@towns$);
		for(.@i = 0; .@i<.@size; ++.@i)
			.@menu$ += .@towns$[.@i]+" -> "+.@cost[.@i]+"z:";
		.@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;
		}
		specialeffect(EF_READYPORTAL, AREA, playerattached());
		specialeffect(EF_TELEPORTATION, AREA, playerattached());
		specialeffect(EF_PORTAL, AREA, playerattached());
		next;
		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;
	}
}

//== Carrot & Red Potion Traders ===========================
moc_para01,166,51,3	script	Phelix#edco	4_M_03,{
	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(Jellopy) < 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:
		.@amount = countitem(Jellopy) / 3;
		break;
	case 2:
		.@available = countitem(Jellopy) / 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;
		}
		.@amount = .@input;
		break;
	case 3:
		mes "[Phelix]";
		mes "Don't bother me if you don't want to trade.";
		close;
	}
	if (checkweight(Carrot,.@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 Jellopy,.@amount*3;
	getitem Carrot,.@amount;
	end;
}

moc_para01,163,51,7	script	Izaac#edco	4_M_04,{
	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;

		.@size = getarraysize(.@items);
		for(.@i = 0; .@i<.@size; ++.@i)
			.@menu$ += getitemname(.@items[.@i])+":";
		.@select = select(.@menu$+"Cancel")-1;
		if (.@select == .@size) {
			mes "[Izaac]";
			mes "Sure~";
			mes "No problem.";
			close;
		}
		.@item = .@items[.@select];
		.@item$ = getitemname(.@item);
		.@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;
		.@amount = countitem(.@item) / .@price;
		.@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(Red_Potion,.@amount) == 0) { //custom check
			mes "[Izaac]";
			mes "You are overweight.";
			close;
		}
		delitem .@item,.@trade_amount;
		getitem Red_Potion,.@amount;
		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	4_F_SITDOWN,{
	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;
		.@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;

		.@item = .@items[.@i];
		.@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;
		}
		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(.@i = 0; .@i<.@amount; ++.@i) {
			// Note: iRO lists item 6235 as "Safe to 7 Headgear Certificate", but it's Guarantee_Armor_6Up in our database.
			if (rand(2))
				getitem Guarantee_Weapon_7Up,1;
			else
				getitem Guarantee_Armor_7Up,1;
		}
		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	2_DROP_MACHINE,{
	if (checkweight(Knife,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(C_Corsair) == 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 C_Corsair,1;
		getitem Battle_Manual_X3,1;
		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;
	}
	if (.@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;
	.@cost = getarg(1) * .@amount;
	.@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	4_F_SITDOWN,{
	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")) {
	case 1:
		while (true) {
			mes "[Merry Badger]";
			mes "Sure thing, I have several options currently for your badges!";
			next;
			switch(select("This week's Special", "2 EMB for 10 KVM Badge", "2 EMB for 10 Bravery Medals", "2 EMB for 10 Valor Medals", "5 EMB for 5 Medium Life Potion", "5 EMB for 5 Life Insurance", "5 EMB for 5 Token of Siegfried", "7 EMB for 1 Job Battle Manual", "8 EMB for 1 Reset Stone", "Nothing Now")){
			case 1:
				if (countitem(Para_Logro_Badge) < 3) {
					mes "[Merry Badger]";
					mes "You don't have enough ^00CC00Eden Merit Badges^000000. Let's start over!";
					next;
					continue;
				}
				mes "[Merry Badger]";
				mes "Ok, I have a special for 3 Merit Badges. This week I'll give you ^00CC0040 Light Granule^000000, ^0066CC40 Gun Powder^000000, ^00CC003 Izidor^000000, ^0066CC10 Prickly Fruit^000000, ^00CC001 Mandragora Flowerpot^000000, and ^0066CC3 Elder Branch^000000.";
				next;
				if (select("Yes", "No") != 1) {
					mes "[Merry Badger]";
					mes "I understand, let's see if you'd like something different!";
					next;
					continue;
				}
				if (countitem(Para_Logro_Badge) < 3) {
					mes "[Merry Badger]";
					mes "You don't have enough ^00CC00Eden Merit Badges^000000. Let's start over!";
					next;
					continue;
				}
				delitem Para_Logro_Badge,3; //Para_Logro_Badge
				getitem Light_Granule,40; //Light_Granule
				getitem Gun_Power,40; //Gun_Power
				getitem Izidor,3; //Izidor
				getitem Prickly_Fruit,10; //Prickly_Fruit
				getitem Mandragora_Flowerpot,1; //Mandragora_Flowerpot
				getitem Elder_Branch,3; //Elder_Branch
				mes "[Merry Badger]";
				mes "There you go! What else would you like?";
				break;
			case 2:
				callsub L_Exchange,2,KVM_Badge,10; //KVM_Badge
				break;
			case 3:
				callsub L_Exchange,2,BF_Badge1,10; //BF_Badge1
				break;
			case 4:
				callsub L_Exchange,2,BF_Badge2,10; //BF_Badge2
				break;
			case 5:
				callsub L_Exchange,5,Med_Life_Potion,5; //Med_Life_Potion
				break;
			case 6:
				callsub L_Exchange,5,Insurance,5; //Insurance
				break;
			case 7:
				callsub L_Exchange,5,Token_Of_Siegfried,5; //Token_Of_Siegfried
				break;
			case 8:
				callsub L_Exchange,7,Job_Manual50,1; //Job_Manual50
				break;
			case 9:
				callsub L_Exchange,8,Premium_Reset_Stone,1; //Premium_Reset_Stone
				break;
			case 10:
				mes "[Merry Badger]";
				mes "Wonderful!";
				mes "I'll be here if you ever want to exchange for Eden Merit Badges!";
				close;
			}
			next;
		}
		end;
	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;
		if (select("Etc Items", "Cancel") != 1) {
			mes "[Merry Badger]";
			mes "Well that is OK, if you want to see what I offer just ask!";
			close;
		}
		while (true) {
			if (select("5x Old Purple Box", "Nothing") != 1) {
				mes "[Merry Badger]";
				mes "Wonderful!";
				mes "I'll be here if you ever want to exchange for Eden Merit Badges!";
				close;
			}
			mes "[Merry Badger]";
			if (countitem(Old_Violet_Box) < 5) {
				mes "You don't have enough of that to get 1 Eden Merit Badge. Lets start over!";
			} else {
				mes "Wonderful, what else do you want?"; //custom dialogue
				delitem Old_Violet_Box,5; //Old_Violet_Box
				getitem Para_Logro_Badge,1; //Para_Logro_Badge
			}
			next;
		}
		end;
	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 Badges. This week I'll give you ^00CC0040 Light Granule^000000, ^0066CC40 Gun Powder^000000, ^00CC003 Izidor^000000, ^0066CC10 Prickly Fruit^000000, ^00CC001 Mandragora Flowerpot^000000, and ^0066CC3 Elder Branch^000000.";
		mes "^00CC002 Eden Merit Badges^000000 = ^0066CC10x KVM Badge^000000";
		mes "^00CC002 Eden Merit Badges^000000 = ^0066CC10x Bravery Medals^000000";
		mes "^00CC002 Eden Merit Badges^000000 = ^0066CC10x Valor Medals^000000";
		mes "^00CC005 Eden Merit Badges^000000 = ^0066CC5x Medium Life Potion^000000";
		mes "^00CC005 Eden Merit Badges^000000 = ^0066CC5x Life Insurance^000000";
		mes "^00CC005 Eden Merit Badges^000000 = ^0066CC5x Token Of Siegfried^000000";
		mes "^00CC007 Eden Merit Badges^000000 = ^0066CC1x Job Battle Manual^000000";
		mes "^00CC008 Eden Merit Badges^000000 = ^0066CC1x Reset Stone^000000";
		next;
		mes "[Merry Badger]";
		mes "This is what you can give me to get ^00CC001 Eden Merit Badge^000000!";
		mes "^0066CC5x 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;

		//custom dialogue below
		if (select("Yes", "No") != 1) {
			mes "[Merry Badger]";
			mes "Wonderful!";
			mes "I'll be here if you ever want to exchange for Eden Merit Badges!";
			close;
		}
		if (countitem(Job_Manual50) < 15) {
			mes "[Merry Badger]";
			mes "You don't have 15 or more Job Manuals to get 1 Box!";
			close;
		}
		mes "[Merry Badger]";
		mes "Wonderful, what else do you want?";
		delitem Job_Manual50,15; //Job_Manual50
		getitem Job_Manual50_Box,1; //Job_Manual50_Box
		close;
	}
	end;

//callsub L_Exchange,<badge cost>,<item id>,<amount>;
L_Exchange:
	mes "[Merry Badger]";
	mes "Ok, I can give you ^ff0000"+getitemname(getarg(1))+"^000000 for ^0066CC"+getarg(0)+" of your Eden Merit Badge(s)^000000.";
	mes "Do you want to?";
	next;
	if (select("Yes", "No") != 1) {
		mes "[Merry Badger]";
		mes "I understand, let's see if you'd like something different!";
		return;
	}
	if (countitem(Para_Logro_Badge) < getarg(0)) {
		mes "[Merry Badger]";
		mes "You don't have enough ^00CC00Eden Merit Badges^000000. Let's start over!";
		return;
	}
	mes "[Merry Badger]";
	mes "There you go! What else would you like?";
	delitem Para_Logro_Badge, getarg(0); //Para_Logro_Badge
	getitem getarg(1),getarg(2);
	return;
}

//== Kafra Stacker =========================================
moc_para01,41,169,2	script	Kafra Stacker#eden	4_M_ALCHE_B,{
	if (checkweight(Knife,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	4_M_YOUNGKNIGHT,{
	if (checkweight(Knife,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(PC_NAME)+"!";
	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;
}

//== Cash Shops ============================================
/* Due to the irregularity of iRO's databases, some of these sprites may not display properly. */
moc_para01,32,171,6	trader	Kafra Headgears#eden1	4_F_KAFRA3,{
OnInit:
	tradertype(NST_CASH);
	sellitem F_Robo_Eye_Box,500;
	sellitem F_Pecopeco_Hairband_Box,150;
	sellitem Yggdrasil_Crown_Box,300;
	sellitem F_Chick_Hat_Box,500;
	sellitem F_Flying_Angel_Box,1000;
	sellitem F_All_In_One_Ring_Box,400;
	sellitem F_Red_Glasses_Box,300;
}

moc_para01,35,174,2	trader	Kafra Dye Shop#dyes2	4_F_KAFRA4,{
OnInit:
	tradertype(NST_CASH);
	sellitem F_Clothing_Dye_Coupon,150;
}

moc_para01,37,170,2	trader	Kafra Consumables#eden3	4_F_KAFRA6,{
OnInit:
	tradertype(NST_CASH);
	sellitem Blue_Potion_Box,5;
	sellitem F_Neuralizer_Box,400;
	sellitem FPremium_Reset_Stone_Box,100;
	sellitem F_Abrasive_Box10,75;
	sellitem F_G_O_I_Box10,25;
	sellitem Greed_Scroll_Box_30,30;
	sellitem F_M_Life_Potion_Box,70;
	sellitem F_S_Life_Potion_Box,50;
	sellitem F_Regeneration_Box5,25;
	sellitem FS_Def_Potion_Box10,30;
	sellitem FB_Mdef_Potion_Box10,60;
	sellitem FS_Mdef_Potion_Box10,30;
	sellitem FB_Def_Potion_Box10,60;
	sellitem F_Blessing_10_Scroll_Box,40;
	sellitem F_Inc_Agi_10_Scroll_Box,40;
	sellitem F_Assumptio_5_Scroll_Box,40;
	sellitem F_Wind_Walk_10_Scroll_Box,40;
	sellitem F_Aspersio_5_Scroll_Box,40;
	sellitem F_Adrenaline_Scroll_Box,40;
	sellitem F_Str_Dish_Box,100;
	sellitem F_Agi_Dish_Box,100;
	sellitem F_Int_Dish_Box,100;
	sellitem F_Dex_Dish_Box,100;
	sellitem F_Luk_Dish_Box,100;
	sellitem F_Vit_Dish_Box,100;
	sellitem Adventurer_Pack,1500;
}

moc_para01,32,174,2	trader	Kafra Rental Items#eden	4_F_KAFRA7,{
OnInit:
	tradertype(NST_CASH);
	sellitem B_Halter_Box_30Days,150;
	sellitem Boarding_Halter_Box,50;
	sellitem F_Apple_Of_Archer_Box,250;
	sellitem F_Asura_Box,250;
	sellitem Rudra_Bow_Box,250;
	sellitem F_Brooch_Box,250;
	sellitem F_Bunny_Band_Box,250;
	sellitem F_Combat_Knife_Box,250;
	sellitem F_Counter_Dagger_Box,250;
	sellitem F_Critical_Ring_Box,250;
	sellitem Cutlus_Box,250;
	sellitem F_Diary_Of_Great_Sage,250;
	sellitem F_Earring_Box,250;
	sellitem F_Elven_Ears_Box,250;
	sellitem Executioner_Box_,250;
	sellitem F_Glove_Box,250;
	sellitem F_Right_Epsilon_Box,250;
	sellitem Moonlight_Dagger_Box,250;
	sellitem F_Necklace_Box,250;
	sellitem F_Ring_Box,250;
	sellitem F_Rosary_Box,250;
	sellitem Solar_Sword_Box_,250;
	sellitem Pole_Axe_Box_,250;
	sellitem F_Safety_Ring_Box,250;
	sellitem F_Steel_Flower_Box,250;
	sellitem Tomahawk_Box_,250;
	sellitem Wrench_Box,250;
}

moc_para01,37,172,2	trader	Kafra Costume#eden5	4_F_KAFRA8,{
OnInit:
	tradertype(NST_CASH);
	sellitem Comin_Actor_Box,300;
	sellitem Weather_Report_Box,600;
	sellitem Yellow_Hat_Box,150;
	sellitem Singing_Bird_Box,150;
	sellitem Red_Minicrown_Box,150;
	sellitem Butterfly_ear_Box,150;
	sellitem Stuckhead_Screw_Box,150;
}

moc_para01,35,168,1	trader	Kafra Utility Shop#eden	4_F_KAFRA5,{
OnInit:
	tradertype(NST_CASH);
	sellitem Universal_Catalog_Gold_Box10,25;
	sellitem Job_Manual50_Box,400;
	sellitem HD_Elu_Box10,100;
	sellitem HD_Ori_Box10,100;
	sellitem Max_Weight_Up_10Box,500;
	sellitem HD_Elunium,10;
	sellitem HD_Oridecon,10;
	sellitem HD_Carnium,15;
	sellitem HD_Bradium,15;
	sellitem Adv_Siege_Supply_Box,5;
	sellitem F_Marriage_Covenant,500;
	sellitem Max_Weight_Up_Scroll,50;
	sellitem Enriched_Elunium,30;
	sellitem Enriched_Oridecon,30;
	sellitem Battle_Manual,40;
	sellitem F_Battle_Manual_Box,400;
	sellitem Bubble_Gum,40;
	sellitem F_Bubble_Gum_Box,400;
	sellitem F_WOB_Rune_Box10,50;
	sellitem F_WOB_Schwaltz_Box10,50;
	sellitem F_WOB_Rachel_Box10,50;
	sellitem F_WOB_Local_Box10,50;
	sellitem F_Dun_Tele_Scroll_Box10,50;
	sellitem F_Giant_Fly_Wing_Box,40;
	sellitem Giant_Fly_Wing_Box_500,500;
	sellitem WoE_Teleport_Scroll_100_Box,400;
	sellitem F_Kafra_Card_Box,100;
	sellitem F_Insurance_Package,100;
	sellitem F_Token_Of_Siegfried_Box,100;
}

//== Duplicate NPCs ========================================
/* Technically these NPC names are different, but it's not worth editing the original scripts. */

//- Weapon/Armor Refiner "Normalson" (merchants/refine.txt) -
moc_para01,14,185,4	script	Normalson#ed	4_M_DWARF,{
	callfunc "refinemain","Normalson",0;
	end;
}

//- Advanced Refiner "Suhnmi" (merchants/advanced_refiner.txt) -
moc_para01,26,185,4	duplicate(Suhnbi#cash)	Suhnmi#eden	4_M_03

//- HD Refiner "Blacksmith Mighty Hammer" (re/merchants/hd_refiner.txt) -
// A combination of the +7~9 and +10 and up refiner, currently a placeholder.
moc_para01,38,185,4	duplicate(MightyHammer)	Mighty Hammer#ed	4_M_DWARF

//- Refiner Effect -
-	script	#eden_refine_effect	FAKE_NPC,{
OnInit:
	initnpctimer;
	end;
OnTimer5000:
	specialeffect(EF_REFINEOK, AREA, getnpcid("Suhnmi#eden"));
	specialeffect(EF_REFINEOK, AREA, getnpcid("Mighty Hammer#ed"));
	initnpctimer;
	end;
}

//- Gym Pass Trainer "Ripped Cabus" (other/gympass) -
moc_para01,33,162,6	duplicate(Ripped Cabus#GymPass)	Ripped Callus#ed	4_M_HUMAN_02

//- RWC 2012 Enchanter "Goldenthiefberg" (events/RWC_2012.txt) -
// A combination of the slotter and enchanter, currently a placeholder.
moc_para01,27,179,4	script	RWC Enchanter#new10	4_M_BARBER,{ end; }

//- Cash Headgear Dyer "Alora" (merchants/cashheadgear_dye.txt) -
// Also converts some +8 and up headgears into costumes, currently a placeholder.
moc_para01,21,185,4	duplicate(Alora)	Alora#headgear_dye2	4_F_LGTGIRL

//- Stylist "Dinorah Lacostt" (?) -
// Dyes clothing for an Omni Clothing Dye, currently a placeholder.
moc_para01,33,185,4	script	Dinorah Lacostt#ed	4_F_LGTGIRL,{ end; }

//== Commonly Updated NPCs =================================
/* These scripts change on a regular basis, so they're mostly just placeholders for now. */
moc_para01,29,35,4	script	Gramps#huntquests	4_M_LGTGRAND,{
	mes "[Gramps]";
	mes "When you get to being my";
	mes "age, you become bitter.";
	mes "Too long I've done nothing about the monsters that roam around";
	mes "Rune Midgard.";
	next;
	mes "[Gramps]";
	mes "That's why I'm asking you wippersnappers to help";
	mes "me hunt some monsters.";
	mes "Will you help me, young adventurer?";
	close;
	//next;
	//switch(select("Yes, I'll help.", "Reward Me!", "^ff0000I want to quit hunting^000000", "^0000ffCan you warp me?^000000", "Can you erase the timer?", "What missions are you giving?", "Give me Limited 3 day VIP", "Tell me more about the VIP Access", "No thanks, pops.")) {
}

moc_para01,174,33,3	script	Bathory#2012spirits	BATHORY,{
	mes "[Bathory]";
	mes "Eheeheeheehee! The spotlight is on Glast Heim this week, so I'm ferrying people there for a mere 1,000z!";
	next;
	mes "[Bathory]";
	mes "How about it? Want to take a ride on a beautiful Bathory's broom?";
	next;
	switch(select("Prepare for Takeoff!", "No thanks.")) {
	case 1:
		if (Zeny < 1000) {
			mes "[Bathory]";
			mes "Come on dearie...";
			mes "You don't even have 1,000 zeny?";
			close;
		}
		mes "[Bathory]";
		mes "Alright, hold on tight!";
		close2;
		Zeny -= 1000;
		warp "niflheim",194,185;
		end;
	case 2:
		mes "["+strcharinfo(PC_NAME)+"]";
		mes "No thanks, maybe later.";
		close;
	}
}

moc_para01,26,174,4	script	Grandma Boxter#boxx	4_F_THAISHAMAN,{ end; }

//== Mail Annex Station ====================================
/* Map "auction_03" is a duplicate of "auction_02".

moc_para01,30,187,4	script	Mail Annex Station	2_POSTBOX,{
	mes "[Mail Annex Station]";
	mes "Would you like to go to the Kafra Mail Annex Station?";
	next;
	if (select("Yes, send me now!", "No thanks.") != 1) {
		mes "[Mail Annex Station]";
		mes "Ok then!";
		close;
	}
	mes "[Mail Annex Station]";
	mes "Sending you to the Mail Annex Room.";
	close2;
	warp "auction_03",151,23;
	end;
}

auction_03,152,16,0	warp	#mail_annex_warp	1,1,moc_para01,30,184

auction_03,152,42,4	script	Kafra Employee#annex	4_F_KAFRA1,{
	mes "[Kafra Employee]";
	mes "Welcome to the Kafra's Mail Annex Station. This is now the only place to send and retrieve mail.";
	next;
	mes "[Kafra Employee]";
	mes "What would you like to do?";
	next;
	switch(select("Access Mail", "Storage", "Cancel")) {
	case 1:
		if (Zeny < 130) {
			mes "[Kafra Employee]";
			mes "I am sorry, but you do not have enough money.";
			mes "To use the mailbox service,";
			mes "you are required to pay 130 zeny.";
			close;
		}
		mes "[Kafra Employee]";
		mes "Thank you for using the Kafra Service.";
		Zeny -= 130;
		close2;
		openmail;
		end;
	case 2:
		callfunc "F_KafStor",0,1200,0;
		end;
	case 3:
		mes "[Kafra Employee]";
		mes "Thank you for using the Kafra Service.";
		close;
	}
}

auction_03,145,47,2	trader	Tool Dealer#annex	4_M_01,{
OnInit:
	sellitem Spectacles;
	sellitem Red_Potion;
	sellitem Orange_Potion;
	sellitem Yellow_Potion;
	sellitem Green_Potion;
	sellitem White_Potion;
	sellitem Center_Potion;
	sellitem Awakening_Potion;
	sellitem Berserk_Potion;
	sellitem Wing_Of_Fly;
	sellitem Wing_Of_Butterfly;
	sellitem Booby_Trap;
	sellitem Scell;
	sellitem Garlet;
	sellitem Blue_Gemstone;
	sellitem Empty_Cylinder;
	sellitem Empty_Potion;
	sellitem Empty_Bottle,400;
}
*/