diff options
Diffstat (limited to 'npc/custom/card_remover.txt')
-rw-r--r-- | npc/custom/card_remover.txt | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/npc/custom/card_remover.txt b/npc/custom/card_remover.txt new file mode 100644 index 000000000..b2dce9b6f --- /dev/null +++ b/npc/custom/card_remover.txt @@ -0,0 +1,148 @@ +//===== rAthena Script ======================================= +//= Card Removal NPC +//===== By: ================================================== +//= TyrNemesis^ +//===== Current Version: ===================================== +//= 1.2 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Removes cards from equipped items. +//===== Additional Comments: ================================= +//= 1.0 First version. [TyrNemesis^] +//= 1.2 Optimized and fixed getequipname menu. [Kisuka] +//============================================================ + +prt_in,28,73,4 script Wise Old Woman#eAcustom 78,{ + set .zenycost,200000; // Set base cost in zeny of the card remover services + set .percardcost,25000; // set cost per card of the card remover services + set .faildestroy,1; // Should the card remover have a chance of failure that destroys items? 1 = Yes, 0 = No. + mes "[Wise Old Woman]"; + mes "Good day, young one. I have the power to remove cards that you have compounded onto your equipment. Does this idea please you?"; + next; + switch(select("Yes, it does.:What do you charge?:No thanks.")) { + case 1: + mes "[Wise Old Woman]"; + mes "Very well. Which item shall I examine for you?"; + next; + + setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3"; + set .@menu$,""; + for( set .@i,1; .@i <= 10; set .@i,.@i+1 ) + { + if( getequipisequiped(.@i) ) + set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]"; + + set .@menu$, .@menu$ + ":"; + } + set .@part,select(.@menu$); + if(!getequipisequiped(.@part)) { + mes "[Wise Old Woman]"; + mes "Young one... Your not wearing anything there that I can remove cards from."; + close; + } + if(getequipcardcnt(.@part) == 0) { + mes "[Wise Old Woman]"; + mes "Young one... There are no cards compounded on this item. I can do nothing with it, I'm afraid."; + close; + } + set .@cardcount,getequipcardcnt(.@part); + + if (!checkweight(1202,(.@cardcount+1))) { + mes "^3355FFJust a minute!"; + mes "I can't offer any of my"; + mes "services to you because"; + mes "you're carrying too much"; + mes "stuff. Put your extra items in"; + mes "Kafra Storage and come again~"; + close; + } + mes "[Wise Old Woman]"; + mes "This item has " + .@cardcount + " cards compounded on it. To perform my magic, I will need " + (.zenycost+(.@cardcount * .percardcost)) + " zeny, a ^0000FFStar Crumb^000000, and a ^0000FFYellow Gemstone^000000."; + next; + if(select("Very well. Do it.:Nevermind.") == 2) { + mes "[Wise Old Woman]"; + mes "Very well. Return at once if you seek my services."; + close; + } + if((zeny < (.zenycost+(.@cardcount * .percardcost))) || (countitem(1000) < 1) || (countitem(715) < 1)) { + mes "[Wise Old Woman]"; + mes "You do not have all the items I require to work my magic, child. Come again when you do."; + close; + } + mes "[Wise Old Woman]"; + mes "Before I begin, I must warn you--I may fail. If I do, I may destroy the cards, the item, or both. I do not give refunds. That being said, which is more important to you: The cards, or the item?"; + next; + switch(select("I changed my mind about this.:The item.:The cards.")) { + case 1: + mes "[Wise Old Woman]"; + mes "Very well. Return at once if you seek my services."; + close; + case 2: + set .@failtype,1; + break; + case 3: + set .@failtype,2; + } + mes "[Wise Old Woman]"; + mes "Very well. I shall begin."; + set zeny,zeny - (.zenycost+(.@cardcount * .percardcost)); + delitem 1000,1; + delitem 715,1; + + // Replace the constants in the next 3 lines with failure chance values defined in refine_db.txt + // First value = Total failure chance (item and cards destroyed) + // Second value = Partial failure chance (one or the other is destroyed, player decides which one is safe) + // Third value = Harmless failure chance (all that's lost is your investment) + + set .@failchance,rand(100); + if (.faildestroy==1) { + if(.@failchance < 2) { + next; + failedremovecards .@part,0; + mes "[Wise Old Woman]"; + mes "The process was a total failure. I am afraid the item and the cards were destroyed."; + close; + } + + if(.@failchance < 8) { + if (.@failtype == 1) { + next; + failedremovecards .@part,1; + mes "[Wise Old Woman]"; + mes "While I have managed to remove the cards from the item, they were destroyed in the process. The item, however, is okay."; + close; + } + + if (.@failtype == 2) { + next; + failedremovecards .@part,2; + mes "[Wise Old Woman]"; + mes "Most unfortunate. I succeeded at removing the cards, but the item itself was destroyed in the process."; + close; + } + } + } + + if(.@failchance < 10) { + next; + failedremovecards .@part,3; + mes "[Wise Old Woman]"; + mes "I have failed to remove the cards. Luckily, however, both the item and the cards are still okay."; + close; + } + next; + successremovecards .@part; + mes "[Wise Old Woman]"; + mes "The process was a success. Here are your cards and your item. Farewell."; + close; + case 2: + mes "[Wise Old Woman]"; + mes "I charge a flat fee of "+.zenycost+" zeny, plus "+.percardcost+" zeny for each card I remove from the item. In addition, I need a star crumb and a yellow gemstone to work my magic."; + close; + case 3: + mes "[Wise Old Woman]"; + mes "Very well. Return at once if you seek my services."; + close; + } +} |