From cafb6d40174459819b33ffc5e3d5e96762375619 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 6 Jan 2013 15:26:56 +0000 Subject: Set the item::Mountable flag where required, removed the Weapon::stackable() attribute. --- src/game/base/game.cc | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'src/game/base/game.cc') diff --git a/src/game/base/game.cc b/src/game/base/game.cc index efb89fe..b115d70 100644 --- a/src/game/base/game.cc +++ b/src/game/base/game.cc @@ -498,10 +498,14 @@ void Game::func_give(core::Player *player, const std::string &args) } } if (amount < 0) { - if (weapon->stackable()) { - amount = max; - } else { - amount = 1; + switch (weapon->subtype()) { + case Weapon::Mine: + case Weapon::Ammo: + amount = max; + break; + default: + amount = 1; + break; } } @@ -512,7 +516,7 @@ void Game::func_give(core::Player *player, const std::string &args) core::Item *item = 0; - if (weapon->stackable()) { + if ( (weapon->subtype() == Weapon::Ammo) || (weapon->subtype() == Weapon::Mine)) { item = player->control()->inventory()->find(weapon); if (!item) { item = new core::Item(weapon); @@ -2141,10 +2145,20 @@ bool Game::load_zone(core::Zone *zone) item = new core::Item(weapon); item->set_amount(-1); item->set_price(weapon->price()); - if (!weapon->stackable()) { - item->set_flag(core::Item::Unique); - } item->set_flag(core::Item::Unrestricted); + + switch (weapon->subtype()) { + case Weapon::Cannon: + item->set_flag(core::Item::Unique); + item->set_flag(core::Item::Mountable); + break; + case Weapon::Turret: + item->set_flag(core::Item::Unique); + item->set_flag(core::Item::Mountable); + break; + default: + break; + } inventory->add(item); } } else { -- cgit v1.2.3