ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/common/item.C
(Generate patch)

Comparing deliantra/server/common/item.C (file contents):
Revision 1.85 by root, Wed Apr 21 05:40:21 2010 UTC vs.
Revision 1.87 by root, Fri Apr 30 21:13:41 2010 UTC

202 {BUILDER, "item builder", "item builders", 0, 0}, 202 {BUILDER, "item builder", "item builders", 0, 0},
203 {MATERIAL, "building material", "building materials", 0, 0}, 203 {MATERIAL, "building material", "building materials", 0, 0},
204 {ITEM_TRANSFORMER, "item_transformer", "item_transformers", 0, 0}, 204 {ITEM_TRANSFORMER, "item_transformer", "item_transformers", 0, 0},
205}; 205};
206 206
207static const int item_types_size = sizeof (item_types) / sizeof (*item_types); 207static const int item_types_size = array_length (item_types);
208 208
209/* This curve may be too steep. But the point is that there should 209/* This curve may be too steep. But the point is that there should
210 * be tough choices - there is no real point to this if everyone can 210 * be tough choices - there is no real point to this if everyone can
211 * wear whatever they want with no worries. Perhaps having the steep 211 * wear whatever they want with no worries. Perhaps having the steep
212 * curve is good (maybe even steeper), but allowing players to 212 * curve is good (maybe even steeper), but allowing players to
215 * note that this table is only really used for program generated items - 215 * note that this table is only really used for program generated items -
216 * custom objects can use whatever they want. 216 * custom objects can use whatever they want.
217 */ 217 */
218static int enc_to_item_power[21] = { 218static int enc_to_item_power[21] = {
219 0, 219 0,
220 0, 1, 2, 3, 4, /* 5 */ 220 0, 1, 2, 3, 4, // 5
221 5, 7, 9, 11, 13, /* 10 */ 221 5, 7, 9, 11, 13, // 10
222 15, 18, 21, 24, 27, /* 15 */ 222 15, 18, 21, 24, 27, // 15
223 30, 35, 40, 45, 50 /* 20 */ 223 30, 35, 40, 45, 50 // 20
224}; 224};
225 225
226int 226int
227get_power_from_ench (int ench) 227get_power_from_ench (int ench)
228{ 228{
353 if (op->flag [FLAG_MAKE_INVIS ]) enc += 1; 353 if (op->flag [FLAG_MAKE_INVIS ]) enc += 1;
354 354
355 return get_power_from_ench (enc); 355 return get_power_from_ench (enc);
356} 356}
357 357
358static const struct get_typedata
359{
360 const typedata *data [NUM_TYPES];
361
362 get_typedata ()
363 {
364 for (int i = 0; i < item_types_size; i++)
365 data [item_types[i].number] = &item_types [i];
366 }
367
368 const typedata *operator ()(int itemtype) const
369 {
370 return data [itemtype];
371 }
372} get_typedata_;
373
358/* returns the typedata that has a number equal to itemtype, if there 374/* returns the typedata that has a number equal to itemtype, if there
359 * isn't one, returns NULL */ 375 * isn't one, returns NULL */
360const typedata * 376const typedata *
361get_typedata (int itemtype) 377get_typedata (int itemtype)
362{ 378{
363 for (int i = 0; i < item_types_size; i++) 379 return get_typedata_ (itemtype);
364 if (item_types[i].number == itemtype)
365 return &item_types[i];
366
367 return NULL;
368} 380}
369 381
370/* returns the typedata that has a name equal to itemtype, if there 382/* returns the typedata that has a name equal to itemtype, if there
371 * isn't one, return the plural name that matches, if there still isn't 383 * isn't one, return the plural name that matches, if there still isn't
372 * one return NULL */ 384 * one return NULL */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines