function ShootRobinHood(uint256 _id, string _quote) public payable onlyOpen{
        require(_id < next_tower_index);
        var UsedTower = Towers[_id];
        var Timing = getTimer(_id);
    
        
        if (UsedTower.timestamp != 0 && block.timestamp > (add(UsedTower.timestamp,  Timing))){
            Payout_intern(_id);
            
            if (msg.value > 0){
                msg.sender.transfer(msg.value);
            }
            return;
        }
        
        
        require(msg.value >= UsedTower.price);
        
        
        uint256 devFee_used = (mul( UsedTower.price, 5))/100;
        uint256 creatorFee = (mul(UsedTower.creatorFee, UsedTower.price)) / 10000;
        uint256 divFee = (mul(UsedTower.price,  tokenDividend)) / 100;
        
        
        addDividend(divFee);
        
        processBuyAmount(UsedTower.price);
        
        
        
        uint256 ToPay = sub(sub(UsedTower.price, devFee_used), creatorFee);
        
        
        uint256 diff = sub(msg.value, UsedTower.price);
        if (creatorFee != 0){
            UsedTower.creator.transfer(creatorFee);
        }
        
        if (diff > 0){
            msg.sender.transfer(diff); 
        }
        
        
        owner.transfer(devFee_used);
        
        
        
        UsedTower.timestamp = block.timestamp;
        
        UsedTower.owner = msg.sender;
        
        UsedTower.quote = _quote;
        
        UsedTower.amount = add(UsedTower.amount, sub(ToPay, divFee));
        
        UsedTower.price = (UsedTower.price * (10000 + UsedTower.priceIncrease)) / 10000;
        
        
        emit TowerBought(_id);
    }