void Monster::spawnItem() { // TODO: Spawn magic, unique and special/quest items. ItemId itemId = randomItem(); if (itemId < ItemId::COUNT) { Item item = mWorld.getItemFactory().generateBaseItem(itemId); getLevel()->dropItemClosestEmptyTile(item, *this, getPos().current(), Misc::Direction::none); } }
bool BlackMarket::action(Player &player)const{ if(player.canAct()){ if (player.getGold()>1) { std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> randomItem(1,3); std::uniform_int_distribution<> randomQuatity(0,5); int quatityAdded; if(randomQuatity(gen)<(player.getCart()-player.getInventory())){ quatityAdded = (player.getCart()-player.getInventory()); // not enough room on cart }else{ quatityAdded = randomQuatity(gen); } for(int i = 0; i < quatityAdded; i++){ switch (randomItem(gen)) { {case 1: int totalSpices = randomQuatity(gen); int spicesGained; if((player.getCart()-player.getInventory())>totalSpices){ spicesGained = totalSpices; }else{ spicesGained = player.getCart()-player.getInventory(); if (spicesGained==0) { return false;//not enough space on cart } } player.setSpice(player.getSpice()+spicesGained); player.setGold(player.getGold()-1); player.setInventory(player.getInventory()+spicesGained); player.setTurn(player.getTurn()+1); player.eat(); break; } {case 2: int totalFabrics = randomQuatity(gen); int fabricesGained; if((player.getCart()-player.getInventory())>totalFabrics){ fabricesGained = totalFabrics; }else{ fabricesGained = player.getCart()-player.getInventory(); if (fabricesGained==0) { return false;//not enough space on cart } } player.setFabric(player.getFabric()+fabricesGained); player.setGold(player.getGold()-1); player.setInventory(player.getInventory()+fabricesGained); player.setTurn(player.getTurn()+1); player.eat(); break; } {case 3: int totalJewelry = randomQuatity(gen); int jewelryGained; if((player.getCart()-player.getInventory())>totalJewelry){ jewelryGained = totalJewelry; }else{ jewelryGained = player.getCart()-player.getInventory(); if (jewelryGained==0) { return false;//not enough space on cart } } player.setJewels(player.getJewels()+jewelryGained); player.setGold(player.getGold()-1); player.setInventory(player.getInventory()+jewelryGained); player.setTurn(player.getTurn()+1); player.eat(); break; } default: break; } } return true; } return false;// not enough gold } return false;//not enough food }