1 | |
1 | |
2 | /* |
2 | /* |
3 | * static char *rcsid_player_c = |
3 | * static char *rcsid_player_c = |
4 | * "$Id: player.C,v 1.18 2006/09/10 15:59:57 root Exp $"; |
4 | * "$Id: player.C,v 1.19 2006/09/11 23:53:30 root Exp $"; |
5 | */ |
5 | */ |
6 | |
6 | |
7 | /* |
7 | /* |
8 | CrossFire, A Multiplayer game for X-windows |
8 | CrossFire, A Multiplayer game for X-windows |
9 | |
9 | |
… | |
… | |
756 | * the map is null or not swapped out. |
756 | * the map is null or not swapped out. |
757 | */ |
757 | */ |
758 | op->map = NULL; |
758 | op->map = NULL; |
759 | } |
759 | } |
760 | |
760 | |
761 | |
|
|
762 | int |
761 | int |
763 | receive_play_again (object *op, char key) |
762 | receive_play_again (object *op, char key) |
764 | { |
763 | { |
765 | if (key == 'q' || key == 'Q') |
764 | if (key == 'q' || key == 'Q') |
766 | { |
765 | { |
… | |
… | |
771 | else if (key == 'a' || key == 'A') |
770 | else if (key == 'a' || key == 'A') |
772 | { |
771 | { |
773 | player *pl = op->contr; |
772 | player *pl = op->contr; |
774 | shstr name = op->name; |
773 | shstr name = op->name; |
775 | |
774 | |
776 | remove_friendly_object (op); |
775 | op->contr = 0; |
777 | free_object (op); |
776 | op->type = 0; |
|
|
777 | op->free (1); |
778 | pl = get_player (pl); |
778 | pl = get_player (pl); |
779 | op = pl->ob; |
779 | op = pl->ob; |
780 | add_friendly_object (op); |
780 | add_friendly_object (op); |
781 | op->contr->password[0] = '~'; |
781 | op->contr->password[0] = '~'; |
782 | op->name = op->name_pl = 0; |
782 | op->name = op->name_pl = 0; |
… | |
… | |
785 | get_name (op); |
785 | get_name (op); |
786 | op->name = op->name_pl = name; |
786 | op->name = op->name_pl = name; |
787 | set_first_map (op); |
787 | set_first_map (op); |
788 | } |
788 | } |
789 | else |
789 | else |
790 | { |
|
|
791 | /* user pressed something else so just ask again... */ |
790 | /* user pressed something else so just ask again... */ |
792 | play_again (op); |
791 | play_again (op); |
793 | } |
792 | |
794 | return 0; |
793 | return 0; |
795 | } |
794 | } |
796 | |
795 | |
797 | void |
796 | void |
798 | confirm_password (object *op) |
797 | confirm_password (object *op) |
… | |
… | |
1146 | strncpy (op->contr->title, op->arch->clone.name, sizeof (op->contr->title) - 1); |
1145 | strncpy (op->contr->title, op->arch->clone.name, sizeof (op->contr->title) - 1); |
1147 | op->contr->title[sizeof (op->contr->title) - 1] = '\0'; |
1146 | op->contr->title[sizeof (op->contr->title) - 1] = '\0'; |
1148 | add_statbonus (op); |
1147 | add_statbonus (op); |
1149 | tmp_loop = allowed_class (op); |
1148 | tmp_loop = allowed_class (op); |
1150 | } |
1149 | } |
|
|
1150 | |
1151 | update_object (op, UP_OBJ_FACE); |
1151 | update_object (op, UP_OBJ_FACE); |
1152 | esrv_update_item (UPD_FACE, op, op); |
1152 | esrv_update_item (UPD_FACE, op, op); |
1153 | fix_player (op); |
1153 | fix_player (op); |
1154 | op->stats.hp = op->stats.maxhp; |
1154 | op->stats.hp = op->stats.maxhp; |
1155 | op->stats.sp = op->stats.maxsp; |
1155 | op->stats.sp = op->stats.maxsp; |
… | |
… | |
1202 | delete_map (mp); |
1202 | delete_map (mp); |
1203 | } |
1203 | } |
1204 | |
1204 | |
1205 | delete_character (op->name, 1); |
1205 | delete_character (op->name, 1); |
1206 | } |
1206 | } |
|
|
1207 | |
1207 | play_again (op); |
1208 | play_again (op); |
1208 | return 1; |
1209 | return 1; |
1209 | } |
1210 | } |
1210 | |
1211 | |
1211 | void |
1212 | void |
… | |
… | |
3297 | insert_ob_in_ob (force, op); |
3298 | insert_ob_in_ob (force, op); |
3298 | fix_player (op); |
3299 | fix_player (op); |
3299 | |
3300 | |
3300 | } |
3301 | } |
3301 | |
3302 | |
3302 | /**************************************/ |
|
|
3303 | /* */ |
|
|
3304 | /* Repaint the characters inv, and */ |
|
|
3305 | /* stats, and show a nasty message ;) */ |
|
|
3306 | /* */ |
|
|
3307 | |
|
|
3308 | /**************************************/ |
|
|
3309 | |
|
|
3310 | new_draw_info (NDI_UNIQUE, 0, op, "YOU HAVE DIED."); |
3303 | new_draw_info (NDI_UNIQUE, 0, op, "YOU HAVE DIED."); |
3311 | return; |
3304 | return; |
3312 | } /* NOT_PERMADETH */ |
3305 | } /* NOT_PERMADETH */ |
3313 | else |
3306 | else |
3314 | { |
3307 | { |
… | |
… | |
3357 | op->map = map; |
3350 | op->map = map; |
3358 | /* please see resurrection.c: peterm */ |
3351 | /* please see resurrection.c: peterm */ |
3359 | dead_player (op); |
3352 | dead_player (op); |
3360 | } |
3353 | } |
3361 | else |
3354 | else |
3362 | { |
|
|
3363 | delete_character (op->name, 1); |
3355 | delete_character (op->name, 1); |
3364 | } |
3356 | } |
3365 | } |
3357 | |
3366 | play_again (op); |
3358 | play_again (op); |
3367 | |
3359 | |
3368 | /* peterm: added to create a corpse at deathsite. */ |
3360 | /* peterm: added to create a corpse at deathsite. */ |
3369 | tmp = arch_to_object (find_archetype ("corpse_pl")); |
3361 | tmp = arch_to_object (find_archetype ("corpse_pl")); |
3370 | sprintf (buf, "%s", &op->name); |
3362 | sprintf (buf, "%s", &op->name); |