summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
Diffstat (limited to 'npc')
-rw-r--r--npc/003-1/malivox.txt53
-rw-r--r--npc/005-6/zitoni.txt67
-rw-r--r--npc/009-3/kevin.txt42
-rw-r--r--npc/012-4/wyara.txt48
-rw-r--r--npc/020-3/mede.txt45
-rw-r--r--npc/024-12/alicia.txt42
-rw-r--r--npc/functions/resetstatus.txt63
-rw-r--r--npc/scripts.conf1
8 files changed, 81 insertions, 280 deletions
diff --git a/npc/003-1/malivox.txt b/npc/003-1/malivox.txt
index 9087c9474..cf080f3e7 100644
--- a/npc/003-1/malivox.txt
+++ b/npc/003-1/malivox.txt
@@ -34,60 +34,13 @@ L_ResetStats:
mesq l("Status point reset can't be undone. Do you really want this?");
L_ConfirmReset:
- switch (select(lg("Yes, I am sure."),
- lg("I need to think about it..."),
- lg("I won't need it, thank you.")))
- {
- case 1:
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Let me just have a quick look at you. Hm... I will need @@ GP to reset your stats.", .@plush_count);
-
- select
- rif(Zeny >= .@plush_count, l("Here, take as much as you need, I have plenty!")),
- rif(Zeny > 0 && Zeny < .@plush_count, l("I don't have enough money...")),
- rif(Zeny == 0, l("Oh no, I don't have any money on me right now.")),
- l("I have to go, sorry.");
-
- if (@menu > 1)
- {
- goto L_Quit;
- }
-
- // TODO: I think there were functions to deal with GP
- set Zeny, Zeny-.@plush_count;
-
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Thank you."),
- l("Now stand still... It should not take much time...");
-
- .@wasSP = StatusPoint;
- resetstatus;
- if (StatusPoint == .@wasSP)
- {
- speech S_LAST_NEXT,
- l("It seems that you have no status points to reset!"),
- l("But the money you brought was really awesome you know."),
- l("Come back when you will really need me.");
- }
- else
- {
- speech S_LAST_NEXT,
- l("Let's see... @@ of your status points have just been reset!", StatusPoint - .@wasSP),
- l("Spend it wisely this time."),
- l("But you are welcome to reset your stats again! I need the money.");
- }
- goto L_Quit;
-
- case 2:
- goto L_Quit;
- case 3:
- goto L_Quit;
- }
+ ConfirmStatusReset();
+ goto L_Quit;
L_Quit:
-
goodbye;
+ end;
OnInit:
.@npcId = getnpcid(.name$);
diff --git a/npc/005-6/zitoni.txt b/npc/005-6/zitoni.txt
index b8d3c1b52..a1444c7cf 100644
--- a/npc/005-6/zitoni.txt
+++ b/npc/005-6/zitoni.txt
@@ -80,69 +80,14 @@ L_Menu:
}
L_ResetStats:
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- lg("Status point reset can't be undone. Are you sure about this?");
+ mesn;
+ mesq l("Status point reset can't be undone. Do you really want this?");
L_ConfirmReset:
- switch (select(lg("Yes, I am sure."),
- lg("I need to think about it..."),
- lg("I won't need it, thank you.")))
- {
- case 1:
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Let me just have a quick look at you. Hm... I will need @@ GP to reset your stats.", .@price);
-
- select
- rif(Zeny >= .@price, l("Here, take as much as you need, I have plenty!")),
- rif(Zeny > 0 && Zeny < .@price, l("I don't have enough money...")),
- rif(Zeny == 0, l("Oh no, I don't have any money on me right now.")),
- l("I have to go, sorry.");
-
- if (@menu > 1)
- {
- goto L_Later;
- }
-
- // TODO: I think there were functions to deal with GP
- set Zeny, Zeny-.@price;
-
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Thank you."),
- l("Now stand still... It should not take much time...");
-
- .@wasSP = StatusPoint;
- resetstatus;
-
- if (StatusPoint == .@wasSP)
- {
- speech S_LAST_NEXT,
- l("It seems that you have no status points to reset!"),
- l("But the money you brought was really awesome you know."),
- l("Come back when you will really need me.");
- } else {
- speech S_LAST_NEXT,
- l("Let's see... @@ of your status points have just been reset!", StatusPoint - .@wasSP),
- l("Spend it wisely this time."),
- l("But you are welcome to reset your stats again! I need the money.");
- }
- goto L_Quit;
-
- case 2:
- goto L_Later;
- case 3:
- goto L_Never;
- }
-
-L_Later:
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Come back soon!");
-
- goto L_Quit;
-
-L_Never:
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("I am sure that you will change your mind.");
-
+ if (BaseLevel <= 10)
+ ConfirmStatusReset(0);
+ else
+ ConfirmStatusReset();
goto L_Quit;
L_OtherPotion:
diff --git a/npc/009-3/kevin.txt b/npc/009-3/kevin.txt
index faf169088..cc51384f2 100644
--- a/npc/009-3/kevin.txt
+++ b/npc/009-3/kevin.txt
@@ -38,47 +38,7 @@ L_ResetStats:
mesq l("Status point reset can't be undone. Do you really want this?");
L_ConfirmReset:
- select
- lg("Yes, I am sure."),
- lg("I need to think about it...");
-
- switch (@menu)
- {
- case 1:
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Let me just have a quick look at you. Hm... I will need @@ GP to reset your stats.", .@plush_count);
-
- select
- rif(Zeny >= .@plush_count, l("Here, take as much as you need, I have plenty!")),
- rif(Zeny > 0 && Zeny < .@plush_count, l("I don't have enough money...")),
- rif(Zeny == 0, l("Oh no, I don't have any money on me right now.")),
- l("I have to go, sorry.");
-
- if (@menu > 1) {
- goto L_Quit;
- }
-
- // TODO: I think there were functions to deal with GP
- set Zeny, Zeny-.@plush_count;
-
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Thank you."),
- l("Now stand still... It should not take much time...");
-
- .@wasSP = StatusPoint;
- resetstatus;
- if (StatusPoint == .@wasSP) {
- speech S_LAST_NEXT,
- l("It seems that you have no status points to reset!"),
- l("But the money you brought was really awesome you know."),
- l("Come back when you will really need me.");
- } else {
- speech S_LAST_NEXT,
- l("Let's see... @@ of your status points have just been reset!", StatusPoint - .@wasSP),
- l("Spend it wisely this time."),
- l("But you are welcome to reset your stats again! I need the money.");
- }
- }
+ ConfirmStatusReset();
goto L_Quit;
L_Powder:
diff --git a/npc/012-4/wyara.txt b/npc/012-4/wyara.txt
index f4a7680b5..1ae8b1256 100644
--- a/npc/012-4/wyara.txt
+++ b/npc/012-4/wyara.txt
@@ -48,52 +48,8 @@ L_ResetStats:
mesq l("Status point reset can't be undone. Do you really want this?");
L_ConfirmReset:
- switch (select(lg("Yes, I am sure."),
- lg("I need to think about it..."),
- lg("I won't need it, thank you.")))
- {
- case 1:
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Let me just have a quick look at you. Hm... I will need @@ GP to reset your stats.", .@plush_count);
-
- select
- rif(Zeny >= .@plush_count, l("Here, take as much as you need, I have plenty!")),
- rif(Zeny > 0 && Zeny < .@plush_count, l("I don't have enough money...")),
- rif(Zeny == 0, l("Oh no, I don't have any money on me right now.")),
- l("I have to go, sorry.");
-
- if (@menu > 1) {
- goto L_Quit;
- }
-
- // TODO: I think there were functions to deal with GP
- set Zeny, Zeny-.@plush_count;
-
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Thank you."),
- l("Now stand still... It should not take much time...");
-
- .@wasSP = StatusPoint;
- resetstatus;
- if (StatusPoint == .@wasSP) {
- speech S_LAST_NEXT,
- l("It seems that you have no status points to reset!"),
- l("But the money you brought was really awesome you know."),
- l("Come back when you will really need me.");
- } else {
- speech S_LAST_NEXT,
- l("Let's see... @@ of your status points have just been reset!", StatusPoint - .@wasSP),
- l("Spend it wisely this time."),
- l("But you are welcome to reset your stats again! I need the money.");
- }
- goto L_Quit;
-
- case 2:
- goto L_Quit;
- case 3:
- goto L_Quit;
- }
-
+ ConfirmStatusReset();
+ goto L_Quit;
L_Piberries:
mesn;
diff --git a/npc/020-3/mede.txt b/npc/020-3/mede.txt
index 149a877ae..d35e7624d 100644
--- a/npc/020-3/mede.txt
+++ b/npc/020-3/mede.txt
@@ -38,47 +38,10 @@ L_ResetStats:
mesq l("Status point reset can't be undone. Do you really want this?");
L_ConfirmReset:
- select
- lg("Yes, I am sure."),
- lg("I need to think about it...");
-
- switch (@menu)
- {
- case 1:
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Let me just have a quick look at you. Hm... I will need @@ GP to reset your stats.", .@plush_count);
-
- select
- rif(Zeny >= .@plush_count, l("Here, take as much as you need, I have plenty!")),
- rif(Zeny > 0 && Zeny < .@plush_count, l("I don't have enough money...")),
- rif(Zeny == 0, l("Oh no, I don't have any money on me right now.")),
- l("I have to go, sorry.");
-
- if (@menu > 1) {
- goto L_Quit;
- }
-
- // TODO: I think there were functions to deal with GP
- set Zeny, Zeny-.@plush_count;
-
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Thank you."),
- l("Now stand still... It should not take much time...");
-
- .@wasSP = StatusPoint;
- resetstatus;
- if (StatusPoint == .@wasSP) {
- speech S_LAST_NEXT,
- l("It seems that you have no status points to reset!"),
- l("But the money you brought was really awesome you know."),
- l("Come back when you will really need me.");
- } else {
- speech S_LAST_NEXT,
- l("Let's see... @@ of your status points have just been reset!", StatusPoint - .@wasSP),
- l("Spend it wisely this time."),
- l("But you are welcome to reset your stats again! I need the money.");
- }
- }
+ if (BaseLevel <= 10)
+ ConfirmStatusReset(0);
+ else
+ ConfirmStatusReset();
goto L_Quit;
L_MonsterPot:
diff --git a/npc/024-12/alicia.txt b/npc/024-12/alicia.txt
index 7c78da873..05c653c85 100644
--- a/npc/024-12/alicia.txt
+++ b/npc/024-12/alicia.txt
@@ -36,47 +36,7 @@ L_ResetStats:
mesq l("Status point reset can't be undone. Do you really want this?");
L_ConfirmReset:
- select
- lg("Yes, I am sure."),
- lg("I need to think about it...");
-
- switch (@menu)
- {
- case 1:
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Let me just have a quick look at you. Hm... I will need @@ GP to reset your stats.", .@plush_count);
-
- select
- rif(Zeny >= .@plush_count, l("Here, take as much as you need, I have plenty!")),
- rif(Zeny > 0 && Zeny < .@plush_count, l("I don't have enough money...")),
- rif(Zeny == 0, l("Oh no, I don't have any money on me right now.")),
- l("I have to go, sorry.");
-
- if (@menu > 1) {
- goto L_Quit;
- }
-
- // TODO: I think there were functions to deal with GP
- set Zeny, Zeny-.@plush_count;
-
- speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
- l("Thank you."),
- l("Now stand still... It should not take much time...");
-
- .@wasSP = StatusPoint;
- resetstatus;
- if (StatusPoint == .@wasSP) {
- speech S_LAST_NEXT,
- l("It seems that you have no status points to reset!"),
- l("But the money you brought was really awesome you know."),
- l("Come back when you will really need me.");
- } else {
- speech S_LAST_NEXT,
- l("Let's see... @@ of your status points have just been reset!", StatusPoint - .@wasSP),
- l("Spend it wisely this time."),
- l("But you are welcome to reset your stats again! I need the money.");
- }
- }
+ ConfirmStatusReset();
goto L_Quit;
L_Recipe:
diff --git a/npc/functions/resetstatus.txt b/npc/functions/resetstatus.txt
new file mode 100644
index 000000000..a78e2235e
--- /dev/null
+++ b/npc/functions/resetstatus.txt
@@ -0,0 +1,63 @@
+// TMW2 Script.
+// Authors:
+// Vasily_Makarov (original from Evol)
+// Jesusalva
+// Description:
+// Status Reset NPC utils
+
+// Return wasSP on success, 0 on failure
+// ConfirmReset( {price} )
+function script ConfirmStatusReset {
+ .@plush_count=(BaseLevel*210-(10*210))/(BaseLevel/10);
+ if (getarg(0,-1) >= 0)
+ .@plush_count=getarg(0,-1);
+
+ switch (select(lg("Yes, I am sure."),
+ lg("I need to think about it..."),
+ lg("I won't need it, thank you.")))
+ {
+ case 1:
+ speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
+ l("Let me just have a quick look at you. Hm... I will need @@ GP to reset your stats.", .@plush_count);
+
+ select
+ rif(Zeny >= .@plush_count, l("Here, take as much as you need, I have plenty!")),
+ rif(Zeny > 0 && Zeny < .@plush_count, l("I don't have enough money...")),
+ rif(Zeny == 0, l("Oh no, I don't have any money on me right now.")),
+ l("I have to go, sorry.");
+
+ if (@menu > 1) {
+ return 0;
+ }
+
+ speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
+ l("Thank you."),
+ l("Now stand still... It should not take much time...");
+
+ // Delete the GP and THEN reset the status
+ Zeny-=.@plush_count;
+ .@wasSP = StatusPoint;
+ resetstatus();
+ if (StatusPoint == .@wasSP) {
+ speech S_LAST_NEXT,
+ l("It seems that you have no status points to reset!"),
+ l("But the money you brought was really awesome you know."),
+ l("Come back when you will really need me.");
+ } else {
+ speech S_LAST_NEXT,
+ l("Let's see... @@ of your status points have just been reset!", StatusPoint - .@wasSP),
+ l("Spend it wisely this time."),
+ l("But you are welcome to reset your stats again! I need the money.");
+ }
+ return .@wasSP;
+
+ case 2:
+ return 0;
+ case 3:
+ return 0;
+ }
+ Exception("Unknown Error: ConfirmStatusReset() failed");
+ return 0;
+
+}
+
diff --git a/npc/scripts.conf b/npc/scripts.conf
index e48b7b55a..ef41340c9 100644
--- a/npc/scripts.conf
+++ b/npc/scripts.conf
@@ -57,6 +57,7 @@
"npc/functions/nurse.txt",
"npc/functions/petsales.txt",
"npc/functions/refine.txt",
+"npc/functions/resetstatus.txt",
"npc/functions/riddle.txt",
"npc/functions/savepoint.txt",
"npc/functions/shake.txt",