function receiveTokenLoot(uint _amountSKL, 
                            uint _amountXP, 
                            uint _amountGold, 
                            uint _amountSilver,
                            uint _amountScale,
                            uint _nonce, 
                            uint8 _v, 
                            bytes32 _r, 
                            bytes32 _s) {

    
    require(_nonce > nonces[msg.sender]);
    nonces[msg.sender] = _nonce;

    
    address signer = ecrecover(keccak256(msg.sender, 
                                         _amountSKL, 
                                         _amountXP, 
                                         _amountGold,
                                         _amountSilver,
                                         _amountScale,
                                         _nonce), _v, _r, _s);
    require(signer == neverdieSigner);

    
    if (_amountSKL > 0) assert(sklToken.transfer(msg.sender, _amountSKL));
    if (_amountXP > 0) assert(xpToken.transfer(msg.sender, _amountXP));
    if (_amountGold > 0) assert(goldToken.transfer(msg.sender, _amountGold));
    if (_amountSilver > 0) assert(silverToken.transfer(msg.sender, _amountSilver));
    if (_amountScale > 0) assert(scaleToken.transfer(msg.sender, _amountScale));

    
    ReceiveLoot(msg.sender, _amountSKL, _amountXP, _amountGold, _amountSilver, _amountScale, _nonce);
  }