Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/base/game.cc')
-rw-r--r--src/game/base/game.cc17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/game/base/game.cc b/src/game/base/game.cc
index cebbe01..47fab0f 100644
--- a/src/game/base/game.cc
+++ b/src/game/base/game.cc
@@ -990,10 +990,11 @@ void Game::func_drop(core::Player *player, const std::string &args)
// drop a mine
// find a mine in inventory
+ const Weapon *weapon = 0;
core::Item *item = 0;
for (core::Inventory::Items::iterator it = ship->inventory()->items().begin(); (!item) && (it != ship->inventory()->items().end()); it++) {
if ((*it)->info()->type() == Weapon::infotype()) {
- const Weapon *weapon = static_cast<const Weapon *>((*it)->info());
+ weapon = static_cast<const Weapon *>((*it)->info());
if (weapon->subtype() == Weapon::Mine) {
item = (*it);
@@ -1006,16 +1007,16 @@ void Game::func_drop(core::Player *player, const std::string &args)
return;
}
- // create a spacemine entity
- SpaceMine *spacemine = new SpaceMine(item->info());
+ // create a spacemine entity using the Weapon instance as constructiong info
+ SpaceMine *spacemine = new SpaceMine(weapon);
+
spacemine->set_color(ship->color());
spacemine->set_color_second(ship->color_second());
spacemine->set_location(ship->location() + ship->axis().forward() * -1.0f * (ship->radius() + spacemine->radius()));
spacemine->set_axis(ship->axis());
spacemine->set_zone(ship->zone());
- spacemine->set_info(item->info());
- player->send(item->info()->name() + " ejected");
+ player->send(weapon->name() + " ejected");
player->sound("fx/eject");
spacemine->reset();
@@ -1283,7 +1284,8 @@ void Game::func_respawn(core::Player *player, std::string const &args)
core::Entity *spawn = ship->spawn();
if (!spawn) {
- spawn = player->control()->zone()->default_view();
+ ship->set_zone(Default::zone);
+ spawn = ship->zone()->default_view();
}
if (spawn && spawn->has_flag(core::Entity::Dockable)) {
@@ -1291,14 +1293,13 @@ void Game::func_respawn(core::Player *player, std::string const &args)
player->set_view(spawn);
player->send("^BRespawning at " + spawn->name());
} else {
+ ship->set_zone(Default::zone);
ship->get_location().clear();
ship->get_axis().clear();
ship->set_state(core::Entity::Normal);
player->set_view(0);
player->send("^BRespawning");
}
-
- ship->set_zone(Default::zone);
}