From c92839e5205f008a226ed82d5388e0c858ca7291 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 6 Jan 2013 21:07:18 +0000 Subject: Corrected an issue where weapons obtained through 'give' are not mountable. --- src/game/base/game.cc | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) (limited to 'src/game/base/game.cc') diff --git a/src/game/base/game.cc b/src/game/base/game.cc index b115d70..7f2fb40 100644 --- a/src/game/base/game.cc +++ b/src/game/base/game.cc @@ -516,24 +516,32 @@ void Game::func_give(core::Player *player, const std::string &args) core::Item *item = 0; - if ( (weapon->subtype() == Weapon::Ammo) || (weapon->subtype() == Weapon::Mine)) { - item = player->control()->inventory()->find(weapon); - if (!item) { - item = new core::Item(weapon); - item->set_flag(core::Item::Unrestricted); - player->control()->inventory()->add(item); - } else { - assert(item->info() == weapon); - } - item->inc_amount(amount); - } else { - for (int n = 0; n < amount; n++) { - item = new core::Item(weapon); - item->set_flag(core::Item::Unique); - item->set_flag(core::Item::Unrestricted); - item->set_amount(1); - player->control()->inventory()->add(item); - } + switch (weapon->subtype()) { + + case Weapon::Ammo: + case Weapon::Mine: + item = player->control()->inventory()->find(weapon); + if (!item) { + item = new core::Item(weapon); + item->set_flag(core::Item::Unrestricted); + player->control()->inventory()->add(item); + } else { + assert(item->info() == weapon); + } + item->inc_amount(amount); + break; + + case Weapon::Cannon: + case Weapon::Turret: + for (int n = 0; n < amount; n++) { + item = new core::Item(weapon); + item->set_flag(core::Item::Unique); + item->set_flag(core::Item::Mountable); + item->set_flag(core::Item::Unrestricted); + item->set_amount(1); + player->control()->inventory()->add(item); + } + break; } player->control()->inventory()->set_dirty(); -- cgit v1.2.3