ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/pod/objects.pod
Revision: 1.3
Committed: Mon Dec 18 12:11:08 2006 UTC (17 years, 5 months ago) by elmex
Branch: MAIN
Changes since 1.2: +28 -17 lines
Log Message:
further development on the force documentation.

File Contents

# Content
1 =head1 CROSSFIRE+ OBJECT AND INTERNALS DOCUMENTATION
2
3 Here is all information about the object types Crossfire+
4 supports at the moment. This is not a complete documentation (yet)
5 and browsing the source is still recommended to learn about
6 the objects that aren't documented here.
7
8 This documentation is in a sketchy state. It's mostly
9 used to collect notes about the internal behaviour of the
10 objects.
11
12 =head2 About archetypes and objects
13
14 Field denotes an attribute of an archetype.
15 This is an example of an archetype:
16
17 Object button_trigger
18 name button
19 type 30
20 face button_sma.111
21 anim
22 button_sma.111
23 button_sma.112
24 mina
25 is_animated 0
26 exp 30
27 no_pick 1
28 walk_on 1
29 walk_off 1
30 editable 48
31 visibility 50
32 weight 1
33 end
34
35 This archetype has the name 'button_trigger' and the objects that
36 inherit from this archetype have the name 'button'.
37
38 The next field 'type' decides the main behaviour of this archetype.
39 For a comprehensive list of types see include/define.h. For this case
40 you might find a line like:
41
42 #define TRIGGER_BUTTON        30
43
44 The server internally works with objects that 'inherit' attributes from
45 an archetype. They have a similar set of attributes.
46
47 The following documentation will also document the meaning of code internal
48 attributes of objects. These attributes are marked as '(internal)' and can't
49 or shouldn't be set by an archetype. If the internal names differs the
50 external name (for the archetypes) for the attribute is written behind it.
51
52 =head2 Description of generic archetype and object attributes
53
54 These are the fields that most of the objects have and/or their
55 default behaviour.
56
57 =over 4
58
59 =item name <string>
60
61 The name of the object.
62
63 =item name_pl <string>
64
65 The name of a collection of these objects (the plural of the name).
66
67 =item face <facename>
68
69 The graphical appearance of this object.
70
71 =item invisible <number>
72
73 If the <number> is greater than 0 the object is invisible.
74 For players this field reflects the duration of the invisibility
75 and is decreased every tick by 1.
76
77 For non-player objects this field is not changed by server ticks.
78
79 =item speed <numeric>
80
81 If this field is greater than MIN_ACTIVE_SPEED (~0.0001) the object is placed
82 on the active object list and will be processed each tick (see also speed_left!).
83
84 If the speed field drops below the MIN_ACTIVE_SPEED the object is removed
85 from the active object list and it won't experience any processing per tick.
86
87 =item speed_left <number>
88
89 If this field is greater than 0 and the object is on the
90 active list (mostly means it's speed is also greater than 0):
91
92 - speed_left is decreased by 1
93 - and this object is processed and experiences a server tick.
94
95 If the object is on the active list and speed_left is lower or
96 equal to 0 the absolute value of the speed field is added to speed_left
97 on the end of the tick.
98
99 =item no_drop (0|1)
100
101 Sets the flag FLAG_NO_DROP. See the Flags section below.
102
103 =item applied (0|1)
104
105 Sets the flag FLAG_APPLIED. See the Flags section below.
106
107 =item is_used_up (0|1)
108
109 Sets the flag FLAG_IS_USED_UP. See Flags section below.
110
111 =item editable (more than deprecated)
112
113 This field had a special meaning for crossedit, which used parts
114 of the server code for editing. Wherever you see this attribute being
115 set in an archetype ignore it and/or remove it. No code interprets this
116 field anymore.
117
118 =back
119
120 =head3 Flags
121
122 Here are the effects of the flags described.
123
124 =over 4
125
126 =item FLAG_NO_DROP
127
128 An object can't be picked up and dropped.
129
130 =item FLAG_APPLIED
131
132 This flag mostly states whether this object has been 'applied' by the player.
133 For objects that are applied by the code or have this flag set in the archetype
134 it mostly means 'this object is active'.
135
136 For example the player adjustments of the hp/sp/grace fields and inheritance
137 of flags from objects in his inventory is toggled by this flag.
138
139 =item FLAG_IS_USED_UP
140
141 This flag controls whether an object is 'used up'. If it is set the 'food' field
142 of the object is decreased by 1 each tick, and if it is lower or equal 0 after tha
143 it is removed.
144
145 If also the flag FLAG_APPLIED is set, the 'duration' field controls whether
146 this object is removed or not, see the Force type below for the meaning
147 of the duration field in this context.
148
149 If FLAG_APPLIED is not set the object is destroyed.
150
151 =back
152
153 =head2 Description of type specific attributes
154
155 The beginning of the headers of the following subsection
156 are the server internal names for the objects types, see include/define.h.
157 The numeric values are maybe not 100% accurate, as the code is a changing
158 target, please consult include/define.h in doubt :-)
159
160 =head3 FORCE - type 114 - Forces
161
162 Forces are a very 'thin' type. They don't have much behaviour other than
163 disappearing after a time and/or affecting the player if they are in his inventory.
164
165 Forces only take effect on the player if they have set FLAG_APPLIED.
166
167 Whether the duration field is processed or not a tick is controlled via the
168 speed and speed_left field. Look above at the generic description of these
169 fields.
170
171 =over 4
172
173 =item duration
174
175 While this field is greater than 0 the force/object is not destroyed.
176 It is decreased each tick by 1.
177
178 If it reaches 0 the force/object is destroyed.
179
180 This field can have this meaning for B<any> object if that object has
181 FLAG_IS_USED_UP and FLAG_APPLIED set. See the description of FLAG_IS_USED_UP
182 what happens then.
183
184 =back
185
186 =head3 WEAPON - type 15 - Weapons
187
188 This type is for general hack and slash weapons like swords, maces
189 and daggers and and ....
190
191 =over 4
192
193 =item weapontype <type id>
194
195 decides what attackmessages are generated, see include/define.h
196
197 =item attacktype <bitmask>
198
199 bitfield which decides the attacktype of the damage, see include/attackinc.h
200
201 =item dam <number>
202
203 amount of damage being done with the attacktype
204
205 =item item_power <level>
206
207 the itempower of this weapon.
208
209 =item name
210
211 the name of the weapon.
212
213 =item level (internal)
214
215 The improvement state of the weapon.
216 If this field is greater than 0 the 'name' field starts with the
217 characters name who improved this weapon.
218
219 =item last_eat (internal)
220
221 seems to be the amount of improvements of a weapon,
222 the formular for equipping a weapon seems to be (server/apply.C:check_weapon_power):
223
224 ((who->level / 5) + 5) >= op->last_eat
225
226 =item last_sp
227
228 the weapon speed (see magic description)
229
230 =item food <number>
231
232 addition to food regeneration of the player
233
234 =item hp <number>
235
236 addition to health regeneration
237
238 =item sp <number>
239
240 addition to mana regeneration
241
242 =item grace <number>
243
244 addititon to grace regeneration
245
246 =item gen_sp_armour <number>
247
248 the players gen_sp_armour field (which is per default 10) is added the <number> amount.
249 gen_sp_armour seems to be a factor with which gen_sp in do_some_living()
250 is multiplied: gen_sp *= 10/<number>
251 meaning: values > 10 of gen_sp_armour limits the amout of regenerated
252 spellpoints.
253
254 generally this field on weapons is in ranges of 1-30 and decides the slowdown of the
255 sp regeneration.
256
257 =item body_<body slot/part>
258
259 the part of the body you need to use this weapon, possible values should be
260 looked up in common/item.C at body_locations.
261
262 =item resist_<resistnacy> <number>
263
264 this is the factor with which the difference of the players resistancy and 100%
265 is multiplied, something like this:
266
267 additional_resistancy = (100 - current_resistanct) * (<number>/100)
268
269 if <number> is negative it is added to the total vulnerabilities,
270 and later the total resistance is decided by:
271
272 'total resistance = total protections - total vulnerabilities'
273
274 see also common/living.C:fix_player
275
276 =item patch_(attuned|repelled|denied)
277
278 this field modifies the pathes the player is attuned to, see include/spells.h PATH_*
279 for the pathes.
280
281 =item luck <number>
282
283 this luck is added to the players luck
284
285 =item move_type
286
287 if the weapon has a move_type set the player inherits it's move_type
288
289 =item exp <number>
290
291 the added_speed and bonus_speed of the player is raised by <number>/3.
292 if <number> < 0 then the added_speed is decreased by <number>
293
294 =item weight
295
296 the weight of the weapon
297
298 =item magic
299
300 the magic field affects the amounts of the following fields:
301
302 - wc : the players wc is adjusted by: player->wc -= (wc + magic)
303
304 - ac : the players ac is lowered by (ac + magic) if (player->ac + magic) > 0
305
306 - dam: the players dam is adjusted by: player->dam += (dam + magic)
307
308 - weapon speed (last_sp): weapon_speed is calculated by: (last_sp * 2 - magic) / 2
309 (minium is 0)
310
311 =item ac <number>
312
313 the amount of ac points the player's ac is decreased
314
315 =item wc <number>
316
317 the amount of wc points the player's ac is decreased
318
319 =back
320
321 =head4 Player inherits following flags from weapons:
322
323 FLAG_LIFESAVE, FLAG_REFL_SPELL, FLAG_REFL_MISSILE, FLAG_STEALTH,
324 FLAG_XRAYS, FLAG_BLIND, FLAG_SEE_IN_DARK, FLAG_UNDEAD