… | |
… | |
20 | |
20 | |
21 | The authors can be reached via e-mail at crossfire-devel@real-time.com |
21 | The authors can be reached via e-mail at crossfire-devel@real-time.com |
22 | */ |
22 | */ |
23 | |
23 | |
24 | #define NUM_OUTPUT_BUFS 5 |
24 | #define NUM_OUTPUT_BUFS 5 |
25 | typedef struct { |
25 | struct Output_Buf { |
26 | shstr buf; /* Actual string pointer */ |
26 | shstr buf; /* Actual string pointer */ |
27 | uint32 first_update; /* First time this message was stored */ |
27 | uint32 first_update; /* First time this message was stored */ |
28 | uint16 count; /* How many times we got this message */ |
28 | uint16 count; /* How many times we got this message */ |
29 | } Output_Buf; |
29 | }; |
30 | |
|
|
31 | |
30 | |
32 | /* wand/rod/horn rolled into range_misc. They all use the same body location |
31 | /* wand/rod/horn rolled into range_misc. They all use the same body location |
33 | * anyways. |
32 | * anyways. |
34 | */ |
33 | */ |
35 | enum rangetype { |
34 | enum rangetype { |
… | |
… | |
129 | sint8 last_level; /* Last level we sent to client */ |
128 | sint8 last_level; /* Last level we sent to client */ |
130 | |
129 | |
131 | /* Try to put all the bitfields together - saves some small amount of memory */ |
130 | /* Try to put all the bitfields together - saves some small amount of memory */ |
132 | uint32 braced:1; /* Will not move if braced, only attack */ |
131 | uint32 braced:1; /* Will not move if braced, only attack */ |
133 | uint32 tmp_invis:1; /* Will invis go away when we attack ? */ |
132 | uint32 tmp_invis:1; /* Will invis go away when we attack ? */ |
134 | shstr invis_race; /* What race invisible to? */ |
|
|
135 | uint32 do_los:1; /* If true, need to call update_los() in draw(), and clear */ |
133 | uint32 do_los:1; /* If true, need to call update_los() in draw(), and clear */ |
136 | uint32 fire_on:1; /* Player should fire object, not move */ |
134 | uint32 fire_on:1; /* Player should fire object, not move */ |
137 | uint32 run_on:1; /* Player should keep moving in dir until run is off */ |
135 | uint32 run_on:1; /* Player should keep moving in dir until run is off */ |
138 | uint32 has_hit:1; /* If set, weapon_sp instead of speed will count */ |
136 | uint32 has_hit:1; /* If set, weapon_sp instead of speed will count */ |
139 | uint32 name_changed:1; /* If true, the player has set a name. */ |
137 | uint32 name_changed:1; /* If true, the player has set a name. */ |
… | |
… | |
176 | sint8 levhp[11]; /* What the player gained on that level */ |
174 | sint8 levhp[11]; /* What the player gained on that level */ |
177 | sint8 levsp[11]; /* Same for sp */ |
175 | sint8 levsp[11]; /* Same for sp */ |
178 | sint8 levgrace[11]; /* And same for grace */ |
176 | sint8 levgrace[11]; /* And same for grace */ |
179 | |
177 | |
180 | char killer[BIG_NAME]; /* Who killed this player. */ |
178 | char killer[BIG_NAME]; /* Who killed this player. */ |
181 | char last_tell[MAX_NAME]; /* last player that told you something [mids 01/14/2002] */ |
|
|
182 | |
179 | |
183 | char write_buf[MAX_BUF]; /* Holds arbitrary input from client */ |
180 | char write_buf[MAX_BUF]; /* Holds arbitrary input from client */ |
184 | char input_buf[MAX_BUF]; /* Holds command to run */ |
181 | char input_buf[MAX_BUF]; /* Holds command to run */ |
185 | char password[16]; /* 2 (seed) + 11 (crypted) + 1 (EOS) + 2 (safety) = 16 */ |
182 | char password[16]; /* 2 (seed) + 11 (crypted) + 1 (EOS) + 2 (safety) = 16 */ |
186 | |
183 | |
… | |
… | |
195 | /* but we will have to get password first */ |
192 | /* but we will have to get password first */ |
196 | /* so we have to remember which party to */ |
193 | /* so we have to remember which party to */ |
197 | /* join */ |
194 | /* join */ |
198 | char search_str[MAX_BUF]; /* Item we are looking for */ |
195 | char search_str[MAX_BUF]; /* Item we are looking for */ |
199 | sint16 encumbrance; /* How much our player is encumbered */ |
196 | sint16 encumbrance; /* How much our player is encumbered */ |
200 | Output_Buf outputs[NUM_OUTPUT_BUFS]; /* holds output strings to client */ |
|
|
201 | uint16 outputs_sync; /* How often to print, no matter what */ |
197 | uint16 outputs_sync; /* How often to print, no matter what */ |
202 | uint16 outputs_count; /* Print if this count is exceeded */ |
198 | uint16 outputs_count; /* Print if this count is exceeded */ |
203 | object *mark; /* marked object */ |
199 | object *mark; /* marked object */ |
204 | uint32 mark_count; /* count of mark object */ |
200 | uint32 mark_count; /* count of mark object */ |
205 | /* Special DM fields */ |
201 | /* Special DM fields */ |
… | |
… | |
209 | |
205 | |
210 | typedef struct pl : zero_initialised, attachable<struct pl>, player_pod |
206 | typedef struct pl : zero_initialised, attachable<struct pl>, player_pod |
211 | { |
207 | { |
212 | struct pl *next; /* Pointer to next player, NULL if this is last */ |
208 | struct pl *next; /* Pointer to next player, NULL if this is last */ |
213 | NewSocket socket; /* Socket information for this player */ |
209 | NewSocket socket; /* Socket information for this player */ |
|
|
210 | Output_Buf outputs[NUM_OUTPUT_BUFS]; /* holds output strings to client */ |
|
|
211 | shstr invis_race; /* What race invisible to? */ |
|
|
212 | |
|
|
213 | void clear () |
|
|
214 | { |
|
|
215 | memset (static_cast<player_pod *>(this), 0, sizeof (player_pod)); |
|
|
216 | attachable_clear (); |
|
|
217 | invis_race = 0; |
|
|
218 | |
|
|
219 | for (int i = 0; i < NUM_OUTPUT_BUFS; i++) |
|
|
220 | outputs[i].buf = 0; |
|
|
221 | } |
214 | } player; |
222 | } player; |
215 | |
223 | |
|
|
224 | |