diff options
Diffstat (limited to 'src/game/base/game.cc')
-rw-r--r-- | src/game/base/game.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/game/base/game.cc b/src/game/base/game.cc index d8af507..c116b8b 100644 --- a/src/game/base/game.cc +++ b/src/game/base/game.cc @@ -324,7 +324,9 @@ void Game::func_give(core::Player *player, const std::string &args) player->send("^WNot enough cargo space to transfer inventory!"); return; } - + assert(player->control()->moduletype() == ship_enttype); + Ship * oldship = static_cast<Ship *>(player->control()); + Ship * ship = new Ship(player, shipmodel); core::Entity *view = player->view(); if (view && (view == player->control())) { @@ -342,6 +344,7 @@ void Game::func_give(core::Player *player, const std::string &args) ship->set_zone(player->control()->zone()); ship->get_location().assign(player->control()->location()); ship->set_state(player->control()->state()); + ship->set_dock(oldship->dock()); ship->get_axis().assign(player->control()->axis()); ship->set_thrust(player->control()->thrust()); ship->reset(); @@ -1534,6 +1537,11 @@ bool Game::validate_zone(core::Zone *zone) if ((entity->entity_moduletypeid == planet_enttype) || (entity->model())) { entity->reset(); } + + if (entity->model()) { + entity->add_slots(); + entity->slots()->load(entity->model()); + } } return true; |