ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/treasure.h
(Generate patch)

Comparing deliantra/server/include/treasure.h (file contents):
Revision 1.5 by root, Fri Sep 8 16:53:57 2006 UTC vs.
Revision 1.10 by pippijn, Sat Jan 6 14:42:30 2007 UTC

1/*
2 * static char *rcsid_treasure_h =
3 * "$Id: treasure.h,v 1.5 2006/09/08 16:53:57 root Exp $";
4 */
5
6/* 1/*
7 CrossFire, A Multiplayer game for X-windows 2 CrossFire, A Multiplayer game for X-windows
8 3
4 Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team
9 Copyright (C) 2002 Mark Wedel & Crossfire Development Team 5 Copyright (C) 2002 Mark Wedel & Crossfire Development Team
10 Copyright (C) 1992 Frank Tore Johansen 6 Copyright (C) 1992 Frank Tore Johansen
11 7
12 This program is free software; you can redistribute it and/or modify 8 This program is free software; you can redistribute it and/or modify
13 it under the terms of the GNU General Public License as published by 9 it under the terms of the GNU General Public License as published by
21 17
22 You should have received a copy of the GNU General Public License 18 You should have received a copy of the GNU General Public License
23 along with this program; if not, write to the Free Software 19 along with this program; if not, write to the Free Software
24 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 21
26 The authors can be reached via e-mail at crossfire-devel@real-time.com 22 The authors can be reached via e-mail at crossfire@schmorp.de
27*/ 23*/
28 24
29/* 25/*
30 * defines and variables used by the artifact generation routines 26 * defines and variables used by the artifact generation routines
31 */ 27 */
43 39
44#define MAXMAGIC 4 40#define MAXMAGIC 4
45 41
46#define DIFFLEVELS 31 42#define DIFFLEVELS 31
47 43
48
49/* 44/*
50 * Flags to generate_treasures(): 45 * Flags to generate_treasures():
51 */ 46 */
52 47
53enum { 48enum
49{
54 GT_ENVIRONMENT = 0x0001, 50 GT_ENVIRONMENT = 0x0001,
55 GT_INVISIBLE = 0x0002, 51 GT_INVISIBLE = 0x0002,
56 GT_STARTEQUIP = 0x0004, 52 GT_STARTEQUIP = 0x0004,
57 GT_APPLY = 0x0008, 53 GT_APPLY = 0x0008,
58 GT_ONLY_GOOD = 0x0010, 54 GT_ONLY_GOOD = 0x0010,
59 GT_UPDATE_INV = 0x0020, 55 GT_UPDATE_INV = 0x0020,
60 GT_MINIMAL = 0x0040 /* Do minimal adjustments */ 56 GT_MINIMAL = 0x0040 /* Do minimal adjustments */
61}; 57};
62
63 58
64/* when a treasure got cloned from archlist, we want perhaps change some default 59/* when a treasure got cloned from archlist, we want perhaps change some default
65 * values. All values in this structure will override the default arch. 60 * values. All values in this structure will override the default arch.
66 * TODO: It is a bad way to implement this with a special structure. 61 * TODO: It is a bad way to implement this with a special structure.
67 * Because the real arch list is a at runtime not changed, we can grap for example 62 * Because the real arch list is a at runtime not changed, we can grap for example
68 * here a clone of the arch, store it in the treasure list and then run the original 63 * here a clone of the arch, store it in the treasure list and then run the original
69 * arch parser over this clone, using the treasure list as script until an END comes. 64 * arch parser over this clone, using the treasure list as script until an END comes.
70 * This will allow ANY changes which is possible and we use ony one parser. 65 * This will allow ANY changes which is possible and we use ony one parser.
71 */ 66 */
72 67
73typedef struct _change_arch { 68typedef struct _change_arch
69{
74 shstr name; /* is != NULL, copy this over the original arch name */ 70 shstr name; /* is != NULL, copy this over the original arch name */
75 shstr title; /* is != NULL, copy this over the original arch name */ 71 shstr title; /* is != NULL, copy this over the original arch name */
76 shstr slaying; /* is != NULL, copy this over the original arch name */ 72 shstr slaying; /* is != NULL, copy this over the original arch name */
77} _change_arch; 73} _change_arch;
78
79 74
80/* 75/*
81 * treasure is one element in a linked list, which together consist of a 76 * treasure is one element in a linked list, which together consist of a
82 * complete treasure-list. Any arch can point to a treasure-list 77 * complete treasure-list. Any arch can point to a treasure-list
83 * to get generated standard treasure when an archetype of that type 78 * to get generated standard treasure when an archetype of that type
84 * is generated (from a generator) 79 * is generated (from a generator)
85*/ 80*/
86 81
87typedef struct treasurestruct : zero_initialised 82struct treasure : zero_initialised
88{ 83{
89 struct archetype *item; /* Which item this link can be */ 84 struct archetype *item; /* Which item this link can be */
90 shstr name; /* If non null, name of list to use 85 shstr name; /* If non null, name of list to use
91 instead */ 86 instead */
92 struct treasurestruct *next; /* Next treasure-item in a linked list */ 87 treasure *next; /* Next treasure-item in a linked list */
93 struct treasurestruct *next_yes; /* If this item was generated, use */ 88 treasure *next_yes; /* If this item was generated, use */
94 /* this link instead of ->next */ 89 /* this link instead of ->next */
95 struct treasurestruct *next_no; /* If this item was not generated, */ 90 treasure *next_no; /* If this item was not generated, */
96 /* then continue here */ 91 /* then continue here */
97 struct _change_arch change_arch; /* override default arch values if set in treasure list */ 92 struct _change_arch change_arch; /* override default arch values if set in treasure list */
98 uint8 chance; /* Percent chance for this item */ 93 uint8 chance; /* Percent chance for this item */
99 uint8 magic; /* Max magic bonus to item */ 94 uint8 magic; /* Max magic bonus to item */
100 /* If the entry is a list transition, 95 /* If the entry is a list transition,
101 * 'magic' contains the difficulty 96 * 'magic' contains the difficulty
102 * required to go to the new list 97 * required to go to the new list
103 */ 98 */
104 uint16 nrof; /* random 1 to nrof items are generated */ 99 uint16 nrof; /* random 1 to nrof items are generated */
105} treasure; 100};
106 101
107
108typedef struct treasureliststruct : zero_initialised 102struct treasurelist : zero_initialised
109{ 103{
110 shstr name; /* Usually monster-name/combination */ 104 shstr name; /* Usually monster-name/combination */
111 sint16 total_chance; /* If non-zero, only 1 item on this 105 sint16 total_chance; /* If non-zero, only 1 item on this
112 * list should be generated. The 106 * list should be generated. The
113 * total_chance contains the sum of 107 * total_chance contains the sum of
114 * the chance for this list. 108 * the chance for this list.
115 */ 109 */
116 struct treasureliststruct *next; /* Next treasure-item in linked list */ 110 treasurelist *next; /* Next treasure-item in linked list */
117 struct treasurestruct *items; /* Items in this list, linked */ 111 treasure *items; /* Items in this list, linked */
118} treasurelist; 112};
119 113
120#endif 114#endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines