… | |
… | |
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 | dummy->destroy (0); |
347 | dummy->destroy (); |
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 | } |
… | |
… | |
376 | { |
376 | { |
377 | new_draw_info (NDI_UNIQUE, 0, op, "Can not find a free spot to place summoned player."); |
377 | new_draw_info (NDI_UNIQUE, 0, op, "Can not find a free spot to place summoned player."); |
378 | return 1; |
378 | return 1; |
379 | } |
379 | } |
380 | |
380 | |
381 | dummy = get_object (); |
381 | dummy = object::create (); |
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 | dummy->destroy (0); |
386 | dummy->destroy (); |
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 | } |
… | |
… | |
420 | { |
420 | { |
421 | new_draw_info (NDI_UNIQUE, 0, op, "Can not find a free spot to teleport to."); |
421 | new_draw_info (NDI_UNIQUE, 0, op, "Can not find a free spot to teleport to."); |
422 | return 1; |
422 | return 1; |
423 | } |
423 | } |
424 | |
424 | |
425 | dummy = get_object (); |
425 | dummy = object::create (); |
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 | dummy->destroy (0); |
430 | dummy->destroy (); |
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 | } |
… | |
… | |
722 | * so just copying it over should be fine. |
722 | * so just copying it over should be fine. |
723 | */ |
723 | */ |
724 | if (!head) |
724 | if (!head) |
725 | { |
725 | { |
726 | head = dup; |
726 | head = dup; |
727 | copy_object (tmp, dup); |
727 | tmp->copy_to (dup); |
728 | } |
728 | } |
729 | |
729 | |
730 | if (settings.real_wiz == FALSE) |
730 | if (settings.real_wiz == FALSE) |
731 | SET_FLAG (dup, FLAG_WAS_WIZ); |
731 | SET_FLAG (dup, FLAG_WAS_WIZ); |
732 | |
732 | |
… | |
… | |
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 | head->destroy (0); |
764 | head->destroy (); |
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 | tmp->destroy (0); |
766 | tmp->destroy (); |
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 | tmp->destroy (0); |
798 | tmp->destroy (); |
799 | } |
799 | } |
800 | |
800 | |
801 | return 1; |
801 | return 1; |
802 | } |
802 | } |
803 | |
803 | |
… | |
… | |
1053 | tmp->remove (); |
1053 | tmp->remove (); |
1054 | } |
1054 | } |
1055 | |
1055 | |
1056 | if (tmp->head) |
1056 | if (tmp->head) |
1057 | tmp = tmp->head; |
1057 | tmp = tmp->head; |
|
|
1058 | |
1058 | tmp->destroy (0); |
1059 | tmp->destroy (); |
1059 | return 1; |
1060 | return 1; |
1060 | } |
1061 | } |
1061 | |
1062 | |
1062 | /** |
1063 | /** |
1063 | * This adds exp to a player. We now allow adding to a specific skill. |
1064 | * This adds exp to a player. We now allow adding to a specific skill. |
… | |
… | |
1251 | * Only attempt to remove the player that is doing the reset, and not other |
1252 | * Only attempt to remove the player that is doing the reset, and not other |
1252 | * players or wiz's. |
1253 | * players or wiz's. |
1253 | */ |
1254 | */ |
1254 | if (op->map == m) |
1255 | if (op->map == m) |
1255 | { |
1256 | { |
1256 | dummy = get_object (); |
1257 | dummy = object::create (); |
1257 | dummy->map = NULL; |
1258 | dummy->map = NULL; |
1258 | EXIT_X (dummy) = op->x; |
1259 | EXIT_X (dummy) = op->x; |
1259 | EXIT_Y (dummy) = op->y; |
1260 | EXIT_Y (dummy) = op->y; |
1260 | EXIT_PATH (dummy) = op->map->path; |
1261 | EXIT_PATH (dummy) = op->map->path; |
1261 | op->remove (); |
1262 | op->remove (); |
… | |
… | |
1271 | |
1272 | |
1272 | /* setting this effectively causes an immediate reload */ |
1273 | /* setting this effectively causes an immediate reload */ |
1273 | m->reset_time = 1; |
1274 | m->reset_time = 1; |
1274 | flush_old_maps (); |
1275 | flush_old_maps (); |
1275 | new_draw_info (NDI_UNIQUE, 0, op, "OK."); |
1276 | new_draw_info (NDI_UNIQUE, 0, op, "OK."); |
|
|
1277 | |
1276 | if (tmp) |
1278 | if (tmp) |
1277 | { |
1279 | { |
1278 | enter_exit (tmp, dummy); |
1280 | enter_exit (tmp, dummy); |
1279 | dummy->destroy (0); |
1281 | dummy->destroy (); |
1280 | } |
1282 | } |
|
|
1283 | |
1281 | return 1; |
1284 | return 1; |
1282 | } |
1285 | } |
1283 | else |
1286 | else |
1284 | { |
1287 | { |
1285 | player *pl; |
1288 | player *pl; |
… | |
… | |
1287 | |
1290 | |
1288 | /* Need to re-insert player if swap failed for some reason */ |
1291 | /* Need to re-insert player if swap failed for some reason */ |
1289 | if (tmp) |
1292 | if (tmp) |
1290 | { |
1293 | { |
1291 | insert_ob_in_map (op, m, NULL, 0); |
1294 | insert_ob_in_map (op, m, NULL, 0); |
1292 | dummy->destroy (0); |
1295 | dummy->destroy (); |
1293 | } |
1296 | } |
1294 | |
1297 | |
1295 | new_draw_info (NDI_UNIQUE, 0, op, "Reset failed, couldn't swap map, the following players are on it:"); |
1298 | 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) |
1299 | for (pl = first_player; pl != NULL; pl = pl->next) |
1297 | { |
1300 | { |
… | |
… | |
1563 | new_draw_info_format (NDI_UNIQUE, 0, op, "You already know the spell %s.", &tmp->name); |
1566 | new_draw_info_format (NDI_UNIQUE, 0, op, "You already know the spell %s.", &tmp->name); |
1564 | return 0; |
1567 | return 0; |
1565 | } |
1568 | } |
1566 | |
1569 | |
1567 | do_learn_spell (op, tmp, special_prayer); |
1570 | do_learn_spell (op, tmp, special_prayer); |
1568 | tmp->destroy (0); |
1571 | tmp->destroy (); |
1569 | return 1; |
1572 | return 1; |
1570 | } |
1573 | } |
1571 | |
1574 | |
1572 | int |
1575 | int |
1573 | command_learn_spell (object *op, char *params) |
1576 | command_learn_spell (object *op, char *params) |