… | |
… | |
342 | /* we have nowhere to send the prisoner.... */ |
342 | /* we have nowhere to send the prisoner.... */ |
343 | new_draw_info (NDI_UNIQUE, 0, op, "can't jail player, there is no map to hold them"); |
343 | new_draw_info (NDI_UNIQUE, 0, op, "can't jail player, there is no map to hold them"); |
344 | return 0; |
344 | return 0; |
345 | } |
345 | } |
346 | enter_exit (pl->ob, dummy); |
346 | enter_exit (pl->ob, dummy); |
347 | free_object (dummy); |
347 | dummy->destroy (0); |
348 | new_draw_info (NDI_UNIQUE, 0, pl->ob, "You have been arrested."); |
348 | new_draw_info (NDI_UNIQUE, 0, pl->ob, "You have been arrested."); |
349 | new_draw_info (NDI_UNIQUE, 0, op, "OK."); |
349 | new_draw_info (NDI_UNIQUE, 0, op, "OK."); |
350 | LOG (llevInfo, "Player %s arrested by %s\n", &pl->ob->name, &op->name); |
350 | LOG (llevInfo, "Player %s arrested by %s\n", &pl->ob->name, &op->name); |
351 | return 1; |
351 | return 1; |
352 | } |
352 | } |
… | |
… | |
381 | dummy = get_object (); |
381 | dummy = get_object (); |
382 | EXIT_PATH (dummy) = op->map->path; |
382 | EXIT_PATH (dummy) = op->map->path; |
383 | EXIT_X (dummy) = op->x + freearr_x[i]; |
383 | EXIT_X (dummy) = op->x + freearr_x[i]; |
384 | EXIT_Y (dummy) = op->y + freearr_y[i]; |
384 | EXIT_Y (dummy) = op->y + freearr_y[i]; |
385 | enter_exit (pl->ob, dummy); |
385 | enter_exit (pl->ob, dummy); |
386 | free_object (dummy); |
386 | dummy->destroy (0); |
387 | new_draw_info (NDI_UNIQUE, 0, pl->ob, "You are summoned."); |
387 | new_draw_info (NDI_UNIQUE, 0, pl->ob, "You are summoned."); |
388 | new_draw_info (NDI_UNIQUE, 0, op, "OK."); |
388 | new_draw_info (NDI_UNIQUE, 0, op, "OK."); |
389 | |
389 | |
390 | return 1; |
390 | return 1; |
391 | } |
391 | } |
… | |
… | |
425 | dummy = get_object (); |
425 | dummy = get_object (); |
426 | EXIT_PATH (dummy) = pl->ob->map->path; |
426 | EXIT_PATH (dummy) = pl->ob->map->path; |
427 | EXIT_X (dummy) = pl->ob->x + freearr_x[i]; |
427 | EXIT_X (dummy) = pl->ob->x + freearr_x[i]; |
428 | EXIT_Y (dummy) = pl->ob->y + freearr_y[i]; |
428 | EXIT_Y (dummy) = pl->ob->y + freearr_y[i]; |
429 | enter_exit (op, dummy); |
429 | enter_exit (op, dummy); |
430 | free_object (dummy); |
430 | dummy->destroy (0); |
431 | if (!op->contr->hidden) |
431 | if (!op->contr->hidden) |
432 | new_draw_info (NDI_UNIQUE, 0, pl->ob, "You see a portal open."); |
432 | new_draw_info (NDI_UNIQUE, 0, pl->ob, "You see a portal open."); |
433 | new_draw_info (NDI_UNIQUE, 0, op, "OK."); |
433 | new_draw_info (NDI_UNIQUE, 0, op, "OK."); |
434 | return 1; |
434 | return 1; |
435 | } |
435 | } |
… | |
… | |
759 | if (out_of_map (op->map, head->x + size_x, head->y + size_y)) |
759 | if (out_of_map (op->map, head->x + size_x, head->y + size_y)) |
760 | { |
760 | { |
761 | if (head->x < size_x || head->y < size_y) |
761 | if (head->x < size_x || head->y < size_y) |
762 | { |
762 | { |
763 | dm_stack_pop (op->contr); |
763 | dm_stack_pop (op->contr); |
764 | free_object (head); |
764 | head->destroy (0); |
765 | new_draw_info (NDI_UNIQUE, 0, op, "Object too big to insert in map, or wrong position."); |
765 | new_draw_info (NDI_UNIQUE, 0, op, "Object too big to insert in map, or wrong position."); |
766 | free_object (tmp); |
766 | tmp->destroy (0); |
767 | return 1; |
767 | return 1; |
768 | } |
768 | } |
769 | |
769 | |
770 | check = head; |
770 | check = head; |
771 | |
771 | |
… | |
… | |
793 | |
793 | |
794 | esrv_send_item (op, head); |
794 | esrv_send_item (op, head); |
795 | } |
795 | } |
796 | |
796 | |
797 | /* free the one we used to copy */ |
797 | /* free the one we used to copy */ |
798 | free_object (tmp); |
798 | tmp->destroy (0); |
799 | } |
799 | } |
800 | |
800 | |
801 | return 1; |
801 | return 1; |
802 | } |
802 | } |
803 | |
803 | |
… | |
… | |
1023 | dm_stack_pop (op->contr); |
1023 | dm_stack_pop (op->contr); |
1024 | |
1024 | |
1025 | /* Always work on the head - otherwise object will get in odd state */ |
1025 | /* Always work on the head - otherwise object will get in odd state */ |
1026 | if (tmp->head) |
1026 | if (tmp->head) |
1027 | tmp = tmp->head; |
1027 | tmp = tmp->head; |
1028 | remove_ob (tmp); |
1028 | tmp->remove (); |
1029 | return 1; |
1029 | return 1; |
1030 | } |
1030 | } |
1031 | |
1031 | |
1032 | int |
1032 | int |
1033 | command_free (object *op, char *params) |
1033 | command_free (object *op, char *params) |
… | |
… | |
1048 | dm_stack_pop (op->contr); |
1048 | dm_stack_pop (op->contr); |
1049 | |
1049 | |
1050 | if (!QUERY_FLAG (tmp, FLAG_REMOVED)) |
1050 | if (!QUERY_FLAG (tmp, FLAG_REMOVED)) |
1051 | { |
1051 | { |
1052 | new_draw_info (NDI_UNIQUE, 0, op, "Warning, item wasn't removed."); |
1052 | new_draw_info (NDI_UNIQUE, 0, op, "Warning, item wasn't removed."); |
1053 | remove_ob (tmp); |
1053 | tmp->remove (); |
1054 | } |
1054 | } |
1055 | |
1055 | |
1056 | if (tmp->head) |
1056 | if (tmp->head) |
1057 | tmp = tmp->head; |
1057 | tmp = tmp->head; |
1058 | free_object (tmp); |
1058 | tmp->destroy (0); |
1059 | return 1; |
1059 | return 1; |
1060 | } |
1060 | } |
1061 | |
1061 | |
1062 | /** |
1062 | /** |
1063 | * This adds exp to a player. We now allow adding to a specific skill. |
1063 | * This adds exp to a player. We now allow adding to a specific skill. |
… | |
… | |
1256 | dummy = get_object (); |
1256 | dummy = get_object (); |
1257 | dummy->map = NULL; |
1257 | dummy->map = NULL; |
1258 | EXIT_X (dummy) = op->x; |
1258 | EXIT_X (dummy) = op->x; |
1259 | EXIT_Y (dummy) = op->y; |
1259 | EXIT_Y (dummy) = op->y; |
1260 | EXIT_PATH (dummy) = op->map->path; |
1260 | EXIT_PATH (dummy) = op->map->path; |
1261 | remove_ob (op); |
1261 | op->remove (); |
1262 | op->map = NULL; |
1262 | op->map = NULL; |
1263 | tmp = op; |
1263 | tmp = op; |
1264 | } |
1264 | } |
1265 | swap_map (m); |
1265 | swap_map (m); |
1266 | } |
1266 | } |
… | |
… | |
1274 | flush_old_maps (); |
1274 | flush_old_maps (); |
1275 | new_draw_info (NDI_UNIQUE, 0, op, "OK."); |
1275 | new_draw_info (NDI_UNIQUE, 0, op, "OK."); |
1276 | if (tmp) |
1276 | if (tmp) |
1277 | { |
1277 | { |
1278 | enter_exit (tmp, dummy); |
1278 | enter_exit (tmp, dummy); |
1279 | free_object (dummy); |
1279 | dummy->destroy (0); |
1280 | } |
1280 | } |
1281 | return 1; |
1281 | return 1; |
1282 | } |
1282 | } |
1283 | else |
1283 | else |
1284 | { |
1284 | { |
… | |
… | |
1287 | |
1287 | |
1288 | /* Need to re-insert player if swap failed for some reason */ |
1288 | /* Need to re-insert player if swap failed for some reason */ |
1289 | if (tmp) |
1289 | if (tmp) |
1290 | { |
1290 | { |
1291 | insert_ob_in_map (op, m, NULL, 0); |
1291 | insert_ob_in_map (op, m, NULL, 0); |
1292 | free_object (dummy); |
1292 | dummy->destroy (0); |
1293 | } |
1293 | } |
1294 | |
1294 | |
1295 | new_draw_info (NDI_UNIQUE, 0, op, "Reset failed, couldn't swap map, the following players are on it:"); |
1295 | new_draw_info (NDI_UNIQUE, 0, op, "Reset failed, couldn't swap map, the following players are on it:"); |
1296 | for (pl = first_player; pl != NULL; pl = pl->next) |
1296 | for (pl = first_player; pl != NULL; pl = pl->next) |
1297 | { |
1297 | { |
… | |
… | |
1563 | new_draw_info_format (NDI_UNIQUE, 0, op, "You already know the spell %s.", &tmp->name); |
1563 | new_draw_info_format (NDI_UNIQUE, 0, op, "You already know the spell %s.", &tmp->name); |
1564 | return 0; |
1564 | return 0; |
1565 | } |
1565 | } |
1566 | |
1566 | |
1567 | do_learn_spell (op, tmp, special_prayer); |
1567 | do_learn_spell (op, tmp, special_prayer); |
1568 | free_object (tmp); |
1568 | tmp->destroy (0); |
1569 | return 1; |
1569 | return 1; |
1570 | } |
1570 | } |
1571 | |
1571 | |
1572 | int |
1572 | int |
1573 | command_learn_spell (object *op, char *params) |
1573 | command_learn_spell (object *op, char *params) |
… | |
… | |
1985 | new_draw_info (NDI_UNIQUE, 0, op, "Can't insert a player into something!"); |
1985 | new_draw_info (NDI_UNIQUE, 0, op, "Can't insert a player into something!"); |
1986 | return 0; |
1986 | return 0; |
1987 | } |
1987 | } |
1988 | |
1988 | |
1989 | if (!QUERY_FLAG (right, FLAG_REMOVED)) |
1989 | if (!QUERY_FLAG (right, FLAG_REMOVED)) |
1990 | remove_ob (right); |
1990 | right->remove (); |
1991 | inserted = insert_ob_in_ob (right, left); |
1991 | inserted = insert_ob_in_ob (right, left); |
1992 | if (left->type == PLAYER) |
1992 | if (left->type == PLAYER) |
1993 | if (inserted == right) |
1993 | if (inserted == right) |
1994 | esrv_send_item (left, right); |
1994 | esrv_send_item (left, right); |
1995 | else |
1995 | else |