diff --git a/runtime/syntax/uc.vim b/runtime/syntax/uc.vim
new file mode 100644
index 0000000..7eab1d4
--- /dev/null
+++ b/runtime/syntax/uc.vim
@@ -0,0 +1,178 @@
+" Vim syntax file
+" Language:	UnrealScript
+" Maintainer:	Mark Ferrell <major@chaoticdreams.org>
+" URL:		ftp://ftp.chaoticdreams.org/pub/ut/vim/uc.vim
+" Credits:	Based on the java.vim syntax file by Claudio Fleiner
+" Last change:	2003 May 31
+
+" Please check :help uc.vim for comments on some of the options available.
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+" some characters that cannot be in a UnrealScript program (outside a string)
+syn match ucError "[\\@`]"
+syn match ucError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/"
+
+" we define it here so that included files can test for it
+if !exists("main_syntax")
+  let main_syntax='uc'
+endif
+
+syntax case ignore
+
+" keyword definitions
+syn keyword ucBranch	      break continue
+syn keyword ucConditional     if else switch
+syn keyword ucRepeat	      while for do foreach
+syn keyword ucBoolean	      true false
+syn keyword ucConstant	      null
+syn keyword ucOperator	      new instanceof
+syn keyword ucType	      boolean char byte short int long float double
+syn keyword ucType	      void Pawn sound state auto exec function ipaddr
+syn keyword ucType	      ELightType actor ammo defaultproperties bool
+syn keyword ucType	      native noexport var out vector name local string
+syn keyword ucType	      event
+syn keyword ucStatement       return
+syn keyword ucStorageClass    static synchronized transient volatile final
+syn keyword ucMethodDecl      synchronized throws
+
+" UnrealScript defines classes in sorta fscked up fashion
+syn match   ucClassDecl       "^[Cc]lass[\s$]*\S*[\s$]*expands[\s$]*\S*;" contains=ucSpecial,ucSpecialChar,ucClassKeys
+syn keyword ucClassKeys	      class expands extends
+syn match   ucExternal	      "^\#exec.*" contains=ucCommentString,ucNumber
+syn keyword ucScopeDecl       public protected private abstract
+
+" UnrealScript Functions
+syn match   ucFuncDef	      "^.*function\s*[\(]*" contains=ucType,ucStorageClass
+syn match   ucEventDef	      "^.*event\s*[\(]*" contains=ucType,ucStorageClass
+syn match   ucClassLabel      "[a-zA-Z0-9]*\'[a-zA-Z0-9]*\'" contains=ucCharacter
+
+syn region  ucLabelRegion     transparent matchgroup=ucLabel start="\<case\>" matchgroup=NONE end=":" contains=ucNumber
+syn match   ucUserLabel       "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=ucLabel
+syn keyword ucLabel	      default
+
+" The following cluster contains all java groups except the contained ones
+syn cluster ucTop contains=ucExternal,ucError,ucError,ucBranch,ucLabelRegion,ucLabel,ucConditional,ucRepeat,ucBoolean,ucConstant,ucTypedef,ucOperator,ucType,ucType,ucStatement,ucStorageClass,ucMethodDecl,ucClassDecl,ucClassDecl,ucClassDecl,ucScopeDecl,ucError,ucError2,ucUserLabel,ucClassLabel
+
+" Comments
+syn keyword ucTodo	       contained TODO FIXME XXX
+syn region  ucCommentString    contained start=+"+ end=+"+ end=+\*/+me=s-1,he=s-1 contains=ucSpecial,ucCommentStar,ucSpecialChar
+syn region  ucComment2String   contained start=+"+  end=+$\|"+  contains=ucSpecial,ucSpecialChar
+syn match   ucCommentCharacter contained "'\\[^']\{1,6\}'" contains=ucSpecialChar
+syn match   ucCommentCharacter contained "'\\''" contains=ucSpecialChar
+syn match   ucCommentCharacter contained "'[^\\]'"
+syn region  ucComment	       start="/\*"  end="\*/" contains=ucCommentString,ucCommentCharacter,ucNumber,ucTodo
+syn match   ucCommentStar      contained "^\s*\*[^/]"me=e-1
+syn match   ucCommentStar      contained "^\s*\*$"
+syn match   ucLineComment      "//.*" contains=ucComment2String,ucCommentCharacter,ucNumber,ucTodo
+hi link ucCommentString ucString
+hi link ucComment2String ucString
+hi link ucCommentCharacter ucCharacter
+
+syn cluster ucTop add=ucComment,ucLineComment
+
+" match the special comment /**/
+syn match   ucComment	       "/\*\*/"
+
+" Strings and constants
+syn match   ucSpecialError     contained "\\."
+"syn match   ucSpecialCharError contained "[^']"
+syn match   ucSpecialChar      contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
+syn region  ucString	       start=+"+ end=+"+  contains=ucSpecialChar,ucSpecialError
+syn match   ucStringError      +"\([^"\\]\|\\.\)*$+
+syn match   ucCharacter        "'[^']*'" contains=ucSpecialChar,ucSpecialCharError
+syn match   ucCharacter        "'\\''" contains=ucSpecialChar
+syn match   ucCharacter        "'[^\\]'"
+syn match   ucNumber	       "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
+syn match   ucNumber	       "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
+syn match   ucNumber	       "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
+syn match   ucNumber	       "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
+
+" unicode characters
+syn match   ucSpecial "\\u\d\{4\}"
+
+syn cluster ucTop add=ucString,ucCharacter,ucNumber,ucSpecial,ucStringError
+
+" catch errors caused by wrong parenthesis
+syn region  ucParen	       transparent start="(" end=")" contains=@ucTop,ucParen
+syn match   ucParenError       ")"
+hi link     ucParenError       ucError
+
+if !exists("uc_minlines")
+  let uc_minlines = 10
+endif
+exec "syn sync ccomment ucComment minlines=" . uc_minlines
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_uc_syntax_inits")
+  if version < 508
+    let did_uc_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink ucFuncDef			Conditional
+  HiLink ucEventDef			Conditional
+  HiLink ucBraces			Function
+  HiLink ucBranch			Conditional
+  HiLink ucLabel			Label
+  HiLink ucUserLabel			Label
+  HiLink ucConditional			Conditional
+  HiLink ucRepeat			Repeat
+  HiLink ucStorageClass			StorageClass
+  HiLink ucMethodDecl			ucStorageClass
+  HiLink ucClassDecl			ucStorageClass
+  HiLink ucScopeDecl			ucStorageClass
+  HiLink ucBoolean			Boolean
+  HiLink ucSpecial			Special
+  HiLink ucSpecialError			Error
+  HiLink ucSpecialCharError		Error
+  HiLink ucString			String
+  HiLink ucCharacter			Character
+  HiLink ucSpecialChar			SpecialChar
+  HiLink ucNumber			Number
+  HiLink ucError			Error
+  HiLink ucStringError			Error
+  HiLink ucStatement			Statement
+  HiLink ucOperator			Operator
+  HiLink ucOverLoaded			Operator
+  HiLink ucComment			Comment
+  HiLink ucDocComment			Comment
+  HiLink ucLineComment			Comment
+  HiLink ucConstant			ucBoolean
+  HiLink ucTypedef			Typedef
+  HiLink ucTodo				Todo
+
+  HiLink ucCommentTitle			SpecialComment
+  HiLink ucDocTags			Special
+  HiLink ucDocParam			Function
+  HiLink ucCommentStar			ucComment
+
+  HiLink ucType				Type
+  HiLink ucExternal			Include
+
+  HiLink ucClassKeys			Conditional
+  HiLink ucClassLabel			Conditional
+
+  HiLink htmlComment			Special
+  HiLink htmlCommentPart		Special
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "uc"
+
+if main_syntax == 'uc'
+  unlet main_syntax
+endif
+
+" vim: ts=8
