00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00034 #ifndef PLAYER_H
00035 #define PLAYER_H
00036
00038 #define NUM_OUTPUT_BUFS 5
00039
00040 typedef struct {
00041 const char *buf;
00042 uint32 first_update;
00043 uint16 count;
00044 } Output_Buf;
00045
00052 typedef enum rangetype {
00053 range_bottom = -1,
00054 range_none = 0,
00055 range_bow = 1,
00056 range_magic = 2,
00057 range_misc = 3,
00058 range_golem = 4,
00059 range_skill = 5,
00060 range_builder = 6,
00061 range_size = 7
00062 } rangetype;
00063
00065 typedef enum _bowtype {
00066 bow_normal = 0,
00067 bow_threewide = 1,
00068 bow_spreadshot = 2,
00069 bow_n = 3,
00070 bow_ne = 4,
00071 bow_e = 5,
00072 bow_se = 6,
00073 bow_s = 7,
00074 bow_sw = 8,
00075 bow_w = 9,
00076 bow_nw = 10,
00077 bow_bestarrow = 11
00078 } bowtype_t;
00079
00081 typedef enum _petmode {
00082 pet_normal = 0,
00083 pet_sad = 1,
00084 pet_defend = 2,
00085 pet_arena = 3
00086 } petmode_t;
00087
00089 typedef enum usekeytype {
00090 key_inventory = 0,
00091 keyrings = 1,
00092 containers = 2
00093 } usekeytype;
00094
00099 typedef enum unapplymode {
00100 unapply_nochoice = 0,
00101 unapply_never = 1,
00102 unapply_always = 2
00106 } unapplymode;
00107
00111 typedef struct client_spell {
00112 object *spell;
00113 sint16 last_sp;
00114 sint16 last_grace;
00115 sint16 last_dam;
00116 struct client_spell *next;
00117 } client_spell;
00118
00120 typedef struct party_struct {
00121 char *partyleader;
00122 char passwd[9];
00123 struct party_struct *next;
00124 char *partyname;
00126 #ifdef PARTY_KILL_LOG
00127 struct party_kill {
00128 char killer[MAX_NAME+1], dead[MAX_NAME+1];
00129 sint64 exp;
00130 } party_kills[PARTY_KILL_LOG];
00131 #endif
00132 sint64 total_exp;
00133 uint32 kills;
00134 } partylist;
00135
00139 typedef enum party_rejoin_mode {
00140 party_rejoin_no = 0,
00141 party_rejoin_if_exists = 1,
00142 party_rejoin_always = 2
00143 } party_rejoin_mode;
00144
00146 typedef struct pl {
00147 struct pl *next;
00148 socket_struct socket;
00150 char maplevel[MAX_BUF];
00151 char savebed_map[MAX_BUF];
00152 sint16 bed_x, bed_y;
00153 rangetype shoottype;
00154 char spellparam[MAX_BUF];
00155 bowtype_t bowtype;
00156 petmode_t petmode;
00157 object *ranges[range_size];
00160 uint32 golem_count;
00161 usekeytype usekeys;
00162 unapplymode unapply;
00163 uint32 count;
00164 uint32 mode;
00166 sint16 digestion;
00167 sint16 gen_hp;
00168 sint16 gen_sp;
00169 sint16 gen_sp_armour;
00170 sint16 gen_grace;
00171 sint16 item_power;
00172 uint8 state;
00174 uint8 listening;
00175 sint8 last_level;
00177
00178 uint32 braced:1;
00179 uint32 tmp_invis:1;
00180 uint32 do_los:1;
00181 uint32 fire_on:1;
00182 uint32 run_on:1;
00183 uint32 has_hit:1;
00184 uint32 name_changed:1;
00185 uint32 peaceful:1;
00186 uint32 hidden:1;
00187 uint32 explore:1;
00188 uint32 no_shout:1;
00189 const char *invis_race;
00191 object *last_skill_ob[NUM_SKILLS];
00192 sint64 last_skill_exp[NUM_SKILLS];
00194 float weapon_sp;
00195 float last_weapon_sp;
00196 uint16 last_flags;
00197 sint32 last_weight;
00198 sint32 last_weight_limit;
00199 uint32 last_path_attuned;
00200 uint32 last_path_repelled;
00201 uint32 last_path_denied;
00202 int Swap_First;
00203 living orig_stats;
00204 living last_stats;
00205 float last_speed;
00206 sint16 last_resist[NROFATTACKS];
00207 object *ob;
00208 object *last_used;
00209 uint32 last_used_id;
00210 sint8 blocked_los[MAP_CLIENT_X][MAP_CLIENT_Y];
00214 char own_title[MAX_NAME];
00216 char title[BIG_NAME];
00218 sint8 levhp[11];
00219 sint8 levsp[11];
00220 sint8 levgrace[11];
00222 char killer[BIG_NAME];
00223 char last_tell[MAX_NAME];
00225 char write_buf[MAX_BUF];
00226 char input_buf[MAX_BUF];
00227 char password[16];
00228 char new_password[16];
00230 sint16 encumbrance;
00231 #ifdef SAVE_INTERVAL
00232 time_t last_save_time;
00233 #endif
00234 #ifdef AUTOSAVE
00235 uint32 last_save_tick;
00236 #endif
00237 partylist *party;
00238 partylist *party_to_join;
00242 party_rejoin_mode rejoin_party;
00243 char search_str[MAX_BUF];
00244 Output_Buf outputs[NUM_OUTPUT_BUFS];
00245 uint16 outputs_sync;
00246 uint16 outputs_count;
00247 uint32 mark_count;
00248 object *mark;
00249 object *transport;
00250 client_spell *spell_state;
00251
00252 tag_t *stack_items;
00253 sstring followed_player;
00254 int stack_position;
00255 int language;
00256 } player;
00257
00258 #endif