
// Misc ZDoom text language definitions

z_animdefs {
	name = "ZDoom AnimDefs";
	keyword_link = "http://zdoom.org/wiki/ANIMDEFS";
	constant_link = "http://zdoom.org/wiki/ANIMDEFS";
	function_link = "http://zdoom.org/wiki/ANIMDEFS";
	case_sensitive = false;

	keywords = {
		texture, flat, tics, rand, range, fit, switch, sound, animateddoor, firetexture,
		pic, warp, warp2, on, off, opensound, closesound, cameratexture, worldpanning,
		notrim, canvastexture, hdr, color, palette
	}

	constants = {
		allowdecals, doom, heretic, hexen, strife, optional, random, oscillate
	}
}

z_cvarinfo {
	name = "ZDoom CvarInfo";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/CVARINFO";
	constant_link = "http://zdoom.org/wiki/CVARINFO";
	function_link = "http://zdoom.org/wiki/CVARINFO";

	keywords = {
		// Scopes
		server, user, nosave,

		// Flags
		noarchive, cheat, latch,

		// Types
		bool, color, float, int, string
	}

	constants = {
		//Boolean values
		TRUE, FALSE
	}

	functions {
		HandlerClass = "classname";
	}
}

z_decaldef {
	name = "ZDoom DecalDef";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/DECALDEF";
	constant_link = "http://zdoom.org/wiki/DECALDEF";
	function_link = "http://zdoom.org/wiki/DECALDEF";
	blocks = "decal", "decalgroup", "stretcher", "fader", "combiner", "slider", "colorchanger";

	keywords = {
		pic, shade, x, scale, y, scale, flipx, flipy, randomflipx, randomflipy, solid,
		translucent, add, fuzzy, fullbright, lowerdecal, colors, animator, decal,
		decalgroup, generator, stretcher, GoalX, GoalY, StretchStart, StretchTime,
		fader, DecayStart, DecayTime, Combiner, slider, DistX, DistY, SlideStart,
		SlideTime, colorchanger, FadeStart, FadeTime, Color, optional
	}
}

z_fontdefs {
	name = "ZDoom FontDefs";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/FONTDEFS";
	constant_link = "http://zdoom.org/wiki/FONTDEFS";
	function_link = "http://zdoom.org/wiki/FONTDEFS";

	keywords = {
		Template, NOTRANSLATION, SPACEWIDTH, BASE, COUNT, CURSOR, FIRST, DONTTRANSLATE
	}

	constants = {
		DOOMFONT, STATUSFONT, INDEXFONT, STCFN, STBFN, FONTA
	}
}

z_gameinfo {
	name = "ZDoom GameInfo";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/GAMEINFO";
	constant_link = "http://zdoom.org/wiki/GAMEINFO";
	function_link = "http://zdoom.org/wiki/GAMEINFO";

	keywords = {
		IWAD, LOAD, NOSPRITERENAME, STARTUPTITLE, STARTUPCOLORS, STARTUPTYPE, STARTUPSONG,
		LOADLIGHTS, LOADBRIGHTMAPS, LOADWIDESCREEN, DISCORDAPPID, STEAMAPPID
	}
}

z_gldefs {
	name = "GZDoom GLDefs";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/GLDEFS";
	constant_link = "http://zdoom.org/wiki/GLDEFS";
	function_link = "http://zdoom.org/wiki/GLDEFS";
	blocks = "pointlight", "pulselight", "flickerlight", "flickerlight2", "sectorlight",
				"object", "detail", "skybox", "brightmap", "glow", "hardwareshader";

	keywords = {
		PointLight, PulseLight, FlickerLight, FlickerLight2, SectorLight, Detail,
		Object, Frame, Light, Skybox, fliptop, brightmap, Glow, Flats, Walls, fullbright,
		HardwareShader
	}

	constants = {
		color, size, offset, subtractive, secondarySize, interval, chance, dontlightself,
		scale, map, iwad, thiswad, disablefullbright, Texture, Shader, speed, attenuate,
		dontlightothers, dontlightmap, nomipmap
	}
}

z_iwadinfo
{
	name = "ZDoom IWAD Info";
	case_sensitive = false;

	keywords =
	{
		IWad, Order, Names
	}

	properties =
	{
		Name, AutoName, Game, Config, IWADName, MapInfo, MustContain, BannerColors,
		StartupType, StartupSong, Compatibility, Required, Load, IgnoreTitlePatches,
		DeleteLumps, NoKeyboardCheats, LoadLights, LoadBrightmaps, LoadWidescreen,
		DiscordAppId, SteamAppId, SkipBexStringsIfLanguage, SupportWAD
	}
}

z_keyconf {
	name = "ZDoom KeyConf";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/KEYCONF";
	constant_link = "http://zdoom.org/wiki/KEYCONF";
	function_link = "http://zdoom.org/wiki/KEYCONF";
	blocks = "addkeysection", "weaponsection";

	keywords = {
		alias, defaultbind, addkeysection, addmenukey, addslotdefault,
		weaponsection, setslot, clearplayerclasses, addplayerclass
	}
}

z_language {
	name = "ZDoom Language";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/LANGUAGE";
	constant_link = "http://zdoom.org/wiki/LANGUAGE";
	function_link = "http://zdoom.org/wiki/LANGUAGE";
	blocks = "default";

	keywords = {
		default, csy, dan, de, dea, des, deu, ell, en, ena, enc, eng, eni, enu, enz, esm,
		esn, esp, eti, fin, fr, fra, frb, frc, frs, hun, isl, ita, its, nlb, nld, non, nor,
		plk, ptb, ptg, rus, sky, sv, trk
	}
}

z_lockdefs {
	name = "ZDoom LockDefs";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/LOCKDEFS";
	constant_link = "http://zdoom.org/wiki/LOCKDEFS";
	function_link = "http://zdoom.org/wiki/LOCKDEFS";
	blocks = "lock";

	keywords = {
		CLEARLOCKS, LOCK, ANY, MESSAGE, REMOTEMESSAGE, MAPCOLOR, LOCKEDSOUND
	}

	constants = {
		BlueCard,	BlueSkull,		KeyBlue,
		YellowCard,	YellowSkull,	KeyYellow,
		RedCard,	RedSkull,		KeyGreen,
		KeySteel, KeyCave, KeyAxe, KeyFire, KeyEmerald, KeyDungeon, KeySilver, KeyRusted, KeyHorn, KeySwamp, KeyCastle,
		BaseKey, GovsKey, Passcard, IDBadge, PrisonKey, SeveredHand, Power1Key, Power2Key, Power3Key, GoldKey, IDCard,
		SilverKey, OracleKey, MilitaryID, OrderKey, WarehouseKey, BrassKey, RedCrystalKey, BlueCrystalKey, ChapelKey,
		CatacombKey, SecurityKey, CoreKey, MaulerKey, FactoryKey, MineKey, NewKey5, PrisonPass, OraclePass,
		ChexRedCard, ChexBlueCard, ChexYellowCard
	}
}

z_mapinfo {
	name = "ZDoom MapInfo";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/MAPINFO";
	constant_link = "http://zdoom.org/wiki/MAPINFO";
	function_link = "http://zdoom.org/wiki/MAPINFO";
	blocks = "gameinfo", "skill", "map", "episode", "cluster", "automap", "automap_overlay",
	         "doomednums", "spawnnums", "conversationids", "damagetype";

	keywords = {
		// Generic
		lookup, include,

		// Cutscene
		clear, delete, fps, function, sound, soundid, video,

		// Cluster
		Cluster, ClusterDef, EnterText, ExitText, ExitTextIsLump, Music, Flat, Pic, Hub,
		AllowIntermission, entertextislump, gameover, intro, outro,

		// Episode
		ClearEpisodes, Episode, Name, PicName, Key, Remove, NoSkillMenu, Optional, Extended,
		teaser, intro,

		// Map
		Map, DefaultMap, AddDefaultMap, GameDefaults,
		ActivateOwnDeathSpecials, AirControl, AirSupply, AllowCrouch, AllowFreelook,
		AllowJump, AllowMonsterTelefrags, AllowRespawn, AutoSequences, BaronSpecial,
		BorderTexture, CDId, CDTrack, CheckSwitchRange, ClipMidTextures,
		CyberdemonSpecial, DeathSequence, DefaultEnvironment, DefaultEnvironment,
		DoubleSky, DSparilSpecial, EnterPic, EvenLighting, ExitPic, F1, Fade,
		FadeTable, FallingDamage, FilterStarts, ForceNoSkyStretch, ForgetState,
		Gravity, Grinding_Polyobj, HorizWallShade, InfiniteFlightPowerup,
		InterMusic, IronlichSpecial, KeepFullInventory, LaxMonsterActivation,
		LevelNum, Lightning, Map07Special, MapBackground, MinotaurSpecial,
		MissilesActivateImpactLines, MissileShootersActivateImpactLines,
		MonsterFallingDamage, Music, Next, No_Grinding_Polyobj, NoAllies,
		NoAutosaveHint, NoAutoSequences, NoCheckSwitchRange, NoCrouch,
		NoFallingDamage, NoFreelook, NoInfighting, NoIntermission, NoInventoryBar,
		NoJump, NormalInfighting, NoSoundClipping, OldFallingDamage,
		ForceFallingDamage, OutsideFog, Par, PrecacheSounds, RandomPlayerStarts,
		Redirect, RememberState, ResetHealth, ResetInventory, Secret, SecretNext,
		Sky1, Sky2, Skybox, SkyStretch, Slideshow, SmoothLighting,
		SpawnWithWeaponRaised, SpecialAction, SpecialAction_ExitLevel,
		SpecialAction_OpenDoor, SpecialAction_LowerFloor, SpecialAction_KillMonsters,
		SpiderMastermindSpecial, StrictMonsterActivation, StrifeFallingDamage,
		SuckTime, TeamDamage, TeamPlayOff, TeamPlayOn, TitlePatch, TotalInfighting,
		Translator, UnFreezeSinglePlayerConversations, UsePlayerStartZ, VertWallShade,
		ForceFakeContrast, PrecacheTextures, PrecacheClasses, HazardColor, HazardFlash,
		AddEventHandlers, EventHandlers, TextMusic, TextFlat, TextPic,
		additive_scrollers, author, brightfog, cd_end1_track, cd_end2_track, cd_end3_track,
		cd_intermission_track, cd_start_track, cd_title_track, compat_anybossdeath,
		compat_badangles, compat_boomscroll, compat_checkswitchrange, compat_corpsegibs,
		compat_crossdropoff, compat_dehhealth, compat_dropoff, compat_explode1, compat_explode2,
		compat_floormove, compat_invisibility, compat_light, compat_limitpain,
		compat_maskedmidtex, compat_mbfmonstermove, compat_minotaur, compat_missileclip,
		compat_multiexit, compat_mushroom, compat_noblockfriends, compat_nodoorlight,
		compat_nopassover, compat_notossdrops, compat_pointonline, compat_polyobj,
		compat_pushwindow, compat_railing, compat_ravenscroll, compat_scriptwait,
		compat_sectorsounds, compat_shorttex, compat_silent_instant_floors, compat_soundcutoff,
		compat_soundtarget, compat_spritesort, compat_stairs, compat_teleport, compat_trace,
		compat_useblocking, edata, endofgame, forceworldpanning, fs_nocheckposition,
		interpic, killeractivatesdeathspecials, loadacs, mapintermusic, needclustertext,
		noclustertext, noinfiniteflightpowerup, nomonsterfallingdamage, nostatistics,
		notexturefill, partime, pausemusicinmenus, resetitems, skyrotate2, sndinfo, sndseq,
		soundinfo, specialaction_lowerfloortohighest, warptrans, wrapmidtextures,
		propermonsterfallingdamage, disableskyboxao, enableskyboxao, e1m8special,
		e2m8special, e3m8special, e4m6special, e4m8special, disableshadowmap, enableshadowmap,
		avoidmelee, compat_avoidhazards, compat_stayonlift, compat_nombf21, compat_vileghosts,
		attenuatelights, intro, outro, lightblendmode, cvar_redirect, compat_voodoozombies,
		nopassover, passover, colormap, nogravity, lightningsound, compat_noacsargcheck,
		nofogofwar, label, enteranim, exitanim,

		// GZDoom
		FogDensity, OutsideFogDensity, SkyFog, LightMode, NoColoredSpriteLighting, SkyRotate, PixelRatio,
		LightAdditiveSurfaces, NoLightFade,

		// Skill definitions
		Skill, ClearSkills, AmmoFactor, DropAmmoFactor, DoubleAmmoFactor, DamageFactor, RespawnTime, RespawnLimit,
		Aggressiveness, SpawnFilter, ACSReturn, Key, MustConfirm, Name, PlayerClassName, PicName, TextColor, EasyBossBrain,
		FastMonsters, SlowMonsters, DisableCheats, AutoUseHealth, ReplaceActor, MonsterHealth, FriendlyHealth, NoPain,
		DefaultSkill, ArmorFactor, EasyKey, HealthFactor, KickbackFactor, NoMenu, baby, easy, hard, nightmare, normal,
		playerrespawn, SpawnMulti, SpawnMultiCoopOnly, InstantReaction,

		// GameInfo definitions
		GameInfo, AddCreditPage, AddInfoPage, AddPlayerClasses, AddQuitMessages, AdvisoryTime, Border, BackpackType,
		BorderFlat, ChatSound, CreditPage, DefaultBloodColor, DefaultBloodParticleColor, DefKickback, DrawReadThis,
		FinaleFlat, FinaleMusic, FinalePage, InfoPage, IntermissionCounter, IntermissionMusic, NoLoopFinaleMusic,
		PageTime, QuitSound, SkyFlatName, StatusBar, TeleFogHeight, TitleMusic, TitlePage, TitleTime, Translator,
		WeaponSlot, ArmorIcons, DimColor, DimAmount, DefInventoryMaxAmount, DefaultRespawnTime, DefaultDropStyle, Endoom,
		PickupColor, QuitMessages, MenuFontColor_Title, MenuFontColor_Label, MenuFontColor_Value,
		MenuFontColor_Action, MenuFontColor_Header, MenuFontColor_Highlight, MenuFontColor_Selection, MenuBackButton,
		PlayerClasses, PauseSign, GibFactor, CursorPic, SwapMenu, TextScreenX, TextScreenY, DefaultEndSequence, MapArrow,
		NoRandomPlayerclass, StatScreen_EnteringPatch, StatScreen_FinishedPatch, StatScreen_MapNameFont, NightmareFast,
		DontCrunchCorpses, CheatKey, ForceKillScripts, MessageBoxClass, StatusBarClass, DefaultConversationMenuClass,
		StatScreen_FinishedFont, StatScreen_EnteringFont, Dialogue, StatScreen_Single, StatScreen_Coop, StatScreen_DM,
		BlurAmount, CorrectPrintBold, MenuSliderColor, althudclass, forcenogfxsubstitution, forcetextinmenus,
		fullscreenautoaspect, nomergepickupmsg, normforwardmove, normsidemove, statscreen_authorfont,
		statscreen_contentfont, menusliderbackcolor, hidepartimes, adddialogues, helpmenuclass, menudelegateclass,
		intro, basicarmorclass, hexenarmorclass,

		// Intermission definitions
		Intermission, Link, Cast, Fader, GotoTitle, Image, Scroller, TextScreen, Wiper, Background, CDMusic, Draw,
		DrawConditional, Music, Sound, Time, CastClass, CastName, AttackSound, FadeType, Background2, InitialDelay,
		ScrollDirection, ScrollTime, Position, Text, TextColor, TextDelay, TextLump, TextSpeed, WipeType,
		down, left, right, up, fadein, fadeout, burn, crossfade, default, melt, subtitle,

		// Automap
		Automap, Automap_Overlay, AlmostBackgroundColor, Base, CeilingDiffWallColor, ExtraFloorWallColor, FloorDiffWallColor,
		GridColor, InterTeleportColor, IntraTeleportColor, LockedColor, NotSeenColor, SecretSectorColor, SecretWallColor,
		ShowLocks, SpecialWallColor, ThingColor, ThingColor_CountItem, ThingColor_Friend, ThingColor_Item, ThingColor_Monster,
		ThingColor_NocountMonster, TwoSidedWallColor, WallColor, XHairColor, YourColor,
		false, true, portalcolor, unexploredsecretcolor,

		// Thing editor numbers
		DoomEdNums, NoSkillFlags,

		// Spawn numbers (SpawnIDs)
		SpawnNums,

		// Conversation IDs
		ConversationIDs,

		// Damage types
		DamageType, Factor, ReplaceFactor, NoArmor, Obituary
	}

	constants = {
		EndGame
	}
}

z_menudef {
	name = "ZDoom Menu";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/MENUDEF";
	constant_link = "http://zdoom.org/wiki/MENUDEF";
	function_link = "http://zdoom.org/wiki/MENUDEF";
	blocks = "listmenu", "addlistmenu", "optionmenu", addoptionmenu, "optionvalue", "optionstring";

	keywords = {
		ListMenu, AddListMenu, OptionMenu, AddOptionMenu, OptionValue, OptionString,
		DefaultListMenu, DefaultOptionMenu, OptionMenuSettings,
		Font, Linespacing, LabelOffset, PlayerDisplay, Position, Selector, StaticText,
		StaticTextSwitchable, ScrollTop, SafeCommand, ColorPicker, Class, ScreenResolution,
		StaticPatch, Control, Option, Slider, PatchItem, TextItem, Submenu, Command,
		NetgameMessage, StaticPatchCentered, StaticTextCentered, MouseWindow, CenterMenu,
		Title, PlayerNameBox, ValueText, MapControl, Else, TextField, NumberField,
		ScaleSlider, Size, AnimatedTransition, FlagOption, Before, After, DontDim, DontBlur,
		ForceList, Animated, CenterText, Caption, CaptionItem, Clean, protected,
		PlayerNameField, PlayerTeamItem, PlayerColorItem, PlayerColorSlider, PlayerClassItem,
		PlayerSkinItem, PlayerGenderItem, AutoaimSlider, PlayerSwitchOnPickupItem, Indent,
		LabeledSubMenu, SliderReverbEditOption, ReverbOption, ReverbSelect
	}

	functions { ifgame = "game, [...]"; ifoption = "option, [...]"; }

	constants = {
		doom, heretic, hexen, strife, chex, readthis, swapmenu, windows, unix, mac,
		openal, swrender, mmx, LoadMenu, SaveMenu, PlayerMenu, JoystickConfigMenu,
		GameplayMenu, CompatibilityMenu, VideoModeMenu,
	}
}

z_modeldef {
	name = "GZDoom ModelDef";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/MODELDEF";
	constant_link = "http://zdoom.org/wiki/MODELDEF";
	function_link = "http://zdoom.org/wiki/MODELDEF";
	blocks = "model";

	keywords = {
		MODEL, PATH, SKIN, SCALE, FRAME, FRAMEINDEX,
		Rotation-Speed, Rotation-Vector, Rotation-Center,
		Offset, AngleOffset, PitchOffset, RollOffset, ZOffset, SurfaceSkin,
		Animation, BaseFrame
	}

	constants = {
		PITCHFROMMOMENTUM, IGNORETRANSLATION, INTERPOLATEDOUBLEDFRAMES, ROTATING, NOINTERPOLATION,
		INHERITACTORPITCH, INHERITACTORROLL, USEACTORPITCH, USEACTORROLL, DONTCULLBACKFACES,
		SCALEWEAPONFOV, MODELSAREATTACHMENTS, CORRECTPIXELSTRETCH, FORCECULLBACKFACES
	}
}

z_voxeldef {
	name = "ZDoom VoxelDef";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/VOXELDEF";
	constant_link = "http://zdoom.org/wiki/VOXELDEF";
	function_link = "http://zdoom.org/wiki/VOXELDEF";

	keywords = {
		AngleOffset, PitchFromMomentum, UseActorPitch, UseActorRoll, Scale, XOffset, YOffset, ZOffset,
		Spin, DroppedSpin, PlacedSpin, OverridePalette
	}
}

z_reverbs {
	name = "ZDoom Reverbs";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/REVERBS";
	constant_link = "http://zdoom.org/wiki/REVERBS";
	function_link = "http://zdoom.org/wiki/REVERBS";

	keywords = {
		AirAbsorptionHF, bDecayHFLimit, bEchoTimeScale, bEchoTimeScale, DecayHFRatio, DecayLFRatio, DecayTime,
		Density, Diffusion, EchoDepth, EchoTime, Environment, EnvironmentDiffusion, EnvironmentSize, HFReference,
		LFReference, ModulationDepth, Reflections, ReflectionsDelay, Reverb, ReverbDelay, Room, RoomHF, RoomLF
	}
}

z_s_skin {
	name = "ZDoom S_Skin";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/S_SKIN";
	constant_link = "http://zdoom.org/wiki/S_SKIN";
	function_link = "http://zdoom.org/wiki/S_SKIN";

	keywords = {
		name, sprite, crouchsprite, face, gender, scale, game, class, sounds,
		dsplpain, dsoof, dspldeth, dspdiehi, dsnoway, dsslop, dspunch, dsjump
	}
}

z_sbarinfo {
	name = "ZDoom StatusBarInfo";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/SBARINFO";
	constant_link = "http://zdoom.org/wiki/SBARINFO";
	function_link = "http://zdoom.org/wiki/SBARINFO";
	blocks = "statusbar", "mugshot";

	keywords = {
		Base, completeborder, CreatePopup, Height, InterpolateHealth, InterpolateArmor, LowerHealthCap, MonospaceFonts,
		Resolution, StatusBar, alpha, aspectratio, drawbar, DrawGem, DrawKeyBar, DrawInventoryBar, DrawImage, DrawMugShot,
		DrawNumber, DrawSelectedInventory, DrawShader, DrawString, DrawSwitchableImage, Else, GameMode, HasWeaponPiece,
		IfHealth, InInventory, Not, InventoryBarNotVisible, IsSelected, PlayerClass, PlayerType, UsesAmmo, UsesSecondaryAmmo,
		WeaponAmmo, mugshot, IfInvulnerable, IfWaterLevel, IfCVarInt, Protrusion, AppendStatusBar
	}

	constants = {
		nullimage, true, false, none, SlideInBottom, pushup, fade, fullscreen, normal, automap, inventory, inventoryfullscreen,
		popuplog, popupkeys, popupstatus, forcescaled, fullscreenoffsets, reverse, wiggle, translatable, armor, vertical, horizontal,
		reverserows, alwaysshow, noartibox, noarrows, alwaysshowcounter, translucent, Doom, Heretic, Hexen, HexenStrict, Strife,
		playericon, armoricon, weaponicon, ammoicon1, ammoicon2, sigil, xdeathface, animatedgodmode,
		disablegrin, disableouch, disablepain, disablerampage, health, armorclass, ammo1, ammo2, frags, kills, monsters, items,
		totalitems, secrets, score, totalsecrets, airtime, ammocapacity, ammo1capacity, ammo2capacity, poweruptime, globalvar,
		globalarray, accuracy, keys, savepercent, stamina, fillzeros, whennotzero, alternateonempty, artiflash, alwaysshowcounter,
		center, centerbottom, invulnerable, keyslot, armortype, levelname, levellump, skillname, playerclass, playername, ammo1tag,
		ammo2tag, weapontag, inventorytag, time, logtext, linebreaks, normal, pain, ouch, rampage, god, godanimated, grin, death,
		xdeath, custom, health2, healthspecial, directional, left, right, dontcap, itemflash, alticonfirst, alternateonfail,
		forcescale, skipalticon, skipicon, skipready, skipspawn, auto, cooperative, singleplayer, teamgame, deathmatch, weaponslot,
		equal, intcvar,

		//Some default fonts
		BIGFONT, INDEXFONT, SMALLFONT, HUDFONT_DOOM, INDEXFONT_DOOM, HUDFONT_RAVEN, INDEXFONT_RAVEN,

		// Default font colors
		Yellow, Red, Green, Blue, White, Black, untranslated, Brick, Tan, Gray, Grey, Brown, Gold, Orange, LightBlue, Cream, Olive,
        DarkGreen, DarkRed, DarkBrown, Purple, DarkGray, DarkGrey, Cyan
	}

	functions {
		interpolate = "speed";
		drawshadow = "[xOffset], [yOffset]";
		alignment = "alignment";
		ammo = "[class]";
		hexenarmor = "[type], [slot]";
		prefix = "value, pad";
	}
}

z_sndinfo {
	name = "ZDoom SndInfo";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/SNDINFO";
	constant_link = "http://zdoom.org/wiki/SNDINFO";
	function_link = "http://zdoom.org/wiki/SNDINFO";

	keywords = {

		// Commands
		ambient, random, playersound, playersounddup, playercompat, playeralias,
		alias, limit, singular, pitchshift, pitchshiftrange, map, registered,
		archivepath, musicvolume, /* replaygain, */ mididevice, ifdoom, ifheretic,
		ifhexen, ifstrife, rolloff, volume, musicalias, edfoverride, attenuation,
		pitchset, modplayer,

		// Used with $if<game> commands
		endif
	}

	constants = {

		// $ambient
		point, surround, world, continuous, random, periodic,

		// $playersound/$playersounddup/$playercompat/$playeralias
		male, female, neutral, neuter, other, object, cyborg,

		// $mididevice
		timidity, fmod, sndsys, standard, opl, default, fluidsynth, gus, wildmidi,
		adl, opn,

		// $rolloff
		linear, log, custom,

		// $modplayer
		xmp, libxmp, dumb, libdumb
	}
}

z_sndseq {
	name = "ZDoom SndSequence";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/SNDSEQ";
	constant_link = "http://zdoom.org/wiki/SNDSEQ";
	function_link = "http://zdoom.org/wiki/SNDSEQ";

	keywords = {
		play, playuntildone, playtime, playrepeat, playloop, delay, delayonce, delayrand, volume, volumerel, volumerand, attenuation,
		door, platform, environment, stopsound, nostopcutoff, end, slot, randomsequence, restart
	}

	constants = {
		normal, idle, static, none, surround
	}
}

z_teaminfo {
	name = "ZDoom TeamInfo";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/TEAMINFO";
	constant_link = "http://zdoom.org/wiki/TEAMINFO";
	function_link = "http://zdoom.org/wiki/TEAMINFO";
	blocks = "team";

	keywords = {
		clearteams, Team,
		Name, Game, PlayerColor, TextColor, Logo, AllowCustomPlayerColor,
		RailColor, FlagItem, SkullItem, PlayerStartThingNumber,
		SmallFlagHUDIcon, SmallSkullHUDIcon, LargeFlagHUDIcon, LargeSkullHUDIcon,
		WinnerPic, LoserPic, WinnerTheme, LoserTheme
	}

	constants = {
		Any, Chex, Doom, Heretic, Hexen, Raven, Strife
	}
}

z_terrain {
	name = "ZDoom Terrain";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/TERRAIN";
	constant_link = "http://zdoom.org/wiki/TERRAIN";
	function_link = "http://zdoom.org/wiki/TERRAIN";
	blocks = "splash", "terrain";

	keywords = {

		// Top-level keywords
		splash, terrain, floor, ifdoom, ifheretic, ifhexen, ifstrife, endif, defaultterrain,

		// Splash and terrain definitions
		modify,

		// Floor command
		optional, null, none
	}

	properties = {

		// Splash properties
		smallsound, smallclip, sound, smallclass, baseclass, chunkclass, chunkxvelshift,
		chunkyvelshift, chunkzvelshift, chunkbasezvel, noalert,

		// Terrain properties
		splash, damageamount, damagetype, damagetimemask, footclip, stepvolume,
		walksteptics, runsteptics, leftstepsounds, rightstepsounds, liquid, friction,
		allowprotection, damageonland, stepsounds, stepdistance, stepdistanceminvel
	}
}

z_textcolors {
	name = "ZDoom Textcolors";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/TEXTCOLO";
	constant_link = "http://zdoom.org/wiki/TEXTCOLO";
	function_link = "http://zdoom.org/wiki/TEXTCOLO";

	keywords = {
		Console, Flat
	}
}

z_textures {
	name = "ZDoom Textures";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/TEXTURES";
	constant_link = "http://zdoom.org/wiki/TEXTURES";
	function_link = "http://zdoom.org/wiki/TEXTURES";
	blocks = "texture", "sprite", "graphic", "walltexture", "flat", "remap", "define";
	blocks_ignore = "optional";

	keywords = {
		texture, patch, sprite, graphic, walltexture, flat, optional,
		XScale, YScale, offset, worldpanning, NoDecals, NullTexture,
		FlipX, FlipY, Rotate, Translation, Blend, Alpha, Style, define,
		UseOffsets, NoTrim
	}

	constants = {
		Inverse, Gold, Red, Green, Ice, Desaturate, Copy, Translucent,
		Add, Subtract, ReverseSubtract, Modulate, CopyAlpha, Overlay,
		CopyNewAlpha
	}
}


z_xlat {
	name = "ZDoom Map Translator";
	case_sensitive = false;
	keyword_link = "http://zdoom.org/wiki/Map_translator";
	constant_link = "http://zdoom.org/wiki/Map_translator";
	function_link = "http://zdoom.org/wiki/Map_translator";

	keywords = {
		include, maxlinespecial, sector, enum, tag, lineflag, define, lineid
	}

	constants = {
		clear, bitmask,

		USE, MONST, REP, WALK, SHOOT, MONWALK, FIRSTSIDE,
		NoKey, RCard, BCard, YCard, RSkull, BSkull, YSkull, AnyKey, AllKeys, CardIsSkull,
		C_SLOW, C_FAST, C_NORMAL, C_TURBO,
		D_SLOW, D_FAST, D_NORMAL, D_TURBO,
		ST_SLOW, ST_NORMAL, ST_FAST, ST_TURBO,
		P_SLOW, P_NORMAL, P_FAST, P_TURBO,
		F_SLOW, F_NORMAL, F_FAST, F_TURBO,
		VDOORWAIT, PLATWAIT, DORATE, ELEVATORSPEED, SCROLL_UNIT, CEILWAIT,

		Init_Gravity, Init_Color, Init_Damage, Init_TransferSky
	}

	functions {
		unsupported;

		ACS_Execute = "int script, [int mapnum], [int s_arg1], [int s_arg2], [int s_arg3]";
		ACS_ExecuteAlways = "int script, [int mapnum], [int arg1], [int arg2], [int arg3]";
		ACS_ExecuteWithResult = "int script, [int s_arg1], [int s_arg2], [int s_arg3]";
		ACS_LockedExecute = "int script, [int mapnum], [int arg1], [int arg2], [int lock]";
		ACS_LockedExecuteDoor = "int script, [int mapnum], [int arg1], [int arg2], [int lock]";
		ACS_Suspend = "int script, [int mapnum]";
		ACS_Terminate = "int script, [int mapnum]";
		Autosave;
		Ceiling_CrushAndRaise = "int tag, int speed, int damage, [int crushmode]";
		Ceiling_CrushAndRaiseA = "int tag, int downspeed, int upspeed, int damage, [cint rushmode]";
		Ceiling_CrushAndRaiseDist = "int tag, int dist, int speed, int damage, [int crushmode]";
		Ceiling_CrushAndRaiseSilentA = "int tag, int downspeed, int upspeed, int damage, [int crushmode]";
		Ceiling_CrushAndRaiseSilentDist = "int tag, int dist, int speed, int damage, [int crushmode]";
		Ceiling_CrushRaiseAndStay = "int tag, int speed, int crush, [int crushmode]";
		Ceiling_CrushRaiseAndStayA = "int tag, int downspeed, int upspeed, int damage, [int crushmode]";
		Ceiling_CrushRaiseAndStaySilA = "int tag, int downspeed, int upspeed, int damage, [int crushmode]";
		Ceiling_CrushStop = "int tag";
		Ceiling_LowerAndCrush = "int tag, int speed, int damage, [int crushmode]";
		Ceiling_LowerAndCrushDist = "int tag, int speed, int damage, int dist, [int crushmode]";
		Ceiling_LowerByValue = "int tag, int speed, int value";
		Ceiling_LowerByValueTimes8 = "int tag, int speed, int value";
		Ceiling_LowerInstant = "int tag, int unused, int value";
		Ceiling_LowerToFloor = "int tag, int speed";
		Ceiling_LowerToHighestFloor = "int tag, int speed";
		Ceiling_LowerToLowest = "int tag, int speed";
		Ceiling_MoveToValue = "int tag, int speed, int value, int negative";
		Ceiling_MoveToValueTimes8 = "int tag, int speed, int value, int negative";
		Ceiling_RaiseByValue = "int tag, int speed, int value";
		Ceiling_RaiseByValueTimes8 = "int tag, int speed, int value";
		Ceiling_RaiseInstant = "int tag, int unused, int value";
		Ceiling_RaiseToNearest = "int tag, int speed";
		Ceiling_Waggle = "int tag, int amplitude, int frequency, int delay, int time";
		ChangeCamera = "int tid, int who, int revert";
		ChangeSkill = "int level";
		ClearForceField = "int tag";
		DamageThing = "int damage, [int mod]";
		Door_Animated = "int tag, int speed, int delay, int lock";
		Door_Close = "int tag, int speed, [int lighttag]";
		Door_CloseWaitOpen = "int tag, int speed, int delay, [int lighttag]";
		Door_LockedRaise = "int tag, int speed, int delay, int lock, [int lighttag]";
		Door_Open = "int tag, int speed, [int lighttag]";
		Door_Raise = "int tag, int speed, int delay, [int lighttag]";
		Elevator_LowerToNearest = "int tag, int speed";
		Elevator_MoveToFloor = "int tag, int speed";
		Elevator_RaiseToNearest = "int tag, int speed";
		Exit_Normal = "int position";
		Exit_Secret = "int position";
		Floor_CrushStop = "int tag";
		Floor_Donut = "int pillartag, int pillarspeed, int moatspeed";
		Floor_LowerByValue = "int tag, int speed, int value";
		Floor_LowerByValueTimes8 = "int tag, int speed, int value";
		Floor_LowerInstant = "int tag, int unused, int value";
		Floor_LowerToHighest = "int tag, int speed, int adjust, [int always]";
		Floor_LowerToLowest = "int tag, int speed";
		Floor_LowerToLowestTxTy = "int tag, int speed";
		Floor_LowerToNearest = "int tag, int speed";
		Floor_MoveToValue = "int tag, int speed, int value, int neg";
		Floor_MoveToValueTimes8 = "int tag, int speed, int value, int neg";
		Floor_RaiseAndCrush = "int tag, int speed, int crush, [int crushmode]";
		Floor_RaiseAndCrushDoom = "int tag, int speed, int crush, [int crushmode]";
		Floor_RaiseByTexture = "int tag, int speed";
		Floor_RaiseByValue = "int tag, int speed, int value";
		Floor_RaiseByValueTimes8 = "int tag, int speed, int value";
		Floor_RaiseByValueTxTy = "int tag, int speed, int value";
		Floor_RaiseInstant = "int tag, int unused, int value";
		Floor_RaiseToHighest = "int tag, int speed";
		Floor_RaiseToLowestCeiling = "int tag, int speed";
		Floor_RaiseToNearest = "int tag, int speed";
		Floor_TransferNumeric = "int tag";
		Floor_TransferTrigger = "int tag";
		Floor_Waggle = "int tag, int amp, int freq, int offset, int time";
		FloorAndCeiling_LowerByValue = "int tag, int speed, int value";
		FloorAndCeiling_LowerRaise = "int tag, int floor_speed, int ceiling_speed, [int boom1998]";
		FloorAndCeiling_RaiseByValue = "int tag, int speed, int value";
		ForceField;
		FS_Execute = "int script, [int frontonly], [int lock], [int lockedmessage]";
		Generic_Ceiling = "int tag, int speed, int height, int target, int flags";
		Generic_Crusher = "int tag, int downspeed, int upspeed, int silent, int damage";
		Generic_Crusher2 = "int tag, int downspeed, int upspeed, int silent, int damage";
		Generic_Door = "int tag, int speed, int kind, int delay, int lock";
		Generic_Floor = "int tag, int speed, int height, int target, int flags";
		Generic_Lift = "int tag, int speed, int delay, int target, int height";
		Generic_Stairs = "int tag, int speed, int step, int flags, int reset";
		GlassBreak = "[int nojunk]";
		HealThing = "amount, [int max]";
		Light_ChangeToValue = "int tag, int value";
		Light_Fade = "int tag, int value, int tics";
		Light_Flicker = "int tag, int upper, int lower";
		Light_ForceLightning = "int mode";
		Light_Glow = "int tag, int upper, int lower, int tics";
		Light_LowerByValue = "int tag, int value";
		Light_MaxNeighbor = "int tag";
		Light_MinNeighbor = "int tag";
		Light_RaiseByValue = "int tag, int value";
		Light_Stop = "int tag";
		Light_Strobe = "int tag, int upper, int lower, int u-tics, int l-tics";
		Light_StrobeDoom = "int tag, int u-tics, int l-tics";
		Line_AlignCeiling  = "int lineid, int side";
		Line_AlignFloor = "int lineid, int side";
		Line_SetBlocking = "int lineid, int setflags, int clearflags";
		Line_SetPortalTarget = "int sourceline, int targetline";
		Line_SetTextureOffset = "int id, int x, int y, int side, int flags";
		Line_SetTextureScale = "int id, int x, int y, int side, int flags";
		NoiseAlert = "int target_tid, int emitter_tid";
		Pillar_Build = "int tag, int speed, int value";
		Pillar_BuildAndCrush = "int tag, int speed, int value, int damage, int crushmode";
		Pillar_Open = "int tag, int speed, int floor, int ceiling";
		Plat_DownByValue = "int tag, int speed, int delay, int value";
		Plat_DownWaitUpStay = "int tag, int speed, int delay";
		Plat_DownWaitUpStayLip = "int tag, int speed, int delay, int lip, int sound";
		Plat_PerpetualRaise = "int tag, int speed, int delay";
		Plat_PerpetualRaiseLip = "int tag, int speed, int delay, int lip";
		Plat_RaiseAndStayTx0 = "int tag, int speed, [int lockout]";
		Plat_Stop = "int tag";
		Plat_ToggleCeiling = "int tag";
		Plat_UpByValue = "int tag, int speed, int delay, int value";
		Plat_UpByValueStayTx = "int tag, int speed, int value";
		Plat_UpNearestWaitDownStay = "int tag, int speed, int delay";
		Plat_UpWaitDownStay = "int tag, int speed, int delay";
		Polyobj_DoorSlide = "int po, int speed, int angle, int dist, int delay";
		Polyobj_DoorSwing = "int po, int speed, int angle, int delay";
		Polyobj_Move = "int po, int speed, int angle, int dist";
		Polyobj_MoveTimes8 = "int po, int speed, int angle, int dist";
		Polyobj_MoveTo = "int po, int speed, int x, int y";
		Polyobj_MoveToSpot = "int po, int speed, int tid";
		Polyobj_OR_Move = "int po, int speed, int angle, int distance";
		Polyobj_OR_MoveTimes8 = "int po, int speed, int angle, int distance";
		Polyobj_OR_MoveTo = "int po, int speed, int x, int y";
		Polyobj_OR_MoveToSpot = "int po, int speed, int tid";
		Polyobj_OR_RotateLeft = "int po, int speed";
		Polyobj_OR_RotateRight = "int po, int speed, int angle";
		Polyobj_RotateLeft = "int po, int speed, int angle";
		Polyobj_RotateRight = "int po, int speed, int angle";
		Polyobj_Stop = "int po";
		Radius_Quake = "int intensity, int duration, int damrad, int tremrad, int tid";
		Scroll_Ceiling = "int tag, int x-move, int y-move, int unused";
		Scroll_Floor = "int tag, int x-move, int y-move, int mode";
		Scroll_Texture_Both = "int lineid, int left, int right, int up, int down";
		Scroll_Wall = "int lineid, int x, int y, int side, int flags";
		Sector_ChangeFlags = "int tag, int set, int clear";
		Sector_ChangeSound = "int tag, int newsequence";
		Sector_SetCeilingPanning = "int tag, int x-int, int x-frac, int y-int, int y-frac";
		Sector_SetCeilingScale = "int tag, int x-int, int x-frac, int y-int, int y-frac";
		Sector_SetCeilingScale2 = "int tag, int x-factor, int y-factor";
		Sector_SetColor = "int tag, int r, int g, int b, int desaturate";
		Sector_SetCurrent = "int tag, int amount, int angle";
		Sector_SetDamage = "int tag, int amount, int mod, int interval, int leaky";
		Sector_SetFade = "int tag, int r, int g, int b";
		Sector_SetFloorPanning = "int tag, int x-int, int x-frac, int y-int, int y-frac";
		Sector_SetFloorScale = "int tag, int x-int, int x-frac, int y-int, int y-frac";
		Sector_SetFloorScale2 = "int tag, int x-factor, int y-factor";
		Sector_SetFriction = "int tag, int amount";
		Sector_SetGravity = "int tag, int intpart, int fracpart";
		Sector_SetLink = "int controltag, int linktag, int floor/ceiling, int movetype";
		Sector_SetPlaneReflection = "int tag, int floor, int ceiling";
		Sector_SetRotation = "int tag, int floor-angle, int ceiling-angle";
		Sector_SetTranslucent = "int tag, int plane, int amount, int type";
		Sector_SetWind = "int tag, int amount, int angle";
		SendToCommunicator = "int voc_num, int front-only, int identify, int nolog";
		SetGlobalFogParameter = "int type, int value";
		SetPlayerProperty = "int allplayers, int value, int which";
		Stairs_BuildDown = "int tag, int speed, int height, int delay, int reset";
		Stairs_BuildDownSync = "int tag, int speed, int height, int reset";
		Stairs_BuildUp = "int tag, int speed, int height, int delay, int reset";
		Stairs_BuildUpDoom = "int tag, int speed, int height, int reset";
		Stairs_BuildUpSync = "int tag, int speed, int height, int reset";
		StartConversation = "int tid, [int facetalker]";
		Teleport = "int tid, int tag, int nosourcefog";
		Teleport_EndGame;
		Teleport_Line = "int thisid, int destid, [int reversed]";
		Teleport_NewMap = "int map, int pos, [int keepangle]";
		Teleport_NoFog = "int tid, [int useang], [int sectortag], [int keepheight]";
		Teleport_NoStop = "int tid, int sectortag, [int nosourcefog]";
		Teleport_ZombieChanger = "int tid, int sectortag";
		TeleportGroup = "int group_tid, int source_tid, int dest_tid, int move_source, int use_fog";
		TeleportInSector = "int tag, int source_tid, int dest_tid, int use_fog, [int group_tid]";
		TeleportOther = "int other_tid, int dest_tid, [int fog]";
		Thing_Activate = "int tid";
		Thing_ChangeTID = "int oldtid, int newtid";
		Thing_Damage = "int tid, int amount, int mod";
		Thing_Deactivate = "int tid";
		Thing_Destroy = "int tid, [int extreme], [int sector_tag]";
		Thing_Hate = "int hater, int hatee, [int flags]";
		Thing_Move = "int tid, int mapspot, [int nofog]";
		Thing_Projectile = "int tid, int type, int angle, int speed, int vspeed";
		Thing_ProjectileAimed = "int tid, int type, int speed, int target, [int newtid]";
		Thing_ProjectileGravity = "int tid, int type, int angle, int speed, int vspeed";
		Thing_ProjectileIntercept = "int tid, int type, int speed, int target, int newtid";
		Thing_Raise = "int tid";
		Thing_Remove = "int tid";
		Thing_SetConversation = "int tid, conv_id";
		Thing_SetGoal = "int tid, int goal, int delay, [int chasegoal]";
		Thing_SetSpecial = "int tid, int special, int arg1, int arg2, int arg3";
		Thing_SetTranslation = "int tid, int translation_num";
		Thing_Spawn = "int tid, int type, int angle, [int newtid]";
		Thing_SpawnFacing = "int tid, int type, [int nofog], [int newtid]";
		Thing_SpawnNoFog = "int tid, int type, int angle, [int newtid]";
		Thing_Stop = "int tid";
		ThrustThing = "int angle, int force, [int limit], [int tid]";
		ThrustThingZ = "int tid, int zthrust, int dir, int set";
		TranslucentLine = "int id, int amount, int transtype";
		UsePuzzleItem = "int item, int script";

		// Skulltag/Zandronum action specials
		Player_GiveItem = "unknown parameters list";
		Player_RemoveItem = "unknown parameters list";
		Player_SetTeam = "int team";
		Team_GivePoints = "int team, int points, int announce";
		Team_Score = "int points, int nogrin";
	}
}
