1 | /* |
1 | /* |
2 | * static char *rcsid_player_c = |
2 | * static char *rcsid_player_c = |
3 | * "$Id: player.c,v 1.13 2006/04/21 14:40:31 pippijn Exp $"; |
3 | * "$Id: player.c,v 1.20 2006/06/06 02:45:28 root Exp $"; |
4 | */ |
4 | */ |
5 | |
5 | |
6 | /* |
6 | /* |
7 | CrossFire, A Multiplayer game for X-windows |
7 | CrossFire, A Multiplayer game for X-windows |
8 | |
8 | |
… | |
… | |
149 | continue; |
149 | continue; |
150 | if ( *buf =='%'){ /* send one news */ |
150 | if ( *buf =='%'){ /* send one news */ |
151 | if (size>0) |
151 | if (size>0) |
152 | draw_ext_info_format(NDI_UNIQUE | NDI_GREEN, 0, op, |
152 | draw_ext_info_format(NDI_UNIQUE | NDI_GREEN, 0, op, |
153 | MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_NEWS, |
153 | MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_NEWS, |
154 | "!! informations: %s\n%s", |
154 | "INFORMATION: %s\n%s", |
155 | "%s\n%s", |
155 | "%s\n%s", |
156 | subject, news); /*send previously read news*/ |
156 | subject, news); /*send previously read news*/ |
157 | strcpy(subject,buf+1); |
157 | strcpy(subject,buf+1); |
158 | strip_endline(subject); |
158 | strip_endline(subject); |
159 | size=0; |
159 | size=0; |
… | |
… | |
170 | } |
170 | } |
171 | } |
171 | } |
172 | |
172 | |
173 | draw_ext_info_format(NDI_UNIQUE | NDI_GREEN, 0, op, |
173 | draw_ext_info_format(NDI_UNIQUE | NDI_GREEN, 0, op, |
174 | MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_NEWS, |
174 | MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_NEWS, |
175 | "!! informations: %s\n%s\n", |
175 | "INFORMATION: %s\n%s\n", |
176 | "%s\n%s", |
176 | "%s\n%s", |
177 | subject, news); |
177 | subject, news); |
178 | close_and_delete(fp, comp); |
178 | close_and_delete(fp, comp); |
179 | } |
179 | } |
180 | |
180 | |
… | |
… | |
264 | p->gen_sp_armour=10; |
264 | p->gen_sp_armour=10; |
265 | p->last_speed= -1; |
265 | p->last_speed= -1; |
266 | p->shoottype=range_none; |
266 | p->shoottype=range_none; |
267 | p->bowtype=bow_normal; |
267 | p->bowtype=bow_normal; |
268 | p->petmode=pet_normal; |
268 | p->petmode=pet_normal; |
269 | p->listening=9; |
269 | p->listening=10; |
|
|
270 | p->usekeys=containers; |
270 | p->last_weapon_sp= -1; |
271 | p->last_weapon_sp= -1; |
271 | p->peaceful=1; /* default peaceful */ |
272 | p->peaceful=1; /* default peaceful */ |
272 | p->do_los=1; |
273 | p->do_los=1; |
273 | p->explore=0; |
274 | p->explore=0; |
274 | p->no_shout=0; /* default can shout */ |
275 | p->no_shout=0; /* default can shout */ |
… | |
… | |
316 | |
317 | |
317 | int add_player(NewSocket *ns) { |
318 | int add_player(NewSocket *ns) { |
318 | player *p; |
319 | player *p; |
319 | |
320 | |
320 | p=get_player(NULL); |
321 | p=get_player(NULL); |
321 | memcpy(&p->socket, ns, sizeof(NewSocket)); |
322 | p->socket = *ns; |
322 | p->socket.faces_sent = malloc(p->socket.faces_sent_len*sizeof(*p->socket.faces_sent)); |
323 | p->socket.faces_sent = malloc(p->socket.faces_sent_len*sizeof(*p->socket.faces_sent)); |
323 | if(p->socket.faces_sent == NULL) |
324 | if(p->socket.faces_sent == NULL) |
324 | fatal(OUT_OF_MEMORY); |
325 | fatal(OUT_OF_MEMORY); |
325 | memcpy(p->socket.faces_sent, ns->faces_sent, p->socket.faces_sent_len*sizeof(*p->socket.faces_sent)); |
326 | memcpy(p->socket.faces_sent, ns->faces_sent, p->socket.faces_sent_len*sizeof(*p->socket.faces_sent)); |
326 | /* Needed because the socket we just copied over needs to be cleared. |
327 | /* Needed because the socket we just copied over needs to be cleared. |
… | |
… | |
1009 | object *tmp; |
1010 | object *tmp; |
1010 | mapstruct *oldmap = op->map; |
1011 | mapstruct *oldmap = op->map; |
1011 | char mapname[MAX_BUF]; |
1012 | char mapname[MAX_BUF]; |
1012 | snprintf(mapname, MAX_BUF-1, "%s/%s", |
1013 | snprintf(mapname, MAX_BUF-1, "%s/%s", |
1013 | first_map_ext_path, op->arch->name); |
1014 | first_map_ext_path, op->arch->name); |
1014 | printf("%s\n", mapname); |
|
|
1015 | tmp=get_object(); |
1015 | tmp=get_object(); |
1016 | EXIT_PATH(tmp) = add_string(mapname); |
1016 | EXIT_PATH(tmp) = add_string(mapname); |
1017 | EXIT_X(tmp) = op->x; |
1017 | EXIT_X(tmp) = op->x; |
1018 | EXIT_Y(tmp) = op->y; |
1018 | EXIT_Y(tmp) = op->y; |
1019 | enter_exit(op,tmp); /* we don't really care if it succeeded; |
1019 | enter_exit(op,tmp); /* we don't really care if it succeeded; |
… | |
… | |
1049 | insert_ob_in_map (op, op->map, op,0); |
1049 | insert_ob_in_map (op, op->map, op,0); |
1050 | strncpy(op->contr->title, op->arch->clone.name, sizeof(op->contr->title)-1); |
1050 | strncpy(op->contr->title, op->arch->clone.name, sizeof(op->contr->title)-1); |
1051 | op->contr->title[sizeof(op->contr->title)-1] = '\0'; |
1051 | op->contr->title[sizeof(op->contr->title)-1] = '\0'; |
1052 | add_statbonus(op); |
1052 | add_statbonus(op); |
1053 | tmp_loop=allowed_class(op); |
1053 | tmp_loop=allowed_class(op); |
|
|
1054 | |
|
|
1055 | if (!strncmp (op->msg, "Edit me", 7)) tmp_loop = 0; // pippijn fucked it up //D//TODO |
1054 | } |
1056 | } |
1055 | update_object(op,UP_OBJ_FACE); |
1057 | update_object(op,UP_OBJ_FACE); |
1056 | esrv_update_item(UPD_FACE,op,op); |
1058 | esrv_update_item(UPD_FACE,op,op); |
1057 | fix_player(op); |
1059 | fix_player(op); |
1058 | op->stats.hp=op->stats.maxhp; |
1060 | op->stats.hp=op->stats.maxhp; |
… | |
… | |
2672 | |
2674 | |
2673 | /* Lauwenmark: Handle for plugin death event */ |
2675 | /* Lauwenmark: Handle for plugin death event */ |
2674 | if (execute_event(op, EVENT_DEATH,NULL,NULL,NULL,SCRIPT_FIX_ALL) != 0) |
2676 | if (execute_event(op, EVENT_DEATH,NULL,NULL,NULL,SCRIPT_FIX_ALL) != 0) |
2675 | return; |
2677 | return; |
2676 | |
2678 | |
|
|
2679 | command_kill_pets (op, 0); |
|
|
2680 | |
2677 | /* Lauwenmark: Handle for the global death event */ |
2681 | /* Lauwenmark: Handle for the global death event */ |
2678 | execute_global_event(EVENT_PLAYER_DEATH, op); |
2682 | execute_global_event(EVENT_PLAYER_DEATH, op); |
2679 | if(op->stats.food<0) { |
2683 | if(op->stats.food<0) { |
2680 | if (op->contr->explore) { |
2684 | if (op->contr->explore) { |
2681 | new_draw_info(NDI_UNIQUE, 0,op,"You would have starved, but you are"); |
2685 | new_draw_info(NDI_UNIQUE, 0,op,"You would have starved, but you are"); |