diff options
-rw-r--r-- | db/craft_db.conf | 5 | ||||
-rw-r--r-- | npc/012-1/jack.txt | 1 | ||||
-rw-r--r-- | npc/014-3/fountain.txt | 2 | ||||
-rw-r--r-- | npc/020-5/bracco.txt | 64 |
4 files changed, 70 insertions, 2 deletions
diff --git a/db/craft_db.conf b/db/craft_db.conf index 3abcb874d..3de9bbca5 100644 --- a/db/craft_db.conf +++ b/db/craft_db.conf @@ -643,6 +643,11 @@ craft_db: ( /****************************************************************************/ // Crafting System (ID 51~100, Flag 16) +// 51~71 → Swords +// 72~82 → Bows and Wands (5x each) +// 83~87 → Armor Chestplates +// 88~92 → Armor Helmets +// 93+ → TODO ////////////////////////////////////////////////////////////////////////////// // Output PileOfAsh // Require 1x EverburnPowder to lit (maybe Sulphur?) diff --git a/npc/012-1/jack.txt b/npc/012-1/jack.txt index 3eaf5cf54..4c44cdd43 100644 --- a/npc/012-1/jack.txt +++ b/npc/012-1/jack.txt @@ -52,7 +52,6 @@ L_Polish: mesq l("You can't afford my services for that amount. Sorry."); } - getinventorylist; inventoryplace WoodenLog, .@count; Zeny = Zeny - .@Cost; diff --git a/npc/014-3/fountain.txt b/npc/014-3/fountain.txt index f14d23b0d..b721fd2ae 100644 --- a/npc/014-3/fountain.txt +++ b/npc/014-3/fountain.txt @@ -26,7 +26,7 @@ goto L_NotEnoughBottles; if (Zeny < .@Cost) goto L_NotEnoughMoney; - getinventorylist; + inventoryplace BottleOfTonoriWater, .@count; Zeny=Zeny-.@Cost; diff --git a/npc/020-5/bracco.txt b/npc/020-5/bracco.txt index 0854387a2..6a914a477 100644 --- a/npc/020-5/bracco.txt +++ b/npc/020-5/bracco.txt @@ -7,6 +7,31 @@ 020-5,31,25,0 script Bracco NPC_M_SHOPKEEPER,{ goto L_Start; + // Meltdown( item, price, {id1, amount1}, {id2, amount2}... ) + function Meltdown { + if (getargcount() < 2 || getargcount() % 2 != 0) + return Exception("Faulty learning Meltdown command invoked - error"); + + .@index=getarg(0); + .@price=getarg(1); + mesn; + mesc l("Really melt down your @@? It'll cost you @@ GP. This action cannot be undone!", getinvindexlink(.@index), .@price), 1; + next; + if (askyesno() == ASK_NO || Zeny < .@price) + return; + + failedremovecardsindex .@index, 0; + Zeny-=.@price; + + // TODO: Inventoryplace + // Add Items (if inventory is full, your fault and not mine) + for (.@i=2;.@i < getargcount(); .@i++) { + getitem getarg(.@i), getarg(.@i+1); + .@i++; + } + return; + } + // blacksmith_create( BaseItem1, Amount, BaseItem2, Amount, PrizeItem, Price ) function blacksmith_create { .@base1=getarg(0); @@ -59,11 +84,16 @@ L_Start: select l("Trade"), l("I'm actually looking for an item forged!"), + l("I would like an item melted!"), l("Leave"); + mes ""; if (@menu == 2) goto L_Forge; + if (@menu == 3) + goto L_Meltdown; + closedialog; if (@menu == 1) shop .name$; @@ -95,6 +125,40 @@ L_Forge: } goto L_Forge; +L_Meltdown: + mesn; + mesc l("What item do you want to melt down? This is irreversible, and may return some ingots to you, but there is no way to tell how many you'll receive!"), 1; + mesc l("Each item have it's own tax."); + .@it=requestitemindex(); + delinventorylist(); + getinventorylist(); + .@id=@inventorylist_id[.@it]; + mes ""; + // Returns 50~70% of invested ingots, rounded down. Never returns Coal. + switch (.@id) { + case WoodenSword: + Meltdown(.@it, 500, WoodenLog, rand2(5,10)); // Exception: 25~50% returned + break; + case BugSlayer: + Meltdown(.@it, 1000, IronIngot, rand2(4,5)); + break; + case ShortGladius: + Meltdown(.@it, 1500, IronIngot, rand2(6,8)); + break; + case Backsword: + Meltdown(.@it, 2000, IronIngot, rand2(9,12), TinIngot, rand2(1,2)); + break; + case ShortSword: + Meltdown(.@it, 2500, IronIngot, rand2(12,16), TinIngot, rand2(2,3)); + break; + default: + mesn; + mesq l("I cannot melt this. I only melt down equipment, and not everything I know how to!"); + next; + break; + } + goto L_Meltdown; + OnInit: .@npcId = getnpcid(.name$); setunitdata(.@npcId, UDT_HEADTOP, NPCEyes); |