summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2014-10-19 00:47:39 +0200
committerHaru <haru@dotalux.com>2014-10-27 01:06:10 +0100
commitbf9e067bf1e5c6bc15d313e0a197fd8f4b2ec131 (patch)
tree6a24e8f20a33f08dbbf6bba185e6842d650fcd50 /npc
parent8bb00782225e2f04f61863832a6c27d512b551b5 (diff)
downloadhercules-bf9e067bf1e5c6bc15d313e0a197fd8f4b2ec131.tar.gz
hercules-bf9e067bf1e5c6bc15d313e0a197fd8f4b2ec131.tar.bz2
hercules-bf9e067bf1e5c6bc15d313e0a197fd8f4b2ec131.tar.xz
hercules-bf9e067bf1e5c6bc15d313e0a197fd8f4b2ec131.zip
Removed use of 'menu' from official (non-custom) scripts
- Some scripts were partly refactored/rewritten to use a more modern coding style (and to fix some issues) - Note: the 'menu' command will be deprecated soon in favor of 'select' and 'prompt'. Signed-off-by: Haru <haru@dotalux.com>
Diffstat (limited to 'npc')
-rw-r--r--npc/cities/aldebaran.txt296
-rw-r--r--npc/events/christmas_2005.txt2
-rw-r--r--npc/events/dumplingfestival.txt72
-rw-r--r--npc/events/event_skill_reset.txt93
-rw-r--r--npc/events/halloween_2008.txt338
-rw-r--r--npc/events/nguild/nguild_managers.txt121
-rw-r--r--npc/events/twintowers.txt79
-rw-r--r--npc/events/whiteday.txt181
-rw-r--r--npc/events/xmas.txt10
-rw-r--r--npc/quests/ninja_quests.txt371
10 files changed, 720 insertions, 843 deletions
diff --git a/npc/cities/aldebaran.txt b/npc/cities/aldebaran.txt
index 33acb60c2..f4b3662fc 100644
--- a/npc/cities/aldebaran.txt
+++ b/npc/cities/aldebaran.txt
@@ -1058,180 +1058,77 @@ aldeba_in,79,161,6 script Kafra#04 4_F_KAFRA3,{
next;
mes "[Kafra]";
mes "The amount of special reserve points that you have is: ^FF0000"+RESRVPTS+"^000000 pts. Please make a choice based on your point total.";
-M_Menu:
- next;
- menu "100- Potato 7 ea",M_1a, "200- Potato 15 ea",M_1b, "300- Potato 25 ea",M_1c, "400- Potato 35 ea",M_1d,
- "500- Potato 50 ea",M_1e, "600- Potato 60 ea",M_1f, "700- Potato 75 ea",M_1g, "800- Potato 85 ea",M_1h,
- "900- Potato 100 ea",M_1i, "1000- 1st Lottery Chance!",M_1j, "Next items",M_2, "Cancel",M_End;
-
- M_1a:
- if(RESRVPTS < 100) goto sL_LowPts1;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 516, 7;
- set RESRVPTS, RESRVPTS - 100;
- close;
- M_1b:
- if(RESRVPTS < 200) goto sL_LowPts1;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 516, 15;
- set RESRVPTS, RESRVPTS - 200;
- close;
- M_1c:
- if(RESRVPTS < 300) goto sL_LowPts1;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 516, 25;
- set RESRVPTS, RESRVPTS - 300;
- close;
- M_1d:
- if(RESRVPTS < 400) goto sL_LowPts1;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 516, 35;
- set RESRVPTS, RESRVPTS - 400;
- close;
- M_1e:
- if(RESRVPTS < 500) goto sL_LowPts1;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 516, 50;
- set RESRVPTS, RESRVPTS - 500;
- close;
- M_1f:
- if(RESRVPTS < 600) goto sL_LowPts1;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 516, 60;
- set RESRVPTS, RESRVPTS - 600;
- close;
- M_1g:
- if(RESRVPTS < 700) goto sL_LowPts1;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 516, 75;
- set RESRVPTS, RESRVPTS - 700;
- close;
- M_1h:
- if(RESRVPTS < 800) goto sL_LowPts1;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 516, 85;
- set RESRVPTS, RESRVPTS - 800;
- close;
- M_1i:
- if(RESRVPTS < 900) goto sL_LowPts1;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 516, 100;
- set RESRVPTS, RESRVPTS - 900;
- close;
- M_1j:
- if(RESRVPTS < 1000) goto sL_LowPts1;
- set RESRVPTS, RESRVPTS - 1000;
- mes "[Kafra]";
- mes "^0000FF1st Lottery Opportunity!!^000000";
- set @Lotto, 1;
+ .@page = 1;
+ while (true) {
+ if (.@page == 1) {
+ // Points, Item ID, amount
+ setarray .@choices, 100, Sweet_Potato, 7,
+ 200, Sweet_Potato, 15,
+ 300, Sweet_Potato, 25,
+ 400, Sweet_Potato, 35,
+ 500, Sweet_Potato, 50,
+ 600, Sweet_Potato, 60,
+ 700, Sweet_Potato, 75,
+ 800, Sweet_Potato, 85,
+ 900, Sweet_Potato, 100,
+ 1000, null, 0;
+ .@ordinal$ = "1st";
+ .@changepage$ = "Next items";
+ } else { // .@page == 2
+ setarray .@choices, 1100, Sweet_Potato, 7,
+ 1300, Sweet_Potato, 15,
+ 1500, Sweet_Potato, 25,
+ 1700, Sweet_Potato, 35,
+ 1900, Sweet_Potato, 50,
+ 2100, Sweet_Potato, 60,
+ 2300, Sweet_Potato, 75,
+ 2500, Sweet_Potato, 85,
+ 2800, Sweet_Potato, 100,
+ 3000, null, 0;
+ .@ordinal$ = "2nd";
+ .@changepage$ = "Previous List";
+ }
+ .@list$ = "";
+ .@numitemchoices = 0;
+ for (.@i = 0; .@i < getarraysize(.@choices) - 3; .@i += 3) { // Skip the last entry as it's handled separately
+ .@list$ += .@choices[i] + "- " + getitemname(.@choices[.@i+1]) + " " + .@choices[.@i+2] + " ea:";
+ ++.@numitemchoices;
+ }
+ .@list$ += .@choices[.@i] + "- " + .@ordinal$ + " Lottery Chance!:" + .@changepage$ +":Cancel";
next;
- callfunc "F_Lottery";
- goto M_End;
-
- sL_LowPts1:
- mes "[Kafra]";
- mes "I'm sorry but you do not have enough reserve points for that selection.";
- goto M_Menu;
-
- M_2:
- menu "1100- Red Potion 7 ea",M_2a, "1300- Red Potion 15 ea",M_2b, "1500- Red Potion 25 ea",M_2c,
- "1700- Red Potion 35 ea",M_2d, "1900- Red Potion 50 ea",M_2e, "2100- Red Potion 60 ea",M_2f,
- "2300- Red Potion 75 ea",M_2g, "2500- Red Potion 85 ea",M_2h, "2800- Red Potion 100 ea",M_2i,
- "3000- 2nd Lotery Chance!",M_2j, "Previous List",M_Menu, "Cancel",M_End;
-
- M_2a:
- if(RESRVPTS < 1100) goto sL_LowPts2;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 501, 7;
- set RESRVPTS, RESRVPTS - 1100;
- close;
- M_2b:
- if(RESRVPTS < 1300) goto sL_LowPts2;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 501, 15;
- set RESRVPTS, RESRVPTS - 1300;
- close;
- M_2c:
- if(RESRVPTS < 1500) goto sL_LowPts2;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 501, 25;
- set RESRVPTS, RESRVPTS - 1500;
- close;
- M_2d:
- if(RESRVPTS < 1700) goto sL_LowPts2;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 501, 35;
- set RESRVPTS, RESRVPTS - 1700;
- close;
- M_2e:
- if(RESRVPTS < 1900) goto sL_LowPts2;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 501, 50;
- set RESRVPTS, RESRVPTS - 1900;
- close;
- M_2f:
- if(RESRVPTS < 2100) goto sL_LowPts2;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 501, 60;
- set RESRVPTS, RESRVPTS - 2100;
- close;
- M_2g:
- if(RESRVPTS < 2300) goto sL_LowPts2;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 501, 75;
- set RESRVPTS, RESRVPTS - 2300;
- close;
- M_2h:
- if(RESRVPTS < 2500) goto sL_LowPts2;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 501, 85;
- set RESRVPTS, RESRVPTS - 2500;
- close;
- M_2i:
- if(RESRVPTS < 2800) goto sL_LowPts2;
- mes "[Kafra]";
- mes "Here you are.";
- getitem 501, 100;
- set RESRVPTS, RESRVPTS - 2800;
- close;
- M_2j:
- if(RESRVPTS < 3000) goto sL_LowPts2;
- set RESRVPTS, RESRVPTS - 3000;
- mes "[Kafra]";
- mes "^0000FF2nd Lottery Opportunity!!^000000";
- set @Lotto, 2;
+ .@chosen = select(.@list$) - 1;
+ if (.@chosen <= .@numitemchoices) {
+ if (RESRVPTS < .@choices[.@chosen*3]) {
+ mes "[Kafra]";
+ mes "I'm sorry but you do not have enough reserve points for that selection.";
+ continue;
+ }
+ RESRVPTS -= .@choices[.@chosen * 3];
+ if (.@chosen < .@numitemchances) {
+ // Item
+ mes "[Kafra]";
+ mes "Here you are.";
+ getitem .@choices[.@chosen*3 + 1], .@choices[.@chosen*3 + 2];
+ close;
+ }
+ // Lottery chance
+ mes "^0000FF"+ .@ordinal$ + " Lottery Opportunity!!^000000";
+ @Lotto = .@page;
next;
callfunc "F_Lottery";
- goto M_End;
-
- sL_LowPts2:
- mes "[Kafra]";
- mes "I'm sorry but you do not have enough reserve points for that selection.";
- next;
- goto M_2;
+ break;
+ } else if (.@chosen == .@numitemchoices + 1) { // next/previous items
+ .@page = (.@page == 1 ? 2 : 1);
+ continue;
+ } else { // Cancel
+ break;
+ }
+ }
- M_End:
- mes "[Kafra]";
- mes "Please come back anytime when you have more reserve points.";
- cutin "",255;
- close;
+ mes "[Kafra]";
+ mes "Please come back anytime when you have more reserve points.";
+ cutin "",255;
+ close;
}
// Special Reserve 2 ----------------------------------------------
@@ -1244,44 +1141,45 @@ aldeba_in,88,161,3 script Kafra#05 4_F_KAFRA3,{
mes "[Kafra]";
mes "Would you like to use your points?";
next;
- menu "Yes I would.",-, "Maybe next time.",M_End;
-
+ if (select("Yes I would.","Maybe next time.") == 1) {
mes "[Kafra]";
mes "You have the following amount of special reserve points: ^5544FF"+RESRVPTS+"^000000.";
mes "Make a choice and test your luck!";
next;
- menu "5000pts = 1st Lottery Chance!",sM_1st, "7000pts = 2nd Lottery Chance!",sM_2nd, "10000pts = 3rd Lottery Chance!",sM_3rd, "Cancel",M_End;
-
- sM_1st:
- if(RESRVPTS < 5000) goto sL_NotEnuf;
- set RESRVPTS, RESRVPTS - 5000;
- set @Lotto, 3;
- callfunc "F_Lottery";
- goto M_End;
- sM_2nd:
- if(RESRVPTS < 7000) goto sL_NotEnuf;
- set RESRVPTS, RESRVPTS - 7000;
- set @Lotto, 4;
- callfunc "F_Lottery";
- goto M_End;
- sM_3rd:
- if(RESRVPTS < 10000) goto sL_NotEnuf;
- set RESRVPTS, RESRVPTS - 10000;
- set @Lotto, 5;
- callfunc "F_Lottery";
- goto M_End;
+ switch (select("5000pts = 1st Lottery Chance!","7000pts = 2nd Lottery Chance!","10000pts = 3rd Lottery Chance!","Cancel")) {
+ case 1: // 5000
+ .@points = 5000;
+ @Lotto = 3;
+ break;
+ case 2: // 7000
+ .@points = 7000;
+ @Lotto = 4;
+ break;
+ case 3: // 10000
+ .@points = 10000;
+ @Lotto = 5;
+ break;
+ case 4: // Cancel
+ .@points = 0;
+ break;
+ }
- sL_NotEnuf:
+ if (.@points) {
+ if (RESRVPTS < .@points) {
mes "[Kafra]";
mes "I'm sorry dear but you do not have enough points for this selection.";
cutin "",255;
close;
- M_End:
- mes "[Kafra]";
- mes "No problem. Collect more and more special reserve points by using the Kafra Services found throughout Rune Midgard.";
- mes "Thank you for using Kafra Corp. services.";
- cutin "",255;
- close;
+ }
+ RESRVPTS -= .@points;
+ callfunc "F_Lottery";
+ }
+ }
+ mes "[Kafra]";
+ mes "No problem. Collect more and more special reserve points by using the Kafra Services found throughout Rune Midgard.";
+ mes "Thank you for using Kafra Corp. services.";
+ cutin "",255;
+ close;
}
// Function F_Lottery ------------------------------------------------------------------------------------------
diff --git a/npc/events/christmas_2005.txt b/npc/events/christmas_2005.txt
index 5236e5a54..eb80e6be1 100644
--- a/npc/events/christmas_2005.txt
+++ b/npc/events/christmas_2005.txt
@@ -1026,7 +1026,7 @@ prontera,156,242,0 script Oholy#pron::OholyDup 1_F_PRIEST,{
mes "I feel so sad for disappointed";
mes "kids who didn't hear the carols.";
next;
- menu "...can I help you?",-;
+ select("...can I help you?");
mes "[Oholy]";
mes "Good gracious! Are you for real?";
mes "Oh? Shee... Can you hear it?";
diff --git a/npc/events/dumplingfestival.txt b/npc/events/dumplingfestival.txt
index 6c5a3b6b5..23a085eb8 100644
--- a/npc/events/dumplingfestival.txt
+++ b/npc/events/dumplingfestival.txt
@@ -21,60 +21,48 @@ payon,93,81,4 script Exorcist Master Fahae 4_M_BUDDHIST,{
mes "I feel it is time I let another warrior try to complete";
mes "my quest. I have some items to assist you in my quest.";
next;
- menu "I wish to buy",-, "No thanks",M_FIN;
-
+ if (select("I wish to buy","No thanks") != 1) {
+ mes "[Exorcist Master Fahae]";
+ mes "The path of fully venquishing evil is far, help me in the way of God.";
+ close;
+ }
mes "[Exorcist Master Fahae]";
mes "I have 2 items which might become useful to you.";
next;
- menu "Realgar Wine",-, "Exorcize Herb",M_HERB;
-
+ switch (select("Realgar Wine","Exorcize Herb")) {
+ case 1:
+ .@itemid = Realgar_Wine; // 682
+ .@price = 20000;
+ break;
+ case 2:
+ .@itemid = Exorcize_Herb; // 683
+ .@price = 10000;
+ break;
+ }
mes "[Exorcist Master Fahae]";
mes "How many do you require?";
mes "You may only buy 5 at one time.";
- mes "Each costs 20000z.";
+ mes "Each costs "+ .@price +"z.";
mes "(Type in 0 to cancel)";
next;
input @input;
- if(@input==0) close;
- if(@input>5) goto L_SORRY;
- if(Zeny< @input*20000) goto L_NoZeny;
- Zeny -= 20000*@input;
- getitem 682,@input;
+ if (@input == 0)
+ close;
+ if (@input > 5) {
+ mes "[Exorcist Master Fahae]";
+ mes "You must not be stingy, it is the path of God to be honest.";
+ close;
+ }
+ if (Zeny < @input * .@price) {
+ mes "[Exorcist Master Fahae]";
+ mes "Money doesn't bring joy to everyone, but we need it to support the temple and myself. Please, try to kill some monsters and take their drops.";
+ close;
+ }
+ Zeny -= @input * .@price;
+ getitem .@itemid, @input;
mes "[Exorcist Master Fahae]";
mes "Here you go, I hope you may succeed in my quest.";
close;
-
-L_SORRY:
- mes "[Exorcist Master Fahae]";
- mes "You must not be stingy, it is the path of God to be honest.";
- close;
-
-M_FIN:
- mes "[Exorcist Master Fahae]";
- mes "The path of fully venquishing evil is far, help me in the way of God.";
- close;
-
-M_HERB:
- mes "[Exorcist Master Fahae]";
- mes "How many do you require?";
- mes "You may only buy 5 at one time.";
- mes "Each costs 10000z.";
- mes "(Type in 0 to cancel)";
- next;
- input @input;
- if(@input==0) close;
- if(@input>5) goto L_SORRY;
- if(Zeny< @input*10000) goto L_NoZeny;
- Zeny -= 10000*@input;
- getitem 683,@input;
- mes "[Exorcist Master Fahae]";
- mes "Here you go, I hope you may succeed in my quest.";
- close;
-
-L_NoZeny:
- mes "[Exorcist Master Fahae]";
- mes "Money doesn't bring joy to everyone, but we need it to support the temple and myself. Please, try to kill some monsters and take their drops.";
- close;
}
// Monsters
diff --git a/npc/events/event_skill_reset.txt b/npc/events/event_skill_reset.txt
index 718fe2e0e..15d781bff 100644
--- a/npc/events/event_skill_reset.txt
+++ b/npc/events/event_skill_reset.txt
@@ -54,54 +54,53 @@ yuno,138,187,4 script Hypnotist Teacher 4_F_TELEPORTER,{
mes "Your name is ^0080FF"+strcharinfo(0)+"^000000.";
mes "How can I help you?";
next;
- menu "^009500Information about Reset skills.^000000",L_Info,"^00B6FFReset skills.^000000",L_Reset,"^000088Nevermind^000000",-;
-
- mes @npcname$;
- mes "You know where to find me,";
- mes "if you ever want a reset!!";
- close;
-
-L_Info:
- mes @npcname$;
- mes "This skill reset is not FREE OF CHARGE!!";
- mes "Expense for the reset of skill is ^D5A50020000 Zeny x BaseLv^000000.";
- mes "Yeah ...each One BaseLv costs 20000 Zeny to reset skill.";
- next;
- mes @npcname$;
- mes "Oh yeah, one more thing!";
- mes "Any carts, falcons or pecos you have equiped";
- mes "will be removed if you reset your skills.";
- next;
- mes @npcname$;
- mes "Just one time does again to shake the skill point";
- mes "Careful with your skills from here on.";
- close;
-
-L_Reset:
- mes @npcname$;
- mes "Before skill reset in starting.";
- mes "You shall have to first tell me your Base Level.";
- next;
- mes "^D5A500[" + strcharinfo(0) + "]^000000";
- mes "My Base level is ^AA00AALevel " + BaseLevel + "BaseLv.^000000";
- next;
- set @zeny,BaseLevel*20000;
- mes @npcname$;
- mes "Total zeny to the reset of skill amount ^529DFF" + @zeny + "Zeny^000000 for the skill reset service.";
- next;
- if(Zeny < @zeny) {
+ switch (select("^009500Information about Reset skills.^000000","^00B6FFReset skills.^000000","^000088Nevermind^000000")) {
+ case 1: // Information
mes @npcname$;
- mes "It seems that you don't have enough money.";
- mes "In addition we wait for the opportunity.";
- emotion e_hmm;
+ mes "This skill reset is not FREE OF CHARGE!!";
+ mes "Expense for the reset of skill is ^D5A50020000 Zeny x BaseLv^000000.";
+ mes "Yeah ...each One BaseLv costs 20000 Zeny to reset skill.";
+ next;
+ mes @npcname$;
+ mes "Oh yeah, one more thing!";
+ mes "Any carts, falcons or pecos you have equiped";
+ mes "will be removed if you reset your skills.";
+ next;
+ mes @npcname$;
+ mes "Just one time does again to shake the skill point";
+ mes "Careful with your skills from here on.";
+ close;
+ case 2: // Reset
+ mes @npcname$;
+ mes "Before skill reset in starting.";
+ mes "You shall have to first tell me your Base Level.";
+ next;
+ mes "^D5A500[" + strcharinfo(0) + "]^000000";
+ mes "My Base level is ^AA00AALevel " + BaseLevel + "BaseLv.^000000";
+ next;
+ @zeny = BaseLevel*20000;
+ mes @npcname$;
+ mes "Total zeny to the reset of skill amount ^529DFF" + @zeny + "Zeny^000000 for the skill reset service.";
+ next;
+ if (Zeny < @zeny) {
+ mes @npcname$;
+ mes "It seems that you don't have enough money.";
+ mes "In addition we wait for the opportunity.";
+ emotion e_hmm;
+ close;
+ }
+ Zeny -= @zeny;
+ MISC_QUEST |= 1024;
+ resetskill;
+ mes @npcname$;
+ mes "Thank you.";
+ emotion e_thx;
+ logmes "SKILL RESET EVENT";
+ close;
+ case 3: // Nevermind
+ mes @npcname$;
+ mes "You know where to find me,";
+ mes "if you ever want a reset!!";
close;
}
- Zeny -= @zeny;
- set MISC_QUEST,MISC_QUEST | 1024;
- resetskill;
- mes @npcname$;
- mes "Thank you.";
- emotion e_thx;
- logmes "SKILL RESET EVENT";
- close;
}
diff --git a/npc/events/halloween_2008.txt b/npc/events/halloween_2008.txt
index 6aad72358..aa2780716 100644
--- a/npc/events/halloween_2008.txt
+++ b/npc/events/halloween_2008.txt
@@ -27,7 +27,8 @@ payon,162,176,4 script Halloween Magician#iRO08 4_M_BIBI,{
mes "If you collect enough tickets you can get good prizes!";
mes "So what do you say?";
next;
- goto MainMenu;
+ callsub(S_MainMenu);
+ end;
}
if (Hallow08Kill == 1) {
mes "[Halloween Magician]";
@@ -35,11 +36,13 @@ payon,162,176,4 script Halloween Magician#iRO08 4_M_BIBI,{
mes "You know you want to try again...";
mes "Do you know the rules?";
next;
- set Hallow08Kill,0;
+ Hallow08Kill = 0;
if(select("Yes, I know.:No, I don't know.") == 2) {
- goto Rules;
+ callsub(S_Rules);
+ callsub(S_MainMenu);
+ end;
}
- goto Participate;
+ callsub(S_Participate);
}
if (Hallow08Kill == 2) {
mes "[Halloween Magician]";
@@ -49,8 +52,8 @@ payon,162,176,4 script Halloween Magician#iRO08 4_M_BIBI,{
mes "Ha!";
mes "Kkkkkkk.";
next;
- getitem 7941,1;
- set Hallow08Kill,0;
+ getitem Halloween_Ticket, 1;
+ Hallow08Kill = 0;
mes "[Halloween Magician]";
mes "As I promised";
mes "You can get Halloween tickets for cool items.";
@@ -60,182 +63,183 @@ payon,162,176,4 script Halloween Magician#iRO08 4_M_BIBI,{
mes "[Halloween Magician]";
mes "Well, do you want to hear the rules again or, just get back to it...";
next;
- goto MainMenu2;
- }
-
- Rules:
- mes "[Halloween Magician]";
- mes "This village is like a virtual Payon.";
- mes "There are zombies and ghouls roaming around and three southern exits, but only one works.";
- mes "That's up to you to find out.";
- next;
- mes "[Halloween Magician]";
- mes "You can't use any skills to kill the ghouls or zombies.";
- mes "And one more thing...";
- mes "you shouldn't forget...";
- next;
- mes "[Halloween Magician]";
- mes "All participants should be wearing nothing.";
- mes "Put all belongings in your storage and come back here when your weight is '0'.";
- next;
- mes "[Halloween Magician]";
- mes "Oh and one more thing!";
- mes "You can't be riding a PecoPeco or have a Cart.";
- mes "If you are, then I will remove them before you enter.";
- mes "Got it?";
- next;
- mes "[Halloween Magician]";
- mes "Remember, there are three exits but only one works randomly, the zombies and ghouls roaming around there can't be killed and you can't be wearing anything.";
- next;
- if (Hallow08 > 0) {
- mes "[Halloween Magician]";
- mes "Hey...";
- mes "Come back once you're ready.";
- close;
- } else {
- goto MainMenu;
- }
-
- Participate:
- mes "[Halloween Magician]";
- mes "Ok, you are ready.";
- mes "Let me check your weight.";
- next;
- if (Weight > 0) {
- mes "[Halloween Magician]";
- mes "Gosh!";
- mes "There's always a black sheep anywhere.";
- next;
- mes "[Halloween Magician]";
- mes "You think I wouldn't notice that your weight is above '0'?";
- mes "You're overweight...";
- close;
- } else {
- mes "[Halloween Magician]";
- mes "You seem good to go, and your weight is just right.";
- next;
- mes "[Halloween Magician]";
- mes "I was quite swamped with my work, so I'm exhausted.";
- next;
- mes "[Halloween Magician]";
- mes "I sometimes forget to send you there...";
- next;
- mes "[Halloween Magician]";
- mes "I hope you come back well.";
- close2;
- if (Hallow08 < 1) {
- set Hallow08,1;
- }
- set Hallow08Kill,1;
- set @Hallow08Warp, rand(1,3);
- percentheal -98,0;
- setriding 0;
- setcart 0;
- warp "evt_zombie",155,246;
+ while (true) {
+ switch (select("Get me back there now!","Please, tell me the rules","I want to exchange tickets for prizes.","I'll come back next time.")) {
+ case 1: // Participate
+ callsub(S_Participate);
+ case 2: // Rules
+ callsub(S_Rules);
+ continue;
+ case 3: // TicketExchange
+ callsub(S_TicketExchange);
+ continue;
+ default: // NextTime
+ callsub(S_NextTime);
end;
}
+ }
+ }
- TicketExchange:
- mes "[Halloween Magician]";
- mes "You want to exchange tickets for prizes?";
- mes "Good job! Kkkkkk!";
- next;
- mes "[Halloween Magician]";
- mes "Lemme tell you what items you can exchange for.";
- next;
- mes "[Halloween Magician]";
- mes "5 tickets for Pumpkin Pie.";
- mes "20 tickets for Pumpkin-Head.";
- mes "50 tickets for Old Blue Box.";
- mes "70 tickets for Old Purple Box.";
- mes "200 tickets for Old Card Album.";
- next;
- mes "[Halloween Magician]";
- mes "What would you like to exchange for?";
- next;
- switch(select("Pumpkin Pie:Pumpkin-Head:Old Blue Box:Old Purple Box:Old Card Album")) {
- case 1:
- if (countitem(7941) < 5) {
- goto NotEnough;
- } else {
- delitem 7941,5;
- getitem 12192,1;
- goto Enough;
- }
- break;
- case 2:
- if (countitem(7941) < 20) {
- goto NotEnough;
- } else {
- delitem 7941,20;
- getitem 5134,1;
- goto Enough;
- }
- break;
- case 3:
- if (countitem(7941) < 50) {
- goto NotEnough;
- } else {
- delitem 7941,50;
- getitem 603,1;
- goto Enough;
- }
- break;
- case 4:
- if (countitem(7941) < 70) {
- goto NotEnough;
- } else {
- delitem 7941,70;
- getitem 617,1;
- goto Enough;
- }
- break;
- case 5:
- if (countitem(7941) < 200) {
- goto NotEnough;
- } else {
- delitem 7941,200;
- getitem 616,1;
- goto Enough;
- }
- }
+ callsub(S_Rules);
+ callsub(S_MainMenu);
+ end;
- NextTime:
- mes "[Halloween Magician]";
- mes "Ok, see you then.";
- mes "Kkkkkkkk.";
- close;
+S_MainMenu:
+ while (true) {
+ switch (select("Explain it to me.","I want to participate.","I want to exchange tickets for prizes.","I'll come back next time.")) {
+ case 1: // Rules
+ callsub(S_Rules);
+ continue;
+ case 2: // Participate
+ callsub(S_Participate);
+ case 3: // TicketExchange
+ callsub(S_TicketExchange);
+ continue;
+ default: // NextTime
+ callsub(S_NextTime);
+ end;
+ }
+ }
- MainMenu:
- menu "Explain it to me.",Rules,"I want to participate.",Participate,"I want to exchange tickets for prizes.",TicketExchange,"I'll come back next time.",NextTime;
+S_Participate:
+ mes "[Halloween Magician]";
+ mes "Ok, you are ready.";
+ mes "Let me check your weight.";
+ next;
+ if (Weight > 0) {
+ mes "[Halloween Magician]";
+ mes "Gosh!";
+ mes "There's always a black sheep anywhere.";
+ next;
+ mes "[Halloween Magician]";
+ mes "You think I wouldn't notice that your weight is above '0'?";
+ mes "You're overweight...";
+ close;
+ }
+ mes "[Halloween Magician]";
+ mes "You seem good to go, and your weight is just right.";
+ next;
+ mes "[Halloween Magician]";
+ mes "I was quite swamped with my work, so I'm exhausted.";
+ next;
+ mes "[Halloween Magician]";
+ mes "I sometimes forget to send you there...";
+ next;
+ mes "[Halloween Magician]";
+ mes "I hope you come back well.";
+ close2;
+ if (Hallow08 < 1) {
+ Hallow08 = 1;
+ }
+ Hallow08Kill = 1;
+ @Hallow08Warp = rand(1,3);
+ percentheal -98,0;
+ setriding 0;
+ setcart 0;
+ warp "evt_zombie",155,246;
+ end;
+
+S_Rules:
+ mes "[Halloween Magician]";
+ mes "This village is like a virtual Payon.";
+ mes "There are zombies and ghouls roaming around and three southern exits, but only one works.";
+ mes "That's up to you to find out.";
+ next;
+ mes "[Halloween Magician]";
+ mes "You can't use any skills to kill the ghouls or zombies.";
+ mes "And one more thing...";
+ mes "you shouldn't forget...";
+ next;
+ mes "[Halloween Magician]";
+ mes "All participants should be wearing nothing.";
+ mes "Put all belongings in your storage and come back here when your weight is '0'.";
+ next;
+ mes "[Halloween Magician]";
+ mes "Oh and one more thing!";
+ mes "You can't be riding a PecoPeco or have a Cart.";
+ mes "If you are, then I will remove them before you enter.";
+ mes "Got it?";
+ next;
+ mes "[Halloween Magician]";
+ mes "Remember, there are three exits but only one works randomly, the zombies and ghouls roaming around there can't be killed and you can't be wearing anything.";
+ next;
+ if (Hallow08 > 0) {
+ mes "[Halloween Magician]";
+ mes "Hey...";
+ mes "Come back once you're ready.";
+ close;
+ }
+ return;
- MainMenu2:
- menu "Get me back there now!",Participate,"Please, tell me the rules",Rules,"I want to exchange tickets for prizes.",TicketExchange,"I'll come back next time.",NextTime;
+S_NextTime:
+ mes "[Halloween Magician]";
+ mes "Ok, see you then.";
+ mes "Kkkkkkkk.";
+ close;
- NotEnough:
+S_TicketExchange:
+ mes "[Halloween Magician]";
+ mes "You want to exchange tickets for prizes?";
+ mes "Good job! Kkkkkk!";
+ next;
+ mes "[Halloween Magician]";
+ mes "Lemme tell you what items you can exchange for.";
+ next;
+ mes "[Halloween Magician]";
+ mes "5 tickets for Pumpkin Pie.";
+ mes "20 tickets for Pumpkin-Head.";
+ mes "50 tickets for Old Blue Box.";
+ mes "70 tickets for Old Purple Box.";
+ mes "200 tickets for Old Card Album.";
+ next;
+ mes "[Halloween Magician]";
+ mes "What would you like to exchange for?";
+ next;
+ .@item_id = null;
+ .@amount = 0;
+ switch(select("Pumpkin Pie:Pumpkin-Head:Old Blue Box:Old Purple Box:Old Card Album")) {
+ case 1:
+ .@amount = 5;
+ .@item_id = Pumpkin_Pie;
+ break;
+ case 2:
+ .@amount = 20;
+ .@item_id = Pumpkin_Hat;
+ break;
+ case 3:
+ .@amount = 50;
+ .@item_id = Old_Blue_Box;
+ break;
+ case 4:
+ .@amount = 70;
+ .@item_id = Old_Violet_Box;
+ break;
+ case 5:
+ .@amount = 200;
+ .@amount = Old_Card_Album;
+ break;
+ }
+ if (countitem(Halloween_Ticket) < .@amount) {
mes "[Halloween Magician]";
mes "You don't have enough tickets!";
mes "Can't you even count?";
mes "Please come here with the right number of tickets.";
close;
-
- Enough:
- mes "[Halloween Magician]";
- mes "Here it is.";
- mes "Do you need...";
- mes "anything else?";
- next;
- if (Hallow08 == 1) {
- goto MainMenu2;
- } else {
- goto MainMenu;
- }
+ }
+ delitem Halloween_Ticket, .@amount;
+ getitem .@item_id, 1;
+ mes "[Halloween Magician]";
+ mes "Here it is.";
+ mes "Do you need...";
+ mes "anything else?";
+ next;
+ return;
}
evt_zombie,16,142,1 script zombiewarp001 WARPNPC,2,2,{
OnTouch:
if (@Hallow08Warp == 1) {
- set Hallow08Kill,2;
+ Hallow08Kill = 2;
specialeffect EF_BASH;
warp "payon",28,142;
}
@@ -245,7 +249,7 @@ OnTouch:
evt_zombie,122,27,1 script zombiewarp002 WARPNPC,2,2,{
OnTouch:
if (@Hallow08Warp == 2) {
- set Hallow08Kill,2;
+ Hallow08Kill = 2;
specialeffect EF_BASH;
warp "payon",121,40;
}
@@ -255,7 +259,7 @@ OnTouch:
evt_zombie,267,89,1 script zombiewarp003 WARPNPC,2,2,{
OnTouch:
if (@Hallow08Warp == 3) {
- set Hallow08Kill,2;
+ Hallow08Kill = 2;
specialeffect EF_BASH;
warp "payon",253,95;
}
diff --git a/npc/events/nguild/nguild_managers.txt b/npc/events/nguild/nguild_managers.txt
index d6ecfbf2f..039ba9ee1 100644
--- a/npc/events/nguild/nguild_managers.txt
+++ b/npc/events/nguild/nguild_managers.txt
@@ -42,11 +42,8 @@ function script F_GldManager {
mes "Welcome Master ^5533FF" + getguildmaster(@GID) + "^000000 ! I will assist you in any way I can!";
next;
- menu "Kafra Staff Employment / Dismissal",M_Kaf, "Enter Treasure Room",M_Treas, "Cancel",M_End;
-
- //===========================
- M_Kaf:
- //======
+ switch (select("Kafra Staff Employment / Dismissal","Enter Treasure Room","Cancel")) {
+ case 1: // Employment / Dismissal
mes "[ "+getarg(0)+" ]";
if (getcastledata(getarg(1),9) == 1) goto L_Dismiss;
if (getgdskilllv(@GID,10001) == 0){
@@ -58,90 +55,78 @@ function script F_GldManager {
L_Hire:
mes "Would you like to employ the services of a Kafra? You will need ^5533FF10,000 Zeny^000000 to do so... ";
next;
- menu "Employ Kafra.",-,"Cancel",sM_KafEnd;
-
- mes "[ "+getarg(0)+" ]";
- if (Zeny < 10000){
- mes "Master, you do not have enough money to employ a Kafra. Employment has been cancelled.";
- return;
- }
- Zeny -= 10000;
- enablenpc "Kafra Staff#"+getarg(4);
- setcastledata getarg(1),9,1;
- mes "You have created a contract with the Kafra Staff Company.";
- next;
- cutin "kafra_01",2;
- mes "[ Kafra Staff ]";
- mes "How do you do? I'm here to provide you with helpful service! I'll do the best I can to serve you.";
- next;
- cutin "kafra_01",255;
- mes "[ "+getarg(0)+" ]";
- //mes "Your employment contract lasts ^5533FF1 month^000000. After this term is over you will have to create a new contract.";
- mes "I think the Kafra Staff will benefit our guild members.";
- return;
-
- sM_KafEnd:
+ if (select("Employ Kafra.","Cancel") != 1) {
mes "[ "+getarg(0)+" ]";
mes "As you wish Master. But I suggest we get a Kafra as soon as possible!";
return;
-
+ }
+ mes "[ "+getarg(0)+" ]";
+ if (Zeny < 10000) {
+ mes "Master, you do not have enough money to employ a Kafra. Employment has been cancelled.";
+ return;
+ }
+ Zeny -= 10000;
+ enablenpc "Kafra Staff#"+getarg(4);
+ setcastledata getarg(1),9,1;
+ mes "You have created a contract with the Kafra Staff Company.";
+ next;
+ cutin "kafra_01",2;
+ mes "[ Kafra Staff ]";
+ mes "How do you do? I'm here to provide you with helpful service! I'll do the best I can to serve you.";
+ next;
+ cutin "kafra_01",255;
+ mes "[ "+getarg(0)+" ]";
+ //mes "Your employment contract lasts ^5533FF1 month^000000. After this term is over you will have to create a new contract.";
+ mes "I think the Kafra Staff will benefit our guild members.";
+ return;
L_Dismiss:
mes "Would you like to dismiss the current Kafra?";
next;
- menu "Dismissal",-,"Cancel",sM_KafEnd2;
-
- cutin "kafra_01",2;
- mes "[ Kafra Staff ]";
- mes "Have I done anything wrong? If I did, will you please forgive me?";
- next;
- menu "Dismiss",-,"Cancel",ssM_KafEnd2;
-
- mes "[ Kafra Staff ]";
- mes "It's unfortunate that I won't be able to serve your guild anymore....";
- next;
- disablenpc "Kafra Staff#"+getarg(4);
- setcastledata getarg(1),9,0;
- cutin "kafra_01",255;
- mes "[ "+getarg(0)+" ]";
- mes "The Kafra has been dismissed. But... we should really get a Kafra as soon as possible!";
- return;
- ssM_KafEnd2:
- mes "[ Kafra Staff ]";
- mes "Thank you master, I'll do my best! ^^.";
- cutin "kafra_01",255;
- return;
- sM_KafEnd2:
+ if (select("Dismissal","Cancel") != 1) {
mes "[ "+getarg(0)+" ]";
mes "Master, I think you should keep the current Kafra Staff because she is already trying her best to serve us";
return;
-
- //=========================
- M_Treas:
- //========
+ }
+ cutin "kafra_01",2;
+ mes "[ Kafra Staff ]";
+ mes "Have I done anything wrong? If I did, will you please forgive me?";
+ next;
+ if (select("Dismiss","Cancel") != 1) {
+ mes "[ Kafra Staff ]";
+ mes "Thank you master, I'll do my best! ^^.";
+ cutin "kafra_01",255;
+ return;
+ }
+ mes "[ Kafra Staff ]";
+ mes "It's unfortunate that I won't be able to serve your guild anymore....";
+ next;
+ disablenpc "Kafra Staff#"+getarg(4);
+ setcastledata getarg(1),9,0;
+ cutin "kafra_01",255;
+ mes "[ "+getarg(0)+" ]";
+ mes "The Kafra has been dismissed. But... we should really get a Kafra as soon as possible!";
+ return;
+ case 2: // Enter Treasure Room
mes "[ "+getarg(0)+" ]";
mes "Would you to go to our Treasure Room? Only you, the Guild Master, are allowed to enter this room.";
next;
- menu "Enter Treasure room.",-,"Cancel",sM_TresEnd;
-
+ if (select("Enter Treasure room.","Cancel") == 1) {
mes "[ "+getarg(0)+" ]";
mes "Please follow me through the secret passage way.";
mes "You must pull down on the secret switch in order to get out.";
next;
warp getarg(1),getarg(2),getarg(3);
return;
- sM_TresEnd:
- mes "[ "+getarg(0)+" ]";
- mes "The goods are produced everyday.";
- mes "You should get them whenever you can because they might dissapear if you take them at the wrong time.";
- return;
-
-
- //==========================
- M_End:
- //=======
+ }
+ mes "[ "+getarg(0)+" ]";
+ mes "The goods are produced everyday.";
+ mes "You should get them whenever you can because they might dissapear if you take them at the wrong time.";
+ return;
+ default: // Cancel
mes "[ "+getarg(0)+" ]";
mes "As you wish, master.";
return;
+ }
}
// Castle 1 ==================================================================================
diff --git a/npc/events/twintowers.txt b/npc/events/twintowers.txt
index 524351661..8013b85b7 100644
--- a/npc/events/twintowers.txt
+++ b/npc/events/twintowers.txt
@@ -29,24 +29,22 @@ prontera,146,92,4 script Twin Towers#tt1::Twin-Towers TW_TOWER,{
mes "For this reason, we are here at your service with our special magic.";
mes "Kindly let us know.";
next;
- menu "I shall accept your offer.",YES,"I'll ask for your service next time.",NO;
-
- NO:
- mes "[Twin Towers]";
- mes "Er, what a pity. Traveling by yourself is still the best evidence of adventure.";
- mes "Isn't this proving that you are still young?";
- mes "We respect brave hearts like this";
- next;
- mes "[Twin Towers]";
- mes "There are good and bad times in life, moreover, adventure isn't an easy task in the first place.";
- mes "Isn't this true?";
- mes "Feel free to come to us when you have time, we will always be there to serve you.";
- next;
- mes "[Twin Towers]";
- mes "Forget all your troubles, and create a splendid legend in this wonderful world.";
- mes "This is such a wonderful world, and you'll always be a great adventurer!";
- close;
- YES:
+ if (select("I shall accept your offer.","I'll ask for your service next time.") != 1) {
+ mes "[Twin Towers]";
+ mes "Er, what a pity. Traveling by yourself is still the best evidence of adventure.";
+ mes "Isn't this proving that you are still young?";
+ mes "We respect brave hearts like this";
+ next;
+ mes "[Twin Towers]";
+ mes "There are good and bad times in life, moreover, adventure isn't an easy task in the first place.";
+ mes "Isn't this true?";
+ mes "Feel free to come to us when you have time, we will always be there to serve you.";
+ next;
+ mes "[Twin Towers]";
+ mes "Forget all your troubles, and create a splendid legend in this wonderful world.";
+ mes "This is such a wonderful world, and you'll always be a great adventurer!";
+ close;
+ }
mes "[Twin Towers]";
mes "The flaming passion of an adventurer,";
mes "The desire to explore the unknown realms,";
@@ -60,28 +58,29 @@ prontera,146,92,4 script Twin Towers#tt1::Twin-Towers TW_TOWER,{
mes "[Twin Towers]";
mes "Come on! Where do you wish to go?";
mes "Just let us know you desired destination and we will send your there!";
- menu "Hidden Temple", HiddenTemple,"Orc Dungeon",OrcDungeon,"Ant Hell",AntHell,"Mjolnir Waste Pit",MjolnirWastePit,"Sphinx",Sphinx,"Glast Heim",GlastHeim,"Comodo",Comodo;
- HiddenTemple:
- warp "prt_fild01",136,368;
- close;
- OrcDungeon:
- warp "gef_fild10",67,334;
- close;
- AntHell:
- warp "moc_fild04",210,329;
- close;
- MjolnirWastePit:
- warp "mjolnir_02",79,361;
- close;
- Sphinx:
- warp "moc_fild19",105,99;
- close;
- GlastHeim:
- warp "gef_fild06",45,304;
- close;
- Comodo:
- warp "cmd_fild01",30,317;
- close;
+ switch (select("Hidden Temple","Orc Dungeon","Ant Hell","Mjolnir Waste Pit","Sphinx","Glast Heim","Comodo")) {
+ case 1: // HiddenTemple
+ warp "prt_fild01",136,368;
+ close;
+ case 2: // OrcDungeon
+ warp "gef_fild10",67,334;
+ close;
+ case 3: // AntHell
+ warp "moc_fild04",210,329;
+ close;
+ case 4: // MjolnirWastePit
+ warp "mjolnir_02",79,361;
+ close;
+ case 5: // Sphinx
+ warp "moc_fild19",105,99;
+ close;
+ case 6: // GlastHeim
+ warp "gef_fild06",45,304;
+ close;
+ case 7: // Comodo
+ warp "cmd_fild01",30,317;
+ close;
+ }
}
morocc,160,97,4 duplicate(Twin-Towers) Twin Towers#tt2 TW_TOWER
diff --git a/npc/events/whiteday.txt b/npc/events/whiteday.txt
index ac76c52a5..d90f7c491 100644
--- a/npc/events/whiteday.txt
+++ b/npc/events/whiteday.txt
@@ -12,10 +12,6 @@
//============================================================
alberta,188,64,4 script Sugar 4_F_02,{
- set @maplenum,0;
- set @mapleItemID,0;
- set @maplePrice,0;
- set @maplePriceT,0;
mes "[Sugar]";
mes "Welcome!";
mes "How delicious are sweets?";
@@ -29,51 +25,102 @@ alberta,188,64,4 script Sugar 4_F_02,{
mes "heartfelt like";
mes "the sweetness of the present some how.";
next;
- menu "Please give me!",-,"I don't need it.",M_End,"The teacher.",M_L1;
-
- mes "[Sugar]";
- mes "Yes!";
- mes "Select from menu here.";
- mes "Since there is a limitation in numbers";
- mes "Not more than ^ff0000 5 pieces^000000.";
- mes "are allowed to carry out?";
- next;
- menu "Candy",-,"Candy Cane",L0_2,"Well baked cookie",L0_3;
-
- set @maplePrice,3000;
- set @mapleItemID,529;
- mes "[Sugar]";
- mes "It is a candy, and the price is";
- mes "3000 Zeny each.";
- mes "How many do you like to purchase?";
- next;
- goto L_INPUT;
-L0_2:
- set @maplePrice,4000;
- set @mapleItemID,530;
- mes "[Sugar]";
- mes "It is a candy cane, and the price is";
- mes "4000 Zeny each.";
- mes "How many do you like to purchase?";
- next;
- goto L_INPUT;
-L0_3:
- set @maplePrice,2000;
- set @mapleItemID,538;
+ switch (select("Please give me!","I don't need it.","The teacher.")) {
+ case 1: // Please give me
+ mes "[Sugar]";
+ mes "Yes!";
+ mes "Select from menu here.";
+ mes "Since there is a limitation in numbers";
+ mes "Not more than ^ff0000 5 pieces^000000.";
+ mes "are allowed to carry out?";
+ next;
+ switch (select("Candy","Candy Cane","Well baked cookie")) {
+ case 1: // Candy
+ mes "[Sugar]";
+ mes "It is a candy, and the price is";
+ mes "3000 Zeny each.";
+ mes "How many do you like to purchase?";
+ next;
+ callsub(S_Purchase, 3000, Candy);
+ break;
+ case 2: // Candy Cane
+ mes "[Sugar]";
+ mes "It is a candy cane, and the price is";
+ mes "4000 Zeny each.";
+ mes "How many do you like to purchase?";
+ next;
+ callsub(S_Purchase, 4000, Candy_Striper);
+ break;
+ case 3: // Well baked cookie
+ mes "[Sugar]";
+ mes "It is a well baked cookie, and the price is";
+ mes "2000 Zeny each.";
+ mes "How many do you like to purchase?";
+ next;
+ callsub(S_Purchase, 2000, Well_Baked_Cookie);
+ break;
+ }
+ break;
+ case 3: // The teacher
+ mes "[Sugar]";
+ mes "Yes";
+ mes "The teacher of mine";
+ mes "is Mr. Kuberu, a sweets craftsman.";
+ mes "Making sweets under two persons.";
+ mes "which is allowed to self-train.";
+ next;
+ mes "[Sugar]";
+ mes "Although selling is seemingly to carried out ....";
+ mes "Where he is now?";
+ mes "Which I don't know.";
+ close;
+ case 2: // I don't need it
+ break;
+ }
mes "[Sugar]";
- mes "It is a well baked cookie, and the price is";
- mes "2000 Zeny each.";
- mes "How many do you like to purchase?";
- next;
+ mes "Really .... You might regret it..";
+ mes "If you change your mind.";
+ mes "I am just here ok.";
+ mes "Have a nice day!";
+ close;
-L_INPUT:
- input @maplenum;
- if (@maplenum > 5) goto L_ERROR;
- if (@maplenum == 0) goto M_End;
- set @maplePriceT,@maplePrice*@maplenum;
- if (Zeny < @maplePriceT) goto L_ERROR2;
- Zeny -= @maplePriceT;
- getitem @mapleItemID,@maplenum;
+/**
+ * Attempts to purchase an item, after asking the desired quantity.
+ *
+ * Arguments:
+ * 0 : price
+ * 1 : item ID
+ *
+ * Returns on user cancel. Closes on successful purchase or error.
+ */
+S_Purchase:
+ .@price = getarg(0);
+ .@item_id = getarg(1);
+ while (true) {
+ input .@amount;
+ if (.@amount <= 5)
+ break;
+ mes "[Sugar]";
+ mes "???";
+ mes "You seem to have a failure on hearing.";
+ mes "I will tell you once again?";
+ mes "You can only purchase";
+ mes "^ff0000 5 pieces^000000 at once.";
+ next;
+ }
+ if (.@amount == 0) // Cancel
+ return;
+ .@totalPrice = .@price * .@amount;
+ if (Zeny < .@totalPrice) {
+ mes "[Sugar]";
+ mes "???";
+ mes "Hmmm it seems you don't have enough money";
+ mes "to make that purchase.";
+ mes "I will ask you to check your money first.";
+ close;
+ }
+ Zeny -= .@totalPrice;
+ getitem .@item_id, .@amount;
mes "[Sugar]";
mes "Thank you!!!";
mes "These sweets are really delicious.";
@@ -82,44 +129,4 @@ L_INPUT:
mes "don't eat so much or you'll grow fat.";
mes "Please take care!!!";
close;
-
-M_L1:
- mes "[Sugar]";
- mes "Yes";
- mes "The teacher of mine";
- mes "is Mr. Kuberu, a sweets craftsman.";
- mes "Making sweets under two persons.";
- mes "which is allowed to self-train.";
- next;
- mes "[Sugar]";
- mes "Although selling is seemingly to carried out ....";
- mes "Where he is now?";
- mes "Which I don't know.";
- close;
-
-L_ERROR:
- mes "[Sugar]";
- mes "???";
- mes "You seem to have a failure on hearing.";
- mes "I will tell you once again?";
- mes "You can only purchase";
- mes "^ff0000 5 pieces^000000 at once.";
- next;
- goto L_INPUT;
-
-L_ERROR2:
- mes "[Sugar]";
- mes "???";
- mes "Hmmm it seems you don't have enough money";
- mes "to make that purchase.";
- mes "I will ask you to check your money first.";
- close;
-
-M_End:
- mes "[Sugar]";
- mes "Really .... You might regret it..";
- mes "If you change your mind.";
- mes "I am just here ok.";
- mes "Have a nice day!";
- close;
}
diff --git a/npc/events/xmas.txt b/npc/events/xmas.txt
index d8423dda7..72048985d 100644
--- a/npc/events/xmas.txt
+++ b/npc/events/xmas.txt
@@ -35,9 +35,8 @@ L_Start:
mes "I'm having a bit of a problem...";
mes "Do you care to listen?";
next;
- menu "Listen to Santa Claus.",M_0, "Give Santa Claus proof.",M_1, "Cancel.",M_End;
-
- M_0:
+ switch (select("Listen to Santa Claus.","Give Santa Claus proof.","Cancel.")) {
+ case 1: // Listen
mes "[Santa Claus]";
mes "My problem is this.";
mes "There seems to be a man out there";
@@ -76,7 +75,7 @@ L_Start:
mes "lab. It spits out random presents";
mes "and saves me a ton of work.";
close;
- M_1:
+ case 2: // Give proof
mes "[Santa Claus]";
if(countitem(7034) < 3) goto L_NotEnuf;
delitem 7034,3;
@@ -97,11 +96,12 @@ L_Start:
mes "Go take down those evil Santas";
mes "and get more for me and I'll reward you.";
close;
- M_End:
+ default: // Cancel
mes "[Santa Claus]";
mes "I see. Well, at the very least";
mes "we shall meet again on Christmas morning.";
close;
+ }
OnInit:
disablenpc "Santa Claus";
diff --git a/npc/quests/ninja_quests.txt b/npc/quests/ninja_quests.txt
index dfcc7d172..6e7531e0e 100644
--- a/npc/quests/ninja_quests.txt
+++ b/npc/quests/ninja_quests.txt
@@ -1148,217 +1148,214 @@ que_ng,22,62,3 script Tetsu 4_M_SEAMAN,{
mes "I may not look it, but if it's about any items related to Fuuma, there's none who come close to my craftsmenship.";
mes "Well, look around, look around.";
next;
- menu "Fuuma Shuriken Beneki",M_BENEKI,"Fuuma Shuriken Daisharin",M_DAIS,
- "Fuuma Shuriken Daisharin[4]",M_DAIS4,"Fuuma Shuriken Rekka",M_REKKA,"Cancel",M_CANCEL;
-
-//=====================BENEKI========================
-M_BENEKI:
- mes "[Tetsu]";
- mes "Hmm~ You've chose the ^ff0000Fuuma Beneki^000000.";
- mes "In order to make the Fuuma Beneki, I need";
- mes "50 Steel, 20 Harpy Feather";
- mes "5 Oridecon, and 90,000 Zeny.";
- mes "Do you want me to create this item for you?";
- next;
- menu "Well .. erm .. it's kind of pricey.",M_NOPE,"Yes! Make it for me!",-;
-
- if(countitem(999)<50 || countitem(7115)<20 || countitem(984)<5){
+ switch (select("Fuuma Shuriken Beneki","Fuuma Shuriken Daisharin","Fuuma Shuriken Daisharin[4]","Fuuma Shuriken Rekka","Cancel")) {
+ case 1: // Beneki
mes "[Tetsu]";
- mes "It looks like you haven't brought me enough materials to make you a Fuuma Shuriken Beneki.";
+ mes "Hmm~ You've chose the ^ff0000Fuuma Beneki^000000.";
+ mes "In order to make the Fuuma Beneki, I need";
+ mes "50 Steel, 20 Harpy Feather";
+ mes "5 Oridecon, and 90,000 Zeny.";
+ mes "Do you want me to create this item for you?";
next;
+ if (select("Well .. erm .. it's kind of pricey.","Yes! Make it for me!") != 2) {
+ break;
+ }
+
+ if(countitem(999)<50 || countitem(7115)<20 || countitem(984)<5){
+ mes "[Tetsu]";
+ mes "It looks like you haven't brought me enough materials to make you a Fuuma Shuriken Beneki.";
+ next;
+ mes "[Tetsu]";
+ mes "In order to create a Fuuma shuriken Beneki, I require...";
+ mes "^ff000050 Steel,^000000";
+ mes "^ff000020 Harpy Feathers^000000,";
+ mes "^ff00005 Oridecons^000000,";
+ mes "and ^ff000090,000 Zeny^000000.";
+ mes "Remember these needed materials, and come back after you're positive you have them all.";
+ close;
+ }
+ if(Zeny < 90000){
+ mes "[Tetsu]";
+ mes "Hmm.. You brought plenty of materials, but you're short on zeny.";
+ next;
+ mes "[Tetsu]";
+ mes "In order to create a Fuuma Shuriken Beneki, I require...";
+ mes "^ff000050 Steel,^000000";
+ mes "^ff000020 Harpy Feathers^000000,";
+ mes "^ff00005 Oridecons^000000,";
+ mes "and ^ff000090,000 Zeny^000000.";
+ mes "Remember these needed materials, and come back after you're positive you have them all.";
+ close;
+ }
+ delitem 999,50;
+ delitem 7115,20;
+ delitem 984,5;
+ Zeny -= 90000;
+ getitem 13300,1;
mes "[Tetsu]";
- mes "In order to create a Fuuma shuriken Beneki, I require...";
- mes "^ff000050 Steel,^000000";
- mes "^ff000020 Harpy Feathers^000000,";
- mes "^ff00005 Oridecons^000000,";
- mes "and ^ff000090,000 Zeny^000000.";
- mes "Remember these needed materials, and come back after you're positive you have them all.";
+ mes "Hmm, very well.";
+ mes "Looks like you've brought me the correct amount of materials and Zeny";
+ mes "Here is your completed Fuuma Shuriken Beneki";
close;
- }
- if(Zeny < 90000){
+ case 2: // Daisharin
mes "[Tetsu]";
- mes "Hmm.. You brought plenty of materials, but you're short on zeny.";
+ mes "Hmm~ I see you've chose the ^ff0000Fuuma Shuriken Daisharin^000000.";
+ mes "In order to create Fuuma Shuriken Daisharin, I require...";
+ mes "30 Steel, 100 Tassels";
+ mes "2 Oridecons, and 40,000 Zeny.";
+ mes "Do you want me to create this item for you?";
next;
- mes "[Tetsu]";
- mes "In order to create a Fuuma Shuriken Beneki, I require...";
- mes "^ff000050 Steel,^000000";
- mes "^ff000020 Harpy Feathers^000000,";
- mes "^ff00005 Oridecons^000000,";
- mes "and ^ff000090,000 Zeny^000000.";
- mes "Remember these needed materials, and come back after you're positive you have them all.";
- close;
- }
- delitem 999,50;
- delitem 7115,20;
- delitem 984,5;
- Zeny -= 90000;
- getitem 13300,1;
- mes "[Tetsu]";
- mes "Hmm, very well.";
- mes "Looks like you've brought me the correct amount of materials and Zeny";
- mes "Here is your completed Fuuma Shuriken Beneki";
- close;
-
-//=====================DAISHARIN========================
-M_DAIS:
- mes "[Tetsu]";
- mes "Hmm~ I see you've chose the ^ff0000Fuuma Shuriken Daisharin^000000.";
- mes "Fuuma Shuriken Daisharin In order to create Fuuma Shuriken Daisharin, I require...";
- mes "30 Steel, 100 Tassels";
- mes "2 Oridecons, and 40,000 Zeny.";
- mes "Do you want me to create this item for you?";
- next;
- menu "Well .. erm .. it's kind of pricey.",M_NOPE,"Yes! Make it for me!",-;
+ if (select("Well .. erm .. it's kind of pricey.","Yes! Make it for me!") != 2) {
+ break;
+ }
- if(countitem(999)<30 || countitem(7301)<100 || countitem(984)<2){
- mes "[Tetsu]";
- mes "It looks like you haven't brought me enough materials to make you a Fuuma Shuriken Daisharin.";
- next;
+ if(countitem(999)<30 || countitem(7301)<100 || countitem(984)<2){
+ mes "[Tetsu]";
+ mes "It looks like you haven't brought me enough materials to make you a Fuuma Shuriken Daisharin.";
+ next;
+ mes "[Tetsu]";
+ mes "Fuuma Shuriken Daisharin, I require...";
+ mes "^ff000030 Steel^000000, ";
+ mes "^ff0000100 Tassels^000000,";
+ mes "^ff00002 Oridecons^000000,";
+ mes "and ^ff000040,000 Zeny^000000.";
+ mes "Remember these needed materials, and come back after you're positive you have them all.";
+ close;
+ }
+ if(Zeny < 40000){
+ mes "[Tetsu]";
+ mes "Hmm.. You brought plenty of materials, but you're short on zeny.";
+ next;
+ mes "[Tetsu]";
+ mes "Fuuma Shuriken Daisharin, I require...";
+ mes "^ff000030 Steel^000000, ";
+ mes "^ff0000100 Tassels^000000,";
+ mes "^ff00002 Oridecons^000000,";
+ mes "and ^ff000040,000 Zeny^000000.";
+ mes "Remember these needed materials, and come back after you're positive you have them all.";
+ close;
+ }
+ delitem 999,30;
+ delitem 7301,100;
+ delitem 984,2;
+ Zeny -= 40000;
+ getitem 13301,1;
mes "[Tetsu]";
- mes "Fuuma Shuriken Daisharin, I require...";
- mes "^ff000030 Steel^000000, ";
- mes "^ff0000100 Tassels^000000,";
- mes "^ff00002 Oridecons^000000,";
- mes "and ^ff000040,000 Zeny^000000.";
- mes "Remember these needed materials, and come back after you're positive you have them all.";
+ mes "Hmm, very well.";
+ mes "Looks like you've brought me the correct amount of materials and Zeny";
+ mes "Here is your completed Fuuma Shuriken Daisharin";
close;
- }
- if(Zeny < 40000){
+ case 3: // Daisharin[4]
mes "[Tetsu]";
- mes "Hmm.. You brought plenty of materials, but you're short on zeny.";
+ mes "Hmm~ I see you've chose the ^ff0000Fuuma Shuriken Daisharin[4]^000000.";
+ mes "In order to create Fuuma Shuriken Daisharin[4], I require...";
+ mes "20 Cracked Diamonds, 1 Fuuma Shuriken Daisharin";
+ mes "3 Oridecons, and 40,000 Zeny.";
+ mes "Do you want me to create this item for you?";
next;
mes "[Tetsu]";
- mes "Fuuma Shuriken Daisharin, I require...";
- mes "^ff000030 Steel^000000, ";
- mes "^ff0000100 Tassels^000000,";
- mes "^ff00002 Oridecons^000000,";
- mes "and ^ff000040,000 Zeny^000000.";
- mes "Remember these needed materials, and come back after you're positive you have them all.";
- close;
- }
- delitem 999,30;
- delitem 7301,100;
- delitem 984,2;
- Zeny -= 40000;
- getitem 13301,1;
- mes "[Tetsu]";
- mes "Hmm, very well.";
- mes "Looks like you've brought me the correct amount of materials and Zeny";
- mes "Here is your completed Fuuma Shuriken Daisharin";
- close;
-
-//=====================DAISHARIN4========================
-M_DAIS4:
- mes "[Tetsu]";
- mes "Hmm~ I see you've chose the ^ff0000Fuuma Shuriken Daisharin[4]^000000.";
- mes "In order to create Fuuma Shuriken Daisharin[4], I require...";
- mes "20 Cracked Diamonds, 1 Fuuma Shuriken Daisharin";
- mes "3 Oridecons, and 40,000 Zeny.";
- mes "Do you want me to create this item for you?";
- next;
- mes "[Tetsu]";
- mes "And in case you don't know...";
- mes "In the process of slotting a weapon, your weapon will lose any refine points and slotted cards, if any.";
- mes "Think this over with caution, and then decide if you really want to do this or not.";
- next;
- menu "No thanks.. It's a little pricey..",M_NOPE,"Yes! Make it for me!",-;
-
- if(countitem(733)<20 || countitem(13301)<1 || countitem(984)<3){
- mes "[Tetsu]";
- mes "It looks like you haven't brought me enough materials to make you a Fuuma Shuriken Daisharin[4].";
+ mes "And in case you don't know...";
+ mes "In the process of slotting a weapon, your weapon will lose any refine points and slotted cards, if any.";
+ mes "Think this over with caution, and then decide if you really want to do this or not.";
next;
+ if (select("No thanks.. It's a little pricey..","Yes! Make it for me!") != 2) {
+ break;
+ }
+
+ if(countitem(733)<20 || countitem(13301)<1 || countitem(984)<3){
+ mes "[Tetsu]";
+ mes "It looks like you haven't brought me enough materials to make you a Fuuma Shuriken Daisharin[4].";
+ next;
+ mes "[Tetsu]";
+ mes "In order to create a Fuuma Shuriken Daisharin[4], I require...";
+ mes "^ff000020 Cracked Diamonds^000000,";
+ mes "^ff00003 Oridecons^000000,";
+ mes "1 Fuuma Shuriken Daisharin, and";
+ mes "^ff000040,000 Zeny^000000.";
+ mes "Remember these needed materials, and come back after you're positive you have them all.";
+ close;
+ }
+ if(Zeny < 40000){
+ mes "[Tetsu]";
+ mes "Hmm.. You brought plenty of materials, but you're short on zeny.";
+ next;
+ mes "[Tetsu]";
+ mes "In order to create a Fuuma Shuriken Daisharin[4], I require...";
+ mes "^ff000020 Cracked Diamonds^000000,";
+ mes "^ff00003 Oridecons^000000,";
+ mes "1 Fuuma Shuriken Daisharin, and";
+ mes "^ff000040,000 Zeny^000000.";
+ mes "Remember these needed materials, and come back after you're positive you have them all.";
+ close;
+ }
+ delitem 733,20;
+ delitem 984,3;
+ Zeny -= 40000;
+ delitem 13301,1;
+ getitem 13302,1;
mes "[Tetsu]";
- mes "In order to create a Fuuma Shuriken Daisharin[4], I require...";
- mes "^ff000020 Cracked Diamonds^000000,";
- mes "^ff00003 Oridecons^000000,";
- mes "1 Fuuma Shuriken Daisharin, and";
- mes "^ff000040,000 Zeny^000000.";
- mes "Remember these needed materials, and come back after you're positive you have them all.";
+ mes "Hmm, very well.";
+ mes "Looks like you've brought me the correct amount of materials and Zeny";
+ mes "Here is your completed Fuuma Shuriken Daisharin[4].";
close;
- }
- if(Zeny < 40000){
- mes "[Tetsu]";
- mes "Hmm.. You brought plenty of materials, but you're short on zeny.";
- next;
+ case 4: // Rekka
mes "[Tetsu]";
- mes "In order to create a Fuuma Shuriken Daisharin[4], I require...";
- mes "^ff000020 Cracked Diamonds^000000,";
- mes "^ff00003 Oridecons^000000,";
- mes "1 Fuuma Shuriken Daisharin, and";
- mes "^ff000040,000 Zeny^000000.";
- mes "Remember these needed materials, and come back after you're positive you have them all.";
- close;
- }
- delitem 733,20;
- delitem 984,3;
- Zeny -= 40000;
- delitem 13301,1;
- getitem 13302,1;
- mes "[Tetsu]";
- mes "Hmm, very well.";
- mes "Looks like you've brought me the correct amount of materials and Zeny";
- mes "Here is your completed Fuuma Shuriken Daisharin[4].";
- close;
-
-//=====================REKKA========================
-M_REKKA:
- mes "[Tetsu]";
- mes "Hmm~ I see you've chose the ^ff0000Fuuma Shuriken Rekka^000000.";
- mes "In order to create a Fuuma Shuriken Rekka, I require";
- mes "50 Steel, 100 Live Coal";
- mes "100 Burning Hearts, 50 Burning Stones";
- mes "and 78,000 Zeny.";
- mes "Do you want me to create this item for you?";
- next;
- menu "Well .. erm .. it's kind of pricey",M_NOPE,"Yes! Make it for me!",-;
+ mes "Hmm~ I see you've chose the ^ff0000Fuuma Shuriken Rekka^000000.";
+ mes "In order to create a Fuuma Shuriken Rekka, I require";
+ mes "50 Steel, 100 Live Coal";
+ mes "100 Burning Hearts, 50 Burning Stones";
+ mes "and 78,000 Zeny.";
+ mes "Do you want me to create this item for you?";
+ next;
+ if (select("Well .. erm .. it's kind of pricey","Yes! Make it for me!") != 2) {
+ break;
+ }
- if(countitem(999)<50 || countitem(7098)<100 || countitem(7097)<100 || countitem(7521)<50){
- mes "[Tetsu]";
- mes "It looks like you haven't brought me enough materials to make you a Fuuma Shuriken Rekka.";
- next;
+ if(countitem(999)<50 || countitem(7098)<100 || countitem(7097)<100 || countitem(7521)<50){
+ mes "[Tetsu]";
+ mes "It looks like you haven't brought me enough materials to make you a Fuuma Shuriken Rekka.";
+ next;
+ mes "[Tetsu]";
+ mes "In order to create a Fuuma Shuriken Rekka, I require...";
+ mes "^ff000050 Steel^000000,^ff000050 Burning Stones^000000,";
+ mes "^ff0000100 Burning Hearts^000000,^ff0000100 Live Coal^000000,";
+ mes "and ^ff000078,000 Zeny^000000";
+ mes "Remember these needed materials, and come back after you're positive you have them all.";
+ close;
+ }
+ if(Zeny < 78000){
+ mes "[Tetsu]";
+ mes "Hmm.. You brought plenty of materials, but you're short on zeny.";
+ next;
+ mes "[Tetsu]";
+ mes "In order to create a Fuuma Shuriken Rekka, I require...";
+ mes "^ff000050 Steel^000000,^ff000050 Burning Stones^000000,";
+ mes "^ff0000100 Burning Hearts^000000,^ff0000100 Live Coal^000000,";
+ mes "and ^ff000078,000 Zeny^000000";
+ mes "Remember these needed materials, and come back after you're positive you have them all.";
+ close;
+ }
+ delitem 999,50;
+ delitem 7098,100;
+ delitem 7097,100;
+ delitem 7521,50;
+ Zeny -= 78000;
+ getitem 13303,1;
mes "[Tetsu]";
- mes "In order to create a Fuuma Shuriken Rekka, I require...";
- mes "^ff000050 Steel^000000,^ff000050 Burning Stones^000000,";
- mes "^ff0000100 Burning Hearts^000000,^ff0000100 Live Coal^000000,";
- mes "and ^ff000078,000 Zeny^000000";
- mes "Remember these needed materials, and come back after you're positive you have them all.";
+ mes "Hmm, very well.";
+ mes "Looks like you've brought me the correct amount of materials and Zeny";
+ mes "Here is your completed Fuuma Shuriken Rekka.";
close;
- }
- if(Zeny < 78000){
+ default: // Cancel
mes "[Tetsu]";
- mes "Hmm.. You brought plenty of materials, but you're short on zeny.";
- next;
- mes "[Tetsu]";
- mes "In order to create a Fuuma Shuriken Rekka, I require...";
- mes "^ff000050 Steel^000000,^ff000050 Burning Stones^000000,";
- mes "^ff0000100 Burning Hearts^000000,^ff0000100 Live Coal^000000,";
- mes "and ^ff000078,000 Zeny^000000";
- mes "Remember these needed materials, and come back after you're positive you have them all.";
+ mes "What a shame.";
+ mes "I wanted to show you the weapons I put my heart and soul into making them.";
+ mes "If you ever have second thoughts, it's never too late to come back and ask.";
close;
}
- delitem 999,50;
- delitem 7098,100;
- delitem 7097,100;
- delitem 7521,50;
- Zeny -= 78000;
- getitem 13303,1;
- mes "[Tetsu]";
- mes "Hmm, very well.";
- mes "Looks like you've brought me the correct amount of materials and Zeny";
- mes "Here is your completed Fuuma Shuriken Rekka.";
- close;
-
-//=====================I'M SORRY========================
-M_NOPE:
+ // It's kind of pricey
mes "[Tetsu]";
mes "Hmm. The cost to create this item is kind of expensive...";
mes "All right. If you do gather all the required materials one day, come back and see me.";
close;
-
-M_CANCEL:
- mes "[Tetsu]";
- mes "What a shame.";
- mes "I wanted to show you the weapons I put my heart and soul into making them.";
- mes "If you ever have second thoughts, it's never too late to come back and ask.";
- close;
}