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

Comparing deliantra/server/include/define.h (file contents):
Revision 1.129 by root, Sun Apr 11 01:03:58 2010 UTC vs.
Revision 1.146 by root, Wed Dec 5 19:31:26 2018 UTC

1/* 1/*
2 * This file is part of Deliantra, the Roguelike Realtime MMORPG. 2 * This file is part of Deliantra, the Roguelike Realtime MMORPG.
3 * 3 *
4 * Copyright (©) 2017,2018 Marc Alexander Lehmann / the Deliantra team
4 * Copyright (©) 2005,2006,2007,2008,2009,2010 Marc Alexander Lehmann / Robin Redeker / the Deliantra team 5 * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
5 * Copyright (©) 2003-2005 Mark Wedel & Crossfire Development Team 6 * Copyright (©) 2003-2005 Mark Wedel & Crossfire Development Team
6 * Copyright (©) 1992 Frank Tore Johansen 7 * Copyright (©) 1992 Frank Tore Johansen
7 * 8 *
8 * Deliantra is free software: you can redistribute it and/or modify it under 9 * Deliantra is free software: you can redistribute it and/or modify it under
9 * the terms of the Affero GNU General Public License as published by the 10 * the terms of the Affero GNU General Public License as published by the
10 * Free Software Foundation, either version 3 of the License, or (at your 11 * Free Software Foundation, either version 3 of the License, or (at your
11 * option) any later version. 12 * option) any later version.
12 * 13 *
13 * This program is distributed in the hope that it will be useful, 14 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details. 17 * GNU General Public License for more details.
17 * 18 *
18 * You should have received a copy of the Affero GNU General Public License 19 * You should have received a copy of the Affero GNU General Public License
19 * and the GNU General Public License along with this program. If not, see 20 * and the GNU General Public License along with this program. If not, see
20 * <http://www.gnu.org/licenses/>. 21 * <http://www.gnu.org/licenses/>.
21 * 22 *
22 * The authors can be reached via e-mail to <support@deliantra.net> 23 * The authors can be reached via e-mail to <support@deliantra.net>
23 */ 24 */
24 25
25/* This file is best viewed with a window width of about 100 character */ 26/* This file is best viewed with a window width of about 100 character */
26 27
41 42
42#ifdef __NetBSD__ 43#ifdef __NetBSD__
43# include <sys/param.h> 44# include <sys/param.h>
44#endif 45#endif
45 46
47#define MAXNUMLEVELS 256 // maximum number of levels possible
46#define MAXLEVEL 115 // for treasure calculations only 48#define MAXLEVEL_TREASURE 115 // for treasure calculations only
47 49
48// maximum length of an object name in the protocol 50// maximum length of an object name in the protocol
49#define NAME_LEN 127 51#define NAME_LEN 127
50 52
51#define MAX_STAT 30 /* The maximum legal value of any stat */ 53#define MAX_STAT 30 /* The maximum legal value of any stat */
61#define MIN_DAM 0 63#define MIN_DAM 0
62#define MAX_DAM 200 64#define MAX_DAM 200
63#define MIN_DIGESTION -35 65#define MIN_DIGESTION -35
64#define MAX_DIGESTION 70 66#define MAX_DIGESTION 70
65 67
66#define MAX_BUF 1024 /* Used for all kinds of things */ 68#define MAX_BUF 1024 /* Used for all kinds of things, MUST be >= 1024 */
67 69
68#define MAX_NAME 48 70#define MAX_NAME 48
69 71
70#define ATTUNE_REPELL 16 // levels diff for attune/repell 72#define ATTUNE_REPELL 16 // levels diff for attune/repell
71 73
109#define LOCKED_DOOR 20 111#define LOCKED_DOOR 20
110#define SPECIAL_KEY 21 112#define SPECIAL_KEY 21
111#define MAP 22 113#define MAP 22
112#define DOOR 23 114#define DOOR 23
113#define KEY 24 115#define KEY 24
114//25 116#define PHYSICS 25 // deliantra: "things that move"
115#define TIMED_GATE 26 117#define TIMED_GATE 26
116#define TRIGGER 27 118#define TRIGGER 27
117#define GRIMREAPER 28 119#define GRIMREAPER 28
118#define MAGIC_EAR 29 120#define MAGIC_EAR 29
119#define TRIGGER_BUTTON 30 121#define TRIGGER_BUTTON 30
160#define GEM 60 162#define GEM 60
161#define MENU 61 /* Mark Wedel (mark@pyramid.com) Shop inventories */ 163#define MENU 61 /* Mark Wedel (mark@pyramid.com) Shop inventories */
162#define FIREWALL 62 164#define FIREWALL 62
163#define ANVIL 63 165#define ANVIL 63
164#define CHECK_INV 64 /* by b.t. thomas@nomad.astro.psu.edu */ 166#define CHECK_INV 64 /* by b.t. thomas@nomad.astro.psu.edu */
165#define MOOD_FLOOR 65 /* 167#define MOOD_FLOOR 65 /*
166 * values of last_sp set how to change: 168 * values of last_sp set how to change:
167 * 0 = furious, all monsters become aggressive 169 * 0 = furious, all monsters become aggressive
168 * 1 = angry, all but friendly become aggressive 170 * 1 = angry, all but friendly become aggressive
169 * 2 = calm, all aggressive monsters calm down 171 * 2 = calm, all aggressive monsters calm down
170 * 3 = sleep, all monsters fall asleep 172 * 3 = sleep, all monsters fall asleep
245 247
246typedef std::bitset<NUM_TYPES> typeset; 248typedef std::bitset<NUM_TYPES> typeset;
247 249
248/* These are the items that currently can change digestion, regeneration, 250/* These are the items that currently can change digestion, regeneration,
249 * spell point recovery and mana point recovery. Seems sort of an arbitary 251 * spell point recovery and mana point recovery. Seems sort of an arbitary
250 * list, but other items store other info into stats array. 252 * list, but other items store other info into stats array.
251 * As a special exception, bows use stats.sp for their own purposes. 253 * As a special exception, bows use stats.sp for their own purposes.
252 */ 254 */
253static const struct digest_types : typeset 255static const struct digest_types : typeset
254{ 256{
255 digest_types () 257 digest_types ()
282 284
283/* Subtypes for MATERIAL */ 285/* Subtypes for MATERIAL */
284#define ST_MAT_FLOOR 1 /* Floor */ 286#define ST_MAT_FLOOR 1 /* Floor */
285#define ST_MAT_WALL 2 /* Wall */ 287#define ST_MAT_WALL 2 /* Wall */
286#define ST_MAT_ITEM 3 /* All other items, including doors & such */ 288#define ST_MAT_ITEM 3 /* All other items, including doors & such */
289#define ST_MAT_QUAD 4 /* Quad build material */
287 290
288/* definitions for weapontypes */ 291/* definitions for weapontypes */
289 292
290#define WEAP_HIT 0 /* the basic */ 293#define WEAP_HIT 0 /* the basic */
291#define WEAP_SLASH 1 /* slash */ 294#define WEAP_SLASH 1 /* slash */
353#define PU_FLESH 0x04000000 356#define PU_FLESH 0x04000000
354 357
355 358
356/* Instead of using arbitrary constants for indexing the 359/* Instead of using arbitrary constants for indexing the
357 * freearr, add these values. <= SIZEOFFREE1 will get you 360 * freearr, add these values. <= SIZEOFFREE1 will get you
358 * within 1 space. <= SIZEOFFREE2 wll get you withing 361 * within 1 space. <= SIZEOFFREE2 wll get you withing
359 * 2 spaces, and the entire array (< SIZEOFFREE) is 362 * 2 spaces, and the entire array (< SIZEOFFREE) is
360 * three spaces 363 * three spaces
361 */ 364 */
362#define SIZEOFFREE0 0 365#define SIZEOFFREE0 0
363#define SIZEOFFREE1 8 366#define SIZEOFFREE1 8
364#define SIZEOFFREE2 24 367#define SIZEOFFREE2 24
365#define SIZEOFFREE3 48 368#define SIZEOFFREE3 48
366#define SIZEOFFREE 49 369#define SIZEOFFREE 49
367 370
368#define NROF_SOUNDS (23 + NROFREALSPELLS) /* Number of sounds */ 371#define NROF_SOUNDS (23 + NROFREALSPELLS) /* Number of sounds */
369 372
370/* 373/*
371 * If any FLAG's are added or changed, make sure the flag_names structure in 374 * If any FLAG's are added or changed, make sure the flag_names structure in
372 * common/loader.C is updated. 375 * common/loader.C is updated.
373 */ 376 */
374 377
375/* the flags */ 378/* the flags */
381#define FLAG_WIZLOOK 4 /* disable los and lighting */ 384#define FLAG_WIZLOOK 4 /* disable los and lighting */
382#define FLAG_APPLIED 5 /* Object is ready for use by living */ 385#define FLAG_APPLIED 5 /* Object is ready for use by living */
383#define FLAG_UNPAID 6 /* Object hasn't been paid for yet */ 386#define FLAG_UNPAID 6 /* Object hasn't been paid for yet */
384#define FLAG_USE_SHIELD 7 /* Can this creature use a shield? */ 387#define FLAG_USE_SHIELD 7 /* Can this creature use a shield? */
385#define FLAG_NO_PICK 8 /* Object can't be picked up */ 388#define FLAG_NO_PICK 8 /* Object can't be picked up */
386/*#define FLAG_WALK_ON 9*/ 389#define FLAG_IS_TRANSPARENT_FLOOR 9 // floor shows things on lower z-level(s), CF: walk_on
387/*#define FLAG_NO_PASS 10*//* Nothing can pass (wall() is true) */ 390/*#define FLAG_NO_PASS 10*//* Nothing can pass (wall() is true) */
388#define FLAG_ANIMATE 11 /* The object looks at archetype for faces */ 391#define FLAG_ANIMATE 11 /* The object looks at archetype for faces */
389/*#define FLAG_SLOW_MOVE 12*//* Uses the stats.exp/1000 to slow down */ 392/*#define FLAG_SLOW_MOVE 12*//* Uses the stats.exp/1000 to slow down */
390/*#define FLAG_FLYING 13*//* Not affected by WALK_ON or SLOW_MOVE) */ 393/*#define FLAG_FLYING 13*//* Not affected by WALK_ON or SLOW_MOVE) */
391#define FLAG_HIDDEN 13 /* hidden monster (not invisible), TODO: used how, what for? TODO: why not saved? */ 394#define FLAG_HIDDEN 13 /* hidden monster (not invisible), TODO: used how, what for? TODO: why not saved? */
488 * load_original_map() */ 491 * load_original_map() */
489#define FLAG_RANDOM_SPEED 104 /* speed_left should be randomised on instantiate */ 492#define FLAG_RANDOM_SPEED 104 /* speed_left should be randomised on instantiate */
490#define FLAG_ACTIVATE_ON_PUSH 105 /* connected object is activated when 'pushed' */ 493#define FLAG_ACTIVATE_ON_PUSH 105 /* connected object is activated when 'pushed' */
491#define FLAG_ACTIVATE_ON_RELEASE 106 /* connected object is activated when 'released' */ 494#define FLAG_ACTIVATE_ON_RELEASE 106 /* connected object is activated when 'released' */
492#define FLAG_IS_WATER 107 /* apparently not used inside the server for anything */ 495#define FLAG_IS_WATER 107 /* apparently not used inside the server for anything */
493#define FLAG_CONTENT_ON_GEN 108 496#define FLAG_CONTENT_ON_GEN 108
494#define FLAG_IS_A_TEMPLATE 109 /* Object has no ingame life until instanciated */ 497#define FLAG_IS_A_TEMPLATE 109 /* Object has no ingame life until instanciated */
495#define FLAG_IS_BUILDABLE 110 /* Can build on item */ 498#define FLAG_IS_BUILDABLE 110 /* Can build on item */
496#define FLAG_DESTROY_ON_DEATH 111 /* Object will be destroyed when env dies */ 499#define FLAG_DESTROY_ON_DEATH 111 /* Object will be destroyed when env dies */
497#define FLAG_NO_MAP_SAVE 112 // item doesn't get saved with map 500#define FLAG_NO_MAP_SAVE 112 // item doesn't get saved with map
501#define FLAG_IS_QUAD 113 /* This is a destructible and buildable item
502 * (for the quads world for instance)
498 503 */
504
505// temporary assignments
506#define FLAG_PHYSICS_QUEUE 114 // object queued for physics TODO: temporary allocation
507
499#define NUM_FLAGS 113 /* Should always be equal to the last 508#define NUM_FLAGS 115 /* Should always be equal to the last
500 * defined flag + 1. If you change this, 509 * defined flag + 1.
501 * make sure you update the flag_links
502 * in common/loader.l
503 */ 510 */
504 511
505/* If you add new movement types, you may need to update 512/* If you add new movement types, you may need to update
506 * describe_item() so properly describe those types. 513 * describe_item() so properly describe those types.
507 * change_abil() probably should be updated also. 514 * change_abil() probably should be updated also.
529 536
530/* Basic macro to see if if ob1 can not move onto a space based 537/* Basic macro to see if if ob1 can not move onto a space based
531 * on the 'type' move_block parameter 538 * on the 'type' move_block parameter
532 * Add check - if type is 0, don't stop anything from moving 539 * Add check - if type is 0, don't stop anything from moving
533 * onto it. 540 * onto it.
534 * 541 *
535 */ 542 */
536#define OB_TYPE_MOVE_BLOCK(ob1, type) \ 543#define OB_TYPE_MOVE_BLOCK(ob1, type) \
537 ((type) && (ob1->move_type & type) == ob1->move_type) 544 ((type) && (ob1->move_type & type) == ob1->move_type)
538 545
539#define GENERATE_SPEED(xyz) ((xyz)->stats.maxsp) /* if(!RANDOM()%<speed>) */ 546#define GENERATE_SPEED(xyz) ((xyz)->stats.maxsp) /* if(!RANDOM()%<speed>) */
567#define F_IDENTIFIED 8 /* flag to calculate value of identified item */ 574#define F_IDENTIFIED 8 /* flag to calculate value of identified item */
568#define F_NOT_CURSED 16 /* flag to calculate value of uncursed item */ 575#define F_NOT_CURSED 16 /* flag to calculate value of uncursed item */
569#define F_APPROX 32 /* flag to give a guess of item value */ 576#define F_APPROX 32 /* flag to give a guess of item value */
570#define F_SHOP 64 /* consider the effect that the shop that the player is in has */ 577#define F_SHOP 64 /* consider the effect that the shop that the player is in has */
571 578
572#define DIRX(xyz) freearr_x[(xyz)->direction] 579#define DIRX(xyz) freearr_x[(xyz)]
573#define DIRY(xyz) freearr_y[(xyz)->direction] 580#define DIRY(xyz) freearr_y[(xyz)]
574 581
575#define ARMOUR_SPEED(xyz) (xyz)->last_sp 582#define ARMOUR_SPEED(xyz) (xyz)->last_sp
576#define ARMOUR_SPELLS(xyz) (xyz)->gen_sp_armour 583#define ARMOUR_SPELLS(xyz) (xyz)->gen_sp_armour
577#define WEAPON_SPEED(xyz) (xyz)->last_sp 584#define WEAPON_SPEED(xyz) (xyz)->last_sp
578 585
645 /* changing directions */ 652 /* changing directions */
646 /* this is VERTICAL movement */ 653 /* this is VERTICAL movement */
647#define LO4 15 /* bitmasks for upper and lower 4 bits from 8 bit fields */ 654#define LO4 15 /* bitmasks for upper and lower 4 bits from 8 bit fields */
648#define HI4 240 655#define HI4 240
649 656
650#define BLANK_FACE_NAME "blank.x11" 657#define BLANK_FACE_NAME "blank.x11"
651#define EMPTY_FACE_NAME "empty.x11" 658#define EMPTY_FACE_NAME "empty.x11"
659#define MAGICMOUTH_FACE_NAME "magicmouth.x11"
652 660
653/* 661/*
654 * Defines for the luck/random functions to make things more readable 662 * Defines for the luck/random functions to make things more readable
655 */ 663 */
656 664

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines