summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
Diffstat (limited to 'npc')
-rw-r--r--npc/Changelog.txt3
-rw-r--r--npc/merchants/advanced_refiner.txt232
-rw-r--r--npc/scripts_athena.conf1
3 files changed, 236 insertions, 0 deletions
diff --git a/npc/Changelog.txt b/npc/Changelog.txt
index ceaaea7a3..3e8706c5d 100644
--- a/npc/Changelog.txt
+++ b/npc/Changelog.txt
@@ -1,5 +1,8 @@
Date Added
======
+2007/10/24
+ * Rev. 11570 Added the Advanced Refiner for Enriched ores. [L0ne_W0lf]
+ - I've had this done for awhile now, but I've never submitted it. XD
2007/10/23
* Rev. 11568 Removed duplicate Morroc city npc (bugreport:277) [L0ne_W0lf]
- Fix to the knight job quest. (bad areawarp destination)
diff --git a/npc/merchants/advanced_refiner.txt b/npc/merchants/advanced_refiner.txt
new file mode 100644
index 000000000..2620dccfb
--- /dev/null
+++ b/npc/merchants/advanced_refiner.txt
@@ -0,0 +1,232 @@
+//===== eAthena Script =======================================
+//= Advanced Refiner
+//===== By: ==================================================
+//= L0ne_W0lf
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= Eathena SVN
+//===== Description: =========================================
+//= [Aegis Conversion]
+//= Refiner that uses Enriched ores to increase upgrade success.
+//= After a conversation with Doddler, it's been established that
+//= the advanced refiner works similar the the "Bubble Gum" item.
+//= The success percentage is not "increased" however, if it fails
+//= You get a second try. This tries twice at the same time,
+//= effectively giving you a re-roll on your attempt.
+//= - Dialog is only partly official to iRO.
+//= - Uses the iRO position for this NPC.
+//===== Additional Comments: =================================
+//= 1.0 First Version. [L0ne_W0lf]
+//============================================================
+
+payon,174,138,0 script Suhnbi#cash 85,{
+ mes "[Suhnbi]";
+ mes "I am the Armsith";
+ mes "I can refine all kinds of weapons,";
+ mes "armor and equipment, so let me";
+ mes "know what you want to refine.";
+ next;
+ set .@strRetPart1$,getequipname(1);
+ set .@strRetPart2$,getequipname(2);
+ set .@strRetPart3$,getequipname(3);
+ set .@strRetPart4$,getequipname(4);
+ set .@strRetPart5$,getequipname(5);
+ set .@strRetPart6$,getequipname(6);
+ set .@strRetPart7$,getequipname(7);
+ set .@strRetPart8$,getequipname(8);
+ set .@strRetPart9$,getequipname(9);
+ set .@strRetPart10$,getequipname(10);
+
+ set .@menu$,.@strRetPart1$+":"+.@strRetPart2$+":"+.@strRetPart3$+":"+.@strRetPart4$+":"+.@strRetPart5$+":"+.@strRetPart6$+":"+.@strRetPart7$+":"+.@strRetPart8$+":"+.@strRetPart9$+":"+.@strRetPart10$;
+
+ switch(select(.@menu$)) {
+ case 1:
+ set .@part,1;
+ if (getequipisequiped(1) == 0) {
+ mes "[Suhnbi]";
+ mes "Do you want me to refine your skull?";
+ close;
+ }
+ break;
+ case 2:
+ set .@part,2;
+ if (getequipisequiped(2) == 0) {
+ mes "[Suhnbi]";
+ mes "I'll refine your torso with my own passionate body!";
+ close;
+ }
+ break;
+ case 3:
+ set .@part,3;
+ if (getequipisequiped(3) == 0) {
+ mes "[Suhnbi]";
+ mes "Sorry, there ain't any technology yet to put rockets on your left hand...";
+ close;
+ }
+ break;
+ case 4:
+ set .@part,4;
+ if (getequipisequiped(4) == 0) {
+ mes "[Suhnbi]";
+ mes "Sorry, there ain't any technology yet to put rockets on your right hand...";
+ close;
+ }
+ break;
+ case 5:
+ set .@part,5;
+ if (getequipisequiped(5) == 0) {
+ mes "[Suhnbi]";
+ mes "You're not even wearing a garment? Are you?";
+ close;
+ }
+ break;
+ case 6:
+ set .@part,6;
+ if (getequipisequiped(6) == 0) {
+ mes "[Suhnbi]";
+ mes "What do I look like, a makeover artist? I can't refine your bare feet!";
+ close;
+ }
+ break;
+ case 7:
+ set .@part,7;
+ if (getequipisequiped(7) == 0) {
+ mes "[Suhnbi]";
+ mes "Um... You're not wearing an Accessory.";
+ close;
+ }
+ break;
+ case 8:
+ set .@part,8;
+ if (getequipisequiped(8) == 0) {
+ mes "[Suhnbi]";
+ mes "Accessory? You're not wearing one of those.";
+ close;
+ }
+ break;
+ case 9:
+ set .@part,9;
+ if (getequipisequiped(9) == 0) {
+ mes "[Suhnbi]";
+ mes "I refine equipment. I don't give hair cuts.";
+ close;
+ }
+ break;
+ case 10:
+ set .@part,10;
+ if (getequipisequiped(10) == 0) {
+ mes "[Suhnbi]";
+ mes "What am I, your personal hairstylist?. Go to the salon if you want work done on your precious hair.";
+ close2;
+ }
+ break;
+ }
+
+ if (getequipisenableref(.@part) == 0) {
+ mes "[Suhnbi]";
+ mes "I don't think I can refine this item at all.";
+ close;
+ }
+ if (getequipisidentify(.@part) == 0) {
+ mes "[Suhnbi]";
+ mes "This is has not been identified. So, it can't be refined...";
+ close;
+ }
+ if (getequiprefinerycnt(.@part) >= 10) {
+ mes "[Suhnbi]";
+ mes "This item cannot be refined because it has already reached its maximum level...";
+ close;
+ }
+ // Make sure you have the neccessary items and Zeny to refine your items
+ // Determines chance of failure and verifies that you want to continue.
+ switch(getequipweaponlv(.@part)) {
+ case 1: callsub S_RefineValidate,1,7620,50,.@part; break;
+ case 2: callsub S_RefineValidate,2,7620,200,.@part; break;
+ case 3: callsub S_RefineValidate,3,7620,5000,.@part; break;
+ case 4: callsub S_RefineValidate,4,7620,20000,.@part; break;
+ default: callsub S_RefineValidate,0,7619,2000,.@part; break;
+ }
+
+ if (getequippercentrefinery(.@part) > rand(100) || getequippercentrefinery(.@part) > rand(100)) {
+ mes "[Suhnbi]";
+ mes "Clink! Clank! Clunk!";
+ SuccessRefItem .@part;
+ next;
+ Emotion e_no1;
+ mes "[Suhnbi]";
+ mes "Here you are! It's done.";
+ mes "It's been a while since I've made such a fine weapon. You must be happy because it has become stronger!";
+ close;
+ }
+ else {
+ mes "[Suhnbi]";
+ mes "Clink! Clank! Clunk!";
+ FailedRefItem .@part;
+ next;
+ if (rand(5) == 1)
+ Emotion e_cash;
+ else
+ Emotion e_omg;
+ mes "[Suhnbi]";
+ mes "Cough!!!!";
+ next;
+ mes "[Suhnbi]";
+ mes "Cough...Cough..";
+ mes "What a shame...";
+ mes "Your equipment broke during hte refining process. I had told you earlier this might happen!";
+ close;
+ }
+
+S_RefineValidate:
+ mes "[Suhnbi]";
+ if (getarg(0))
+ mes "A level "+getarg(0)+" weapon...";
+ mes "To refine this I need one ^ff9999"+getitemname(getarg(1))+"^000000 and a service fee of "+getarg(2)+" Zeny.";
+ mes "Do you wish to continue?";
+ next;
+ if (select("Yes:No") == 1) {
+ if (getequippercentrefinery(getarg(3)) < 100) {
+ mes "[Suhnbi]";
+ mes "Wow!!";
+ mes "This weapon, probably";
+ mes "looks like it's been refined...";
+ mes "many times...";
+ mes "It may break if";
+ mes "you refine it again.";
+ next;
+ mes "And if it breaks,";
+ mes "you can't use it anymore!";
+ mes "All the cards in it and the";
+ mes "properties";
+ mes "^ff0000will be lost^000000!!";
+ mes "^ff0000 besides, the equipment will break!^000000";
+ mes " ";
+ mes "Are you sure you still want to continue?";
+ next;
+ if (select("Yes:No") == 2) {
+ mes "[Suhnbi]";
+ mes "I completely agree...";
+ mes "I might be a great refiner, but something even I make mistakes.";
+ close;
+ }
+ }
+ if (countitem(getarg(1)) > 0 && Zeny > getarg(2)) {
+ delitem getarg(1),1;
+ set zeny,zeny-getarg(2);
+ return;
+ }
+ else {
+ mes "[Suhnbi]";
+ mes "You don't seem to have enough Zeny or "+getitemname(getarg(1))+"...";
+ mes "Go get some more. I'll be here ll day if you need me.";
+ close;
+ }
+ }
+ else {
+ mes "[Suhnbi]";
+ mes "Yeah... There's no need to rush.";
+ mes "Take your time.";
+ close;
+ }
+}
diff --git a/npc/scripts_athena.conf b/npc/scripts_athena.conf
index ec37da6c5..feef311f8 100644
--- a/npc/scripts_athena.conf
+++ b/npc/scripts_athena.conf
@@ -56,6 +56,7 @@ npc: npc/merchants/ammo_dealer.txt
npc: npc/merchants/socket_enchant.txt
npc: npc/merchants/novice_exchange.txt
npc: npc/merchants/gemstone.txt
+npc: npc/merchants/advanced_refiner.txt
// --------------------------------------------------------------
// -------------------------- Airport ---------------------------
npc: npc/airports/airships.txt