summaryrefslogtreecommitdiff
path: root/npc/events
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/events
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/events')
-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
8 files changed, 439 insertions, 457 deletions
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";