// TMW2 Script
// Author:
// Jesusalva
// Description:
// Sells and crafts jewels
//
// Notes:
// Gold/Silver/Bronze Ore (dropped by bifs) → Pieces or Ingot, depends on what you want to forge
// Jeweler only works with Gold/Silver/Bronze PIECES. The Ingots are for forges.
// Jeweler can also polish raw gemstones for a comission ($$$)
// Polished gemstones can be inserted on rings.
// The most precious the ring, heavier. All three rings can be swapped by a
// more powerful ring. Still pending discussion.
003-5,33,37,0 script Jeweler NPC_FEMALE,{
mesn;
mesq l("Hello!");
goto L_Menu;
L_Menu:
mes "";
mesn strcharinfo(0);
menu
l("I want to shop."), -,
l("I want to craft rings."), L_Craft,
rif(countitem(GoldenRing) >= 1 && is_admin(), l("I want to add gemstones to a ring.")), L_Gemstone,
l("Nothing, sorry."), L_Close;
openshop;
closedialog;
close;
L_Craft:
mes "";
mesn;
mesq l("Of course, you can trade 5 @@, with 12000 GP, for a @@.", getitemlink(GoldPieces), getitemlink(GoldenRing));
next;
menu
rif(countitem(GoldPieces) >= 5 && Zeny >= 12000, l("Yes, deal. Gimme the ring.")), -,
l("...I'll be back later."), L_Close;
inventoryplace GoldenRing, 1;
delitem GoldPieces, 5;
Zeny=Zeny-12000;
getitem GoldenRing, 1;
getexp 100, 25;
mes "";
mesn;
mesq l("Here you go! Anything else?");
next;
goto L_Menu;
L_Gemstone:
// We will be working with polished gems, so this code will be recycled.
mes "";
mesn;
mesq l("Adding gems will give special stats to rings, and they'll become lighter, but these gems cannot be removed easily.");
mesq l("I charge a service fee of 1000 GP.");
next;
if (Zeny < 1000) {
mesn;
mesq lg("You clearly don't have money, so let's not bother with that right now.");
next;
goto L_Menu;
}
menu
rif(countitem(Diamond) >= 1 , l("Diamond Ring (+2 vit)")), L_Diamond,
rif(countitem(Ruby) >= 1 , l("Ruby Ring (+2 str)")), L_Ruby,
rif(countitem(Amethyst) >= 1, l("Amethyst Ring (+2 dex)")), L_Amethyst,
rif(countitem(Sapphire) >= 1, l("Sapphire Ring (+2 int)")), L_Sapphire,
rif(countitem(Topaz) >= 1 , l("Topaz Ring (+2 agi)")), L_Topaz,
rif(countitem(Emerald) >= 1 , l("Emerald Ring (+2 luck)")), L_Emerald,
rif(countitem(Pearl) >= 3 , l("3x Pearl Ring (+1 agi/int/dex)")), L_Pearl,
rif(countitem(BlackPearl) >= 1, l("Black Pearl Ring (+1 str/vit/luk)")), L_BlackPearl,
l("I don't have any gemstone or three pearls with me."), L_Close;
// As usual, I don't care with cheaters, so if you try to cheat money or gemstones, YOU WILL LOSE ALL REAGENTS. No refunds.
L_Diamond:
inventoryplace GoldenDiamondRing;
delitem GoldenRing, 1;
Zeny=Zeny-1000;
delitem Diamond, 1;
getitem GoldenDiamondRing, 1;
getexp 800, 0;
goto L_Menu;
L_Ruby:
inventoryplace GoldenRubyRing;
delitem GoldenRing, 1;
Zeny=Zeny-1000;
delitem Ruby, 1;
getitem GoldenRubyRing, 1;
getexp 800, 0;
goto L_Menu;
L_Amethyst:
inventoryplace GoldenAmethystRing;
delitem GoldenRing, 1;
Zeny=Zeny-1000;
delitem Amethyst, 1;
getitem GoldenAmethystRing, 1;
getexp 800, 0;
goto L_Menu;
L_Sapphire:
inventoryplace GoldenSapphireRing;
delitem GoldenRing, 1;
Zeny=Zeny-1000;
delitem Sapphire, 1;
getitem GoldenSapphireRing, 1;
getexp 800, 0;
goto L_Menu;
L_Topaz:
inventoryplace GoldenTopazRing;
delitem GoldenRing, 1;
Zeny=Zeny-1000;
delitem Topaz, 1;
getitem GoldenTopazRing, 1;
getexp 800, 0;
goto L_Menu;
L_Emerald:
inventoryplace GoldenEmeraldRing;
delitem GoldenRing, 1;
Zeny=Zeny-1000;
delitem Emerald, 1;
getitem GoldenEmeraldRing, 1;
getexp 800, 0;
goto L_Menu;
L_Pearl:
inventoryplace GoldenPearlRing;
delitem GoldenRing, 1;
Zeny=Zeny-1000;
delitem Pearl, 3;
getitem GoldenPearlRing, 1;
getexp 1000, 0;
goto L_Menu;
L_BlackPearl:
inventoryplace GoldenBlackPearlRing;
delitem GoldenRing, 1;
Zeny=Zeny-1000;
delitem BlackPearl, 1;
getitem GoldenBlackPearlRing, 1;
getexp 1000, 0;
goto L_Menu;
L_Close:
closedialog;
goodbye;
end;
OnInit:
.@npcId = getnpcid(0, .name$);
setunitdata(.@npcId, UDT_HEADTOP, NPCEyes);
setunitdata(.@npcId, UDT_HEADMIDDLE, VneckJumper);
setunitdata(.@npcId, UDT_HEADBOTTOM, RaidTrousers);
setunitdata(.@npcId, UDT_WEAPON, LousyMoccasins); // Boots
setunitdata(.@npcId, UDT_HAIRSTYLE, 3);
setunitdata(.@npcId, UDT_HAIRCOLOR, 8);
npcsit;
.sex = G_FEMALE;
.distance = 5;
tradertype(NST_ZENY);
sellitem WeddingRing, 5000;
end;
}