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

Comparing deliantra/server/server/player.c (file contents):
Revision 1.12 by root, Wed Apr 19 08:25:26 2006 UTC vs.
Revision 1.19 by pippijn, Fri Jun 2 01:32:36 2006 UTC

1/* 1/*
2 * static char *rcsid_player_c = 2 * static char *rcsid_player_c =
3 * "$Id: player.c,v 1.12 2006/04/19 08:25:26 root Exp $"; 3 * "$Id: player.c,v 1.19 2006/06/02 01:32:36 pippijn 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
317int add_player(NewSocket *ns) { 318int 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.
950 } 951 }
951 return 0; 952 return 0;
952} 953}
953 954
954/* This function takes the key that is passed, and does the 955/* This function takes the key that is passed, and does the
955 * appropriate action with it (change class, or other things. 956 * appropriate action with it (change race, or other things).
957 * The function name is for historical reasons - now we have
958 * separate race and class; this actually changes the RACE,
959 * not the class.
956 */ 960 */
957 961
958int key_change_class(object *op, char key) 962int key_change_class(object *op, char key)
959{ 963{
960 int tmp_loop; 964 int tmp_loop;
961 965
962 if(key=='q'||key=='Q') { 966 if(key=='q'||key=='Q') {
963 remove_ob(op); 967 remove_ob(op);
964 play_again(op); 968 play_again(op);
965 return 0; 969 return 0;
996 CLEAR_FLAG(op, FLAG_WIZ); 1000 CLEAR_FLAG(op, FLAG_WIZ);
997 give_initial_items(op,op->randomitems); 1001 give_initial_items(op,op->randomitems);
998 link_player_skills(op); 1002 link_player_skills(op);
999 esrv_send_inventory(op, op); 1003 esrv_send_inventory(op, op);
1000 fix_player(op); 1004 fix_player(op);
1005
1006 /* This moves the player to a different start map, if there
1007 * is one for this race
1008 */
1009 if(*first_map_ext_path) {
1010 object *tmp;
1011 mapstruct *oldmap = op->map;
1012 char mapname[MAX_BUF];
1013 snprintf(mapname, MAX_BUF-1, "%s/%s",
1014 first_map_ext_path, op->arch->name);
1015 tmp=get_object();
1016 EXIT_PATH(tmp) = add_string(mapname);
1017 EXIT_X(tmp) = op->x;
1018 EXIT_Y(tmp) = op->y;
1019 enter_exit(op,tmp); /* we don't really care if it succeeded;
1020 * if the map isn't there, then stay on the
1021 * default initial map */
1022 free_object(tmp);
1023 } else {
1024 LOG(llevDebug,"first_map_ext_path not set\n");
1025 }
1001 return 0; 1026 return 0;
1002 } 1027 }
1003 1028
1004 /* Following actually changes the class - this is the default command 1029 /* Following actually changes the race - this is the default command
1005 * if we don't match with one of the options above. 1030 * if we don't match with one of the options above.
1006 */ 1031 */
1007 1032
1008 tmp_loop = 0; 1033 tmp_loop = 0;
1009 while(!tmp_loop) { 1034 while(!tmp_loop) {
2647 2672
2648 /* Lauwenmark: Handle for plugin death event */ 2673 /* Lauwenmark: Handle for plugin death event */
2649 if (execute_event(op, EVENT_DEATH,NULL,NULL,NULL,SCRIPT_FIX_ALL) != 0) 2674 if (execute_event(op, EVENT_DEATH,NULL,NULL,NULL,SCRIPT_FIX_ALL) != 0)
2650 return; 2675 return;
2651 2676
2677 command_kill_pets (op, 0);
2678
2652 /* Lauwenmark: Handle for the global death event */ 2679 /* Lauwenmark: Handle for the global death event */
2653 execute_global_event(EVENT_PLAYER_DEATH, op); 2680 execute_global_event(EVENT_PLAYER_DEATH, op);
2654 if(op->stats.food<0) { 2681 if(op->stats.food<0) {
2655 if (op->contr->explore) { 2682 if (op->contr->explore) {
2656 new_draw_info(NDI_UNIQUE, 0,op,"You would have starved, but you are"); 2683 new_draw_info(NDI_UNIQUE, 0,op,"You would have starved, but you are");

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines