… | |
… | |
966 | } |
966 | } |
967 | |
967 | |
968 | INVOKE_PLAYER (LOGOUT, op->contr); |
968 | INVOKE_PLAYER (LOGOUT, op->contr); |
969 | INVOKE_PLAYER (QUIT, op->contr); |
969 | INVOKE_PLAYER (QUIT, op->contr); |
970 | |
970 | |
|
|
971 | op->contr->enable_save = false; |
|
|
972 | |
971 | terminate_all_pets (op); |
973 | terminate_all_pets (op); |
972 | leave_map (op); |
974 | leave_map (op); |
973 | op->direction = 0; |
975 | op->direction = 0; |
974 | new_draw_info_format (NDI_UNIQUE | NDI_ALL, 5, NULL, "%s quits the game.", &op->name); |
976 | new_draw_info_format (NDI_UNIQUE | NDI_ALL, 5, NULL, "%s quits the game.", &op->name); |
975 | |
977 | |
… | |
… | |
977 | check_score (op); |
979 | check_score (op); |
978 | op->contr->party = 0; |
980 | op->contr->party = 0; |
979 | op->contr->own_title[0] = '\0'; |
981 | op->contr->own_title[0] = '\0'; |
980 | |
982 | |
981 | object_ptr ob = op; |
983 | object_ptr ob = op; |
982 | |
|
|
983 | delete ob->contr; |
|
|
984 | |
984 | |
985 | /* We need to hunt for any per player unique maps in memory and |
985 | /* We need to hunt for any per player unique maps in memory and |
986 | * get rid of them. The trailing slash in the path is intentional, |
986 | * get rid of them. The trailing slash in the path is intentional, |
987 | * so that players named 'Ab' won't match against players 'Abe' pathname |
987 | * so that players named 'Ab' won't match against players 'Abe' pathname |
988 | */ |
988 | */ |
… | |
… | |
996 | if (!strncmp (mp->path, buf, strlen (buf))) |
996 | if (!strncmp (mp->path, buf, strlen (buf))) |
997 | delete_map (mp); |
997 | delete_map (mp); |
998 | } |
998 | } |
999 | |
999 | |
1000 | delete_character (ob->name, 1); |
1000 | delete_character (ob->name, 1); |
|
|
1001 | ob->contr->destroy (); |
1001 | |
1002 | |
1002 | return 1; |
1003 | return 1; |
1003 | } |
1004 | } |
1004 | |
1005 | |
1005 | void |
1006 | void |