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.5 by root, Tue Sep 12 18:15:34 2006 UTC vs.
Revision 1.15 by elmex, Wed Dec 20 14:38:50 2006 UTC

1
2/*
3 * static char *rcsid_item_c =
4 * "$Id: item.C,v 1.5 2006/09/12 18:15:34 root Exp $";
5 */
6
7/* 1/*
8 CrossFire, A Multiplayer game for X-windows 2 CrossFire, A Multiplayer game for X-windows
9 3
10 Copyright (C) 2002 Mark Wedel & Crossfire Development Team 4 Copyright (C) 2002 Mark Wedel & Crossfire Development Team
11 Copyright (C) 1992 Frank Tore Johansen 5 Copyright (C) 1992 Frank Tore Johansen
22 16
23 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
24 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
25 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26 20
27 The authors can be reached via e-mail at crossfire-devel@real-time.com 21 The authors can be reached via e-mail at <crossfire@schmorp.de>
28*/ 22*/
29 23
30#include <global.h> 24#include <global.h>
31#include <funcpoint.h> 25#include <funcpoint.h>
32#include <living.h> 26#include <living.h>
52 * may be better. 46 * may be better.
53 * Basically, for the use/nonuse, the code does something like: 47 * Basically, for the use/nonuse, the code does something like:
54 * "This item goes %s\n", with the use/nonuse values filling in the %s 48 * "This item goes %s\n", with the use/nonuse values filling in the %s
55 */ 49 */
56Body_Locations body_locations[NUM_BODY_LOCATIONS] = { 50Body_Locations body_locations[NUM_BODY_LOCATIONS] = {
57 {"body_range", "in your range slot", "in a human's range slot"} 51 {"body_range", "in your range slot", "in a human's range slot"},
58 ,
59 {"body_arm", "on your arm", "on a human's arm"} 52 {"body_arm", "on your arm", "on a human's arm"},
60 ,
61 {"body_torso", "on your body", "on a human's torso"} 53 {"body_torso", "on your body", "on a human's torso"},
62 ,
63 {"body_head", "on your head", "on a human's head"} 54 {"body_head", "on your head", "on a human's head"},
64 ,
65 {"body_neck", "around your neck", "around a humans neck"} 55 {"body_neck", "around your neck", "around a humans neck"},
66 ,
67 {"body_skill", "in your skill slot", "in a human's skill slot"} 56 {"body_skill", "in your skill slot", "in a human's skill slot"},
68 ,
69 {"body_finger", "on your finger", "on a human's finger"} 57 {"body_finger", "on your finger", "on a human's finger"} ,
70 ,
71 {"body_shoulder", "around your shoulders", "around a human's shoulders"} 58 {"body_shoulder", "around your shoulders", "around a human's shoulders"},
72 ,
73 {"body_foot", "on your feet", "on a human's feet"} 59 {"body_foot", "on your feet", "on a human's feet"},
74 ,
75 {"body_hand", "on your hands", "on a human's hands"} 60 {"body_hand", "on your hands", "on a human's hands"},
76 ,
77 {"body_wrist", "around your wrists", "around a human's wrist"} 61 {"body_wrist", "around your wrists", "around a human's wrist"},
78 ,
79 {"body_waist", "around your waist", "around a human's waist"} 62 {"body_waist", "around your waist", "around a human's waist"},
80 ,
81
82/*{"body_dragon_torso", "your body", "a dragon's body"} */ 63/*{"body_dragon_torso", "your body", "a dragon's body"} */
83}; 64};
84 65
85static char numbers[21][20] = { 66static char numbers[21][20] = {
86 "no", "", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", 67 "no", "", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten",
118 {POTION, "potion", "potions", SK_ALCHEMY, 0}, 99 {POTION, "potion", "potions", SK_ALCHEMY, 0},
119 {FOOD, "food", "food", SK_WOODSMAN, 0}, 100 {FOOD, "food", "food", SK_WOODSMAN, 0},
120 {POISON, "poison", "poisons", SK_ALCHEMY, 0}, 101 {POISON, "poison", "poisons", SK_ALCHEMY, 0},
121 {BOOK, "book", "books", SK_LITERACY, 0}, 102 {BOOK, "book", "books", SK_LITERACY, 0},
122 {CLOCK, "clock", "clocks", 0, 0}, 103 {CLOCK, "clock", "clocks", 0, 0},
123 {LIGHTNING, "lightning", "lightning", 0, 0},
124 {ARROW, "arrow", "arrows", SK_BOWYER, 0}, 104 {ARROW, "arrow", "arrows", SK_BOWYER, 0},
125 {BOW, "bow", "bows", SK_BOWYER, 0}, 105 {BOW, "bow", "bows", SK_BOWYER, 0},
126 {WEAPON, "weapon", "weapons", SK_SMITHERY, 0}, 106 {WEAPON, "weapon", "weapons", SK_SMITHERY, 0},
127 {ARMOUR, "armour", "armour", SK_SMITHERY, 0}, 107 {ARMOUR, "armour", "armour", SK_SMITHERY, 0},
128 {PEDESTAL, "pedestal", "pedestals", 0, 0}, 108 {PEDESTAL, "pedestal", "pedestals", 0, 0},
148 {AMULET, "amulet", "amulets", SK_JEWELER, 0}, 128 {AMULET, "amulet", "amulets", SK_JEWELER, 0},
149 {PLAYERMOVER, "player mover", "player movers", 0, 0}, 129 {PLAYERMOVER, "player mover", "player movers", 0, 0},
150 {TELEPORTER, "teleporter", "teleporters", 0, 0}, 130 {TELEPORTER, "teleporter", "teleporters", 0, 0},
151 {CREATOR, "creator", "creators", 0, 0}, 131 {CREATOR, "creator", "creators", 0, 0},
152 {SKILL, "skill", "skills", 0, 0}, 132 {SKILL, "skill", "skills", 0, 0},
153 {EXPERIENCE, "experience", "experience", 0, 0},
154 {EARTHWALL, "earthwall", "earthwalls", 0, 0}, 133 {EARTHWALL, "earthwall", "earthwalls", 0, 0},
155 {GOLEM, "golem", "golems", 0, 0}, 134 {GOLEM, "golem", "golems", 0, 0},
156 {THROWN_OBJ, "projectile", "projectiles", 0, 0}, 135 {THROWN_OBJ, "projectile", "projectiles", 0, 0},
157 {BLINDNESS, "blindness", "blindness", 0, 0}, 136 {BLINDNESS, "blindness", "blindness", 0, 0},
158 {GOD, "god", "gods", 0, 0}, 137 {GOD, "god", "gods", 0, 0},
178 {FLOOR, "floor", "floors", 0, 0}, 157 {FLOOR, "floor", "floors", 0, 0},
179 {FLESH, "flesh", "flesh", SK_WOODSMAN, 0}, 158 {FLESH, "flesh", "flesh", SK_WOODSMAN, 0},
180 {INORGANIC, "inorganic", "inorganics", SK_ALCHEMY, 0}, 159 {INORGANIC, "inorganic", "inorganics", SK_ALCHEMY, 0},
181 {SKILL_TOOL, "skill tool", "skill tools", 0, 0}, 160 {SKILL_TOOL, "skill tool", "skill tools", 0, 0},
182 {LIGHTER, "lighter", "lighters", 0, 0}, 161 {LIGHTER, "lighter", "lighters", 0, 0},
183 {TRAP_PART, "trap part", "trap parts", 0, 0}, 162 {BUILDABLE_WALL, "buildable wall", "buildable walls", 0, 0},
184 {WALL, "wall", "walls", 0, 0},
185 {LIGHT_SOURCE, "light source", "light sources", 0, 0},
186 {MISC_OBJECT, "bric-a-brac", "bric-a-brac", 0, 0}, 163 {MISC_OBJECT, "bric-a-brac", "bric-a-brac", 0, 0},
187 {MONSTER, "monster", "monsters", 0, 0},
188 {SPAWN_GENERATOR, "monster generator", "monster generators", 0, 0},
189 {LAMP, "lamp", "lamps", 0, 0}, 164 {LAMP, "lamp", "lamps", 0, 0},
190 {DUPLICATOR, "duplicator", "duplicators", 0, 0}, 165 {DUPLICATOR, "duplicator", "duplicators", 0, 0},
191 {TOOL, "tool", "tools", 0, 0},
192 {SPELLBOOK, "spellbook", "spellbooks", SK_LITERACY, 0}, 166 {SPELLBOOK, "spellbook", "spellbooks", SK_LITERACY, 0},
193 {BUILDFAC, "building facility", "building facilities", 0, 0},
194 {CLOAK, "cloak", "cloaks", SK_SMITHERY, 0}, 167 {CLOAK, "cloak", "cloaks", SK_SMITHERY, 0},
195 {SPINNER, "spinner", "spinners", 0, 0}, 168 {SPINNER, "spinner", "spinners", 0, 0},
196 {GATE, "gate", "gates", 0, 0}, 169 {GATE, "gate", "gates", 0, 0},
197 {BUTTON, "button", "buttons", 0, 0}, 170 {BUTTON, "button", "buttons", 0, 0},
198 {CF_HANDLE, "cf handle", "cf handles", 0, 0}, 171 {CF_HANDLE, "cf handle", "cf handles", 0, 0},
205 {SPELL_EFFECT, "spell effect", "spell effects", 0, 0}, 178 {SPELL_EFFECT, "spell effect", "spell effects", 0, 0},
206 {CONVERTER, "converter", "converters", 0, 0}, 179 {CONVERTER, "converter", "converters", 0, 0},
207 {BRACERS, "bracers", "bracers", SK_SMITHERY, 0}, 180 {BRACERS, "bracers", "bracers", SK_SMITHERY, 0},
208 {POISONING, "poisoning", "poisonings", 0, 0}, 181 {POISONING, "poisoning", "poisonings", 0, 0},
209 {SAVEBED, "savebed", "savebeds", 0, 0}, 182 {SAVEBED, "savebed", "savebeds", 0, 0},
210 {POISONCLOUD, "poison cloud", "poison clouds", 0, 0},
211 {FIREHOLES, "fireholes", "fireholes", 0, 0},
212 {WAND, "wand", "wands", SK_THAUMATURGY, 0}, 183 {WAND, "wand", "wands", SK_THAUMATURGY, 0},
213 {SCROLL, "scroll", "scrolls", SK_LITERACY, 0}, 184 {SCROLL, "scroll", "scrolls", SK_LITERACY, 0},
214 {DIRECTOR, "director", "directors", 0, 0}, 185 {DIRECTOR, "director", "directors", 0, 0},
215 {GIRDLE, "girdle", "girdles", SK_SMITHERY, 0}, 186 {GIRDLE, "girdle", "girdles", SK_SMITHERY, 0},
216 {FORCE, "force", "forces", 0, 0}, 187 {FORCE, "force", "forces", 0, 0},
687 658
688 use_buf++; 659 use_buf++;
689 use_buf %= 5; 660 use_buf %= 5;
690 661
691#ifdef NEW_MATERIAL_CODE 662#ifdef NEW_MATERIAL_CODE
692 if ((IS_ARMOR (op) || IS_WEAPON (op)) && op->materialname) 663 if ((op->is_armor () || op->is_weapon ()) && op->materialname)
693 { 664 {
694 mt = name_to_material (op->materialname); 665 mt = name_to_material (op->materialname);
695 if (mt) 666 if (mt)
696 { 667 {
697 safe_strcat (buf[use_buf], mt->description, &len, HUGE_BUF); 668 safe_strcat (buf[use_buf], mt->description, &len, HUGE_BUF);
794 return "(null)"; 765 return "(null)";
795 766
796 if (!op->nrof && !op->weight && !op->title && !is_magical (op)) 767 if (!op->nrof && !op->weight && !op->title && !is_magical (op))
797 return op->name; /* To speed things up (or make things slower?) */ 768 return op->name; /* To speed things up (or make things slower?) */
798 769
799 if ((IS_ARMOR (op) || IS_WEAPON (op)) && op->materialname) 770 if ((op->is_armor () || op->is_weapon ()) && op->materialname)
800 mt = name_to_material (op->materialname); 771 mt = name_to_material (op->materialname);
801 772
802#ifdef NEW_MATERIAL_CODE 773#ifdef NEW_MATERIAL_CODE
803 if ((IS_ARMOR (op) || IS_WEAPON (op)) && op->materialname && mt && 774 if ((op->is_armor () || op->is_weapon ()) && op->materialname && mt &&
804 op->arch->clone.materialname != mt->name && !(op->material & M_SPECIAL)) 775 op->arch->clone.materialname != mt->name && !(op->material & M_SPECIAL))
805 { 776 {
806 strcpy (buf, mt->description); 777 strcpy (buf, mt->description);
807 len = strlen (buf); 778 len = strlen (buf);
808 safe_strcat (buf, " ", &len, MAX_BUF); 779 safe_strcat (buf, " ", &len, MAX_BUF);
1521 LOG (llevDebug, "need_identify: %s does not need to be id'd\n", op->name); 1492 LOG (llevDebug, "need_identify: %s does not need to be id'd\n", op->name);
1522#endif 1493#endif
1523 return 0; 1494 return 0;
1524} 1495}
1525 1496
1526
1527/* 1497/*
1528 * Supposed to fix face-values as well here, but later. 1498 * Supposed to fix face-values as well here, but later.
1529 */ 1499 */
1530
1531void 1500void
1532identify (object *op) 1501identify (object *op)
1533{ 1502{
1534 object *pl; 1503 object *pl;
1535 1504
1557 /* If the object is on a map, make sure we update its face */ 1526 /* If the object is on a map, make sure we update its face */
1558 if (op->map) 1527 if (op->map)
1559 update_object (op, UP_OBJ_FACE); 1528 update_object (op, UP_OBJ_FACE);
1560 else 1529 else
1561 { 1530 {
1562 pl = is_player_inv (op->env); 1531 pl = op->in_player ();
1563 if (pl) 1532 if (pl)
1564 /* A lot of the values can change from an update - might as well send 1533 /* A lot of the values can change from an update - might as well send
1565 * it all. 1534 * it all.
1566 */ 1535 */
1567 esrv_send_item (pl, op); 1536 esrv_send_item (pl, op);
1568 } 1537 }
1569} 1538}
1539

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines