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.4 by root, Sun Sep 10 16:00:23 2006 UTC vs.
Revision 1.12 by elmex, Wed Dec 20 12:13:48 2006 UTC

1
2/*
3 * static char *rcsid_item_c =
4 * "$Id: item.C,v 1.4 2006/09/10 16:00:23 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}, 163 {LIGHT_SOURCE, "light source", "light sources", 0, 0},
186 {MISC_OBJECT, "bric-a-brac", "bric-a-brac", 0, 0}, 164 {MISC_OBJECT, "bric-a-brac", "bric-a-brac", 0, 0},
187 {MONSTER, "monster", "monsters", 0, 0}, 165 {MONSTER, "monster", "monsters", 0, 0},
188 {SPAWN_GENERATOR, "monster generator", "monster generators", 0, 0}, 166 {SPAWN_GENERATOR, "monster generator", "monster generators", 0, 0},
189 {LAMP, "lamp", "lamps", 0, 0}, 167 {LAMP, "lamp", "lamps", 0, 0},
597 char buf2[HUGE_BUF]; 575 char buf2[HUGE_BUF];
598 int len = 0; 576 int len = 0;
599 577
600 if (op->name == NULL) 578 if (op->name == NULL)
601 return "(null)"; 579 return "(null)";
580
602 if (!op->nrof && !op->weight && !op->title && !is_magical (op)) 581 if (!op->nrof && !op->weight && !op->title && !is_magical (op))
603 return op->name; /* To speed things up (or make things slower?) */ 582 return op->name; /* To speed things up (or make things slower?) */
604 583
605 if (op->nrof <= 1) 584 if (op->nrof <= 1)
606 safe_strcat (buf, op->name, &len, HUGE_BUF); 585 safe_strcat (buf, op->name, &len, HUGE_BUF);
686 665
687 use_buf++; 666 use_buf++;
688 use_buf %= 5; 667 use_buf %= 5;
689 668
690#ifdef NEW_MATERIAL_CODE 669#ifdef NEW_MATERIAL_CODE
691 if ((IS_ARMOR (op) || IS_WEAPON (op)) && op->materialname) 670 if ((op->is_armor () || op->is_weapon ()) && op->materialname)
692 { 671 {
693 mt = name_to_material (op->materialname); 672 mt = name_to_material (op->materialname);
694 if (mt) 673 if (mt)
695 { 674 {
696 safe_strcat (buf[use_buf], mt->description, &len, HUGE_BUF); 675 safe_strcat (buf[use_buf], mt->description, &len, HUGE_BUF);
793 return "(null)"; 772 return "(null)";
794 773
795 if (!op->nrof && !op->weight && !op->title && !is_magical (op)) 774 if (!op->nrof && !op->weight && !op->title && !is_magical (op))
796 return op->name; /* To speed things up (or make things slower?) */ 775 return op->name; /* To speed things up (or make things slower?) */
797 776
798 if ((IS_ARMOR (op) || IS_WEAPON (op)) && op->materialname) 777 if ((op->is_armor () || op->is_weapon ()) && op->materialname)
799 mt = name_to_material (op->materialname); 778 mt = name_to_material (op->materialname);
800 779
801#ifdef NEW_MATERIAL_CODE 780#ifdef NEW_MATERIAL_CODE
802 if ((IS_ARMOR (op) || IS_WEAPON (op)) && op->materialname && mt && 781 if ((op->is_armor () || op->is_weapon ()) && op->materialname && mt &&
803 op->arch->clone.materialname != mt->name && !(op->material & M_SPECIAL)) 782 op->arch->clone.materialname != mt->name && !(op->material & M_SPECIAL))
804 { 783 {
805 strcpy (buf, mt->description); 784 strcpy (buf, mt->description);
806 len = strlen (buf); 785 len = strlen (buf);
807 safe_strcat (buf, " ", &len, MAX_BUF); 786 safe_strcat (buf, " ", &len, MAX_BUF);
1520 LOG (llevDebug, "need_identify: %s does not need to be id'd\n", op->name); 1499 LOG (llevDebug, "need_identify: %s does not need to be id'd\n", op->name);
1521#endif 1500#endif
1522 return 0; 1501 return 0;
1523} 1502}
1524 1503
1525
1526/* 1504/*
1527 * Supposed to fix face-values as well here, but later. 1505 * Supposed to fix face-values as well here, but later.
1528 */ 1506 */
1529
1530void 1507void
1531identify (object *op) 1508identify (object *op)
1532{ 1509{
1533 object *pl; 1510 object *pl;
1534 1511
1556 /* If the object is on a map, make sure we update its face */ 1533 /* If the object is on a map, make sure we update its face */
1557 if (op->map) 1534 if (op->map)
1558 update_object (op, UP_OBJ_FACE); 1535 update_object (op, UP_OBJ_FACE);
1559 else 1536 else
1560 { 1537 {
1561 pl = is_player_inv (op->env); 1538 pl = op->in_player ();
1562 if (pl) 1539 if (pl)
1563 /* A lot of the values can change from an update - might as well send 1540 /* A lot of the values can change from an update - might as well send
1564 * it all. 1541 * it all.
1565 */ 1542 */
1566 esrv_send_item (pl, op); 1543 esrv_send_item (pl, op);
1567 } 1544 }
1568} 1545}
1546

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines