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

Comparing deliantra/server/include/player.h (file contents):
Revision 1.17 by root, Tue Sep 19 22:05:55 2006 UTC vs.
Revision 1.27 by root, Fri Dec 15 20:08:45 2006 UTC

17 17
18 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
19 along with this program; if not, write to the Free Software 19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 21
22 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
23*/ 23*/
24 24
25#define NUM_OUTPUT_BUFS 5 25#define NUM_OUTPUT_BUFS 5
26struct Output_Buf 26struct Output_Buf
27{ 27{
107#endif 107#endif
108 sint64 total_exp; 108 sint64 total_exp;
109 uint32 kills; 109 uint32 kills;
110}; 110};
111 111
112ACC_CLASS (player)
113
112// memsettable part of player 114// memsettable part of player
113struct player_pod 115struct player_pod
114{ 116{
115 object_ptr ob; /* The object representing the player */ 117 object_ptr ACC (RW, ob); /* The object representing the player */
116 maptile *loading; /* When entering a map in progress of loading, not really used */ 118 maptile *loading; /* When entering a map in progress of loading, not really used */
117 rangetype shoottype; /* Which range-attack is being used by player */ 119 rangetype shoottype; /* Which range-attack is being used by player */
118 bowtype_t bowtype; /* which firemode? */ 120 bowtype_t bowtype; /* which firemode? */
119 petmode_t petmode; /* which petmode? */ 121 petmode_t petmode; /* which petmode? */
120 object_ptr ranges[range_size]; /* object for each range. Set up in fix player. Note */ 122 object_ptr ranges[range_size]; /* object for each range. Set up in fix player. Note */
121 /* That not all are used, it is just nice to map this 1:1 */ 123 /* That not all are used, it is just nice to map this 1:1 */
122 /* With the range names */ 124 /* With the range names */
123 uint32 golem_count; /* To track the golem */
124 usekeytype usekeys; /* Method for finding keys for doors */ 125 usekeytype usekeys; /* Method for finding keys for doors */
125 unapplymode unapply; /* Method for auto unapply */ 126 unapplymode unapply; /* Method for auto unapply */
126 uint32 count; /* Any numbers typed before a command */ 127 uint32 ACC (RW, count); /* Any numbers typed before a command */
127 uint32 mode; /* Mode of player for pickup. */ 128 uint32 ACC (RW, mode); /* Mode of player for pickup. */
128 129
129 sint8 digestion; /* Any bonuses/penalties to digestion */ 130 sint8 ACC (RW, digestion); /* Any bonuses/penalties to digestion */
130 sint8 gen_hp; /* Bonuses to regeneration speed of hp */ 131 sint8 ACC (RW, gen_hp); /* Bonuses to regeneration speed of hp */
131 sint8 gen_sp; /* Bonuses to regeneration speed of sp */ 132 sint8 ACC (RW, gen_sp); /* Bonuses to regeneration speed of sp */
132 sint8 gen_sp_armour; /* Penalty to sp regen from armour */ 133 sint8 ACC (RW, gen_sp_armour); /* Penalty to sp regen from armour */
133 sint8 gen_grace; /* Bonuses to regeneration speed of grace */ 134 sint8 ACC (RW, gen_grace); /* Bonuses to regeneration speed of grace */
134 sint16 item_power; /* Total item power of objects equipped */ 135 sint16 ACC (RW, item_power); /* Total item power of objects equipped */
135 uint8 state; /* Input state of the player (name, password, etc */ 136 uint8 ACC (RW, state); /* Input state of the player (name, password, etc */
136 uint8 listening; /* Which priority will be used in info_all */ 137 uint8 ACC (RW, listening); /* Which priority will be used in info_all */
137 sint8 last_level; /* Last level we sent to client */ 138 sint8 ACC (RW, last_level); /* Last level we sent to client */
138 139
139 /* Try to put all the bitfields together - saves some small amount of memory */ 140 /* Try to put all the bitfields together - saves some small amount of memory */
140 uint32 braced:1; /* Will not move if braced, only attack */ 141 uint32 ACC (RO, braced):1; /* Will not move if braced, only attack */
141 uint32 tmp_invis:1; /* Will invis go away when we attack ? */ 142 uint32 ACC (RO, tmp_invis):1; /* Will invis go away when we attack ? */
142 uint32 do_los:1; /* If true, need to call update_los() in draw(), and clear */ 143 uint32 ACC (RO, do_los):1; /* If true, need to call update_los() in draw(), and clear */
143 uint32 fire_on:1; /* Player should fire object, not move */ 144 uint32 ACC (RO, fire_on):1; /* Player should fire object, not move */
144 uint32 run_on:1; /* Player should keep moving in dir until run is off */ 145 uint32 ACC (RO, run_on):1; /* Player should keep moving in dir until run is off */
145 uint32 has_hit:1; /* If set, weapon_sp instead of speed will count */ 146 uint32 ACC (RO, has_hit):1; /* If set, weapon_sp instead of speed will count */
146 uint32 name_changed:1; /* If true, the player has set a name. */ 147 uint32 ACC (RO, name_changed):1; /* If true, the player has set a name. */
147 uint32 peaceful:1; /* If set, won't attack friendly creatures */ 148 uint32 ACC (RO, peaceful):1; /* If set, won't attack friendly creatures */
148 uint32 hidden:1; /* If True, player (DM) is hidden from view */ 149 uint32 ACC (RO, hidden):1; /* If True, player (DM) is hidden from view */
149 uint32 explore:1; /* if True, player is in explore mode */ 150 uint32 ACC (RO, explore):1; /* if True, player is in explore mode */
150 uint32 no_shout:1; /* if True, player is *not* able to use shout command */ 151 uint32 ACC (RO, no_shout):1; /* if True, player is *not* able to use shout command */
151 152
152 object_ptr last_skill_ob[NUM_SKILLS]; /* the exp object */ 153 object_ptr last_skill_ob[NUM_SKILLS]; /* the exp object */
153 sint64 last_skill_exp[NUM_SKILLS]; /* shadow register. if != exp. obj update client */ 154 sint64 last_skill_exp[NUM_SKILLS]; /* shadow register. if != exp. obj update client */
154 155
155 float weapon_sp; /* Penalties to speed when fighting w speed >ws/10 */ 156 float ACC (RW, weapon_sp); /* Penalties to speed when fighting w speed >ws/10 */
156 float last_weapon_sp; /* if diff than weapon_sp, update client */ 157 float ACC (RW, last_weapon_sp); /* if diff than weapon_sp, update client */
157 uint16 last_flags; /* fire/run on flags for last tick */ 158 uint16 ACC (RW, last_flags); /* fire/run on flags for last tick */
158 sint32 last_weight; /* Last weight as sent to client; -1 means do not send weight */ 159 sint32 ACC (RW, last_weight); /* Last weight as sent to client; -1 means do not send weight */
159 sint32 last_weight_limit; /* Last weight limit transmitted to client */ 160 sint32 ACC (RW, last_weight_limit); /* Last weight limit transmitted to client */
160 uint32 last_path_attuned; /* Last spell attunment sent to client */ 161 uint32 ACC (RW, last_path_attuned); /* Last spell attunment sent to client */
161 uint32 last_path_repelled; /* Last spell repelled sent to client */ 162 uint32 ACC (RW, last_path_repelled); /* Last spell repelled sent to client */
162 uint32 last_path_denied; /* Last spell denied sent to client */ 163 uint32 ACC (RW, last_path_denied); /* Last spell denied sent to client */
163 living orig_stats; /* Permanent real stats of player */ 164 living ACC (RO, orig_stats); /* Permanent real stats of player */
164 living last_stats; /* Last stats as sent to client */ 165 living ACC (RO, last_stats); /* Last stats as sent to client */
165 float last_speed; /* Last speed as sent to client */ 166 float ACC (RW, last_speed); /* Last speed as sent to client */
166 sint16 last_resist[NROFATTACKS]; /* last resist values sent to client */ 167 sint16 last_resist[NROFATTACKS]; /* last resist values sent to client */
167 int Swap_First; /* First stat player has selected to swap */ 168 int Swap_First; /* First stat player has selected to swap */
168 object_ptr last_used; /* Pointer to object last picked or applied */ 169 object_ptr ACC (RW, last_used); /* Pointer to object last picked or applied */
169 uint32 last_used_id; /* Safety measures to be sure it's the same */ 170
171 sint16 ACC (RW, bed_x), ACC (RW, bed_y); /* x,y - coordinates of respawn (savebed) */
172 char ACC (RW, savebed_map)[MAX_BUF]; /* map where player will respawn after death */
173 char ACC (RW, maplevel)[MAX_BUF]; /* On which level is the player? */
174 char ACC (RW, spellparam)[MAX_BUF]; /* What param to add to spells */
175
176 char ACC (RW, own_title)[MAX_NAME]; /* Title the player has chosen for themself */
177 /* Note that for dragon players, this is filled in for them */
178 char ACC (RW, title)[64]; /* Default title, like fighter, wizard, etc */
179
180 sint8 levhp[11]; /* What the player gained on that level */
181 sint8 levsp[11]; /* Same for sp */
182 sint8 levgrace[11]; /* And same for grace */
183
184 char ACC (RW, killer)[64]; /* Who killed this player. */
185
186 char write_buf[MAX_BUF]; /* Holds arbitrary input from client */
187 char input_buf[MAX_BUF]; /* Holds command to run */
188 char ACC (RW, password)[16]; /* 2 (seed) + 11 (crypted) + 1 (EOS) + 2 (safety) = 16 */
189
190 time_t ACC (RW, last_save_time);
191 uint32 ACC (RW, last_save_tick);
192 partylist *ACC (RW, party); /* Party this player is part of */
193 partylist *ACC (RW, party_to_join); /* used when player wants to join a party */
194 /* but we will have to get password first */
195 /* so we have to remember which party to */
196 /* join */
197 char ACC (RW, search_str)[MAX_BUF]; /* Item we are looking for */
198 sint16 ACC (RW, encumbrance); /* How much our player is encumbered */
199 uint16 ACC (RW, outputs_sync); /* How often to print, no matter what */
200 uint16 ACC (RW, outputs_count); /* Print if this count is exceeded */
201 object_ptr ACC (RW, mark); /* marked object */
202 /* Special DM fields */
203 tag_t *stack_items; /* Item stack for patch/dump/... commands */
204 int ACC (RW, stack_position); /* Current stack position, 0 for no item */
170 sint8 blocked_los[MAP_CLIENT_X][MAP_CLIENT_Y]; /* array showing what spaces */ 205 sint8 blocked_los[MAP_CLIENT_X][MAP_CLIENT_Y]; /* array showing what spaces */
171 /* the player can see. For maps smaller than */ 206 /* the player can see. For maps smaller than */
172 /* MAP_CLIENT_.., the upper left is used */ 207 /* MAP_CLIENT_.., the upper left is used */
173
174 sint16 bed_x, bed_y; /* x,y - coordinates of respawn (savebed) */
175 char savebed_map[MAX_BUF]; /* map where player will respawn after death */
176 char maplevel[MAX_BUF]; /* On which level is the player? */
177 char spellparam[MAX_BUF]; /* What param to add to spells */
178
179 char own_title[MAX_NAME]; /* Title the player has chosen for themself */
180 /* Note that for dragon players, this is filled in for them */
181 char title[BIG_NAME]; /* Default title, like fighter, wizard, etc */
182
183 sint8 levhp[11]; /* What the player gained on that level */
184 sint8 levsp[11]; /* Same for sp */
185 sint8 levgrace[11]; /* And same for grace */
186
187 char killer[BIG_NAME]; /* Who killed this player. */
188
189 char write_buf[MAX_BUF]; /* Holds arbitrary input from client */
190 char input_buf[MAX_BUF]; /* Holds command to run */
191 char password[16]; /* 2 (seed) + 11 (crypted) + 1 (EOS) + 2 (safety) = 16 */
192
193#ifdef SAVE_INTERVAL
194 time_t last_save_time;
195#endif /* SAVE_INTERVAL */
196#ifdef AUTOSAVE
197 uint32 last_save_tick;
198#endif
199 partylist *party; /* Party this player is part of */
200 partylist *party_to_join; /* used when player wants to join a party */
201 /* but we will have to get password first */
202 /* so we have to remember which party to */
203 /* join */
204 char search_str[MAX_BUF]; /* Item we are looking for */
205 sint16 encumbrance; /* How much our player is encumbered */
206 uint16 outputs_sync; /* How often to print, no matter what */
207 uint16 outputs_count; /* Print if this count is exceeded */
208 object_ptr mark; /* marked object */
209 uint32 mark_count; /* count of mark object */
210 /* Special DM fields */
211 tag_t *stack_items; /* Item stack for patch/dump/... commands */
212 int stack_position; /* Current stack position, 0 for no item */
213}; 208};
214 209
215struct player : zero_initialised, attachable<player>, player_pod 210struct player : zero_initialised, attachable<player>, player_pod
216{ 211{
217 player *next; /* Pointer to next player, NULL if this is last */ 212 player *next; /* Pointer to next player, NULL if this is last */
218 NewSocket socket; /* Socket information for this player */ 213 client *ACC (RO, socket); /* Socket information for this player */
219 Output_Buf outputs[NUM_OUTPUT_BUFS]; /* holds output strings to client */ 214 Output_Buf outputs[NUM_OUTPUT_BUFS]; /* holds output strings to client */
220 shstr invis_race; /* What race invisible to? */ 215 shstr invis_race; /* What race invisible to? */
221 216
222 void clear () 217 void clear ()
223 { 218 {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines