1 |
root |
1.1 |
This guide explains how to implement shop headers on maps. |
2 |
|
|
|
3 |
|
|
There are 5 headers related to shops that can be present in a map. Any given map may have some, all or none of them (although in the later case, it isn't considered to be a shop). |
4 |
|
|
|
5 |
|
|
The headers are. |
6 |
|
|
|
7 |
|
|
shopitems. |
8 |
|
|
|
9 |
|
|
this is a semi-colon deliminated list of item types and values. |
10 |
|
|
each entry is a name of an item type (from the array in common/item.c) |
11 |
|
|
followed by an optional colon then a value in the range -100 to 100. |
12 |
|
|
(if this is missing, the default value of 0 is used. |
13 |
|
|
This value is a measure of how much items of that type are preffered. |
14 |
|
|
Neutrality is represented by 0 (so a theoretical 'general' store would |
15 |
|
|
have 0 for everything), a positive preference for certain item types |
16 |
|
|
is a positive value, and negative preference for item types is a negative value. |
17 |
|
|
|
18 |
|
|
As a special note, the character * may be used once to set a preference for |
19 |
|
|
everything not explicitly listed otherwise (this value would in most cases be negative) |
20 |
|
|
|
21 |
|
|
for example, a typical magic shop might have the string: |
22 |
|
|
shopitems amulet:25;ring:40;potion:40;book:35;scroll:40;spellbook:40;skillscroll:50;wand:40;*:-50 |
23 |
|
|
|
24 |
|
|
and an armour shop might have the string: |
25 |
|
|
shopitems armour:50;shield:50;helmet:40;cloak:40;boots:40;gloves:40;bracers:50;girdle:50;*:-50 |
26 |
|
|
|
27 |
|
|
all possible name values for items are listed in common/item.c, however there are only some |
28 |
|
|
that are likely to be used (doors are not sold very often....) this list is not definitive or |
29 |
|
|
neccesarily up-to-date, but is a reasonable starting point for constructing a new shop. |
30 |
|
|
|
31 |
|
|
rod |
32 |
|
|
book |
33 |
|
|
horn |
34 |
|
|
amulet |
35 |
|
|
potion |
36 |
|
|
ring |
37 |
|
|
inorganic |
38 |
|
|
spellbook |
39 |
|
|
wand |
40 |
|
|
scroll |
41 |
|
|
power_crystal |
42 |
|
|
|
43 |
|
|
arrow |
44 |
|
|
bow |
45 |
|
|
weapon |
46 |
|
|
|
47 |
|
|
armour |
48 |
|
|
shield |
49 |
|
|
helmet |
50 |
|
|
cloak |
51 |
|
|
boots |
52 |
|
|
gloves |
53 |
|
|
bracers |
54 |
|
|
girdle |
55 |
|
|
|
56 |
|
|
flesh |
57 |
|
|
food |
58 |
|
|
drink |
59 |
|
|
treasure |
60 |
|
|
gem |
61 |
|
|
skill tool |
62 |
|
|
lighter |
63 |
|
|
light source |
64 |
|
|
lamp |
65 |
|
|
tool |
66 |
|
|
container |
67 |
|
|
item_transformer |
68 |
|
|
|
69 |
|
|
armour improver |
70 |
|
|
weapon improver |
71 |
|
|
skillscroll |
72 |
|
|
|
73 |
|
|
building material |
74 |
|
|
|
75 |
|
|
|
76 |
|
|
shopmin |
77 |
|
|
This is an integer value. It is the minimum value that the object must have in |
78 |
|
|
order to be considered by purchase for a shop. This is not the same as the price |
79 |
|
|
offered, which can be substantially below shopmin. |
80 |
|
|
|
81 |
|
|
|
82 |
|
|
shopmax |
83 |
|
|
This is an integer value. It uses value like shopmin does, however it is not a |
84 |
|
|
fixed upper limit. |
85 |
|
|
|
86 |
|
|
The value is adjusted downwards if it is in excess of one half of shopmax. The |
87 |
|
|
output value is the minimum of shopmax and one half of shopmax plus the square root |
88 |
|
|
of one half of shopmax |
89 |
|
|
|
90 |
|
|
Note that the value is only an aspect of the final price, and the actual price offered for an item |
91 |
|
|
can be substantially less than shopmax, even when the item's value in in excess of that. |
92 |
|
|
|
93 |
|
|
|
94 |
|
|
shoprace |
95 |
|
|
if the player matches shoprace, this has no effect, if they do not, the price offered |
96 |
|
|
is only 80% of what it would otherwise be. |
97 |
|
|
|
98 |
|
|
|
99 |
|
|
shopgreed |
100 |
|
|
This is a multiplier on all prices offered, items brought from the player are done |
101 |
|
|
so at a price divided by the greed, items sold to a player are overcharged by a factor of shopgreed. |
102 |
|
|
|
103 |
|
|
|
104 |
|
|
Recognising different types of shops: |
105 |
|
|
|
106 |
|
|
Whilst a hit and miss approach will work if there are items of known value to measure |
107 |
|
|
prices with, it is possible to also guage the manner in which a shop will trade with |
108 |
|
|
the bargaining skill. Merely use_skill bargaining on an appropriate shop, and the |
109 |
|
|
details about the shop will be displayed. |
110 |
|
|
|
111 |
|
|
|
112 |
|
|
Value estimation: |
113 |
|
|
no longer does examining an item display the exact sale price you will get (not least |
114 |
|
|
because there /is/ no exact sale price anymore...). Instead an estimate is given, the |
115 |
|
|
quality of this estimate is based on your knowledge of any skills that could identify |
116 |
|
|
the item, and the bargaining skill, as well as a fair degree of luck. Remember, just |
117 |
|
|
because you think an item is worth a lot, doesn't mean any shopkeepers do. |
118 |
|
|
|
119 |
|
|
The estimate given can be improved by leveling skills related to the class of item in question, |
120 |
|
|
and the bargaining skill. Also, by acquiring other objects that are similar, and comparing and |
121 |
|
|
merging them, your evaluation of the value of the objects can change. This does not always mean |
122 |
|
|
greater accuracy however. |
123 |
|
|
|