contract MegaCandy is StandardToken, LandAccessControl {

    string public constant name = "Unicorn Mega Candy"; // solium-disable-line uppercase
    string public constant symbol = "Mega"; // solium-disable-line uppercase
    uint8 public constant decimals = 18; // solium-disable-line uppercase

    event Mint(address indexed _to, uint  _amount);


    //uint256 public constant INITIAL_SUPPLY = 1000000000 * (10 ** uint256(decimals));


    function MegaCandy(address _landManagementAddress) LandAccessControl(_landManagementAddress) public {
    }

    function init() onlyLandManagement whenPaused external view {
    }

    function transferFromSystem(address _from, address _to, uint256 _value) onlyUnicornContract public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(_from, _to, _value);
        return true;
    }

    function burn(address _from, uint256 _value) onlyUnicornContract public returns (bool) {
        require(_value <= balances[_from]);

        balances[_from] = balances[_from].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
        //contract address here
        emit Burn(msg.sender, _value);
        emit Transfer(_from, address(0), _value);
        return true;
    }

    function mint(address _to, uint256 _amount) onlyCandyLand public returns (bool) {
        totalSupply_ = totalSupply_.add(_amount);
        balances[_to] = balances[_to].add(_amount);
        emit Mint(_to, _amount);
        emit Transfer(address(0), _to, _amount);
        return true;
    }

}
function MegaCandy(address _landManagementAddress) LandAccessControl(_landManagementAddress) public {
}

//uint256 public constant INITIAL_SUPPLY = 1000000000 * (10 ** uint256(decimals));