--- deliantra/server/include/define.h 2007/09/01 08:03:44 1.73
+++ deliantra/server/include/define.h 2008/05/06 16:55:25 1.82
@@ -1,11 +1,11 @@
/*
- * This file is part of Crossfire TRT, the Roguelike Realtime MORPG.
+ * This file is part of Deliantra, the Roguelike Realtime MMORPG.
*
- * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team
+ * Copyright (©) 2005,2006,2007,2008 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
* Copyright (©) 2003-2005,2007 Mark Wedel & Crossfire Development Team
* Copyright (©) 1992,2007 Frank Tore Johansen
*
- * Crossfire TRT is free software: you can redistribute it and/or modify
+ * Deliantra is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
@@ -18,7 +18,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
- * The authors can be reached via e-mail to
+ * The authors can be reached via e-mail to
*/
/* This file is best viewed with a window width of about 100 character */
@@ -44,25 +44,12 @@
#ifdef __NetBSD__
# include
#endif
-#ifndef MIN
-# define MIN(x,y) min (x, y)
-#endif
-#ifndef MAX
-# define MAX(x,y) max (x, y)
-#endif
// maximum length of an object name in the protocol
#define NAME_LEN 127
-/* MAX3 is basically like MAX, but instead does 3 values. */
-#ifndef MAX3
-# define MAX3(x,y, z) (MAX(x, MAX(y,z)))
-#endif
-
-/* MIN3 is basically like MIN, but instead does 3 values. */
-#ifndef MIN3
-# define MIN3(x,y, z) (MIN(x, MIN(y,z)))
-#endif
+#undef MIN
+#undef MAX
#define MAX_STAT 30 /* The maximum legal value of any stat */
#define MIN_STAT 1 /* The minimum legal value of any stat */
@@ -90,7 +77,6 @@
#define MAX_NAME 48
#define MAX_EXT_TITLE 98
-/* Fatal variables: */
//TODO: remove all calls to fatal and replace them by cleanup
#define OUT_OF_MEMORY 0
#define MAP_ERROR 1
@@ -124,20 +110,22 @@
#define POISON 7
#define BOOK 8
#define CLOCK 9
-
+//10
+//11
+//12
#define ARROW 13
#define BOW 14
#define WEAPON 15
#define ARMOUR 16
#define PEDESTAL 17
#define ALTAR 18
-
+//19
#define LOCKED_DOOR 20
#define SPECIAL_KEY 21
#define MAP 22
#define DOOR 23
#define KEY 24
-
+//25
#define TIMED_GATE 26
#define TRIGGER 27
#define GRIMREAPER 28
@@ -156,10 +144,10 @@
#define TELEPORTER 41
#define CREATOR 42
#define SKILL 43 /* also see SKILL_TOOL (74) below */
-
+//44
#define EARTHWALL 45
#define GOLEM 46
-
+//47
#define THROWN_OBJ 48
#define BLINDNESS 49
#define GOD 50
@@ -184,7 +172,7 @@
* a monster into a peaceful being incapable of attack.
*/
#define GEM 60
-
+//61
#define FIREWALL 62
#define ANVIL 63
#define CHECK_INV 64 /* by b.t. thomas@nomad.astro.psu.edu */
@@ -208,30 +196,32 @@
#define INORGANIC 73 /* metals and minerals */
#define SKILL_TOOL 74 /* Allows the use of a skill */
#define LIGHTER 75
-
+//76
#define BUILDABLE_WALL 77 /* this is a buildable wall */
-
-
+//78
#define MISC_OBJECT 79 /* misc. objects are for objects without a function
in the engine. Like statues, clocks, chairs,...
If perhaps we create a function where we can sit
on chairs, we create a new type and remove all
chairs from here. */
-
+//80
+//81
#define LAMP 82 /* a lamp */
#define DUPLICATOR 83 /* duplicator/multiplier object */
-
+//84
#define SPELLBOOK 85
-
+//86
#define CLOAK 87
-
+//88
+//89
#define SPINNER 90
#define GATE 91
#define BUTTON 92
#define CF_HANDLE 93
#define HOLE 94
#define TRAPDOOR 95
-
+//96
+//97
#define SIGN 98
#define BOOTS 99
#define GLOVES 100
@@ -241,9 +231,9 @@
#define BRACERS 104
#define POISONING 105
#define SAVEBED 106
-
+//107
+//108
#define WAND 109
-
#define INSCRIBABLE 110 // inscribable things, st 0 book st 1 spell
#define SCROLL 111
#define DIRECTOR 112
@@ -251,89 +241,68 @@
#define FORCE 114
#define POTION_EFFECT 115 /* a force, holding the effect of a potion */
#define EVENT_CONNECTOR 116 /* Lauwenmark: an invisible object holding a plugin event hook */
-
+//117
+//118
+//119
+//120
#define CLOSE_CON 121 /* Eneq(@csd.uu.se): Id for close_container archetype. */
#define CONTAINER 122
#define ARMOUR_IMPROVER 123
#define WEAPON_IMPROVER 124
-
+//125
+//126
+//127
+//128
+//129
#define SKILLSCROLL 130 /* can add a skill to player's inventory -bt. */
+//131
+//132
+//133
+//134
+//135
+//136
+//137
#define DEEP_SWAMP 138
#define IDENTIFY_ALTAR 139
-
+//140
+//141
+//142
+//143
+//144
+//145
+//146
+//147
+//148
+//149
#define MENU 150 /* Mark Wedel (mark@pyramid.com) Shop inventories */
-
+//151
+//152
+//153
#define RUNE 154
#define TRAP 155
-
#define POWER_CRYSTAL 156
#define CORPSE 157
-
#define DISEASE 158
#define SYMPTOM 159
#define BUILDER 160 /* Generic item builder, see subtypes */
#define MATERIAL 161 /* Material for building */
-
+//162
#define ITEM_TRANSFORMER 163 /* Transforming one item with another */
-
+//164
#define SAFE_GROUND 165 /* This is a safe ground, means that neither bombs,
potions, alchemy, or magic works here (elmex) */
#define NUM_TYPES 166 // must be max(type) + 1
-/* DEAD TYPES: */
-//#define FBULLET 10
-//#define FBALL 11
-//#define LIGHTNING 12 // elmex: implemented by type 102 subtype 4
-//#define CONFUSION 19
-//#define MMISSILE 25
-/*#define EXPERIENCE 44*//* This is basically obsolete now. It used to contain
- * experience for broad skill categories. This value
- * is now automatically converteed at load time.
- */
-//#define BOMB 47
-//#define FIRECHEST 61 /* FIRECHEST folded into FIREWALL */
-
-/* random crossfire developer: The trap_part, wall, light_source,
- * misc_object, monster, and spawn_generator
- * types are not used in any archetypes,
- * and should perhaps be removed.
- *
- * Wed Dec 20 13:35:24 CET 2006:
- * elmex: removed TRAP_PART, LIGHT_SOURCE, MONSTER and SPAWN_GENERATOR now.
- * monsters are marked by FLAG_MONSTER and generator with FLAG_GENERATOR.
- * renamed WALL to BUILDABLE_WALL.
- */
-
-//#define TRAP_PART 76 /* Needed by set traps skill -b.t. */
-//#define LIGHT_SOURCE 78 /* torches, lamps, etc. */
-//#define MONSTER 80 /* yes, thats a real, living creature */
-//#define SPAWN_GENERATOR 81 /* a spawn point or monster generator object */
-//#define TOOL 84 /* a tool for building objects */
-//#define BUILDFAC 86 /* facilities for building objects */
-//#define CONE 88
-//#define AURA 89 /* aura spell object */
-//#define WORD_OF_RECALL 96
-//#define PARAIMAGE 97
-//#define POISONCLOUD 107
-//#define FIREHOLES 108
-//#define ABILITY 110
-/* unused: 125 - 129
- * type 125 was MONEY_CHANGER
- */
-//#define CANCELLATION 141 /* not used with new spell code */
-//#define BALL_LIGHTNING 151 /* peterm: ball lightning and color spray */
-//#define SWARM_SPELL 153
-//#define GPS 162 /* Ground positionning system, moved to Python plugin */
-//#define QUEST 164 /* See below for subtypes */
-
/* END TYPE DEFINE */
-#define NUM_SUBTYPES 64 // maximum supported subtype number + 1, can be increased to 256
+// maximum supported subtype number + 1, can be increased to 256
+// currently (2007-09) in use: 50
+#define NUM_SUBTYPES 64
/* Subtypes for BUILDER */
-#define ST_BD_BUILD 1 /* Builds an item */
-#define ST_BD_REMOVE 2 /* Removes an item */
+#define ST_BD_BUILD 1 /* Builds an item */
+#define ST_BD_REMOVE 2 /* Removes an item */
/* Subtypes for MATERIAL */
#define ST_MAT_FLOOR 1 /* Floor */
@@ -470,7 +439,7 @@
#define FLAG_IS_USED_UP 28 /* When (--food<0) the object will get destroyed */
#define FLAG_IDENTIFIED 29 /* Player knows full info about item */
#define FLAG_REFLECTING 30 /* Object reflects from walls (lightning) */
-#define FLAG_CHANGING 31 /* Changes to other_arch when anim is done */
+#define FLAG_CHANGING 31 /* Changes to other_arch when anim is done, creates new when !alive */
#define FLAG_SPLITTING 32 /* Object splits into stats.food other objs */
#define FLAG_HITBACK 33 /* Object will hit back when hit */
#define FLAG_STARTEQUIP 34 /* Object was given to player at start */
@@ -584,8 +553,6 @@
* in common/loader.l
*/
-#define NROFNEWOBJS(xyz) ((xyz)->stats.food)
-
/* If you add new movement types, you may need to update
* describe_item() so properly describe those types.
* change_abil() probably should be updated also.
@@ -621,8 +588,6 @@
#define OB_TYPE_MOVE_BLOCK(ob1, type) \
((type) && (ob1->move_type & type) == ob1->move_type)
-#define SET_GENERATE_TYPE(xyz,va) (xyz)->stats.sp=(va)
-#define GENERATE_TYPE(xyz) ((xyz)->stats.sp)
#define GENERATE_SPEED(xyz) ((xyz)->stats.maxsp) /* if(!RANDOM()%) */
#define EXIT_PATH(xyz) (xyz)->slaying
@@ -794,12 +759,6 @@
#define RANDOM() (rndm.next () & 0xffffffU)
-/* Returns the weight of the given object. Note: it does not take the number of
- * items (nrof) into account.
- * (this looks rather bogus, schmorp)
- */
-#define WEIGHT(op) ((op)->nrof ? (op)->weight : (op)->weight + (op)->carrying)
-
/*
* Warning!
* If you add message types here, don't forget