From 4a914931dbaf14a3b5a55327cea4cb8026152b65 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Thu, 23 May 2019 18:35:35 -0300 Subject: Unify Status Reset Logic. Status Reset prices are now unified. --- npc/003-1/malivox.txt | 53 ++-------------------------------- npc/005-6/zitoni.txt | 67 ++++--------------------------------------- npc/009-3/kevin.txt | 42 +-------------------------- npc/012-4/wyara.txt | 48 ++----------------------------- npc/020-3/mede.txt | 45 +++-------------------------- npc/024-12/alicia.txt | 42 +-------------------------- npc/functions/resetstatus.txt | 63 ++++++++++++++++++++++++++++++++++++++++ npc/scripts.conf | 1 + 8 files changed, 81 insertions(+), 280 deletions(-) create mode 100644 npc/functions/resetstatus.txt 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", -- cgit v1.2.3-60-g2f50