Battle_Script_Pro.Form1.ParseHalfWordParameter C# (CSharp) Method

ParseHalfWordParameter() private method

private ParseHalfWordParameter ( string input, int lineNumber, int parameterNumber ) : ReturnWorked
input string
lineNumber int
parameterNumber int
return ReturnWorked
        private ReturnWorked ParseHalfWordParameter(string input, int lineNumber, int parameterNumber)
        {
            uint temp = 0;
            bool succeeded = UInt32.TryParse(input, out temp);
            if (!succeeded)
            {
                ushort value = 0;
                try
                {
                    value = UInt16.Parse(ToDecimal(input));
                }
                catch (OverflowException)
                {
                    return (new ReturnWorked(false, Convert.ToUInt16(0)));
                }
                catch
                {
                    uint potentialValue = 0;
                    bool success = userDefinitions.TryGetValue(input.ToUpper(), out potentialValue);
                    if (success)
                    {
                        try
                        {
                            ushort toReturn = Convert.ToUInt16(potentialValue);
                            return (new ReturnWorked(true, toReturn));
                        }
                        catch
                        {
                            return (new ReturnWorked(false, Convert.ToUInt16(0)));
                        }
                    }
                    success = keywords.TryGetValue(input.ToUpper(), out potentialValue);
                    if (success)
                    {
                        try
                        {
                            ushort toReturn = Convert.ToUInt16(potentialValue);
                            return (new ReturnWorked(true, toReturn));
                        }
                        catch
                        {
                            return (new ReturnWorked(false, Convert.ToUInt16(0)));
                        }
                    }
                    return (new ReturnWorked(false, Convert.ToUInt16(0)));
                }
                return (new ReturnWorked(true, value));
            }
            else
            {
                ushort value = 0;
                try
                {
                    value = UInt16.Parse(input);
                }
                catch (OverflowException)
                {
                    return (new ReturnWorked(false, Convert.ToUInt16(0)));
                }
                catch
                {
                    uint potentialValue = 0;
                    bool success = userDefinitions.TryGetValue(input.ToUpper(), out potentialValue);
                    if (success)
                    {
                        try
                        {
                            ushort toReturn = Convert.ToUInt16(potentialValue);
                            return (new ReturnWorked(true, toReturn));
                        }
                        catch
                        {
                            return (new ReturnWorked(false, Convert.ToUInt16(0)));
                        }
                    }
                    success = keywords.TryGetValue(input.ToUpper(), out potentialValue);
                    if (success)
                    {
                        try
                        {
                            ushort toReturn = Convert.ToUInt16(potentialValue);
                            return (new ReturnWorked(true, toReturn));
                        }
                        catch
                        {
                            return (new ReturnWorked(false, Convert.ToUInt16(0)));
                        }
                    }
                    return (new ReturnWorked(false, "Error parsing parameter on line " + lineNumber + ", parameter " + (parameterNumber + 1), false));
                }
                return (new ReturnWorked(true, value));
            }
        }
Form1