summaryrefslogtreecommitdiff
path: root/npc/003-5/jeweler.txt
blob: 562dc635838eab03415f0d0e15aa7b8d584133f6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
// 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 create polished gemstones.")), L_Gemstone,
        l("Nothing, sorry."), L_Close;

    openshop;
    closedialog;
    close;

L_Craft:
    mes "";
    mesn;
    mesq l("Of course, I actually have two options:");
    mes l("- 5 @@, with 12000 GP, for a @@.", getitemlink(GoldPieces), getitemlink(GoldenRing));
    mes l("- 5 @@, with 12000 GP, for a @@.", getitemlink(SilverIngot), getitemlink(SilverRing)); // TODO
    next;
    menu
        rif(countitem(GoldPieces) >= 5 && Zeny >= 12000, l("Yes, deal. Gimme the gold ring.")), -,
        rif(countitem(SilverIngot) >= 5 && Zeny >= 12000, l("Yes, deal. Gimme the silver ring.")), -,
        l("...I'll be back later."), L_Close;

    switch (@menu) {
        case 1:
            inventoryplace GoldenRing, 1;
            delitem GoldPieces, 5;
            Zeny=Zeny-12000;
            getitem GoldenRing, 1;
            getexp 100, 25;
            break;
        case 2:
            inventoryplace SilverRing, 1;
            delitem SilverIngot, 5; // TODO
            Zeny=Zeny-12000;
            getitem SilverRing, 1;
            getexp 50, 15;
            break;
    }
    mes "";
    mesn;
    mesq l("Here you go! Anything else?");
    next;
    goto L_Menu;

L_Gemstone:
    mes "";
    mesn;
    mesq l("Polished gemstones can be dragged and insert on rings. They'll give special stats to rings, but these gems cannot be removed easily.");
    mesq l("I charge a service fee of 2000 GP, and two gemstones.");
    next;
    if (Zeny < 2000) {
        mesn;
        mesq lg("You clearly don't have money, so let's not bother with that right now.");
        next;
        goto L_Menu;
    }
    select
        l("Not today, sorry."),
        rif(countitem(Diamond) >= 2 , l("Diamond (+2 vit)")),
        rif(countitem(Ruby) >= 2    , l("Ruby (+2 str)")),
        rif(countitem(Amethyst) >= 2, l("Amethyst (+2 dex)")),
        rif(countitem(Sapphire) >= 2, l("Sapphire (+2 int)")),
        rif(countitem(Topaz) >= 2   , l("Topaz (+2 agi)")),
        rif(countitem(Emerald) >= 2 , l("Emerald (+2 luck)"));

    mes "";
    if (@menu == 1)
        goto L_Menu;

// As usual, I don't care with cheaters, so if you somehow cheat money or gemstones, YOU WILL LOSE ALL REAGENTS. No refunds.
    inventoryplace PolishedDiamond-2+@menu;
    delitem Diamond-2+@menu, 2;
    Zeny=Zeny-2000;
    getitem PolishedDiamond-2+@menu, 1;
    getexp 800, 0;
    goto L_Menu;


/* TODO Special rings
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;

}