Exemple #1
0
 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);
     }
 }
Exemple #2
0
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
}